From 80d1d926caf60ad07abb0bcc6527f7be2814e52d Mon Sep 17 00:00:00 2001 From: Shuting Zhao Date: Fri, 2 Aug 2019 11:18:02 -0700 Subject: [PATCH 01/25] add profiling flags --- .gitignore | 1 + init.go | 49 ++++++++++++++++++++++++++++++++++++++ main.go | 15 +++++++++++- pkg/webhooks/validation.go | 2 +- scripts/compile-image.sh | 2 +- 5 files changed, 66 insertions(+), 3 deletions(-) diff --git a/.gitignore b/.gitignore index f63e37052a..fe301c5536 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,4 @@ Gopkg.lock kyverno gh-pages/public _output +coverage.txt diff --git a/init.go b/init.go index 7e172ce1e6..81701a90bb 100644 --- a/init.go +++ b/init.go @@ -2,6 +2,10 @@ package main import ( "fmt" + "math/rand" + "time" + + "github.com/pkg/profile" "github.com/golang/glog" client "github.com/nirmata/kyverno/pkg/dclient" @@ -51,3 +55,48 @@ func initTLSPemPair(configuration *rest.Config, client *client.Client) (*tls.Tls glog.Infoln("Using existing TLS key/certificate pair") return tlsPair, nil } + +var prof interface { + Stop() +} + +func enableProfiling(cpu, memory bool) interface { + Stop() +} { + + file := "/opt/nirmata/kyverno/" + randomString(6) + if cpu { + glog.Infof("Enable cpu profiling ...") + prof = profile.Start(profile.CPUProfile, profile.ProfilePath(file)) + } else if memory { + glog.Infof("Enable memory profiling ...") + prof = profile.Start(profile.MemProfile, profile.ProfilePath(file)) + } + + return prof +} + +func disableProfiling(p interface{ Stop() }) { + if p != nil { + p.Stop() + } +} + +// generate random string +const charset = "abcdefghijklmnopqrstuvwxyz" + + "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" + +var seededRand *rand.Rand = rand.New( + rand.NewSource(time.Now().UnixNano())) + +func stringWithCharset(length int, charset string) string { + b := make([]byte, length) + for i := range b { + b[i] = charset[seededRand.Intn(len(charset))] + } + return string(b) +} + +func randomString(length int) string { + return stringWithCharset(length, charset) +} diff --git a/main.go b/main.go index 0d2b1a83e1..75c9b8e2c4 100644 --- a/main.go +++ b/main.go @@ -21,11 +21,15 @@ var ( kubeconfig string serverIP string filterK8Resources string + cpu bool + memory bool ) func main() { defer glog.Flush() printVersionInfo() + prof = enableProfiling(cpu, memory) + clientConfig, err := createClientConfig(kubeconfig) if err != nil { glog.Fatalf("Error building kubeconfig: %v\n", err) @@ -83,15 +87,24 @@ func main() { } server.RunAsync() + <-stopCh - server.Stop() genControler.Stop() eventController.Stop() annotationsController.Stop() policyController.Stop() + disableProfiling(prof) + server.Stop() } func init() { + // profiling feature gate + // cpu and memory profiling cannot be enabled at same time + // if both cpu and memory are enabled + // by default is to profile cpu + flag.BoolVar(&cpu, "cpu", false, "cpu profilling feature gate, default to false || cpu and memory profiling cannot be enabled at the same time") + flag.BoolVar(&memory, "memory", false, "memory profilling feature gate, default to false || cpu and memory profiling cannot be enabled at the same time") + flag.StringVar(&kubeconfig, "kubeconfig", "", "Path to a kubeconfig. Only required if out-of-cluster.") flag.StringVar(&serverIP, "serverIP", "", "IP address where Kyverno controller runs. Only required if out-of-cluster.") flag.StringVar(&filterK8Resources, "filterK8Resources", "", "k8 resource in format [kind,namespace,name] where policy is not evaluated by the admission webhook. example --filterKind \"[Deployment, kyverno, kyverno]\" --filterKind \"[Deployment, kyverno, kyverno],[Events, *, *]\"") diff --git a/pkg/webhooks/validation.go b/pkg/webhooks/validation.go index 93c13955cc..b444c4c11c 100644 --- a/pkg/webhooks/validation.go +++ b/pkg/webhooks/validation.go @@ -101,7 +101,7 @@ func (ws *WebhookServer) HandleValidation(request *v1beta1.AdmissionRequest) *v1 // If Validation fails then reject the request ok, msg := isAdmSuccesful(policyInfos) // violations are created if "audit" flag is set - // and if there are any then we dont bock the resource creation + // and if there are any then we dont block the resource creation // Even if one the policy being applied if !ok && toBlock(policyInfos) { diff --git a/scripts/compile-image.sh b/scripts/compile-image.sh index 58a9db8e42..988c63f60d 100755 --- a/scripts/compile-image.sh +++ b/scripts/compile-image.sh @@ -18,7 +18,7 @@ dep ensure -v || exit 2 echo "# Building executable ${project_name}..." chmod +x scripts/update-codegen.sh scripts/update-codegen.sh -CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o ${project_name} . || exit 3 +make build || exit 3 echo "# Building docker image ${hub_user_name}/${project_name}:${version}" cat < Dockerfile From eec1939b17a4c33b725bb9cbed31ef42f69b36e6 Mon Sep 17 00:00:00 2001 From: Shuting Zhao Date: Fri, 2 Aug 2019 11:18:59 -0700 Subject: [PATCH 02/25] update install.yaml to mount profiling stats --- definitions/install.yaml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/definitions/install.yaml b/definitions/install.yaml index c8b9903d48..1e0f093e8d 100644 --- a/definitions/install.yaml +++ b/definitions/install.yaml @@ -232,4 +232,12 @@ spec: - containerPort: 443 securityContext: privileged: true + volumeMounts: + - mountPath: /opt/nirmata + name: profiling-volume + volumes: + - name: profiling-volume + hostPath: + path: /opt/nirmata + type: Directory From 1ecf92a63403e8dcbd3f963d5dc077427f96f758 Mon Sep 17 00:00:00 2001 From: Shuting Zhao Date: Fri, 2 Aug 2019 11:20:56 -0700 Subject: [PATCH 03/25] - update vendor - add profiling library --- pkg/annotations/controller.go | 2 +- pkg/controller/controller.go | 3 +- pkg/event/controller.go | 2 +- pkg/gencontroller/controller.go | 2 +- .../golang/groupcache/groupcache.go | 2 +- .../golang/protobuf/jsonpb/jsonpb.go | 23 +- .../golang/protobuf/jsonpb/jsonpb_test.go | 57 +- .../golang/protobuf/proto/properties.go | 5 +- .../protobuf/protoc-gen-go/grpc/grpc.go | 61 + .../testdata/deprecated/deprecated.pb.go | 11 + .../protoc-gen-go/testdata/grpc/grpc.pb.go | 19 + .../testdata/grpc/grpc_empty.pb.go | 79 + .../testdata/grpc/grpc_empty.proto | 38 + .../googleapis/gnostic/.travis-install.sh | 6 - .../github.com/googleapis/gnostic/.travis.yml | 18 - vendor/github.com/googleapis/gnostic/Makefile | 4 - .../googleapis/gnostic/OpenAPIv2/OpenAPIv2.go | 295 +- .../googleapis/gnostic/OpenAPIv3/OpenAPIv3.go | 262 +- .../github.com/googleapis/gnostic/README.md | 9 +- .../gnostic/apps/disco/openapiv3.go | 6 +- .../googleapis/gnostic/apps/report/main.go | 16 +- .../googleapis/gnostic/compiler/reader.go | 84 +- .../gnostic/compiler/reader_test.go | 82 + .../gnostic/compiler/testdata/petstore.yaml | 110 + .../gnostic/examples/v2.0/yaml/empty-v2.yaml | 6 + .../gnostic/examples/v3.0/yaml/empty-v3.yaml | 6 + .../gnostic/extensions/extension.pb.go | 164 +- .../generate-gnostic/generate-compiler.go | 27 +- .../gnostic/generate-gnostic/types.go | 9 + .../github.com/googleapis/gnostic/gnostic.go | 6 +- .../googleapis/gnostic/gnostic_test.go | 31 +- .../googleapis/gnostic/plugins/environment.go | 4 +- .../plugins/gnostic-go-generator/Makefile | 9 - .../plugins/gnostic-go-generator/README.md | 18 - .../examples/googleauth/README.md | 31 - .../examples/googleauth/googleauth.go | 220 - .../examples/v2.0/apis_guru/Makefile | 4 - .../examples/v2.0/apis_guru/main.go | 45 - .../examples/v2.0/apis_guru/swagger.yaml | 186 - .../examples/v2.0/bookstore/Makefile | 20 - .../examples/v2.0/bookstore/README.md | 23 - .../examples/v2.0/bookstore/bookstore.json | 357 - .../v2.0/bookstore/bookstore/bookstore.go | 19 - .../examples/v2.0/bookstore/bookstore_test.go | 239 - .../examples/v2.0/bookstore/service/app.yaml | 9 - .../examples/v2.0/bookstore/service/init.go | 27 - .../examples/v2.0/bookstore/service/main.go | 34 - .../v2.0/bookstore/service/service.go | 195 - .../examples/v2.0/sample/Makefile | 20 - .../examples/v2.0/sample/README.md | 24 - .../examples/v2.0/sample/sample.yaml | 67 - .../examples/v2.0/sample/sample/sample.go | 19 - .../examples/v2.0/sample/sample_test.go | 68 - .../examples/v2.0/sample/service/app.yaml | 9 - .../examples/v2.0/sample/service/init.go | 27 - .../examples/v2.0/sample/service/main.go | 34 - .../examples/v2.0/sample/service/service.go | 38 - .../examples/v2.0/xkcd/Makefile | 3 - .../examples/v2.0/xkcd/main.go | 23 - .../examples/v2.0/xkcd/swagger.json | 111 - .../examples/v2.0/xkcd/xkcd/xkcd.go | 19 - .../examples/v3.0/bookstore/Makefile | 20 - .../examples/v3.0/bookstore/README.md | 23 - .../examples/v3.0/bookstore/bookstore.json | 392 - .../v3.0/bookstore/bookstore/bookstore.go | 19 - .../examples/v3.0/bookstore/bookstore_test.go | 239 - .../examples/v3.0/bookstore/service/app.yaml | 9 - .../examples/v3.0/bookstore/service/init.go | 27 - .../examples/v3.0/bookstore/service/main.go | 34 - .../v3.0/bookstore/service/service.go | 195 - .../examples/v3.0/urlshortener/README.md | 26 - .../examples/v3.0/urlshortener/main.go | 62 - .../urlshortener/urlshortener/urlshortener.go | 19 - .../plugins/gnostic-go-generator/goimports.go | 50 - .../plugins/gnostic-go-generator/language.go | 123 - .../gnostic-go-generator/linewriter.go | 29 - .../plugins/gnostic-go-generator/main.go | 76 - .../gnostic-go-generator/render_client.go | 178 - .../gnostic-go-generator/render_constants.go | 30 - .../gnostic-go-generator/render_provider.go | 64 - .../gnostic-go-generator/render_server.go | 168 - .../gnostic-go-generator/render_types.go | 57 - .../plugins/gnostic-go-generator/renderer.go | 67 - .../googleapis/gnostic/printer/code.go | 14 + .../gnostic/surface/model_openapiv2.go | 31 +- .../gnostic/surface/model_openapiv3.go | 228 +- .../googleapis/gnostic/surface/surface.pb.go | 77 +- .../googleapis/gnostic/surface/surface.proto | 1 + .../test/library-example-with-ext.json | 7 + .../test/library-example-with-ext.text.out | 15 + .../gnostic/test/v2.0/json/empty-v2.json | 9 + .../gnostic/test/v3.0/json/empty-v3.json | 9 + vendor/github.com/json-iterator/go/build.sh | 12 + .../minio/.github/PULL_REQUEST_TEMPLATE.md | 28 +- vendor/github.com/minio/minio/.gitignore | 3 +- vendor/github.com/minio/minio/.travis.yml | 14 +- vendor/github.com/minio/minio/CONTRIBUTING.md | 2 +- vendor/github.com/minio/minio/Dockerfile | 7 +- vendor/github.com/minio/minio/Dockerfile.dev | 5 +- vendor/github.com/minio/minio/Dockerfile.mint | 23 + .../github.com/minio/minio/Dockerfile.release | 7 +- .../minio/minio/Dockerfile.simpleci | 8 +- vendor/github.com/minio/minio/Makefile | 10 +- vendor/github.com/minio/minio/SECURITY.md | 41 + .../github.com/minio/minio/browser/README.md | 17 +- .../minio/minio/browser/app/js/constants.js | 7 + .../browser/app/js/objects/ObjectItem.js | 2 +- .../browser/app/js/objects/ObjectsHeader.js | 51 +- .../app/js/objects/ObjectsListContainer.js | 60 +- .../objects/__tests__/ObjectsHeader.test.js | 69 +- .../__tests__/ObjectsListContainer.test.js | 13 +- .../app/js/objects/__tests__/actions.test.js | 95 +- .../app/js/objects/__tests__/reducer.test.js | 48 +- .../minio/browser/app/js/objects/actions.js | 150 +- .../minio/browser/app/js/objects/reducer.js | 24 +- .../minio/minio/browser/app/js/utils.js | 8 +- .../minio/browser/app/less/inc/list.less | 3 + .../minio/browser/app/less/inc/misc.less | 37 + .../minio/browser/app/less/inc/variables.less | 8 +- .../minio/minio/browser/package-lock.json | 14239 +++++++++++ .../minio/minio/browser/package.json | 10 +- .../minio/minio/browser/ui-assets.go | 65 +- .../github.com/minio/minio/browser/yarn.lock | 420 +- .../minio/minio/cmd/admin-handlers.go | 183 +- .../minio/minio/cmd/admin-handlers_test.go | 19 +- .../minio/minio/cmd/admin-heal-ops.go | 245 +- .../minio/minio/cmd/admin-router.go | 4 + .../minio/minio/cmd/api-datatypes.go | 7 - .../github.com/minio/minio/cmd/api-errors.go | 26 + .../github.com/minio/minio/cmd/api-headers.go | 21 +- .../minio/minio/cmd/api-response.go | 29 +- .../github.com/minio/minio/cmd/api-router.go | 91 +- .../minio/minio/cmd/auth-handler.go | 73 +- .../minio/minio/cmd/background-heal-ops.go | 160 + .../minio/minio/cmd/bitrot-streaming.go | 2 +- vendor/github.com/minio/minio/cmd/bitrot.go | 30 - .../minio/cmd/bucket-handlers-listobjects.go | 7 - .../minio/minio/cmd/bucket-handlers.go | 17 +- .../minio/cmd/bucket-lifecycle-handler.go | 164 + .../minio/cmd/bucket-notification-handlers.go | 3 + .../github.com/minio/minio/cmd/common-main.go | 7 - .../minio/minio/cmd/config-common.go | 69 +- .../minio/minio/cmd/config-current.go | 10 +- .../minio/minio/cmd/config-current_test.go | 6 +- .../minio/minio/cmd/config-migrate.go | 39 +- .../minio/minio/cmd/config-versions.go | 4 +- vendor/github.com/minio/minio/cmd/config.go | 65 +- .../minio/minio/cmd/crypto/header.go | 20 + .../minio/minio/cmd/crypto/header_test.go | 50 + .../minio/minio/cmd/daily-heal-ops.go | 101 + .../minio/minio/cmd/daily-sweeper.go | 145 + .../minio/minio/cmd/disk-cache-fs.go | 4 +- .../github.com/minio/minio/cmd/disk-cache.go | 9 +- .../minio/minio/cmd/disk-cache_test.go | 17 +- .../minio/minio/cmd/dummy-handlers.go | 6 - .../minio/minio/cmd/encryption-v1.go | 11 + .../minio/minio/cmd/endpoint-ellipses.go | 10 +- vendor/github.com/minio/minio/cmd/endpoint.go | 26 +- vendor/github.com/minio/minio/cmd/erasure.go | 5 +- .../github.com/minio/minio/cmd/format-xl.go | 2 +- .../minio/minio/cmd/fs-v1-multipart.go | 2 +- vendor/github.com/minio/minio/cmd/fs-v1.go | 52 +- .../minio/minio/cmd/gateway-common.go | 7 +- .../minio/minio/cmd/gateway-main.go | 19 +- .../minio/minio/cmd/gateway-main_test.go | 31 + .../minio/minio/cmd/gateway-unsupported.go | 22 + .../minio/cmd/gateway/azure/gateway-azure.go | 2 +- .../minio/minio/cmd/gateway/b2/gateway-b2.go | 52 +- .../minio/cmd/gateway/b2/gateway-b2_test.go | 161 +- .../minio/cmd/gateway/gcs/gateway-gcs.go | 5 - .../minio/cmd/gateway/s3/gateway-s3-sse.go | 3 +- .../minio/minio/cmd/gateway/s3/gateway-s3.go | 78 +- .../minio/minio/cmd/generic-handlers.go | 41 +- vendor/github.com/minio/minio/cmd/globals.go | 18 +- .../minio/minio/cmd/handler-utils.go | 53 +- .../minio/minio/cmd/healthcheck-handler.go | 1 + .../github.com/minio/minio/cmd/http-tracer.go | 227 + .../minio/minio/cmd/http/headers.go | 81 + vendor/github.com/minio/minio/cmd/iam.go | 545 +- .../github.com/minio/minio/cmd/lifecycle.go | 191 + .../minio/minio/cmd/local-locker.go | 2 +- .../minio/minio/cmd/lock-rest-client.go | 2 +- .../minio/minio/cmd/lock-rest-client_test.go | 2 +- .../minio/minio/cmd/lock-rest-server.go | 2 +- .../minio/minio/cmd/logger/audit.go | 2 +- .../minio/minio/cmd/logger/logger.go | 12 +- .../minio/cmd/logger/message/audit/entry.go | 9 +- .../minio/cmd/logger/message/log/entry.go | 1 + .../minio/minio/cmd/logger/reqinfo.go | 1 + .../cmd/logger/target/console/console.go | 14 +- .../minio/cmd/logger/target/http/http.go | 5 +- vendor/github.com/minio/minio/cmd/main.go | 6 +- vendor/github.com/minio/minio/cmd/metrics.go | 22 +- .../minio/minio/cmd/namespace-lock.go | 23 +- .../minio/minio/cmd/namespace-lock_test.go | 7 +- .../minio/minio/cmd/naughty-disk_test.go | 7 + vendor/github.com/minio/minio/cmd/net.go | 6 +- vendor/github.com/minio/minio/cmd/net_test.go | 8 +- .../minio/minio/cmd/notification.go | 131 +- .../minio/minio/cmd/object-api-common.go | 93 +- .../minio/minio/cmd/object-api-errors.go | 23 + .../minio/cmd/object-api-input-checks.go | 14 +- .../minio/minio/cmd/object-api-interface.go | 10 +- .../minio/cmd/object-api-listobjects_test.go | 4 - .../minio/minio/cmd/object-api-utils.go | 42 +- .../minio/minio/cmd/object-api-utils_test.go | 1 - .../minio/minio/cmd/object-handlers-common.go | 29 +- .../minio/minio/cmd/object-handlers.go | 59 +- .../minio/cmd/peer-rest-client-target.go | 2 +- .../minio/minio/cmd/peer-rest-client.go | 170 +- .../minio/minio/cmd/peer-rest-common.go | 15 +- .../minio/minio/cmd/peer-rest-server.go | 242 +- vendor/github.com/minio/minio/cmd/policy.go | 7 +- vendor/github.com/minio/minio/cmd/posix.go | 108 +- .../github.com/minio/minio/cmd/posix_test.go | 101 +- .../minio/minio/cmd/postpolicyform.go | 3 +- .../github.com/minio/minio/cmd/rest/client.go | 12 +- vendor/github.com/minio/minio/cmd/routers.go | 7 +- .../github.com/minio/minio/cmd/server-main.go | 33 +- .../github.com/minio/minio/cmd/server_test.go | 41 +- vendor/github.com/minio/minio/cmd/signals.go | 3 - .../minio/minio/cmd/signature-v2.go | 26 +- .../minio/minio/cmd/signature-v4-utils.go | 13 +- .../minio/minio/cmd/signature-v4.go | 39 +- .../minio/minio/cmd/storage-errors.go | 18 +- .../minio/minio/cmd/storage-interface.go | 1 + .../minio/minio/cmd/storage-rest-client.go | 39 +- .../minio/minio/cmd/storage-rest-common.go | 4 +- .../minio/minio/cmd/storage-rest-server.go | 76 +- .../minio/minio/cmd/streaming-signature-v4.go | 5 +- .../github.com/minio/minio/cmd/sts-errors.go | 4 +- .../minio/minio/cmd/sts-handlers.go | 90 +- .../minio/minio/cmd/test-utils_test.go | 10 +- .../minio/minio/cmd/tree-walk-pool.go | 1 + .../github.com/minio/minio/cmd/update-main.go | 21 +- vendor/github.com/minio/minio/cmd/utils.go | 30 +- .../github.com/minio/minio/cmd/utils_test.go | 13 - .../minio/minio/cmd/web-handler-context.go | 245 + .../minio/cmd/web-handler-context_test.go | 111 + .../minio/minio/cmd/web-handlers.go | 431 +- vendor/github.com/minio/minio/cmd/xl-sets.go | 151 +- .../minio/minio/cmd/xl-v1-bucket.go | 20 +- .../minio/minio/cmd/xl-v1-healing-common.go | 5 +- .../minio/minio/cmd/xl-v1-healing.go | 9 +- .../minio/minio/cmd/xl-v1-healing_test.go | 31 +- .../minio/cmd/xl-v1-list-objects-heal.go | 5 + .../minio/minio/cmd/xl-v1-list-objects.go | 4 +- .../minio/minio/cmd/xl-v1-multipart.go | 14 +- .../minio/minio/cmd/xl-v1-object.go | 12 +- .../minio/dockerscripts/docker-entrypoint.sh | 48 +- .../minio/minio/dockerscripts/healthcheck.go | 18 +- .../minio/minio/docs/bigdata/README.md | 15 +- .../minio/docs/bigdata/images/image4.png | Bin 109927 -> 83757 bytes .../minio/docs/bucket/notifications/README.md | 41 +- .../minio/minio/docs/compression/README.md | 11 +- .../minio/minio/docs/config/README.md | 85 +- .../minio/docs/config/config.sample.json | 12 +- .../{large-bucket => distributed}/DESIGN.md | 0 .../minio/minio/docs/distributed/README.md | 32 +- .../minio/minio/docs/docker/README.md | 27 + .../minio/minio/docs/erasure/README.md | 2 +- .../minio/docs/federation/lookup/README.md | 4 +- .../minio/minio/docs/gateway/gcs.md | 4 +- .../github.com/minio/minio/docs/gateway/s3.md | 25 + .../github.com/minio/minio/docs/kms/README.md | 170 +- .../minio/minio/docs/kms/vault-config.json | 17 + .../minio/minio/docs/large-bucket/README.md | 47 - .../minio/docs/metrics/healthcheck/README.md | 23 + .../minio/minio/docs/multi-user/README.md | 2 +- .../docker-compose/docker-compose.yaml | 8 +- .../docker-swarm/docker-compose-secrets.yaml | 8 +- .../docker-swarm/docker-compose.yaml | 8 +- .../docs/orchestration/kubernetes/README.md | 2 +- .../minio-distributed-daemonset.yaml | 2 +- .../minio-distributed-statefulset.yaml | 2 +- .../minio-gcs-gateway-deployment.yaml | 2 +- .../minio-standalone-deployment.yaml | 2 +- .../Architecture-diagram_distributed_32.png | Bin 0 -> 45357 bytes .../minio/minio/docs/sts/assume-role.md | 29 +- .../minio/minio/docs/sts/client-grants.md | 34 +- .../minio/minio/docs/sts/docker-compose.yml | 2 +- vendor/github.com/minio/minio/docs/sts/opa.md | 13 +- .../minio/minio/docs/sts/putobject.rego | 8 +- .../minio/minio/docs/sts/web-identity.md | 33 +- .../github.com/minio/minio/docs/tls/README.md | 5 - .../docs/zh_CN/bucket/notifications/README.md | 6 +- .../minio/minio/docs/zh_CN/erasure/README.md | 2 +- vendor/github.com/minio/minio/go.mod | 36 +- vendor/github.com/minio/minio/go.sum | 60 +- vendor/github.com/minio/minio/mint/.gitignore | 17 + .../minio/minio/mint/Dockerfile.dev | 84 + vendor/github.com/minio/minio/mint/README.md | 123 + .../minio/mint/build/aws-sdk-go/install.sh | 19 + .../minio/mint/build/aws-sdk-java/build.xml | 58 + .../minio/mint/build/aws-sdk-java/install.sh | 30 + .../minio/mint/build/aws-sdk-java/ivy.xml | 6 + .../aws-sdk-java/src/FunctionalTests.java | 632 + .../aws-sdk-java/src/LimitedInputStream.java | 60 + .../build/aws-sdk-java/src/MintLogger.java | 151 + .../build/aws-sdk-java/src/S3TestUtils.java | 187 + .../mint/build/aws-sdk-java/src/Utils.java | 76 + .../minio/mint/build/aws-sdk-php/install.sh | 20 + .../minio/mint/build/aws-sdk-ruby/install.sh | 18 + .../minio/minio/mint/build/awscli/install.sh | 20 + .../minio/mint/build/healthcheck/install.sh | 19 + .../minio/minio/mint/build/mc/install.sh | 31 + .../minio/mint/build/minio-dotnet/install.sh | 42 + .../minio/mint/build/minio-go/install.sh | 27 + .../minio/mint/build/minio-java/install.sh | 30 + .../minio/mint/build/minio-js/install.sh | 28 + .../minio/mint/build/minio-py/install.sh | 29 + .../minio/minio/mint/build/s3cmd/install.sh | 19 + .../minio/mint/build/security/install.sh | 19 + .../minio/minio/mint/build/worm/install.sh | 19 + .../minio/minio/mint/create-data-files.sh | 44 + .../github.com/minio/minio/mint/entrypoint.sh | 24 + .../minio/minio/mint/install-packages.list | 17 + vendor/github.com/minio/minio/mint/mint.sh | 206 + .../minio/minio/mint/postinstall.sh | 28 + .../github.com/minio/minio/mint/preinstall.sh | 48 + vendor/github.com/minio/minio/mint/release.sh | 32 + .../minio/minio/mint/remove-packages.list | 9 + .../mint/run/core/aws-sdk-go/quick-tests.go | 511 + .../minio/mint/run/core/aws-sdk-go/run.sh | 28 + .../minio/mint/run/core/aws-sdk-java/run.sh | 30 + .../minio/mint/run/core/aws-sdk-php/README.md | 19 + .../mint/run/core/aws-sdk-php/composer.json | 6 + .../mint/run/core/aws-sdk-php/quick-tests.php | 1101 + .../minio/mint/run/core/aws-sdk-php/run.sh | 28 + .../mint/run/core/aws-sdk-ruby/README.md | 19 + .../run/core/aws-sdk-ruby/aws-stub-tests.rb | 855 + .../minio/mint/run/core/aws-sdk-ruby/run.sh | 29 + .../minio/mint/run/core/awscli/README.md | 19 + .../minio/minio/mint/run/core/awscli/run.sh | 51 + .../minio/minio/mint/run/core/awscli/test.sh | 1411 ++ .../mint/run/core/healthcheck/healthcheck.go | 195 + .../minio/mint/run/core/healthcheck/run.sh | 28 + .../minio/minio/mint/run/core/mc/README.md | 19 + .../minio/minio/mint/run/core/mc/run.sh | 27 + .../minio/mint/run/core/minio-dotnet/run.sh | 26 + .../minio/mint/run/core/minio-go/README.md | 19 + .../minio/minio/mint/run/core/minio-go/run.sh | 28 + .../minio/mint/run/core/minio-java/README.md | 19 + .../minio/mint/run/core/minio-java/run.sh | 34 + .../minio/mint/run/core/minio-js/README.md | 19 + .../mint/run/core/minio-js/minioreporter.js | 69 + .../minio/mint/run/core/minio-js/package.json | 49 + .../minio/minio/mint/run/core/minio-js/run.sh | 28 + .../minio/mint/run/core/minio-py/README.md | 19 + .../minio/minio/mint/run/core/minio-py/run.sh | 28 + .../minio/mint/run/core/s3cmd/.gitignore | 2 + .../minio/minio/mint/run/core/s3cmd/README.md | 19 + .../minio/minio/mint/run/core/s3cmd/run.sh | 28 + .../minio/minio/mint/run/core/s3cmd/test.sh | 422 + .../minio/minio/mint/run/core/security/run.sh | 28 + .../minio/mint/run/core/security/tls-tests.go | 272 + .../mint/run/core/worm/quick-worm-tests.go | 409 + .../minio/minio/mint/run/core/worm/run.sh | 28 + .../minio/minio/pkg/dns/etcd_dns.go | 11 +- .../minio/minio/pkg/event/config.go | 4 + .../minio/pkg/event/target/elasticsearch.go | 144 +- .../minio/minio/pkg/event/target/kafka.go | 2 +- .../minio/minio/pkg/event/target/mqtt.go | 4 +- .../minio/minio/pkg/event/target/nats.go | 4 +- .../minio/minio/pkg/event/target/nsq.go | 111 +- .../minio/minio/pkg/event/target/nsq_test.go | 63 +- .../minio/pkg/event/target/queuestore.go | 16 +- .../minio/pkg/event/target/queuestore_test.go | 7 +- .../minio/minio/pkg/event/target/store.go | 17 +- .../minio/minio/pkg/event/target/webhook.go | 110 +- .../minio/minio/pkg/handlers/http-tracer.go | 200 - .../minio/pkg/handlers/http-tracer_test.go | 154 - .../minio/minio/pkg/iam/policy/constants.go | 6 + .../minio/minio/pkg/iam/policy/opa.go | 37 +- .../minio/minio/pkg/iam/policy/resource.go | 3 +- .../minio/pkg/iam/policy/resource_test.go | 15 +- .../minio/pkg/iam/policy/resourceset_test.go | 15 +- .../minio/minio/pkg/lifecycle/action.go | 33 + .../minio/minio/pkg/lifecycle/and.go | 42 + .../minio/minio/pkg/lifecycle/expiration.go | 119 + .../minio/pkg/lifecycle/expiration_test.go | 105 + .../minio/minio/pkg/lifecycle/filter.go | 32 + .../minio/minio/pkg/lifecycle/filter_test.go | 56 + .../minio/minio/pkg/lifecycle/lifecycle.go | 86 + .../minio/pkg/lifecycle/lifecycle_test.go | 160 + .../minio/pkg/lifecycle/noncurrentversion.go | 65 + .../minio/minio/pkg/lifecycle/rule.go | 86 + .../minio/minio/pkg/lifecycle/rule_test.go | 112 + .../minio/minio/pkg/lifecycle/tag.go | 42 + .../minio/minio/pkg/lifecycle/transition.go | 43 + .../minio/minio/pkg/madmin/README.md | 21 +- .../minio/minio/pkg/madmin/api-trace.go | 77 + .../minio/pkg/madmin/examples/heal-status.go | 45 + .../minio/minio/pkg/madmin/examples/trace.go | 53 + .../minio/minio/pkg/madmin/heal-commands.go | 34 + .../minio/minio/pkg/mountinfo/mountinfo.go | 2 + .../minio/minio/pkg/pubsub/pubsub.go | 84 + .../minio/minio/pkg/pubsub/pubsub_test.go | 90 + .../minio/minio/pkg/s3select/csv/args.go | 8 +- .../minio/minio/pkg/s3select/csv/reader.go | 7 +- .../minio/pkg/s3select/csv/reader_test.go | 72 + .../minio/minio/pkg/s3select/select.go | 3 + .../minio/minio/pkg/s3select/select_test.go | 251 +- .../minio/pkg/s3select/sql/aggregation.go | 14 +- .../minio/minio/pkg/s3select/sql/analysis.go | 9 + .../minio/minio/pkg/s3select/sql/funceval.go | 23 +- .../minio/minio/pkg/s3select/sql/statement.go | 6 +- .../minio/pkg/s3select/sql/stringfuncs.go | 21 +- .../pkg/s3select/sql/stringfuncs_test.go | 24 + .../minio/minio/pkg/s3select/sql/value.go | 29 +- .../github.com/minio/minio/pkg/trace/trace.go | 58 + vendor/github.com/pkg/profile/.travis.yml | 10 + vendor/github.com/pkg/profile/AUTHORS | 1 + vendor/github.com/pkg/profile/LICENSE | 24 + vendor/github.com/pkg/profile/README.md | 54 + vendor/github.com/pkg/profile/example_test.go | 58 + vendor/github.com/pkg/profile/mutex.go | 13 + vendor/github.com/pkg/profile/mutex17.go | 9 + vendor/github.com/pkg/profile/profile.go | 263 + vendor/github.com/pkg/profile/profile_test.go | 330 + vendor/github.com/pkg/profile/trace.go | 8 + vendor/github.com/pkg/profile/trace16.go | 10 + vendor/github.com/pkg/profile/trace_test.go | 8 + vendor/github.com/spf13/cobra/.gitignore | 2 + vendor/github.com/spf13/cobra/README.md | 9 +- .../spf13/cobra/bash_completions.go | 48 - .../github.com/spf13/cobra/cobra/cmd/add.go | 122 +- .../spf13/cobra/cobra/cmd/add_test.go | 92 +- .../github.com/spf13/cobra/cobra/cmd/init.go | 233 +- .../spf13/cobra/cobra/cmd/init_test.go | 89 +- .../spf13/cobra/cobra/cmd/project.go | 244 +- .../spf13/cobra/cobra/cmd/project_test.go | 23 +- .../github.com/spf13/cobra/cobra/cmd/root.go | 3 +- .../cobra/cobra/cmd/testdata/main.go.golden | 29 +- .../cobra/cobra/cmd/testdata/root.go.golden | 118 +- .../cobra/cobra/cmd/testdata/test.go.golden | 27 +- .../github.com/spf13/cobra/cobra/tpl/main.go | 153 + vendor/github.com/spf13/cobra/command.go | 97 +- vendor/github.com/spf13/cobra/command_test.go | 40 + .../spf13/cobra/powershell_completions.go | 100 + .../spf13/cobra/powershell_completions.md | 14 + .../cobra/powershell_completions_test.go | 122 + .../spf13/cobra/shell_completions.go | 85 + .../github.com/spf13/cobra/zsh_completions.go | 400 +- .../github.com/spf13/cobra/zsh_completions.md | 39 + .../spf13/cobra/zsh_completions_test.go | 502 +- vendor/golang.org/x/crypto/acme/acme.go | 7 + .../x/crypto/acme/autocert/autocert.go | 3 + vendor/golang.org/x/crypto/acme/http.go | 18 + vendor/golang.org/x/crypto/acme/http_test.go | 27 + .../golang.org/x/crypto/acme/version_go112.go | 27 + vendor/golang.org/x/crypto/ed25519/ed25519.go | 5 + .../x/crypto/ed25519/ed25519_go113.go | 73 + .../x/crypto/ed25519/ed25519_test.go | 47 +- .../golang.org/x/crypto/ed25519/go113_test.go | 24 + .../x/crypto/internal/chacha20/asm_ppc64le.s | 2 +- .../internal/chacha20/chacha_ppc64le.go | 7 +- .../golang.org/x/crypto/poly1305/mac_noasm.go | 2 +- .../golang.org/x/crypto/poly1305/sum_noasm.go | 2 +- .../x/crypto/poly1305/sum_ppc64le.go | 68 + .../x/crypto/poly1305/sum_ppc64le.s | 247 + .../x/crypto/ssh/client_auth_test.go | 2 +- vendor/golang.org/x/crypto/ssh/common.go | 7 + .../golang.org/x/crypto/ssh/handshake_test.go | 3 + vendor/golang.org/x/crypto/ssh/kex.go | 249 + vendor/golang.org/x/crypto/ssh/messages.go | 30 + vendor/golang.org/x/crypto/ssh/server.go | 6 + .../x/crypto/ssh/test/session_test.go | 5 + .../golang.org/x/net/bpf/vm_instructions.go | 3 +- vendor/golang.org/x/net/bpf/vm_load_test.go | 78 +- vendor/golang.org/x/net/go.mod | 2 + vendor/golang.org/x/net/http2/server.go | 26 +- .../golang.org/x/net/http2/transport_test.go | 11 +- .../x/net/internal/socket/sys_posix.go | 6 +- .../x/net/internal/socket/zsys_darwin_386.go | 2 +- .../net/internal/socket/zsys_darwin_amd64.go | 2 +- .../x/net/internal/socket/zsys_darwin_arm.go | 2 +- .../net/internal/socket/zsys_darwin_arm64.go | 2 +- .../internal/socket/zsys_dragonfly_amd64.go | 2 +- .../x/net/internal/socket/zsys_freebsd_386.go | 2 +- .../net/internal/socket/zsys_freebsd_amd64.go | 2 +- .../x/net/internal/socket/zsys_freebsd_arm.go | 2 +- .../net/internal/socket/zsys_freebsd_arm64.go | 53 + .../x/net/internal/socket/zsys_linux_386.go | 2 +- .../x/net/internal/socket/zsys_linux_amd64.go | 2 +- .../x/net/internal/socket/zsys_linux_arm.go | 2 +- .../x/net/internal/socket/zsys_linux_arm64.go | 2 +- .../x/net/internal/socket/zsys_linux_mips.go | 2 +- .../net/internal/socket/zsys_linux_mips64.go | 2 +- .../internal/socket/zsys_linux_mips64le.go | 2 +- .../net/internal/socket/zsys_linux_mipsle.go | 2 +- .../x/net/internal/socket/zsys_linux_ppc64.go | 2 +- .../net/internal/socket/zsys_linux_ppc64le.go | 2 +- .../x/net/internal/socket/zsys_linux_s390x.go | 2 +- .../x/net/internal/socket/zsys_netbsd_386.go | 2 +- .../net/internal/socket/zsys_netbsd_amd64.go | 2 +- .../x/net/internal/socket/zsys_netbsd_arm.go | 2 +- .../x/net/internal/socket/zsys_openbsd_386.go | 2 +- .../net/internal/socket/zsys_openbsd_amd64.go | 2 +- .../x/net/internal/socket/zsys_openbsd_arm.go | 2 +- .../net/internal/socket/zsys_openbsd_arm64.go | 53 + .../net/internal/socket/zsys_solaris_amd64.go | 2 +- .../golang.org/x/net/ipv4/multicast_test.go | 10 +- vendor/golang.org/x/net/ipv4/unicast_test.go | 4 +- vendor/golang.org/x/net/ipv4/zsys_darwin.go | 2 +- .../golang.org/x/net/ipv4/zsys_dragonfly.go | 2 +- .../golang.org/x/net/ipv4/zsys_freebsd_386.go | 2 +- .../x/net/ipv4/zsys_freebsd_amd64.go | 2 +- .../golang.org/x/net/ipv4/zsys_freebsd_arm.go | 2 +- .../golang.org/x/net/ipv4/zsys_linux_386.go | 2 +- .../golang.org/x/net/ipv4/zsys_linux_amd64.go | 2 +- .../golang.org/x/net/ipv4/zsys_linux_arm.go | 2 +- .../golang.org/x/net/ipv4/zsys_linux_arm64.go | 2 +- .../golang.org/x/net/ipv4/zsys_linux_mips.go | 2 +- .../x/net/ipv4/zsys_linux_mips64.go | 2 +- .../x/net/ipv4/zsys_linux_mips64le.go | 2 +- .../x/net/ipv4/zsys_linux_mipsle.go | 2 +- .../golang.org/x/net/ipv4/zsys_linux_ppc.go | 2 +- .../golang.org/x/net/ipv4/zsys_linux_ppc64.go | 2 +- .../x/net/ipv4/zsys_linux_ppc64le.go | 2 +- .../golang.org/x/net/ipv4/zsys_linux_s390x.go | 2 +- vendor/golang.org/x/net/ipv4/zsys_netbsd.go | 2 +- vendor/golang.org/x/net/ipv4/zsys_openbsd.go | 2 +- vendor/golang.org/x/net/ipv4/zsys_solaris.go | 2 +- .../golang.org/x/net/ipv6/multicast_test.go | 6 +- vendor/golang.org/x/net/ipv6/unicast_test.go | 8 +- vendor/golang.org/x/net/ipv6/zsys_darwin.go | 2 +- .../golang.org/x/net/ipv6/zsys_dragonfly.go | 2 +- .../golang.org/x/net/ipv6/zsys_freebsd_386.go | 2 +- .../x/net/ipv6/zsys_freebsd_amd64.go | 2 +- .../golang.org/x/net/ipv6/zsys_freebsd_arm.go | 2 +- .../golang.org/x/net/ipv6/zsys_linux_386.go | 2 +- .../golang.org/x/net/ipv6/zsys_linux_amd64.go | 2 +- .../golang.org/x/net/ipv6/zsys_linux_arm.go | 2 +- .../golang.org/x/net/ipv6/zsys_linux_arm64.go | 2 +- .../golang.org/x/net/ipv6/zsys_linux_mips.go | 2 +- .../x/net/ipv6/zsys_linux_mips64.go | 2 +- .../x/net/ipv6/zsys_linux_mips64le.go | 2 +- .../x/net/ipv6/zsys_linux_mipsle.go | 2 +- .../golang.org/x/net/ipv6/zsys_linux_ppc.go | 2 +- .../golang.org/x/net/ipv6/zsys_linux_ppc64.go | 2 +- .../x/net/ipv6/zsys_linux_ppc64le.go | 2 +- .../golang.org/x/net/ipv6/zsys_linux_s390x.go | 2 +- vendor/golang.org/x/net/ipv6/zsys_netbsd.go | 2 +- vendor/golang.org/x/net/ipv6/zsys_openbsd.go | 2 +- vendor/golang.org/x/net/ipv6/zsys_solaris.go | 2 +- .../x/net/lif/zsys_solaris_amd64.go | 2 +- vendor/golang.org/x/net/proxy/dial_test.go | 26 +- vendor/golang.org/x/net/publicsuffix/table.go | 19623 ++++++++-------- .../x/net/publicsuffix/table_test.go | 268 +- vendor/golang.org/x/net/route/zsys_darwin.go | 2 +- .../golang.org/x/net/route/zsys_dragonfly.go | 2 +- .../x/net/route/zsys_freebsd_386.go | 2 +- .../x/net/route/zsys_freebsd_amd64.go | 2 +- .../x/net/route/zsys_freebsd_arm.go | 2 +- vendor/golang.org/x/net/route/zsys_netbsd.go | 2 +- vendor/golang.org/x/net/route/zsys_openbsd.go | 2 +- vendor/golang.org/x/net/webdav/webdav.go | 2 +- vendor/golang.org/x/net/webdav/webdav_test.go | 24 +- vendor/golang.org/x/oauth2/google/google.go | 11 +- vendor/golang.org/x/sys/unix/dirent.go | 89 +- vendor/golang.org/x/sys/unix/dirent_test.go | 150 + .../x/sys/unix/getdirentries_test.go | 83 + vendor/golang.org/x/sys/unix/linux/Dockerfile | 8 +- vendor/golang.org/x/sys/unix/linux/types.go | 26 + vendor/golang.org/x/sys/unix/mkall.sh | 8 +- vendor/golang.org/x/sys/unix/mkerrors.sh | 4 + vendor/golang.org/x/sys/unix/mkpost.go | 4 +- vendor/golang.org/x/sys/unix/mksysnum.go | 2 +- .../x/sys/unix/readdirent_getdents.go | 12 + .../x/sys/unix/readdirent_getdirentries.go | 19 + vendor/golang.org/x/sys/unix/syscall_aix.go | 18 +- vendor/golang.org/x/sys/unix/syscall_bsd.go | 12 +- .../golang.org/x/sys/unix/syscall_darwin.go | 12 + .../x/sys/unix/syscall_dragonfly.go | 17 + .../golang.org/x/sys/unix/syscall_freebsd.go | 94 +- vendor/golang.org/x/sys/unix/syscall_linux.go | 25 +- .../golang.org/x/sys/unix/syscall_netbsd.go | 37 +- .../golang.org/x/sys/unix/syscall_openbsd.go | 37 +- .../golang.org/x/sys/unix/syscall_solaris.go | 17 + vendor/golang.org/x/sys/unix/types_freebsd.go | 50 +- vendor/golang.org/x/sys/unix/types_netbsd.go | 1 + vendor/golang.org/x/sys/unix/types_openbsd.go | 1 + .../x/sys/unix/zerrors_linux_386.go | 73 + .../x/sys/unix/zerrors_linux_amd64.go | 73 + .../x/sys/unix/zerrors_linux_arm.go | 73 + .../x/sys/unix/zerrors_linux_arm64.go | 73 + .../x/sys/unix/zerrors_linux_mips.go | 73 + .../x/sys/unix/zerrors_linux_mips64.go | 73 + .../x/sys/unix/zerrors_linux_mips64le.go | 73 + .../x/sys/unix/zerrors_linux_mipsle.go | 73 + .../x/sys/unix/zerrors_linux_ppc64.go | 73 + .../x/sys/unix/zerrors_linux_ppc64le.go | 73 + .../x/sys/unix/zerrors_linux_riscv64.go | 73 + .../x/sys/unix/zerrors_linux_s390x.go | 73 + .../x/sys/unix/zerrors_linux_sparc64.go | 73 + .../x/sys/unix/zsyscall_dragonfly_amd64.go | 17 + .../x/sys/unix/zsyscall_freebsd_386.go | 12 +- .../x/sys/unix/zsyscall_freebsd_amd64.go | 12 +- .../x/sys/unix/zsyscall_freebsd_arm.go | 12 +- .../x/sys/unix/zsyscall_freebsd_arm64.go | 12 +- .../x/sys/unix/zsyscall_linux_386.go | 20 + .../x/sys/unix/zsyscall_linux_amd64.go | 20 + .../x/sys/unix/zsyscall_linux_arm.go | 20 + .../x/sys/unix/zsyscall_linux_arm64.go | 20 + .../x/sys/unix/zsyscall_linux_mips.go | 20 + .../x/sys/unix/zsyscall_linux_mips64.go | 20 + .../x/sys/unix/zsyscall_linux_mips64le.go | 20 + .../x/sys/unix/zsyscall_linux_mipsle.go | 20 + .../x/sys/unix/zsyscall_linux_ppc64.go | 20 + .../x/sys/unix/zsyscall_linux_ppc64le.go | 20 + .../x/sys/unix/zsyscall_linux_riscv64.go | 20 + .../x/sys/unix/zsyscall_linux_s390x.go | 20 + .../x/sys/unix/zsyscall_linux_sparc64.go | 20 + .../x/sys/unix/zsyscall_netbsd_386.go | 2 +- .../x/sys/unix/zsyscall_netbsd_amd64.go | 2 +- .../x/sys/unix/zsyscall_netbsd_arm.go | 2 +- .../x/sys/unix/zsyscall_netbsd_arm64.go | 2 +- .../x/sys/unix/zsyscall_openbsd_386.go | 2 +- .../x/sys/unix/zsyscall_openbsd_amd64.go | 2 +- .../x/sys/unix/zsyscall_openbsd_arm.go | 2 +- .../x/sys/unix/zsyscall_openbsd_arm64.go | 2 +- .../x/sys/unix/zsysnum_freebsd_386.go | 23 +- .../x/sys/unix/zsysnum_freebsd_amd64.go | 23 +- .../x/sys/unix/zsysnum_freebsd_arm.go | 23 +- .../x/sys/unix/zsysnum_freebsd_arm64.go | 445 +- .../x/sys/unix/zsysnum_linux_386.go | 6 + .../x/sys/unix/zsysnum_linux_amd64.go | 6 + .../x/sys/unix/zsysnum_linux_arm.go | 6 + .../x/sys/unix/zsysnum_linux_arm64.go | 6 + .../x/sys/unix/zsysnum_linux_mips.go | 6 + .../x/sys/unix/zsysnum_linux_mips64.go | 6 + .../x/sys/unix/zsysnum_linux_mips64le.go | 6 + .../x/sys/unix/zsysnum_linux_mipsle.go | 6 + .../x/sys/unix/zsysnum_linux_ppc64.go | 6 + .../x/sys/unix/zsysnum_linux_ppc64le.go | 6 + .../x/sys/unix/zsysnum_linux_riscv64.go | 6 + .../x/sys/unix/zsysnum_linux_s390x.go | 6 + .../x/sys/unix/zsysnum_linux_sparc64.go | 6 + .../x/sys/unix/ztypes_freebsd_386.go | 103 +- .../x/sys/unix/ztypes_freebsd_amd64.go | 110 +- .../x/sys/unix/ztypes_freebsd_arm.go | 87 +- .../x/sys/unix/ztypes_freebsd_arm64.go | 88 +- .../golang.org/x/sys/unix/ztypes_linux_386.go | 54 + .../x/sys/unix/ztypes_linux_amd64.go | 55 + .../golang.org/x/sys/unix/ztypes_linux_arm.go | 54 + .../x/sys/unix/ztypes_linux_arm64.go | 55 + .../x/sys/unix/ztypes_linux_mips.go | 54 + .../x/sys/unix/ztypes_linux_mips64.go | 55 + .../x/sys/unix/ztypes_linux_mips64le.go | 55 + .../x/sys/unix/ztypes_linux_mipsle.go | 54 + .../x/sys/unix/ztypes_linux_ppc64.go | 55 + .../x/sys/unix/ztypes_linux_ppc64le.go | 55 + .../x/sys/unix/ztypes_linux_riscv64.go | 55 + .../x/sys/unix/ztypes_linux_s390x.go | 55 + .../x/sys/unix/ztypes_linux_sparc64.go | 55 + .../x/sys/unix/ztypes_netbsd_386.go | 1 + .../x/sys/unix/ztypes_netbsd_amd64.go | 1 + .../x/sys/unix/ztypes_netbsd_arm.go | 1 + .../x/sys/unix/ztypes_netbsd_arm64.go | 1 + .../x/sys/unix/ztypes_openbsd_386.go | 1 + .../x/sys/unix/ztypes_openbsd_amd64.go | 1 + .../x/sys/unix/ztypes_openbsd_arm.go | 1 + .../x/sys/unix/ztypes_openbsd_arm64.go | 1 + vendor/golang.org/x/sys/windows/mkerrors.bash | 2 +- .../x/sys/windows/mkknownfolderids.bash | 27 + vendor/golang.org/x/sys/windows/service.go | 7 + .../x/sys/windows/svc/mgr/config.go | 9 + .../golang.org/x/sys/windows/svc/mgr/mgr.go | 41 + .../x/sys/windows/syscall_windows.go | 89 +- .../x/sys/windows/syscall_windows_test.go | 54 + .../golang.org/x/sys/windows/types_windows.go | 79 +- .../x/sys/windows/zerrors_windows.go | 2 +- .../x/sys/windows/zknownfolderids_windows.go | 149 + .../x/sys/windows/zsyscall_windows.go | 137 +- .../golang.org/x/tools/cmd/digraph/digraph.go | 244 +- .../x/tools/cmd/digraph/digraph_test.go | 150 +- vendor/golang.org/x/tools/cmd/gopls/main.go | 4 +- .../x/tools/cmd/present/static/notes.js | 110 +- .../x/tools/cmd/present/static/slides.js | 8 +- vendor/golang.org/x/tools/go.mod | 2 +- vendor/golang.org/x/tools/go.sum | 4 +- .../x/tools/go/analysis/analysis.go | 15 - .../x/tools/go/analysis/diagnostic.go | 20 + .../go/analysis/diagnostic_experimental.go | 41 + .../tools/go/analysis/doc/suggested_fixes.md | 80 + .../tools/go/analysis/internal/facts/facts.go | 20 + .../passes/composite/testdata/src/a/a.go | 6 + .../go/analysis/passes/composite/whitelist.go | 1 + .../go/analysis/unitchecker/unitchecker.go | 2 + vendor/golang.org/x/tools/go/cfg/builder.go | 2 +- .../internal/gccgoimporter/importer_test.go | 36 +- .../tools/go/internal/gccgoimporter/parser.go | 69 +- .../go/internal/gcimporter/bexport_test.go | 5 + .../go/internal/gcimporter/iexport_test.go | 3 + .../go/internal/gcimporter/israce_test.go | 11 + vendor/golang.org/x/tools/go/loader/doc.go | 5 +- vendor/golang.org/x/tools/go/loader/loader.go | 10 +- .../x/tools/go/packages/external.go | 29 +- .../golang.org/x/tools/go/packages/golist.go | 34 +- .../x/tools/go/packages/golist_overlay.go | 80 +- .../x/tools/go/packages/packages.go | 59 +- .../x/tools/go/packages/packages_test.go | 86 +- .../golang.org/x/tools/go/ssa/ssautil/load.go | 2 +- vendor/golang.org/x/tools/go/ssa/testmain.go | 6 +- vendor/golang.org/x/tools/gopls/go.mod | 7 + vendor/golang.org/x/tools/gopls/go.sum | 8 + vendor/golang.org/x/tools/gopls/main.go | 21 + .../x/tools/internal/imports/fix.go | 205 +- .../x/tools/internal/imports/fix_test.go | 33 +- .../x/tools/internal/imports/imports.go | 6 + .../x/tools/internal/imports/mod.go | 96 +- .../x/tools/internal/imports/mod_test.go | 38 +- .../x/tools/internal/jsonrpc2/handler.go | 124 + .../x/tools/internal/jsonrpc2/jsonrpc2.go | 336 +- .../tools/internal/jsonrpc2/jsonrpc2_test.go | 81 +- .../x/tools/internal/jsonrpc2/log.go | 59 - .../x/tools/internal/jsonrpc2/stream.go | 56 +- .../x/tools/internal/jsonrpc2/wire.go | 13 +- .../x/tools/internal/lsp/cache/cache.go | 69 +- .../x/tools/internal/lsp/cache/check.go | 213 +- .../x/tools/internal/lsp/cache/external.go | 57 +- .../x/tools/internal/lsp/cache/file.go | 49 +- .../x/tools/internal/lsp/cache/gofile.go | 186 +- .../x/tools/internal/lsp/cache/load.go | 291 +- .../x/tools/internal/lsp/cache/modfile.go | 16 +- .../x/tools/internal/lsp/cache/parse.go | 213 +- .../x/tools/internal/lsp/cache/pkg.go | 70 +- .../x/tools/internal/lsp/cache/session.go | 185 +- .../x/tools/internal/lsp/cache/sumfile.go | 16 +- .../x/tools/internal/lsp/cache/token.go | 94 + .../x/tools/internal/lsp/cache/view.go | 237 +- .../x/tools/internal/lsp/cache/watcher.go | 10 +- .../x/tools/internal/lsp/cmd/check.go | 2 +- .../x/tools/internal/lsp/cmd/check_test.go | 8 +- .../x/tools/internal/lsp/cmd/cmd.go | 42 +- .../x/tools/internal/lsp/cmd/cmd_test.go | 18 +- .../tools/internal/lsp/cmd/definition_test.go | 15 +- .../x/tools/internal/lsp/cmd/format.go | 2 +- .../x/tools/internal/lsp/cmd/format_test.go | 10 +- .../x/tools/internal/lsp/cmd/serve.go | 217 +- .../x/tools/internal/lsp/code_action.go | 119 +- .../x/tools/internal/lsp/completion.go | 91 +- .../x/tools/internal/lsp/debug/info.1.11.go | 2 +- .../x/tools/internal/lsp/debug/info.1.12.go | 4 +- .../x/tools/internal/lsp/debug/info.go | 3 + .../x/tools/internal/lsp/debug/metrics.go | 49 + .../x/tools/internal/lsp/debug/prometheus.go | 111 + .../x/tools/internal/lsp/debug/rpc.go | 209 + .../x/tools/internal/lsp/debug/serve.go | 76 +- .../x/tools/internal/lsp/debug/trace.go | 172 + .../x/tools/internal/lsp/definition.go | 2 +- .../x/tools/internal/lsp/diagnostics.go | 69 +- .../x/tools/internal/lsp/diff/diff.go | 13 +- .../golang.org/x/tools/internal/lsp/format.go | 40 +- .../x/tools/internal/lsp/fuzzy/input.go | 185 + .../x/tools/internal/lsp/fuzzy/input_test.go | 186 + .../x/tools/internal/lsp/fuzzy/matcher.go | 437 + .../tools/internal/lsp/fuzzy/matcher_test.go | 352 + .../x/tools/internal/lsp/general.go | 67 +- .../x/tools/internal/lsp/highlight.go | 7 +- .../golang.org/x/tools/internal/lsp/hover.go | 20 +- .../golang.org/x/tools/internal/lsp/link.go | 124 +- .../x/tools/internal/lsp/lsp_test.go | 275 +- .../x/tools/internal/lsp/protocol/context.go | 40 + .../x/tools/internal/lsp/protocol/log.go | 32 - .../x/tools/internal/lsp/protocol/protocol.go | 57 +- .../x/tools/internal/lsp/protocol/tsclient.go | 232 +- .../tools/internal/lsp/protocol/tsprotocol.go | 95 +- .../x/tools/internal/lsp/protocol/tsserver.go | 877 +- .../lsp/protocol/typescript/README.md | 12 +- .../internal/lsp/protocol/typescript/go.ts | 698 +- .../lsp/protocol/typescript/requests.ts | 479 + .../x/tools/internal/lsp/references.go | 77 + .../golang.org/x/tools/internal/lsp/rename.go | 52 + .../golang.org/x/tools/internal/lsp/server.go | 55 +- .../x/tools/internal/lsp/signature_help.go | 13 +- .../x/tools/internal/lsp/source/analysis.go | 36 +- .../x/tools/internal/lsp/source/completion.go | 440 +- .../internal/lsp/source/completion_format.go | 95 +- .../internal/lsp/source/completion_snippet.go | 20 +- .../internal/lsp/source/deep_completion.go | 84 + .../tools/internal/lsp/source/diagnostics.go | 292 +- .../internal/lsp/source/diagnostics_test.go | 5 +- .../x/tools/internal/lsp/source/format.go | 91 +- .../x/tools/internal/lsp/source/highlight.go | 19 +- .../x/tools/internal/lsp/source/hover.go | 145 +- .../x/tools/internal/lsp/source/identifier.go | 236 +- .../x/tools/internal/lsp/source/references.go | 99 + .../x/tools/internal/lsp/source/rename.go | 237 + .../tools/internal/lsp/source/rename_check.go | 935 + .../internal/lsp/source/signature_help.go | 68 +- .../tools/internal/lsp/source/source_test.go | 329 +- .../internal/lsp/source/suggested_fix.go | 10 + .../lsp/source/suggested_fix_experimental.go | 26 + .../x/tools/internal/lsp/source/symbols.go | 15 +- .../x/tools/internal/lsp/source/util.go | 108 +- .../x/tools/internal/lsp/source/view.go | 138 +- .../x/tools/internal/lsp/symbols.go | 8 +- .../tools/internal/lsp/telemetry/log/entry.go | 51 + .../x/tools/internal/lsp/telemetry/log/log.go | 92 + .../internal/lsp/telemetry/metric/metric.go | 412 + .../internal/lsp/telemetry/ocagent/ocagent.go | 242 + .../lsp/telemetry/ocagent/wire/common.go | 101 + .../lsp/telemetry/ocagent/wire/core.go | 17 + .../lsp/telemetry/ocagent/wire/metrics.go | 130 + .../lsp/telemetry/ocagent/wire/trace.go | 112 + .../internal/lsp/telemetry/stats/stats.go | 105 + .../x/tools/internal/lsp/telemetry/tag/key.go | 43 + .../x/tools/internal/lsp/telemetry/tag/tag.go | 142 + .../tools/internal/lsp/telemetry/telemetry.go | 36 + .../tools/internal/lsp/telemetry/trace/id.go | 72 + .../internal/lsp/telemetry/trace/trace.go | 140 + .../internal/lsp/telemetry/worker/worker.go | 40 + .../x/tools/internal/lsp/testdata/bad/bad0.go | 2 +- .../x/tools/internal/lsp/testdata/bad/bad1.go | 6 +- .../tools/internal/lsp/testdata/bar/bar.go.in | 4 +- .../lsp/testdata/builtins/builtins.go | 30 +- .../internal/lsp/testdata/channel/channel.go | 2 +- .../testdata/deepcomplete/deep_complete.go | 61 + .../internal/lsp/testdata/errors/errors.go | 5 + .../x/tools/internal/lsp/testdata/foo/foo.go | 10 +- .../lsp/testdata/func_rank/func_rank.go.in | 2 +- .../lsp/testdata/funcvalue/func_value.go | 27 + .../tools/internal/lsp/testdata/godef/a/f.go | 15 + .../internal/lsp/testdata/godef/a/f.go.golden | 48 + .../internal/lsp/testdata/godef/b/b.go.golden | 7 +- .../tools/internal/lsp/testdata/good/good0.go | 2 +- .../tools/internal/lsp/testdata/good/good1.go | 6 +- .../lsp/testdata/imports/good_imports.go | 7 + .../testdata/imports/good_imports.go.golden | 11 + .../lsp/testdata/imports/needs_imports.go | 6 + .../testdata/imports/needs_imports.go.golden | 27 + .../testdata/interfacerank/interface_rank.go | 23 + .../internal/lsp/testdata/links/links.go | 9 +- .../tools/internal/lsp/testdata/nodisk/empty | 2 +- .../lsp/testdata/nodisk/newdisk_exists.go | 1 + .../lsp/testdata/rank/convert_rank.go.in | 39 + .../internal/lsp/testdata/references/refs.go | 11 + .../lsp/testdata/rename/a/random.go.golden | 495 + .../lsp/testdata/rename/a/random.go.in | 42 + .../tools/internal/lsp/testdata/rename/b/b.go | 3 + .../lsp/testdata/rename/b/b.go.golden | 2 + .../lsp/testdata/rename/bad/bad.go.golden | 2 + .../lsp/testdata/rename/bad/bad.go.in | 8 + .../lsp/testdata/rename/testy/testy.go | 6 + .../lsp/testdata/rename/testy/testy.go.golden | 9 + .../lsp/testdata/rename/testy/testy_test.go | 8 + .../rename/testy/testy_test.go.golden | 30 + .../lsp/testdata/selector/selector.go.in | 4 +- .../lsp/testdata/signature/signature.go | 7 + .../lsp/testdata/snippets/snippets.go | 8 +- .../internal/lsp/testdata/testy/testy.go | 4 +- .../internal/lsp/testdata/testy/testy_test.go | 4 +- .../lsp/testdata/typeassert/type_assert.go | 24 + .../lsp/testdata/unresolved/unresolved.go.in | 6 + .../internal/lsp/testdata/unsafe/unsafe.go | 14 + .../x/tools/internal/lsp/tests/tests.go | 108 +- .../internal/lsp/text_synchronization.go | 145 +- .../golang.org/x/tools/internal/lsp/util.go | 10 +- .../x/tools/internal/lsp/workspace.go | 2 +- .../x/tools/internal/lsp/xlog/xlog.go | 71 - .../x/tools/internal/memoize/memoize.go | 259 + .../x/tools/internal/memoize/memoize_test.go | 234 + .../x/tools/internal/memoize/nocopy.go | 24 + .../golang.org/x/tools/internal/span/span.go | 4 +- .../golang.org/x/tools/internal/span/token.go | 12 +- .../golang.org/x/tools/internal/span/uri.go | 68 +- .../x/tools/internal/span/uri_test.go | 16 +- .../golang.org/x/tools/internal/span/utf16.go | 6 +- .../x/tools/internal/span/utf16_test.go | 15 +- .../x/tools/internal/xcontext/xcontext.go | 23 + .../x/tools/refactor/rename/rename.go | 2 +- vendor/google.golang.org/appengine/README.md | 4 +- .../google.golang.org/appengine/file/file.go | 2 +- vendor/google.golang.org/appengine/go.mod | 9 +- vendor/google.golang.org/appengine/go.sum | 16 + vendor/k8s.io/klog/klog.go | 161 +- vendor/k8s.io/klog/klog_test.go | 64 +- vendor/k8s.io/kube-openapi/go.mod | 2 +- vendor/k8s.io/kube-openapi/go.sum | 4 +- .../kube-openapi/pkg/aggregator/aggregator.go | 113 +- .../pkg/aggregator/aggregator_test.go | 140 +- .../kube-openapi/pkg/builder/openapi.go | 9 +- .../kube-openapi/pkg/builder/openapi_test.go | 64 +- .../k8s.io/kube-openapi/pkg/common/common.go | 18 + .../kube-openapi/pkg/generators/openapi.go | 46 +- .../pkg/generators/openapi_test.go | 120 + .../test/integration/builder/main.go | 8 +- .../integration/integration_suite_test.go | 17 +- .../pkg/generated/openapi_generated.go | 16 + .../test/integration/testdata/custom/v2.go | 35 + .../test/integration/testdata/custom/v3.go | 79 + .../testdata/{golden.json => golden.v2.json} | 89 + .../{golden.report => golden.v2.report} | 0 .../sample-controller/Godeps/Godeps.json | 108 +- vendor/k8s.io/sample-controller/README.md | 43 +- .../sample-controller/SECURITY_CONTACTS | 2 +- .../sample-controller/controller_test.go | 6 +- vendor/k8s.io/sample-controller/go.mod | 23 +- vendor/k8s.io/sample-controller/go.sum | 109 +- .../sample-controller/hack/update-codegen.sh | 2 +- vendor/k8s.io/sample-controller/main.go | 1 + .../pkg/apis/samplecontroller/v1alpha1/doc.go | 2 +- .../clientset/versioned/clientset.go | 7 + vendor/k8s.io/utils/.travis.yml | 1 + vendor/k8s.io/utils/Makefile | 2 +- vendor/k8s.io/utils/hack/verify-govet.sh | 29 + vendor/k8s.io/utils/inotify/LICENSE | 27 + vendor/k8s.io/utils/inotify/PATENTS | 22 + vendor/k8s.io/utils/inotify/README.md | 5 + vendor/k8s.io/utils/inotify/inotify_linux.go | 333 + .../utils/inotify/inotify_linux_test.go | 107 + vendor/k8s.io/utils/net/net.go | 99 +- vendor/k8s.io/utils/net/net_test.go | 292 +- 915 files changed, 65238 insertions(+), 21591 deletions(-) create mode 100644 vendor/github.com/golang/protobuf/protoc-gen-go/testdata/grpc/grpc_empty.pb.go create mode 100644 vendor/github.com/golang/protobuf/protoc-gen-go/testdata/grpc/grpc_empty.proto create mode 100644 vendor/github.com/googleapis/gnostic/compiler/reader_test.go create mode 100644 vendor/github.com/googleapis/gnostic/compiler/testdata/petstore.yaml create mode 100644 vendor/github.com/googleapis/gnostic/examples/v2.0/yaml/empty-v2.yaml create mode 100644 vendor/github.com/googleapis/gnostic/examples/v3.0/yaml/empty-v3.yaml delete mode 100644 vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/Makefile delete mode 100644 vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/README.md delete mode 100644 vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/googleauth/README.md delete mode 100644 vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/googleauth/googleauth.go delete mode 100644 vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v2.0/apis_guru/Makefile delete mode 100644 vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v2.0/apis_guru/main.go delete mode 100644 vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v2.0/apis_guru/swagger.yaml delete mode 100644 vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v2.0/bookstore/Makefile delete mode 100644 vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v2.0/bookstore/README.md delete mode 100644 vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v2.0/bookstore/bookstore.json delete mode 100644 vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v2.0/bookstore/bookstore/bookstore.go delete mode 100644 vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v2.0/bookstore/bookstore_test.go delete mode 100644 vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v2.0/bookstore/service/app.yaml delete mode 100644 vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v2.0/bookstore/service/init.go delete mode 100644 vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v2.0/bookstore/service/main.go delete mode 100644 vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v2.0/bookstore/service/service.go delete mode 100644 vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v2.0/sample/Makefile delete mode 100644 vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v2.0/sample/README.md delete mode 100644 vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v2.0/sample/sample.yaml delete mode 100644 vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v2.0/sample/sample/sample.go delete mode 100644 vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v2.0/sample/sample_test.go delete mode 100644 vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v2.0/sample/service/app.yaml delete mode 100644 vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v2.0/sample/service/init.go delete mode 100644 vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v2.0/sample/service/main.go delete mode 100644 vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v2.0/sample/service/service.go delete mode 100644 vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v2.0/xkcd/Makefile delete mode 100644 vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v2.0/xkcd/main.go delete mode 100644 vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v2.0/xkcd/swagger.json delete mode 100644 vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v2.0/xkcd/xkcd/xkcd.go delete mode 100644 vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v3.0/bookstore/Makefile delete mode 100644 vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v3.0/bookstore/README.md delete mode 100644 vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v3.0/bookstore/bookstore.json delete mode 100644 vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v3.0/bookstore/bookstore/bookstore.go delete mode 100644 vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v3.0/bookstore/bookstore_test.go delete mode 100644 vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v3.0/bookstore/service/app.yaml delete mode 100644 vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v3.0/bookstore/service/init.go delete mode 100644 vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v3.0/bookstore/service/main.go delete mode 100644 vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v3.0/bookstore/service/service.go delete mode 100644 vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v3.0/urlshortener/README.md delete mode 100644 vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v3.0/urlshortener/main.go delete mode 100644 vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v3.0/urlshortener/urlshortener/urlshortener.go delete mode 100644 vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/goimports.go delete mode 100644 vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/language.go delete mode 100644 vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/linewriter.go delete mode 100644 vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/main.go delete mode 100644 vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/render_client.go delete mode 100644 vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/render_constants.go delete mode 100644 vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/render_provider.go delete mode 100644 vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/render_server.go delete mode 100644 vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/render_types.go delete mode 100644 vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/renderer.go create mode 100644 vendor/github.com/googleapis/gnostic/test/v2.0/json/empty-v2.json create mode 100644 vendor/github.com/googleapis/gnostic/test/v3.0/json/empty-v3.json create mode 100755 vendor/github.com/json-iterator/go/build.sh create mode 100644 vendor/github.com/minio/minio/Dockerfile.mint create mode 100644 vendor/github.com/minio/minio/SECURITY.md create mode 100644 vendor/github.com/minio/minio/browser/package-lock.json create mode 100644 vendor/github.com/minio/minio/cmd/background-heal-ops.go create mode 100644 vendor/github.com/minio/minio/cmd/bucket-lifecycle-handler.go create mode 100644 vendor/github.com/minio/minio/cmd/daily-heal-ops.go create mode 100644 vendor/github.com/minio/minio/cmd/daily-sweeper.go create mode 100644 vendor/github.com/minio/minio/cmd/http-tracer.go create mode 100644 vendor/github.com/minio/minio/cmd/http/headers.go create mode 100644 vendor/github.com/minio/minio/cmd/lifecycle.go create mode 100644 vendor/github.com/minio/minio/cmd/web-handler-context.go create mode 100644 vendor/github.com/minio/minio/cmd/web-handler-context_test.go rename vendor/github.com/minio/minio/docs/{large-bucket => distributed}/DESIGN.md (100%) create mode 100644 vendor/github.com/minio/minio/docs/kms/vault-config.json delete mode 100644 vendor/github.com/minio/minio/docs/large-bucket/README.md create mode 100644 vendor/github.com/minio/minio/docs/metrics/healthcheck/README.md create mode 100644 vendor/github.com/minio/minio/docs/screenshots/Architecture-diagram_distributed_32.png create mode 100644 vendor/github.com/minio/minio/mint/.gitignore create mode 100644 vendor/github.com/minio/minio/mint/Dockerfile.dev create mode 100644 vendor/github.com/minio/minio/mint/README.md create mode 100755 vendor/github.com/minio/minio/mint/build/aws-sdk-go/install.sh create mode 100644 vendor/github.com/minio/minio/mint/build/aws-sdk-java/build.xml create mode 100755 vendor/github.com/minio/minio/mint/build/aws-sdk-java/install.sh create mode 100644 vendor/github.com/minio/minio/mint/build/aws-sdk-java/ivy.xml create mode 100644 vendor/github.com/minio/minio/mint/build/aws-sdk-java/src/FunctionalTests.java create mode 100644 vendor/github.com/minio/minio/mint/build/aws-sdk-java/src/LimitedInputStream.java create mode 100755 vendor/github.com/minio/minio/mint/build/aws-sdk-java/src/MintLogger.java create mode 100644 vendor/github.com/minio/minio/mint/build/aws-sdk-java/src/S3TestUtils.java create mode 100644 vendor/github.com/minio/minio/mint/build/aws-sdk-java/src/Utils.java create mode 100755 vendor/github.com/minio/minio/mint/build/aws-sdk-php/install.sh create mode 100755 vendor/github.com/minio/minio/mint/build/aws-sdk-ruby/install.sh create mode 100755 vendor/github.com/minio/minio/mint/build/awscli/install.sh create mode 100755 vendor/github.com/minio/minio/mint/build/healthcheck/install.sh create mode 100755 vendor/github.com/minio/minio/mint/build/mc/install.sh create mode 100755 vendor/github.com/minio/minio/mint/build/minio-dotnet/install.sh create mode 100755 vendor/github.com/minio/minio/mint/build/minio-go/install.sh create mode 100755 vendor/github.com/minio/minio/mint/build/minio-java/install.sh create mode 100755 vendor/github.com/minio/minio/mint/build/minio-js/install.sh create mode 100755 vendor/github.com/minio/minio/mint/build/minio-py/install.sh create mode 100755 vendor/github.com/minio/minio/mint/build/s3cmd/install.sh create mode 100755 vendor/github.com/minio/minio/mint/build/security/install.sh create mode 100755 vendor/github.com/minio/minio/mint/build/worm/install.sh create mode 100755 vendor/github.com/minio/minio/mint/create-data-files.sh create mode 100755 vendor/github.com/minio/minio/mint/entrypoint.sh create mode 100644 vendor/github.com/minio/minio/mint/install-packages.list create mode 100755 vendor/github.com/minio/minio/mint/mint.sh create mode 100755 vendor/github.com/minio/minio/mint/postinstall.sh create mode 100755 vendor/github.com/minio/minio/mint/preinstall.sh create mode 100755 vendor/github.com/minio/minio/mint/release.sh create mode 100644 vendor/github.com/minio/minio/mint/remove-packages.list create mode 100644 vendor/github.com/minio/minio/mint/run/core/aws-sdk-go/quick-tests.go create mode 100755 vendor/github.com/minio/minio/mint/run/core/aws-sdk-go/run.sh create mode 100755 vendor/github.com/minio/minio/mint/run/core/aws-sdk-java/run.sh create mode 100644 vendor/github.com/minio/minio/mint/run/core/aws-sdk-php/README.md create mode 100644 vendor/github.com/minio/minio/mint/run/core/aws-sdk-php/composer.json create mode 100644 vendor/github.com/minio/minio/mint/run/core/aws-sdk-php/quick-tests.php create mode 100755 vendor/github.com/minio/minio/mint/run/core/aws-sdk-php/run.sh create mode 100644 vendor/github.com/minio/minio/mint/run/core/aws-sdk-ruby/README.md create mode 100755 vendor/github.com/minio/minio/mint/run/core/aws-sdk-ruby/aws-stub-tests.rb create mode 100755 vendor/github.com/minio/minio/mint/run/core/aws-sdk-ruby/run.sh create mode 100644 vendor/github.com/minio/minio/mint/run/core/awscli/README.md create mode 100755 vendor/github.com/minio/minio/mint/run/core/awscli/run.sh create mode 100755 vendor/github.com/minio/minio/mint/run/core/awscli/test.sh create mode 100644 vendor/github.com/minio/minio/mint/run/core/healthcheck/healthcheck.go create mode 100755 vendor/github.com/minio/minio/mint/run/core/healthcheck/run.sh create mode 100644 vendor/github.com/minio/minio/mint/run/core/mc/README.md create mode 100755 vendor/github.com/minio/minio/mint/run/core/mc/run.sh create mode 100755 vendor/github.com/minio/minio/mint/run/core/minio-dotnet/run.sh create mode 100644 vendor/github.com/minio/minio/mint/run/core/minio-go/README.md create mode 100755 vendor/github.com/minio/minio/mint/run/core/minio-go/run.sh create mode 100644 vendor/github.com/minio/minio/mint/run/core/minio-java/README.md create mode 100755 vendor/github.com/minio/minio/mint/run/core/minio-java/run.sh create mode 100644 vendor/github.com/minio/minio/mint/run/core/minio-js/README.md create mode 100644 vendor/github.com/minio/minio/mint/run/core/minio-js/minioreporter.js create mode 100644 vendor/github.com/minio/minio/mint/run/core/minio-js/package.json create mode 100755 vendor/github.com/minio/minio/mint/run/core/minio-js/run.sh create mode 100644 vendor/github.com/minio/minio/mint/run/core/minio-py/README.md create mode 100755 vendor/github.com/minio/minio/mint/run/core/minio-py/run.sh create mode 100644 vendor/github.com/minio/minio/mint/run/core/s3cmd/.gitignore create mode 100644 vendor/github.com/minio/minio/mint/run/core/s3cmd/README.md create mode 100755 vendor/github.com/minio/minio/mint/run/core/s3cmd/run.sh create mode 100755 vendor/github.com/minio/minio/mint/run/core/s3cmd/test.sh create mode 100755 vendor/github.com/minio/minio/mint/run/core/security/run.sh create mode 100644 vendor/github.com/minio/minio/mint/run/core/security/tls-tests.go create mode 100644 vendor/github.com/minio/minio/mint/run/core/worm/quick-worm-tests.go create mode 100755 vendor/github.com/minio/minio/mint/run/core/worm/run.sh delete mode 100644 vendor/github.com/minio/minio/pkg/handlers/http-tracer.go delete mode 100644 vendor/github.com/minio/minio/pkg/handlers/http-tracer_test.go create mode 100644 vendor/github.com/minio/minio/pkg/lifecycle/action.go create mode 100644 vendor/github.com/minio/minio/pkg/lifecycle/and.go create mode 100644 vendor/github.com/minio/minio/pkg/lifecycle/expiration.go create mode 100644 vendor/github.com/minio/minio/pkg/lifecycle/expiration_test.go create mode 100644 vendor/github.com/minio/minio/pkg/lifecycle/filter.go create mode 100644 vendor/github.com/minio/minio/pkg/lifecycle/filter_test.go create mode 100644 vendor/github.com/minio/minio/pkg/lifecycle/lifecycle.go create mode 100644 vendor/github.com/minio/minio/pkg/lifecycle/lifecycle_test.go create mode 100644 vendor/github.com/minio/minio/pkg/lifecycle/noncurrentversion.go create mode 100644 vendor/github.com/minio/minio/pkg/lifecycle/rule.go create mode 100644 vendor/github.com/minio/minio/pkg/lifecycle/rule_test.go create mode 100644 vendor/github.com/minio/minio/pkg/lifecycle/tag.go create mode 100644 vendor/github.com/minio/minio/pkg/lifecycle/transition.go create mode 100644 vendor/github.com/minio/minio/pkg/madmin/api-trace.go create mode 100644 vendor/github.com/minio/minio/pkg/madmin/examples/heal-status.go create mode 100644 vendor/github.com/minio/minio/pkg/madmin/examples/trace.go create mode 100644 vendor/github.com/minio/minio/pkg/pubsub/pubsub.go create mode 100644 vendor/github.com/minio/minio/pkg/pubsub/pubsub_test.go create mode 100644 vendor/github.com/minio/minio/pkg/s3select/csv/reader_test.go create mode 100644 vendor/github.com/minio/minio/pkg/trace/trace.go create mode 100644 vendor/github.com/pkg/profile/.travis.yml create mode 100644 vendor/github.com/pkg/profile/AUTHORS create mode 100644 vendor/github.com/pkg/profile/LICENSE create mode 100644 vendor/github.com/pkg/profile/README.md create mode 100644 vendor/github.com/pkg/profile/example_test.go create mode 100644 vendor/github.com/pkg/profile/mutex.go create mode 100644 vendor/github.com/pkg/profile/mutex17.go create mode 100644 vendor/github.com/pkg/profile/profile.go create mode 100644 vendor/github.com/pkg/profile/profile_test.go create mode 100644 vendor/github.com/pkg/profile/trace.go create mode 100644 vendor/github.com/pkg/profile/trace16.go create mode 100644 vendor/github.com/pkg/profile/trace_test.go create mode 100644 vendor/github.com/spf13/cobra/cobra/tpl/main.go create mode 100644 vendor/github.com/spf13/cobra/powershell_completions.go create mode 100644 vendor/github.com/spf13/cobra/powershell_completions.md create mode 100644 vendor/github.com/spf13/cobra/powershell_completions_test.go create mode 100644 vendor/github.com/spf13/cobra/shell_completions.go create mode 100644 vendor/github.com/spf13/cobra/zsh_completions.md create mode 100644 vendor/golang.org/x/crypto/acme/version_go112.go create mode 100644 vendor/golang.org/x/crypto/ed25519/ed25519_go113.go create mode 100644 vendor/golang.org/x/crypto/ed25519/go113_test.go create mode 100644 vendor/golang.org/x/crypto/poly1305/sum_ppc64le.go create mode 100644 vendor/golang.org/x/crypto/poly1305/sum_ppc64le.s create mode 100644 vendor/golang.org/x/net/internal/socket/zsys_freebsd_arm64.go create mode 100644 vendor/golang.org/x/net/internal/socket/zsys_openbsd_arm64.go create mode 100644 vendor/golang.org/x/sys/unix/dirent_test.go create mode 100644 vendor/golang.org/x/sys/unix/getdirentries_test.go create mode 100644 vendor/golang.org/x/sys/unix/readdirent_getdents.go create mode 100644 vendor/golang.org/x/sys/unix/readdirent_getdirentries.go create mode 100755 vendor/golang.org/x/sys/windows/mkknownfolderids.bash create mode 100644 vendor/golang.org/x/sys/windows/zknownfolderids_windows.go create mode 100644 vendor/golang.org/x/tools/go/analysis/diagnostic.go create mode 100644 vendor/golang.org/x/tools/go/analysis/diagnostic_experimental.go create mode 100644 vendor/golang.org/x/tools/go/analysis/doc/suggested_fixes.md create mode 100644 vendor/golang.org/x/tools/go/internal/gcimporter/israce_test.go create mode 100644 vendor/golang.org/x/tools/gopls/go.mod create mode 100644 vendor/golang.org/x/tools/gopls/go.sum create mode 100644 vendor/golang.org/x/tools/gopls/main.go create mode 100644 vendor/golang.org/x/tools/internal/jsonrpc2/handler.go delete mode 100644 vendor/golang.org/x/tools/internal/jsonrpc2/log.go create mode 100644 vendor/golang.org/x/tools/internal/lsp/cache/token.go create mode 100644 vendor/golang.org/x/tools/internal/lsp/debug/metrics.go create mode 100644 vendor/golang.org/x/tools/internal/lsp/debug/prometheus.go create mode 100644 vendor/golang.org/x/tools/internal/lsp/debug/rpc.go create mode 100644 vendor/golang.org/x/tools/internal/lsp/debug/trace.go create mode 100644 vendor/golang.org/x/tools/internal/lsp/fuzzy/input.go create mode 100644 vendor/golang.org/x/tools/internal/lsp/fuzzy/input_test.go create mode 100644 vendor/golang.org/x/tools/internal/lsp/fuzzy/matcher.go create mode 100644 vendor/golang.org/x/tools/internal/lsp/fuzzy/matcher_test.go create mode 100644 vendor/golang.org/x/tools/internal/lsp/protocol/context.go delete mode 100644 vendor/golang.org/x/tools/internal/lsp/protocol/log.go create mode 100644 vendor/golang.org/x/tools/internal/lsp/protocol/typescript/requests.ts create mode 100644 vendor/golang.org/x/tools/internal/lsp/references.go create mode 100644 vendor/golang.org/x/tools/internal/lsp/rename.go create mode 100644 vendor/golang.org/x/tools/internal/lsp/source/deep_completion.go create mode 100644 vendor/golang.org/x/tools/internal/lsp/source/references.go create mode 100644 vendor/golang.org/x/tools/internal/lsp/source/rename.go create mode 100644 vendor/golang.org/x/tools/internal/lsp/source/rename_check.go create mode 100644 vendor/golang.org/x/tools/internal/lsp/source/suggested_fix.go create mode 100644 vendor/golang.org/x/tools/internal/lsp/source/suggested_fix_experimental.go create mode 100644 vendor/golang.org/x/tools/internal/lsp/telemetry/log/entry.go create mode 100644 vendor/golang.org/x/tools/internal/lsp/telemetry/log/log.go create mode 100644 vendor/golang.org/x/tools/internal/lsp/telemetry/metric/metric.go create mode 100644 vendor/golang.org/x/tools/internal/lsp/telemetry/ocagent/ocagent.go create mode 100644 vendor/golang.org/x/tools/internal/lsp/telemetry/ocagent/wire/common.go create mode 100644 vendor/golang.org/x/tools/internal/lsp/telemetry/ocagent/wire/core.go create mode 100644 vendor/golang.org/x/tools/internal/lsp/telemetry/ocagent/wire/metrics.go create mode 100644 vendor/golang.org/x/tools/internal/lsp/telemetry/ocagent/wire/trace.go create mode 100644 vendor/golang.org/x/tools/internal/lsp/telemetry/stats/stats.go create mode 100644 vendor/golang.org/x/tools/internal/lsp/telemetry/tag/key.go create mode 100644 vendor/golang.org/x/tools/internal/lsp/telemetry/tag/tag.go create mode 100644 vendor/golang.org/x/tools/internal/lsp/telemetry/telemetry.go create mode 100644 vendor/golang.org/x/tools/internal/lsp/telemetry/trace/id.go create mode 100644 vendor/golang.org/x/tools/internal/lsp/telemetry/trace/trace.go create mode 100644 vendor/golang.org/x/tools/internal/lsp/telemetry/worker/worker.go create mode 100644 vendor/golang.org/x/tools/internal/lsp/testdata/deepcomplete/deep_complete.go create mode 100644 vendor/golang.org/x/tools/internal/lsp/testdata/funcvalue/func_value.go create mode 100644 vendor/golang.org/x/tools/internal/lsp/testdata/godef/a/f.go create mode 100644 vendor/golang.org/x/tools/internal/lsp/testdata/godef/a/f.go.golden create mode 100644 vendor/golang.org/x/tools/internal/lsp/testdata/imports/good_imports.go create mode 100644 vendor/golang.org/x/tools/internal/lsp/testdata/imports/good_imports.go.golden create mode 100644 vendor/golang.org/x/tools/internal/lsp/testdata/imports/needs_imports.go create mode 100644 vendor/golang.org/x/tools/internal/lsp/testdata/imports/needs_imports.go.golden create mode 100644 vendor/golang.org/x/tools/internal/lsp/testdata/interfacerank/interface_rank.go create mode 100644 vendor/golang.org/x/tools/internal/lsp/testdata/nodisk/newdisk_exists.go create mode 100644 vendor/golang.org/x/tools/internal/lsp/testdata/rank/convert_rank.go.in create mode 100644 vendor/golang.org/x/tools/internal/lsp/testdata/references/refs.go create mode 100644 vendor/golang.org/x/tools/internal/lsp/testdata/rename/a/random.go.golden create mode 100644 vendor/golang.org/x/tools/internal/lsp/testdata/rename/a/random.go.in create mode 100644 vendor/golang.org/x/tools/internal/lsp/testdata/rename/b/b.go create mode 100644 vendor/golang.org/x/tools/internal/lsp/testdata/rename/b/b.go.golden create mode 100644 vendor/golang.org/x/tools/internal/lsp/testdata/rename/bad/bad.go.golden create mode 100644 vendor/golang.org/x/tools/internal/lsp/testdata/rename/bad/bad.go.in create mode 100644 vendor/golang.org/x/tools/internal/lsp/testdata/rename/testy/testy.go create mode 100644 vendor/golang.org/x/tools/internal/lsp/testdata/rename/testy/testy.go.golden create mode 100644 vendor/golang.org/x/tools/internal/lsp/testdata/rename/testy/testy_test.go create mode 100644 vendor/golang.org/x/tools/internal/lsp/testdata/rename/testy/testy_test.go.golden create mode 100644 vendor/golang.org/x/tools/internal/lsp/testdata/typeassert/type_assert.go create mode 100644 vendor/golang.org/x/tools/internal/lsp/testdata/unresolved/unresolved.go.in create mode 100644 vendor/golang.org/x/tools/internal/lsp/testdata/unsafe/unsafe.go delete mode 100644 vendor/golang.org/x/tools/internal/lsp/xlog/xlog.go create mode 100644 vendor/golang.org/x/tools/internal/memoize/memoize.go create mode 100644 vendor/golang.org/x/tools/internal/memoize/memoize_test.go create mode 100644 vendor/golang.org/x/tools/internal/memoize/nocopy.go create mode 100644 vendor/golang.org/x/tools/internal/xcontext/xcontext.go create mode 100644 vendor/k8s.io/kube-openapi/test/integration/testdata/custom/v2.go create mode 100644 vendor/k8s.io/kube-openapi/test/integration/testdata/custom/v3.go rename vendor/k8s.io/kube-openapi/test/integration/testdata/{golden.json => golden.v2.json} (82%) rename vendor/k8s.io/kube-openapi/test/integration/testdata/{golden.report => golden.v2.report} (100%) create mode 100755 vendor/k8s.io/utils/hack/verify-govet.sh create mode 100644 vendor/k8s.io/utils/inotify/LICENSE create mode 100644 vendor/k8s.io/utils/inotify/PATENTS create mode 100644 vendor/k8s.io/utils/inotify/README.md create mode 100644 vendor/k8s.io/utils/inotify/inotify_linux.go create mode 100644 vendor/k8s.io/utils/inotify/inotify_linux_test.go diff --git a/pkg/annotations/controller.go b/pkg/annotations/controller.go index 06cb06871a..e251719492 100644 --- a/pkg/annotations/controller.go +++ b/pkg/annotations/controller.go @@ -46,7 +46,7 @@ func (c *controller) Run(stopCh <-chan struct{}) { } func (c *controller) Stop() { - defer c.queue.ShutDown() + c.queue.ShutDown() glog.Info("Shutting down annotation controller workers") } diff --git a/pkg/controller/controller.go b/pkg/controller/controller.go index e526d715c2..67cd0908fd 100644 --- a/pkg/controller/controller.go +++ b/pkg/controller/controller.go @@ -123,9 +123,10 @@ func (pc *PolicyController) Run(stopCh <-chan struct{}) error { //Stop to perform actions when controller is stopped func (pc *PolicyController) Stop() { - defer pc.queue.ShutDown() + pc.queue.ShutDown() glog.Info("shutting down policy controller workers") } + func (pc *PolicyController) runWorker() { for pc.processNextWorkItem() { } diff --git a/pkg/event/controller.go b/pkg/event/controller.go index 5c5e9fca0b..00e6451098 100644 --- a/pkg/event/controller.go +++ b/pkg/event/controller.go @@ -88,7 +88,7 @@ func (c *controller) Run(stopCh <-chan struct{}) { } func (c *controller) Stop() { - defer c.queue.ShutDown() + c.queue.ShutDown() glog.Info("Shutting down eventbuilder controller workers") } diff --git a/pkg/gencontroller/controller.go b/pkg/gencontroller/controller.go index 157e65b15b..06ec8b4bd4 100644 --- a/pkg/gencontroller/controller.go +++ b/pkg/gencontroller/controller.go @@ -93,7 +93,7 @@ func (c *Controller) Run(stopCh <-chan struct{}) error { //Stop to stop the controller func (c *Controller) Stop() { - defer c.workqueue.ShutDown() + c.workqueue.ShutDown() glog.Info("shutting down namespace controller workers") } diff --git a/vendor/github.com/golang/groupcache/groupcache.go b/vendor/github.com/golang/groupcache/groupcache.go index 316ca49409..8cf714a9a8 100644 --- a/vendor/github.com/golang/groupcache/groupcache.go +++ b/vendor/github.com/golang/groupcache/groupcache.go @@ -245,7 +245,7 @@ func (g *Group) load(ctx Context, key string, dest Sink) (value ByteView, destPo // be only one entry for this key. // // Consider the following serialized event ordering for two - // goroutines in which this callback gets called twice for hte + // goroutines in which this callback gets called twice for the // same key: // 1: Get("key") // 2: Get("key") diff --git a/vendor/github.com/golang/protobuf/jsonpb/jsonpb.go b/vendor/github.com/golang/protobuf/jsonpb/jsonpb.go index ada2b78e89..e9cc202585 100644 --- a/vendor/github.com/golang/protobuf/jsonpb/jsonpb.go +++ b/vendor/github.com/golang/protobuf/jsonpb/jsonpb.go @@ -57,6 +57,7 @@ import ( ) const secondInNanos = int64(time.Second / time.Nanosecond) +const maxSecondsInDuration = 315576000000 // Marshaler is a configurable object for converting between // protocol buffer objects and a JSON representation for them. @@ -182,7 +183,12 @@ func (m *Marshaler) marshalObject(out *errWriter, v proto.Message, indent, typeU 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 { + if m.Indent != "" { + b, err = json.MarshalIndent(js, indent, m.Indent) + } else { + b, err = json.Marshal(js) + } + if err != nil { return err } } @@ -206,19 +212,26 @@ func (m *Marshaler) marshalObject(out *errWriter, v proto.Message, indent, typeU // Any is a bit more involved. return m.marshalAny(out, v, indent) case "Duration": - // "Generated output always contains 0, 3, 6, or 9 fractional digits, - // depending on required precision." s, ns := s.Field(0).Int(), s.Field(1).Int() + if s < -maxSecondsInDuration || s > maxSecondsInDuration { + return fmt.Errorf("seconds out of range %v", s) + } if ns <= -secondInNanos || ns >= secondInNanos { return fmt.Errorf("ns out of range (%v, %v)", -secondInNanos, secondInNanos) } if (s > 0 && ns < 0) || (s < 0 && ns > 0) { return errors.New("signs of seconds and nanos do not match") } - if s < 0 { + // Generated output always contains 0, 3, 6, or 9 fractional digits, + // depending on required precision, followed by the suffix "s". + f := "%d.%09d" + if ns < 0 { ns = -ns + if s == 0 { + f = "-%d.%09d" + } } - x := fmt.Sprintf("%d.%09d", s, ns) + x := fmt.Sprintf(f, s, ns) x = strings.TrimSuffix(x, "000") x = strings.TrimSuffix(x, "000") x = strings.TrimSuffix(x, ".000") diff --git a/vendor/github.com/golang/protobuf/jsonpb/jsonpb_test.go b/vendor/github.com/golang/protobuf/jsonpb/jsonpb_test.go index 45a13d45a5..fd06fc2fee 100644 --- a/vendor/github.com/golang/protobuf/jsonpb/jsonpb_test.go +++ b/vendor/github.com/golang/protobuf/jsonpb/jsonpb_test.go @@ -473,10 +473,17 @@ var marshalingTests = []struct { {"Any with message and indent", marshalerAllOptions, anySimple, anySimplePrettyJSON}, {"Any with WKT", marshaler, anyWellKnown, anyWellKnownJSON}, {"Any with WKT and indent", marshalerAllOptions, anyWellKnown, anyWellKnownPrettyJSON}, - {"Duration", marshaler, &pb.KnownTypes{Dur: &durpb.Duration{Seconds: 3}}, `{"dur":"3s"}`}, - {"Duration", marshaler, &pb.KnownTypes{Dur: &durpb.Duration{Seconds: 3, Nanos: 1e6}}, `{"dur":"3.001s"}`}, - {"Duration beyond float64 precision", marshaler, &pb.KnownTypes{Dur: &durpb.Duration{Seconds: 100000000, Nanos: 1}}, `{"dur":"100000000.000000001s"}`}, - {"negative Duration", marshaler, &pb.KnownTypes{Dur: &durpb.Duration{Seconds: -123, Nanos: -456}}, `{"dur":"-123.000000456s"}`}, + {"Duration empty", marshaler, &durpb.Duration{}, `"0s"`}, + {"Duration with secs", marshaler, &durpb.Duration{Seconds: 3}, `"3s"`}, + {"Duration with -secs", marshaler, &durpb.Duration{Seconds: -3}, `"-3s"`}, + {"Duration with nanos", marshaler, &durpb.Duration{Nanos: 1e6}, `"0.001s"`}, + {"Duration with -nanos", marshaler, &durpb.Duration{Nanos: -1e6}, `"-0.001s"`}, + {"Duration with large secs", marshaler, &durpb.Duration{Seconds: 1e10, Nanos: 1}, `"10000000000.000000001s"`}, + {"Duration with 6-digit nanos", marshaler, &durpb.Duration{Nanos: 1e4}, `"0.000010s"`}, + {"Duration with 3-digit nanos", marshaler, &durpb.Duration{Nanos: 1e6}, `"0.001s"`}, + {"Duration with -secs -nanos", marshaler, &durpb.Duration{Seconds: -123, Nanos: -450}, `"-123.000000450s"`}, + {"Duration max value", marshaler, &durpb.Duration{Seconds: 315576000000, Nanos: 999999999}, `"315576000000.999999999s"`}, + {"Duration min value", marshaler, &durpb.Duration{Seconds: -315576000000, Nanos: -999999999}, `"-315576000000.999999999s"`}, {"Struct", marshaler, &pb.KnownTypes{St: &stpb.Struct{ Fields: map[string]*stpb.Value{ "one": {Kind: &stpb.Value_StringValue{"loneliest number"}}, @@ -549,15 +556,17 @@ func TestMarshalIllegalTime(t *testing.T) { pb proto.Message fail bool }{ - {&pb.KnownTypes{Dur: &durpb.Duration{Seconds: 1, Nanos: 0}}, false}, - {&pb.KnownTypes{Dur: &durpb.Duration{Seconds: -1, Nanos: 0}}, false}, - {&pb.KnownTypes{Dur: &durpb.Duration{Seconds: 1, Nanos: -1}}, true}, - {&pb.KnownTypes{Dur: &durpb.Duration{Seconds: -1, Nanos: 1}}, true}, - {&pb.KnownTypes{Dur: &durpb.Duration{Seconds: 1, Nanos: 1000000000}}, true}, - {&pb.KnownTypes{Dur: &durpb.Duration{Seconds: -1, Nanos: -1000000000}}, true}, - {&pb.KnownTypes{Ts: &tspb.Timestamp{Seconds: 1, Nanos: 1}}, false}, - {&pb.KnownTypes{Ts: &tspb.Timestamp{Seconds: 1, Nanos: -1}}, true}, - {&pb.KnownTypes{Ts: &tspb.Timestamp{Seconds: 1, Nanos: 1000000000}}, true}, + {&durpb.Duration{Seconds: 1, Nanos: 0}, false}, + {&durpb.Duration{Seconds: -1, Nanos: 0}, false}, + {&durpb.Duration{Seconds: 1, Nanos: -1}, true}, + {&durpb.Duration{Seconds: -1, Nanos: 1}, true}, + {&durpb.Duration{Seconds: 315576000001}, true}, + {&durpb.Duration{Seconds: -315576000001}, true}, + {&durpb.Duration{Seconds: 1, Nanos: 1000000000}, true}, + {&durpb.Duration{Seconds: -1, Nanos: -1000000000}, true}, + {&tspb.Timestamp{Seconds: 1, Nanos: 1}, false}, + {&tspb.Timestamp{Seconds: 1, Nanos: -1}, true}, + {&tspb.Timestamp{Seconds: 1, Nanos: 1000000000}, true}, } for _, tt := range tests { _, err := marshaler.MarshalToString(tt.pb) @@ -598,6 +607,28 @@ func TestMarshalAnyJSONPBMarshaler(t *testing.T) { if str != expected { t.Errorf("marshalling JSON produced incorrect output: got %s, wanted %s", str, expected) } + + // Do it again, but this time with indentation: + + marshaler := Marshaler{Indent: " "} + str, err = marshaler.MarshalToString(a) + if err != nil { + t.Errorf("an unexpected error occurred when marshalling Any to JSON: %v", err) + } + // same as expected above, but pretty-printed w/ indentation + 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) + } } func TestMarshalWithCustomValidation(t *testing.T) { diff --git a/vendor/github.com/golang/protobuf/proto/properties.go b/vendor/github.com/golang/protobuf/proto/properties.go index 79668ff5c5..a4b8c0cd3a 100644 --- a/vendor/github.com/golang/protobuf/proto/properties.go +++ b/vendor/github.com/golang/protobuf/proto/properties.go @@ -38,7 +38,6 @@ package proto import ( "fmt" "log" - "os" "reflect" "sort" "strconv" @@ -194,7 +193,7 @@ func (p *Properties) Parse(s string) { // "bytes,49,opt,name=foo,def=hello!" fields := strings.Split(s, ",") // breaks def=, but handled below. if len(fields) < 2 { - fmt.Fprintf(os.Stderr, "proto: tag has too few fields: %q\n", s) + log.Printf("proto: tag has too few fields: %q", s) return } @@ -214,7 +213,7 @@ func (p *Properties) Parse(s string) { p.WireType = WireBytes // no numeric converter for non-numeric types default: - fmt.Fprintf(os.Stderr, "proto: tag has unknown wire type: %q\n", s) + log.Printf("proto: tag has unknown wire type: %q", s) return } diff --git a/vendor/github.com/golang/protobuf/protoc-gen-go/grpc/grpc.go b/vendor/github.com/golang/protobuf/protoc-gen-go/grpc/grpc.go index 1ddfe836f4..5d1e3f0f61 100644 --- a/vendor/github.com/golang/protobuf/protoc-gen-go/grpc/grpc.go +++ b/vendor/github.com/golang/protobuf/protoc-gen-go/grpc/grpc.go @@ -54,6 +54,8 @@ const generatedCodeVersion = 4 const ( contextPkgPath = "context" grpcPkgPath = "google.golang.org/grpc" + codePkgPath = "google.golang.org/grpc/codes" + statusPkgPath = "google.golang.org/grpc/status" ) func init() { @@ -216,6 +218,12 @@ func (g *grpc) generateService(file *generator.FileDescriptor, service *pb.Servi g.P("}") g.P() + // Server Unimplemented struct for forward compatability. + if deprecated { + g.P(deprecationComment) + } + g.generateUnimplementedServer(servName, service) + // Server registration. if deprecated { g.P(deprecationComment) @@ -269,6 +277,35 @@ func (g *grpc) generateService(file *generator.FileDescriptor, service *pb.Servi g.P() } +// generateUnimplementedServer creates the unimplemented server struct +func (g *grpc) generateUnimplementedServer(servName string, service *pb.ServiceDescriptorProto) { + serverType := servName + "Server" + g.P("// Unimplemented", serverType, " can be embedded to have forward compatible implementations.") + g.P("type Unimplemented", serverType, " struct {") + g.P("}") + g.P() + // UnimplementedServer's concrete methods + for _, method := range service.Method { + g.generateServerMethodConcrete(servName, method) + } + g.P() +} + +// generateServerMethodConcrete returns unimplemented methods which ensure forward compatibility +func (g *grpc) generateServerMethodConcrete(servName string, method *pb.MethodDescriptorProto) { + header := g.generateServerSignatureWithParamNames(servName, method) + g.P("func (*Unimplemented", servName, "Server) ", header, " {") + var nilArg string + if !method.GetServerStreaming() && !method.GetClientStreaming() { + nilArg = "nil, " + } + methName := generator.CamelCase(method.GetName()) + statusPkg := string(g.gen.AddImport(statusPkgPath)) + codePkg := string(g.gen.AddImport(codePkgPath)) + g.P("return ", nilArg, statusPkg, `.Errorf(`, codePkg, `.Unimplemented, "method `, methName, ` not implemented")`) + g.P("}") +} + // generateClientSignature returns the client-side signature for a method. func (g *grpc) generateClientSignature(servName string, method *pb.MethodDescriptorProto) string { origMethName := method.GetName() @@ -368,6 +405,30 @@ func (g *grpc) generateClientMethod(servName, fullServName, serviceDescVar strin } } +// generateServerSignatureWithParamNames returns the server-side signature for a method with parameter names. +func (g *grpc) generateServerSignatureWithParamNames(servName string, method *pb.MethodDescriptorProto) string { + origMethName := method.GetName() + methName := generator.CamelCase(origMethName) + if reservedClientName[methName] { + methName += "_" + } + + var reqArgs []string + ret := "error" + if !method.GetServerStreaming() && !method.GetClientStreaming() { + reqArgs = append(reqArgs, "ctx "+contextPkg+".Context") + ret = "(*" + g.typeName(method.GetOutputType()) + ", error)" + } + if !method.GetClientStreaming() { + reqArgs = append(reqArgs, "req *"+g.typeName(method.GetInputType())) + } + if method.GetServerStreaming() || method.GetClientStreaming() { + reqArgs = append(reqArgs, "srv "+servName+"_"+generator.CamelCase(origMethName)+"Server") + } + + return methName + "(" + strings.Join(reqArgs, ", ") + ") " + ret +} + // generateServerSignature returns the server-side signature for a method. func (g *grpc) generateServerSignature(servName string, method *pb.MethodDescriptorProto) string { origMethName := method.GetName() diff --git a/vendor/github.com/golang/protobuf/protoc-gen-go/testdata/deprecated/deprecated.pb.go b/vendor/github.com/golang/protobuf/protoc-gen-go/testdata/deprecated/deprecated.pb.go index 5af4d22e2e..2515c99eb9 100644 --- a/vendor/github.com/golang/protobuf/protoc-gen-go/testdata/deprecated/deprecated.pb.go +++ b/vendor/github.com/golang/protobuf/protoc-gen-go/testdata/deprecated/deprecated.pb.go @@ -10,6 +10,8 @@ import ( fmt "fmt" proto "github.com/golang/protobuf/proto" grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" math "math" ) @@ -235,6 +237,15 @@ type DeprecatedServiceServer interface { DeprecatedCall(context.Context, *DeprecatedRequest) (*DeprecatedResponse, error) } +// Deprecated: Do not use. +// UnimplementedDeprecatedServiceServer can be embedded to have forward compatible implementations. +type UnimplementedDeprecatedServiceServer struct { +} + +func (*UnimplementedDeprecatedServiceServer) DeprecatedCall(ctx context.Context, req *DeprecatedRequest) (*DeprecatedResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method DeprecatedCall not implemented") +} + // Deprecated: Do not use. func RegisterDeprecatedServiceServer(s *grpc.Server, srv DeprecatedServiceServer) { s.RegisterService(&_DeprecatedService_serviceDesc, srv) diff --git a/vendor/github.com/golang/protobuf/protoc-gen-go/testdata/grpc/grpc.pb.go b/vendor/github.com/golang/protobuf/protoc-gen-go/testdata/grpc/grpc.pb.go index 98e4f40cd0..76c9a20a11 100644 --- a/vendor/github.com/golang/protobuf/protoc-gen-go/testdata/grpc/grpc.pb.go +++ b/vendor/github.com/golang/protobuf/protoc-gen-go/testdata/grpc/grpc.pb.go @@ -8,6 +8,8 @@ import ( fmt "fmt" proto "github.com/golang/protobuf/proto" grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" math "math" ) @@ -321,6 +323,23 @@ type TestServer interface { Bidi(Test_BidiServer) error } +// UnimplementedTestServer can be embedded to have forward compatible implementations. +type UnimplementedTestServer struct { +} + +func (*UnimplementedTestServer) UnaryCall(ctx context.Context, req *SimpleRequest) (*SimpleResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method UnaryCall not implemented") +} +func (*UnimplementedTestServer) Downstream(req *SimpleRequest, srv Test_DownstreamServer) error { + return status.Errorf(codes.Unimplemented, "method Downstream not implemented") +} +func (*UnimplementedTestServer) Upstream(srv Test_UpstreamServer) error { + return status.Errorf(codes.Unimplemented, "method Upstream not implemented") +} +func (*UnimplementedTestServer) Bidi(srv Test_BidiServer) error { + return status.Errorf(codes.Unimplemented, "method Bidi not implemented") +} + func RegisterTestServer(s *grpc.Server, srv TestServer) { s.RegisterService(&_Test_serviceDesc, srv) } diff --git a/vendor/github.com/golang/protobuf/protoc-gen-go/testdata/grpc/grpc_empty.pb.go b/vendor/github.com/golang/protobuf/protoc-gen-go/testdata/grpc/grpc_empty.pb.go new file mode 100644 index 0000000000..9c6244bc7a --- /dev/null +++ b/vendor/github.com/golang/protobuf/protoc-gen-go/testdata/grpc/grpc_empty.pb.go @@ -0,0 +1,79 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// source: grpc/grpc_empty.proto + +package testing + +import ( + context "context" + fmt "fmt" + proto "github.com/golang/protobuf/proto" + grpc "google.golang.org/grpc" + 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.ProtoPackageIsVersion3 // please upgrade the proto package + +func init() { proto.RegisterFile("grpc/grpc_empty.proto", fileDescriptor_c580a37f1c90e9b1) } + +var fileDescriptor_c580a37f1c90e9b1 = []byte{ + // 125 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x12, 0x4d, 0x2f, 0x2a, 0x48, + 0xd6, 0x07, 0x11, 0xf1, 0xa9, 0xb9, 0x05, 0x25, 0x95, 0x7a, 0x05, 0x45, 0xf9, 0x25, 0xf9, 0x42, + 0x3c, 0x20, 0x11, 0xbd, 0x92, 0xd4, 0xe2, 0x92, 0xcc, 0xbc, 0x74, 0x23, 0x3e, 0x2e, 0x1e, 0x57, + 0x90, 0x64, 0x70, 0x6a, 0x51, 0x59, 0x66, 0x72, 0xaa, 0x93, 0x43, 0x94, 0x5d, 0x7a, 0x66, 0x49, + 0x46, 0x69, 0x92, 0x5e, 0x72, 0x7e, 0xae, 0x7e, 0x7a, 0x7e, 0x4e, 0x62, 0x5e, 0xba, 0x3e, 0x58, + 0x63, 0x52, 0x69, 0x1a, 0x84, 0x91, 0xac, 0x9b, 0x9e, 0x9a, 0xa7, 0x9b, 0x9e, 0xaf, 0x0f, 0x32, + 0x23, 0x25, 0xb1, 0x24, 0x11, 0x6c, 0x87, 0x35, 0xd4, 0xc4, 0x24, 0x36, 0xb0, 0x22, 0x63, 0x40, + 0x00, 0x00, 0x00, 0xff, 0xff, 0x93, 0x1d, 0xf2, 0x47, 0x7f, 0x00, 0x00, 0x00, +} + +// Reference imports to suppress errors if they are not otherwise used. +var _ context.Context +var _ grpc.ClientConn + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +const _ = grpc.SupportPackageIsVersion4 + +// EmptyServiceClient is the client API for EmptyService service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. +type EmptyServiceClient interface { +} + +type emptyServiceClient struct { + cc *grpc.ClientConn +} + +func NewEmptyServiceClient(cc *grpc.ClientConn) EmptyServiceClient { + return &emptyServiceClient{cc} +} + +// EmptyServiceServer is the server API for EmptyService service. +type EmptyServiceServer interface { +} + +// UnimplementedEmptyServiceServer can be embedded to have forward compatible implementations. +type UnimplementedEmptyServiceServer struct { +} + +func RegisterEmptyServiceServer(s *grpc.Server, srv EmptyServiceServer) { + s.RegisterService(&_EmptyService_serviceDesc, srv) +} + +var _EmptyService_serviceDesc = grpc.ServiceDesc{ + ServiceName: "grpc.testing.EmptyService", + HandlerType: (*EmptyServiceServer)(nil), + Methods: []grpc.MethodDesc{}, + Streams: []grpc.StreamDesc{}, + Metadata: "grpc/grpc_empty.proto", +} diff --git a/vendor/github.com/golang/protobuf/protoc-gen-go/testdata/grpc/grpc_empty.proto b/vendor/github.com/golang/protobuf/protoc-gen-go/testdata/grpc/grpc_empty.proto new file mode 100644 index 0000000000..ae07b81caa --- /dev/null +++ b/vendor/github.com/golang/protobuf/protoc-gen-go/testdata/grpc/grpc_empty.proto @@ -0,0 +1,38 @@ +// Go support for Protocol Buffers - Google's data interchange format +// +// Copyright 2019 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. + +syntax = "proto3"; + +package grpc.testing; + +option go_package = "github.com/golang/protobuf/protoc-gen-go/testdata/grpc;testing"; + +service EmptyService {} diff --git a/vendor/github.com/googleapis/gnostic/.travis-install.sh b/vendor/github.com/googleapis/gnostic/.travis-install.sh index 83319ae4c2..285cff538f 100755 --- a/vendor/github.com/googleapis/gnostic/.travis-install.sh +++ b/vendor/github.com/googleapis/gnostic/.travis-install.sh @@ -13,12 +13,6 @@ cd mkdir -p local -# Install swift -SWIFT_URL=https://swift.org/builds/swift-4.0-branch/ubuntu1404/swift-4.0-DEVELOPMENT-SNAPSHOT-2017-09-01-a/swift-4.0-DEVELOPMENT-SNAPSHOT-2017-09-01-a-ubuntu14.04.tar.gz -echo $SWIFT_URL -curl -fSsL $SWIFT_URL -o swift.tar.gz -tar -xzf swift.tar.gz --strip-components=2 --directory=local - # Install protoc PROTOC_URL=https://github.com/google/protobuf/releases/download/v3.4.0/protoc-3.4.0-linux-x86_64.zip echo $PROTOC_URL diff --git a/vendor/github.com/googleapis/gnostic/.travis.yml b/vendor/github.com/googleapis/gnostic/.travis.yml index c3d2791fc5..27274c2c71 100644 --- a/vendor/github.com/googleapis/gnostic/.travis.yml +++ b/vendor/github.com/googleapis/gnostic/.travis.yml @@ -29,21 +29,3 @@ install: script: - go test . -v - - pushd plugins/gnostic-go-generator/examples/v2.0/bookstore - - make test - - popd - - pushd plugins/gnostic-go-generator/examples/v2.0/sample - - make test - - popd - - pushd plugins/gnostic-go-generator/examples/v3.0/bookstore - - make test - - popd - - export PATH=.:$HOME/local/bin:$PATH - - export LD_LIBRARY_PATH=$HOME/local/lib - - pushd plugins/gnostic-swift-generator - - make install - - cd examples/bookstore - - make - - .build/debug/Server & - - make test - diff --git a/vendor/github.com/googleapis/gnostic/Makefile b/vendor/github.com/googleapis/gnostic/Makefile index 8a772811ed..a5fe8f0a39 100644 --- a/vendor/github.com/googleapis/gnostic/Makefile +++ b/vendor/github.com/googleapis/gnostic/Makefile @@ -8,9 +8,5 @@ build: cd apps/petstore-builder; go get; go install cd plugins/gnostic-summary; go get; go install cd plugins/gnostic-analyze; go get; go install - cd plugins/gnostic-go-generator; go get; go install - rm -f $(GOPATH)/bin/gnostic-go-client $(GOPATH)/bin/gnostic-go-server - ln -s $(GOPATH)/bin/gnostic-go-generator $(GOPATH)/bin/gnostic-go-client - ln -s $(GOPATH)/bin/gnostic-go-generator $(GOPATH)/bin/gnostic-go-server cd extensions/sample; make diff --git a/vendor/github.com/googleapis/gnostic/OpenAPIv2/OpenAPIv2.go b/vendor/github.com/googleapis/gnostic/OpenAPIv2/OpenAPIv2.go index 5351f36f36..4fd44c45e2 100644 --- a/vendor/github.com/googleapis/gnostic/OpenAPIv2/OpenAPIv2.go +++ b/vendor/github.com/googleapis/gnostic/OpenAPIv2/OpenAPIv2.go @@ -7105,15 +7105,15 @@ func (m *Any) ToRawInfo() interface{} { // ToRawInfo returns a description of ApiKeySecurity suitable for JSON or YAML export. func (m *ApiKeySecurity) ToRawInfo() interface{} { info := yaml.MapSlice{} - if m.Type != "" { - info = append(info, yaml.MapItem{Key: "type", Value: m.Type}) - } - if m.Name != "" { - info = append(info, yaml.MapItem{Key: "name", Value: m.Name}) - } - if m.In != "" { - info = append(info, yaml.MapItem{Key: "in", Value: m.In}) + if m == nil { + return info } + // always include this required field. + info = append(info, yaml.MapItem{Key: "type", Value: m.Type}) + // always include this required field. + info = append(info, yaml.MapItem{Key: "name", Value: m.Name}) + // always include this required field. + info = append(info, yaml.MapItem{Key: "in", Value: m.In}) if m.Description != "" { info = append(info, yaml.MapItem{Key: "description", Value: m.Description}) } @@ -7129,9 +7129,11 @@ func (m *ApiKeySecurity) ToRawInfo() interface{} { // ToRawInfo returns a description of BasicAuthenticationSecurity suitable for JSON or YAML export. func (m *BasicAuthenticationSecurity) ToRawInfo() interface{} { info := yaml.MapSlice{} - if m.Type != "" { - info = append(info, yaml.MapItem{Key: "type", Value: m.Type}) + if m == nil { + return info } + // always include this required field. + info = append(info, yaml.MapItem{Key: "type", Value: m.Type}) if m.Description != "" { info = append(info, yaml.MapItem{Key: "description", Value: m.Description}) } @@ -7147,21 +7149,21 @@ func (m *BasicAuthenticationSecurity) ToRawInfo() interface{} { // ToRawInfo returns a description of BodyParameter suitable for JSON or YAML export. func (m *BodyParameter) ToRawInfo() interface{} { info := yaml.MapSlice{} + if m == nil { + return info + } if m.Description != "" { info = append(info, yaml.MapItem{Key: "description", Value: m.Description}) } - if m.Name != "" { - info = append(info, yaml.MapItem{Key: "name", Value: m.Name}) - } - if m.In != "" { - info = append(info, yaml.MapItem{Key: "in", Value: m.In}) - } + // always include this required field. + info = append(info, yaml.MapItem{Key: "name", Value: m.Name}) + // always include this required field. + info = append(info, yaml.MapItem{Key: "in", Value: m.In}) if m.Required != false { info = append(info, yaml.MapItem{Key: "required", Value: m.Required}) } - if m.Schema != nil { - info = append(info, yaml.MapItem{Key: "schema", Value: m.Schema.ToRawInfo()}) - } + // always include this required field. + info = append(info, yaml.MapItem{Key: "schema", Value: m.Schema.ToRawInfo()}) // &{Name:schema Type:Schema StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} if m.VendorExtension != nil { for _, item := range m.VendorExtension { @@ -7175,6 +7177,9 @@ func (m *BodyParameter) ToRawInfo() interface{} { // ToRawInfo returns a description of Contact suitable for JSON or YAML export. func (m *Contact) ToRawInfo() interface{} { info := yaml.MapSlice{} + if m == nil { + return info + } if m.Name != "" { info = append(info, yaml.MapItem{Key: "name", Value: m.Name}) } @@ -7196,6 +7201,9 @@ func (m *Contact) ToRawInfo() interface{} { // ToRawInfo returns a description of Default suitable for JSON or YAML export. func (m *Default) ToRawInfo() interface{} { info := yaml.MapSlice{} + if m == nil { + return info + } if m.AdditionalProperties != nil { for _, item := range m.AdditionalProperties { info = append(info, yaml.MapItem{Key: item.Name, Value: item.Value.ToRawInfo()}) @@ -7208,6 +7216,9 @@ func (m *Default) ToRawInfo() interface{} { // ToRawInfo returns a description of Definitions suitable for JSON or YAML export. func (m *Definitions) ToRawInfo() interface{} { info := yaml.MapSlice{} + if m == nil { + return info + } if m.AdditionalProperties != nil { for _, item := range m.AdditionalProperties { info = append(info, yaml.MapItem{Key: item.Name, Value: item.Value.ToRawInfo()}) @@ -7220,12 +7231,13 @@ func (m *Definitions) ToRawInfo() interface{} { // ToRawInfo returns a description of Document suitable for JSON or YAML export. func (m *Document) ToRawInfo() interface{} { info := yaml.MapSlice{} - if m.Swagger != "" { - info = append(info, yaml.MapItem{Key: "swagger", Value: m.Swagger}) - } - if m.Info != nil { - info = append(info, yaml.MapItem{Key: "info", Value: m.Info.ToRawInfo()}) + if m == nil { + return info } + // always include this required field. + info = append(info, yaml.MapItem{Key: "swagger", Value: m.Swagger}) + // always include this required field. + info = append(info, yaml.MapItem{Key: "info", Value: m.Info.ToRawInfo()}) // &{Name:info Type:Info StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} if m.Host != "" { info = append(info, yaml.MapItem{Key: "host", Value: m.Host}) @@ -7242,9 +7254,8 @@ func (m *Document) ToRawInfo() interface{} { if len(m.Produces) != 0 { info = append(info, yaml.MapItem{Key: "produces", Value: m.Produces}) } - if m.Paths != nil { - info = append(info, yaml.MapItem{Key: "paths", Value: m.Paths.ToRawInfo()}) - } + // always include this required field. + info = append(info, yaml.MapItem{Key: "paths", Value: m.Paths.ToRawInfo()}) // &{Name:paths Type:Paths StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} if m.Definitions != nil { info = append(info, yaml.MapItem{Key: "definitions", Value: m.Definitions.ToRawInfo()}) @@ -7294,6 +7305,9 @@ func (m *Document) ToRawInfo() interface{} { // ToRawInfo returns a description of Examples suitable for JSON or YAML export. func (m *Examples) ToRawInfo() interface{} { info := yaml.MapSlice{} + if m == nil { + return info + } if m.AdditionalProperties != nil { for _, item := range m.AdditionalProperties { info = append(info, yaml.MapItem{Key: item.Name, Value: item.Value.ToRawInfo()}) @@ -7306,12 +7320,14 @@ func (m *Examples) ToRawInfo() interface{} { // ToRawInfo returns a description of ExternalDocs suitable for JSON or YAML export. func (m *ExternalDocs) ToRawInfo() interface{} { info := yaml.MapSlice{} + if m == nil { + return info + } if m.Description != "" { info = append(info, yaml.MapItem{Key: "description", Value: m.Description}) } - if m.Url != "" { - info = append(info, yaml.MapItem{Key: "url", Value: m.Url}) - } + // always include this required field. + info = append(info, yaml.MapItem{Key: "url", Value: m.Url}) if m.VendorExtension != nil { for _, item := range m.VendorExtension { info = append(info, yaml.MapItem{Key: item.Name, Value: item.Value.ToRawInfo()}) @@ -7324,6 +7340,9 @@ func (m *ExternalDocs) ToRawInfo() interface{} { // ToRawInfo returns a description of FileSchema suitable for JSON or YAML export. func (m *FileSchema) ToRawInfo() interface{} { info := yaml.MapSlice{} + if m == nil { + return info + } if m.Format != "" { info = append(info, yaml.MapItem{Key: "format", Value: m.Format}) } @@ -7340,9 +7359,8 @@ func (m *FileSchema) ToRawInfo() interface{} { if len(m.Required) != 0 { info = append(info, yaml.MapItem{Key: "required", Value: m.Required}) } - if m.Type != "" { - info = append(info, yaml.MapItem{Key: "type", Value: m.Type}) - } + // always include this required field. + info = append(info, yaml.MapItem{Key: "type", Value: m.Type}) if m.ReadOnly != false { info = append(info, yaml.MapItem{Key: "readOnly", Value: m.ReadOnly}) } @@ -7366,6 +7384,9 @@ func (m *FileSchema) ToRawInfo() interface{} { // ToRawInfo returns a description of FormDataParameterSubSchema suitable for JSON or YAML export. func (m *FormDataParameterSubSchema) ToRawInfo() interface{} { info := yaml.MapSlice{} + if m == nil { + return info + } if m.Required != false { info = append(info, yaml.MapItem{Key: "required", Value: m.Required}) } @@ -7451,9 +7472,11 @@ func (m *FormDataParameterSubSchema) ToRawInfo() interface{} { // ToRawInfo returns a description of Header suitable for JSON or YAML export. func (m *Header) ToRawInfo() interface{} { info := yaml.MapSlice{} - if m.Type != "" { - info = append(info, yaml.MapItem{Key: "type", Value: m.Type}) + if m == nil { + return info } + // always include this required field. + info = append(info, yaml.MapItem{Key: "type", Value: m.Type}) if m.Format != "" { info = append(info, yaml.MapItem{Key: "format", Value: m.Format}) } @@ -7524,6 +7547,9 @@ func (m *Header) ToRawInfo() interface{} { // ToRawInfo returns a description of HeaderParameterSubSchema suitable for JSON or YAML export. func (m *HeaderParameterSubSchema) ToRawInfo() interface{} { info := yaml.MapSlice{} + if m == nil { + return info + } if m.Required != false { info = append(info, yaml.MapItem{Key: "required", Value: m.Required}) } @@ -7606,6 +7632,9 @@ func (m *HeaderParameterSubSchema) ToRawInfo() interface{} { // ToRawInfo returns a description of Headers suitable for JSON or YAML export. func (m *Headers) ToRawInfo() interface{} { info := yaml.MapSlice{} + if m == nil { + return info + } if m.AdditionalProperties != nil { for _, item := range m.AdditionalProperties { info = append(info, yaml.MapItem{Key: item.Name, Value: item.Value.ToRawInfo()}) @@ -7618,12 +7647,13 @@ func (m *Headers) ToRawInfo() interface{} { // ToRawInfo returns a description of Info suitable for JSON or YAML export. func (m *Info) ToRawInfo() interface{} { info := yaml.MapSlice{} - if m.Title != "" { - info = append(info, yaml.MapItem{Key: "title", Value: m.Title}) - } - if m.Version != "" { - info = append(info, yaml.MapItem{Key: "version", Value: m.Version}) + if m == nil { + return info } + // always include this required field. + info = append(info, yaml.MapItem{Key: "title", Value: m.Title}) + // always include this required field. + info = append(info, yaml.MapItem{Key: "version", Value: m.Version}) if m.Description != "" { info = append(info, yaml.MapItem{Key: "description", Value: m.Description}) } @@ -7650,6 +7680,9 @@ func (m *Info) ToRawInfo() interface{} { // ToRawInfo returns a description of ItemsItem suitable for JSON or YAML export. func (m *ItemsItem) ToRawInfo() interface{} { info := yaml.MapSlice{} + if m == nil { + return info + } if len(m.Schema) != 0 { items := make([]interface{}, 0) for _, item := range m.Schema { @@ -7664,9 +7697,11 @@ func (m *ItemsItem) ToRawInfo() interface{} { // ToRawInfo returns a description of JsonReference suitable for JSON or YAML export. func (m *JsonReference) ToRawInfo() interface{} { info := yaml.MapSlice{} - if m.XRef != "" { - info = append(info, yaml.MapItem{Key: "$ref", Value: m.XRef}) + if m == nil { + return info } + // always include this required field. + info = append(info, yaml.MapItem{Key: "$ref", Value: m.XRef}) if m.Description != "" { info = append(info, yaml.MapItem{Key: "description", Value: m.Description}) } @@ -7676,9 +7711,11 @@ func (m *JsonReference) ToRawInfo() interface{} { // ToRawInfo returns a description of License suitable for JSON or YAML export. func (m *License) ToRawInfo() interface{} { info := yaml.MapSlice{} - if m.Name != "" { - info = append(info, yaml.MapItem{Key: "name", Value: m.Name}) + if m == nil { + return info } + // always include this required field. + info = append(info, yaml.MapItem{Key: "name", Value: m.Name}) if m.Url != "" { info = append(info, yaml.MapItem{Key: "url", Value: m.Url}) } @@ -7694,6 +7731,9 @@ func (m *License) ToRawInfo() interface{} { // ToRawInfo returns a description of NamedAny suitable for JSON or YAML export. func (m *NamedAny) ToRawInfo() interface{} { info := yaml.MapSlice{} + if m == nil { + return info + } if m.Name != "" { info = append(info, yaml.MapItem{Key: "name", Value: m.Name}) } @@ -7704,6 +7744,9 @@ func (m *NamedAny) ToRawInfo() interface{} { // ToRawInfo returns a description of NamedHeader suitable for JSON or YAML export. func (m *NamedHeader) ToRawInfo() interface{} { info := yaml.MapSlice{} + if m == nil { + return info + } if m.Name != "" { info = append(info, yaml.MapItem{Key: "name", Value: m.Name}) } @@ -7714,6 +7757,9 @@ func (m *NamedHeader) ToRawInfo() interface{} { // ToRawInfo returns a description of NamedParameter suitable for JSON or YAML export. func (m *NamedParameter) ToRawInfo() interface{} { info := yaml.MapSlice{} + if m == nil { + return info + } if m.Name != "" { info = append(info, yaml.MapItem{Key: "name", Value: m.Name}) } @@ -7724,6 +7770,9 @@ func (m *NamedParameter) ToRawInfo() interface{} { // ToRawInfo returns a description of NamedPathItem suitable for JSON or YAML export. func (m *NamedPathItem) ToRawInfo() interface{} { info := yaml.MapSlice{} + if m == nil { + return info + } if m.Name != "" { info = append(info, yaml.MapItem{Key: "name", Value: m.Name}) } @@ -7734,6 +7783,9 @@ func (m *NamedPathItem) ToRawInfo() interface{} { // ToRawInfo returns a description of NamedResponse suitable for JSON or YAML export. func (m *NamedResponse) ToRawInfo() interface{} { info := yaml.MapSlice{} + if m == nil { + return info + } if m.Name != "" { info = append(info, yaml.MapItem{Key: "name", Value: m.Name}) } @@ -7744,6 +7796,9 @@ func (m *NamedResponse) ToRawInfo() interface{} { // ToRawInfo returns a description of NamedResponseValue suitable for JSON or YAML export. func (m *NamedResponseValue) ToRawInfo() interface{} { info := yaml.MapSlice{} + if m == nil { + return info + } if m.Name != "" { info = append(info, yaml.MapItem{Key: "name", Value: m.Name}) } @@ -7754,6 +7809,9 @@ func (m *NamedResponseValue) ToRawInfo() interface{} { // ToRawInfo returns a description of NamedSchema suitable for JSON or YAML export. func (m *NamedSchema) ToRawInfo() interface{} { info := yaml.MapSlice{} + if m == nil { + return info + } if m.Name != "" { info = append(info, yaml.MapItem{Key: "name", Value: m.Name}) } @@ -7764,6 +7822,9 @@ func (m *NamedSchema) ToRawInfo() interface{} { // ToRawInfo returns a description of NamedSecurityDefinitionsItem suitable for JSON or YAML export. func (m *NamedSecurityDefinitionsItem) ToRawInfo() interface{} { info := yaml.MapSlice{} + if m == nil { + return info + } if m.Name != "" { info = append(info, yaml.MapItem{Key: "name", Value: m.Name}) } @@ -7774,6 +7835,9 @@ func (m *NamedSecurityDefinitionsItem) ToRawInfo() interface{} { // ToRawInfo returns a description of NamedString suitable for JSON or YAML export. func (m *NamedString) ToRawInfo() interface{} { info := yaml.MapSlice{} + if m == nil { + return info + } if m.Name != "" { info = append(info, yaml.MapItem{Key: "name", Value: m.Name}) } @@ -7786,6 +7850,9 @@ func (m *NamedString) ToRawInfo() interface{} { // ToRawInfo returns a description of NamedStringArray suitable for JSON or YAML export. func (m *NamedStringArray) ToRawInfo() interface{} { info := yaml.MapSlice{} + if m == nil { + return info + } if m.Name != "" { info = append(info, yaml.MapItem{Key: "name", Value: m.Name}) } @@ -7823,22 +7890,21 @@ func (m *NonBodyParameter) ToRawInfo() interface{} { // ToRawInfo returns a description of Oauth2AccessCodeSecurity suitable for JSON or YAML export. func (m *Oauth2AccessCodeSecurity) ToRawInfo() interface{} { info := yaml.MapSlice{} - if m.Type != "" { - info = append(info, yaml.MapItem{Key: "type", Value: m.Type}) - } - if m.Flow != "" { - info = append(info, yaml.MapItem{Key: "flow", Value: m.Flow}) + if m == nil { + return info } + // always include this required field. + info = append(info, yaml.MapItem{Key: "type", Value: m.Type}) + // always include this required field. + info = append(info, yaml.MapItem{Key: "flow", Value: m.Flow}) if m.Scopes != nil { info = append(info, yaml.MapItem{Key: "scopes", Value: m.Scopes.ToRawInfo()}) } // &{Name:scopes Type:Oauth2Scopes StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} - if m.AuthorizationUrl != "" { - info = append(info, yaml.MapItem{Key: "authorizationUrl", Value: m.AuthorizationUrl}) - } - if m.TokenUrl != "" { - info = append(info, yaml.MapItem{Key: "tokenUrl", Value: m.TokenUrl}) - } + // always include this required field. + info = append(info, yaml.MapItem{Key: "authorizationUrl", Value: m.AuthorizationUrl}) + // always include this required field. + info = append(info, yaml.MapItem{Key: "tokenUrl", Value: m.TokenUrl}) if m.Description != "" { info = append(info, yaml.MapItem{Key: "description", Value: m.Description}) } @@ -7854,19 +7920,19 @@ func (m *Oauth2AccessCodeSecurity) ToRawInfo() interface{} { // ToRawInfo returns a description of Oauth2ApplicationSecurity suitable for JSON or YAML export. func (m *Oauth2ApplicationSecurity) ToRawInfo() interface{} { info := yaml.MapSlice{} - if m.Type != "" { - info = append(info, yaml.MapItem{Key: "type", Value: m.Type}) - } - if m.Flow != "" { - info = append(info, yaml.MapItem{Key: "flow", Value: m.Flow}) + if m == nil { + return info } + // always include this required field. + info = append(info, yaml.MapItem{Key: "type", Value: m.Type}) + // always include this required field. + info = append(info, yaml.MapItem{Key: "flow", Value: m.Flow}) if m.Scopes != nil { info = append(info, yaml.MapItem{Key: "scopes", Value: m.Scopes.ToRawInfo()}) } // &{Name:scopes Type:Oauth2Scopes StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} - if m.TokenUrl != "" { - info = append(info, yaml.MapItem{Key: "tokenUrl", Value: m.TokenUrl}) - } + // always include this required field. + info = append(info, yaml.MapItem{Key: "tokenUrl", Value: m.TokenUrl}) if m.Description != "" { info = append(info, yaml.MapItem{Key: "description", Value: m.Description}) } @@ -7882,19 +7948,19 @@ func (m *Oauth2ApplicationSecurity) ToRawInfo() interface{} { // ToRawInfo returns a description of Oauth2ImplicitSecurity suitable for JSON or YAML export. func (m *Oauth2ImplicitSecurity) ToRawInfo() interface{} { info := yaml.MapSlice{} - if m.Type != "" { - info = append(info, yaml.MapItem{Key: "type", Value: m.Type}) - } - if m.Flow != "" { - info = append(info, yaml.MapItem{Key: "flow", Value: m.Flow}) + if m == nil { + return info } + // always include this required field. + info = append(info, yaml.MapItem{Key: "type", Value: m.Type}) + // always include this required field. + info = append(info, yaml.MapItem{Key: "flow", Value: m.Flow}) if m.Scopes != nil { info = append(info, yaml.MapItem{Key: "scopes", Value: m.Scopes.ToRawInfo()}) } // &{Name:scopes Type:Oauth2Scopes StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} - if m.AuthorizationUrl != "" { - info = append(info, yaml.MapItem{Key: "authorizationUrl", Value: m.AuthorizationUrl}) - } + // always include this required field. + info = append(info, yaml.MapItem{Key: "authorizationUrl", Value: m.AuthorizationUrl}) if m.Description != "" { info = append(info, yaml.MapItem{Key: "description", Value: m.Description}) } @@ -7910,19 +7976,19 @@ func (m *Oauth2ImplicitSecurity) ToRawInfo() interface{} { // ToRawInfo returns a description of Oauth2PasswordSecurity suitable for JSON or YAML export. func (m *Oauth2PasswordSecurity) ToRawInfo() interface{} { info := yaml.MapSlice{} - if m.Type != "" { - info = append(info, yaml.MapItem{Key: "type", Value: m.Type}) - } - if m.Flow != "" { - info = append(info, yaml.MapItem{Key: "flow", Value: m.Flow}) + if m == nil { + return info } + // always include this required field. + info = append(info, yaml.MapItem{Key: "type", Value: m.Type}) + // always include this required field. + info = append(info, yaml.MapItem{Key: "flow", Value: m.Flow}) if m.Scopes != nil { info = append(info, yaml.MapItem{Key: "scopes", Value: m.Scopes.ToRawInfo()}) } // &{Name:scopes Type:Oauth2Scopes StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} - if m.TokenUrl != "" { - info = append(info, yaml.MapItem{Key: "tokenUrl", Value: m.TokenUrl}) - } + // always include this required field. + info = append(info, yaml.MapItem{Key: "tokenUrl", Value: m.TokenUrl}) if m.Description != "" { info = append(info, yaml.MapItem{Key: "description", Value: m.Description}) } @@ -7938,6 +8004,9 @@ func (m *Oauth2PasswordSecurity) ToRawInfo() interface{} { // ToRawInfo returns a description of Oauth2Scopes suitable for JSON or YAML export. func (m *Oauth2Scopes) ToRawInfo() interface{} { info := yaml.MapSlice{} + if m == nil { + return info + } // &{Name:additionalProperties Type:NamedString StringEnumValues:[] MapType:string Repeated:true Pattern: Implicit:true Description:} return info } @@ -7945,6 +8014,9 @@ func (m *Oauth2Scopes) ToRawInfo() interface{} { // ToRawInfo returns a description of Operation suitable for JSON or YAML export. func (m *Operation) ToRawInfo() interface{} { info := yaml.MapSlice{} + if m == nil { + return info + } if len(m.Tags) != 0 { info = append(info, yaml.MapItem{Key: "tags", Value: m.Tags}) } @@ -7975,9 +8047,8 @@ func (m *Operation) ToRawInfo() interface{} { info = append(info, yaml.MapItem{Key: "parameters", Value: items}) } // &{Name:parameters Type:ParametersItem StringEnumValues:[] MapType: Repeated:true Pattern: Implicit:false Description:The parameters needed to send a valid API call.} - if m.Responses != nil { - info = append(info, yaml.MapItem{Key: "responses", Value: m.Responses.ToRawInfo()}) - } + // always include this required field. + info = append(info, yaml.MapItem{Key: "responses", Value: m.Responses.ToRawInfo()}) // &{Name:responses Type:Responses StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} if len(m.Schemes) != 0 { info = append(info, yaml.MapItem{Key: "schemes", Value: m.Schemes}) @@ -8022,6 +8093,9 @@ func (m *Parameter) ToRawInfo() interface{} { // ToRawInfo returns a description of ParameterDefinitions suitable for JSON or YAML export. func (m *ParameterDefinitions) ToRawInfo() interface{} { info := yaml.MapSlice{} + if m == nil { + return info + } if m.AdditionalProperties != nil { for _, item := range m.AdditionalProperties { info = append(info, yaml.MapItem{Key: item.Name, Value: item.Value.ToRawInfo()}) @@ -8051,6 +8125,9 @@ func (m *ParametersItem) ToRawInfo() interface{} { // ToRawInfo returns a description of PathItem suitable for JSON or YAML export. func (m *PathItem) ToRawInfo() interface{} { info := yaml.MapSlice{} + if m == nil { + return info + } if m.XRef != "" { info = append(info, yaml.MapItem{Key: "$ref", Value: m.XRef}) } @@ -8102,9 +8179,11 @@ func (m *PathItem) ToRawInfo() interface{} { // ToRawInfo returns a description of PathParameterSubSchema suitable for JSON or YAML export. func (m *PathParameterSubSchema) ToRawInfo() interface{} { info := yaml.MapSlice{} - if m.Required != false { - info = append(info, yaml.MapItem{Key: "required", Value: m.Required}) + if m == nil { + return info } + // always include this required field. + info = append(info, yaml.MapItem{Key: "required", Value: m.Required}) if m.In != "" { info = append(info, yaml.MapItem{Key: "in", Value: m.In}) } @@ -8184,6 +8263,9 @@ func (m *PathParameterSubSchema) ToRawInfo() interface{} { // ToRawInfo returns a description of Paths suitable for JSON or YAML export. func (m *Paths) ToRawInfo() interface{} { info := yaml.MapSlice{} + if m == nil { + return info + } if m.VendorExtension != nil { for _, item := range m.VendorExtension { info = append(info, yaml.MapItem{Key: item.Name, Value: item.Value.ToRawInfo()}) @@ -8202,6 +8284,9 @@ func (m *Paths) ToRawInfo() interface{} { // ToRawInfo returns a description of PrimitivesItems suitable for JSON or YAML export. func (m *PrimitivesItems) ToRawInfo() interface{} { info := yaml.MapSlice{} + if m == nil { + return info + } if m.Type != "" { info = append(info, yaml.MapItem{Key: "type", Value: m.Type}) } @@ -8272,6 +8357,9 @@ func (m *PrimitivesItems) ToRawInfo() interface{} { // ToRawInfo returns a description of Properties suitable for JSON or YAML export. func (m *Properties) ToRawInfo() interface{} { info := yaml.MapSlice{} + if m == nil { + return info + } if m.AdditionalProperties != nil { for _, item := range m.AdditionalProperties { info = append(info, yaml.MapItem{Key: item.Name, Value: item.Value.ToRawInfo()}) @@ -8284,6 +8372,9 @@ func (m *Properties) ToRawInfo() interface{} { // ToRawInfo returns a description of QueryParameterSubSchema suitable for JSON or YAML export. func (m *QueryParameterSubSchema) ToRawInfo() interface{} { info := yaml.MapSlice{} + if m == nil { + return info + } if m.Required != false { info = append(info, yaml.MapItem{Key: "required", Value: m.Required}) } @@ -8369,9 +8460,11 @@ func (m *QueryParameterSubSchema) ToRawInfo() interface{} { // ToRawInfo returns a description of Response suitable for JSON or YAML export. func (m *Response) ToRawInfo() interface{} { info := yaml.MapSlice{} - if m.Description != "" { - info = append(info, yaml.MapItem{Key: "description", Value: m.Description}) + if m == nil { + return info } + // always include this required field. + info = append(info, yaml.MapItem{Key: "description", Value: m.Description}) if m.Schema != nil { info = append(info, yaml.MapItem{Key: "schema", Value: m.Schema.ToRawInfo()}) } @@ -8396,6 +8489,9 @@ func (m *Response) ToRawInfo() interface{} { // ToRawInfo returns a description of ResponseDefinitions suitable for JSON or YAML export. func (m *ResponseDefinitions) ToRawInfo() interface{} { info := yaml.MapSlice{} + if m == nil { + return info + } if m.AdditionalProperties != nil { for _, item := range m.AdditionalProperties { info = append(info, yaml.MapItem{Key: item.Name, Value: item.Value.ToRawInfo()}) @@ -8425,6 +8521,9 @@ func (m *ResponseValue) ToRawInfo() interface{} { // ToRawInfo returns a description of Responses suitable for JSON or YAML export. func (m *Responses) ToRawInfo() interface{} { info := yaml.MapSlice{} + if m == nil { + return info + } if m.ResponseCode != nil { for _, item := range m.ResponseCode { info = append(info, yaml.MapItem{Key: item.Name, Value: item.Value.ToRawInfo()}) @@ -8443,6 +8542,9 @@ func (m *Responses) ToRawInfo() interface{} { // ToRawInfo returns a description of Schema suitable for JSON or YAML export. func (m *Schema) ToRawInfo() interface{} { info := yaml.MapSlice{} + if m == nil { + return info + } if m.XRef != "" { info = append(info, yaml.MapItem{Key: "$ref", Value: m.XRef}) } @@ -8588,6 +8690,9 @@ func (m *SchemaItem) ToRawInfo() interface{} { // ToRawInfo returns a description of SecurityDefinitions suitable for JSON or YAML export. func (m *SecurityDefinitions) ToRawInfo() interface{} { info := yaml.MapSlice{} + if m == nil { + return info + } if m.AdditionalProperties != nil { for _, item := range m.AdditionalProperties { info = append(info, yaml.MapItem{Key: item.Name, Value: item.Value.ToRawInfo()}) @@ -8637,6 +8742,9 @@ func (m *SecurityDefinitionsItem) ToRawInfo() interface{} { // ToRawInfo returns a description of SecurityRequirement suitable for JSON or YAML export. func (m *SecurityRequirement) ToRawInfo() interface{} { info := yaml.MapSlice{} + if m == nil { + return info + } if m.AdditionalProperties != nil { for _, item := range m.AdditionalProperties { info = append(info, yaml.MapItem{Key: item.Name, Value: item.Value.ToRawInfo()}) @@ -8654,9 +8762,11 @@ func (m *StringArray) ToRawInfo() interface{} { // ToRawInfo returns a description of Tag suitable for JSON or YAML export. func (m *Tag) ToRawInfo() interface{} { info := yaml.MapSlice{} - if m.Name != "" { - info = append(info, yaml.MapItem{Key: "name", Value: m.Name}) + if m == nil { + return info } + // always include this required field. + info = append(info, yaml.MapItem{Key: "name", Value: m.Name}) if m.Description != "" { info = append(info, yaml.MapItem{Key: "description", Value: m.Description}) } @@ -8676,6 +8786,9 @@ func (m *Tag) ToRawInfo() interface{} { // ToRawInfo returns a description of TypeItem suitable for JSON or YAML export. func (m *TypeItem) ToRawInfo() interface{} { info := yaml.MapSlice{} + if m == nil { + return info + } if len(m.Value) != 0 { info = append(info, yaml.MapItem{Key: "value", Value: m.Value}) } @@ -8685,6 +8798,9 @@ func (m *TypeItem) ToRawInfo() interface{} { // ToRawInfo returns a description of VendorExtension suitable for JSON or YAML export. func (m *VendorExtension) ToRawInfo() interface{} { info := yaml.MapSlice{} + if m == nil { + return info + } if m.AdditionalProperties != nil { for _, item := range m.AdditionalProperties { info = append(info, yaml.MapItem{Key: item.Name, Value: item.Value.ToRawInfo()}) @@ -8697,6 +8813,9 @@ func (m *VendorExtension) ToRawInfo() interface{} { // ToRawInfo returns a description of Xml suitable for JSON or YAML export. func (m *Xml) ToRawInfo() interface{} { info := yaml.MapSlice{} + if m == nil { + return info + } if m.Name != "" { info = append(info, yaml.MapItem{Key: "name", Value: m.Name}) } diff --git a/vendor/github.com/googleapis/gnostic/OpenAPIv3/OpenAPIv3.go b/vendor/github.com/googleapis/gnostic/OpenAPIv3/OpenAPIv3.go index 5c8ed9c3ed..2dbbf0054d 100644 --- a/vendor/github.com/googleapis/gnostic/OpenAPIv3/OpenAPIv3.go +++ b/vendor/github.com/googleapis/gnostic/OpenAPIv3/OpenAPIv3.go @@ -6714,6 +6714,9 @@ func (m *AnyOrExpression) ToRawInfo() interface{} { // ToRawInfo returns a description of AnysOrExpressions suitable for JSON or YAML export. func (m *AnysOrExpressions) ToRawInfo() interface{} { info := yaml.MapSlice{} + if m == nil { + return info + } if m.AdditionalProperties != nil { for _, item := range m.AdditionalProperties { info = append(info, yaml.MapItem{Key: item.Name, Value: item.Value.ToRawInfo()}) @@ -6726,6 +6729,9 @@ func (m *AnysOrExpressions) ToRawInfo() interface{} { // ToRawInfo returns a description of Callback suitable for JSON or YAML export. func (m *Callback) ToRawInfo() interface{} { info := yaml.MapSlice{} + if m == nil { + return info + } if m.Path != nil { for _, item := range m.Path { info = append(info, yaml.MapItem{Key: item.Name, Value: item.Value.ToRawInfo()}) @@ -6761,6 +6767,9 @@ func (m *CallbackOrReference) ToRawInfo() interface{} { // ToRawInfo returns a description of CallbacksOrReferences suitable for JSON or YAML export. func (m *CallbacksOrReferences) ToRawInfo() interface{} { info := yaml.MapSlice{} + if m == nil { + return info + } if m.AdditionalProperties != nil { for _, item := range m.AdditionalProperties { info = append(info, yaml.MapItem{Key: item.Name, Value: item.Value.ToRawInfo()}) @@ -6773,6 +6782,9 @@ func (m *CallbacksOrReferences) ToRawInfo() interface{} { // ToRawInfo returns a description of Components suitable for JSON or YAML export. func (m *Components) ToRawInfo() interface{} { info := yaml.MapSlice{} + if m == nil { + return info + } if m.Schemas != nil { info = append(info, yaml.MapItem{Key: "schemas", Value: m.Schemas.ToRawInfo()}) } @@ -6821,6 +6833,9 @@ func (m *Components) ToRawInfo() interface{} { // ToRawInfo returns a description of Contact suitable for JSON or YAML export. func (m *Contact) ToRawInfo() interface{} { info := yaml.MapSlice{} + if m == nil { + return info + } if m.Name != "" { info = append(info, yaml.MapItem{Key: "name", Value: m.Name}) } @@ -6861,9 +6876,11 @@ func (m *DefaultType) ToRawInfo() interface{} { // ToRawInfo returns a description of Discriminator suitable for JSON or YAML export. func (m *Discriminator) ToRawInfo() interface{} { info := yaml.MapSlice{} - if m.PropertyName != "" { - info = append(info, yaml.MapItem{Key: "propertyName", Value: m.PropertyName}) + if m == nil { + return info } + // always include this required field. + info = append(info, yaml.MapItem{Key: "propertyName", Value: m.PropertyName}) if m.Mapping != nil { info = append(info, yaml.MapItem{Key: "mapping", Value: m.Mapping.ToRawInfo()}) } @@ -6874,12 +6891,13 @@ func (m *Discriminator) ToRawInfo() interface{} { // ToRawInfo returns a description of Document suitable for JSON or YAML export. func (m *Document) ToRawInfo() interface{} { info := yaml.MapSlice{} - if m.Openapi != "" { - info = append(info, yaml.MapItem{Key: "openapi", Value: m.Openapi}) - } - if m.Info != nil { - info = append(info, yaml.MapItem{Key: "info", Value: m.Info.ToRawInfo()}) + if m == nil { + return info } + // always include this required field. + info = append(info, yaml.MapItem{Key: "openapi", Value: m.Openapi}) + // always include this required field. + info = append(info, yaml.MapItem{Key: "info", Value: m.Info.ToRawInfo()}) // &{Name:info Type:Info StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} if len(m.Servers) != 0 { items := make([]interface{}, 0) @@ -6889,9 +6907,8 @@ func (m *Document) ToRawInfo() interface{} { info = append(info, yaml.MapItem{Key: "servers", Value: items}) } // &{Name:servers Type:Server StringEnumValues:[] MapType: Repeated:true Pattern: Implicit:false Description:} - if m.Paths != nil { - info = append(info, yaml.MapItem{Key: "paths", Value: m.Paths.ToRawInfo()}) - } + // always include this required field. + info = append(info, yaml.MapItem{Key: "paths", Value: m.Paths.ToRawInfo()}) // &{Name:paths Type:Paths StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} if m.Components != nil { info = append(info, yaml.MapItem{Key: "components", Value: m.Components.ToRawInfo()}) @@ -6929,6 +6946,9 @@ func (m *Document) ToRawInfo() interface{} { // ToRawInfo returns a description of Encoding suitable for JSON or YAML export. func (m *Encoding) ToRawInfo() interface{} { info := yaml.MapSlice{} + if m == nil { + return info + } if m.ContentType != "" { info = append(info, yaml.MapItem{Key: "contentType", Value: m.ContentType}) } @@ -6957,6 +6977,9 @@ func (m *Encoding) ToRawInfo() interface{} { // ToRawInfo returns a description of Encodings suitable for JSON or YAML export. func (m *Encodings) ToRawInfo() interface{} { info := yaml.MapSlice{} + if m == nil { + return info + } if m.AdditionalProperties != nil { for _, item := range m.AdditionalProperties { info = append(info, yaml.MapItem{Key: item.Name, Value: item.Value.ToRawInfo()}) @@ -6969,6 +6992,9 @@ func (m *Encodings) ToRawInfo() interface{} { // ToRawInfo returns a description of Example suitable for JSON or YAML export. func (m *Example) ToRawInfo() interface{} { info := yaml.MapSlice{} + if m == nil { + return info + } if m.Summary != "" { info = append(info, yaml.MapItem{Key: "summary", Value: m.Summary}) } @@ -7008,6 +7034,9 @@ func (m *ExampleOrReference) ToRawInfo() interface{} { // ToRawInfo returns a description of ExamplesOrReferences suitable for JSON or YAML export. func (m *ExamplesOrReferences) ToRawInfo() interface{} { info := yaml.MapSlice{} + if m == nil { + return info + } if m.AdditionalProperties != nil { for _, item := range m.AdditionalProperties { info = append(info, yaml.MapItem{Key: item.Name, Value: item.Value.ToRawInfo()}) @@ -7020,6 +7049,9 @@ func (m *ExamplesOrReferences) ToRawInfo() interface{} { // ToRawInfo returns a description of Expression suitable for JSON or YAML export. func (m *Expression) ToRawInfo() interface{} { info := yaml.MapSlice{} + if m == nil { + return info + } if m.AdditionalProperties != nil { for _, item := range m.AdditionalProperties { info = append(info, yaml.MapItem{Key: item.Name, Value: item.Value.ToRawInfo()}) @@ -7032,12 +7064,14 @@ func (m *Expression) ToRawInfo() interface{} { // ToRawInfo returns a description of ExternalDocs suitable for JSON or YAML export. func (m *ExternalDocs) ToRawInfo() interface{} { info := yaml.MapSlice{} + if m == nil { + return info + } if m.Description != "" { info = append(info, yaml.MapItem{Key: "description", Value: m.Description}) } - if m.Url != "" { - info = append(info, yaml.MapItem{Key: "url", Value: m.Url}) - } + // always include this required field. + info = append(info, yaml.MapItem{Key: "url", Value: m.Url}) if m.SpecificationExtension != nil { for _, item := range m.SpecificationExtension { info = append(info, yaml.MapItem{Key: item.Name, Value: item.Value.ToRawInfo()}) @@ -7050,6 +7084,9 @@ func (m *ExternalDocs) ToRawInfo() interface{} { // ToRawInfo returns a description of Header suitable for JSON or YAML export. func (m *Header) ToRawInfo() interface{} { info := yaml.MapSlice{} + if m == nil { + return info + } if m.Description != "" { info = append(info, yaml.MapItem{Key: "description", Value: m.Description}) } @@ -7116,6 +7153,9 @@ func (m *HeaderOrReference) ToRawInfo() interface{} { // ToRawInfo returns a description of HeadersOrReferences suitable for JSON or YAML export. func (m *HeadersOrReferences) ToRawInfo() interface{} { info := yaml.MapSlice{} + if m == nil { + return info + } if m.AdditionalProperties != nil { for _, item := range m.AdditionalProperties { info = append(info, yaml.MapItem{Key: item.Name, Value: item.Value.ToRawInfo()}) @@ -7128,9 +7168,11 @@ func (m *HeadersOrReferences) ToRawInfo() interface{} { // ToRawInfo returns a description of Info suitable for JSON or YAML export. func (m *Info) ToRawInfo() interface{} { info := yaml.MapSlice{} - if m.Title != "" { - info = append(info, yaml.MapItem{Key: "title", Value: m.Title}) + if m == nil { + return info } + // always include this required field. + info = append(info, yaml.MapItem{Key: "title", Value: m.Title}) if m.Description != "" { info = append(info, yaml.MapItem{Key: "description", Value: m.Description}) } @@ -7145,9 +7187,8 @@ func (m *Info) ToRawInfo() interface{} { info = append(info, yaml.MapItem{Key: "license", Value: m.License.ToRawInfo()}) } // &{Name:license Type:License StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} - if m.Version != "" { - info = append(info, yaml.MapItem{Key: "version", Value: m.Version}) - } + // always include this required field. + info = append(info, yaml.MapItem{Key: "version", Value: m.Version}) if m.SpecificationExtension != nil { for _, item := range m.SpecificationExtension { info = append(info, yaml.MapItem{Key: item.Name, Value: item.Value.ToRawInfo()}) @@ -7160,6 +7201,9 @@ func (m *Info) ToRawInfo() interface{} { // ToRawInfo returns a description of ItemsItem suitable for JSON or YAML export. func (m *ItemsItem) ToRawInfo() interface{} { info := yaml.MapSlice{} + if m == nil { + return info + } if len(m.SchemaOrReference) != 0 { items := make([]interface{}, 0) for _, item := range m.SchemaOrReference { @@ -7174,9 +7218,11 @@ func (m *ItemsItem) ToRawInfo() interface{} { // ToRawInfo returns a description of License suitable for JSON or YAML export. func (m *License) ToRawInfo() interface{} { info := yaml.MapSlice{} - if m.Name != "" { - info = append(info, yaml.MapItem{Key: "name", Value: m.Name}) + if m == nil { + return info } + // always include this required field. + info = append(info, yaml.MapItem{Key: "name", Value: m.Name}) if m.Url != "" { info = append(info, yaml.MapItem{Key: "url", Value: m.Url}) } @@ -7192,6 +7238,9 @@ func (m *License) ToRawInfo() interface{} { // ToRawInfo returns a description of Link suitable for JSON or YAML export. func (m *Link) ToRawInfo() interface{} { info := yaml.MapSlice{} + if m == nil { + return info + } if m.OperationRef != "" { info = append(info, yaml.MapItem{Key: "operationRef", Value: m.OperationRef}) } @@ -7242,6 +7291,9 @@ func (m *LinkOrReference) ToRawInfo() interface{} { // ToRawInfo returns a description of LinksOrReferences suitable for JSON or YAML export. func (m *LinksOrReferences) ToRawInfo() interface{} { info := yaml.MapSlice{} + if m == nil { + return info + } if m.AdditionalProperties != nil { for _, item := range m.AdditionalProperties { info = append(info, yaml.MapItem{Key: item.Name, Value: item.Value.ToRawInfo()}) @@ -7254,6 +7306,9 @@ func (m *LinksOrReferences) ToRawInfo() interface{} { // ToRawInfo returns a description of MediaType suitable for JSON or YAML export. func (m *MediaType) ToRawInfo() interface{} { info := yaml.MapSlice{} + if m == nil { + return info + } if m.Schema != nil { info = append(info, yaml.MapItem{Key: "schema", Value: m.Schema.ToRawInfo()}) } @@ -7282,6 +7337,9 @@ func (m *MediaType) ToRawInfo() interface{} { // ToRawInfo returns a description of MediaTypes suitable for JSON or YAML export. func (m *MediaTypes) ToRawInfo() interface{} { info := yaml.MapSlice{} + if m == nil { + return info + } if m.AdditionalProperties != nil { for _, item := range m.AdditionalProperties { info = append(info, yaml.MapItem{Key: item.Name, Value: item.Value.ToRawInfo()}) @@ -7294,6 +7352,9 @@ func (m *MediaTypes) ToRawInfo() interface{} { // ToRawInfo returns a description of NamedAny suitable for JSON or YAML export. func (m *NamedAny) ToRawInfo() interface{} { info := yaml.MapSlice{} + if m == nil { + return info + } if m.Name != "" { info = append(info, yaml.MapItem{Key: "name", Value: m.Name}) } @@ -7304,6 +7365,9 @@ func (m *NamedAny) ToRawInfo() interface{} { // ToRawInfo returns a description of NamedAnyOrExpression suitable for JSON or YAML export. func (m *NamedAnyOrExpression) ToRawInfo() interface{} { info := yaml.MapSlice{} + if m == nil { + return info + } if m.Name != "" { info = append(info, yaml.MapItem{Key: "name", Value: m.Name}) } @@ -7314,6 +7378,9 @@ func (m *NamedAnyOrExpression) ToRawInfo() interface{} { // ToRawInfo returns a description of NamedCallbackOrReference suitable for JSON or YAML export. func (m *NamedCallbackOrReference) ToRawInfo() interface{} { info := yaml.MapSlice{} + if m == nil { + return info + } if m.Name != "" { info = append(info, yaml.MapItem{Key: "name", Value: m.Name}) } @@ -7324,6 +7391,9 @@ func (m *NamedCallbackOrReference) ToRawInfo() interface{} { // ToRawInfo returns a description of NamedEncoding suitable for JSON or YAML export. func (m *NamedEncoding) ToRawInfo() interface{} { info := yaml.MapSlice{} + if m == nil { + return info + } if m.Name != "" { info = append(info, yaml.MapItem{Key: "name", Value: m.Name}) } @@ -7334,6 +7404,9 @@ func (m *NamedEncoding) ToRawInfo() interface{} { // ToRawInfo returns a description of NamedExampleOrReference suitable for JSON or YAML export. func (m *NamedExampleOrReference) ToRawInfo() interface{} { info := yaml.MapSlice{} + if m == nil { + return info + } if m.Name != "" { info = append(info, yaml.MapItem{Key: "name", Value: m.Name}) } @@ -7344,6 +7417,9 @@ func (m *NamedExampleOrReference) ToRawInfo() interface{} { // ToRawInfo returns a description of NamedHeaderOrReference suitable for JSON or YAML export. func (m *NamedHeaderOrReference) ToRawInfo() interface{} { info := yaml.MapSlice{} + if m == nil { + return info + } if m.Name != "" { info = append(info, yaml.MapItem{Key: "name", Value: m.Name}) } @@ -7354,6 +7430,9 @@ func (m *NamedHeaderOrReference) ToRawInfo() interface{} { // ToRawInfo returns a description of NamedLinkOrReference suitable for JSON or YAML export. func (m *NamedLinkOrReference) ToRawInfo() interface{} { info := yaml.MapSlice{} + if m == nil { + return info + } if m.Name != "" { info = append(info, yaml.MapItem{Key: "name", Value: m.Name}) } @@ -7364,6 +7443,9 @@ func (m *NamedLinkOrReference) ToRawInfo() interface{} { // ToRawInfo returns a description of NamedMediaType suitable for JSON or YAML export. func (m *NamedMediaType) ToRawInfo() interface{} { info := yaml.MapSlice{} + if m == nil { + return info + } if m.Name != "" { info = append(info, yaml.MapItem{Key: "name", Value: m.Name}) } @@ -7374,6 +7456,9 @@ func (m *NamedMediaType) ToRawInfo() interface{} { // ToRawInfo returns a description of NamedParameterOrReference suitable for JSON or YAML export. func (m *NamedParameterOrReference) ToRawInfo() interface{} { info := yaml.MapSlice{} + if m == nil { + return info + } if m.Name != "" { info = append(info, yaml.MapItem{Key: "name", Value: m.Name}) } @@ -7384,6 +7469,9 @@ func (m *NamedParameterOrReference) ToRawInfo() interface{} { // ToRawInfo returns a description of NamedPathItem suitable for JSON or YAML export. func (m *NamedPathItem) ToRawInfo() interface{} { info := yaml.MapSlice{} + if m == nil { + return info + } if m.Name != "" { info = append(info, yaml.MapItem{Key: "name", Value: m.Name}) } @@ -7394,6 +7482,9 @@ func (m *NamedPathItem) ToRawInfo() interface{} { // ToRawInfo returns a description of NamedRequestBodyOrReference suitable for JSON or YAML export. func (m *NamedRequestBodyOrReference) ToRawInfo() interface{} { info := yaml.MapSlice{} + if m == nil { + return info + } if m.Name != "" { info = append(info, yaml.MapItem{Key: "name", Value: m.Name}) } @@ -7404,6 +7495,9 @@ func (m *NamedRequestBodyOrReference) ToRawInfo() interface{} { // ToRawInfo returns a description of NamedResponseOrReference suitable for JSON or YAML export. func (m *NamedResponseOrReference) ToRawInfo() interface{} { info := yaml.MapSlice{} + if m == nil { + return info + } if m.Name != "" { info = append(info, yaml.MapItem{Key: "name", Value: m.Name}) } @@ -7414,6 +7508,9 @@ func (m *NamedResponseOrReference) ToRawInfo() interface{} { // ToRawInfo returns a description of NamedSchemaOrReference suitable for JSON or YAML export. func (m *NamedSchemaOrReference) ToRawInfo() interface{} { info := yaml.MapSlice{} + if m == nil { + return info + } if m.Name != "" { info = append(info, yaml.MapItem{Key: "name", Value: m.Name}) } @@ -7424,6 +7521,9 @@ func (m *NamedSchemaOrReference) ToRawInfo() interface{} { // ToRawInfo returns a description of NamedSecuritySchemeOrReference suitable for JSON or YAML export. func (m *NamedSecuritySchemeOrReference) ToRawInfo() interface{} { info := yaml.MapSlice{} + if m == nil { + return info + } if m.Name != "" { info = append(info, yaml.MapItem{Key: "name", Value: m.Name}) } @@ -7434,6 +7534,9 @@ func (m *NamedSecuritySchemeOrReference) ToRawInfo() interface{} { // ToRawInfo returns a description of NamedServerVariable suitable for JSON or YAML export. func (m *NamedServerVariable) ToRawInfo() interface{} { info := yaml.MapSlice{} + if m == nil { + return info + } if m.Name != "" { info = append(info, yaml.MapItem{Key: "name", Value: m.Name}) } @@ -7444,6 +7547,9 @@ func (m *NamedServerVariable) ToRawInfo() interface{} { // ToRawInfo returns a description of NamedString suitable for JSON or YAML export. func (m *NamedString) ToRawInfo() interface{} { info := yaml.MapSlice{} + if m == nil { + return info + } if m.Name != "" { info = append(info, yaml.MapItem{Key: "name", Value: m.Name}) } @@ -7456,6 +7562,9 @@ func (m *NamedString) ToRawInfo() interface{} { // ToRawInfo returns a description of OauthFlow suitable for JSON or YAML export. func (m *OauthFlow) ToRawInfo() interface{} { info := yaml.MapSlice{} + if m == nil { + return info + } if m.AuthorizationUrl != "" { info = append(info, yaml.MapItem{Key: "authorizationUrl", Value: m.AuthorizationUrl}) } @@ -7481,6 +7590,9 @@ func (m *OauthFlow) ToRawInfo() interface{} { // ToRawInfo returns a description of OauthFlows suitable for JSON or YAML export. func (m *OauthFlows) ToRawInfo() interface{} { info := yaml.MapSlice{} + if m == nil { + return info + } if m.Implicit != nil { info = append(info, yaml.MapItem{Key: "implicit", Value: m.Implicit.ToRawInfo()}) } @@ -7509,6 +7621,9 @@ func (m *OauthFlows) ToRawInfo() interface{} { // ToRawInfo returns a description of Object suitable for JSON or YAML export. func (m *Object) ToRawInfo() interface{} { info := yaml.MapSlice{} + if m == nil { + return info + } if m.AdditionalProperties != nil { for _, item := range m.AdditionalProperties { info = append(info, yaml.MapItem{Key: item.Name, Value: item.Value.ToRawInfo()}) @@ -7521,6 +7636,9 @@ func (m *Object) ToRawInfo() interface{} { // ToRawInfo returns a description of Operation suitable for JSON or YAML export. func (m *Operation) ToRawInfo() interface{} { info := yaml.MapSlice{} + if m == nil { + return info + } if len(m.Tags) != 0 { info = append(info, yaml.MapItem{Key: "tags", Value: m.Tags}) } @@ -7549,9 +7667,8 @@ func (m *Operation) ToRawInfo() interface{} { info = append(info, yaml.MapItem{Key: "requestBody", Value: m.RequestBody.ToRawInfo()}) } // &{Name:requestBody Type:RequestBodyOrReference StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} - if m.Responses != nil { - info = append(info, yaml.MapItem{Key: "responses", Value: m.Responses.ToRawInfo()}) - } + // always include this required field. + info = append(info, yaml.MapItem{Key: "responses", Value: m.Responses.ToRawInfo()}) // &{Name:responses Type:Responses StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} if m.Callbacks != nil { info = append(info, yaml.MapItem{Key: "callbacks", Value: m.Callbacks.ToRawInfo()}) @@ -7588,12 +7705,13 @@ func (m *Operation) ToRawInfo() interface{} { // ToRawInfo returns a description of Parameter suitable for JSON or YAML export. func (m *Parameter) ToRawInfo() interface{} { info := yaml.MapSlice{} - if m.Name != "" { - info = append(info, yaml.MapItem{Key: "name", Value: m.Name}) - } - if m.In != "" { - info = append(info, yaml.MapItem{Key: "in", Value: m.In}) + if m == nil { + return info } + // always include this required field. + info = append(info, yaml.MapItem{Key: "name", Value: m.Name}) + // always include this required field. + info = append(info, yaml.MapItem{Key: "in", Value: m.In}) if m.Description != "" { info = append(info, yaml.MapItem{Key: "description", Value: m.Description}) } @@ -7660,6 +7778,9 @@ func (m *ParameterOrReference) ToRawInfo() interface{} { // ToRawInfo returns a description of ParametersOrReferences suitable for JSON or YAML export. func (m *ParametersOrReferences) ToRawInfo() interface{} { info := yaml.MapSlice{} + if m == nil { + return info + } if m.AdditionalProperties != nil { for _, item := range m.AdditionalProperties { info = append(info, yaml.MapItem{Key: item.Name, Value: item.Value.ToRawInfo()}) @@ -7672,6 +7793,9 @@ func (m *ParametersOrReferences) ToRawInfo() interface{} { // ToRawInfo returns a description of PathItem suitable for JSON or YAML export. func (m *PathItem) ToRawInfo() interface{} { info := yaml.MapSlice{} + if m == nil { + return info + } if m.XRef != "" { info = append(info, yaml.MapItem{Key: "$ref", Value: m.XRef}) } @@ -7741,6 +7865,9 @@ func (m *PathItem) ToRawInfo() interface{} { // ToRawInfo returns a description of Paths suitable for JSON or YAML export. func (m *Paths) ToRawInfo() interface{} { info := yaml.MapSlice{} + if m == nil { + return info + } if m.Path != nil { for _, item := range m.Path { info = append(info, yaml.MapItem{Key: item.Name, Value: item.Value.ToRawInfo()}) @@ -7759,6 +7886,9 @@ func (m *Paths) ToRawInfo() interface{} { // ToRawInfo returns a description of Properties suitable for JSON or YAML export. func (m *Properties) ToRawInfo() interface{} { info := yaml.MapSlice{} + if m == nil { + return info + } if m.AdditionalProperties != nil { for _, item := range m.AdditionalProperties { info = append(info, yaml.MapItem{Key: item.Name, Value: item.Value.ToRawInfo()}) @@ -7771,15 +7901,20 @@ func (m *Properties) ToRawInfo() interface{} { // ToRawInfo returns a description of Reference suitable for JSON or YAML export. func (m *Reference) ToRawInfo() interface{} { info := yaml.MapSlice{} - if m.XRef != "" { - info = append(info, yaml.MapItem{Key: "$ref", Value: m.XRef}) + if m == nil { + return info } + // always include this required field. + info = append(info, yaml.MapItem{Key: "$ref", Value: m.XRef}) return info } // ToRawInfo returns a description of RequestBodiesOrReferences suitable for JSON or YAML export. func (m *RequestBodiesOrReferences) ToRawInfo() interface{} { info := yaml.MapSlice{} + if m == nil { + return info + } if m.AdditionalProperties != nil { for _, item := range m.AdditionalProperties { info = append(info, yaml.MapItem{Key: item.Name, Value: item.Value.ToRawInfo()}) @@ -7792,12 +7927,14 @@ func (m *RequestBodiesOrReferences) ToRawInfo() interface{} { // ToRawInfo returns a description of RequestBody suitable for JSON or YAML export. func (m *RequestBody) ToRawInfo() interface{} { info := yaml.MapSlice{} + if m == nil { + return info + } if m.Description != "" { info = append(info, yaml.MapItem{Key: "description", Value: m.Description}) } - if m.Content != nil { - info = append(info, yaml.MapItem{Key: "content", Value: m.Content.ToRawInfo()}) - } + // always include this required field. + info = append(info, yaml.MapItem{Key: "content", Value: m.Content.ToRawInfo()}) // &{Name:content Type:MediaTypes StringEnumValues:[] MapType: Repeated:false Pattern: Implicit:false Description:} if m.Required != false { info = append(info, yaml.MapItem{Key: "required", Value: m.Required}) @@ -7831,9 +7968,11 @@ func (m *RequestBodyOrReference) ToRawInfo() interface{} { // ToRawInfo returns a description of Response suitable for JSON or YAML export. func (m *Response) ToRawInfo() interface{} { info := yaml.MapSlice{} - if m.Description != "" { - info = append(info, yaml.MapItem{Key: "description", Value: m.Description}) + if m == nil { + return info } + // always include this required field. + info = append(info, yaml.MapItem{Key: "description", Value: m.Description}) if m.Headers != nil { info = append(info, yaml.MapItem{Key: "headers", Value: m.Headers.ToRawInfo()}) } @@ -7875,6 +8014,9 @@ func (m *ResponseOrReference) ToRawInfo() interface{} { // ToRawInfo returns a description of Responses suitable for JSON or YAML export. func (m *Responses) ToRawInfo() interface{} { info := yaml.MapSlice{} + if m == nil { + return info + } if m.Default != nil { info = append(info, yaml.MapItem{Key: "default", Value: m.Default.ToRawInfo()}) } @@ -7897,6 +8039,9 @@ func (m *Responses) ToRawInfo() interface{} { // ToRawInfo returns a description of ResponsesOrReferences suitable for JSON or YAML export. func (m *ResponsesOrReferences) ToRawInfo() interface{} { info := yaml.MapSlice{} + if m == nil { + return info + } if m.AdditionalProperties != nil { for _, item := range m.AdditionalProperties { info = append(info, yaml.MapItem{Key: item.Name, Value: item.Value.ToRawInfo()}) @@ -7909,6 +8054,9 @@ func (m *ResponsesOrReferences) ToRawInfo() interface{} { // ToRawInfo returns a description of Schema suitable for JSON or YAML export. func (m *Schema) ToRawInfo() interface{} { info := yaml.MapSlice{} + if m == nil { + return info + } if m.Nullable != false { info = append(info, yaml.MapItem{Key: "nullable", Value: m.Nullable}) } @@ -8076,6 +8224,9 @@ func (m *SchemaOrReference) ToRawInfo() interface{} { // ToRawInfo returns a description of SchemasOrReferences suitable for JSON or YAML export. func (m *SchemasOrReferences) ToRawInfo() interface{} { info := yaml.MapSlice{} + if m == nil { + return info + } if m.AdditionalProperties != nil { for _, item := range m.AdditionalProperties { info = append(info, yaml.MapItem{Key: item.Name, Value: item.Value.ToRawInfo()}) @@ -8088,15 +8239,20 @@ func (m *SchemasOrReferences) ToRawInfo() interface{} { // ToRawInfo returns a description of SecurityRequirement suitable for JSON or YAML export. func (m *SecurityRequirement) ToRawInfo() interface{} { info := yaml.MapSlice{} + if m == nil { + return info + } return info } // ToRawInfo returns a description of SecurityScheme suitable for JSON or YAML export. func (m *SecurityScheme) ToRawInfo() interface{} { info := yaml.MapSlice{} - if m.Type != "" { - info = append(info, yaml.MapItem{Key: "type", Value: m.Type}) + if m == nil { + return info } + // always include this required field. + info = append(info, yaml.MapItem{Key: "type", Value: m.Type}) if m.Description != "" { info = append(info, yaml.MapItem{Key: "description", Value: m.Description}) } @@ -8148,6 +8304,9 @@ func (m *SecuritySchemeOrReference) ToRawInfo() interface{} { // ToRawInfo returns a description of SecuritySchemesOrReferences suitable for JSON or YAML export. func (m *SecuritySchemesOrReferences) ToRawInfo() interface{} { info := yaml.MapSlice{} + if m == nil { + return info + } if m.AdditionalProperties != nil { for _, item := range m.AdditionalProperties { info = append(info, yaml.MapItem{Key: item.Name, Value: item.Value.ToRawInfo()}) @@ -8160,9 +8319,11 @@ func (m *SecuritySchemesOrReferences) ToRawInfo() interface{} { // ToRawInfo returns a description of Server suitable for JSON or YAML export. func (m *Server) ToRawInfo() interface{} { info := yaml.MapSlice{} - if m.Url != "" { - info = append(info, yaml.MapItem{Key: "url", Value: m.Url}) + if m == nil { + return info } + // always include this required field. + info = append(info, yaml.MapItem{Key: "url", Value: m.Url}) if m.Description != "" { info = append(info, yaml.MapItem{Key: "description", Value: m.Description}) } @@ -8182,12 +8343,14 @@ func (m *Server) ToRawInfo() interface{} { // ToRawInfo returns a description of ServerVariable suitable for JSON or YAML export. func (m *ServerVariable) ToRawInfo() interface{} { info := yaml.MapSlice{} + if m == nil { + return info + } if len(m.Enum) != 0 { info = append(info, yaml.MapItem{Key: "enum", Value: m.Enum}) } - if m.Default != "" { - info = append(info, yaml.MapItem{Key: "default", Value: m.Default}) - } + // always include this required field. + info = append(info, yaml.MapItem{Key: "default", Value: m.Default}) if m.Description != "" { info = append(info, yaml.MapItem{Key: "description", Value: m.Description}) } @@ -8203,6 +8366,9 @@ func (m *ServerVariable) ToRawInfo() interface{} { // ToRawInfo returns a description of ServerVariables suitable for JSON or YAML export. func (m *ServerVariables) ToRawInfo() interface{} { info := yaml.MapSlice{} + if m == nil { + return info + } if m.AdditionalProperties != nil { for _, item := range m.AdditionalProperties { info = append(info, yaml.MapItem{Key: item.Name, Value: item.Value.ToRawInfo()}) @@ -8239,6 +8405,9 @@ func (m *StringArray) ToRawInfo() interface{} { // ToRawInfo returns a description of Strings suitable for JSON or YAML export. func (m *Strings) ToRawInfo() interface{} { info := yaml.MapSlice{} + if m == nil { + return info + } // &{Name:additionalProperties Type:NamedString StringEnumValues:[] MapType:string Repeated:true Pattern: Implicit:true Description:} return info } @@ -8246,9 +8415,11 @@ func (m *Strings) ToRawInfo() interface{} { // ToRawInfo returns a description of Tag suitable for JSON or YAML export. func (m *Tag) ToRawInfo() interface{} { info := yaml.MapSlice{} - if m.Name != "" { - info = append(info, yaml.MapItem{Key: "name", Value: m.Name}) + if m == nil { + return info } + // always include this required field. + info = append(info, yaml.MapItem{Key: "name", Value: m.Name}) if m.Description != "" { info = append(info, yaml.MapItem{Key: "description", Value: m.Description}) } @@ -8268,6 +8439,9 @@ func (m *Tag) ToRawInfo() interface{} { // ToRawInfo returns a description of Xml suitable for JSON or YAML export. func (m *Xml) ToRawInfo() interface{} { info := yaml.MapSlice{} + if m == nil { + return info + } if m.Name != "" { info = append(info, yaml.MapItem{Key: "name", Value: m.Name}) } diff --git a/vendor/github.com/googleapis/gnostic/README.md b/vendor/github.com/googleapis/gnostic/README.md index 97de63590c..1a851bc8f1 100644 --- a/vendor/github.com/googleapis/gnostic/README.md +++ b/vendor/github.com/googleapis/gnostic/README.md @@ -93,12 +93,9 @@ Protocol Buffer description. This is mainly for use in testing and debugging. go install github.com/googleapis/gnostic/apps/report report petstore.pb -8. **gnostic** supports plugins. This builds and runs a sample plugin -that reports some basic information about an API. The "-" causes the plugin to -write its output to stdout. - - go install github.com/googleapis/gnostic/plugins/gnostic-go-sample - gnostic examples/v2.0/json/petstore.json --go-sample-out=- +8. **gnostic** supports plugins. Some are already implemented in the `plugins` directory. +Others, like [gnostic-go-generator](https://github.com/googleapis/gnostic-go-generator), +are separated into their own repositories. ## Copyright diff --git a/vendor/github.com/googleapis/gnostic/apps/disco/openapiv3.go b/vendor/github.com/googleapis/gnostic/apps/disco/openapiv3.go index 6c274572a5..2b68ca77e0 100644 --- a/vendor/github.com/googleapis/gnostic/apps/disco/openapiv3.go +++ b/vendor/github.com/googleapis/gnostic/apps/disco/openapiv3.go @@ -285,8 +285,10 @@ func OpenAPIv3(api *discovery.Document) (*openapi3.Document, error) { d.Components = &openapi3.Components{} d.Components.Schemas = &openapi3.SchemasOrReferences{} - for _, pair := range api.Schemas.AdditionalProperties { - addOpenAPI3SchemaForSchema(d, pair.Name, pair.Value) + if api.Schemas != nil { + for _, pair := range api.Schemas.AdditionalProperties { + addOpenAPI3SchemaForSchema(d, pair.Name, pair.Value) + } } d.Paths = &openapi3.Paths{} diff --git a/vendor/github.com/googleapis/gnostic/apps/report/main.go b/vendor/github.com/googleapis/gnostic/apps/report/main.go index d2ed3f96f2..4ace1e95e1 100644 --- a/vendor/github.com/googleapis/gnostic/apps/report/main.go +++ b/vendor/github.com/googleapis/gnostic/apps/report/main.go @@ -20,6 +20,7 @@ import ( "flag" "fmt" "io/ioutil" + "log" "os" "github.com/golang/protobuf/proto" @@ -28,18 +29,17 @@ import ( pb "github.com/googleapis/gnostic/OpenAPIv2" ) -func readDocumentFromFileWithName(filename string) *pb.Document { +func readDocumentFromFileWithName(filename string) (*pb.Document, error) { data, err := ioutil.ReadFile(filename) if err != nil { - fmt.Printf("File error: %v\n", err) - os.Exit(1) + return nil, err } document := &pb.Document{} err = proto.Unmarshal(data, document) if err != nil { - panic(err) + return nil, err } - return document + return document, nil } func printDocument(code *printer.Code, document *pb.Document) { @@ -229,8 +229,12 @@ func main() { return } - document := readDocumentFromFileWithName(args[0]) + document, err := readDocumentFromFileWithName(args[0]) + if err != nil { + log.Printf("Error reading %s. This sample expects OpenAPI v2.", args[0]) + os.Exit(-1) + } code := &printer.Code{} code.Print("API REPORT") code.Print("----------") diff --git a/vendor/github.com/googleapis/gnostic/compiler/reader.go b/vendor/github.com/googleapis/gnostic/compiler/reader.go index c954a2d9b2..af10e0d1bc 100644 --- a/vendor/github.com/googleapis/gnostic/compiler/reader.go +++ b/vendor/github.com/googleapis/gnostic/compiler/reader.go @@ -17,13 +17,14 @@ package compiler import ( "errors" "fmt" - "gopkg.in/yaml.v2" "io/ioutil" "log" "net/http" "net/url" "path/filepath" "strings" + + yaml "gopkg.in/yaml.v2" ) var fileCache map[string][]byte @@ -31,6 +32,8 @@ var infoCache map[string]interface{} var count int64 var verboseReader = false +var fileCacheEnable = true +var infoCacheEnable = true func initializeFileCache() { if fileCache == nil { @@ -44,29 +47,56 @@ func initializeInfoCache() { } } +func DisableFileCache() { + fileCacheEnable = false +} + +func DisableInfoCache() { + infoCacheEnable = false +} + +func RemoveFromFileCache(fileurl string) { + if !fileCacheEnable { + return + } + initializeFileCache() + delete(fileCache, fileurl) +} + +func RemoveFromInfoCache(filename string) { + if !infoCacheEnable { + return + } + initializeInfoCache() + delete(infoCache, filename) +} + // FetchFile gets a specified file from the local filesystem or a remote location. func FetchFile(fileurl string) ([]byte, error) { + var bytes []byte initializeFileCache() - bytes, ok := fileCache[fileurl] - if ok { - if verboseReader { - log.Printf("Cache hit %s", fileurl) + if fileCacheEnable { + bytes, ok := fileCache[fileurl] + if ok { + if verboseReader { + log.Printf("Cache hit %s", fileurl) + } + return bytes, nil + } + if verboseReader { + log.Printf("Fetching %s", fileurl) } - return bytes, nil - } - if verboseReader { - log.Printf("Fetching %s", fileurl) } response, err := http.Get(fileurl) if err != nil { return nil, err } + defer response.Body.Close() if response.StatusCode != 200 { return nil, errors.New(fmt.Sprintf("Error downloading %s: %s", fileurl, response.Status)) } - defer response.Body.Close() bytes, err = ioutil.ReadAll(response.Body) - if err == nil { + if fileCacheEnable && err == nil { fileCache[fileurl] = bytes } return bytes, err @@ -95,22 +125,24 @@ func ReadBytesForFile(filename string) ([]byte, error) { // ReadInfoFromBytes unmarshals a file as a yaml.MapSlice. func ReadInfoFromBytes(filename string, bytes []byte) (interface{}, error) { initializeInfoCache() - cachedInfo, ok := infoCache[filename] - if ok { - if verboseReader { - log.Printf("Cache hit info for file %s", filename) + if infoCacheEnable { + cachedInfo, ok := infoCache[filename] + if ok { + if verboseReader { + log.Printf("Cache hit info for file %s", filename) + } + return cachedInfo, nil + } + if verboseReader { + log.Printf("Reading info for file %s", filename) } - return cachedInfo, nil - } - if verboseReader { - log.Printf("Reading info for file %s", filename) } var info yaml.MapSlice err := yaml.Unmarshal(bytes, &info) if err != nil { return nil, err } - if len(filename) > 0 { + if infoCacheEnable && len(filename) > 0 { infoCache[filename] = info } return info, nil @@ -119,7 +151,7 @@ func ReadInfoFromBytes(filename string, bytes []byte) (interface{}, error) { // ReadInfoForRef reads a file and return the fragment needed to resolve a $ref. func ReadInfoForRef(basefile string, ref string) (interface{}, error) { initializeInfoCache() - { + if infoCacheEnable { info, ok := infoCache[ref] if ok { if verboseReader { @@ -127,9 +159,9 @@ func ReadInfoForRef(basefile string, ref string) (interface{}, error) { } return info, nil } - } - if verboseReader { - log.Printf("Reading info for ref %s#%s", basefile, ref) + if verboseReader { + log.Printf("Reading info for ref %s#%s", basefile, ref) + } } count = count + 1 basedir, _ := filepath.Split(basefile) @@ -170,6 +202,8 @@ func ReadInfoForRef(basefile string, ref string) (interface{}, error) { } } } - infoCache[ref] = info + if infoCacheEnable { + infoCache[ref] = info + } return info, nil } diff --git a/vendor/github.com/googleapis/gnostic/compiler/reader_test.go b/vendor/github.com/googleapis/gnostic/compiler/reader_test.go new file mode 100644 index 0000000000..147aca6520 --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/compiler/reader_test.go @@ -0,0 +1,82 @@ +package compiler + +import ( + . "gopkg.in/check.v1" + "io" + "net/http" + "testing" +) + +// Hook up gocheck into the "go test" runner. +func Test(t *testing.T) { + TestingT(t) +} + +var mockSever *http.Server + +type ReaderTestingSuite struct{} + +var _ = Suite(&ReaderTestingSuite{}) + + +func (s *ReaderTestingSuite) SetUpSuite(c *C) { + mockSever = &http.Server{Addr: "127.0.0.1:8080", Handler: + http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + yamlBytes, err := ReadBytesForFile("testdata/petstore.yaml") + c.Assert(err, IsNil) + io.WriteString(w, string(yamlBytes)) + + })} + go func() { + mockSever.ListenAndServe() + }() +} + +func (s *ReaderTestingSuite) TearDownSuite(c *C) { + mockSever.Close() +} + +func (s *ReaderTestingSuite) TestRemoveFromInfoCache(c *C) { + fileName := "testdata/petstore.yaml" + yamlBytes, err := ReadBytesForFile(fileName) + c.Assert(err, IsNil) + c.Assert(len(yamlBytes) > 0, Equals, true) + petstore, err := ReadInfoFromBytes(fileName, yamlBytes) + c.Assert(err, IsNil) + c.Assert(petstore, NotNil) + c.Assert(len(infoCache), Equals, 1) + RemoveFromInfoCache(fileName) + c.Assert(len(infoCache), Equals, 0) +} + +func (s *ReaderTestingSuite) TestDisableInfoCache(c *C) { + fileName := "testdata/petstore.yaml" + yamlBytes, err := ReadBytesForFile(fileName) + c.Assert(err, IsNil) + c.Assert(len(yamlBytes) > 0, Equals, true) + DisableInfoCache() + petstore, err := ReadInfoFromBytes(fileName, yamlBytes) + c.Assert(err, IsNil) + c.Assert(petstore, NotNil) + c.Assert(len(infoCache), Equals, 0) +} + + +func (s *ReaderTestingSuite) TestRemoveFromFileCache(c *C) { + fileUrl := "http://127.0.0.1:8080/petstore" + yamlBytes, err := FetchFile(fileUrl) + c.Assert(err, IsNil) + c.Assert(len(yamlBytes) > 0, Equals, true) + c.Assert(len(fileCache), Equals, 1) + RemoveFromFileCache(fileUrl) + c.Assert(len(fileCache), Equals, 0) +} + +func (s *ReaderTestingSuite) TestDisableFileCache(c *C) { + DisableFileCache() + fileUrl := "http://127.0.0.1:8080/petstore" + yamlBytes, err := FetchFile(fileUrl) + c.Assert(err, IsNil) + c.Assert(len(yamlBytes) > 0, Equals, true) + c.Assert(len(fileCache), Equals, 0) +} \ No newline at end of file diff --git a/vendor/github.com/googleapis/gnostic/compiler/testdata/petstore.yaml b/vendor/github.com/googleapis/gnostic/compiler/testdata/petstore.yaml new file mode 100644 index 0000000000..6951bb2ffc --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/compiler/testdata/petstore.yaml @@ -0,0 +1,110 @@ +openapi: "3.0" +info: + version: 1.0.0 + title: OpenAPI Petstore + license: + name: MIT +servers: +- url: https://petstore.openapis.org/v1 + description: Development server +paths: + /pets: + get: + summary: List all pets + operationId: listPets + tags: + - pets + parameters: + - name: limit + in: query + description: How many items to return at one time (max 100) + required: false + schema: + type: integer + format: int32 + responses: + "200": + description: An paged array of pets + headers: + x-next: + schema: + type: string + description: A link to the next page of responses + content: + application/json: + schema: + $ref: '#/components/schemas/Pets' + default: + description: unexpected error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + post: + summary: Create a pet + operationId: createPets + tags: + - pets + responses: + "201": + description: Null response + default: + description: unexpected error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /pets/{petId}: + get: + summary: Info for a specific pet + operationId: showPetById + tags: + - pets + parameters: + - name: petId + in: path + required: true + description: The id of the pet to retrieve + schema: + type: string + responses: + "200": + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/Pets' + default: + description: unexpected error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' +components: + schemas: + Pet: + required: + - id + - name + properties: + id: + type: integer + format: int64 + name: + type: string + tag: + type: string + Pets: + type: array + items: + $ref: '#/components/schemas/Pet' + Error: + required: + - code + - message + properties: + code: + type: integer + format: int32 + message: + type: string diff --git a/vendor/github.com/googleapis/gnostic/examples/v2.0/yaml/empty-v2.yaml b/vendor/github.com/googleapis/gnostic/examples/v2.0/yaml/empty-v2.yaml new file mode 100644 index 0000000000..c5c6bc6526 --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/examples/v2.0/yaml/empty-v2.yaml @@ -0,0 +1,6 @@ +swagger: "2.0" +info: + version: "" + title: "" + description: "" +paths: diff --git a/vendor/github.com/googleapis/gnostic/examples/v3.0/yaml/empty-v3.yaml b/vendor/github.com/googleapis/gnostic/examples/v3.0/yaml/empty-v3.yaml new file mode 100644 index 0000000000..b3b0425afa --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/examples/v3.0/yaml/empty-v3.yaml @@ -0,0 +1,6 @@ +openapi: "3.0" +info: + version: + title: + description: +paths: diff --git a/vendor/github.com/googleapis/gnostic/extensions/extension.pb.go b/vendor/github.com/googleapis/gnostic/extensions/extension.pb.go index 749ff78416..e6927896f9 100644 --- a/vendor/github.com/googleapis/gnostic/extensions/extension.pb.go +++ b/vendor/github.com/googleapis/gnostic/extensions/extension.pb.go @@ -1,24 +1,12 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // source: extension.proto -/* -Package openapiextension_v1 is a generated protocol buffer package. - -It is generated from these files: - extension.proto - -It has these top-level messages: - Version - ExtensionHandlerRequest - ExtensionHandlerResponse - Wrapper -*/ package openapiextension_v1 import proto "github.com/golang/protobuf/proto" import fmt "fmt" import math "math" -import google_protobuf "github.com/golang/protobuf/ptypes/any" +import any "github.com/golang/protobuf/ptypes/any" // Reference imports to suppress errors if they are not otherwise used. var _ = proto.Marshal @@ -33,18 +21,40 @@ const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package // The version number of OpenAPI 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"` + Major int32 `protobuf:"varint,1,opt,name=major,proto3" json:"major,omitempty"` + Minor int32 `protobuf:"varint,2,opt,name=minor,proto3" json:"minor,omitempty"` + Patch int32 `protobuf:"varint,3,opt,name=patch,proto3" 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"` + Suffix string `protobuf:"bytes,4,opt,name=suffix,proto3" json:"suffix,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `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) Reset() { *m = Version{} } +func (m *Version) String() string { return proto.CompactTextString(m) } +func (*Version) ProtoMessage() {} +func (*Version) Descriptor() ([]byte, []int) { + return fileDescriptor_extension_d25f09c742c58c90, []int{0} +} +func (m *Version) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_Version.Unmarshal(m, b) +} +func (m *Version) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_Version.Marshal(b, m, deterministic) +} +func (dst *Version) XXX_Merge(src proto.Message) { + xxx_messageInfo_Version.Merge(dst, src) +} +func (m *Version) XXX_Size() int { + return xxx_messageInfo_Version.Size(m) +} +func (m *Version) XXX_DiscardUnknown() { + xxx_messageInfo_Version.DiscardUnknown(m) +} + +var xxx_messageInfo_Version proto.InternalMessageInfo func (m *Version) GetMajor() int32 { if m != nil { @@ -78,15 +88,37 @@ func (m *Version) GetSuffix() string { type ExtensionHandlerRequest struct { // The OpenAPI descriptions that were explicitly listed on the command line. // The specifications will appear in the order they are specified to gnostic. - Wrapper *Wrapper `protobuf:"bytes,1,opt,name=wrapper" json:"wrapper,omitempty"` + Wrapper *Wrapper `protobuf:"bytes,1,opt,name=wrapper,proto3" json:"wrapper,omitempty"` // The version number of openapi compiler. - CompilerVersion *Version `protobuf:"bytes,3,opt,name=compiler_version,json=compilerVersion" json:"compiler_version,omitempty"` + CompilerVersion *Version `protobuf:"bytes,3,opt,name=compiler_version,json=compilerVersion,proto3" json:"compiler_version,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (m *ExtensionHandlerRequest) Reset() { *m = ExtensionHandlerRequest{} } -func (m *ExtensionHandlerRequest) String() string { return proto.CompactTextString(m) } -func (*ExtensionHandlerRequest) ProtoMessage() {} -func (*ExtensionHandlerRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } +func (m *ExtensionHandlerRequest) Reset() { *m = ExtensionHandlerRequest{} } +func (m *ExtensionHandlerRequest) String() string { return proto.CompactTextString(m) } +func (*ExtensionHandlerRequest) ProtoMessage() {} +func (*ExtensionHandlerRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_extension_d25f09c742c58c90, []int{1} +} +func (m *ExtensionHandlerRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_ExtensionHandlerRequest.Unmarshal(m, b) +} +func (m *ExtensionHandlerRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_ExtensionHandlerRequest.Marshal(b, m, deterministic) +} +func (dst *ExtensionHandlerRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_ExtensionHandlerRequest.Merge(dst, src) +} +func (m *ExtensionHandlerRequest) XXX_Size() int { + return xxx_messageInfo_ExtensionHandlerRequest.Size(m) +} +func (m *ExtensionHandlerRequest) XXX_DiscardUnknown() { + xxx_messageInfo_ExtensionHandlerRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_ExtensionHandlerRequest proto.InternalMessageInfo func (m *ExtensionHandlerRequest) GetWrapper() *Wrapper { if m != nil { @@ -105,7 +137,7 @@ func (m *ExtensionHandlerRequest) GetCompilerVersion() *Version { // The extensions writes an encoded ExtensionHandlerResponse to stdout. type ExtensionHandlerResponse struct { // true if the extension is handled by the extension handler; false otherwise - Handled bool `protobuf:"varint,1,opt,name=handled" json:"handled,omitempty"` + Handled bool `protobuf:"varint,1,opt,name=handled,proto3" json:"handled,omitempty"` // Error message. If non-empty, the extension handling failed. // The extension handler process should exit with status code zero // even if it reports an error in this way. @@ -115,15 +147,37 @@ type ExtensionHandlerResponse struct { // itself -- such as the input Document being unparseable -- should be // reported by writing a message to stderr and exiting with a non-zero // status code. - Error []string `protobuf:"bytes,2,rep,name=error" json:"error,omitempty"` + Error []string `protobuf:"bytes,2,rep,name=error,proto3" json:"error,omitempty"` // text output - Value *google_protobuf.Any `protobuf:"bytes,3,opt,name=value" json:"value,omitempty"` + Value *any.Any `protobuf:"bytes,3,opt,name=value,proto3" json:"value,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (m *ExtensionHandlerResponse) Reset() { *m = ExtensionHandlerResponse{} } -func (m *ExtensionHandlerResponse) String() string { return proto.CompactTextString(m) } -func (*ExtensionHandlerResponse) ProtoMessage() {} -func (*ExtensionHandlerResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} } +func (m *ExtensionHandlerResponse) Reset() { *m = ExtensionHandlerResponse{} } +func (m *ExtensionHandlerResponse) String() string { return proto.CompactTextString(m) } +func (*ExtensionHandlerResponse) ProtoMessage() {} +func (*ExtensionHandlerResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_extension_d25f09c742c58c90, []int{2} +} +func (m *ExtensionHandlerResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_ExtensionHandlerResponse.Unmarshal(m, b) +} +func (m *ExtensionHandlerResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_ExtensionHandlerResponse.Marshal(b, m, deterministic) +} +func (dst *ExtensionHandlerResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_ExtensionHandlerResponse.Merge(dst, src) +} +func (m *ExtensionHandlerResponse) XXX_Size() int { + return xxx_messageInfo_ExtensionHandlerResponse.Size(m) +} +func (m *ExtensionHandlerResponse) XXX_DiscardUnknown() { + xxx_messageInfo_ExtensionHandlerResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_ExtensionHandlerResponse proto.InternalMessageInfo func (m *ExtensionHandlerResponse) GetHandled() bool { if m != nil { @@ -139,7 +193,7 @@ func (m *ExtensionHandlerResponse) GetError() []string { return nil } -func (m *ExtensionHandlerResponse) GetValue() *google_protobuf.Any { +func (m *ExtensionHandlerResponse) GetValue() *any.Any { if m != nil { return m.Value } @@ -148,17 +202,39 @@ func (m *ExtensionHandlerResponse) GetValue() *google_protobuf.Any { type Wrapper struct { // version of the OpenAPI specification in which this extension was written. - Version string `protobuf:"bytes,1,opt,name=version" json:"version,omitempty"` + Version string `protobuf:"bytes,1,opt,name=version,proto3" json:"version,omitempty"` // Name of the extension - ExtensionName string `protobuf:"bytes,2,opt,name=extension_name,json=extensionName" json:"extension_name,omitempty"` + ExtensionName string `protobuf:"bytes,2,opt,name=extension_name,json=extensionName,proto3" json:"extension_name,omitempty"` // Must be a valid yaml for the proto - Yaml string `protobuf:"bytes,3,opt,name=yaml" json:"yaml,omitempty"` + Yaml string `protobuf:"bytes,3,opt,name=yaml,proto3" json:"yaml,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (m *Wrapper) Reset() { *m = Wrapper{} } -func (m *Wrapper) String() string { return proto.CompactTextString(m) } -func (*Wrapper) ProtoMessage() {} -func (*Wrapper) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} } +func (m *Wrapper) Reset() { *m = Wrapper{} } +func (m *Wrapper) String() string { return proto.CompactTextString(m) } +func (*Wrapper) ProtoMessage() {} +func (*Wrapper) Descriptor() ([]byte, []int) { + return fileDescriptor_extension_d25f09c742c58c90, []int{3} +} +func (m *Wrapper) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_Wrapper.Unmarshal(m, b) +} +func (m *Wrapper) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_Wrapper.Marshal(b, m, deterministic) +} +func (dst *Wrapper) XXX_Merge(src proto.Message) { + xxx_messageInfo_Wrapper.Merge(dst, src) +} +func (m *Wrapper) XXX_Size() int { + return xxx_messageInfo_Wrapper.Size(m) +} +func (m *Wrapper) XXX_DiscardUnknown() { + xxx_messageInfo_Wrapper.DiscardUnknown(m) +} + +var xxx_messageInfo_Wrapper proto.InternalMessageInfo func (m *Wrapper) GetVersion() string { if m != nil { @@ -188,9 +264,9 @@ func init() { proto.RegisterType((*Wrapper)(nil), "openapiextension.v1.Wrapper") } -func init() { proto.RegisterFile("extension.proto", fileDescriptor0) } +func init() { proto.RegisterFile("extension.proto", fileDescriptor_extension_d25f09c742c58c90) } -var fileDescriptor0 = []byte{ +var fileDescriptor_extension_d25f09c742c58c90 = []byte{ // 357 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x74, 0x91, 0x4d, 0x4b, 0xc3, 0x40, 0x18, 0x84, 0x49, 0xbf, 0x62, 0x56, 0x6c, 0x65, 0x2d, 0x1a, 0xc5, 0x43, 0x09, 0x08, 0x45, 0x64, diff --git a/vendor/github.com/googleapis/gnostic/generate-gnostic/generate-compiler.go b/vendor/github.com/googleapis/gnostic/generate-gnostic/generate-compiler.go index db988213b1..442568c09e 100644 --- a/vendor/github.com/googleapis/gnostic/generate-gnostic/generate-compiler.go +++ b/vendor/github.com/googleapis/gnostic/generate-gnostic/generate-compiler.go @@ -798,14 +798,17 @@ func (domain *Domain) generateToRawInfoMethodForType(code *printer.Code, typeNam code.Print("return nil") } else { code.Print("info := yaml.MapSlice{}") + code.Print("if m == nil {return info}") for _, propertyModel := range typeModel.Properties { + isRequired := typeModel.IsRequired(propertyModel.Name) switch propertyModel.Type { case "string": propertyName := propertyModel.Name if !propertyModel.Repeated { - code.Print("if m.%s != \"\" {", propertyModel.FieldName()) + code.PrintIf(isRequired, "// always include this required field.") + code.PrintIf(!isRequired, "if m.%s != \"\" {", propertyModel.FieldName()) code.Print("info = append(info, yaml.MapItem{Key:\"%s\", Value:m.%s})", propertyName, propertyModel.FieldName()) - code.Print("}") + code.PrintIf(!isRequired, "}") } else { code.Print("if len(m.%s) != 0 {", propertyModel.FieldName()) code.Print("info = append(info, yaml.MapItem{Key:\"%s\", Value:m.%s})", propertyName, propertyModel.FieldName()) @@ -814,9 +817,10 @@ func (domain *Domain) generateToRawInfoMethodForType(code *printer.Code, typeNam case "bool": propertyName := propertyModel.Name if !propertyModel.Repeated { - code.Print("if m.%s != false {", propertyModel.FieldName()) + code.PrintIf(isRequired, "// always include this required field.") + code.PrintIf(!isRequired, "if m.%s != false {", propertyModel.FieldName()) code.Print("info = append(info, yaml.MapItem{Key:\"%s\", Value:m.%s})", propertyName, propertyModel.FieldName()) - code.Print("}") + code.PrintIf(!isRequired, "}") } else { code.Print("if len(m.%s) != 0 {", propertyModel.FieldName()) code.Print("info = append(info, yaml.MapItem{Key:\"%s\", Value:m.%s})", propertyName, propertyModel.FieldName()) @@ -825,9 +829,10 @@ func (domain *Domain) generateToRawInfoMethodForType(code *printer.Code, typeNam case "int": propertyName := propertyModel.Name if !propertyModel.Repeated { - code.Print("if m.%s != 0 {", propertyModel.FieldName()) + code.PrintIf(isRequired, "// always include this required field.") + code.PrintIf(!isRequired, "if m.%s != 0 {", propertyModel.FieldName()) code.Print("info = append(info, yaml.MapItem{Key:\"%s\", Value:m.%s})", propertyName, propertyModel.FieldName()) - code.Print("}") + code.PrintIf(!isRequired, "}") } else { code.Print("if len(m.%s) != 0 {", propertyModel.FieldName()) code.Print("info = append(info, yaml.MapItem{Key:\"%s\", Value:m.%s})", propertyName, propertyModel.FieldName()) @@ -836,9 +841,10 @@ func (domain *Domain) generateToRawInfoMethodForType(code *printer.Code, typeNam case "float": propertyName := propertyModel.Name if !propertyModel.Repeated { - code.Print("if m.%s != 0.0 {", propertyModel.FieldName()) + code.PrintIf(isRequired, "// always include this required field.") + code.PrintIf(!isRequired, "if m.%s != 0.0 {", propertyModel.FieldName()) code.Print("info = append(info, yaml.MapItem{Key:\"%s\", Value:m.%s})", propertyName, propertyModel.FieldName()) - code.Print("}") + code.PrintIf(!isRequired, "}") } else { code.Print("if len(m.%s) != 0 {", propertyModel.FieldName()) code.Print("info = append(info, yaml.MapItem{Key:\"%s\", Value:m.%s})", propertyName, propertyModel.FieldName()) @@ -849,7 +855,8 @@ func (domain *Domain) generateToRawInfoMethodForType(code *printer.Code, typeNam if propertyName == "value" { code.Print("// %+v", propertyModel) } else if !propertyModel.Repeated { - code.Print("if m.%s != nil {", propertyModel.FieldName()) + code.PrintIf(isRequired, "// always include this required field.") + code.PrintIf(!isRequired, "if m.%s != nil {", propertyModel.FieldName()) if propertyModel.Type == "TypeItem" { code.Print("if len(m.Type.Value) == 1 {") code.Print("info = append(info, yaml.MapItem{Key:\"type\", Value:m.Type.Value[0]})") @@ -870,7 +877,7 @@ func (domain *Domain) generateToRawInfoMethodForType(code *printer.Code, typeNam code.Print("info = append(info, yaml.MapItem{Key:\"%s\", Value:m.%s.ToRawInfo()})", propertyName, propertyModel.FieldName()) } - code.Print("}") + code.PrintIf(!isRequired, "}") code.Print("// %+v", propertyModel) } else if propertyModel.MapType == "string" { code.Print("// %+v", propertyModel) diff --git a/vendor/github.com/googleapis/gnostic/generate-gnostic/types.go b/vendor/github.com/googleapis/gnostic/generate-gnostic/types.go index e0859f795c..5148d8290c 100644 --- a/vendor/github.com/googleapis/gnostic/generate-gnostic/types.go +++ b/vendor/github.com/googleapis/gnostic/generate-gnostic/types.go @@ -130,3 +130,12 @@ func NewTypeModel() *TypeModel { typeModel.Properties = make([]*TypeProperty, 0) return typeModel } + +func (typeModel *TypeModel) IsRequired(propertyName string) bool { + for _, requiredName := range typeModel.Required { + if requiredName == propertyName { + return true + } + } + return false +} diff --git a/vendor/github.com/googleapis/gnostic/gnostic.go b/vendor/github.com/googleapis/gnostic/gnostic.go index 960041521d..84934069d5 100644 --- a/vendor/github.com/googleapis/gnostic/gnostic.go +++ b/vendor/github.com/googleapis/gnostic/gnostic.go @@ -186,8 +186,10 @@ func (p *pluginCall) perform(document proto.Message, sourceFormat int, sourceNam // any logging messages are written to stderr only. return nil, errors.New("Invalid plugin response (plugins must write log messages to stderr, not stdout).") } - plugins.HandleResponse(response, outputLocation) - return response.Messages, nil + + err = plugins.HandleResponse(response, outputLocation) + + return response.Messages, err } return nil, nil } diff --git a/vendor/github.com/googleapis/gnostic/gnostic_test.go b/vendor/github.com/googleapis/gnostic/gnostic_test.go index 22eaee8275..7057d76542 100644 --- a/vendor/github.com/googleapis/gnostic/gnostic_test.go +++ b/vendor/github.com/googleapis/gnostic/gnostic_test.go @@ -10,17 +10,18 @@ import ( ) func testCompiler(t *testing.T, inputFile string, referenceFile string, expectErrors bool) { - textFile := strings.Replace(filepath.Base(inputFile), filepath.Ext(inputFile), ".text", 1) + outputFormat := filepath.Ext(referenceFile)[1:] + outputFile := strings.Replace(filepath.Base(inputFile), filepath.Ext(inputFile), "."+outputFormat, 1) errorsFile := strings.Replace(filepath.Base(inputFile), filepath.Ext(inputFile), ".errors", 1) // remove any preexisting output files - os.Remove(textFile) + os.Remove(outputFile) os.Remove(errorsFile) // run the compiler var err error var cmd = exec.Command( "gnostic", inputFile, - "--text-out=.", + "--"+outputFormat+"-out=.", "--errors-out=.", "--resolve-refs") //t.Log(cmd.Args) @@ -30,19 +31,19 @@ func testCompiler(t *testing.T, inputFile string, referenceFile string, expectEr t.FailNow() } // verify the output against a reference - var outputFile string + var testFile string if expectErrors { - outputFile = errorsFile + testFile = errorsFile } else { - outputFile = textFile + testFile = outputFile } - err = exec.Command("diff", outputFile, referenceFile).Run() + err = exec.Command("diff", testFile, referenceFile).Run() if err != nil { t.Logf("Diff failed: %+v", err) t.FailNow() } else { // if the test succeeded, clean up - os.Remove(textFile) + os.Remove(outputFile) os.Remove(errorsFile) } } @@ -451,3 +452,17 @@ func TestPetstoreJSON_30(t *testing.T) { "examples/v3.0/json/petstore.json", "test/v3.0/petstore.text") } + +// Test that empty required fields are exported. + +func TestEmptyRequiredFields_v2(t *testing.T) { + testNormal(t, + "examples/v2.0/yaml/empty-v2.yaml", + "test/v2.0/json/empty-v2.json") +} + +func TestEmptyRequiredFields_v3(t *testing.T) { + testNormal(t, + "examples/v3.0/yaml/empty-v3.yaml", + "test/v3.0/json/empty-v3.json") +} diff --git a/vendor/github.com/googleapis/gnostic/plugins/environment.go b/vendor/github.com/googleapis/gnostic/plugins/environment.go index 79a0867f2f..bd6a8a1ce5 100644 --- a/vendor/github.com/googleapis/gnostic/plugins/environment.go +++ b/vendor/github.com/googleapis/gnostic/plugins/environment.go @@ -105,7 +105,7 @@ When the -plugin option is specified, these flags are ignored.`) env.Request.AddModel("openapi.v2.Document", documentv2) // include experimental API surface model surfaceModel, err := surface.NewModelFromOpenAPI2(documentv2) - if err != nil { + if err == nil { env.Request.AddModel("surface.v1.Model", surfaceModel) } return env, err @@ -117,7 +117,7 @@ When the -plugin option is specified, these flags are ignored.`) env.Request.AddModel("openapi.v3.Document", documentv3) // include experimental API surface model surfaceModel, err := surface.NewModelFromOpenAPI3(documentv3) - if err != nil { + if err == nil { env.Request.AddModel("surface.v1.Model", surfaceModel) } return env, err diff --git a/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/Makefile b/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/Makefile deleted file mode 100644 index f6c25026f0..0000000000 --- a/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/Makefile +++ /dev/null @@ -1,9 +0,0 @@ - -build: - go get golang.org/x/tools/cmd/goimports - go install github.com/googleapis/gnostic - go install github.com/googleapis/gnostic/plugins/gnostic-go-generator - rm -f $(GOPATH)/bin/gnostic-go-client $(GOPATH)/bin/gnostic-go-server - ln -s $(GOPATH)/bin/gnostic-go-generator $(GOPATH)/bin/gnostic-go-client - ln -s $(GOPATH)/bin/gnostic-go-generator $(GOPATH)/bin/gnostic-go-server - diff --git a/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/README.md b/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/README.md deleted file mode 100644 index bb7142f722..0000000000 --- a/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/README.md +++ /dev/null @@ -1,18 +0,0 @@ -# Go Generator Plugin - -This directory contains a `gnostic` plugin that can be used to generate a Go client library and scaffolding for a Go server for an API with an OpenAPI description. - -The plugin can be invoked like this: - - gnostic bookstore.json --go-generator-out=bookstore - -`bookstore` is the name of a directory where the generated code will be written. -`bookstore` will also be the package name used for generated code. - -By default, both client and server code will be generated. If the `gnostic-go-generator` binary is also linked from the names `gnostic-go-client` and `gnostic-go-server`, then only client or only server code can be generated as follows: - - gnostic bookstore.json --go-client-out=bookstore - - gnostic bookstore.json --go-server-out=bookstore - -For example usage, see the [examples/v2.0/bookstore](examples/v2.0/bookstore) directory. \ No newline at end of file diff --git a/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/googleauth/README.md b/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/googleauth/README.md deleted file mode 100644 index e867551519..0000000000 --- a/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/googleauth/README.md +++ /dev/null @@ -1,31 +0,0 @@ -# googleauth - -This directory contains support code that can be used to get an OAuth2 token for a Google API user. - -It is designed to work on computers with attached displays. -Use it to write command-line tools and test programs that call Google APIs. - -## Instructions - -Import this package and make the following call to request a token. - - client, err := googleauth.NewOAuth2Client(scopes) - -`scopes` should be a string containing the OAuth scopes needed by the APIs to be called. -For example, the URL Shortener API would require "https://www.googleapis.com/auth/urlshortener". - -This call will then open a local browser that will redirect to a Google signin page -with information about the app that is requesting a token. - -## Application Credentials - -To use this package, you need to download a "client secrets" file and -save it as `client_secrets.json` in the directory where your tool is run. - -To get this file, visit the {{ Google Cloud Console }}{{ https://cloud.google.com/console }} -and create a project. Then go to the API Manager to enable the APIs that you want to use -and create OAuth2 credentials. You'll then be able to download these credentials -as JSON. Save this file as `client_secrets.json` - -For more information about the `client_secrets.json` file format, please visit: -https://developers.google.com/api-client-library/python/guide/aaa_client_secrets \ No newline at end of file diff --git a/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/googleauth/googleauth.go b/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/googleauth/googleauth.go deleted file mode 100644 index e87d89d867..0000000000 --- a/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/googleauth/googleauth.go +++ /dev/null @@ -1,220 +0,0 @@ -// -// Copyright 2017 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 googleauth - -import ( - "encoding/json" - "errors" - "flag" - "fmt" - "io/ioutil" - "net" - "net/http" - "os" - "os/exec" - "path/filepath" - "runtime" - - "golang.org/x/net/context" - "golang.org/x/oauth2" -) - -const missingClientSecretsMessage = ` -Please configure OAuth 2.0 - -To make this sample run, you need to populate the client_secrets.json file -found at: - - %v - -with information from the {{ Google Cloud Console }} -{{ https://cloud.google.com/console }} - -For more information about the client_secrets.json file format, please visit: -https://developers.google.com/api-client-library/python/guide/aaa_client_secrets -` - -var ( - clientSecretsFile = flag.String("secrets", "client_secrets.json", "Client Secrets configuration") - cacheFile = flag.String("cache", "request.token", "Token cache file") -) - -// ClientConfig is a data structure definition for the client_secrets.json file. -// The code unmarshals the JSON configuration file into this structure. -type ClientConfig struct { - ClientID string `json:"client_id"` - ClientSecret string `json:"client_secret"` - RedirectURIs []string `json:"redirect_uris"` - AuthURI string `json:"auth_uri"` - TokenURI string `json:"token_uri"` -} - -// Config is a root-level configuration object. -type Config struct { - Installed ClientConfig `json:"installed"` - Web ClientConfig `json:"web"` -} - -// openURL opens a browser window to the specified location. -// This code originally appeared at: -// http://stackoverflow.com/questions/10377243/how-can-i-launch-a-process-that-is-not-a-file-in-go -func openURL(url string) error { - var err error - switch runtime.GOOS { - case "linux": - err = exec.Command("xdg-open", url).Start() - case "windows": - err = exec.Command("rundll32", "url.dll,FileProtocolHandler", "http://localhost:4001/").Start() - case "darwin": - err = exec.Command("open", url).Start() - default: - err = fmt.Errorf("Cannot open URL %s on this platform", url) - } - return err -} - -// readConfig reads the configuration from clientSecretsFile. -// It returns an oauth configuration object for use with the Google API client. -func readConfig(scopes []string) (*oauth2.Config, error) { - // Read the secrets file - data, err := ioutil.ReadFile(*clientSecretsFile) - if err != nil { - pwd, _ := os.Getwd() - fullPath := filepath.Join(pwd, *clientSecretsFile) - return nil, fmt.Errorf(missingClientSecretsMessage, fullPath) - } - - cfg := new(Config) - err = json.Unmarshal(data, &cfg) - if err != nil { - return nil, err - } - - var redirectURI string - if len(cfg.Web.RedirectURIs) > 0 { - redirectURI = cfg.Web.RedirectURIs[0] - } else if len(cfg.Installed.RedirectURIs) > 0 { - redirectURI = cfg.Installed.RedirectURIs[0] - } else { - return nil, errors.New("Must specify a redirect URI in config file or when creating OAuth client") - } - - return &oauth2.Config{ - ClientID: cfg.Installed.ClientID, - ClientSecret: cfg.Installed.ClientSecret, - Scopes: scopes, - Endpoint: oauth2.Endpoint{cfg.Installed.AuthURI, cfg.Installed.TokenURI}, - RedirectURL: redirectURI, - }, nil -} - -// startWebServer starts a web server that listens on http://localhost:8080. -// The webserver waits for an oauth code in the three-legged auth flow. -func startWebServer() (codeCh chan string, err error) { - listener, err := net.Listen("tcp", "localhost:8080") - if err != nil { - return nil, err - } - codeCh = make(chan string) - go http.Serve(listener, http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - code := r.FormValue("code") - codeCh <- code // send code to OAuth flow - listener.Close() - w.Header().Set("Content-Type", "text/plain") - fmt.Fprintf(w, "Received code: %v\r\nYou can now safely close this browser window.", code) - })) - return codeCh, nil -} - -// NewOAuth2Client takes the user through the three-legged OAuth flow. -// It opens a browser in the native OS or outputs a URL, then blocks until -// the redirect completes to the /oauth2callback URI. -// It returns an instance of an HTTP client that can be passed to the -// constructor of an OAuth client. -// scopes is a variable number of OAuth scopes -func NewOAuth2Client(scopes ...string) (*http.Client, error) { - var ctx context.Context - tokenSource, err := NewOAuth2TokenSource(scopes...) - if err == nil { - return oauth2.NewClient(ctx, tokenSource), nil - } - return nil, err -} - -// NewOAuth2TokenSource takes the user through the three-legged OAuth flow. -// It opens a browser in the native OS or outputs a URL, then blocks until -// the redirect completes to the /oauth2callback URI. -// It returns an instance of an OAuth token source that can be passed to the -// constructor of an OAuth client. -// scopes is a variable number of OAuth scopes -func NewOAuth2TokenSource(scopes ...string) (oauth2.TokenSource, error) { - config, err := readConfig(scopes) - if err != nil { - msg := fmt.Sprintf("Cannot read configuration file: %v", err) - return nil, errors.New(msg) - } - - var ctx context.Context - - // Try to read the token from the cache file. - // If an error occurs, do the three-legged OAuth flow because - // the token is invalid or doesn't exist. - //token, err := config.TokenCache.Token() - - var token *oauth2.Token - - data, err := ioutil.ReadFile(*cacheFile) - if err == nil { - err = json.Unmarshal(data, &token) - } - if (err != nil) || !token.Valid() { - // Start web server. - // This is how this program receives the authorization code - // when the browser redirects. - codeCh, err := startWebServer() - if err != nil { - return nil, err - } - - // Open url in browser - url := config.AuthCodeURL("") - err = openURL(url) - if err != nil { - fmt.Println("Visit the URL below to get a code.", - " This program will pause until the site is visted.") - } else { - fmt.Println("Your browser has been opened to an authorization URL.", - " This program will resume once authorization has been provided.\n") - } - fmt.Println(url) - - // Wait for the web server to get the code. - code := <-codeCh - - // This code caches the authorization code on the local - // filesystem, if necessary, as long as the TokenCache - // attribute in the config is set. - token, err = config.Exchange(ctx, code) - if err != nil { - return nil, err - } - - data, err := json.Marshal(token) - ioutil.WriteFile(*cacheFile, data, 0644) - } - return oauth2.StaticTokenSource(token), nil -} diff --git a/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v2.0/apis_guru/Makefile b/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v2.0/apis_guru/Makefile deleted file mode 100644 index d1c57accdd..0000000000 --- a/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v2.0/apis_guru/Makefile +++ /dev/null @@ -1,4 +0,0 @@ - -all: - gnostic swagger.yaml --go-client-out=apis_guru - go install diff --git a/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v2.0/apis_guru/main.go b/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v2.0/apis_guru/main.go deleted file mode 100644 index 72ff44c596..0000000000 --- a/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v2.0/apis_guru/main.go +++ /dev/null @@ -1,45 +0,0 @@ -// +build ignore -// This file is omitted when getting with `go get github.com/googleapis/gnostic/...` - -package main - -import ( - "fmt" - "sort" - - "github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v2.0/apis_guru/apis_guru" -) - -func main() { - c := apis_guru.NewClient("http://api.apis.guru/v2") - - metrics, err := c.GetMetrics() - if err != nil { - panic(err) - } - fmt.Printf("%+v\n", metrics) - - apis, err := c.ListAPIs() - if err != nil { - panic(err) - } - - keys := make([]string, 0) - for key, _ := range *apis.OK { - keys = append(keys, key) - } - sort.Strings(keys) - - for _, key := range keys { - api := (*apis.OK)[key] - versions := make([]string, 0) - for key, _ := range api.Versions { - versions = append(versions, key) - } - sort.Strings(versions) - fmt.Printf("[%s]:%+v\n", key, versions) - } - - api := (*apis.OK)["xkcd.com"].Versions["1.0.0"] - fmt.Printf("%+v\n", api.SwaggerUrl) -} diff --git a/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v2.0/apis_guru/swagger.yaml b/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v2.0/apis_guru/swagger.yaml deleted file mode 100644 index 40e9399666..0000000000 --- a/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v2.0/apis_guru/swagger.yaml +++ /dev/null @@ -1,186 +0,0 @@ -swagger: '2.0' -schemes: - - https -host: api.apis.guru -basePath: /v2/ -info: - contact: - email: founders@apis.guru - name: APIs.guru - url: 'http://APIs.guru' - description: | - Wikipedia for Web APIs. Repository of API specs in OpenAPI(fka Swagger) 2.0 format. - - **Warning**: If you want to be notified about changes in advance please subscribe to our [Gitter channel](https://gitter.im/APIs-guru/api-models). - - Client sample: [[Demo]](https://apis.guru/simple-ui) [[Repo]](https://github.com/APIs-guru/simple-ui) - license: - name: CC0 1.0 - url: 'https://github.com/APIs-guru/api-models#licenses' - title: APIs.guru - version: '2.0' - x-logo: - url: 'https://apis.guru/branding/logo_vertical.svg' -externalDocs: - url: 'https://github.com/APIs-guru/api-models/blob/master/API.md' -produces: - - application/json -security: [] -paths: - /list.json: - get: - description: | - List all APIs in the directory. - Returns links to OpenAPI specification for each API in the directory. - If API exist in multiply versions `preferred` one is explicitly marked. - - Some basic info from OpenAPI spec is cached inside each object. - This allows to generate some simple views without need to fetch OpenAPI spec for each API. - operationId: listAPIs - responses: - '200': - description: OK - schema: - $ref: '#/definitions/APIs' - summary: List all APIs - /metrics.json: - get: - description: | - Some basic metrics for the entire directory. - Just stunning numbers to put on a front page and are intended purely for WoW effect :) - operationId: getMetrics - responses: - '200': - description: OK - schema: - $ref: '#/definitions/Metrics' - summary: Get basic metrics -definitions: - API: - additionalProperties: false - description: Meta information about API - properties: - added: - description: Timestamp when the API was first added to the directory - format: date-time - type: string - preferred: - description: Recommended version - type: string - versions: - additionalProperties: - $ref: '#/definitions/ApiVersion' - description: List of supported versions of the API - minProperties: 1 - type: object - required: - - added - - preferred - - versions - type: object - APIs: - additionalProperties: - $ref: '#/definitions/API' - description: | - List of API details. - It is a JSON object with API IDs(`[:]`) as keys. - example: - 'googleapis.com:drive': - added: '2015-02-22T20:00:45.000Z' - preferred: v3 - versions: - v2: - added: '2015-02-22T20:00:45.000Z' - info: - title: Drive - version: v2 - x-apiClientRegistration: - url: 'https://console.developers.google.com' - x-logo: - url: 'https://api.apis.guru/v2/cache/logo/https_www.gstatic.com_images_icons_material_product_2x_drive_32dp.png' - x-origin: - format: google - url: 'https://www.googleapis.com/discovery/v1/apis/drive/v2/rest' - version: v1 - x-preferred: false - x-providerName: googleapis.com - x-serviceName: drive - swaggerUrl: 'https://api.apis.guru/v2/specs/googleapis.com/drive/v2/swagger.json' - swaggerYamlUrl: 'https://api.apis.guru/v2/specs/googleapis.com/drive/v2/swagger.yaml' - updated: '2016-06-17T00:21:44.000Z' - v3: - added: '2015-12-12T00:25:13.000Z' - info: - title: Drive - version: v3 - x-apiClientRegistration: - url: 'https://console.developers.google.com' - x-logo: - url: 'https://api.apis.guru/v2/cache/logo/https_www.gstatic.com_images_icons_material_product_2x_drive_32dp.png' - x-origin: - format: google - url: 'https://www.googleapis.com/discovery/v1/apis/drive/v3/rest' - version: v1 - x-preferred: true - x-providerName: googleapis.com - x-serviceName: drive - swaggerUrl: 'https://api.apis.guru/v2/specs/googleapis.com/drive/v3/swagger.json' - swaggerYamlUrl: 'https://api.apis.guru/v2/specs/googleapis.com/drive/v3/swagger.yaml' - updated: '2016-06-17T00:21:44.000Z' - minProperties: 1 - type: object - ApiVersion: - additionalProperties: false - properties: - added: - description: Timestamp when the version was added - format: date-time - type: string - info: - description: Copy of `info` section from Swagger spec - minProperties: 1 - type: object - swaggerUrl: - description: URL to Swagger spec in JSON format - format: url - type: string - swaggerYamlUrl: - description: URL to Swagger spec in YAML format - format: url - type: string - updated: - description: Timestamp when the version was updated - format: date-time - type: string - required: - - added - - updated - - swaggerUrl - - swaggerYamlUrl - - info - type: object - Metrics: - additionalProperties: false - description: List of basic metrics - example: - numAPIs: 238 - numEndpoints: 6448 - numSpecs: 302 - properties: - numAPIs: - description: Number of APIs - minimum: 1 - type: integer - numEndpoints: - description: Total number of endpoints inside all specifications - minimum: 1 - type: integer - numSpecs: - description: Number of API specifications including different versions of the same API - minimum: 1 - type: integer - required: - - numSpecs - - numAPIs - - numEndpoints - type: object diff --git a/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v2.0/bookstore/Makefile b/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v2.0/bookstore/Makefile deleted file mode 100644 index 6d04686a30..0000000000 --- a/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v2.0/bookstore/Makefile +++ /dev/null @@ -1,20 +0,0 @@ -build: - go get golang.org/x/tools/cmd/goimports - go install github.com/googleapis/gnostic - go install github.com/googleapis/gnostic/plugins/gnostic-go-generator - rm -f $(GOPATH)/bin/gnostic-go-client $(GOPATH)/bin/gnostic-go-server - ln -s $(GOPATH)/bin/gnostic-go-generator $(GOPATH)/bin/gnostic-go-client - ln -s $(GOPATH)/bin/gnostic-go-generator $(GOPATH)/bin/gnostic-go-server - -all: build - gnostic bookstore.json --go-generator-out=bookstore - -clean: - rm -rf bookstore bookstore.text service/service - -test: all - killall service; true # ignore errors due to no matching processes - cd service; go get .; go build; ./service & - go test - killall service - diff --git a/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v2.0/bookstore/README.md b/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v2.0/bookstore/README.md deleted file mode 100644 index a684b3af6a..0000000000 --- a/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v2.0/bookstore/README.md +++ /dev/null @@ -1,23 +0,0 @@ -# Bookstore Example - -This directory contains an OpenAPI description of a simple bookstore API. - -Use this example to try the `gnostic-go-generator` plugin, which implements -`gnostic-go-client` and `gnostic-go-server` for generating API client and -server code, respectively. - -Run "make all" to build and install `gnostic` and the Go plugins. -It will generate both client and server code. The API client and -server code will be in the `bookstore` package. - -The `service` directory contains additional code that completes the server. -To build and run the service, `cd service` and do the following: - - go get . - go build - ./service & - -To test the service with the generated client, go back up to the top-level -directory and run `go test`. The test in `bookstore_test.go` uses client -code generated in `bookstore` to verify the service. - diff --git a/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v2.0/bookstore/bookstore.json b/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v2.0/bookstore/bookstore.json deleted file mode 100644 index 98571c8a5b..0000000000 --- a/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v2.0/bookstore/bookstore.json +++ /dev/null @@ -1,357 +0,0 @@ -{ - "swagger": "2.0", - "info": { - "description": "A simple Bookstore API example.", - "title": "Bookstore", - "version": "1.0.0" - }, - "host": "generated-bookstore.appspot.com", - "basePath": "/", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "schemes": [ - "https" - ], - "paths": { - "/shelves": { - "get": { - "description": "Return all shelves in the bookstore.", - "operationId": "listShelves", - "produces": [ - "application/json" - ], - "responses": { - "200": { - "description": "List of shelves in the bookstore.", - "schema": { - "$ref": "#/definitions/listShelvesResponse" - } - } - }, - "security": [ - - ] - }, - "post": { - "description": "Create a new shelf in the bookstore.", - "operationId": "createShelf", - "parameters": [ - { - "description": "A shelf resource to create.", - "in": "body", - "name": "shelf", - "required": true, - "schema": { - "$ref": "#/definitions/shelf" - } - } - ], - "produces": [ - "application/json" - ], - "responses": { - "200": { - "description": "A newly created shelf resource.", - "schema": { - "$ref": "#/definitions/shelf" - } - } - } - }, - "delete": { - "description": "Delete all shelves.", - "operationId": "deleteShelves", - "responses": { - "default": { - "description": "An empty response body." - } - } - } - }, - "/shelves/{shelf}": { - "get": { - "description": "Get a single shelf resource with the given ID.", - "operationId": "getShelf", - "parameters": [ - { - "description": "ID of the shelf to get.", - "format": "int64", - "in": "path", - "name": "shelf", - "required": true, - "type": "integer" - } - ], - "produces": [ - "application/json" - ], - "responses": { - "200": { - "description": "A shelf resource.", - "schema": { - "$ref": "#/definitions/shelf" - } - }, - "default": { - "description": "unexpected error", - "schema": { - "$ref": "#/definitions/error" - } - } - } - }, - "delete": { - "description": "Delete a single shelf with the given ID.", - "operationId": "deleteShelf", - "parameters": [ - { - "description": "ID of the shelf to delete.", - "format": "int64", - "in": "path", - "name": "shelf", - "required": true, - "type": "integer" - } - ], - "responses": { - "default": { - "description": "An empty response body." - } - } - } - }, - "/shelves/{shelf}/books": { - "get": { - "description": "Return all books in a shelf with the given ID.", - "operationId": "listBooks", - "parameters": [ - { - "description": "ID of the shelf whose books should be returned.", - "format": "int64", - "in": "path", - "name": "shelf", - "required": true, - "type": "integer" - } - ], - "produces": [ - "application/json" - ], - "responses": { - "200": { - "description": "List of books on the specified shelf.", - "schema": { - "$ref": "#/definitions/listBooksResponse" - } - }, - "default": { - "description": "unexpected error", - "schema": { - "$ref": "#/definitions/error" - } - } - } - }, - "post": { - "description": "Create a new book on the shelf.", - "operationId": "createBook", - "parameters": [ - { - "description": "ID of the shelf where the book should be created.", - "format": "int64", - "in": "path", - "name": "shelf", - "required": true, - "type": "integer" - }, - { - "description": "Book to create.", - "in": "body", - "name": "book", - "required": true, - "schema": { - "$ref": "#/definitions/book" - } - } - ], - "produces": [ - "application/json" - ], - "responses": { - "200": { - "description": "A newly created book resource.", - "schema": { - "$ref": "#/definitions/book" - } - }, - "default": { - "description": "unexpected error", - "schema": { - "$ref": "#/definitions/error" - } - } - } - } - }, - "/shelves/{shelf}/books/{book}": { - "get": { - "description": "Get a single book with a given ID from a shelf.", - "operationId": "getBook", - "parameters": [ - { - "description": "ID of the shelf from which to get the book.", - "format": "int64", - "in": "path", - "name": "shelf", - "required": true, - "type": "integer" - }, - { - "description": "ID of the book to get from the shelf.", - "format": "int64", - "in": "path", - "name": "book", - "required": true, - "type": "integer" - } - ], - "produces": [ - "application/json" - ], - "responses": { - "200": { - "description": "A book resource.", - "schema": { - "$ref": "#/definitions/book" - } - }, - "default": { - "description": "unexpected error", - "schema": { - "$ref": "#/definitions/error" - } - } - } - }, - "delete": { - "description": "Delete a single book with a given ID from a shelf.", - "operationId": "deleteBook", - "parameters": [ - { - "description": "ID of the shelf from which to delete the book.", - "format": "int64", - "in": "path", - "name": "shelf", - "required": true, - "type": "integer" - }, - { - "description": "ID of the book to delete from the shelf.", - "format": "int64", - "in": "path", - "name": "book", - "required": true, - "type": "integer" - } - ], - "responses": { - "default": { - "description": "An empty response body." - } - } - } - } - }, - "definitions": { - "book": { - "properties": { - "author": { - "type": "string" - }, - "name": { - "type": "string" - }, - "title": { - "type": "string" - } - }, - "required": [ - "name", - "author", - "title" - ] - }, - "listBooksResponse": { - "properties": { - "books": { - "items": { - "$ref": "#/definitions/book" - }, - "type": "array" - } - }, - "required": [ - "books" - ], - "type": "object" - }, - "listShelvesResponse": { - "properties": { - "shelves": { - "items": { - "$ref": "#/definitions/shelf" - }, - "type": "array" - } - }, - "type": "object" - }, - "shelf": { - "properties": { - "name": { - "type": "string" - }, - "theme": { - "type": "string" - } - }, - "required": [ - "name", - "theme" - ] - }, - "error": { - "required": [ - "code", - "message" - ], - "properties": { - "code": { - "type": "integer", - "format": "int32" - }, - "message": { - "type": "string" - } - } - } - }, - "security": [ - { - "api_key": [ - - ] - } - ], - "securityDefinitions": { - "api_key": { - "in": "query", - "name": "key", - "type": "apiKey" - } - } -} diff --git a/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v2.0/bookstore/bookstore/bookstore.go b/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v2.0/bookstore/bookstore/bookstore.go deleted file mode 100644 index 1f7dec7db4..0000000000 --- a/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v2.0/bookstore/bookstore/bookstore.go +++ /dev/null @@ -1,19 +0,0 @@ -/* - Copyright 2017 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 bookstore exists to allow this repo to work with recursive go get. -// It will be filled in with auto generated code. -package bookstore diff --git a/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v2.0/bookstore/bookstore_test.go b/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v2.0/bookstore/bookstore_test.go deleted file mode 100644 index 10506a8925..0000000000 --- a/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v2.0/bookstore/bookstore_test.go +++ /dev/null @@ -1,239 +0,0 @@ -/* - Copyright 2017 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 test - -import ( - "fmt" - "net/http" - "strings" - "testing" - - "github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v2.0/bookstore/bookstore" -) - -const service = "http://localhost:8080" - -//const service = "http://generated-bookstore.appspot.com" - -func TestBookstore(t *testing.T) { - // create a client - b := bookstore.NewClient(service, nil) - // reset the service by deleting all shelves - { - err := b.DeleteShelves() - if err != nil { - t.Log("delete shelves failed") - t.Fail() - } - } - // verify that the service has no shelves - { - response, err := b.ListShelves() - if err != nil { - t.Log("list shelves failed") - t.Fail() - } - if (response == nil) || (response.OK == nil) || (response.OK.Shelves != nil) { - t.Log(fmt.Sprintf("list shelves failed %+v", response.OK)) - t.Log(fmt.Sprintf("list shelves failed len=%d", len(response.OK.Shelves))) - t.Fail() - } - } - // attempting to get a shelf should return an error - { - _, err := b.GetShelf(1) - if err == nil { - t.Log("get shelf failed to return an error") - t.Fail() - } - } - // attempting to get a book should return an error - { - _, err := b.GetBook(1, 2) - if err == nil { - t.Log("get book failed to return an error") - t.Fail() - } - } - // add a shelf - { - var shelf bookstore.Shelf - shelf.Theme = "mysteries" - response, err := b.CreateShelf(shelf) - if err != nil { - t.Log("create shelf mysteries failed") - t.Fail() - } - if (response.OK.Name != "shelves/1") || - (response.OK.Theme != "mysteries") { - t.Log("create shelf mysteries failed") - t.Fail() - } - } - // add another shelf - { - var shelf bookstore.Shelf - shelf.Theme = "comedies" - response, err := b.CreateShelf(shelf) - if err != nil { - t.Log("create shelf comedies failed") - t.Fail() - } - if (response.OK.Name != "shelves/2") || - (response.OK.Theme != "comedies") { - t.Log("create shelf comedies failed") - t.Fail() - } - } - // get the first shelf that was added - { - response, err := b.GetShelf(1) - if err != nil { - t.Log("get shelf mysteries failed") - t.Fail() - } - if (response.OK.Name != "shelves/1") || - (response.OK.Theme != "mysteries") { - t.Log("get shelf mysteries failed") - t.Fail() - } - } - // list shelves and verify that there are 2 - { - response, err := b.ListShelves() - if err != nil { - t.Log("list shelves failed") - t.Fail() - } - if len(response.OK.Shelves) != 2 { - t.Log("list shelves failed") - t.Fail() - } - } - // delete a shelf - { - err := b.DeleteShelf(2) - if err != nil { - t.Log("delete shelf failed") - t.Fail() - } - } - // list shelves and verify that there is only 1 - { - response, err := b.ListShelves() - if err != nil { - t.Log("list shelves failed") - t.Fail() - } - if len(response.OK.Shelves) != 1 { - t.Log("list shelves failed") - t.Fail() - } - } - // list books on a shelf, verify that there are none - { - response, err := b.ListBooks(1) - if err != nil { - t.Log("list books failed") - t.Fail() - } - if len(response.OK.Books) != 0 { - t.Log("list books failed") - t.Fail() - } - } - // create a book - { - var book bookstore.Book - book.Author = "Agatha Christie" - book.Title = "And Then There Were None" - _, err := b.CreateBook(1, book) - if err != nil { - t.Log("create book failed") - t.Fail() - } - } - // create another book - { - var book bookstore.Book - book.Author = "Agatha Christie" - book.Title = "Murder on the Orient Express" - _, err := b.CreateBook(1, book) - if err != nil { - t.Log("create book failed") - t.Fail() - } - } - // get the first book that was added - { - _, err := b.GetBook(1, 1) - if err != nil { - t.Log("get book failed") - t.Fail() - } - } - // list the books on a shelf and verify that there are 2 - { - response, err := b.ListBooks(1) - if err != nil { - t.Log("list books failed") - t.Fail() - } - if len(response.OK.Books) != 2 { - t.Log("list books failed") - t.Fail() - } - } - // delete a book - { - err := b.DeleteBook(1, 2) - if err != nil { - t.Log("delete book failed") - t.Fail() - } - } - // list the books on a shelf and verify that is only 1 - { - response, err := b.ListBooks(1) - if err != nil { - t.Log("list books failed") - t.Fail() - } - if len(response.OK.Books) != 1 { - t.Log("list books failed") - t.Fail() - } - } - // verify the handling of a badly-formed request - { - req, err := http.NewRequest("POST", service+"/shelves", strings.NewReader("")) - if err != nil { - t.Log("bad request failed") - return - } - resp, err := http.DefaultClient.Do(req) - if err != nil { - return - } - // we expect a 400 (Bad Request) code - if resp.StatusCode != 400 { - t.Log("bad request failed") - t.Fail() - } - return - } -} diff --git a/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v2.0/bookstore/service/app.yaml b/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v2.0/bookstore/service/app.yaml deleted file mode 100644 index 9c262ce193..0000000000 --- a/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v2.0/bookstore/service/app.yaml +++ /dev/null @@ -1,9 +0,0 @@ -application: bookstore -version: 1 -runtime: go -api_version: go1 -handlers: -- url: /.* - script: _go_app -- url: / - static_dir: static diff --git a/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v2.0/bookstore/service/init.go b/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v2.0/bookstore/service/init.go deleted file mode 100644 index 53df81a53d..0000000000 --- a/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v2.0/bookstore/service/init.go +++ /dev/null @@ -1,27 +0,0 @@ -/* - Copyright 2017 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 main - -import ( - "github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v2.0/bookstore/bookstore" -) - -// init() is called when the package is loaded -// this allows this app to be trivially deployed to Google App Engine, which does not call main() -func init() { - bookstore.Initialize(NewService()) -} diff --git a/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v2.0/bookstore/service/main.go b/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v2.0/bookstore/service/main.go deleted file mode 100644 index 6a14ae944d..0000000000 --- a/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v2.0/bookstore/service/main.go +++ /dev/null @@ -1,34 +0,0 @@ -// +build !appengine - -// This file is omitted when the app is built for Google App Engine - -/* - Copyright 2017 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 main - -import ( - "log" - - "github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v2.0/bookstore/bookstore" -) - -func main() { - err := bookstore.ServeHTTP(":8080") - if err != nil { - log.Printf("%v", err) - } -} diff --git a/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v2.0/bookstore/service/service.go b/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v2.0/bookstore/service/service.go deleted file mode 100644 index 67c128bebd..0000000000 --- a/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v2.0/bookstore/service/service.go +++ /dev/null @@ -1,195 +0,0 @@ -/* - Copyright 2017 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 main - -import ( - "errors" - "fmt" - "net/http" - "sync" - - "github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v2.0/bookstore/bookstore" -) - -// -// The Service type implements a bookstore service. -// All objects are managed in an in-memory non-persistent store. -// -type Service struct { - // shelves are stored in a map keyed by shelf id - // books are stored in a two level map, keyed first by shelf id and then by book id - Shelves map[int64]*bookstore.Shelf - Books map[int64]map[int64]*bookstore.Book - LastShelfID int64 // the id of the last shelf that was added - LastBookID int64 // the id of the last book that was added - Mutex sync.Mutex // global mutex to synchronize service access -} - -func NewService() *Service { - return &Service{ - Shelves: make(map[int64]*bookstore.Shelf), - Books: make(map[int64]map[int64]*bookstore.Book), - } -} - -func (service *Service) ListShelves(responses *bookstore.ListShelvesResponses) (err error) { - service.Mutex.Lock() - defer service.Mutex.Unlock() - // copy shelf ids from Shelves map keys - shelves := make([]bookstore.Shelf, 0, len(service.Shelves)) - for _, shelf := range service.Shelves { - shelves = append(shelves, *shelf) - } - response := &bookstore.ListShelvesResponse{} - response.Shelves = shelves - (*responses).OK = response - return err -} - -func (service *Service) CreateShelf(parameters *bookstore.CreateShelfParameters, responses *bookstore.CreateShelfResponses) (err error) { - service.Mutex.Lock() - defer service.Mutex.Unlock() - // assign an id and name to a shelf and add it to the Shelves map. - shelf := parameters.Shelf - service.LastShelfID++ - sid := service.LastShelfID - shelf.Name = fmt.Sprintf("shelves/%d", sid) - service.Shelves[sid] = &shelf - (*responses).OK = &shelf - return err -} - -func (service *Service) DeleteShelves() (err error) { - service.Mutex.Lock() - defer service.Mutex.Unlock() - // delete everything by reinitializing the Shelves and Books maps. - service.Shelves = make(map[int64]*bookstore.Shelf) - service.Books = make(map[int64]map[int64]*bookstore.Book) - service.LastShelfID = 0 - service.LastBookID = 0 - return nil -} - -func (service *Service) GetShelf(parameters *bookstore.GetShelfParameters, responses *bookstore.GetShelfResponses) (err error) { - service.Mutex.Lock() - defer service.Mutex.Unlock() - // look up a shelf from the Shelves map. - shelf, err := service.getShelf(parameters.Shelf) - if err != nil { - (*responses).Default = &bookstore.Error{Code: int32(http.StatusNotFound), Message: err.Error()} - return nil - } else { - (*responses).OK = shelf - return nil - } -} - -func (service *Service) DeleteShelf(parameters *bookstore.DeleteShelfParameters) (err error) { - service.Mutex.Lock() - defer service.Mutex.Unlock() - // delete a shelf by removing the shelf from the Shelves map and the associated books from the Books map. - delete(service.Shelves, parameters.Shelf) - delete(service.Books, parameters.Shelf) - return nil -} - -func (service *Service) ListBooks(parameters *bookstore.ListBooksParameters, responses *bookstore.ListBooksResponses) (err error) { - service.Mutex.Lock() - defer service.Mutex.Unlock() - // list the books in a shelf - _, err = service.getShelf(parameters.Shelf) - if err != nil { - (*responses).Default = &bookstore.Error{Code: int32(http.StatusNotFound), Message: err.Error()} - return nil - } - shelfBooks := service.Books[parameters.Shelf] - books := make([]bookstore.Book, 0, len(shelfBooks)) - for _, book := range shelfBooks { - books = append(books, *book) - } - response := &bookstore.ListBooksResponse{} - response.Books = books - (*responses).OK = response - return nil -} - -func (service *Service) CreateBook(parameters *bookstore.CreateBookParameters, responses *bookstore.CreateBookResponses) (err error) { - service.Mutex.Lock() - defer service.Mutex.Unlock() - // return "not found" if the shelf doesn't exist - shelf, err := service.getShelf(parameters.Shelf) - if err != nil { - (*responses).Default = &bookstore.Error{Code: int32(http.StatusNotFound), Message: err.Error()} - return nil - } - // assign an id and name to a book and add it to the Books map. - service.LastBookID++ - bid := service.LastBookID - book := parameters.Book - book.Name = fmt.Sprintf("%s/books/%d", shelf.Name, bid) - if service.Books[parameters.Shelf] == nil { - service.Books[parameters.Shelf] = make(map[int64]*bookstore.Book) - } - service.Books[parameters.Shelf][bid] = &book - (*responses).OK = &book - return err -} - -func (service *Service) GetBook(parameters *bookstore.GetBookParameters, responses *bookstore.GetBookResponses) (err error) { - service.Mutex.Lock() - defer service.Mutex.Unlock() - // get a book from the Books map - book, err := service.getBook(parameters.Shelf, parameters.Book) - if err != nil { - (*responses).Default = &bookstore.Error{Code: int32(http.StatusNotFound), Message: err.Error()} - } else { - (*responses).OK = book - } - return nil -} - -func (service *Service) DeleteBook(parameters *bookstore.DeleteBookParameters) (err error) { - service.Mutex.Lock() - defer service.Mutex.Unlock() - // delete a book by removing the book from the Books map. - delete(service.Books[parameters.Shelf], parameters.Book) - return nil -} - -// internal helpers - -func (service *Service) getShelf(sid int64) (shelf *bookstore.Shelf, err error) { - shelf, ok := service.Shelves[sid] - if !ok { - return nil, errors.New(fmt.Sprintf("Couldn't find shelf %d", sid)) - } else { - return shelf, nil - } -} - -func (service *Service) getBook(sid int64, bid int64) (book *bookstore.Book, err error) { - _, err = service.getShelf(sid) - if err != nil { - return nil, err - } - book, ok := service.Books[sid][bid] - if !ok { - return nil, errors.New(fmt.Sprintf("Couldn't find book %d on shelf %d", bid, sid)) - } else { - return book, nil - } -} diff --git a/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v2.0/sample/Makefile b/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v2.0/sample/Makefile deleted file mode 100644 index 4b3fe2c0de..0000000000 --- a/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v2.0/sample/Makefile +++ /dev/null @@ -1,20 +0,0 @@ -build: - go get golang.org/x/tools/cmd/goimports - go install github.com/googleapis/gnostic - go install github.com/googleapis/gnostic/plugins/gnostic-go-generator - rm -f $(GOPATH)/bin/gnostic-go-client $(GOPATH)/bin/gnostic-go-server - ln -s $(GOPATH)/bin/gnostic-go-generator $(GOPATH)/bin/gnostic-go-client - ln -s $(GOPATH)/bin/gnostic-go-generator $(GOPATH)/bin/gnostic-go-server - -all: build - gnostic sample.yaml --go-generator-out=sample - -clean: - rm -rf sample service/service - -test: all - killall service; true # ignore errors due to no matching processes - cd service; go get .; go build; ./service & - go test - killall service - diff --git a/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v2.0/sample/README.md b/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v2.0/sample/README.md deleted file mode 100644 index f4ce24fccb..0000000000 --- a/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v2.0/sample/README.md +++ /dev/null @@ -1,24 +0,0 @@ -# API Sample - -This directory contains an OpenAPI description of a sample API -that exercises various OpenAPI features. - -Use this example to try the `gnostic-go-generator` plugin, which implements -`gnostic-go-client` and `gnostic-go-server` for generating API client and -server code, respectively. - -Run "make all" to build and install `gnostic` and the Go plugins. -It will generate both client and server code. The API client and -server code will be in the `sample` package. - -The `service` directory contains additional code that completes the server. -To build and run the service, `cd service` and do the following: - - go get . - go build - ./service & - -To test the service with the generated client, go back up to the top-level -directory and run `go test`. The test in `sample_test.go` uses client -code generated in `sample` to verify the service. - diff --git a/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v2.0/sample/sample.yaml b/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v2.0/sample/sample.yaml deleted file mode 100644 index 6235a38619..0000000000 --- a/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v2.0/sample/sample.yaml +++ /dev/null @@ -1,67 +0,0 @@ -swagger: '2.0' -schemes: - - https -host: sample.io -basePath: / -info: - title: sample.io - version: '1.0' -consumes: - - application/json -produces: - - application/json;charset=UTF-8 -securityDefinitions: - api_key: - in: query - name: key - type: apiKey -paths: - /sample/{id}: - get: - operationId: "GetSample" - parameters: - - description: identifier - in: path - name: id - required: true - type: string - responses: - '200': - description: sample response - schema: - $ref: '#/definitions/Sample' - '401': - description: User doesn't have a valid session. - schema: - $ref: '#/definitions/APIError' - '404': - description: Unable to find supplied extractor ID. - schema: - $ref: '#/definitions/APIError' - security: - - api_key: [] - summary: Get a sample response - tags: - - sample - - demo -definitions: - APIError: - properties: - code: - description: Internal error code - format: int - type: integer - message: - description: A message containing a brief description of the error - type: string - type: object - Sample: - properties: - id: - type: string - thing: - type: object - count: - format: int32 - type: integer - type: object diff --git a/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v2.0/sample/sample/sample.go b/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v2.0/sample/sample/sample.go deleted file mode 100644 index 18cd0ddc86..0000000000 --- a/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v2.0/sample/sample/sample.go +++ /dev/null @@ -1,19 +0,0 @@ -/* - Copyright 2017 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 sample exists to allow this repo to work with recursive go get. -// It will be filled in with auto generated code. -package sample diff --git a/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v2.0/sample/sample_test.go b/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v2.0/sample/sample_test.go deleted file mode 100644 index 4d6a44ec8f..0000000000 --- a/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v2.0/sample/sample_test.go +++ /dev/null @@ -1,68 +0,0 @@ -/* - Copyright 2018 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 test - -import ( - "fmt" - "net/http" - "strings" - "testing" - - "github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v2.0/sample/sample" -) - -const service = "http://localhost:8080" - -func TestSample(t *testing.T) { - // create a client - s := sample.NewClient(service, nil) - // verify a sample request - { - message := "hello world" - response, err := s.GetSample(message) - if err != nil { - t.Log("get sample failed") - t.Fail() - } - if response.OK.Id != message || response.OK.Count != int32(len(message)) { - t.Log(fmt.Sprintf("get sample received %+v", response.OK)) - t.Fail() - } - if (response == nil) || (response.OK == nil) { - t.Log(fmt.Sprintf("get sample failed %+v", response.OK)) - t.Fail() - } - } - // verify the handling of an invalid request - { - req, err := http.NewRequest("GET", service+"/unsupported", strings.NewReader("")) - if err != nil { - t.Log("bad request failed") - return - } - resp, err := http.DefaultClient.Do(req) - if err != nil { - return - } - // we expect a 404 (Not Found) code - if resp.StatusCode != 404 { - t.Log("bad request failed") - t.Fail() - } - return - } -} diff --git a/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v2.0/sample/service/app.yaml b/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v2.0/sample/service/app.yaml deleted file mode 100644 index 7f0272d475..0000000000 --- a/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v2.0/sample/service/app.yaml +++ /dev/null @@ -1,9 +0,0 @@ -application: sample -version: 1 -runtime: go -api_version: go1 -handlers: -- url: /.* - script: _go_app -- url: / - static_dir: static diff --git a/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v2.0/sample/service/init.go b/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v2.0/sample/service/init.go deleted file mode 100644 index 13d3dc1a4e..0000000000 --- a/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v2.0/sample/service/init.go +++ /dev/null @@ -1,27 +0,0 @@ -/* - Copyright 2018 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 main - -import ( - "github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v2.0/sample/sample" -) - -// init() is called when the package is loaded -// this allows this app to be trivially deployed to Google App Engine, which does not call main() -func init() { - sample.Initialize(NewService()) -} diff --git a/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v2.0/sample/service/main.go b/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v2.0/sample/service/main.go deleted file mode 100644 index e651954006..0000000000 --- a/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v2.0/sample/service/main.go +++ /dev/null @@ -1,34 +0,0 @@ -// +build !appengine - -// This file is omitted when the app is built for Google App Engine - -/* - Copyright 2018 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 main - -import ( - "log" - - "github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v2.0/sample/sample" -) - -func main() { - err := sample.ServeHTTP(":8080") - if err != nil { - log.Printf("%v", err) - } -} diff --git a/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v2.0/sample/service/service.go b/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v2.0/sample/service/service.go deleted file mode 100644 index 6d66cea7ce..0000000000 --- a/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v2.0/sample/service/service.go +++ /dev/null @@ -1,38 +0,0 @@ -/* - Copyright 2018 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 main - -import ( - "github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v2.0/sample/sample" -) - -// -// The Service type implements a sample service. -// -type Service struct{} - -func NewService() *Service { - return &Service{} -} - -func (service *Service) GetSample(parameters *sample.GetSampleParameters, responses *sample.GetSampleResponses) (err error) { - (*responses).OK = &sample.Sample{ - Id: parameters.Id, - Thing: map[string]interface{}{"thing": 123}, - Count: int32(len(parameters.Id))} - return err -} diff --git a/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v2.0/xkcd/Makefile b/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v2.0/xkcd/Makefile deleted file mode 100644 index 5a71fb9bed..0000000000 --- a/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v2.0/xkcd/Makefile +++ /dev/null @@ -1,3 +0,0 @@ -all: - gnostic swagger.json --go-client-out=xkcd - go install diff --git a/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v2.0/xkcd/main.go b/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v2.0/xkcd/main.go deleted file mode 100644 index 81c3579211..0000000000 --- a/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v2.0/xkcd/main.go +++ /dev/null @@ -1,23 +0,0 @@ -package main - -import ( - "fmt" - - "github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v2.0/xkcd/xkcd" -) - -func main() { - c := xkcd.NewClient("http://xkcd.com") - - comic, err := c.Get_info_0_json() - if err != nil { - panic(err) - } - fmt.Printf("%+v\n", comic) - - comic, err = c.Get_comicId_info_0_json(1800) - if err != nil { - panic(err) - } - fmt.Printf("%+v\n", comic) -} diff --git a/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v2.0/xkcd/swagger.json b/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v2.0/xkcd/swagger.json deleted file mode 100644 index 6a74c5f441..0000000000 --- a/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v2.0/xkcd/swagger.json +++ /dev/null @@ -1,111 +0,0 @@ -{ - "swagger": "2.0", - "schemes": [ - "http" - ], - "host": "xkcd.com", - "basePath": "/", - "info": { - "description": "Webcomic of romance, sarcasm, math, and language.", - "title": "XKCD", - "version": "1.0.0", - "x-apisguru-categories": [ - "media" - ], - "x-logo": { - "url": "https://api.apis.guru/v2/cache/logo/http_imgs.xkcd.com_static_terrible_small_logo.png" - }, - "x-origin": { - "format": "swagger", - "url": "https://raw.githubusercontent.com/APIs-guru/unofficial_openapi_specs/master/xkcd.com/1.0.0/swagger.yaml", - "version": "2.0" - }, - "x-preferred": true, - "x-providerName": "xkcd.com", - "x-tags": [ - "humor", - "comics" - ], - "x-unofficialSpec": true - }, - "externalDocs": { - "url": "https://xkcd.com/json.html" - }, - "securityDefinitions": {}, - "paths": { - "/info.0.json": { - "get": { - "description": "Fetch current comic and metadata.\n", - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/comic" - } - } - } - } - }, - "/{comicId}/info.0.json": { - "get": { - "description": "Fetch comics and metadata by comic id.\n", - "parameters": [ - { - "in": "path", - "name": "comicId", - "required": true, - "type": "number" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/comic" - } - } - } - } - } - }, - "definitions": { - "comic": { - "properties": { - "alt": { - "type": "string" - }, - "day": { - "type": "string" - }, - "img": { - "type": "string" - }, - "link": { - "type": "string" - }, - "month": { - "type": "string" - }, - "news": { - "type": "string" - }, - "num": { - "type": "number" - }, - "safe_title": { - "type": "string" - }, - "title": { - "type": "string" - }, - "transcript": { - "type": "string" - }, - "year": { - "type": "string" - } - }, - "type": "object" - } - } -} diff --git a/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v2.0/xkcd/xkcd/xkcd.go b/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v2.0/xkcd/xkcd/xkcd.go deleted file mode 100644 index 7309ab1883..0000000000 --- a/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v2.0/xkcd/xkcd/xkcd.go +++ /dev/null @@ -1,19 +0,0 @@ -/* - Copyright 2017 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 xkcd exists to allow this repo to work with recursive go get. -// It will be filled in with auto generated code. -package xkcd diff --git a/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v3.0/bookstore/Makefile b/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v3.0/bookstore/Makefile deleted file mode 100644 index 6d04686a30..0000000000 --- a/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v3.0/bookstore/Makefile +++ /dev/null @@ -1,20 +0,0 @@ -build: - go get golang.org/x/tools/cmd/goimports - go install github.com/googleapis/gnostic - go install github.com/googleapis/gnostic/plugins/gnostic-go-generator - rm -f $(GOPATH)/bin/gnostic-go-client $(GOPATH)/bin/gnostic-go-server - ln -s $(GOPATH)/bin/gnostic-go-generator $(GOPATH)/bin/gnostic-go-client - ln -s $(GOPATH)/bin/gnostic-go-generator $(GOPATH)/bin/gnostic-go-server - -all: build - gnostic bookstore.json --go-generator-out=bookstore - -clean: - rm -rf bookstore bookstore.text service/service - -test: all - killall service; true # ignore errors due to no matching processes - cd service; go get .; go build; ./service & - go test - killall service - diff --git a/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v3.0/bookstore/README.md b/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v3.0/bookstore/README.md deleted file mode 100644 index a684b3af6a..0000000000 --- a/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v3.0/bookstore/README.md +++ /dev/null @@ -1,23 +0,0 @@ -# Bookstore Example - -This directory contains an OpenAPI description of a simple bookstore API. - -Use this example to try the `gnostic-go-generator` plugin, which implements -`gnostic-go-client` and `gnostic-go-server` for generating API client and -server code, respectively. - -Run "make all" to build and install `gnostic` and the Go plugins. -It will generate both client and server code. The API client and -server code will be in the `bookstore` package. - -The `service` directory contains additional code that completes the server. -To build and run the service, `cd service` and do the following: - - go get . - go build - ./service & - -To test the service with the generated client, go back up to the top-level -directory and run `go test`. The test in `bookstore_test.go` uses client -code generated in `bookstore` to verify the service. - diff --git a/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v3.0/bookstore/bookstore.json b/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v3.0/bookstore/bookstore.json deleted file mode 100644 index 35fdd8611e..0000000000 --- a/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v3.0/bookstore/bookstore.json +++ /dev/null @@ -1,392 +0,0 @@ -{ - "openapi": "3.0.0", - "servers": [ - { - "url": "https://generated-bookstore.appspot.com/" - } - ], - "info": { - "description": "A simple Bookstore API example.", - "title": "Bookstore", - "version": "1.0.0" - }, - "paths": { - "/shelves": { - "get": { - "description": "Return all shelves in the bookstore.", - "operationId": "listShelves", - "responses": { - "200": { - "description": "List of shelves in the bookstore.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/listShelvesResponse" - } - } - } - } - }, - "security": [] - }, - "post": { - "description": "Create a new shelf in the bookstore.", - "operationId": "createShelf", - "responses": { - "200": { - "description": "A newly created shelf resource.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/shelf" - } - } - } - } - }, - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/shelf" - } - } - }, - "description": "A shelf resource to create.", - "required": true - } - }, - "delete": { - "description": "Delete all shelves.", - "operationId": "deleteShelves", - "responses": { - "default": { - "description": "An empty response body." - } - } - } - }, - "/shelves/{shelf}": { - "get": { - "description": "Get a single shelf resource with the given ID.", - "operationId": "getShelf", - "parameters": [ - { - "description": "ID of the shelf to get.", - "in": "path", - "name": "shelf", - "required": true, - "schema": { - "type": "integer", - "format": "int64" - } - } - ], - "responses": { - "200": { - "description": "A shelf resource.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/shelf" - } - } - } - }, - "default": { - "description": "unexpected error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/error" - } - } - } - } - } - }, - "delete": { - "description": "Delete a single shelf with the given ID.", - "operationId": "deleteShelf", - "parameters": [ - { - "description": "ID of the shelf to delete.", - "in": "path", - "name": "shelf", - "required": true, - "schema": { - "type": "integer", - "format": "int64" - } - } - ], - "responses": { - "default": { - "description": "An empty response body." - } - } - } - }, - "/shelves/{shelf}/books": { - "get": { - "description": "Return all books in a shelf with the given ID.", - "operationId": "listBooks", - "parameters": [ - { - "description": "ID of the shelf whose books should be returned.", - "in": "path", - "name": "shelf", - "required": true, - "schema": { - "type": "integer", - "format": "int64" - } - } - ], - "responses": { - "200": { - "description": "List of books on the specified shelf.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/listBooksResponse" - } - } - } - }, - "default": { - "description": "unexpected error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/error" - } - } - } - } - } - }, - "post": { - "description": "Create a new book on the shelf.", - "operationId": "createBook", - "parameters": [ - { - "description": "ID of the shelf where the book should be created.", - "in": "path", - "name": "shelf", - "required": true, - "schema": { - "type": "integer", - "format": "int64" - } - } - ], - "responses": { - "200": { - "description": "A newly created book resource.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/book" - } - } - } - }, - "default": { - "description": "unexpected error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/error" - } - } - } - } - }, - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/book" - } - } - }, - "description": "Book to create.", - "required": true - } - } - }, - "/shelves/{shelf}/books/{book}": { - "get": { - "description": "Get a single book with a given ID from a shelf.", - "operationId": "getBook", - "parameters": [ - { - "description": "ID of the shelf from which to get the book.", - "in": "path", - "name": "shelf", - "required": true, - "schema": { - "type": "integer", - "format": "int64" - } - }, - { - "description": "ID of the book to get from the shelf.", - "in": "path", - "name": "book", - "required": true, - "schema": { - "type": "integer", - "format": "int64" - } - } - ], - "responses": { - "200": { - "description": "A book resource.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/book" - } - } - } - }, - "default": { - "description": "unexpected error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/error" - } - } - } - } - } - }, - "delete": { - "description": "Delete a single book with a given ID from a shelf.", - "operationId": "deleteBook", - "parameters": [ - { - "description": "ID of the shelf from which to delete the book.", - "in": "path", - "name": "shelf", - "required": true, - "schema": { - "type": "integer", - "format": "int64" - } - }, - { - "description": "ID of the book to delete from the shelf.", - "in": "path", - "name": "book", - "required": true, - "schema": { - "type": "integer", - "format": "int64" - } - } - ], - "responses": { - "default": { - "description": "An empty response body." - } - } - } - } - }, - "security": [ - { - "api_key": [] - } - ], - "components": { - "schemas": { - "book": { - "properties": { - "author": { - "type": "string" - }, - "name": { - "type": "string" - }, - "title": { - "type": "string" - } - }, - "required": [ - "name", - "author", - "title" - ], - "type": "object" - }, - "listBooksResponse": { - "properties": { - "books": { - "items": { - "$ref": "#/components/schemas/book" - }, - "type": "array" - } - }, - "required": [ - "books" - ], - "type": "object" - }, - "listShelvesResponse": { - "properties": { - "shelves": { - "items": { - "$ref": "#/components/schemas/shelf" - }, - "type": "array" - } - }, - "type": "object" - }, - "shelf": { - "properties": { - "name": { - "type": "string" - }, - "theme": { - "type": "string" - } - }, - "required": [ - "name", - "theme" - ], - "type": "object" - }, - "error": { - "required": [ - "code", - "message" - ], - "properties": { - "code": { - "type": "integer", - "format": "int32" - }, - "message": { - "type": "string" - } - }, - "type": "object" - } - }, - "securitySchemes": { - "api_key": { - "in": "query", - "name": "key", - "type": "apiKey" - } - } - } -} diff --git a/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v3.0/bookstore/bookstore/bookstore.go b/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v3.0/bookstore/bookstore/bookstore.go deleted file mode 100644 index 1f7dec7db4..0000000000 --- a/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v3.0/bookstore/bookstore/bookstore.go +++ /dev/null @@ -1,19 +0,0 @@ -/* - Copyright 2017 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 bookstore exists to allow this repo to work with recursive go get. -// It will be filled in with auto generated code. -package bookstore diff --git a/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v3.0/bookstore/bookstore_test.go b/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v3.0/bookstore/bookstore_test.go deleted file mode 100644 index 1490cf8893..0000000000 --- a/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v3.0/bookstore/bookstore_test.go +++ /dev/null @@ -1,239 +0,0 @@ -/* - Copyright 2017 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 test - -import ( - "fmt" - "net/http" - "strings" - "testing" - - "github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v3.0/bookstore/bookstore" -) - -const service = "http://localhost:8080" - -//const service = "http://generated-bookstore.appspot.com" - -func TestBookstore(t *testing.T) { - // create a client - b := bookstore.NewClient(service, nil) - // reset the service by deleting all shelves - { - err := b.DeleteShelves() - if err != nil { - t.Log("delete shelves failed") - t.Fail() - } - } - // verify that the service has no shelves - { - response, err := b.ListShelves() - if err != nil { - t.Log("list shelves failed") - t.Fail() - } - if (response == nil) || (response.OK == nil) || (response.OK.Shelves != nil) { - t.Log(fmt.Sprintf("list shelves failed %+v", response.OK)) - t.Log(fmt.Sprintf("list shelves failed len=%d", len(response.OK.Shelves))) - t.Fail() - } - } - // attempting to get a shelf should return an error - { - response, err := b.GetShelf(1) - if err == nil { - t.Logf("get shelf failed to return an error (%+v)", response.OK) - t.Fail() - } - } - // attempting to get a book should return an error - { - response, err := b.GetBook(1, 2) - if err == nil { - t.Logf("get book failed to return an error (%+v)", response.OK) - t.Fail() - } - } - // add a shelf - { - var shelf bookstore.Shelf - shelf.Theme = "mysteries" - response, err := b.CreateShelf(shelf) - if err != nil { - t.Log("create shelf mysteries failed") - t.Fail() - } - if (response.OK.Name != "shelves/1") || - (response.OK.Theme != "mysteries") { - t.Log("create shelf mysteries failed") - t.Fail() - } - } - // add another shelf - { - var shelf bookstore.Shelf - shelf.Theme = "comedies" - response, err := b.CreateShelf(shelf) - if err != nil { - t.Log("create shelf comedies failed") - t.Fail() - } - if (response.OK.Name != "shelves/2") || - (response.OK.Theme != "comedies") { - t.Log("create shelf comedies failed") - t.Fail() - } - } - // get the first shelf that was added - { - response, err := b.GetShelf(1) - if err != nil { - t.Log("get shelf mysteries failed") - t.Fail() - } - if (response.OK.Name != "shelves/1") || - (response.OK.Theme != "mysteries") { - t.Log("get shelf mysteries failed") - t.Fail() - } - } - // list shelves and verify that there are 2 - { - response, err := b.ListShelves() - if err != nil { - t.Log("list shelves failed") - t.Fail() - } - if len(response.OK.Shelves) != 2 { - t.Log("list shelves failed") - t.Fail() - } - } - // delete a shelf - { - err := b.DeleteShelf(2) - if err != nil { - t.Log("delete shelf failed") - t.Fail() - } - } - // list shelves and verify that there is only 1 - { - response, err := b.ListShelves() - if err != nil { - t.Log("list shelves failed") - t.Fail() - } - if len(response.OK.Shelves) != 1 { - t.Log("list shelves failed") - t.Fail() - } - } - // list books on a shelf, verify that there are none - { - response, err := b.ListBooks(1) - if err != nil { - t.Log("list books failed") - t.Fail() - } - if len(response.OK.Books) != 0 { - t.Log("list books failed") - t.Fail() - } - } - // create a book - { - var book bookstore.Book - book.Author = "Agatha Christie" - book.Title = "And Then There Were None" - _, err := b.CreateBook(1, book) - if err != nil { - t.Log("create book failed") - t.Fail() - } - } - // create another book - { - var book bookstore.Book - book.Author = "Agatha Christie" - book.Title = "Murder on the Orient Express" - _, err := b.CreateBook(1, book) - if err != nil { - t.Log("create book failed") - t.Fail() - } - } - // get the first book that was added - { - _, err := b.GetBook(1, 1) - if err != nil { - t.Log("get book failed") - t.Fail() - } - } - // list the books on a shelf and verify that there are 2 - { - response, err := b.ListBooks(1) - if err != nil { - t.Log("list books failed") - t.Fail() - } - if len(response.OK.Books) != 2 { - t.Log("list books failed") - t.Fail() - } - } - // delete a book - { - err := b.DeleteBook(1, 2) - if err != nil { - t.Log("delete book failed") - t.Fail() - } - } - // list the books on a shelf and verify that is only 1 - { - response, err := b.ListBooks(1) - if err != nil { - t.Log("list books failed") - t.Fail() - } - if len(response.OK.Books) != 1 { - t.Log("list books failed") - t.Fail() - } - } - // verify the handling of a badly-formed request - { - req, err := http.NewRequest("POST", service+"/shelves", strings.NewReader("")) - if err != nil { - t.Log("bad request failed") - return - } - resp, err := http.DefaultClient.Do(req) - if err != nil { - return - } - // we expect a 400 (Bad Request) code - if resp.StatusCode != 400 { - t.Log("bad request failed") - t.Fail() - } - return - } -} diff --git a/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v3.0/bookstore/service/app.yaml b/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v3.0/bookstore/service/app.yaml deleted file mode 100644 index 9c262ce193..0000000000 --- a/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v3.0/bookstore/service/app.yaml +++ /dev/null @@ -1,9 +0,0 @@ -application: bookstore -version: 1 -runtime: go -api_version: go1 -handlers: -- url: /.* - script: _go_app -- url: / - static_dir: static diff --git a/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v3.0/bookstore/service/init.go b/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v3.0/bookstore/service/init.go deleted file mode 100644 index 447b28e1d3..0000000000 --- a/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v3.0/bookstore/service/init.go +++ /dev/null @@ -1,27 +0,0 @@ -/* - Copyright 2017 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 main - -import ( - "github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v3.0/bookstore/bookstore" -) - -// init() is called when the package is loaded -// this allows this app to be trivially deployed to Google App Engine, which does not call main() -func init() { - bookstore.Initialize(NewService()) -} diff --git a/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v3.0/bookstore/service/main.go b/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v3.0/bookstore/service/main.go deleted file mode 100644 index 863f76fa85..0000000000 --- a/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v3.0/bookstore/service/main.go +++ /dev/null @@ -1,34 +0,0 @@ -// +build !appengine - -// This file is omitted when the app is built for Google App Engine - -/* - Copyright 2017 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 main - -import ( - "log" - - "github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v3.0/bookstore/bookstore" -) - -func main() { - err := bookstore.ServeHTTP(":8080") - if err != nil { - log.Printf("%v", err) - } -} diff --git a/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v3.0/bookstore/service/service.go b/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v3.0/bookstore/service/service.go deleted file mode 100644 index d2a3903e2b..0000000000 --- a/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v3.0/bookstore/service/service.go +++ /dev/null @@ -1,195 +0,0 @@ -/* - Copyright 2017 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 main - -import ( - "errors" - "fmt" - "net/http" - "sync" - - "github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v3.0/bookstore/bookstore" -) - -// -// The Service type implements a bookstore service. -// All objects are managed in an in-memory non-persistent store. -// -type Service struct { - // shelves are stored in a map keyed by shelf id - // books are stored in a two level map, keyed first by shelf id and then by book id - Shelves map[int64]*bookstore.Shelf - Books map[int64]map[int64]*bookstore.Book - LastShelfID int64 // the id of the last shelf that was added - LastBookID int64 // the id of the last book that was added - Mutex sync.Mutex // global mutex to synchronize service access -} - -func NewService() *Service { - return &Service{ - Shelves: make(map[int64]*bookstore.Shelf), - Books: make(map[int64]map[int64]*bookstore.Book), - } -} - -func (service *Service) ListShelves(responses *bookstore.ListShelvesResponses) (err error) { - service.Mutex.Lock() - defer service.Mutex.Unlock() - // copy shelf ids from Shelves map keys - shelves := make([]bookstore.Shelf, 0, len(service.Shelves)) - for _, shelf := range service.Shelves { - shelves = append(shelves, *shelf) - } - response := &bookstore.ListShelvesResponse{} - response.Shelves = shelves - (*responses).OK = response - return err -} - -func (service *Service) CreateShelf(parameters *bookstore.CreateShelfParameters, responses *bookstore.CreateShelfResponses) (err error) { - service.Mutex.Lock() - defer service.Mutex.Unlock() - // assign an id and name to a shelf and add it to the Shelves map. - shelf := parameters.Shelf - service.LastShelfID++ - sid := service.LastShelfID - shelf.Name = fmt.Sprintf("shelves/%d", sid) - service.Shelves[sid] = &shelf - (*responses).OK = &shelf - return err -} - -func (service *Service) DeleteShelves() (err error) { - service.Mutex.Lock() - defer service.Mutex.Unlock() - // delete everything by reinitializing the Shelves and Books maps. - service.Shelves = make(map[int64]*bookstore.Shelf) - service.Books = make(map[int64]map[int64]*bookstore.Book) - service.LastShelfID = 0 - service.LastBookID = 0 - return nil -} - -func (service *Service) GetShelf(parameters *bookstore.GetShelfParameters, responses *bookstore.GetShelfResponses) (err error) { - service.Mutex.Lock() - defer service.Mutex.Unlock() - // look up a shelf from the Shelves map. - shelf, err := service.getShelf(parameters.Shelf) - if err != nil { - (*responses).Default = &bookstore.Error{Code: int32(http.StatusNotFound), Message: err.Error()} - return nil - } else { - (*responses).OK = shelf - return nil - } -} - -func (service *Service) DeleteShelf(parameters *bookstore.DeleteShelfParameters) (err error) { - service.Mutex.Lock() - defer service.Mutex.Unlock() - // delete a shelf by removing the shelf from the Shelves map and the associated books from the Books map. - delete(service.Shelves, parameters.Shelf) - delete(service.Books, parameters.Shelf) - return nil -} - -func (service *Service) ListBooks(parameters *bookstore.ListBooksParameters, responses *bookstore.ListBooksResponses) (err error) { - service.Mutex.Lock() - defer service.Mutex.Unlock() - // list the books in a shelf - _, err = service.getShelf(parameters.Shelf) - if err != nil { - (*responses).Default = &bookstore.Error{Code: int32(http.StatusNotFound), Message: err.Error()} - return nil - } - shelfBooks := service.Books[parameters.Shelf] - books := make([]bookstore.Book, 0, len(shelfBooks)) - for _, book := range shelfBooks { - books = append(books, *book) - } - response := &bookstore.ListBooksResponse{} - response.Books = books - (*responses).OK = response - return nil -} - -func (service *Service) CreateBook(parameters *bookstore.CreateBookParameters, responses *bookstore.CreateBookResponses) (err error) { - service.Mutex.Lock() - defer service.Mutex.Unlock() - // return "not found" if the shelf doesn't exist - shelf, err := service.getShelf(parameters.Shelf) - if err != nil { - (*responses).Default = &bookstore.Error{Code: int32(http.StatusNotFound), Message: err.Error()} - return nil - } - // assign an id and name to a book and add it to the Books map. - service.LastBookID++ - bid := service.LastBookID - book := parameters.Book - book.Name = fmt.Sprintf("%s/books/%d", shelf.Name, bid) - if service.Books[parameters.Shelf] == nil { - service.Books[parameters.Shelf] = make(map[int64]*bookstore.Book) - } - service.Books[parameters.Shelf][bid] = &book - (*responses).OK = &book - return err -} - -func (service *Service) GetBook(parameters *bookstore.GetBookParameters, responses *bookstore.GetBookResponses) (err error) { - service.Mutex.Lock() - defer service.Mutex.Unlock() - // get a book from the Books map - book, err := service.getBook(parameters.Shelf, parameters.Book) - if err != nil { - (*responses).Default = &bookstore.Error{Code: int32(http.StatusNotFound), Message: err.Error()} - } else { - (*responses).OK = book - } - return nil -} - -func (service *Service) DeleteBook(parameters *bookstore.DeleteBookParameters) (err error) { - service.Mutex.Lock() - defer service.Mutex.Unlock() - // delete a book by removing the book from the Books map. - delete(service.Books[parameters.Shelf], parameters.Book) - return nil -} - -// internal helpers - -func (service *Service) getShelf(sid int64) (shelf *bookstore.Shelf, err error) { - shelf, ok := service.Shelves[sid] - if !ok { - return nil, errors.New(fmt.Sprintf("Couldn't find shelf %d", sid)) - } else { - return shelf, nil - } -} - -func (service *Service) getBook(sid int64, bid int64) (book *bookstore.Book, err error) { - _, err = service.getShelf(sid) - if err != nil { - return nil, err - } - book, ok := service.Books[sid][bid] - if !ok { - return nil, errors.New(fmt.Sprintf("Couldn't find book %d on shelf %d", bid, sid)) - } else { - return book, nil - } -} diff --git a/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v3.0/urlshortener/README.md b/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v3.0/urlshortener/README.md deleted file mode 100644 index 24b23fd4fe..0000000000 --- a/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v3.0/urlshortener/README.md +++ /dev/null @@ -1,26 +0,0 @@ -# urlshortener sample client - -## Steps to run: - -1. Generate the OpenAPI 3.0 description using `disco` (in the `gnostic/apps` directory). - - disco get urlshortener --openapi3 - -2. (optional) View the JSON OpenAPI 3.0 description. - - gnostic openapi3-urlshortener-v1.pb --json-out=- - -3. Generate the urlshortener client. - - gnostic openapi3-urlshortener-v1.pb --go-client-out=urlshortener - -4. Build the client. - - go install - -5. Download `client_secrets.json` from the Google Cloud Developer Console. - -6. Run the client - - urlshortener - diff --git a/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v3.0/urlshortener/main.go b/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v3.0/urlshortener/main.go deleted file mode 100644 index 0db26a81a1..0000000000 --- a/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v3.0/urlshortener/main.go +++ /dev/null @@ -1,62 +0,0 @@ -package main - -import ( - "fmt" - "log" - - "github.com/docopt/docopt-go" - "github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/googleauth" - "github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v3.0/urlshortener/urlshortener" -) - -func main() { - usage := ` -Usage: - urlshortener get - urlshortener list - urlshortener insert - ` - arguments, err := docopt.Parse(usage, nil, false, "URL Shortener 1.0", false) - if err != nil { - log.Fatalf("%+v", err) - } - - path := "https://www.googleapis.com/urlshortener/v1" // this should be generated - - client, err := googleauth.NewOAuth2Client("https://www.googleapis.com/auth/urlshortener") - if err != nil { - log.Fatalf("Error building OAuth client: %v", err) - } - c := urlshortener.NewClient(path, client) - - // get - if arguments["get"].(bool) { - response, err := c.Urlshortener_Url_Get("FULL", arguments[""].(string)) - if err != nil { - log.Fatalf("%+v", err) - } - fmt.Println(response.Default.LongUrl) - } - - // list - if arguments["list"].(bool) { - response, err := c.Urlshortener_Url_List("", "") - if err != nil { - log.Fatalf("%+v", err) - } - for _, item := range response.Default.Items { - fmt.Printf("%-40s %s\n", item.Id, item.LongUrl) - } - } - - // insert - if arguments["insert"].(bool) { - var url urlshortener.Url - url.LongUrl = arguments[""].(string) - response, err := c.Urlshortener_Url_Insert(url) - if err != nil { - log.Fatalf("%+v", err) - } - fmt.Printf("%+v\n", response.Default.Id) - } -} diff --git a/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v3.0/urlshortener/urlshortener/urlshortener.go b/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v3.0/urlshortener/urlshortener/urlshortener.go deleted file mode 100644 index 5084f9c12b..0000000000 --- a/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/examples/v3.0/urlshortener/urlshortener/urlshortener.go +++ /dev/null @@ -1,19 +0,0 @@ -/* - Copyright 2017 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 urlshortener exists to allow this repo to work with recursive go get. -// It will be filled in with auto generated code. -package urlshortener diff --git a/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/goimports.go b/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/goimports.go deleted file mode 100644 index a2cbd089b1..0000000000 --- a/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/goimports.go +++ /dev/null @@ -1,50 +0,0 @@ -// Copyright 2017 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 main - -import ( - "io/ioutil" - "log" - "os" - "os/exec" - "strings" -) - -// Run goimports to format and update imports statements in generated code. -func goimports(filename string, inputBytes []byte) (outputBytes []byte, err error) { - if false { - return inputBytes, nil - } - cmd := exec.Command(os.Getenv("GOPATH") + "/bin/goimports") - input, _ := cmd.StdinPipe() - output, _ := cmd.StdoutPipe() - cmderr, _ := cmd.StderrPipe() - err = cmd.Start() - if err != nil { - return - } - input.Write(inputBytes) - input.Close() - - outputBytes, _ = ioutil.ReadAll(output) - errors, _ := ioutil.ReadAll(cmderr) - if len(errors) > 0 { - errors := strings.Replace(string(errors), "", filename, -1) - log.Printf("Syntax errors in generated code:\n%s", errors) - return inputBytes, nil - } - - return -} diff --git a/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/language.go b/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/language.go deleted file mode 100644 index aa5e58feb3..0000000000 --- a/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/language.go +++ /dev/null @@ -1,123 +0,0 @@ -// Copyright 2017 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 main - -import ( - surface "github.com/googleapis/gnostic/surface" - "strings" - "unicode" -) - -type GoLanguageModel struct{} - -func NewGoLanguageModel() *GoLanguageModel { - return &GoLanguageModel{} -} - -// Prepare sets language-specific properties for all types and methods. -func (language *GoLanguageModel) Prepare(model *surface.Model) { - - for _, t := range model.Types { - // determine the type used for Go language implementation of the type - t.TypeName = strings.Title(filteredTypeName(t.Name)) - - for _, f := range t.Fields { - f.FieldName = goFieldName(f.Name) - f.ParameterName = goParameterName(f.Name) - switch f.Type { - case "number": - f.NativeType = "int" - case "integer": - switch f.Format { - case "int32": - f.NativeType = "int32" - case "int64": - f.NativeType = "int64" - default: - f.NativeType = "int64" - } - case "object": - f.NativeType = "interface{}" - case "string": - f.NativeType = "string" - default: - f.NativeType = strings.Title(f.Type) - } - } - } - - for _, m := range model.Methods { - m.HandlerName = "Handle" + m.Name - m.ProcessorName = m.Name - m.ClientName = m.Name - } -} - -func goParameterName(name string) string { - // lowercase first letter - a := []rune(name) - a[0] = unicode.ToLower(a[0]) - name = string(a) - // replace dots with underscores - name = strings.Replace(name, ".", "_", -1) - // replaces dashes with underscores - name = strings.Replace(name, "-", "_", -1) - // avoid reserved words - if name == "type" { - return "myType" - } - return name -} - -func goFieldName(name string) string { - name = strings.Replace(name, ".", "_", -1) - name = strings.Replace(name, "-", "_", -1) - name = snakeCaseToCamelCaseWithCapitalizedFirstLetter(name) - // avoid integers - if name == "200" { - return "OK" - } else if unicode.IsDigit(rune(name[0])) { - return "Code" + name - } - return name -} - -func snakeCaseToCamelCaseWithCapitalizedFirstLetter(snakeCase string) (camelCase string) { - isToUpper := false - for _, runeValue := range snakeCase { - if isToUpper { - camelCase += strings.ToUpper(string(runeValue)) - isToUpper = false - } else { - if runeValue == '_' { - isToUpper = true - } else { - camelCase += string(runeValue) - } - } - } - camelCase = strings.Title(camelCase) - return -} - -func filteredTypeName(typeName string) (name string) { - // first take the last path segment - parts := strings.Split(typeName, "/") - name = parts[len(parts)-1] - // then take the last part of a dotted name - parts = strings.Split(name, ".") - name = parts[len(parts)-1] - return name -} diff --git a/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/linewriter.go b/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/linewriter.go deleted file mode 100644 index d091601471..0000000000 --- a/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/linewriter.go +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright 2017 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 main - -import "bytes" - -type LineWriter struct { - bytes.Buffer -} - -func NewLineWriter() *LineWriter { - return &LineWriter{} -} - -func (w *LineWriter) WriteLine(line string) { - w.WriteString(line + "\n") -} diff --git a/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/main.go b/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/main.go deleted file mode 100644 index 47d0cf6922..0000000000 --- a/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/main.go +++ /dev/null @@ -1,76 +0,0 @@ -// Copyright 2017 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. - -// gnostic_go_generator is a sample Gnostic plugin that generates Go -// code that supports an API. -package main - -import ( - "encoding/json" - "errors" - "strings" - - "github.com/golang/protobuf/proto" - plugins "github.com/googleapis/gnostic/plugins" - surface "github.com/googleapis/gnostic/surface" -) - -// This is the main function for the code generation plugin. -func main() { - env, err := plugins.NewEnvironment() - env.RespondAndExitIfError(err) - - packageName := env.Request.OutputPath - - // Use the name used to run the plugin to decide which files to generate. - var files []string - switch { - case strings.Contains(env.Invocation, "gnostic-go-client"): - files = []string{"client.go", "types.go", "constants.go"} - case strings.Contains(env.Invocation, "gnostic-go-server"): - files = []string{"server.go", "provider.go", "types.go", "constants.go"} - default: - files = []string{"client.go", "server.go", "provider.go", "types.go", "constants.go"} - } - - for _, model := range env.Request.Models { - switch model.TypeUrl { - case "surface.v1.Model": - surfaceModel := &surface.Model{} - err = proto.Unmarshal(model.Value, surfaceModel) - if err == nil { - // Customize the code surface model for Go - NewGoLanguageModel().Prepare(surfaceModel) - - modelJSON, _ := json.MarshalIndent(surfaceModel, "", " ") - modelFile := &plugins.File{Name: "model.json", Data: modelJSON} - env.Response.Files = append(env.Response.Files, modelFile) - - // Create the renderer. - renderer, err := NewServiceRenderer(surfaceModel) - renderer.Package = packageName - env.RespondAndExitIfError(err) - - // Run the renderer to generate files and add them to the response object. - err = renderer.Render(env.Response, files) - env.RespondAndExitIfError(err) - - // Return with success. - env.RespondAndExit() - } - } - } - err = errors.New("No generated code surface model is available.") - env.RespondAndExitIfError(err) -} diff --git a/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/render_client.go b/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/render_client.go deleted file mode 100644 index 363e6648ce..0000000000 --- a/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/render_client.go +++ /dev/null @@ -1,178 +0,0 @@ -// Copyright 2017 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 main - -import ( - "strings" - - surface "github.com/googleapis/gnostic/surface" -) - -// ParameterList returns a string representation of a method's parameters -func ParameterList(parametersType *surface.Type) string { - result := "" - if parametersType != nil { - for _, field := range parametersType.Fields { - result += field.ParameterName + " " + field.NativeType + "," + "\n" - } - } - return result -} - -func (renderer *Renderer) RenderClient() ([]byte, error) { - f := NewLineWriter() - - f.WriteLine("// GENERATED FILE: DO NOT EDIT!") - f.WriteLine(``) - f.WriteLine("package " + renderer.Package) - - // imports will be automatically added by goimports - - f.WriteLine(`// Client represents an API client.`) - f.WriteLine(`type Client struct {`) - f.WriteLine(` service string`) - f.WriteLine(` APIKey string`) - f.WriteLine(` client *http.Client`) - f.WriteLine(`}`) - - f.WriteLine(`// NewClient creates an API client.`) - f.WriteLine(`func NewClient(service string, c *http.Client) *Client {`) - f.WriteLine(` client := &Client{}`) - f.WriteLine(` client.service = service`) - f.WriteLine(` if c != nil {`) - f.WriteLine(` client.client = c`) - f.WriteLine(` } else {`) - f.WriteLine(` client.client = http.DefaultClient`) - f.WriteLine(` }`) - f.WriteLine(` return client`) - f.WriteLine(`}`) - - for _, method := range renderer.Model.Methods { - parametersType := renderer.Model.TypeWithTypeName(method.ParametersTypeName) - responsesType := renderer.Model.TypeWithTypeName(method.ResponsesTypeName) - - f.WriteLine(commentForText(method.Description)) - f.WriteLine(`func (client *Client) ` + method.ClientName + `(`) - f.WriteLine(ParameterList(parametersType) + `) (`) - if method.ResponsesTypeName == "" { - f.WriteLine(`err error,`) - } else { - f.WriteLine(`response *` + method.ResponsesTypeName + `,`) - f.WriteLine(`err error,`) - } - f.WriteLine(` ) {`) - - path := method.Path - path = strings.Replace(path, "{+", "{", -1) - f.WriteLine(`path := client.service + "` + path + `"`) - - if parametersType != nil { - if parametersType.HasFieldWithPosition(surface.Position_PATH) { - for _, field := range parametersType.Fields { - if field.Position == surface.Position_PATH { - f.WriteLine(`path = strings.Replace(path, "{` + field.Name + `}", fmt.Sprintf("%v", ` + - field.ParameterName + `), 1)`) - } - } - } - if parametersType.HasFieldWithPosition(surface.Position_QUERY) { - f.WriteLine(`v := url.Values{}`) - for _, field := range parametersType.Fields { - if field.Position == surface.Position_QUERY { - if field.NativeType == "string" { - f.WriteLine(`if (` + field.ParameterName + ` != "") {`) - f.WriteLine(` v.Set("` + field.Name + `", ` + field.ParameterName + `)`) - f.WriteLine(`}`) - } - } - } - f.WriteLine(`if client.APIKey != "" {`) - f.WriteLine(` v.Set("key", client.APIKey)`) - f.WriteLine(`}`) - f.WriteLine(`if len(v) > 0 {`) - f.WriteLine(` path = path + "?" + v.Encode()`) - f.WriteLine(`}`) - } - } - - if method.Method == "POST" { - f.WriteLine(`body := new(bytes.Buffer)`) - if parametersType != nil { - f.WriteLine(`json.NewEncoder(body).Encode(` + parametersType.FieldWithPosition(surface.Position_BODY).Name + `)`) - } - f.WriteLine(`req, err := http.NewRequest("` + method.Method + `", path, body)`) - f.WriteLine(`reqHeaders := make(http.Header)`) - f.WriteLine(`reqHeaders.Set("Content-Type", "application/json")`) - f.WriteLine(`req.Header = reqHeaders`) - } else { - f.WriteLine(`req, err := http.NewRequest("` + method.Method + `", path, nil)`) - } - f.WriteLine(`if err != nil {return}`) - f.WriteLine(`resp, err := client.client.Do(req)`) - f.WriteLine(`if err != nil {return}`) - f.WriteLine(`defer resp.Body.Close()`) - f.WriteLine(`if resp.StatusCode != 200 {`) - - if responsesType != nil { - f.WriteLine(` return nil, errors.New(resp.Status)`) - } else { - f.WriteLine(` return errors.New(resp.Status)`) - } - f.WriteLine(`}`) - - if responsesType != nil { - f.WriteLine(`response = &` + responsesType.Name + `{}`) - - f.WriteLine(`switch {`) - // first handle everything that isn't "default" - for _, responseField := range responsesType.Fields { - if responseField.Name != "default" { - f.WriteLine(`case resp.StatusCode == ` + responseField.Name + `:`) - f.WriteLine(` body, err := ioutil.ReadAll(resp.Body)`) - f.WriteLine(` if err != nil {return nil, err}`) - f.WriteLine(` result := &` + responseField.NativeType + `{}`) - f.WriteLine(` err = json.Unmarshal(body, result)`) - f.WriteLine(` if err != nil {return nil, err}`) - f.WriteLine(` response.` + responseField.FieldName + ` = result`) - } - } - - // then handle "default" - hasDefault := false - for _, responseField := range responsesType.Fields { - if responseField.Name == "default" { - hasDefault = true - f.WriteLine(`default:`) - f.WriteLine(` defer resp.Body.Close()`) - f.WriteLine(` body, err := ioutil.ReadAll(resp.Body)`) - f.WriteLine(` if err != nil {return nil, err}`) - f.WriteLine(` result := &` + responseField.NativeType + `{}`) - f.WriteLine(` err = json.Unmarshal(body, result)`) - f.WriteLine(` if err != nil {return nil, err}`) - f.WriteLine(` response.` + responseField.FieldName + ` = result`) - } - } - if !hasDefault { - f.WriteLine(`default:`) - f.WriteLine(` break`) - } - f.WriteLine(`}`) // close switch statement - } - f.WriteLine("return") - f.WriteLine("}") - } - - return f.Bytes(), nil -} diff --git a/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/render_constants.go b/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/render_constants.go deleted file mode 100644 index 4a27c63c82..0000000000 --- a/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/render_constants.go +++ /dev/null @@ -1,30 +0,0 @@ -// Copyright 2017 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 main - -func (renderer *Renderer) RenderConstants() ([]byte, error) { - f := NewLineWriter() - f.WriteLine("// GENERATED FILE: DO NOT EDIT!") - f.WriteLine(``) - f.WriteLine("package " + renderer.Package) - f.WriteLine(``) - f.WriteLine(`// ServicePath is the base URL of the service.`) - f.WriteLine(`const ServicePath = "` + `"`) - f.WriteLine(``) - f.WriteLine(`// OAuthScopes lists the OAuth scopes required by the service.`) - f.WriteLine(`const OAuthScopes = "` + `"`) - - return f.Bytes(), nil -} diff --git a/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/render_provider.go b/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/render_provider.go deleted file mode 100644 index 9031abbe84..0000000000 --- a/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/render_provider.go +++ /dev/null @@ -1,64 +0,0 @@ -// Copyright 2017 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 main - -import ( - "strings" -) - -func (renderer *Renderer) RenderProvider() ([]byte, error) { - f := NewLineWriter() - f.WriteLine("// GENERATED FILE: DO NOT EDIT!\n") - f.WriteLine("package " + renderer.Package) - f.WriteLine(``) - f.WriteLine(`// To create a server, first write a class that implements this interface.`) - f.WriteLine(`// Then pass an instance of it to Initialize().`) - f.WriteLine(`type Provider interface {`) - for _, method := range renderer.Model.Methods { - parametersType := renderer.Model.TypeWithTypeName(method.ParametersTypeName) - responsesType := renderer.Model.TypeWithTypeName(method.ResponsesTypeName) - f.WriteLine(``) - f.WriteLine(commentForText(method.Description)) - if parametersType != nil { - if responsesType != nil { - f.WriteLine(method.ProcessorName + - `(parameters *` + parametersType.Name + - `, responses *` + responsesType.Name + `) (err error)`) - } else { - f.WriteLine(method.ProcessorName + `(parameters *` + parametersType.Name + `) (err error)`) - } - } else { - if responsesType != nil { - f.WriteLine(method.ProcessorName + `(responses *` + responsesType.Name + `) (err error)`) - } else { - f.WriteLine(method.ProcessorName + `() (err error)`) - } - } - } - f.WriteLine(`}`) - return f.Bytes(), nil -} - -func commentForText(text string) string { - result := "" - lines := strings.Split(text, "\n") - for i, line := range lines { - if i > 0 { - result += "\n" - } - result += "// " + line - } - return result -} diff --git a/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/render_server.go b/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/render_server.go deleted file mode 100644 index 73ecc6f3a6..0000000000 --- a/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/render_server.go +++ /dev/null @@ -1,168 +0,0 @@ -// Copyright 2017 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 main - -import ( - "fmt" - - surface "github.com/googleapis/gnostic/surface" -) - -func (renderer *Renderer) RenderServer() ([]byte, error) { - f := NewLineWriter() - f.WriteLine("// GENERATED FILE: DO NOT EDIT!") - f.WriteLine(``) - f.WriteLine("package " + renderer.Package) - f.WriteLine(``) - imports := []string{ - "github.com/gorilla/mux", - "net/http", - } - f.WriteLine(``) - f.WriteLine(`import (`) - for _, imp := range imports { - f.WriteLine(`"` + imp + `"`) - } - f.WriteLine(`)`) - - f.WriteLine(`func intValue(s string) (v int64) {`) - f.WriteLine(` v, _ = strconv.ParseInt(s, 10, 64)`) - f.WriteLine(` return v`) - f.WriteLine(`}`) - f.WriteLine(``) - f.WriteLine(`// This package-global variable holds the user-written Provider for API services.`) - f.WriteLine(`// See the Provider interface for details.`) - f.WriteLine(`var provider Provider`) - f.WriteLine(``) - f.WriteLine(`// These handlers serve API methods.`) - f.WriteLine(``) - - for _, method := range renderer.Model.Methods { - parametersType := renderer.Model.TypeWithTypeName(method.ParametersTypeName) - responsesType := renderer.Model.TypeWithTypeName(method.ResponsesTypeName) - - f.WriteLine(`// Handler`) - f.WriteLine(commentForText(method.Description)) - f.WriteLine(`func ` + method.HandlerName + `(w http.ResponseWriter, r *http.Request) {`) - f.WriteLine(` var err error`) - if parametersType != nil { - f.WriteLine(`// instantiate the parameters structure`) - f.WriteLine(`parameters := &` + parametersType.Name + `{}`) - if method.Method == "POST" { - f.WriteLine(`// deserialize request from post data`) - f.WriteLine(`decoder := json.NewDecoder(r.Body)`) - f.WriteLine(`err = decoder.Decode(¶meters.` + - parametersType.FieldWithPosition(surface.Position_BODY).FieldName + `)`) - f.WriteLine(`if err != nil {`) - f.WriteLine(` w.WriteHeader(http.StatusBadRequest)`) - f.WriteLine(` w.Write([]byte(err.Error() + "\n"))`) - f.WriteLine(` return`) - f.WriteLine(`}`) - } - f.WriteLine(`// get request fields in path and query parameters`) - if parametersType.HasFieldWithPosition(surface.Position_PATH) { - f.WriteLine(`vars := mux.Vars(r)`) - } - if parametersType.HasFieldWithPosition(surface.Position_FORMDATA) { - f.WriteLine(`r.ParseForm()`) - } - for _, field := range parametersType.Fields { - if field.Position == surface.Position_PATH { - if field.Type == "string" { - f.WriteLine(fmt.Sprintf("// %+v", field)) - f.WriteLine(`if value, ok := vars["` + field.Name + `"]; ok {`) - f.WriteLine(` parameters.` + field.FieldName + ` = value`) - f.WriteLine(`}`) - } else { - f.WriteLine(`if value, ok := vars["` + field.Name + `"]; ok {`) - f.WriteLine(` parameters.` + field.FieldName + ` = intValue(value)`) - f.WriteLine(`}`) - } - } else if field.Position == surface.Position_FORMDATA { - f.WriteLine(`if len(r.Form["` + field.Name + `"]) > 0 {`) - f.WriteLine(` parameters.` + field.FieldName + ` = intValue(r.Form["` + field.Name + `"][0])`) - f.WriteLine(`}`) - } - } - } - if responsesType != nil { - f.WriteLine(`// instantiate the responses structure`) - f.WriteLine(`responses := &` + method.ResponsesTypeName + `{}`) - } - f.WriteLine(`// call the service provider`) - callLine := `err = provider.` + method.ProcessorName - if parametersType != nil { - if responsesType != nil { - callLine += `(parameters, responses)` - } else { - callLine += `(parameters)` - } - } else { - if responsesType != nil { - callLine += `(responses)` - } else { - callLine += `()` - } - } - f.WriteLine(callLine) - f.WriteLine(`if err == nil {`) - if responsesType != nil { - if responsesType.HasFieldWithName("OK") { - f.WriteLine(`if responses.OK != nil {`) - f.WriteLine(` // write the normal response`) - f.WriteLine(` encoder := json.NewEncoder(w)`) - f.WriteLine(` encoder.Encode(responses.OK)`) - f.WriteLine(` return`) - f.WriteLine(`}`) - } - if responsesType.HasFieldWithName("Default") { - f.WriteLine(`if responses.Default != nil {`) - f.WriteLine(` // write the error response`) - if responsesType.FieldWithName("Default").ServiceType(renderer.Model).FieldWithName("Code") != nil { - f.WriteLine(` w.WriteHeader(int(responses.Default.Code))`) - } - f.WriteLine(` encoder := json.NewEncoder(w)`) - f.WriteLine(` encoder.Encode(responses.Default)`) - f.WriteLine(` return`) - f.WriteLine(`}`) - } - } - f.WriteLine(`} else {`) - f.WriteLine(` w.WriteHeader(http.StatusInternalServerError)`) - f.WriteLine(` w.Write([]byte(err.Error() + "\n"))`) - f.WriteLine(` return`) - f.WriteLine(`}`) - f.WriteLine(`}`) - f.WriteLine(``) - } - f.WriteLine(`// Initialize the API service.`) - f.WriteLine(`func Initialize(p Provider) {`) - f.WriteLine(` provider = p`) - f.WriteLine(` var router = mux.NewRouter()`) - for _, method := range renderer.Model.Methods { - f.WriteLine(`router.HandleFunc("` + method.Path + `", ` + method.HandlerName + `).Methods("` + method.Method + `")`) - } - f.WriteLine(` http.Handle("/", router)`) - f.WriteLine(`}`) - f.WriteLine(``) - f.WriteLine(`// Provide the API service over HTTP.`) - f.WriteLine(`func ServeHTTP(address string) error {`) - f.WriteLine(` if provider == nil {`) - f.WriteLine(` return errors.New("Use ` + renderer.Package + `.Initialize() to set a service provider.")`) - f.WriteLine(` }`) - f.WriteLine(` return http.ListenAndServe(address, nil)`) - f.WriteLine(`}`) - return f.Bytes(), nil -} diff --git a/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/render_types.go b/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/render_types.go deleted file mode 100644 index e77707e1c2..0000000000 --- a/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/render_types.go +++ /dev/null @@ -1,57 +0,0 @@ -// Copyright 2017 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 main - -import ( - surface "github.com/googleapis/gnostic/surface" -) - -func (renderer *Renderer) RenderTypes() ([]byte, error) { - f := NewLineWriter() - f.WriteLine(`// GENERATED FILE: DO NOT EDIT!`) - f.WriteLine(``) - f.WriteLine(`package ` + renderer.Package) - f.WriteLine(`// Types used by the API.`) - for _, modelType := range renderer.Model.Types { - f.WriteLine(`// ` + modelType.Description) - if modelType.Kind == surface.TypeKind_STRUCT { - f.WriteLine(`type ` + modelType.TypeName + ` struct {`) - for _, field := range modelType.Fields { - prefix := "" - if field.Kind == surface.FieldKind_REFERENCE { - prefix = "*" - } else if field.Kind == surface.FieldKind_ARRAY { - prefix = "[]" - } else if field.Kind == surface.FieldKind_MAP { - prefix = "map[string]" - } - f.WriteLine(field.FieldName + ` ` + prefix + field.NativeType + jsonTag(field)) - } - f.WriteLine(`}`) - } else if modelType.Kind == surface.TypeKind_OBJECT { - f.WriteLine(`type ` + modelType.TypeName + ` map[string]` + modelType.ContentType) - } else { - f.WriteLine(`type ` + modelType.TypeName + ` interface {}`) - } - } - return f.Bytes(), nil -} - -func jsonTag(field *surface.Field) string { - if field.Serialize { - return " `json:" + `"` + field.Name + `,omitempty"` + "`" - } - return "" -} diff --git a/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/renderer.go b/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/renderer.go deleted file mode 100644 index 7c9f9d76f0..0000000000 --- a/vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/renderer.go +++ /dev/null @@ -1,67 +0,0 @@ -// Copyright 2017 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 main - -import ( - "fmt" - _ "os" - "path/filepath" - - plugins "github.com/googleapis/gnostic/plugins" - surface "github.com/googleapis/gnostic/surface" -) - -// Renderer generates code for a surface.Model. -type Renderer struct { - Model *surface.Model - Package string // package name -} - -// NewServiceRenderer creates a renderer. -func NewServiceRenderer(model *surface.Model) (renderer *Renderer, err error) { - renderer = &Renderer{} - renderer.Model = model - return renderer, nil -} - -// Generate runs the renderer to generate the named files. -func (renderer *Renderer) Render(response *plugins.Response, files []string) (err error) { - for _, filename := range files { - file := &plugins.File{Name: filename} - switch filename { - case "client.go": - file.Data, err = renderer.RenderClient() - case "types.go": - file.Data, err = renderer.RenderTypes() - case "provider.go": - file.Data, err = renderer.RenderProvider() - case "server.go": - file.Data, err = renderer.RenderServer() - case "constants.go": - file.Data, err = renderer.RenderConstants() - default: - file.Data = nil - } - if err != nil { - response.Errors = append(response.Errors, fmt.Sprintf("ERROR %v", err)) - } - // run generated Go files through goimports - if filepath.Ext(file.Name) == ".go" { - file.Data, err = goimports(file.Name, file.Data) - } - response.Files = append(response.Files, file) - } - return -} diff --git a/vendor/github.com/googleapis/gnostic/printer/code.go b/vendor/github.com/googleapis/gnostic/printer/code.go index 1afc252f1d..f8fd3db47c 100644 --- a/vendor/github.com/googleapis/gnostic/printer/code.go +++ b/vendor/github.com/googleapis/gnostic/printer/code.go @@ -38,6 +38,20 @@ func (c *Code) Print(args ...interface{}) { c.text += "\n" } +// PrintIf adds a line of code using the current indentation if a condition is true. Accepts printf-style format strings and arguments. +func (c *Code) PrintIf(condition bool, args ...interface{}) { + if !condition { + return + } + if len(args) > 0 { + for i := 0; i < c.indent; i++ { + c.text += indentation + } + c.text += fmt.Sprintf(args[0].(string), args[1:]...) + } + c.text += "\n" +} + // String returns the accumulated code as a string. func (c *Code) String() string { return c.text diff --git a/vendor/github.com/googleapis/gnostic/surface/model_openapiv2.go b/vendor/github.com/googleapis/gnostic/surface/model_openapiv2.go index 903d27ea7c..9ee95fcc2f 100644 --- a/vendor/github.com/googleapis/gnostic/surface/model_openapiv2.go +++ b/vendor/github.com/googleapis/gnostic/surface/model_openapiv2.go @@ -58,19 +58,21 @@ func (b *OpenAPI2Builder) build(document *openapiv2.Document) (err error) { } } // Collect service method descriptions from Paths section. - for _, pair := range document.Paths.Path { - v := pair.Value - if v.Get != nil { - b.buildMethodFromOperation(v.Get, "GET", pair.Name) - } - if v.Post != nil { - b.buildMethodFromOperation(v.Post, "POST", pair.Name) - } - if v.Put != nil { - b.buildMethodFromOperation(v.Put, "PUT", pair.Name) - } - if v.Delete != nil { - b.buildMethodFromOperation(v.Delete, "DELETE", pair.Name) + if document.Paths != nil { + for _, pair := range document.Paths.Path { + v := pair.Value + if v.Get != nil { + b.buildMethodFromOperation(v.Get, "GET", pair.Name) + } + if v.Post != nil { + b.buildMethodFromOperation(v.Post, "POST", pair.Name) + } + if v.Put != nil { + b.buildMethodFromOperation(v.Put, "PUT", pair.Name) + } + if v.Delete != nil { + b.buildMethodFromOperation(v.Delete, "DELETE", pair.Name) + } } } return err @@ -229,6 +231,9 @@ func (b *OpenAPI2Builder) typeForSchema(schema *openapiv2.Schema) (kind FieldKin if len(types) == 1 && types[0] == "number" { return FieldKind_SCALAR, "number", format } + if len(types) == 1 && types[0] == "boolean" { + return FieldKind_SCALAR, "boolean", format + } if len(types) == 1 && types[0] == "array" && schema.Items != nil { // we have an array.., but of what? items := schema.Items.Schema diff --git a/vendor/github.com/googleapis/gnostic/surface/model_openapiv3.go b/vendor/github.com/googleapis/gnostic/surface/model_openapiv3.go index eb82b27e46..9ab71ab1e9 100644 --- a/vendor/github.com/googleapis/gnostic/surface/model_openapiv3.go +++ b/vendor/github.com/googleapis/gnostic/surface/model_openapiv3.go @@ -24,6 +24,8 @@ import ( openapiv3 "github.com/googleapis/gnostic/OpenAPIv3" ) +var knownTypes = map[string]bool{"string": true, "integer": true, "number": true, "boolean": true, "array": true, "object": true} + // NewModelFromOpenAPIv3 builds a model of an API service for use in code generation. func NewModelFromOpenAPI3(document *openapiv3.Document) (*Model, error) { return newOpenAPI3Builder().buildModel(document) @@ -51,9 +53,30 @@ func (b *OpenAPI3Builder) buildModel(document *openapiv3.Document) (*Model, erro // build builds an API service description, preprocessing its types and methods for code generation. func (b *OpenAPI3Builder) build(document *openapiv3.Document) (err error) { + err = b.buildTypesFromComponents(document.Components) + if err != nil { + return err + } + + // Collect service method descriptions from each PathItem. + if document.Paths != nil { + for _, pair := range document.Paths.Path { + b.buildMethodFromPathItem(pair.Name, pair.Value) + } + } + return err +} + +// buildTypesFromComponents builds multiple service type description from the "Components" section +// in the OpenAPI specification. +func (b *OpenAPI3Builder) buildTypesFromComponents(components *openapiv3.Components) (err error) { + if components == nil { + return nil + } + // Collect service type descriptions from Components/Schemas. - if document.Components != nil && document.Components.Schemas != nil { - for _, pair := range document.Components.Schemas.AdditionalProperties { + if components.Schemas != nil { + for _, pair := range components.Schemas.AdditionalProperties { t, err := b.buildTypeFromSchemaOrReference(pair.Name, pair.Value) if err != nil { return err @@ -63,10 +86,38 @@ func (b *OpenAPI3Builder) build(document *openapiv3.Document) (err error) { } } } - // Collect service method descriptions from each PathItem. - for _, pair := range document.Paths.Path { - b.buildMethodFromPathItem(pair.Name, pair.Value) + // Collect service type descriptions from Components/Parameters. + if components.Parameters != nil { + for _, pair := range components.Parameters.AdditionalProperties { + parameters := []*openapiv3.ParameterOrReference{pair.Value} + _, err := b.buildTypeFromParameters(pair.Name, parameters, nil, true) + if err != nil { + return err + } + } } + // Collect service type descriptions from Components/requestBodies + if components.RequestBodies != nil { + for _, pair := range components.RequestBodies.AdditionalProperties { + t, err := b.buildTypeFromRequestBody(pair.Name, pair.Value, nil) + + if err != nil { + return err + } + if t != nil { + b.model.addType(t) + } + } + } + // Collect service type descriptions from Components/responses + if components.Responses != nil { + for _, pair := range components.Responses.AdditionalProperties { + namedResponseOrReference := []*openapiv3.NamedResponseOrReference{pair} + responses := &openapiv3.Responses{ResponseOrReference: namedResponseOrReference} + b.buildTypeFromResponses(pair.Name, responses, true) + } + } + return err } @@ -84,13 +135,14 @@ func (b *OpenAPI3Builder) buildTypeFromSchemaOrReference( // If the schema has properties, generate a struct. t.Kind = TypeKind_STRUCT } - for _, pair2 := range schema.Properties.AdditionalProperties { - if schema := pair2.Value; schema != nil { - var f Field - f.Name = pair2.Name + for _, pair := range schema.Properties.AdditionalProperties { + if schema := pair.Value; schema != nil { + f := &Field{ + Name: pair.Name, + Serialize: true, + } f.Kind, f.Type, f.Format = b.typeForSchemaOrReference(schema) - f.Serialize = true - t.addField(&f) + t.addField(f) } } } @@ -133,18 +185,19 @@ func (b *OpenAPI3Builder) buildMethodFromPathItem( op = pathItem.Trace } if op != nil { - var m Method - m.Operation = op.OperationId - m.Path = path - m.Method = method - m.Name = sanitizeOperationName(op.OperationId) + m := &Method{ + Operation: op.OperationId, + Path: path, + Method: method, + Name: sanitizeOperationName(op.OperationId), + Description: op.Description, + } if m.Name == "" { m.Name = generateOperationName(method, path) } - m.Description = op.Description - m.ParametersTypeName, err = b.buildTypeFromParameters(m.Name, op.Parameters, op.RequestBody) - m.ResponsesTypeName, err = b.buildTypeFromResponses(&m, m.Name, op.Responses) - b.model.addMethod(&m) + m.ParametersTypeName, err = b.buildTypeFromParameters(m.Name, op.Parameters, op.RequestBody, false) + m.ResponsesTypeName, err = b.buildTypeFromResponses(m.Name, op.Responses, false) + b.model.addMethod(m) } } return err @@ -154,15 +207,25 @@ func (b *OpenAPI3Builder) buildMethodFromPathItem( func (b *OpenAPI3Builder) buildTypeFromParameters( name string, parameters []*openapiv3.ParameterOrReference, - requestBody *openapiv3.RequestBodyOrReference) (typeName string, err error) { - t := &Type{} - t.Name = name + "Parameters" - t.Description = t.Name + " holds parameters to " + name - t.Kind = TypeKind_STRUCT - t.Fields = make([]*Field, 0) + requestBody *openapiv3.RequestBodyOrReference, + fromComponent bool) (typeName string, err error) { + + pName := name + "Parameters" + t := &Type{ + Name: pName, + Kind: TypeKind_STRUCT, + Fields: make([]*Field, 0), + Description: pName + " holds parameters to " + name, + } + + if fromComponent { + t.Name = name + t.Description = t.Name + " is a parameter" + } for _, parametersItem := range parameters { - var f Field - f.Type = fmt.Sprintf("%+v", parametersItem) + f := Field{ + Type: fmt.Sprintf("%+v", parametersItem), + } parameter := parametersItem.GetParameter() if parameter != nil { switch parameter.In { @@ -183,21 +246,16 @@ func (b *OpenAPI3Builder) buildTypeFromParameters( } f.Serialize = true t.addField(&f) + } else if parameterRef := parametersItem.GetReference(); parameterRef != nil { + f.Type = typeForRef(parameterRef.GetXRef()) + f.Name = strings.ToLower(f.Type) + f.Kind = FieldKind_REFERENCE + t.addField(&f) } } - if requestBody != nil { - content := requestBody.GetRequestBody().GetContent() - if content != nil { - for _, pair2 := range content.GetAdditionalProperties() { - var f Field - f.Position = Position_BODY - f.Kind, f.Type, f.Format = b.typeForSchemaOrReference(pair2.GetValue().GetSchema()) - f.Name = strings.ToLower(f.Type) // use the schema name as the parameter name, since none is directly specified - f.Serialize = true - t.addField(&f) - } - } - } + + _, err = b.buildTypeFromRequestBody(name, requestBody, t) + if len(t.Fields) > 0 { b.model.addType(t) return t.Name, err @@ -205,28 +263,79 @@ func (b *OpenAPI3Builder) buildTypeFromParameters( return "", err } +// buildTypeFromRequestBody builds a service type description from the request bodies of an OpenAPI +// description. If tIn is not given, a new type is created. Otherwise tIn is used. +func (b *OpenAPI3Builder) buildTypeFromRequestBody(name string, requestBody *openapiv3.RequestBodyOrReference, tIn *Type) (tOut *Type, err error) { + tOut = &Type{ + Name: name, + } + + if tIn != nil { + tOut = tIn + } + + if requestBody != nil { + content := requestBody.GetRequestBody().GetContent() + f := &Field{ + Position: Position_BODY, + Serialize: true, + } + + if content != nil { + for _, pair := range content.GetAdditionalProperties() { + if pair.Name != "application/json" { + log.Printf("unimplemented: %q requestBody(%s)", name, pair.Name) + continue + } + f.Kind, f.Type, f.Format = b.typeForSchemaOrReference(pair.GetValue().GetSchema()) + f.Name = strings.ToLower(f.Type) // use the schema name as the parameter name, since none is directly specified + tOut.addField(f) + } + } else if reference := requestBody.GetReference(); reference != nil { + schemaOrReference := openapiv3.SchemaOrReference{&openapiv3.SchemaOrReference_Reference{Reference: reference}} + f.Kind, f.Type, f.Format = b.typeForSchemaOrReference(&schemaOrReference) + f.Name = strings.ToLower(f.Type) // use the schema name as the parameter name, since none is directly specified + tOut.addField(f) + } + } + + return tOut, err +} + // buildTypeFromResponses builds a service type description from the responses of an API method func (b *OpenAPI3Builder) buildTypeFromResponses( - m *Method, name string, - responses *openapiv3.Responses) (typeName string, err error) { - t := &Type{} - t.Name = name + "Responses" - t.Description = t.Name + " holds responses of " + name - t.Kind = TypeKind_STRUCT - t.Fields = make([]*Field, 0) + responses *openapiv3.Responses, + fromComponent bool) (typeName string, err error) { + + rName := name + "Responses" + t := &Type{ + Name: name + "Responses", + Kind: TypeKind_STRUCT, + Fields: make([]*Field, 0), + Description: rName + " holds responses of " + name, + } + + if fromComponent { + t.Name = name + t.Description = t.Name + " is a response" + } addResponse := func(name string, value *openapiv3.ResponseOrReference) { - var f Field - f.Name = name - f.Serialize = false + f := Field{ + Name: name, + Serialize: false, + } response := value.GetResponse() if response != nil && response.GetContent() != nil { for _, pair2 := range response.GetContent().GetAdditionalProperties() { f.Kind, f.Type, f.Format = b.typeForSchemaOrReference(pair2.GetValue().GetSchema()) - f.Kind = FieldKind_REFERENCE t.addField(&f) } + } else if responseRef := value.GetReference(); responseRef != nil { + schemaOrReference := openapiv3.SchemaOrReference{&openapiv3.SchemaOrReference_Reference{Reference: responseRef}} + f.Kind, f.Type, f.Format = b.typeForSchemaOrReference(&schemaOrReference) + t.addField(&f) } } @@ -250,7 +359,7 @@ func (b *OpenAPI3Builder) typeForSchemaOrReference(value *openapiv3.SchemaOrRefe return b.typeForSchema(value.GetSchema()) } if value.GetReference() != nil { - return FieldKind_SCALAR, typeForRef(value.GetReference().XRef), "" + return FieldKind_REFERENCE, typeForRef(value.GetReference().XRef), "" } return FieldKind_SCALAR, "todo", "" } @@ -276,10 +385,9 @@ func (b *OpenAPI3Builder) typeForSchema(schema *openapiv3.Schema) (kind FieldKin a := items.GetSchemaOrReference() if a[0].GetReference().GetXRef() != "" { return FieldKind_ARRAY, typeForRef(a[0].GetReference().GetXRef()), format - } else if a[0].GetSchema().Type == "string" { - return FieldKind_ARRAY, "string", format - } else if a[0].GetSchema().Type == "object" { - return FieldKind_ARRAY, "interface{}", format + } else if knownTypes[a[0].GetSchema().Type] { + // The items of the array is one of the known types. + return FieldKind_ARRAY, a[0].GetSchema().Type, a[0].GetSchema().Format } } } @@ -287,6 +395,8 @@ func (b *OpenAPI3Builder) typeForSchema(schema *openapiv3.Schema) (kind FieldKin if schema.AdditionalProperties == nil { return FieldKind_MAP, "object", format } + case "any": + return FieldKind_ANY, "any", format default: } @@ -299,7 +409,7 @@ func (b *OpenAPI3Builder) typeForSchema(schema *openapiv3.Schema) (kind FieldKin } } } - // this function is incomplete... return a string representing anything that we don't handle + // this function is incomplete... use generic interface{} for now log.Printf("unimplemented: %v", schema) - return FieldKind_SCALAR, fmt.Sprintf("unimplemented: %v", schema), "" + return FieldKind_SCALAR, "object", "" } diff --git a/vendor/github.com/googleapis/gnostic/surface/surface.pb.go b/vendor/github.com/googleapis/gnostic/surface/surface.pb.go index d9836c2df0..7bc7eca6dc 100644 --- a/vendor/github.com/googleapis/gnostic/surface/surface.pb.go +++ b/vendor/github.com/googleapis/gnostic/surface/surface.pb.go @@ -38,6 +38,7 @@ const ( FieldKind_MAP FieldKind = 1 FieldKind_ARRAY FieldKind = 2 FieldKind_REFERENCE FieldKind = 3 + FieldKind_ANY FieldKind = 4 ) var FieldKind_name = map[int32]string{ @@ -45,12 +46,14 @@ var FieldKind_name = map[int32]string{ 1: "MAP", 2: "ARRAY", 3: "REFERENCE", + 4: "ANY", } var FieldKind_value = map[string]int32{ "SCALAR": 0, "MAP": 1, "ARRAY": 2, "REFERENCE": 3, + "ANY": 4, } func (x FieldKind) String() string { @@ -384,41 +387,41 @@ func init() { func init() { proto.RegisterFile("surface.proto", fileDescriptor0) } var fileDescriptor0 = []byte{ - // 573 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x6c, 0x54, 0x5f, 0x6f, 0xd3, 0x3e, - 0x14, 0x5d, 0xfe, 0x36, 0xb9, 0xfd, 0xf5, 0xa7, 0xcc, 0x02, 0x14, 0x21, 0x84, 0xa2, 0x0a, 0xa1, - 0xae, 0x9a, 0x2a, 0x18, 0x6f, 0xbc, 0x65, 0x6d, 0xaa, 0x09, 0xe8, 0x5a, 0x4c, 0xf6, 0xd0, 0xc7, - 0xd0, 0xb8, 0x6a, 0x44, 0x1b, 0x87, 0x38, 0x4c, 0x82, 0x0f, 0xc4, 0xc7, 0x81, 0xaf, 0x84, 0x7c, - 0x93, 0xb4, 0xde, 0xda, 0x37, 0xfb, 0xdc, 0xe3, 0x6b, 0x9f, 0x73, 0x6e, 0x02, 0x3d, 0xf1, 0xa3, - 0x5c, 0x27, 0x2b, 0x36, 0x2a, 0x4a, 0x5e, 0x71, 0x02, 0xed, 0xf6, 0xfe, 0x6d, 0xff, 0xb7, 0x0e, - 0xd6, 0x34, 0x63, 0xdb, 0x94, 0x10, 0x30, 0xf3, 0x64, 0xc7, 0x7c, 0x2d, 0xd0, 0x06, 0x2e, 0xc5, - 0xb5, 0xc4, 0xaa, 0x9f, 0x05, 0xf3, 0xf5, 0x1a, 0x93, 0x6b, 0x72, 0x01, 0xe6, 0xb7, 0x2c, 0x4f, - 0x7d, 0x23, 0xd0, 0x06, 0xff, 0x5f, 0x3d, 0x1d, 0x1d, 0x9a, 0x8d, 0xb0, 0xd1, 0xc7, 0x2c, 0x4f, - 0x29, 0x52, 0xc8, 0x33, 0xb0, 0xd7, 0xbc, 0xdc, 0x25, 0x95, 0x6f, 0x62, 0x83, 0x66, 0x47, 0xde, - 0x80, 0x53, 0x70, 0x91, 0x55, 0x19, 0xcf, 0x7d, 0x0b, 0xdb, 0x3c, 0x51, 0xdb, 0x2c, 0x9a, 0x1a, - 0xdd, 0xb3, 0xc8, 0x4b, 0x80, 0x3c, 0xa9, 0xb2, 0x7b, 0x16, 0xcb, 0xe7, 0xd8, 0xd8, 0x4d, 0x41, - 0xc8, 0x0b, 0x70, 0xd7, 0xf2, 0xf2, 0x5b, 0xa9, 0xa0, 0x83, 0xe5, 0x03, 0x40, 0x5e, 0x41, 0xaf, - 0x48, 0xca, 0x64, 0xc7, 0x2a, 0x56, 0x22, 0xc3, 0x41, 0xc6, 0x43, 0x50, 0xf6, 0x10, 0xac, 0xcc, - 0x92, 0x6d, 0xf6, 0x8b, 0xf9, 0x6e, 0xa0, 0x0d, 0x1c, 0x7a, 0x00, 0xfa, 0x7f, 0x35, 0x30, 0xf1, - 0xaa, 0x53, 0x3e, 0x0d, 0x1a, 0x4f, 0xf4, 0x63, 0x31, 0xf2, 0x8c, 0x62, 0x49, 0x00, 0xdd, 0x94, - 0x89, 0x55, 0x99, 0x15, 0xa8, 0xde, 0xc0, 0x26, 0x2a, 0x24, 0x19, 0x2b, 0x9e, 0x57, 0x2c, 0xaf, - 0x50, 0x6b, 0xed, 0x9c, 0x0a, 0x91, 0x0b, 0xb0, 0x51, 0x9b, 0xf0, 0xad, 0xc0, 0x18, 0x74, 0xaf, - 0xce, 0x8f, 0x32, 0xa0, 0x0d, 0x81, 0x3c, 0x07, 0x47, 0x86, 0x86, 0xa2, 0x6b, 0xd7, 0xf6, 0xfb, - 0xfe, 0x1f, 0x1d, 0xec, 0x19, 0xab, 0x36, 0x3c, 0x95, 0xd2, 0x79, 0xc1, 0xca, 0x04, 0xdf, 0x54, - 0x0b, 0x3b, 0x00, 0x52, 0x71, 0x91, 0x54, 0x9b, 0x76, 0x0a, 0xe4, 0x5a, 0x46, 0xbb, 0xc3, 0xb3, - 0x8d, 0x84, 0x66, 0xf7, 0x58, 0x9f, 0x79, 0xac, 0xaf, 0xf5, 0xcf, 0x52, 0xfc, 0x0b, 0xa0, 0xbb, - 0x49, 0xf2, 0x74, 0xdb, 0xc4, 0x53, 0xbf, 0x54, 0x85, 0x30, 0xc2, 0x92, 0xaf, 0x98, 0x10, 0xbc, - 0x54, 0x42, 0x7e, 0x08, 0xca, 0x31, 0x59, 0x6d, 0x33, 0x96, 0x57, 0x4a, 0xca, 0x0a, 0x42, 0x46, - 0x40, 0xf6, 0x99, 0x8b, 0xb8, 0x35, 0xc6, 0x45, 0xde, 0x89, 0x0a, 0xb9, 0x84, 0xf3, 0x92, 0x89, - 0x82, 0xe7, 0x82, 0x1d, 0xe8, 0x80, 0xf4, 0xe3, 0x42, 0xff, 0x3b, 0x58, 0x33, 0x9e, 0xb2, 0xed, - 0xc9, 0x11, 0x79, 0x0d, 0x96, 0x74, 0x5e, 0xf8, 0x3a, 0x66, 0xe6, 0x3d, 0x9e, 0x11, 0x5a, 0x97, - 0xc9, 0x25, 0x74, 0x6a, 0x2b, 0x85, 0x6f, 0x20, 0x93, 0xa8, 0xcc, 0x3a, 0x2f, 0xda, 0x52, 0x86, - 0xef, 0xc1, 0xdd, 0x7f, 0x74, 0x04, 0xc0, 0xfe, 0x32, 0x0e, 0x3f, 0x85, 0xd4, 0x3b, 0x23, 0x1d, - 0x30, 0x66, 0xe1, 0xc2, 0xd3, 0x88, 0x0b, 0x56, 0x48, 0x69, 0xb8, 0xf4, 0x74, 0xd2, 0x03, 0x97, - 0x46, 0xd3, 0x88, 0x46, 0xb7, 0xe3, 0xc8, 0x33, 0x86, 0x7d, 0x70, 0xda, 0xe1, 0xc4, 0xa3, 0x31, - 0xbd, 0x1b, 0xc7, 0xde, 0x99, 0x5c, 0xcf, 0xaf, 0x3f, 0x44, 0xe3, 0xd8, 0xd3, 0x86, 0x63, 0x70, - 0xda, 0xaf, 0x91, 0x38, 0x60, 0x5e, 0xcf, 0x27, 0xcb, 0x9a, 0x71, 0x13, 0x85, 0x93, 0x88, 0x7a, - 0x1a, 0xf9, 0x0f, 0x9c, 0xe9, 0x9c, 0xce, 0x26, 0x61, 0x1c, 0x7a, 0xba, 0xbc, 0xed, 0xf3, 0x5d, - 0x44, 0x97, 0x9e, 0x21, 0xe9, 0x8b, 0x30, 0xbe, 0xf1, 0xcc, 0xaf, 0x36, 0xfe, 0x76, 0xde, 0xfd, - 0x0b, 0x00, 0x00, 0xff, 0xff, 0x15, 0x52, 0x6a, 0x89, 0x87, 0x04, 0x00, 0x00, + // 576 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0x6c, 0x54, 0xed, 0x6e, 0xd3, 0x30, + 0x14, 0x5d, 0x3e, 0x97, 0xdc, 0x31, 0xe4, 0x59, 0x80, 0x22, 0x84, 0x50, 0x54, 0x21, 0xd4, 0x55, + 0x53, 0x05, 0xe3, 0x09, 0xb2, 0x34, 0xd5, 0x04, 0xf4, 0x03, 0x93, 0xfd, 0xe8, 0xcf, 0xd0, 0xb8, + 0x6a, 0x44, 0x1b, 0x87, 0x38, 0x4c, 0x82, 0x07, 0xe2, 0x71, 0xe0, 0x95, 0x90, 0x6f, 0x92, 0x36, + 0x5b, 0xfb, 0xcf, 0x3e, 0xf7, 0xe4, 0xda, 0xe7, 0x9c, 0xeb, 0xc0, 0xb9, 0xfc, 0x59, 0xae, 0x92, + 0x25, 0x1f, 0x16, 0xa5, 0xa8, 0x04, 0x85, 0x76, 0x7b, 0xff, 0xbe, 0xf7, 0x47, 0x07, 0x6b, 0x9c, + 0xf1, 0x4d, 0x4a, 0x29, 0x98, 0x79, 0xb2, 0xe5, 0x9e, 0xe6, 0x6b, 0x7d, 0x97, 0xe1, 0x5a, 0x61, + 0xd5, 0xaf, 0x82, 0x7b, 0x7a, 0x8d, 0xa9, 0x35, 0xbd, 0x04, 0xf3, 0x7b, 0x96, 0xa7, 0x9e, 0xe1, + 0x6b, 0xfd, 0xa7, 0xd7, 0xcf, 0x87, 0xfb, 0x66, 0x43, 0x6c, 0xf4, 0x29, 0xcb, 0x53, 0x86, 0x14, + 0xfa, 0x02, 0xec, 0x95, 0x28, 0xb7, 0x49, 0xe5, 0x99, 0xd8, 0xa0, 0xd9, 0xd1, 0x77, 0xe0, 0x14, + 0x42, 0x66, 0x55, 0x26, 0x72, 0xcf, 0xc2, 0x36, 0xcf, 0xba, 0x6d, 0xe6, 0x4d, 0x8d, 0xed, 0x58, + 0xf4, 0x35, 0x40, 0x9e, 0x54, 0xd9, 0x3d, 0x8f, 0xd5, 0x75, 0x6c, 0xec, 0xd6, 0x41, 0xe8, 0x2b, + 0x70, 0x57, 0xea, 0xf0, 0xa9, 0x52, 0x70, 0x8a, 0xe5, 0x3d, 0x40, 0xdf, 0xc0, 0x79, 0x91, 0x94, + 0xc9, 0x96, 0x57, 0xbc, 0x44, 0x86, 0x83, 0x8c, 0x87, 0xa0, 0xea, 0x21, 0x79, 0x99, 0x25, 0x9b, + 0xec, 0x37, 0xf7, 0x5c, 0x5f, 0xeb, 0x3b, 0x6c, 0x0f, 0xf4, 0xfe, 0x69, 0x60, 0xe2, 0x51, 0xc7, + 0x7c, 0xea, 0x37, 0x9e, 0xe8, 0x87, 0x62, 0xd4, 0x37, 0x1d, 0x4b, 0x7c, 0x38, 0x4b, 0xb9, 0x5c, + 0x96, 0x59, 0x81, 0xea, 0x0d, 0x6c, 0xd2, 0x85, 0x14, 0x63, 0x29, 0xf2, 0x8a, 0xe7, 0x15, 0x6a, + 0xad, 0x9d, 0xeb, 0x42, 0xf4, 0x12, 0x6c, 0xd4, 0x26, 0x3d, 0xcb, 0x37, 0xfa, 0x67, 0xd7, 0x17, + 0x07, 0x19, 0xb0, 0x86, 0x40, 0x5f, 0x82, 0xa3, 0x42, 0x43, 0xd1, 0xb5, 0x6b, 0xbb, 0x7d, 0xef, + 0xaf, 0x0e, 0xf6, 0x84, 0x57, 0x6b, 0x91, 0x2a, 0xe9, 0xa2, 0xe0, 0x65, 0x82, 0x77, 0xaa, 0x85, + 0xed, 0x01, 0xa5, 0xb8, 0x48, 0xaa, 0x75, 0x3b, 0x05, 0x6a, 0xad, 0xa2, 0xdd, 0xe2, 0xb7, 0x8d, + 0x84, 0x66, 0xf7, 0x58, 0x9f, 0x79, 0xa8, 0xaf, 0xf5, 0xcf, 0xea, 0xf8, 0xe7, 0xc3, 0xd9, 0x3a, + 0xc9, 0xd3, 0x4d, 0x13, 0x4f, 0x7d, 0xd3, 0x2e, 0x84, 0x11, 0x96, 0x62, 0xc9, 0xa5, 0x14, 0x65, + 0x27, 0xe4, 0x87, 0xa0, 0x1a, 0x93, 0xe5, 0x26, 0xe3, 0x79, 0xd5, 0x49, 0xb9, 0x83, 0xd0, 0x21, + 0xd0, 0x5d, 0xe6, 0x32, 0x6e, 0x8d, 0x71, 0x91, 0x77, 0xa4, 0x42, 0xaf, 0xe0, 0xa2, 0xe4, 0xb2, + 0x10, 0xb9, 0xe4, 0x7b, 0x3a, 0x20, 0xfd, 0xb0, 0xd0, 0xfb, 0x01, 0xd6, 0x44, 0xa4, 0x7c, 0x73, + 0x74, 0x44, 0xde, 0x82, 0xa5, 0x9c, 0x97, 0x9e, 0x8e, 0x99, 0x91, 0xc7, 0x33, 0xc2, 0xea, 0x32, + 0xbd, 0x82, 0xd3, 0xda, 0x4a, 0xe9, 0x19, 0xc8, 0xa4, 0x5d, 0x66, 0x9d, 0x17, 0x6b, 0x29, 0x83, + 0x10, 0xdc, 0xdd, 0xa3, 0xa3, 0x00, 0xf6, 0xd7, 0x30, 0xf8, 0x1c, 0x30, 0x72, 0x42, 0x4f, 0xc1, + 0x98, 0x04, 0x73, 0xa2, 0x51, 0x17, 0xac, 0x80, 0xb1, 0x60, 0x41, 0x74, 0x7a, 0x0e, 0x2e, 0x8b, + 0xc6, 0x11, 0x8b, 0xa6, 0x61, 0x44, 0x0c, 0x45, 0x09, 0xa6, 0x0b, 0x62, 0x0e, 0x7a, 0xe0, 0xb4, + 0x53, 0x8a, 0x3d, 0x62, 0x76, 0x17, 0xc6, 0xe4, 0x44, 0xad, 0x67, 0x37, 0x1f, 0xa3, 0x30, 0x26, + 0xda, 0x20, 0x04, 0xa7, 0x7d, 0x96, 0xd4, 0x01, 0xf3, 0x66, 0x36, 0x5a, 0xd4, 0x8c, 0xdb, 0x28, + 0x18, 0x45, 0x8c, 0x68, 0xf4, 0x09, 0x38, 0xe3, 0x19, 0x9b, 0x8c, 0x82, 0x38, 0x20, 0xba, 0x3a, + 0xf6, 0xcb, 0x5d, 0xc4, 0x16, 0xc4, 0x50, 0xf4, 0x79, 0x10, 0xdf, 0x12, 0xf3, 0x9b, 0x8d, 0xff, + 0x9f, 0x0f, 0xff, 0x03, 0x00, 0x00, 0xff, 0xff, 0xaa, 0xcf, 0x90, 0x77, 0x90, 0x04, 0x00, 0x00, } diff --git a/vendor/github.com/googleapis/gnostic/surface/surface.proto b/vendor/github.com/googleapis/gnostic/surface/surface.proto index 3b548a66d6..4f1391c532 100644 --- a/vendor/github.com/googleapis/gnostic/surface/surface.proto +++ b/vendor/github.com/googleapis/gnostic/surface/surface.proto @@ -23,6 +23,7 @@ enum FieldKind { MAP = 1; ARRAY = 2; REFERENCE = 3; + ANY = 4; } enum TypeKind { diff --git a/vendor/github.com/googleapis/gnostic/test/library-example-with-ext.json b/vendor/github.com/googleapis/gnostic/test/library-example-with-ext.json index e6b7f22089..89d03b24a2 100644 --- a/vendor/github.com/googleapis/gnostic/test/library-example-with-ext.json +++ b/vendor/github.com/googleapis/gnostic/test/library-example-with-ext.json @@ -91,6 +91,13 @@ "type": "string" } } + }, + "SimpleDefWithBoolean": { + "properties": { + "active": { + "type": "boolean" + } + } } } } diff --git a/vendor/github.com/googleapis/gnostic/test/library-example-with-ext.text.out b/vendor/github.com/googleapis/gnostic/test/library-example-with-ext.text.out index b12e8f0810..e735bdf89d 100644 --- a/vendor/github.com/googleapis/gnostic/test/library-example-with-ext.text.out +++ b/vendor/github.com/googleapis/gnostic/test/library-example-with-ext.text.out @@ -128,6 +128,21 @@ definitions: < > > > + additional_properties: < + name: "SimpleDefWithBoolean" + value: < + properties: < + additional_properties: < + name: "active" + value: < + type: < + value: "boolean" + > + > + > + > + > + > > parameters: < additional_properties: < diff --git a/vendor/github.com/googleapis/gnostic/test/v2.0/json/empty-v2.json b/vendor/github.com/googleapis/gnostic/test/v2.0/json/empty-v2.json new file mode 100644 index 0000000000..c93e9f8ec3 --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/test/v2.0/json/empty-v2.json @@ -0,0 +1,9 @@ +{ + "swagger": "2.0", + "info": { + "title": "", + "version": "" + }, + "paths": { + } +} diff --git a/vendor/github.com/googleapis/gnostic/test/v3.0/json/empty-v3.json b/vendor/github.com/googleapis/gnostic/test/v3.0/json/empty-v3.json new file mode 100644 index 0000000000..4eaf112e7b --- /dev/null +++ b/vendor/github.com/googleapis/gnostic/test/v3.0/json/empty-v3.json @@ -0,0 +1,9 @@ +{ + "openapi": "3.0", + "info": { + "title": "", + "version": "" + }, + "paths": { + } +} diff --git a/vendor/github.com/json-iterator/go/build.sh b/vendor/github.com/json-iterator/go/build.sh new file mode 100755 index 0000000000..b45ef68831 --- /dev/null +++ b/vendor/github.com/json-iterator/go/build.sh @@ -0,0 +1,12 @@ +#!/bin/bash +set -e +set -x + +if [ ! -d /tmp/build-golang/src/github.com/json-iterator ]; then + mkdir -p /tmp/build-golang/src/github.com/json-iterator + ln -s $PWD /tmp/build-golang/src/github.com/json-iterator/go +fi +export GOPATH=/tmp/build-golang +go get -u github.com/golang/dep/cmd/dep +cd /tmp/build-golang/src/github.com/json-iterator/go +exec $GOPATH/bin/dep ensure -update diff --git a/vendor/github.com/minio/minio/.github/PULL_REQUEST_TEMPLATE.md b/vendor/github.com/minio/minio/.github/PULL_REQUEST_TEMPLATE.md index 19f21cd53a..70bb2c6cd0 100644 --- a/vendor/github.com/minio/minio/.github/PULL_REQUEST_TEMPLATE.md +++ b/vendor/github.com/minio/minio/.github/PULL_REQUEST_TEMPLATE.md @@ -1,33 +1,19 @@ - - ## Description - + ## Motivation and Context - - -## Regression - - -## How Has This Been Tested? - - - +## How to test this PR? + ## Types of changes - - [ ] Bug fix (non-breaking change which fixes an issue) - [ ] New feature (non-breaking change which adds functionality) - [ ] Breaking change (fix or feature that would cause existing functionality to change) ## Checklist: - - -- [ ] My code follows the code style of this project. -- [ ] My change requires a change to the documentation. -- [ ] I have updated the documentation accordingly. -- [ ] I have added unit tests to cover my changes. -- [ ] I have added/updated functional tests in [mint](https://github.com/minio/mint). (If yes, add `mint` PR # here: ) -- [ ] All new and existing tests passed. \ No newline at end of file +- [ ] Fixes a regression (If yes, please add `commit-id` or `PR #` here) +- [ ] Documentation needed +- [ ] Unit tests needed +- [ ] Functional tests needed (If yes, add [mint](https://github.com/minio/mint) PR # here: ) diff --git a/vendor/github.com/minio/minio/.gitignore b/vendor/github.com/minio/minio/.gitignore index db11635467..44a19a8700 100644 --- a/vendor/github.com/minio/minio/.gitignore +++ b/vendor/github.com/minio/minio/.gitignore @@ -9,7 +9,6 @@ site/ /.idea/ /Minio.iml **/access.log -build/ vendor/**/*.js vendor/**/*.json release @@ -23,4 +22,4 @@ prime/ stage/ .sia_temp/ config.json -healthcheck +dockerscripts/healthcheck \ No newline at end of file diff --git a/vendor/github.com/minio/minio/.travis.yml b/vendor/github.com/minio/minio/.travis.yml index a0e8dac0ed..9387386c5c 100644 --- a/vendor/github.com/minio/minio/.travis.yml +++ b/vendor/github.com/minio/minio/.travis.yml @@ -2,6 +2,14 @@ go_import_path: github.com/minio/minio language: go +addons: + apt: + packages: + - shellcheck + +services: + - docker + # this ensures PRs based on a local branch are not built twice # the downside is that a PR targeting a different branch is not built # but as a workaround you can add the branch to this list @@ -26,7 +34,7 @@ matrix: - $HOME/gopath/pkg/mod - $HOME/go/pkg/mod - go: 1.12.1 + go: 1.12.5 script: - make - diff -au <(gofmt -s -d cmd) <(printf "") @@ -37,12 +45,14 @@ matrix: - make verify - make coverage - cd browser && yarn && yarn test && cd .. + - bash -c 'shopt -s globstar; shellcheck mint/**/*.sh' + - os: windows env: - ARCH=x86_64 - CGO_ENABLED=0 - GO111MODULE=on - go: 1.12.1 + go: 1.12.5 script: - go build --ldflags="$(go run buildscripts/gen-ldflags.go)" -o %GOPATH%\bin\minio.exe - bash buildscripts/go-coverage.sh diff --git a/vendor/github.com/minio/minio/CONTRIBUTING.md b/vendor/github.com/minio/minio/CONTRIBUTING.md index b60918e2d8..820dbceb7e 100644 --- a/vendor/github.com/minio/minio/CONTRIBUTING.md +++ b/vendor/github.com/minio/minio/CONTRIBUTING.md @@ -37,7 +37,7 @@ After your code changes, make sure - To add test cases for the new code. If you have questions about how to do it, please ask on our [Slack](https://slack.min.io) channel. - To run `make verifiers` - To squash your commits into a single commit. `git rebase -i`. It's okay to force update your pull request. -- To run `go test -race ./...` and `go build` completes. +- To run `make test` and `make build` completes. ### Commit changes After verification, commit your changes. This is a [great post](https://chris.beams.io/posts/git-commit/) on how to write useful commit messages diff --git a/vendor/github.com/minio/minio/Dockerfile b/vendor/github.com/minio/minio/Dockerfile index 4ce2cf272a..1e908d8abb 100644 --- a/vendor/github.com/minio/minio/Dockerfile +++ b/vendor/github.com/minio/minio/Dockerfile @@ -10,13 +10,14 @@ RUN \ apk add --no-cache git && \ git clone https://github.com/minio/minio && cd minio && \ go install -v -ldflags "$(go run buildscripts/gen-ldflags.go)" && \ - cd dockerscripts; go build -ldflags "-s -w" -o /usr/bin/healthcheck healthcheck.go + cd dockerscripts; go build -tags kqueue -ldflags "-s -w" -o /usr/bin/healthcheck healthcheck.go FROM alpine:3.9 ENV MINIO_UPDATE off ENV MINIO_ACCESS_KEY_FILE=access_key \ - MINIO_SECRET_KEY_FILE=secret_key + MINIO_SECRET_KEY_FILE=secret_key \ + MINIO_SSE_MASTER_KEY_FILE=sse_master_key EXPOSE 9000 @@ -25,7 +26,7 @@ COPY --from=0 /usr/bin/healthcheck /usr/bin/healthcheck COPY dockerscripts/docker-entrypoint.sh /usr/bin/ RUN \ - apk add --no-cache ca-certificates 'curl>7.61.0' && \ + apk add --no-cache ca-certificates 'curl>7.61.0' 'su-exec>=0.2' && \ echo 'hosts: files mdns4_minimal [NOTFOUND=return] dns mdns4' >> /etc/nsswitch.conf ENTRYPOINT ["/usr/bin/docker-entrypoint.sh"] diff --git a/vendor/github.com/minio/minio/Dockerfile.dev b/vendor/github.com/minio/minio/Dockerfile.dev index a2fabcadea..2122126852 100644 --- a/vendor/github.com/minio/minio/Dockerfile.dev +++ b/vendor/github.com/minio/minio/Dockerfile.dev @@ -7,10 +7,11 @@ COPY minio /usr/bin/ ENV MINIO_UPDATE off ENV MINIO_ACCESS_KEY_FILE=access_key \ - MINIO_SECRET_KEY_FILE=secret_key + MINIO_SECRET_KEY_FILE=secret_key \ + MINIO_SSE_MASTER_KEY_FILE=sse_master_key RUN \ - apk add --no-cache ca-certificates 'curl>7.61.0' && \ + apk add --no-cache ca-certificates 'curl>7.61.0' 'su-exec>=0.2' && \ echo 'hosts: files mdns4_minimal [NOTFOUND=return] dns mdns4' >> /etc/nsswitch.conf && \ chmod +x /usr/bin/minio && \ chmod +x /usr/bin/docker-entrypoint.sh && \ diff --git a/vendor/github.com/minio/minio/Dockerfile.mint b/vendor/github.com/minio/minio/Dockerfile.mint new file mode 100644 index 0000000000..3a4d93ea4c --- /dev/null +++ b/vendor/github.com/minio/minio/Dockerfile.mint @@ -0,0 +1,23 @@ +FROM ubuntu:16.04 + +ENV DEBIAN_FRONTEND noninteractive + +ENV LANG C.UTF-8 + +ENV GOROOT /usr/local/go + +ENV GOPATH /usr/local + +ENV PATH $GOPATH/bin:$GOROOT/bin:$PATH + +ENV MINT_ROOT_DIR /mint + +COPY mint /mint + +RUN apt-get --yes update && apt-get --yes upgrade && \ + apt-get --yes --quiet install wget jq curl git dnsmasq && \ + cd /mint && /mint/release.sh + +WORKDIR /mint + +ENTRYPOINT ["/mint/entrypoint.sh"] diff --git a/vendor/github.com/minio/minio/Dockerfile.release b/vendor/github.com/minio/minio/Dockerfile.release index f287860a34..8580f09df8 100644 --- a/vendor/github.com/minio/minio/Dockerfile.release +++ b/vendor/github.com/minio/minio/Dockerfile.release @@ -7,7 +7,7 @@ ENV GO111MODULE on RUN \ apk add --no-cache git && \ git clone https://github.com/minio/minio && cd minio/dockerscripts && \ - go build -ldflags "-s -w" -o /usr/bin/healthcheck healthcheck.go + go build -tags kqueue -ldflags "-s -w" -o /usr/bin/healthcheck healthcheck.go FROM alpine:3.9 @@ -18,10 +18,11 @@ COPY dockerscripts/docker-entrypoint.sh /usr/bin/ ENV MINIO_UPDATE off ENV MINIO_ACCESS_KEY_FILE=access_key \ - MINIO_SECRET_KEY_FILE=secret_key + MINIO_SECRET_KEY_FILE=secret_key \ + MINIO_SSE_MASTER_KEY_FILE=sse_master_key RUN \ - apk add --no-cache ca-certificates 'curl>7.61.0' && \ + apk add --no-cache ca-certificates 'curl>7.61.0' 'su-exec>=0.2' && \ echo 'hosts: files mdns4_minimal [NOTFOUND=return] dns mdns4' >> /etc/nsswitch.conf && \ curl https://dl.min.io/server/minio/release/linux-amd64/minio > /usr/bin/minio && \ chmod +x /usr/bin/minio && \ diff --git a/vendor/github.com/minio/minio/Dockerfile.simpleci b/vendor/github.com/minio/minio/Dockerfile.simpleci index 9282a11e61..30bdad4beb 100644 --- a/vendor/github.com/minio/minio/Dockerfile.simpleci +++ b/vendor/github.com/minio/minio/Dockerfile.simpleci @@ -33,7 +33,7 @@ USER ci RUN make RUN bash -c 'diff -au <(gofmt -s -d cmd) <(printf "")' RUN bash -c 'diff -au <(gofmt -s -d pkg) <(printf "")' -RUN for d in $(go list ./... | grep -v browser); do go test -v -race --timeout 15m "$d"; done +RUN for d in $(go list ./... | grep -v browser); do go test -v -race --timeout 20m "$d"; done RUN make verifiers RUN make crosscompile RUN make verify @@ -56,15 +56,17 @@ FROM ubuntu:16.04 COPY --from=0 /go/src/github.com/minio/minio/minio /usr/bin/minio COPY buildscripts/gateway-tests.sh /usr/bin/gateway-tests.sh +COPY mint /mint ENV DEBIAN_FRONTEND noninteractive ENV LANG C.UTF-8 ENV GOROOT /usr/local/go ENV GOPATH /usr/local ENV PATH $GOPATH/bin:$GOROOT/bin:$PATH +ENV MINT_ROOT_DIR /mint -RUN apt-get --yes update && apt-get --yes upgrade && apt-get --yes --quiet install wget jq curl git dnsmasq && \ - git clone https://github.com/minio/mint.git /mint && \ +RUN apt-get --yes update && apt-get --yes upgrade && \ + apt-get --yes --quiet install wget jq curl git dnsmasq && \ cd /mint && /mint/release.sh WORKDIR /mint diff --git a/vendor/github.com/minio/minio/Makefile b/vendor/github.com/minio/minio/Makefile index 54603baf7f..1972c69edd 100644 --- a/vendor/github.com/minio/minio/Makefile +++ b/vendor/github.com/minio/minio/Makefile @@ -2,6 +2,12 @@ PWD := $(shell pwd) GOPATH := $(shell go env GOPATH) LDFLAGS := $(shell go run buildscripts/gen-ldflags.go) +GOOS := $(shell go env GOOS) +GOOSALT ?= 'linux' +ifeq ($(GOOS),'darwin') + GOOSALT = 'mac' +endif + TAG ?= $(USER) BUILD_LDFLAGS := '$(LDFLAGS)' @@ -14,8 +20,8 @@ checks: getdeps: @mkdir -p ${GOPATH}/bin @which golint 1>/dev/null || (echo "Installing golint" && go get -u golang.org/x/lint/golint) - @which staticcheck 1>/dev/null || (echo "Installing staticcheck" && wget --quiet -O ${GOPATH}/bin/staticcheck https://github.com/dominikh/go-tools/releases/download/2019.1/staticcheck_linux_amd64 && chmod +x ${GOPATH}/bin/staticcheck) - @which misspell 1>/dev/null || (echo "Installing misspell" && wget --quiet https://github.com/client9/misspell/releases/download/v0.3.4/misspell_0.3.4_linux_64bit.tar.gz && tar xf misspell_0.3.4_linux_64bit.tar.gz && mv misspell ${GOPATH}/bin/misspell && chmod +x ${GOPATH}/bin/misspell && rm -f misspell_0.3.4_linux_64bit.tar.gz) + @which staticcheck 1>/dev/null || (echo "Installing staticcheck" && wget --quiet -O ${GOPATH}/bin/staticcheck https://github.com/dominikh/go-tools/releases/download/2019.1/staticcheck_${GOOS}_amd64 && chmod +x ${GOPATH}/bin/staticcheck) + @which misspell 1>/dev/null || (echo "Installing misspell" && wget --quiet https://github.com/client9/misspell/releases/download/v0.3.4/misspell_0.3.4_${GOOSALT}_64bit.tar.gz && tar xf misspell_0.3.4_${GOOSALT}_64bit.tar.gz && mv misspell ${GOPATH}/bin/misspell && chmod +x ${GOPATH}/bin/misspell && rm -f misspell_0.3.4_${GOOSALT}_64bit.tar.gz) crosscompile: @(env bash $(PWD)/buildscripts/cross-compile.sh) diff --git a/vendor/github.com/minio/minio/SECURITY.md b/vendor/github.com/minio/minio/SECURITY.md new file mode 100644 index 0000000000..95e3b2e8a3 --- /dev/null +++ b/vendor/github.com/minio/minio/SECURITY.md @@ -0,0 +1,41 @@ +# Security Policy + +## Supported Versions + +We always provide security updates for the [latest release](https://github.com/minio/minio/releases/latest). +Whenever there is a security update you just need to upgrade to the latest version. + +## Reporting a Vulnerability + +All security bugs in [minio/minio](https://github,com/minio/minio) (or other minio/* repositories) +should be reported by email to security@min.io. Your email will be acknowledged within 48 hours, +and you'll receive a more detailed response to your email within 72 hours indicating the next steps +in handling your report. + +Please, provide a detailed explanation of the issue. In particular, outline the type of the security +issue (DoS, authentication bypass, information disclouse, ...) and the assumptions you're making (e.g. do +you need access credentials for a successful exploit). + +If you have not received a reply to your email within 48 hours or you have not heard from the security team +for the past five days please contact the security team directly: + - Primary security coordinator: aead@min.io + - Secondary coordinator: harsha@min.io + - If you receive no response: dev@min.io + +### Disclosure Process + +MinIO uses the following disclosure process: + +1. Once the security report is received one member of the security team tries to verify and reproduce + the issue and determines the impact it has. +2. A member of the security team will respond and either confrim or reject the security report. + If the report is rejected the repsonse explains why. +3. Code is audited to find any potential similar problems. +4. Fixes are prepared for the latest release. +5. On the date that the fixes are applied a security advisory will be published on https://blog.min.io. + Please inform us in your report email whether MinIO should mention your contribution w.r.t. fixing + the security issue. By default MinIO will **not** publish this information to protect your privacy. + +This process can take some time, especially when coordination is required with maintainers of other projects. +Every effort will be made to handle the bug in as timely a manner as possible, however it's important that we +follow the process described above to ensure that disclosures are handled consistently. diff --git a/vendor/github.com/minio/minio/browser/README.md b/vendor/github.com/minio/minio/browser/README.md index 4793823318..33c123c6b9 100644 --- a/vendor/github.com/minio/minio/browser/README.md +++ b/vendor/github.com/minio/minio/browser/README.md @@ -4,10 +4,11 @@ ## Installation -### Install yarn +### Install node ```sh -curl -o- -L https://yarnpkg.com/install.sh | bash -yarn +curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.34.0/install.sh | bash +exec -l $SHELL +nvm install stable ``` ### Install `go-bindata` and `go-bindata-assetfs` @@ -15,8 +16,8 @@ yarn If you do not have a working Golang environment, please follow [Install Golang](https://docs.min.io/docs/how-to-install-golang) ```sh -go get github.com/jteeuwen/go-bindata/... -go get github.com/elazarl/go-bindata-assetfs/... +go get github.com/go-bindata/go-bindata/go-bindata +go get github.com/elazarl/go-bindata-assetfs/go-bindata-assetfs ``` ## Generating Assets @@ -24,7 +25,7 @@ go get github.com/elazarl/go-bindata-assetfs/... ### Generate ui-assets.go ```sh -yarn release +npm run release ``` This generates ui-assets.go in the current directory. Now do `make` in the parent directory to build the minio binary with the newly generated ``ui-assets.go`` @@ -32,7 +33,7 @@ This generates ui-assets.go in the current directory. Now do `make` in the paren ### Run MinIO Browser with live reload ```sh -yarn dev +npm run dev ``` Open [http://localhost:8080/minio/](http://localhost:8080/minio/) in your browser to play with the application @@ -66,7 +67,7 @@ index 3ccdaba..9496c56 100644 ``` ```sh -yarn dev +npm run dev ``` Open [http://localhost:8888/minio/](http://localhost:8888/minio/) in your browser to play with the application diff --git a/vendor/github.com/minio/minio/browser/app/js/constants.js b/vendor/github.com/minio/minio/browser/app/js/constants.js index 657c7352c0..d14e5dfb86 100644 --- a/vendor/github.com/minio/minio/browser/app/js/constants.js +++ b/vendor/github.com/minio/minio/browser/app/js/constants.js @@ -31,3 +31,10 @@ export const SHARE_OBJECT_EXPIRY_MINUTES = 0 export const ACCESS_KEY_MIN_LENGTH = 3 export const SECRET_KEY_MIN_LENGTH = 8 + +export const SORT_BY_NAME = "name" +export const SORT_BY_SIZE = "size" +export const SORT_BY_LAST_MODIFIED = "last-modified" + +export const SORT_ORDER_ASC = "asc" +export const SORT_ORDER_DESC = "desc" diff --git a/vendor/github.com/minio/minio/browser/app/js/objects/ObjectItem.js b/vendor/github.com/minio/minio/browser/app/js/objects/ObjectItem.js index ee05882eac..92db805d4c 100644 --- a/vendor/github.com/minio/minio/browser/app/js/objects/ObjectItem.js +++ b/vendor/github.com/minio/minio/browser/app/js/objects/ObjectItem.js @@ -51,7 +51,7 @@ export const ObjectItem = ({
{ e.preventDefault() if (onClick) { diff --git a/vendor/github.com/minio/minio/browser/app/js/objects/ObjectsHeader.js b/vendor/github.com/minio/minio/browser/app/js/objects/ObjectsHeader.js index 88a0340bed..bad72f6dbe 100644 --- a/vendor/github.com/minio/minio/browser/app/js/objects/ObjectsHeader.js +++ b/vendor/github.com/minio/minio/browser/app/js/objects/ObjectsHeader.js @@ -18,11 +18,19 @@ import React from "react" import classNames from "classnames" import { connect } from "react-redux" import * as actionsObjects from "./actions" +import { + SORT_BY_NAME, + SORT_BY_SIZE, + SORT_BY_LAST_MODIFIED, + SORT_ORDER_DESC, + SORT_ORDER_ASC +} from "../constants" export const ObjectsHeader = ({ - sortNameOrder, - sortSizeOrder, - sortLastModifiedOrder, + sortedByName, + sortedBySize, + sortedByLastModified, + sortOrder, sortObjects }) => (
@@ -31,48 +39,54 @@ export const ObjectsHeader = ({
sortObjects("name")} + onClick={() => sortObjects(SORT_BY_NAME)} data-sort="name" > Name
sortObjects("size")} + onClick={() => sortObjects(SORT_BY_SIZE)} data-sort="size" > Size
sortObjects("last-modified")} + onClick={() => sortObjects(SORT_BY_LAST_MODIFIED)} data-sort="last-modified" > Last Modified
@@ -83,10 +97,10 @@ export const ObjectsHeader = ({ const mapStateToProps = state => { return { - sortNameOrder: state.objects.sortBy == "name" && state.objects.sortOrder, - sortSizeOrder: state.objects.sortBy == "size" && state.objects.sortOrder, - sortLastModifiedOrder: - state.objects.sortBy == "last-modified" && state.objects.sortOrder + sortedByName: state.objects.sortBy == SORT_BY_NAME, + sortedBySize: state.objects.sortBy == SORT_BY_SIZE, + sortedByLastModified: state.objects.sortBy == SORT_BY_LAST_MODIFIED, + sortOrder: state.objects.sortOrder } } @@ -96,4 +110,7 @@ const mapDispatchToProps = dispatch => { } } -export default connect(mapStateToProps, mapDispatchToProps)(ObjectsHeader) +export default connect( + mapStateToProps, + mapDispatchToProps +)(ObjectsHeader) diff --git a/vendor/github.com/minio/minio/browser/app/js/objects/ObjectsListContainer.js b/vendor/github.com/minio/minio/browser/app/js/objects/ObjectsListContainer.js index 7b4d11a81f..2767980c3f 100644 --- a/vendor/github.com/minio/minio/browser/app/js/objects/ObjectsListContainer.js +++ b/vendor/github.com/minio/minio/browser/app/js/objects/ObjectsListContainer.js @@ -15,32 +15,52 @@ */ import React from "react" -import classNames from "classnames" import { connect } from "react-redux" import InfiniteScroll from "react-infinite-scroller" -import * as actionsObjects from "./actions" import ObjectsList from "./ObjectsList" export class ObjectsListContainer extends React.Component { + constructor(props) { + super(props) + this.state = { + page: 1 + } + this.loadNextPage = this.loadNextPage.bind(this) + } + componentWillReceiveProps(nextProps) { + if ( + nextProps.currentBucket !== this.props.currentBucket || + nextProps.currentPrefix !== this.props.currentPrefix || + nextProps.sortBy !== this.props.sortBy || + nextProps.sortOrder !== this.props.sortOrder + ) { + this.setState({ + page: 1 + }) + } + } + loadNextPage() { + this.setState(state => { + return { page: state.page + 1 } + }) + } render() { - const { objects, isTruncated, currentBucket, loadObjects } = this.props + const { objects, listLoading } = this.props + + const visibleObjects = objects.slice(0, this.state.page * 100) + return ( -
+
loadObjects(true)} - hasMore={isTruncated} + loadMore={this.loadNextPage} + hasMore={objects.length > visibleObjects.length} useWindow={true} initialLoad={false} > - + -
- Loading... -
+ {listLoading &&
}
) } @@ -51,16 +71,10 @@ const mapStateToProps = state => { currentBucket: state.buckets.currentBucket, currentPrefix: state.objects.currentPrefix, objects: state.objects.list, - isTruncated: state.objects.isTruncated + sortBy: state.objects.sortBy, + sortOrder: state.objects.sortOrder, + listLoading: state.objects.listLoading } } -const mapDispatchToProps = dispatch => { - return { - loadObjects: append => dispatch(actionsObjects.fetchObjects(append)) - } -} - -export default connect(mapStateToProps, mapDispatchToProps)( - ObjectsListContainer -) +export default connect(mapStateToProps)(ObjectsListContainer) diff --git a/vendor/github.com/minio/minio/browser/app/js/objects/__tests__/ObjectsHeader.test.js b/vendor/github.com/minio/minio/browser/app/js/objects/__tests__/ObjectsHeader.test.js index b7d079d997..ec49f55525 100644 --- a/vendor/github.com/minio/minio/browser/app/js/objects/__tests__/ObjectsHeader.test.js +++ b/vendor/github.com/minio/minio/browser/app/js/objects/__tests__/ObjectsHeader.test.js @@ -17,6 +17,7 @@ import React from "react" import { shallow } from "enzyme" import { ObjectsHeader } from "../ObjectsHeader" +import { SORT_ORDER_ASC, SORT_ORDER_DESC } from "../../constants" describe("ObjectsHeader", () => { it("should render without crashing", () => { @@ -24,44 +25,84 @@ describe("ObjectsHeader", () => { shallow() }) - it("should render columns with asc classes by default", () => { + it("should render the name column with asc class when objects are sorted by name asc", () => { const sortObjects = jest.fn() - const wrapper = shallow() + const wrapper = shallow( + + ) expect( wrapper.find("#sort-by-name i").hasClass("fa-sort-alpha-asc") ).toBeTruthy() - expect( - wrapper.find("#sort-by-size i").hasClass("fa-sort-amount-asc") - ).toBeTruthy() - expect( - wrapper.find("#sort-by-last-modified i").hasClass("fa-sort-numeric-asc") - ).toBeTruthy() }) - it("should render name column with desc class when objects are sorted by name", () => { + it("should render the name column with desc class when objects are sorted by name desc", () => { const sortObjects = jest.fn() const wrapper = shallow( - + ) expect( wrapper.find("#sort-by-name i").hasClass("fa-sort-alpha-desc") ).toBeTruthy() }) - it("should render size column with desc class when objects are sorted by size", () => { + it("should render the size column with asc class when objects are sorted by size asc", () => { const sortObjects = jest.fn() const wrapper = shallow( - + + ) + expect( + wrapper.find("#sort-by-size i").hasClass("fa-sort-amount-asc") + ).toBeTruthy() + }) + + it("should render the size column with desc class when objects are sorted by size desc", () => { + const sortObjects = jest.fn() + const wrapper = shallow( + ) expect( wrapper.find("#sort-by-size i").hasClass("fa-sort-amount-desc") ).toBeTruthy() }) - it("should render last modified column with desc class when objects are sorted by last modified", () => { + it("should render the date column with asc class when objects are sorted by date asc", () => { const sortObjects = jest.fn() const wrapper = shallow( - + + ) + expect( + wrapper.find("#sort-by-last-modified i").hasClass("fa-sort-numeric-asc") + ).toBeTruthy() + }) + + it("should render the date column with desc class when objects are sorted by date desc", () => { + const sortObjects = jest.fn() + const wrapper = shallow( + ) expect( wrapper.find("#sort-by-last-modified i").hasClass("fa-sort-numeric-desc") diff --git a/vendor/github.com/minio/minio/browser/app/js/objects/__tests__/ObjectsListContainer.test.js b/vendor/github.com/minio/minio/browser/app/js/objects/__tests__/ObjectsListContainer.test.js index 805967ee6a..3b25d36aa4 100644 --- a/vendor/github.com/minio/minio/browser/app/js/objects/__tests__/ObjectsListContainer.test.js +++ b/vendor/github.com/minio/minio/browser/app/js/objects/__tests__/ObjectsListContainer.test.js @@ -20,14 +20,13 @@ import { ObjectsListContainer } from "../ObjectsListContainer" describe("ObjectsList", () => { it("should render without crashing", () => { - shallow() + shallow() }) it("should render ObjectsList with objects", () => { const wrapper = shallow( ) expect(wrapper.find("ObjectsList").length).toBe(1) @@ -37,10 +36,14 @@ describe("ObjectsList", () => { ]) }) - it("should show the loading indicator at the bottom if there are more elements to display", () => { + it("should show the loading indicator when the objects are being loaded", () => { const wrapper = shallow( - + ) - expect(wrapper.find(".text-center").prop("style")).toHaveProperty("display", "block") + expect(wrapper.find(".loading").exists()).toBeTruthy() }) }) diff --git a/vendor/github.com/minio/minio/browser/app/js/objects/__tests__/actions.test.js b/vendor/github.com/minio/minio/browser/app/js/objects/__tests__/actions.test.js index 1ee2d8f986..a769f5fc27 100644 --- a/vendor/github.com/minio/minio/browser/app/js/objects/__tests__/actions.test.js +++ b/vendor/github.com/minio/minio/browser/app/js/objects/__tests__/actions.test.js @@ -18,7 +18,13 @@ import configureStore from "redux-mock-store" import thunk from "redux-thunk" import * as actionsObjects from "../actions" import * as alertActions from "../../alert/actions" -import { minioBrowserPrefix } from "../../constants" +import { + minioBrowserPrefix, + SORT_BY_NAME, + SORT_ORDER_ASC, + SORT_BY_LAST_MODIFIED, + SORT_ORDER_DESC +} from "../../constants" import history from "../../history" jest.mock("../../web", () => ({ @@ -37,8 +43,6 @@ jest.mock("../../web", () => ({ } else { return Promise.resolve({ objects: [{ name: "test1" }, { name: "test2" }], - istruncated: false, - nextmarker: "test2", writable: false }) } @@ -77,17 +81,11 @@ describe("Objects actions", () => { const expectedActions = [ { type: "objects/SET_LIST", - objects: [{ name: "test1" }, { name: "test2" }], - isTruncated: false, - marker: "test2" + objects: [{ name: "test1" }, { name: "test2" }] } ] store.dispatch( - actionsObjects.setList( - [{ name: "test1" }, { name: "test2" }], - "test2", - false - ) + actionsObjects.setList([{ name: "test1" }, { name: "test2" }]) ) const actions = store.getActions() expect(actions).toEqual(expectedActions) @@ -98,10 +96,10 @@ describe("Objects actions", () => { const expectedActions = [ { type: "objects/SET_SORT_BY", - sortBy: "name" + sortBy: SORT_BY_NAME } ] - store.dispatch(actionsObjects.setSortBy("name")) + store.dispatch(actionsObjects.setSortBy(SORT_BY_NAME)) const actions = store.getActions() expect(actions).toEqual(expectedActions) }) @@ -111,10 +109,10 @@ describe("Objects actions", () => { const expectedActions = [ { type: "objects/SET_SORT_ORDER", - sortOrder: true + sortOrder: SORT_ORDER_ASC } ] - store.dispatch(actionsObjects.setSortOrder(true)) + store.dispatch(actionsObjects.setSortOrder(SORT_ORDER_ASC)) const actions = store.getActions() expect(actions).toEqual(expectedActions) }) @@ -126,23 +124,26 @@ describe("Objects actions", () => { }) const expectedActions = [ { - type: "objects/SET_LIST", - objects: [{ name: "test1" }, { name: "test2" }], - marker: "test2", - isTruncated: false + type: "objects/RESET_LIST" }, + { listLoading: true, type: "objects/SET_LIST_LOADING" }, { type: "objects/SET_SORT_BY", - sortBy: "" + sortBy: SORT_BY_LAST_MODIFIED }, { type: "objects/SET_SORT_ORDER", - sortOrder: false + sortOrder: SORT_ORDER_DESC + }, + { + type: "objects/SET_LIST", + objects: [{ name: "test2" }, { name: "test1" }] }, { type: "objects/SET_PREFIX_WRITABLE", prefixWritable: false - } + }, + { listLoading: false, type: "objects/SET_LIST_LOADING" } ] return store.dispatch(actionsObjects.fetchObjects()).then(() => { const actions = store.getActions() @@ -150,35 +151,16 @@ describe("Objects actions", () => { }) }) - it("creates objects/APPEND_LIST after fetching more objects", () => { - const store = mockStore({ - buckets: { currentBucket: "bk1" }, - objects: { currentPrefix: "" } - }) - const expectedActions = [ - { - type: "objects/APPEND_LIST", - objects: [{ name: "test1" }, { name: "test2" }], - marker: "test2", - isTruncated: false - }, - { - type: "objects/SET_PREFIX_WRITABLE", - prefixWritable: false - } - ] - return store.dispatch(actionsObjects.fetchObjects(true)).then(() => { - const actions = store.getActions() - expect(actions).toEqual(expectedActions) - }) - }) - it("creates objects/RESET_LIST after failing to fetch the objects from bucket with ListObjects denied for LoggedIn users", () => { const store = mockStore({ buckets: { currentBucket: "test-deny" }, objects: { currentPrefix: "" } }) const expectedActions = [ + { + type: "objects/RESET_LIST" + }, + { listLoading: true, type: "objects/SET_LIST_LOADING" }, { type: "alert/SET", alert: { @@ -189,8 +171,9 @@ describe("Objects actions", () => { } }, { - type: "object/RESET_LIST" - } + type: "objects/RESET_LIST" + }, + { listLoading: false, type: "objects/SET_LIST_LOADING" } ] return store.dispatch(actionsObjects.fetchObjects()).then(() => { const actions = store.getActions() @@ -213,28 +196,24 @@ describe("Objects actions", () => { objects: { list: [], sortBy: "", - sortOrder: false, - isTruncated: false, - marker: "" + sortOrder: SORT_ORDER_ASC } }) const expectedActions = [ { type: "objects/SET_SORT_BY", - sortBy: "name" + sortBy: SORT_BY_NAME }, { type: "objects/SET_SORT_ORDER", - sortOrder: true + sortOrder: SORT_ORDER_ASC }, { type: "objects/SET_LIST", - objects: [], - isTruncated: false, - marker: "" + objects: [] } ] - store.dispatch(actionsObjects.sortObjects("name")) + store.dispatch(actionsObjects.sortObjects(SORT_BY_NAME)) const actions = store.getActions() expect(actions).toEqual(expectedActions) }) @@ -246,6 +225,10 @@ describe("Objects actions", () => { }) const expectedActions = [ { type: "objects/SET_CURRENT_PREFIX", prefix: "abc/" }, + { + type: "objects/RESET_LIST" + }, + { listLoading: true, type: "objects/SET_LIST_LOADING" }, { type: "objects/CHECKED_LIST_RESET" } ] store.dispatch(actionsObjects.selectPrefix("abc/")) diff --git a/vendor/github.com/minio/minio/browser/app/js/objects/__tests__/reducer.test.js b/vendor/github.com/minio/minio/browser/app/js/objects/__tests__/reducer.test.js index 1a0de01d85..635143cbbc 100644 --- a/vendor/github.com/minio/minio/browser/app/js/objects/__tests__/reducer.test.js +++ b/vendor/github.com/minio/minio/browser/app/js/objects/__tests__/reducer.test.js @@ -16,17 +16,17 @@ import reducer from "../reducer" import * as actions from "../actions" +import { SORT_ORDER_ASC, SORT_BY_NAME } from "../../constants" describe("objects reducer", () => { it("should return the initial state", () => { const initialState = reducer(undefined, {}) expect(initialState).toEqual({ list: [], + listLoading: false, sortBy: "", - sortOrder: false, + sortOrder: SORT_ORDER_ASC, currentPrefix: "", - marker: "", - isTruncated: false, prefixWritable: false, shareObject: { show: false, @@ -40,37 +40,9 @@ describe("objects reducer", () => { it("should handle SET_LIST", () => { const newState = reducer(undefined, { type: actions.SET_LIST, - objects: [{ name: "obj1" }, { name: "obj2" }], - marker: "obj2", - isTruncated: false + objects: [{ name: "obj1" }, { name: "obj2" }] }) expect(newState.list).toEqual([{ name: "obj1" }, { name: "obj2" }]) - expect(newState.marker).toBe("obj2") - expect(newState.isTruncated).toBeFalsy() - }) - - it("should handle APPEND_LIST", () => { - const newState = reducer( - { - list: [{ name: "obj1" }, { name: "obj2" }], - marker: "obj2", - isTruncated: true - }, - { - type: actions.APPEND_LIST, - objects: [{ name: "obj3" }, { name: "obj4" }], - marker: "obj4", - isTruncated: false - } - ) - expect(newState.list).toEqual([ - { name: "obj1" }, - { name: "obj2" }, - { name: "obj3" }, - { name: "obj4" } - ]) - expect(newState.marker).toBe("obj4") - expect(newState.isTruncated).toBeFalsy() }) it("should handle REMOVE", () => { @@ -98,30 +70,28 @@ describe("objects reducer", () => { it("should handle SET_SORT_BY", () => { const newState = reducer(undefined, { type: actions.SET_SORT_BY, - sortBy: "name" + sortBy: SORT_BY_NAME }) - expect(newState.sortBy).toEqual("name") + expect(newState.sortBy).toEqual(SORT_BY_NAME) }) it("should handle SET_SORT_ORDER", () => { const newState = reducer(undefined, { type: actions.SET_SORT_ORDER, - sortOrder: true + sortOrder: SORT_ORDER_ASC }) - expect(newState.sortOrder).toEqual(true) + expect(newState.sortOrder).toEqual(SORT_ORDER_ASC) }) it("should handle SET_CURRENT_PREFIX", () => { const newState = reducer( - { currentPrefix: "test1/", marker: "abc", isTruncated: true }, + { currentPrefix: "test1/" }, { type: actions.SET_CURRENT_PREFIX, prefix: "test2/" } ) expect(newState.currentPrefix).toEqual("test2/") - expect(newState.marker).toEqual("") - expect(newState.isTruncated).toBeFalsy() }) it("should handle SET_PREFIX_WRITABLE", () => { diff --git a/vendor/github.com/minio/minio/browser/app/js/objects/actions.js b/vendor/github.com/minio/minio/browser/app/js/objects/actions.js index 59c5af863c..c1ea37def6 100644 --- a/vendor/github.com/minio/minio/browser/app/js/objects/actions.js +++ b/vendor/github.com/minio/minio/browser/app/js/objects/actions.js @@ -16,15 +16,26 @@ import web from "../web" import history from "../history" -import { sortObjectsByName, sortObjectsBySize, sortObjectsByDate } from "../utils" +import { + sortObjectsByName, + sortObjectsBySize, + sortObjectsByDate +} from "../utils" import { getCurrentBucket } from "../buckets/selectors" import { getCurrentPrefix, getCheckedList } from "./selectors" import * as alertActions from "../alert/actions" import * as bucketActions from "../buckets/actions" -import { minioBrowserPrefix } from "../constants" +import { + minioBrowserPrefix, + SORT_BY_NAME, + SORT_BY_SIZE, + SORT_BY_LAST_MODIFIED, + SORT_ORDER_ASC, + SORT_ORDER_DESC +} from "../constants" export const SET_LIST = "objects/SET_LIST" -export const RESET_LIST = "object/RESET_LIST" +export const RESET_LIST = "objects/RESET_LIST" export const APPEND_LIST = "objects/APPEND_LIST" export const REMOVE = "objects/REMOVE" export const SET_SORT_BY = "objects/SET_SORT_BY" @@ -35,53 +46,63 @@ export const SET_SHARE_OBJECT = "objects/SET_SHARE_OBJECT" export const CHECKED_LIST_ADD = "objects/CHECKED_LIST_ADD" export const CHECKED_LIST_REMOVE = "objects/CHECKED_LIST_REMOVE" export const CHECKED_LIST_RESET = "objects/CHECKED_LIST_RESET" +export const SET_LIST_LOADING = "objects/SET_LIST_LOADING" -export const setList = (objects, marker, isTruncated) => ({ +export const setList = objects => ({ type: SET_LIST, - objects, - marker, - isTruncated + objects }) export const resetList = () => ({ type: RESET_LIST }) -export const appendList = (objects, marker, isTruncated) => ({ - type: APPEND_LIST, - objects, - marker, - isTruncated +export const setListLoading = listLoading => ({ + type: SET_LIST_LOADING, + listLoading }) -export const fetchObjects = append => { +export const fetchObjects = () => { return function(dispatch, getState) { - const {buckets: {currentBucket}, objects: {currentPrefix, marker}} = getState() + dispatch(resetList()) + const { + buckets: { currentBucket }, + objects: { currentPrefix } + } = getState() if (currentBucket) { + dispatch(setListLoading(true)) return web .ListObjects({ bucketName: currentBucket, - prefix: currentPrefix, - marker: append ? marker : "" + prefix: currentPrefix }) .then(res => { - let objects = [] - if (res.objects) { - objects = res.objects.map(object => { - return { - ...object, - name: object.name.replace(currentPrefix, "") - } - }) + // we need to check if the bucket name and prefix are the same as + // when the request was made before updating the displayed objects + if ( + currentBucket === getCurrentBucket(getState()) && + currentPrefix === getCurrentPrefix(getState()) + ) { + let objects = [] + if (res.objects) { + objects = res.objects.map(object => { + return { + ...object, + name: object.name.replace(currentPrefix, "") + } + }) + } + + const sortBy = SORT_BY_LAST_MODIFIED + const sortOrder = SORT_ORDER_DESC + dispatch(setSortBy(sortBy)) + dispatch(setSortOrder(sortOrder)) + const sortedList = sortObjectsList(objects, sortBy, sortOrder) + dispatch(setList(sortedList)) + + dispatch(setPrefixWritable(res.writable)) + dispatch(setListLoading(false)) } - if (append) { - dispatch(appendList(objects, res.nextmarker, res.istruncated)) - } else { - dispatch(setList(objects, res.nextmarker, res.istruncated)) - dispatch(setSortBy("")) - dispatch(setSortOrder(false)) - } - dispatch(setPrefixWritable(res.writable)) }) .catch(err => { if (web.LoggedIn()) { @@ -96,6 +117,7 @@ export const fetchObjects = append => { } else { history.push("/login") } + dispatch(setListLoading(false)) }) } } @@ -103,26 +125,27 @@ export const fetchObjects = append => { export const sortObjects = sortBy => { return function(dispatch, getState) { - const {objects} = getState() - const sortOrder = objects.sortBy == sortBy ? !objects.sortOrder : true + const { objects } = getState() + let sortOrder = SORT_ORDER_ASC + // Reverse sort order if the list is already sorted on same field + if (objects.sortBy === sortBy && objects.sortOrder === SORT_ORDER_ASC) { + sortOrder = SORT_ORDER_DESC + } dispatch(setSortBy(sortBy)) dispatch(setSortOrder(sortOrder)) - let list - switch (sortBy) { - case "name": - list = sortObjectsByName(objects.list, sortOrder) - break - case "size": - list = sortObjectsBySize(objects.list, sortOrder) - break - case "last-modified": - list = sortObjectsByDate(objects.list, sortOrder) - break - default: - list = objects.list - break - } - dispatch(setList(list, objects.marker, objects.isTruncated)) + const sortedList = sortObjectsList(objects.list, sortBy, sortOrder) + dispatch(setList(sortedList)) + } +} + +const sortObjectsList = (list, sortBy, sortOrder) => { + switch (sortBy) { + case SORT_BY_NAME: + return sortObjectsByName(list, sortOrder) + case SORT_BY_SIZE: + return sortObjectsBySize(list, sortOrder) + case SORT_BY_LAST_MODIFIED: + return sortObjectsByDate(list, sortOrder) } } @@ -229,7 +252,16 @@ export const shareObject = (object, days, hours, minutes) => { ) }) } else { - dispatch(showShareObject(object, `${location.host}` + '/' + `${currentBucket}` + '/' + encodeURI(objectName))) + dispatch( + showShareObject( + object, + `${location.host}` + + "/" + + `${currentBucket}` + + "/" + + encodeURI(objectName) + ) + ) dispatch( alertActions.set({ type: "success", @@ -322,13 +354,14 @@ export const downloadCheckedObjects = () => { }${minioBrowserPrefix}/zip?token=${res.token}` downloadZip(requestUrl, req, dispatch) }) - .catch(err => dispatch( - alertActions.set({ - type: "danger", - message: err.message - }) + .catch(err => + dispatch( + alertActions.set({ + type: "danger", + message: err.message + }) + ) ) - ) } } } @@ -351,7 +384,8 @@ const downloadZip = (url, req, dispatch) => { var separator = req.prefix.length > 1 ? "-" : "" anchor.href = blobUrl - anchor.download = req.bucketName + separator + req.prefix.slice(0, -1) + ".zip" + anchor.download = + req.bucketName + separator + req.prefix.slice(0, -1) + ".zip" anchor.click() window.URL.revokeObjectURL(blobUrl) diff --git a/vendor/github.com/minio/minio/browser/app/js/objects/reducer.js b/vendor/github.com/minio/minio/browser/app/js/objects/reducer.js index 0357f99eba..801039c4ef 100644 --- a/vendor/github.com/minio/minio/browser/app/js/objects/reducer.js +++ b/vendor/github.com/minio/minio/browser/app/js/objects/reducer.js @@ -15,6 +15,7 @@ */ import * as actionsObjects from "./actions" +import { SORT_ORDER_ASC } from "../constants" const removeObject = (list, objectToRemove, lookup) => { const idx = list.findIndex(object => lookup(object) === objectToRemove) @@ -27,11 +28,10 @@ const removeObject = (list, objectToRemove, lookup) => { export default ( state = { list: [], + listLoading: false, sortBy: "", - sortOrder: false, + sortOrder: SORT_ORDER_ASC, currentPrefix: "", - marker: "", - isTruncated: false, prefixWritable: false, shareObject: { show: false, @@ -46,23 +46,17 @@ export default ( case actionsObjects.SET_LIST: return { ...state, - list: action.objects, - marker: action.marker, - isTruncated: action.isTruncated + list: action.objects } case actionsObjects.RESET_LIST: return { ...state, - list: [], - marker: "", - isTruncated: false + list: [] } - case actionsObjects.APPEND_LIST: + case actionsObjects.SET_LIST_LOADING: return { ...state, - list: [...state.list, ...action.objects], - marker: action.marker, - isTruncated: action.isTruncated + listLoading: action.listLoading } case actionsObjects.REMOVE: return { @@ -82,9 +76,7 @@ export default ( case actionsObjects.SET_CURRENT_PREFIX: return { ...state, - currentPrefix: action.prefix, - marker: "", - isTruncated: false + currentPrefix: action.prefix } case actionsObjects.SET_PREFIX_WRITABLE: return { diff --git a/vendor/github.com/minio/minio/browser/app/js/utils.js b/vendor/github.com/minio/minio/browser/app/js/utils.js index 9e08da109a..bbf19aa6a2 100644 --- a/vendor/github.com/minio/minio/browser/app/js/utils.js +++ b/vendor/github.com/minio/minio/browser/app/js/utils.js @@ -14,7 +14,7 @@ * limitations under the License. */ -import { minioBrowserPrefix } from "./constants.js" +import { minioBrowserPrefix, SORT_ORDER_DESC } from "./constants.js" export const sortObjectsByName = (objects, order) => { let folders = objects.filter(object => object.name.endsWith("/")) @@ -29,7 +29,7 @@ export const sortObjectsByName = (objects, order) => { if (a.name.toLowerCase() > b.name.toLowerCase()) return 1 return 0 }) - if (order) { + if (order === SORT_ORDER_DESC) { folders = folders.reverse() files = files.reverse() } @@ -40,7 +40,7 @@ export const sortObjectsBySize = (objects, order) => { let folders = objects.filter(object => object.name.endsWith("/")) let files = objects.filter(object => !object.name.endsWith("/")) files = files.sort((a, b) => a.size - b.size) - if (order) files = files.reverse() + if (order === SORT_ORDER_DESC) files = files.reverse() return [...folders, ...files] } @@ -51,7 +51,7 @@ export const sortObjectsByDate = (objects, order) => { (a, b) => new Date(a.lastModified).getTime() - new Date(b.lastModified).getTime() ) - if (order) files = files.reverse() + if (order === SORT_ORDER_DESC) files = files.reverse() return [...folders, ...files] } diff --git a/vendor/github.com/minio/minio/browser/app/less/inc/list.less b/vendor/github.com/minio/minio/browser/app/less/inc/list.less index 7371539e37..f3d7ebe2cc 100644 --- a/vendor/github.com/minio/minio/browser/app/less/inc/list.less +++ b/vendor/github.com/minio/minio/browser/app/less/inc/list.less @@ -43,6 +43,9 @@ header.fesl-row { color: @dark-gray; font-size: 14px; } + & > .fesli-sort--active { + .opacity(0.5); + } &:hover:not(.fesl-item-actions) { background: lighten(@text-muted-color, 22%); diff --git a/vendor/github.com/minio/minio/browser/app/less/inc/misc.less b/vendor/github.com/minio/minio/browser/app/less/inc/misc.less index 8359d426d4..28e00c8e63 100644 --- a/vendor/github.com/minio/minio/browser/app/less/inc/misc.less +++ b/vendor/github.com/minio/minio/browser/app/less/inc/misc.less @@ -113,4 +113,41 @@ margin: 0; vertical-align: top; } +} + +.loading { + position: absolute; + margin: auto; + left: 0; + right: 0; + top: 0; + bottom: 0; + border-top: 1px solid @loading-track-bg; + border-right: 1px solid @loading-track-bg; + border-bottom: 1px solid @loading-track-bg; + border-left: 1px solid @loading-point-bg; + transform: translateZ(0); + animation: loading 1.1s infinite linear; + border-radius: 50%; + width: 35px; + height: 35px; + margin-top: 30px; +} + +@-webkit-keyframes loading { + 0% { + transform: rotate(0deg); + } + 100% { + transform: rotate(360deg); + } +} + +@keyframes loading { + 0% { + transform: rotate(0deg); + } + 100% { + transform: rotate(360deg); + } } \ No newline at end of file diff --git a/vendor/github.com/minio/minio/browser/app/less/inc/variables.less b/vendor/github.com/minio/minio/browser/app/less/inc/variables.less index 9089fb2f2a..173ef91a25 100644 --- a/vendor/github.com/minio/minio/browser/app/less/inc/variables.less +++ b/vendor/github.com/minio/minio/browser/app/less/inc/variables.less @@ -100,4 +100,10 @@ List --------------------------*/ @list-row-selected-bg: #fbf2bf; -@list-row-even-bg: #fafafa; \ No newline at end of file +@list-row-even-bg: #fafafa; + +/*-------------------------- + Loading +---------------------------*/ +@loading-track-bg: #eeeeee; +@loading-point-bg: #00303f; \ No newline at end of file diff --git a/vendor/github.com/minio/minio/browser/package-lock.json b/vendor/github.com/minio/minio/browser/package-lock.json new file mode 100644 index 0000000000..479afd8cec --- /dev/null +++ b/vendor/github.com/minio/minio/browser/package-lock.json @@ -0,0 +1,14239 @@ +{ + "name": "browser", + "version": "0.0.1", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@babel/code-frame": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0.tgz", + "integrity": "sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA==", + "dev": true, + "requires": { + "@babel/highlight": "^7.0.0" + } + }, + "@babel/highlight": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0.tgz", + "integrity": "sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw==", + "dev": true, + "requires": { + "chalk": "^2.0.0", + "esutils": "^2.0.2", + "js-tokens": "^4.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "@babel/runtime": { + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.4.5.tgz", + "integrity": "sha512-TuI4qpWZP6lGOGIuGWtp9sPluqYICmbk8T/1vpSysqJxRPkudh/ofFWyqdcMsDf2s7KvDL4/YHgKyvcS3g9CJQ==", + "requires": { + "regenerator-runtime": "^0.13.2" + }, + "dependencies": { + "regenerator-runtime": { + "version": "0.13.2", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.2.tgz", + "integrity": "sha512-S/TQAZJO+D3m9xeN1WTI8dLKBBiRgXBlTJvbWjCThHWZj9EvHK70Ff50/tYj2J/fvBY6JtFVwRuazHN2E7M9BA==" + } + } + }, + "@types/node": { + "version": "12.0.7", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.0.7.tgz", + "integrity": "sha512-1YKeT4JitGgE4SOzyB9eMwO0nGVNkNEsm9qlIt1Lqm/tG2QEiSMTD4kS3aO6L+w5SClLVxALmIBESK6Mk5wX0A==", + "dev": true + }, + "@webassemblyjs/ast": { + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.7.11.tgz", + "integrity": "sha512-ZEzy4vjvTzScC+SH8RBssQUawpaInUdMTYwYYLh54/s8TuT0gBLuyUnppKsVyZEi876VmmStKsUs28UxPgdvrA==", + "requires": { + "@webassemblyjs/helper-module-context": "1.7.11", + "@webassemblyjs/helper-wasm-bytecode": "1.7.11", + "@webassemblyjs/wast-parser": "1.7.11" + } + }, + "@webassemblyjs/floating-point-hex-parser": { + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.7.11.tgz", + "integrity": "sha512-zY8dSNyYcgzNRNT666/zOoAyImshm3ycKdoLsyDw/Bwo6+/uktb7p4xyApuef1dwEBo/U/SYQzbGBvV+nru2Xg==" + }, + "@webassemblyjs/helper-api-error": { + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.7.11.tgz", + "integrity": "sha512-7r1qXLmiglC+wPNkGuXCvkmalyEstKVwcueZRP2GNC2PAvxbLYwLLPr14rcdJaE4UtHxQKfFkuDFuv91ipqvXg==" + }, + "@webassemblyjs/helper-buffer": { + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.7.11.tgz", + "integrity": "sha512-MynuervdylPPh3ix+mKZloTcL06P8tenNH3sx6s0qE8SLR6DdwnfgA7Hc9NSYeob2jrW5Vql6GVlsQzKQCa13w==" + }, + "@webassemblyjs/helper-code-frame": { + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.7.11.tgz", + "integrity": "sha512-T8ESC9KMXFTXA5urJcyor5cn6qWeZ4/zLPyWeEXZ03hj/x9weSokGNkVCdnhSabKGYWxElSdgJ+sFa9G/RdHNw==", + "requires": { + "@webassemblyjs/wast-printer": "1.7.11" + } + }, + "@webassemblyjs/helper-fsm": { + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.7.11.tgz", + "integrity": "sha512-nsAQWNP1+8Z6tkzdYlXT0kxfa2Z1tRTARd8wYnc/e3Zv3VydVVnaeePgqUzFrpkGUyhUUxOl5ML7f1NuT+gC0A==" + }, + "@webassemblyjs/helper-module-context": { + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.7.11.tgz", + "integrity": "sha512-JxfD5DX8Ygq4PvXDucq0M+sbUFA7BJAv/GGl9ITovqE+idGX+J3QSzJYz+LwQmL7fC3Rs+utvWoJxDb6pmC0qg==" + }, + "@webassemblyjs/helper-wasm-bytecode": { + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.7.11.tgz", + "integrity": "sha512-cMXeVS9rhoXsI9LLL4tJxBgVD/KMOKXuFqYb5oCJ/opScWpkCMEz9EJtkonaNcnLv2R3K5jIeS4TRj/drde1JQ==" + }, + "@webassemblyjs/helper-wasm-section": { + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.7.11.tgz", + "integrity": "sha512-8ZRY5iZbZdtNFE5UFunB8mmBEAbSI3guwbrsCl4fWdfRiAcvqQpeqd5KHhSWLL5wuxo53zcaGZDBU64qgn4I4Q==", + "requires": { + "@webassemblyjs/ast": "1.7.11", + "@webassemblyjs/helper-buffer": "1.7.11", + "@webassemblyjs/helper-wasm-bytecode": "1.7.11", + "@webassemblyjs/wasm-gen": "1.7.11" + } + }, + "@webassemblyjs/ieee754": { + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.7.11.tgz", + "integrity": "sha512-Mmqx/cS68K1tSrvRLtaV/Lp3NZWzXtOHUW2IvDvl2sihAwJh4ACE0eL6A8FvMyDG9abes3saB6dMimLOs+HMoQ==", + "requires": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "@webassemblyjs/leb128": { + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.7.11.tgz", + "integrity": "sha512-vuGmgZjjp3zjcerQg+JA+tGOncOnJLWVkt8Aze5eWQLwTQGNgVLcyOTqgSCxWTR4J42ijHbBxnuRaL1Rv7XMdw==", + "requires": { + "@xtuc/long": "4.2.1" + } + }, + "@webassemblyjs/utf8": { + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.7.11.tgz", + "integrity": "sha512-C6GFkc7aErQIAH+BMrIdVSmW+6HSe20wg57HEC1uqJP8E/xpMjXqQUxkQw07MhNDSDcGpxI9G5JSNOQCqJk4sA==" + }, + "@webassemblyjs/wasm-edit": { + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.7.11.tgz", + "integrity": "sha512-FUd97guNGsCZQgeTPKdgxJhBXkUbMTY6hFPf2Y4OedXd48H97J+sOY2Ltaq6WGVpIH8o/TGOVNiVz/SbpEMJGg==", + "requires": { + "@webassemblyjs/ast": "1.7.11", + "@webassemblyjs/helper-buffer": "1.7.11", + "@webassemblyjs/helper-wasm-bytecode": "1.7.11", + "@webassemblyjs/helper-wasm-section": "1.7.11", + "@webassemblyjs/wasm-gen": "1.7.11", + "@webassemblyjs/wasm-opt": "1.7.11", + "@webassemblyjs/wasm-parser": "1.7.11", + "@webassemblyjs/wast-printer": "1.7.11" + } + }, + "@webassemblyjs/wasm-gen": { + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.7.11.tgz", + "integrity": "sha512-U/KDYp7fgAZX5KPfq4NOupK/BmhDc5Kjy2GIqstMhvvdJRcER/kUsMThpWeRP8BMn4LXaKhSTggIJPOeYHwISA==", + "requires": { + "@webassemblyjs/ast": "1.7.11", + "@webassemblyjs/helper-wasm-bytecode": "1.7.11", + "@webassemblyjs/ieee754": "1.7.11", + "@webassemblyjs/leb128": "1.7.11", + "@webassemblyjs/utf8": "1.7.11" + } + }, + "@webassemblyjs/wasm-opt": { + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.7.11.tgz", + "integrity": "sha512-XynkOwQyiRidh0GLua7SkeHvAPXQV/RxsUeERILmAInZegApOUAIJfRuPYe2F7RcjOC9tW3Cb9juPvAC/sCqvg==", + "requires": { + "@webassemblyjs/ast": "1.7.11", + "@webassemblyjs/helper-buffer": "1.7.11", + "@webassemblyjs/wasm-gen": "1.7.11", + "@webassemblyjs/wasm-parser": "1.7.11" + } + }, + "@webassemblyjs/wasm-parser": { + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.7.11.tgz", + "integrity": "sha512-6lmXRTrrZjYD8Ng8xRyvyXQJYUQKYSXhJqXOBLw24rdiXsHAOlvw5PhesjdcaMadU/pyPQOJ5dHreMjBxwnQKg==", + "requires": { + "@webassemblyjs/ast": "1.7.11", + "@webassemblyjs/helper-api-error": "1.7.11", + "@webassemblyjs/helper-wasm-bytecode": "1.7.11", + "@webassemblyjs/ieee754": "1.7.11", + "@webassemblyjs/leb128": "1.7.11", + "@webassemblyjs/utf8": "1.7.11" + } + }, + "@webassemblyjs/wast-parser": { + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.7.11.tgz", + "integrity": "sha512-lEyVCg2np15tS+dm7+JJTNhNWq9yTZvi3qEhAIIOaofcYlUp0UR5/tVqOwa/gXYr3gjwSZqw+/lS9dscyLelbQ==", + "requires": { + "@webassemblyjs/ast": "1.7.11", + "@webassemblyjs/floating-point-hex-parser": "1.7.11", + "@webassemblyjs/helper-api-error": "1.7.11", + "@webassemblyjs/helper-code-frame": "1.7.11", + "@webassemblyjs/helper-fsm": "1.7.11", + "@xtuc/long": "4.2.1" + } + }, + "@webassemblyjs/wast-printer": { + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.7.11.tgz", + "integrity": "sha512-m5vkAsuJ32QpkdkDOUPGSltrg8Cuk3KBx4YrmAGQwCZPRdUHXxG4phIOuuycLemHFr74sWL9Wthqss4fzdzSwg==", + "requires": { + "@webassemblyjs/ast": "1.7.11", + "@webassemblyjs/wast-parser": "1.7.11", + "@xtuc/long": "4.2.1" + } + }, + "@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==" + }, + "@xtuc/long": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.1.tgz", + "integrity": "sha512-FZdkNBDqBRHKQ2MEbSC17xnPFOhZxeJ2YGSfr2BKf3sujG49Qe3bB+rGCwQfIaA7WHnGeGkSijX4FuBCdrzW/g==" + }, + "abab": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.0.tgz", + "integrity": "sha512-sY5AXXVZv4Y1VACTtR11UJCPHHudgY5i26Qj5TypE6DKlIApbwb5uqhXcJ5UUGbvZNRh7EeIoW+LrJumBsKp7w==", + "dev": true + }, + "abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "dev": true + }, + "accepts": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", + "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", + "dev": true, + "requires": { + "mime-types": "~2.1.24", + "negotiator": "0.6.2" + }, + "dependencies": { + "mime-db": { + "version": "1.40.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.40.0.tgz", + "integrity": "sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA==", + "dev": true + }, + "mime-types": { + "version": "2.1.24", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.24.tgz", + "integrity": "sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ==", + "dev": true, + "requires": { + "mime-db": "1.40.0" + } + } + } + }, + "acorn": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.3.0.tgz", + "integrity": "sha512-Yej+zOJ1Dm/IMZzzj78OntP/r3zHEaKcyNoU2lAaxPtrseM6rF0xwqoz5Q5ysAiED9hTjI2hgtvLXitlCN1/Ug==" + }, + "acorn-dynamic-import": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-3.0.0.tgz", + "integrity": "sha512-zVWV8Z8lislJoOKKqdNMOB+s6+XV5WERty8MnKBeFgwA+19XJjJHs2RP5dzM57FftIs+jQnRToLiWazKr6sSWg==", + "requires": { + "acorn": "^5.0.0" + } + }, + "acorn-globals": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.3.2.tgz", + "integrity": "sha512-BbzvZhVtZP+Bs1J1HcwrQe8ycfO0wStkSGxuul3He3GkHOIZ6eTqOkPuw9IP1X3+IkOo4wiJmwkobzXYz4wewQ==", + "dev": true, + "requires": { + "acorn": "^6.0.1", + "acorn-walk": "^6.0.1" + }, + "dependencies": { + "acorn": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.1.1.tgz", + "integrity": "sha512-jPTiwtOxaHNaAPg/dmrJ/beuzLRnXtB0kQPQ8JpotKJgTB6rX6c8mlf315941pyjBSaPg8NHXS9fhP4u17DpGA==", + "dev": true + } + } + }, + "acorn-to-esprima": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/acorn-to-esprima/-/acorn-to-esprima-2.0.8.tgz", + "integrity": "sha1-AD8MZC65ITL0F9NwjxStqCrfLrE=", + "dev": true + }, + "acorn-walk": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-6.1.1.tgz", + "integrity": "sha512-OtUw6JUTgxA2QoqqmrmQ7F2NYqiBPi/L2jqHyFtllhOUvXYQXf0Z1CYUinIfyT4bTCGmrA7gX9FvHA81uzCoVw==", + "dev": true + }, + "add-px-to-style": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/add-px-to-style/-/add-px-to-style-1.0.0.tgz", + "integrity": "sha1-0ME1RB+oAUqBN5BFMQlvZ/KPJjo=" + }, + "airbnb-prop-types": { + "version": "2.13.2", + "resolved": "https://registry.npmjs.org/airbnb-prop-types/-/airbnb-prop-types-2.13.2.tgz", + "integrity": "sha512-2FN6DlHr6JCSxPPi25EnqGaXC4OC3/B3k1lCd6MMYrZ51/Gf/1qDfaR+JElzWa+Tl7cY2aYOlsYJGFeQyVHIeQ==", + "dev": true, + "requires": { + "array.prototype.find": "^2.0.4", + "function.prototype.name": "^1.1.0", + "has": "^1.0.3", + "is-regex": "^1.0.4", + "object-is": "^1.0.1", + "object.assign": "^4.1.0", + "object.entries": "^1.1.0", + "prop-types": "^15.7.2", + "prop-types-exact": "^1.2.0", + "react-is": "^16.8.6" + }, + "dependencies": { + "es-abstract": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.13.0.tgz", + "integrity": "sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.0", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "is-callable": "^1.1.4", + "is-regex": "^1.0.4", + "object-keys": "^1.0.12" + } + }, + "loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dev": true, + "requires": { + "js-tokens": "^3.0.0 || ^4.0.0" + } + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true + }, + "object.entries": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.0.tgz", + "integrity": "sha512-l+H6EQ8qzGRxbkHOd5I/aHRhHDKoQXQ8g0BYt4uSweQU1/J6dZUOyWh9a2Vky35YCKjzmgxOzta2hH6kf9HuXA==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.12.0", + "function-bind": "^1.1.1", + "has": "^1.0.3" + } + }, + "prop-types": { + "version": "15.7.2", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz", + "integrity": "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==", + "dev": true, + "requires": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.8.1" + } + } + } + }, + "ajv": { + "version": "6.6.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.6.2.tgz", + "integrity": "sha512-FBHEW6Jf5TB9MGBgUUA9XHkTbjXYfAUjY43ACMfmdMRHniyoMHjHjzD50OK8LGDWQwp4rWEsIq5kEqq7rvIM1g==", + "requires": { + "fast-deep-equal": "^2.0.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ajv-errors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz", + "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==" + }, + "ajv-keywords": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.2.0.tgz", + "integrity": "sha1-6GuBnGAs+IIa1jdBNpjx3sAhhHo=" + }, + "alphanum-sort": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz", + "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=", + "dev": true + }, + "ansi-colors": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.4.tgz", + "integrity": "sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA==", + "dev": true + }, + "ansi-escapes": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", + "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", + "dev": true + }, + "ansi-html": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.7.tgz", + "integrity": "sha1-gTWEAhliqenm/QOflA0S9WynhZ4=", + "dev": true + }, + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "anymatch": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz", + "integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==", + "dev": true, + "optional": true, + "requires": { + "micromatch": "^2.1.5", + "normalize-path": "^2.0.0" + } + }, + "append-transform": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-0.4.0.tgz", + "integrity": "sha1-126/jKlNJ24keja61EpLdKthGZE=", + "dev": true, + "requires": { + "default-require-extensions": "^1.0.0" + } + }, + "aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=" + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==" + }, + "arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=" + }, + "array-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz", + "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=", + "dev": true + }, + "array-filter": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-1.0.0.tgz", + "integrity": "sha1-uveeYubvTCpMC4MSMtr/7CUfnYM=", + "dev": true + }, + "array-flatten": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", + "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==", + "dev": true + }, + "array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "dev": true, + "requires": { + "array-uniq": "^1.0.1" + } + }, + "array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=" + }, + "array.prototype.find": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array.prototype.find/-/array.prototype.find-2.1.0.tgz", + "integrity": "sha512-Wn41+K1yuO5p7wRZDl7890c3xvv5UBrfVXTVIe28rSQb6LS0fZMDrQB6PAcxQFRFy6vJTLDc3A2+3CjQdzVKRg==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.13.0" + }, + "dependencies": { + "es-abstract": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.13.0.tgz", + "integrity": "sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.0", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "is-callable": "^1.1.4", + "is-regex": "^1.0.4", + "object-keys": "^1.0.12" + } + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true + } + } + }, + "array.prototype.flat": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.1.tgz", + "integrity": "sha512-rVqIs330nLJvfC7JqYvEWwqVr5QjYF1ib02i3YJtR/fICO6527Tjpc/e4Mvmxh3GIePPreRXMdaGyC99YphWEw==", + "dev": true, + "requires": { + "define-properties": "^1.1.2", + "es-abstract": "^1.10.0", + "function-bind": "^1.1.1" + }, + "dependencies": { + "es-abstract": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.13.0.tgz", + "integrity": "sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.0", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "is-callable": "^1.1.4", + "is-regex": "^1.0.4", + "object-keys": "^1.0.12" + } + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true + } + } + }, + "arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", + "dev": true + }, + "asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=" + }, + "asn1": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", + "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "dev": true, + "requires": { + "safer-buffer": "~2.1.0" + } + }, + "asn1.js": { + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", + "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", + "requires": { + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "assert": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", + "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", + "requires": { + "object-assign": "^4.1.1", + "util": "0.10.3" + }, + "dependencies": { + "inherits": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=" + }, + "util": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", + "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", + "requires": { + "inherits": "2.0.1" + } + } + } + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + }, + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=" + }, + "astral-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", + "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", + "dev": true + }, + "async": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", + "dev": true + }, + "async-each": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", + "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=" + }, + "async-limiter": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.0.tgz", + "integrity": "sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg==", + "dev": true + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" + }, + "atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==" + }, + "attr-accept": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/attr-accept/-/attr-accept-1.1.3.tgz", + "integrity": "sha512-iT40nudw8zmCweivz6j58g+RT33I4KbaIvRUhjNmDwO2WmsQUxFEZZYZ5w3vXe5x5MX9D7mfvA/XaLOZYFR9EQ==", + "requires": { + "core-js": "^2.5.0" + }, + "dependencies": { + "core-js": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.9.tgz", + "integrity": "sha512-HOpZf6eXmnl7la+cUdMnLvUxKNqLUzJvgIziQ0DiF3JwSImNphIqdGqzj6hIKyX04MmV0poclQ7+wjWvxQyR2A==" + } + } + }, + "autoprefixer": { + "version": "6.7.7", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-6.7.7.tgz", + "integrity": "sha1-Hb0cg1ZY41zj+ZhAmdsAWFx4IBQ=", + "dev": true, + "requires": { + "browserslist": "^1.7.6", + "caniuse-db": "^1.0.30000634", + "normalize-range": "^0.1.2", + "num2fraction": "^1.2.2", + "postcss": "^5.2.16", + "postcss-value-parser": "^3.2.3" + } + }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", + "dev": true + }, + "aws4": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz", + "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==", + "dev": true + }, + "babel-cli": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-cli/-/babel-cli-6.26.0.tgz", + "integrity": "sha1-UCq1SHTX24itALiHoGODzgPQAvE=", + "dev": true, + "requires": { + "babel-core": "^6.26.0", + "babel-polyfill": "^6.26.0", + "babel-register": "^6.26.0", + "babel-runtime": "^6.26.0", + "chokidar": "^1.6.1", + "commander": "^2.11.0", + "convert-source-map": "^1.5.0", + "fs-readdir-recursive": "^1.0.0", + "glob": "^7.1.2", + "lodash": "^4.17.4", + "output-file-sync": "^1.1.2", + "path-is-absolute": "^1.0.1", + "slash": "^1.0.0", + "source-map": "^0.5.6", + "v8flags": "^2.1.1" + }, + "dependencies": { + "babel-polyfill": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-polyfill/-/babel-polyfill-6.26.0.tgz", + "integrity": "sha1-N5k3q8Z9eJWXCtxiHyhM2WbPIVM=", + "dev": true, + "requires": { + "babel-runtime": "^6.26.0", + "core-js": "^2.5.0", + "regenerator-runtime": "^0.10.5" + } + }, + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "dev": true, + "requires": { + "core-js": "^2.4.0", + "regenerator-runtime": "^0.11.0" + }, + "dependencies": { + "regenerator-runtime": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", + "dev": true + } + } + }, + "chokidar": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", + "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=", + "dev": true, + "optional": true, + "requires": { + "anymatch": "^1.3.0", + "async-each": "^1.0.0", + "fsevents": "^1.0.0", + "glob-parent": "^2.0.0", + "inherits": "^2.0.1", + "is-binary-path": "^1.0.0", + "is-glob": "^2.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.0.0" + } + }, + "core-js": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.9.tgz", + "integrity": "sha512-HOpZf6eXmnl7la+cUdMnLvUxKNqLUzJvgIziQ0DiF3JwSImNphIqdGqzj6hIKyX04MmV0poclQ7+wjWvxQyR2A==", + "dev": true + } + } + }, + "babel-code-frame": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", + "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "esutils": "^2.0.2", + "js-tokens": "^3.0.2" + }, + "dependencies": { + "js-tokens": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", + "dev": true + } + } + }, + "babel-core": { + "version": "6.26.3", + "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.3.tgz", + "integrity": "sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA==", + "dev": true, + "requires": { + "babel-code-frame": "^6.26.0", + "babel-generator": "^6.26.0", + "babel-helpers": "^6.24.1", + "babel-messages": "^6.23.0", + "babel-register": "^6.26.0", + "babel-runtime": "^6.26.0", + "babel-template": "^6.26.0", + "babel-traverse": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "convert-source-map": "^1.5.1", + "debug": "^2.6.9", + "json5": "^0.5.1", + "lodash": "^4.17.4", + "minimatch": "^3.0.4", + "path-is-absolute": "^1.0.1", + "private": "^0.1.8", + "slash": "^1.0.0", + "source-map": "^0.5.7" + }, + "dependencies": { + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "dev": true, + "requires": { + "core-js": "^2.4.0", + "regenerator-runtime": "^0.11.0" + } + }, + "regenerator-runtime": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", + "dev": true + } + } + }, + "babel-generator": { + "version": "6.26.1", + "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz", + "integrity": "sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==", + "dev": true, + "requires": { + "babel-messages": "^6.23.0", + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "detect-indent": "^4.0.0", + "jsesc": "^1.3.0", + "lodash": "^4.17.4", + "source-map": "^0.5.7", + "trim-right": "^1.0.1" + }, + "dependencies": { + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "dev": true, + "requires": { + "core-js": "^2.4.0", + "regenerator-runtime": "^0.11.0" + } + }, + "regenerator-runtime": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", + "dev": true + } + } + }, + "babel-helper-builder-react-jsx": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-helper-builder-react-jsx/-/babel-helper-builder-react-jsx-6.26.0.tgz", + "integrity": "sha1-Of+DE7dci2Xc7/HzHTg+D/KkCKA=", + "dev": true, + "requires": { + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "esutils": "^2.0.2" + }, + "dependencies": { + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "dev": true, + "requires": { + "core-js": "^2.4.0", + "regenerator-runtime": "^0.11.0" + } + }, + "regenerator-runtime": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", + "dev": true + } + } + }, + "babel-helper-call-delegate": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz", + "integrity": "sha1-7Oaqzdx25Bw0YfiL/Fdb0Nqi340=", + "dev": true, + "requires": { + "babel-helper-hoist-variables": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-helper-define-map": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz", + "integrity": "sha1-pfVtq0GiX5fstJjH66ypgZ+Vvl8=", + "dev": true, + "requires": { + "babel-helper-function-name": "^6.24.1", + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "lodash": "^4.17.4" + }, + "dependencies": { + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "dev": true, + "requires": { + "core-js": "^2.4.0", + "regenerator-runtime": "^0.11.0" + } + }, + "regenerator-runtime": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", + "dev": true + } + } + }, + "babel-helper-function-name": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz", + "integrity": "sha1-00dbjAPtmCQqJbSDUasYOZ01gKk=", + "dev": true, + "requires": { + "babel-helper-get-function-arity": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-helper-get-function-arity": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz", + "integrity": "sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-helper-hoist-variables": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz", + "integrity": "sha1-HssnaJydJVE+rbyZFKc/VAi+enY=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-helper-optimise-call-expression": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz", + "integrity": "sha1-96E0J7qfc/j0+pk8VKl4gtEkQlc=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-helper-regex": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz", + "integrity": "sha1-MlxZ+QL4LyS3T6zu0DY5VPZJXnI=", + "dev": true, + "requires": { + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "lodash": "^4.17.4" + }, + "dependencies": { + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "dev": true, + "requires": { + "core-js": "^2.4.0", + "regenerator-runtime": "^0.11.0" + } + }, + "regenerator-runtime": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", + "dev": true + } + } + }, + "babel-helper-replace-supers": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz", + "integrity": "sha1-v22/5Dk40XNpohPKiov3S2qQqxo=", + "dev": true, + "requires": { + "babel-helper-optimise-call-expression": "^6.24.1", + "babel-messages": "^6.23.0", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-helpers": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz", + "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" + } + }, + "babel-jest": { + "version": "22.1.0", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-22.1.0.tgz", + "integrity": "sha512-5pKRFTlDr+x1JESNRd5leqvxEJk3dRwVvIXikB6Lr4BWZbBppk1Wp+BLUzxWL8tM+EYGLCWgfqkD35Sft8r8Lw==", + "dev": true, + "requires": { + "babel-plugin-istanbul": "^4.1.5", + "babel-preset-jest": "^22.1.0" + } + }, + "babel-loader": { + "version": "7.1.5", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-7.1.5.tgz", + "integrity": "sha512-iCHfbieL5d1LfOQeeVJEUyD9rTwBcP/fcEbRCfempxTDuqrKpu0AZjLAQHEQa3Yqyj9ORKe2iHfoj4rHLf7xpw==", + "dev": true, + "requires": { + "find-cache-dir": "^1.0.0", + "loader-utils": "^1.0.2", + "mkdirp": "^0.5.1" + } + }, + "babel-messages": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", + "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-check-es2015-constants": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz", + "integrity": "sha1-NRV7EBQm/S/9PaP3XH0ekYNbv4o=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-istanbul": { + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-4.1.6.tgz", + "integrity": "sha512-PWP9FQ1AhZhS01T/4qLSKoHGY/xvkZdVBGlKM/HuxxS3+sC66HhTNR7+MpbO/so/cz/wY94MeSWJuP1hXIPfwQ==", + "dev": true, + "requires": { + "babel-plugin-syntax-object-rest-spread": "^6.13.0", + "find-up": "^2.1.0", + "istanbul-lib-instrument": "^1.10.1", + "test-exclude": "^4.2.1" + } + }, + "babel-plugin-jest-hoist": { + "version": "22.4.4", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-22.4.4.tgz", + "integrity": "sha512-DUvGfYaAIlkdnygVIEl0O4Av69NtuQWcrjMOv6DODPuhuGLDnbsARz3AwiiI/EkIMMlxQDUcrZ9yoyJvTNjcVQ==", + "dev": true + }, + "babel-plugin-syntax-flow": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-flow/-/babel-plugin-syntax-flow-6.18.0.tgz", + "integrity": "sha1-TDqyCiryaqIM0lmVw5jE63AxDI0=", + "dev": true + }, + "babel-plugin-syntax-jsx": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz", + "integrity": "sha1-CvMqmm4Tyno/1QaeYtew9Y0NiUY=", + "dev": true + }, + "babel-plugin-syntax-object-rest-spread": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz", + "integrity": "sha1-/WU28rzhODb/o6VFjEkDpZe7O/U=", + "dev": true + }, + "babel-plugin-transform-es2015-arrow-functions": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz", + "integrity": "sha1-RSaSy3EdX3ncf4XkQM5BufJE0iE=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-block-scoped-functions": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz", + "integrity": "sha1-u8UbSflk1wy42OC5ToICRs46YUE=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-block-scoping": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz", + "integrity": "sha1-1w9SmcEwjQXBL0Y4E7CgnnOxiV8=", + "dev": true, + "requires": { + "babel-runtime": "^6.26.0", + "babel-template": "^6.26.0", + "babel-traverse": "^6.26.0", + "babel-types": "^6.26.0", + "lodash": "^4.17.4" + }, + "dependencies": { + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "dev": true, + "requires": { + "core-js": "^2.4.0", + "regenerator-runtime": "^0.11.0" + } + }, + "regenerator-runtime": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", + "dev": true + } + } + }, + "babel-plugin-transform-es2015-classes": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz", + "integrity": "sha1-WkxYpQyclGHlZLSyo7+ryXolhNs=", + "dev": true, + "requires": { + "babel-helper-define-map": "^6.24.1", + "babel-helper-function-name": "^6.24.1", + "babel-helper-optimise-call-expression": "^6.24.1", + "babel-helper-replace-supers": "^6.24.1", + "babel-messages": "^6.23.0", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-computed-properties": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz", + "integrity": "sha1-b+Ko0WiV1WNPTNmZttNICjCBWbM=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-destructuring": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz", + "integrity": "sha1-mXux8auWf2gtKwh2/jWNYOdlxW0=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-duplicate-keys": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz", + "integrity": "sha1-c+s9MQypaePvnskcU3QabxV2Qj4=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-for-of": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz", + "integrity": "sha1-9HyVsrYT3x0+zC/bdXNiPHUkhpE=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-function-name": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz", + "integrity": "sha1-g0yJhTvDaxrw86TF26qU/Y6sqos=", + "dev": true, + "requires": { + "babel-helper-function-name": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-literals": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz", + "integrity": "sha1-T1SgLWzWbPkVKAAZox0xklN3yi4=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-modules-amd": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz", + "integrity": "sha1-Oz5UAXI5hC1tGcMBHEvS8AoA0VQ=", + "dev": true, + "requires": { + "babel-plugin-transform-es2015-modules-commonjs": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-modules-commonjs": { + "version": "6.26.2", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.2.tgz", + "integrity": "sha512-CV9ROOHEdrjcwhIaJNBGMBCodN+1cfkwtM1SbUHmvyy35KGT7fohbpOxkE2uLz1o6odKK2Ck/tz47z+VqQfi9Q==", + "dev": true, + "requires": { + "babel-plugin-transform-strict-mode": "^6.24.1", + "babel-runtime": "^6.26.0", + "babel-template": "^6.26.0", + "babel-types": "^6.26.0" + }, + "dependencies": { + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "dev": true, + "requires": { + "core-js": "^2.4.0", + "regenerator-runtime": "^0.11.0" + } + }, + "regenerator-runtime": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", + "dev": true + } + } + }, + "babel-plugin-transform-es2015-modules-systemjs": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz", + "integrity": "sha1-/4mhQrkRmpBhlfXxBuzzBdlAfSM=", + "dev": true, + "requires": { + "babel-helper-hoist-variables": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-modules-umd": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz", + "integrity": "sha1-rJl+YoXNGO1hdq22B9YCNErThGg=", + "dev": true, + "requires": { + "babel-plugin-transform-es2015-modules-amd": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-object-super": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz", + "integrity": "sha1-JM72muIcuDp/hgPa0CH1cusnj40=", + "dev": true, + "requires": { + "babel-helper-replace-supers": "^6.24.1", + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-parameters": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz", + "integrity": "sha1-V6w1GrScrxSpfNE7CfZv3wpiXys=", + "dev": true, + "requires": { + "babel-helper-call-delegate": "^6.24.1", + "babel-helper-get-function-arity": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-shorthand-properties": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz", + "integrity": "sha1-JPh11nIch2YbvZmkYi5R8U3jiqA=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-spread": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz", + "integrity": "sha1-1taKmfia7cRTbIGlQujdnxdG+NE=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-sticky-regex": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz", + "integrity": "sha1-AMHNsaynERLN8M9hJsLta0V8zbw=", + "dev": true, + "requires": { + "babel-helper-regex": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-template-literals": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz", + "integrity": "sha1-qEs0UPfp+PH2g51taH2oS7EjbY0=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-typeof-symbol": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz", + "integrity": "sha1-3sCfHN3/lLUqxz1QXITfWdzOs3I=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-unicode-regex": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz", + "integrity": "sha1-04sS9C6nMj9yk4fxinxa4frrNek=", + "dev": true, + "requires": { + "babel-helper-regex": "^6.24.1", + "babel-runtime": "^6.22.0", + "regexpu-core": "^2.0.0" + } + }, + "babel-plugin-transform-flow-strip-types": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-flow-strip-types/-/babel-plugin-transform-flow-strip-types-6.22.0.tgz", + "integrity": "sha1-hMtnKTXUNxT9wyvOhFaNh0Qc988=", + "dev": true, + "requires": { + "babel-plugin-syntax-flow": "^6.18.0", + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-object-rest-spread": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.23.0.tgz", + "integrity": "sha1-h11ryb52HFiirj/u5dxIldjH+SE=", + "dev": true, + "requires": { + "babel-plugin-syntax-object-rest-spread": "^6.8.0", + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-react-display-name": { + "version": "6.25.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-display-name/-/babel-plugin-transform-react-display-name-6.25.0.tgz", + "integrity": "sha1-Z+K/Hx6ck6sI25Z5LgU5K/LMKNE=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-react-jsx": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-jsx/-/babel-plugin-transform-react-jsx-6.24.1.tgz", + "integrity": "sha1-hAoCjn30YN/DotKfDA2R9jduZqM=", + "dev": true, + "requires": { + "babel-helper-builder-react-jsx": "^6.24.1", + "babel-plugin-syntax-jsx": "^6.8.0", + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-react-jsx-self": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-jsx-self/-/babel-plugin-transform-react-jsx-self-6.22.0.tgz", + "integrity": "sha1-322AqdomEqEh5t3XVYvL7PBuY24=", + "dev": true, + "requires": { + "babel-plugin-syntax-jsx": "^6.8.0", + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-react-jsx-source": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-jsx-source/-/babel-plugin-transform-react-jsx-source-6.22.0.tgz", + "integrity": "sha1-ZqwSFT9c0tF7PBkmj0vwGX9E7NY=", + "dev": true, + "requires": { + "babel-plugin-syntax-jsx": "^6.8.0", + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-regenerator": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz", + "integrity": "sha1-4HA2lvveJ/Cj78rPi03KL3s6jy8=", + "dev": true, + "requires": { + "regenerator-transform": "^0.10.0" + } + }, + "babel-plugin-transform-strict-mode": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz", + "integrity": "sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-polyfill": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-polyfill/-/babel-polyfill-6.23.0.tgz", + "integrity": "sha1-g2TKYt+Or7gwSZ9pkXdGbDsDSZ0=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "core-js": "^2.4.0", + "regenerator-runtime": "^0.10.0" + } + }, + "babel-preset-es2015": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-preset-es2015/-/babel-preset-es2015-6.24.1.tgz", + "integrity": "sha1-1EBQ1rwsn+6nAqrzjXJ6AhBTiTk=", + "dev": true, + "requires": { + "babel-plugin-check-es2015-constants": "^6.22.0", + "babel-plugin-transform-es2015-arrow-functions": "^6.22.0", + "babel-plugin-transform-es2015-block-scoped-functions": "^6.22.0", + "babel-plugin-transform-es2015-block-scoping": "^6.24.1", + "babel-plugin-transform-es2015-classes": "^6.24.1", + "babel-plugin-transform-es2015-computed-properties": "^6.24.1", + "babel-plugin-transform-es2015-destructuring": "^6.22.0", + "babel-plugin-transform-es2015-duplicate-keys": "^6.24.1", + "babel-plugin-transform-es2015-for-of": "^6.22.0", + "babel-plugin-transform-es2015-function-name": "^6.24.1", + "babel-plugin-transform-es2015-literals": "^6.22.0", + "babel-plugin-transform-es2015-modules-amd": "^6.24.1", + "babel-plugin-transform-es2015-modules-commonjs": "^6.24.1", + "babel-plugin-transform-es2015-modules-systemjs": "^6.24.1", + "babel-plugin-transform-es2015-modules-umd": "^6.24.1", + "babel-plugin-transform-es2015-object-super": "^6.24.1", + "babel-plugin-transform-es2015-parameters": "^6.24.1", + "babel-plugin-transform-es2015-shorthand-properties": "^6.24.1", + "babel-plugin-transform-es2015-spread": "^6.22.0", + "babel-plugin-transform-es2015-sticky-regex": "^6.24.1", + "babel-plugin-transform-es2015-template-literals": "^6.22.0", + "babel-plugin-transform-es2015-typeof-symbol": "^6.22.0", + "babel-plugin-transform-es2015-unicode-regex": "^6.24.1", + "babel-plugin-transform-regenerator": "^6.24.1" + } + }, + "babel-preset-flow": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-preset-flow/-/babel-preset-flow-6.23.0.tgz", + "integrity": "sha1-5xIYiHCFrpoktb5Baa/7WZgWxJ0=", + "dev": true, + "requires": { + "babel-plugin-transform-flow-strip-types": "^6.22.0" + } + }, + "babel-preset-jest": { + "version": "22.4.4", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-22.4.4.tgz", + "integrity": "sha512-+dxMtOFwnSYWfum0NaEc0O03oSdwBsjx4tMSChRDPGwu/4wSY6Q6ANW3wkjKpJzzguaovRs/DODcT4hbSN8yiA==", + "dev": true, + "requires": { + "babel-plugin-jest-hoist": "^22.4.4", + "babel-plugin-syntax-object-rest-spread": "^6.13.0" + } + }, + "babel-preset-react": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-preset-react/-/babel-preset-react-6.24.1.tgz", + "integrity": "sha1-umnfrqRfw+xjm2pOzqbhdwLJE4A=", + "dev": true, + "requires": { + "babel-plugin-syntax-jsx": "^6.3.13", + "babel-plugin-transform-react-display-name": "^6.23.0", + "babel-plugin-transform-react-jsx": "^6.24.1", + "babel-plugin-transform-react-jsx-self": "^6.22.0", + "babel-plugin-transform-react-jsx-source": "^6.22.0", + "babel-preset-flow": "^6.23.0" + } + }, + "babel-register": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz", + "integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=", + "dev": true, + "requires": { + "babel-core": "^6.26.0", + "babel-runtime": "^6.26.0", + "core-js": "^2.5.0", + "home-or-tmp": "^2.0.0", + "lodash": "^4.17.4", + "mkdirp": "^0.5.1", + "source-map-support": "^0.4.15" + }, + "dependencies": { + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "dev": true, + "requires": { + "core-js": "^2.4.0", + "regenerator-runtime": "^0.11.0" + } + }, + "core-js": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.9.tgz", + "integrity": "sha512-HOpZf6eXmnl7la+cUdMnLvUxKNqLUzJvgIziQ0DiF3JwSImNphIqdGqzj6hIKyX04MmV0poclQ7+wjWvxQyR2A==", + "dev": true + }, + "regenerator-runtime": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", + "dev": true + } + } + }, + "babel-runtime": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.23.0.tgz", + "integrity": "sha1-CpSJ8UTecO+zzkMArM2zKeL8VDs=", + "requires": { + "core-js": "^2.4.0", + "regenerator-runtime": "^0.10.0" + } + }, + "babel-template": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", + "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", + "dev": true, + "requires": { + "babel-runtime": "^6.26.0", + "babel-traverse": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "lodash": "^4.17.4" + }, + "dependencies": { + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "dev": true, + "requires": { + "core-js": "^2.4.0", + "regenerator-runtime": "^0.11.0" + } + }, + "regenerator-runtime": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", + "dev": true + } + } + }, + "babel-traverse": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", + "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", + "dev": true, + "requires": { + "babel-code-frame": "^6.26.0", + "babel-messages": "^6.23.0", + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "debug": "^2.6.8", + "globals": "^9.18.0", + "invariant": "^2.2.2", + "lodash": "^4.17.4" + }, + "dependencies": { + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "dev": true, + "requires": { + "core-js": "^2.4.0", + "regenerator-runtime": "^0.11.0" + } + }, + "regenerator-runtime": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", + "dev": true + } + } + }, + "babel-types": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", + "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", + "dev": true, + "requires": { + "babel-runtime": "^6.26.0", + "esutils": "^2.0.2", + "lodash": "^4.17.4", + "to-fast-properties": "^1.0.3" + }, + "dependencies": { + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "dev": true, + "requires": { + "core-js": "^2.4.0", + "regenerator-runtime": "^0.11.0" + } + }, + "regenerator-runtime": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", + "dev": true + } + } + }, + "babylon": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", + "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", + "dev": true + }, + "balanced-match": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", + "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=", + "dev": true + }, + "base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "requires": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "requires": { + "is-descriptor": "^1.0.0" + } + } + } + }, + "base64-js": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.0.tgz", + "integrity": "sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw==" + }, + "batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=", + "dev": true + }, + "bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "dev": true, + "requires": { + "tweetnacl": "^0.14.3" + } + }, + "big.js": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", + "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==" + }, + "binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==" + }, + "bluebird": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.3.tgz", + "integrity": "sha512-/qKPUQlaW1OyR51WeCPBvRnAlnZFUJkCSG5HzGnuIqhgyJtF+T94lFnn33eiazjRm2LAHVy2guNnaq48X9SJuw==" + }, + "bn.js": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", + "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==" + }, + "body-parser": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", + "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", + "dev": true, + "requires": { + "bytes": "3.1.0", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "~1.1.2", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "on-finished": "~2.3.0", + "qs": "6.7.0", + "raw-body": "2.4.0", + "type-is": "~1.6.17" + }, + "dependencies": { + "bytes": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", + "dev": true + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "qs": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==", + "dev": true + } + } + }, + "bonjour": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz", + "integrity": "sha1-jokKGD2O6aI5OzhExpGkK897yfU=", + "dev": true, + "requires": { + "array-flatten": "^2.1.0", + "deep-equal": "^1.0.1", + "dns-equal": "^1.0.0", + "dns-txt": "^2.0.2", + "multicast-dns": "^6.0.1", + "multicast-dns-service-types": "^1.1.0" + } + }, + "boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", + "dev": true + }, + "bootstrap": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-3.3.7.tgz", + "integrity": "sha1-WjiTlFSfIzMIdaOxUGVldPip63E=" + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + }, + "dependencies": { + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + } + } + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=" + }, + "browser-process-hrtime": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-0.1.3.tgz", + "integrity": "sha512-bRFnI4NnjO6cnyLmOV/7PVoDEMJChlcfN0z4s1YMBY989/SvlfMI1lgCnkFUs53e9gQF+w7qu7XdllSTiSl8Aw==", + "dev": true + }, + "browser-resolve": { + "version": "1.11.3", + "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.3.tgz", + "integrity": "sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ==", + "dev": true, + "requires": { + "resolve": "1.1.7" + }, + "dependencies": { + "resolve": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", + "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=", + "dev": true + } + } + }, + "browserify-aes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "requires": { + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "browserify-cipher": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", + "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", + "requires": { + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" + } + }, + "browserify-des": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", + "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", + "requires": { + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "browserify-rsa": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", + "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", + "requires": { + "bn.js": "^4.1.0", + "randombytes": "^2.0.1" + } + }, + "browserify-sign": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz", + "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=", + "requires": { + "bn.js": "^4.1.1", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.2", + "elliptic": "^6.0.0", + "inherits": "^2.0.1", + "parse-asn1": "^5.0.0" + } + }, + "browserify-zlib": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", + "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", + "requires": { + "pako": "~1.0.5" + } + }, + "browserslist": { + "version": "1.7.7", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz", + "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", + "dev": true, + "requires": { + "caniuse-db": "^1.0.30000639", + "electron-to-chromium": "^1.2.7" + } + }, + "bser": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.0.0.tgz", + "integrity": "sha1-mseNPtXZFYBP2HrLFYvHlxR6Fxk=", + "dev": true, + "requires": { + "node-int64": "^0.4.0" + } + }, + "buffer": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz", + "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=", + "requires": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4", + "isarray": "^1.0.0" + } + }, + "buffer-from": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==" + }, + "buffer-indexof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz", + "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==", + "dev": true + }, + "buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=" + }, + "builtin-status-codes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", + "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=" + }, + "bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", + "dev": true + }, + "cacache": { + "version": "10.0.4", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-10.0.4.tgz", + "integrity": "sha512-Dph0MzuH+rTQzGPNT9fAnrPmMmjKfST6trxJeK7NQuHRaVw24VzPRWTmg9MpcwOVQZO0E1FBICUlFeNaKPIfHA==", + "dev": true, + "requires": { + "bluebird": "^3.5.1", + "chownr": "^1.0.1", + "glob": "^7.1.2", + "graceful-fs": "^4.1.11", + "lru-cache": "^4.1.1", + "mississippi": "^2.0.0", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "promise-inflight": "^1.0.1", + "rimraf": "^2.6.2", + "ssri": "^5.2.4", + "unique-filename": "^1.1.0", + "y18n": "^4.0.0" + } + }, + "cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "requires": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + } + }, + "callsites": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", + "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=", + "dev": true + }, + "camel-case": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz", + "integrity": "sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M=", + "dev": true, + "requires": { + "no-case": "^2.2.0", + "upper-case": "^1.1.1" + } + }, + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "dev": true + }, + "caniuse-api": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-1.6.1.tgz", + "integrity": "sha1-tTTnxzTE+B7F++isoq0kNUuWLGw=", + "dev": true, + "requires": { + "browserslist": "^1.3.6", + "caniuse-db": "^1.0.30000529", + "lodash.memoize": "^4.1.2", + "lodash.uniq": "^4.5.0" + } + }, + "caniuse-db": { + "version": "1.0.30000974", + "resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30000974.tgz", + "integrity": "sha512-zeXkn1hbjMvXdadcyUELZnGu7OjlW3HK0956DWczM7ZJqGV4jFaPi8CidB8QiAj5xl5O9I+f7j9F0AFmXmGTpg==", + "dev": true + }, + "capture-exit": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/capture-exit/-/capture-exit-1.2.0.tgz", + "integrity": "sha1-HF/MSJ/QqwDU8ax64QcuMXP7q28=", + "dev": true, + "requires": { + "rsvp": "^3.3.3" + } + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "chardet": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.4.2.tgz", + "integrity": "sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I=", + "dev": true + }, + "cheerio": { + "version": "1.0.0-rc.3", + "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.3.tgz", + "integrity": "sha512-0td5ijfUPuubwLUu0OBoe98gZj8C/AA+RW3v67GPlGOrvxWjZmBXiBCRU+I8VEiNyJzjth40POfHiz2RB3gImA==", + "dev": true, + "requires": { + "css-select": "~1.2.0", + "dom-serializer": "~0.1.1", + "entities": "~1.1.1", + "htmlparser2": "^3.9.1", + "lodash": "^4.15.0", + "parse5": "^3.0.1" + } + }, + "chokidar": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.0.4.tgz", + "integrity": "sha512-z9n7yt9rOvIJrMhvDtDictKrkFHeihkNl6uWMmZlmL6tJtX9Cs+87oK+teBx+JIgzvbX3yZHT3eF8vpbDxHJXQ==", + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.0", + "braces": "^2.3.0", + "fsevents": "^1.2.2", + "glob-parent": "^3.1.0", + "inherits": "^2.0.1", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "lodash.debounce": "^4.0.8", + "normalize-path": "^2.1.1", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.0.0", + "upath": "^1.0.5" + }, + "dependencies": { + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + } + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" + } + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" + }, + "is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "requires": { + "is-extglob": "^2.1.1" + } + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + } + } + }, + "chownr": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.1.tgz", + "integrity": "sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g==" + }, + "chrome-trace-event": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz", + "integrity": "sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ==", + "requires": { + "tslib": "^1.9.0" + } + }, + "ci-info": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.6.0.tgz", + "integrity": "sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A==", + "dev": true + }, + "cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "circular-json-es6": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/circular-json-es6/-/circular-json-es6-2.0.2.tgz", + "integrity": "sha512-ODYONMMNb3p658Zv+Pp+/XPa5s6q7afhz3Tzyvo+VRh9WIrJ64J76ZC4GQxnlye/NesTn09jvOiuE8+xxfpwhQ==", + "dev": true + }, + "clap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/clap/-/clap-1.2.3.tgz", + "integrity": "sha512-4CoL/A3hf90V3VIEjeuhSvlGFEHKzOz+Wfc2IVZc+FaUgU0ZQafJTP49fvnULipOPcAfqhyI2duwQyns6xqjYA==", + "dev": true, + "requires": { + "chalk": "^1.1.3" + } + }, + "class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "requires": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" + } + } + }, + "classnames": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.2.5.tgz", + "integrity": "sha1-+zgB1FNGdknvNgPH1hoCvRKb3m0=" + }, + "clean-css": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.1.tgz", + "integrity": "sha512-4ZxI6dy4lrY6FHzfiy1aEOXgu4LIsW2MhwG0VBKdcoGoH/XLFgaHSdLTGr4O8Be6A8r3MOphEiI8Gc1n0ecf3g==", + "dev": true, + "requires": { + "source-map": "~0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", + "dev": true, + "requires": { + "restore-cursor": "^2.0.0" + } + }, + "cli-width": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", + "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=", + "dev": true + }, + "cliui": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", + "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", + "dev": true, + "requires": { + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0", + "wrap-ansi": "^2.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", + "dev": true + }, + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "dev": true + }, + "coa": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/coa/-/coa-1.0.4.tgz", + "integrity": "sha1-qe8VNmDWqGqL3sAomlxoTSF0Mv0=", + "dev": true, + "requires": { + "q": "^1.1.2" + } + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "dev": true + }, + "collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "requires": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + } + }, + "color": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/color/-/color-0.11.4.tgz", + "integrity": "sha1-bXtcdPtl6EHNSHkq0e1eB7kE12Q=", + "dev": true, + "requires": { + "clone": "^1.0.2", + "color-convert": "^1.3.0", + "color-string": "^0.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "color-string": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-0.3.0.tgz", + "integrity": "sha1-J9RvtnAlxcL6JZk7+/V55HhBuZE=", + "dev": true, + "requires": { + "color-name": "^1.0.0" + } + }, + "colormin": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/colormin/-/colormin-1.1.2.tgz", + "integrity": "sha1-6i90IKcrlogaOKrlnsEkpvcpgTM=", + "dev": true, + "requires": { + "color": "^0.11.0", + "css-color-names": "0.0.4", + "has": "^1.0.1" + } + }, + "colors": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", + "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=", + "dev": true + }, + "combined-stream": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.7.tgz", + "integrity": "sha512-brWl9y6vOB1xYPZcpZde3N9zDByXTosAeMDo4p1wzo6UMOX4vumB+TP1RZ76sfE6Md68Q0NJSrE/gbezd4Ul+w==", + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "commander": { + "version": "2.20.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.0.tgz", + "integrity": "sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ==", + "dev": true + }, + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=" + }, + "component-emitter": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", + "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=" + }, + "compressible": { + "version": "2.0.17", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.17.tgz", + "integrity": "sha512-BGHeLCK1GV7j1bSmQQAi26X+GgWcTjLr/0tzSvMCl3LH1w1IJ4PFSPoV5316b30cneTziC+B1a+3OjoSUcQYmw==", + "dev": true, + "requires": { + "mime-db": ">= 1.40.0 < 2" + }, + "dependencies": { + "mime-db": { + "version": "1.40.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.40.0.tgz", + "integrity": "sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA==", + "dev": true + } + } + }, + "compression": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", + "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", + "dev": true, + "requires": { + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.16", + "debug": "2.6.9", + "on-headers": "~1.0.2", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "config-chain": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.12.tgz", + "integrity": "sha512-a1eOIcu8+7lUInge4Rpf/n4Krkf3Dd9lqhljRzII1/Zno/kRtUWnznPO3jOKBmTEktkt3fkxisUcivoj0ebzoA==", + "dev": true, + "requires": { + "ini": "^1.3.4", + "proto-list": "~1.2.1" + } + }, + "connect-history-api-fallback": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz", + "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==", + "dev": true + }, + "console-browserify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", + "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=", + "requires": { + "date-now": "^0.1.4" + } + }, + "constants-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=" + }, + "content-disposition": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", + "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", + "dev": true, + "requires": { + "safe-buffer": "5.1.2" + } + }, + "content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", + "dev": true + }, + "convert-source-map": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.6.0.tgz", + "integrity": "sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.1" + } + }, + "cookie": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", + "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=" + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=", + "dev": true + }, + "cookiejar": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.2.tgz", + "integrity": "sha512-Mw+adcfzPxcPeI+0WlvRrr/3lGVO0bD75SxX6811cxSh1Wbxx7xZBGK1eVtDf6si8rg2lhnUjsVLMFMfbRIuwA==" + }, + "copy-concurrently": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", + "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", + "requires": { + "aproba": "^1.1.1", + "fs-write-stream-atomic": "^1.0.8", + "iferr": "^0.1.5", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.0" + } + }, + "copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=" + }, + "copy-to-clipboard": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/copy-to-clipboard/-/copy-to-clipboard-3.2.0.tgz", + "integrity": "sha512-eOZERzvCmxS8HWzugj4Uxl8OJxa7T2k1Gi0X5qavwydHIfuSHq2dTD09LOg/XyGq4Zpb5IsR/2OJ5lbOegz78w==", + "requires": { + "toggle-selection": "^1.0.6" + } + }, + "copy-webpack-plugin": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-4.6.0.tgz", + "integrity": "sha512-Y+SQCF+0NoWQryez2zXn5J5knmr9z/9qSQt7fbL78u83rxmigOy8X5+BFn8CFSuX+nKT8gpYwJX68ekqtQt6ZA==", + "dev": true, + "requires": { + "cacache": "^10.0.4", + "find-cache-dir": "^1.0.0", + "globby": "^7.1.1", + "is-glob": "^4.0.0", + "loader-utils": "^1.1.0", + "minimatch": "^3.0.4", + "p-limit": "^1.0.0", + "serialize-javascript": "^1.4.0" + }, + "dependencies": { + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + } + } + }, + "core-js": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.4.1.tgz", + "integrity": "sha1-TekR5mew6ukSTjQlS1OupvxhjT4=" + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + }, + "create-ecdh": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz", + "integrity": "sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==", + "requires": { + "bn.js": "^4.1.0", + "elliptic": "^6.0.0" + } + }, + "create-hash": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "requires": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "create-hmac": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "requires": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "dev": true, + "requires": { + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "crypto-browserify": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", + "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", + "requires": { + "browserify-cipher": "^1.0.0", + "browserify-sign": "^4.0.0", + "create-ecdh": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.0", + "diffie-hellman": "^5.0.0", + "inherits": "^2.0.1", + "pbkdf2": "^3.0.3", + "public-encrypt": "^4.0.0", + "randombytes": "^2.0.0", + "randomfill": "^1.0.3" + } + }, + "css-color-names": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz", + "integrity": "sha1-gIrcLnnPhHOAabZGyyDsJ762KeA=", + "dev": true + }, + "css-loader": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-0.23.1.tgz", + "integrity": "sha1-n6I/K1wJZSNZEK1ezvO4o2OQ/lA=", + "dev": true, + "requires": { + "css-selector-tokenizer": "^0.5.1", + "cssnano": ">=2.6.1 <4", + "loader-utils": "~0.2.2", + "lodash.camelcase": "^3.0.1", + "object-assign": "^4.0.1", + "postcss": "^5.0.6", + "postcss-modules-extract-imports": "^1.0.0", + "postcss-modules-local-by-default": "^1.0.1", + "postcss-modules-scope": "^1.0.0", + "postcss-modules-values": "^1.1.0", + "source-list-map": "^0.1.4" + }, + "dependencies": { + "loader-utils": { + "version": "0.2.17", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz", + "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=", + "dev": true, + "requires": { + "big.js": "^3.1.3", + "emojis-list": "^2.0.0", + "json5": "^0.5.0", + "object-assign": "^4.0.1" + } + } + } + }, + "css-select": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", + "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=", + "dev": true, + "requires": { + "boolbase": "~1.0.0", + "css-what": "2.1", + "domutils": "1.5.1", + "nth-check": "~1.0.1" + } + }, + "css-selector-tokenizer": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.5.4.tgz", + "integrity": "sha1-E5uv00o1/QwUKEhwSeBpnm9qLCE=", + "dev": true, + "requires": { + "cssesc": "^0.1.0", + "fastparse": "^1.1.1" + } + }, + "css-what": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.3.tgz", + "integrity": "sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg==", + "dev": true + }, + "cssesc": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-0.1.0.tgz", + "integrity": "sha1-yBSQPkViM3GgR3tAEJqq++6t27Q=", + "dev": true + }, + "cssnano": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-3.10.0.tgz", + "integrity": "sha1-Tzj2zqK5sX+gFJDyPx3GjqZcHDg=", + "dev": true, + "requires": { + "autoprefixer": "^6.3.1", + "decamelize": "^1.1.2", + "defined": "^1.0.0", + "has": "^1.0.1", + "object-assign": "^4.0.1", + "postcss": "^5.0.14", + "postcss-calc": "^5.2.0", + "postcss-colormin": "^2.1.8", + "postcss-convert-values": "^2.3.4", + "postcss-discard-comments": "^2.0.4", + "postcss-discard-duplicates": "^2.0.1", + "postcss-discard-empty": "^2.0.1", + "postcss-discard-overridden": "^0.1.1", + "postcss-discard-unused": "^2.2.1", + "postcss-filter-plugins": "^2.0.0", + "postcss-merge-idents": "^2.1.5", + "postcss-merge-longhand": "^2.0.1", + "postcss-merge-rules": "^2.0.3", + "postcss-minify-font-values": "^1.0.2", + "postcss-minify-gradients": "^1.0.1", + "postcss-minify-params": "^1.0.4", + "postcss-minify-selectors": "^2.0.4", + "postcss-normalize-charset": "^1.1.0", + "postcss-normalize-url": "^3.0.7", + "postcss-ordered-values": "^2.1.0", + "postcss-reduce-idents": "^2.2.2", + "postcss-reduce-initial": "^1.0.0", + "postcss-reduce-transforms": "^1.0.3", + "postcss-svgo": "^2.1.1", + "postcss-unique-selectors": "^2.0.2", + "postcss-value-parser": "^3.2.3", + "postcss-zindex": "^2.0.1" + } + }, + "csso": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/csso/-/csso-2.3.2.tgz", + "integrity": "sha1-3dUsWHAz9J6Utx/FVWnyUuj/X4U=", + "dev": true, + "requires": { + "clap": "^1.0.9", + "source-map": "^0.5.3" + } + }, + "cssom": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.6.tgz", + "integrity": "sha512-DtUeseGk9/GBW0hl0vVPpU22iHL6YB5BUX7ml1hB+GMpo0NX5G4voX3kdWiMSEguFtcW3Vh3djqNF4aIe6ne0A==", + "dev": true + }, + "cssstyle": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-1.2.2.tgz", + "integrity": "sha512-43wY3kl1CVQSvL7wUY1qXkxVGkStjpkDmVjiIKX8R97uhajy8Bybay78uOtqvh7Q5GK75dNPfW0geWjE6qQQow==", + "dev": true, + "requires": { + "cssom": "0.3.x" + } + }, + "cyclist": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-0.2.2.tgz", + "integrity": "sha1-GzN5LhHpFKL9bW7WRHRkRE5fpkA=" + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "data-urls": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-1.1.0.tgz", + "integrity": "sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ==", + "dev": true, + "requires": { + "abab": "^2.0.0", + "whatwg-mimetype": "^2.2.0", + "whatwg-url": "^7.0.0" + }, + "dependencies": { + "whatwg-url": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.0.0.tgz", + "integrity": "sha512-37GeVSIJ3kn1JgKyjiYNmSLP1yzbpb29jdmwBSgkD9h40/hyrR/OifpVUndji3tmwGgD8qpw7iQu3RSbCrBpsQ==", + "dev": true, + "requires": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } + } + } + }, + "date-now": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz", + "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=" + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true + }, + "decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=" + }, + "deep-equal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", + "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=", + "dev": true + }, + "deep-equal-ident": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/deep-equal-ident/-/deep-equal-ident-1.1.1.tgz", + "integrity": "sha1-BvS4nlNxDNbOpKd4HHqVZkLejck=", + "dev": true, + "requires": { + "lodash.isequal": "^3.0" + } + }, + "deep-is": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", + "dev": true + }, + "default-gateway": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-2.7.2.tgz", + "integrity": "sha512-lAc4i9QJR0YHSDFdzeBQKfZ1SRDG3hsJNEkrpcZa8QhBfidLAilT60BDEIVUUGqosFp425KOgB3uYqcnQrWafQ==", + "dev": true, + "requires": { + "execa": "^0.10.0", + "ip-regex": "^2.1.0" + }, + "dependencies": { + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "execa": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.10.0.tgz", + "integrity": "sha512-7XOMnz8Ynx1gGo/3hyV9loYNPWM94jG3+3T3Y8tsfSstFmETmENCMU/A/zj8Lyaj1lkgEepKepvd6240tBRvlw==", + "dev": true, + "requires": { + "cross-spawn": "^6.0.0", + "get-stream": "^3.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + } + } + }, + "default-require-extensions": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-1.0.0.tgz", + "integrity": "sha1-836hXT4T/9m0N9M+GnW1+5eHTLg=", + "dev": true, + "requires": { + "strip-bom": "^2.0.0" + } + }, + "define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "requires": { + "object-keys": "^1.0.12" + }, + "dependencies": { + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" + } + } + }, + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + } + }, + "defined": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", + "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=", + "dev": true + }, + "del": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/del/-/del-3.0.0.tgz", + "integrity": "sha1-U+z2mf/LyzljdpGrE7rxYIGXZuU=", + "dev": true, + "requires": { + "globby": "^6.1.0", + "is-path-cwd": "^1.0.0", + "is-path-in-cwd": "^1.0.0", + "p-map": "^1.1.1", + "pify": "^3.0.0", + "rimraf": "^2.2.8" + }, + "dependencies": { + "globby": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", + "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", + "dev": true, + "requires": { + "array-union": "^1.0.1", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } + } + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + } + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "dev": true + }, + "des.js": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz", + "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=", + "requires": { + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", + "dev": true + }, + "detect-file": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", + "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=", + "dev": true + }, + "detect-indent": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", + "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", + "dev": true, + "requires": { + "repeating": "^2.0.0" + } + }, + "detect-newline": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-2.1.0.tgz", + "integrity": "sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I=", + "dev": true + }, + "detect-node": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.0.4.tgz", + "integrity": "sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw==", + "dev": true + }, + "diff": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-1.4.0.tgz", + "integrity": "sha1-fyjS657nsVqX79ic5j3P2qPMur8=", + "dev": true + }, + "diffie-hellman": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", + "requires": { + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" + } + }, + "dir-glob": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.2.2.tgz", + "integrity": "sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw==", + "dev": true, + "requires": { + "path-type": "^3.0.0" + }, + "dependencies": { + "path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "dev": true, + "requires": { + "pify": "^3.0.0" + } + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + } + } + }, + "discontinuous-range": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/discontinuous-range/-/discontinuous-range-1.0.0.tgz", + "integrity": "sha1-44Mx8IRLukm5qctxx3FYWqsbxlo=", + "dev": true + }, + "disparity": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/disparity/-/disparity-2.0.0.tgz", + "integrity": "sha1-V92stHMkrl9Y0swNqIbbTOnutxg=", + "dev": true, + "requires": { + "ansi-styles": "^2.0.1", + "diff": "^1.3.2" + } + }, + "dns-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", + "integrity": "sha1-s55/HabrCnW6nBcySzR1PEfgZU0=", + "dev": true + }, + "dns-packet": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.1.tgz", + "integrity": "sha512-0UxfQkMhYAUaZI+xrNZOz/as5KgDU0M/fQ9b6SpkyLbk3GEswDi6PADJVaYJradtRVsRIlF1zLyOodbcTCDzUg==", + "dev": true, + "requires": { + "ip": "^1.1.0", + "safe-buffer": "^5.0.1" + } + }, + "dns-txt": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz", + "integrity": "sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY=", + "dev": true, + "requires": { + "buffer-indexof": "^1.0.0" + } + }, + "dom-converter": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", + "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==", + "dev": true, + "requires": { + "utila": "~0.4" + } + }, + "dom-css": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/dom-css/-/dom-css-2.1.0.tgz", + "integrity": "sha1-/bwtWgFdCj4YcuEUcrvQ57nmogI=", + "requires": { + "add-px-to-style": "1.0.0", + "prefix-style": "2.0.1", + "to-camel-case": "1.0.0" + } + }, + "dom-helpers": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-3.4.0.tgz", + "integrity": "sha512-LnuPJ+dwqKDIyotW1VzmOZ5TONUN7CwkCR5hrgawTUbkBGYdeoNLZo6nNfGkCrjtE1nXXaj7iMMpDa8/d9WoIA==", + "requires": { + "@babel/runtime": "^7.1.2" + } + }, + "dom-serializer": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.1.tgz", + "integrity": "sha512-l0IU0pPzLWSHBcieZbpOKgkIn3ts3vAh7ZuFyXNwJxJXk/c4Gwj9xaTJwIDVQCXawWD0qb3IzMGH5rglQaO0XA==", + "dev": true, + "requires": { + "domelementtype": "^1.3.0", + "entities": "^1.1.1" + } + }, + "domain-browser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", + "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==" + }, + "domelementtype": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", + "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", + "dev": true + }, + "domexception": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-1.0.1.tgz", + "integrity": "sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==", + "dev": true, + "requires": { + "webidl-conversions": "^4.0.2" + } + }, + "domhandler": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", + "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", + "dev": true, + "requires": { + "domelementtype": "1" + } + }, + "domutils": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", + "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", + "dev": true, + "requires": { + "dom-serializer": "0", + "domelementtype": "1" + } + }, + "duplexify": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.6.1.tgz", + "integrity": "sha512-vM58DwdnKmty+FSPzT14K9JXb90H+j5emaR4KYbr2KTIz00WHGbWOe5ghQTx233ZCLZtrGDALzKwcjEtSt35mA==", + "requires": { + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" + } + }, + "ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "dev": true, + "requires": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "editorconfig": { + "version": "0.13.3", + "resolved": "https://registry.npmjs.org/editorconfig/-/editorconfig-0.13.3.tgz", + "integrity": "sha512-WkjsUNVCu+ITKDj73QDvi0trvpdDWdkDyHybDGSXPfekLCqwmpD7CP7iPbvBgosNuLcI96XTDwNa75JyFl7tEQ==", + "dev": true, + "requires": { + "bluebird": "^3.0.5", + "commander": "^2.9.0", + "lru-cache": "^3.2.0", + "semver": "^5.1.0", + "sigmund": "^1.0.1" + }, + "dependencies": { + "lru-cache": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-3.2.0.tgz", + "integrity": "sha1-cXibO39Tmb7IVl3aOKow0qCX7+4=", + "dev": true, + "requires": { + "pseudomap": "^1.0.1" + } + } + } + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", + "dev": true + }, + "electron-to-chromium": { + "version": "1.3.152", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.152.tgz", + "integrity": "sha512-Ah10cGMWIXYD8aUTH2Y7lGRhaOFQLyWuxvXmCPCZCbUIGJ4swnNmT6P4aA8RTgUmNw9kmcDL6SoU8TZC4YuZGg==", + "dev": true + }, + "elliptic": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.1.tgz", + "integrity": "sha512-BsXLz5sqX8OHcsh7CqBMztyXARmGQ3LWPtGjJi6DiJHq5C/qvi9P3OqgswKSDftbu8+IoI/QDTAm2fFnQ9SZSQ==", + "requires": { + "bn.js": "^4.4.0", + "brorand": "^1.0.1", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.0" + } + }, + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true + }, + "emojis-list": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", + "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=" + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", + "dev": true + }, + "encoding": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz", + "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=", + "requires": { + "iconv-lite": "~0.4.13" + } + }, + "end-of-stream": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", + "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", + "requires": { + "once": "^1.4.0" + } + }, + "enhanced-resolve": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz", + "integrity": "sha512-F/7vkyTtyc/llOIn8oWclcB25KdRaiPBpZYDgJHgh/UHtpgT2p2eldQgtQnLtUvfMKPKxbRaQM/hHkvLHt1Vng==", + "requires": { + "graceful-fs": "^4.1.2", + "memory-fs": "^0.4.0", + "tapable": "^1.0.0" + } + }, + "entities": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", + "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==", + "dev": true + }, + "enzyme": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/enzyme/-/enzyme-3.10.0.tgz", + "integrity": "sha512-p2yy9Y7t/PFbPoTvrWde7JIYB2ZyGC+NgTNbVEGvZ5/EyoYSr9aG/2rSbVvyNvMHEhw9/dmGUJHWtfQIEiX9pg==", + "dev": true, + "requires": { + "array.prototype.flat": "^1.2.1", + "cheerio": "^1.0.0-rc.2", + "function.prototype.name": "^1.1.0", + "has": "^1.0.3", + "html-element-map": "^1.0.0", + "is-boolean-object": "^1.0.0", + "is-callable": "^1.1.4", + "is-number-object": "^1.0.3", + "is-regex": "^1.0.4", + "is-string": "^1.0.4", + "is-subset": "^0.1.1", + "lodash.escape": "^4.0.1", + "lodash.isequal": "^4.5.0", + "object-inspect": "^1.6.0", + "object-is": "^1.0.1", + "object.assign": "^4.1.0", + "object.entries": "^1.0.4", + "object.values": "^1.0.4", + "raf": "^3.4.0", + "rst-selector-parser": "^2.2.3", + "string.prototype.trim": "^1.1.2" + }, + "dependencies": { + "lodash.isequal": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", + "integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA=", + "dev": true + } + } + }, + "enzyme-adapter-react-16": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/enzyme-adapter-react-16/-/enzyme-adapter-react-16-1.1.1.tgz", + "integrity": "sha512-kC8pAtU2Jk3OJ0EG8Y2813dg9Ol0TXi7UNxHzHiWs30Jo/hj7alc//G1YpKUsPP1oKl9X+Lkx+WlGJpPYA+nvw==", + "dev": true, + "requires": { + "enzyme-adapter-utils": "^1.3.0", + "lodash": "^4.17.4", + "object.assign": "^4.0.4", + "object.values": "^1.0.4", + "prop-types": "^15.6.0", + "react-reconciler": "^0.7.0", + "react-test-renderer": "^16.0.0-0" + } + }, + "enzyme-adapter-utils": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/enzyme-adapter-utils/-/enzyme-adapter-utils-1.12.0.tgz", + "integrity": "sha512-wkZvE0VxcFx/8ZsBw0iAbk3gR1d9hK447ebnSYBf95+r32ezBq+XDSAvRErkc4LZosgH8J7et7H7/7CtUuQfBA==", + "dev": true, + "requires": { + "airbnb-prop-types": "^2.13.2", + "function.prototype.name": "^1.1.0", + "object.assign": "^4.1.0", + "object.fromentries": "^2.0.0", + "prop-types": "^15.7.2", + "semver": "^5.6.0" + }, + "dependencies": { + "loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dev": true, + "requires": { + "js-tokens": "^3.0.0 || ^4.0.0" + } + }, + "prop-types": { + "version": "15.7.2", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz", + "integrity": "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==", + "dev": true, + "requires": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.8.1" + } + } + } + }, + "enzyme-matchers": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/enzyme-matchers/-/enzyme-matchers-4.2.0.tgz", + "integrity": "sha512-5Gf/mAVYx6KPAUuxuDhAGt/gu9ndPd6duFcVnH2rbEad2clgTpHZL4Df49FHFukrjEEubX9rhfeAKx0/sbfVkQ==", + "dev": true, + "requires": { + "circular-json-es6": "^2.0.1", + "deep-equal-ident": "^1.1.1" + } + }, + "enzyme-to-json": { + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/enzyme-to-json/-/enzyme-to-json-3.3.5.tgz", + "integrity": "sha512-DmH1wJ68HyPqKSYXdQqB33ZotwfUhwQZW3IGXaNXgR69Iodaoj8TF/D9RjLdz4pEhGq2Tx2zwNUIjBuqoZeTgA==", + "dev": true, + "requires": { + "lodash": "^4.17.4" + } + }, + "errno": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz", + "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==", + "requires": { + "prr": "~1.0.1" + } + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "es-abstract": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.7.0.tgz", + "integrity": "sha1-363ndOAb/Nl/lhgCmMRJyGI/uUw=", + "requires": { + "es-to-primitive": "^1.1.1", + "function-bind": "^1.1.0", + "is-callable": "^1.1.3", + "is-regex": "^1.0.3" + } + }, + "es-to-primitive": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.0.tgz", + "integrity": "sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg==", + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "escodegen": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.11.1.tgz", + "integrity": "sha512-JwiqFD9KdGVVpeuRa68yU3zZnBEOcPs0nKW7wZzXky8Z7tffdYUHbe11bPCV5jYlK6DVdKLWLm0f5I/QlL0Kmw==", + "dev": true, + "requires": { + "esprima": "^3.1.3", + "estraverse": "^4.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1", + "source-map": "~0.6.1" + }, + "dependencies": { + "esprima": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", + "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "optional": true + } + } + }, + "esformatter": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/esformatter/-/esformatter-0.10.0.tgz", + "integrity": "sha1-4yHsw9lAgzcs389cb5Qs72/sWdM=", + "dev": true, + "requires": { + "acorn-to-esprima": "^2.0.6", + "babel-traverse": "^6.4.5", + "debug": "^0.7.4", + "disparity": "^2.0.0", + "esformatter-parser": "^1.0.0", + "glob": "^7.0.5", + "minimatch": "^3.0.2", + "minimist": "^1.1.1", + "mout": ">=0.9 <2.0", + "npm-run": "^3.0.0", + "resolve": "^1.1.5", + "rocambole": ">=0.7 <2.0", + "rocambole-indent": "^2.0.4", + "rocambole-linebreak": "^1.0.2", + "rocambole-node": "~1.0", + "rocambole-token": "^1.1.2", + "rocambole-whitespace": "^1.0.0", + "stdin": "*", + "strip-json-comments": "~0.1.1", + "supports-color": "^1.3.1", + "user-home": "^2.0.0" + }, + "dependencies": { + "debug": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-0.7.4.tgz", + "integrity": "sha1-BuHqgILCyxTjmAbiLi9vdX+Srzk=", + "dev": true + }, + "supports-color": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-1.3.1.tgz", + "integrity": "sha1-FXWN8J2P87SswwdTn6vicJXhBC0=", + "dev": true + }, + "user-home": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/user-home/-/user-home-2.0.0.tgz", + "integrity": "sha1-nHC/2Babwdy/SGBODwS4tJzenp8=", + "dev": true, + "requires": { + "os-homedir": "^1.0.0" + } + } + } + }, + "esformatter-ignore": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/esformatter-ignore/-/esformatter-ignore-0.1.3.tgz", + "integrity": "sha1-BNO4db+knd4ATMWN9va7w8BWfx4=", + "dev": true + }, + "esformatter-jsx": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/esformatter-jsx/-/esformatter-jsx-7.4.1.tgz", + "integrity": "sha1-siCa4JCPQTp0exIFcny/S6QklgI=", + "dev": true, + "requires": { + "babylon": "6.14.1", + "esformatter-ignore": "^0.1.3", + "extend": "3.0.0", + "js-beautify": "1.6.4" + }, + "dependencies": { + "babylon": { + "version": "6.14.1", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.14.1.tgz", + "integrity": "sha1-lWJ1+rcnU62bNDXXr+WPi/CimBU=", + "dev": true + } + } + }, + "esformatter-jsx-ignore": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/esformatter-jsx-ignore/-/esformatter-jsx-ignore-1.0.6.tgz", + "integrity": "sha1-5ZT2t322+F2MEXmubcRldW1CJIk=", + "dev": true, + "requires": { + "esprima-fb": "^12001.1.0-dev-harmony-fb", + "fresh-falafel": "^0.2.6" + }, + "dependencies": { + "esprima-fb": { + "version": "12001.1.0-dev-harmony-fb", + "resolved": "https://registry.npmjs.org/esprima-fb/-/esprima-fb-12001.1.0-dev-harmony-fb.tgz", + "integrity": "sha1-2EQAOEupXOJnjGF60kp/QICNqRU=", + "dev": true + } + } + }, + "esformatter-parser": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/esformatter-parser/-/esformatter-parser-1.0.0.tgz", + "integrity": "sha1-CFQHLQSHU57TnK442KVDLBfsEdM=", + "dev": true, + "requires": { + "acorn-to-esprima": "^2.0.8", + "babel-traverse": "^6.9.0", + "babylon": "^6.8.0", + "rocambole": "^0.7.0" + } + }, + "eslint-scope": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", + "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==", + "requires": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + }, + "esprima": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", + "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=", + "dev": true + }, + "esrecurse": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", + "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", + "requires": { + "estraverse": "^4.1.0" + } + }, + "estraverse": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", + "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=" + }, + "esutils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", + "dev": true + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", + "dev": true + }, + "eventemitter3": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.2.tgz", + "integrity": "sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q==", + "dev": true + }, + "events": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.0.0.tgz", + "integrity": "sha512-Dc381HFWJzEOhQ+d8pkNon++bk9h6cdAoAj4iE6Q4y6xgTzySWXlKn05/TVNpjnfRqi/X0EpJEJohPjNI3zpVA==" + }, + "eventsource": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-1.0.7.tgz", + "integrity": "sha512-4Ln17+vVT0k8aWq+t/bF5arcS3EpT9gYtW66EPacdj/mAFevznsnyoHLPy2BA8gbIQeIHoPsvwmfBftfcG//BQ==", + "dev": true, + "requires": { + "original": "^1.0.0" + } + }, + "evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "requires": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, + "exec-sh": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/exec-sh/-/exec-sh-0.2.2.tgz", + "integrity": "sha512-FIUCJz1RbuS0FKTdaAafAByGS0CPvU3R0MeHxgtl+djzCc//F8HakL8GzmVNZanasTbTAY/3DRFA0KpVqj/eAw==", + "dev": true, + "requires": { + "merge": "^1.2.0" + } + }, + "execa": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", + "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", + "dev": true, + "requires": { + "cross-spawn": "^5.0.1", + "get-stream": "^3.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + }, + "exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", + "dev": true + }, + "expand-brackets": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", + "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", + "dev": true, + "requires": { + "is-posix-bracket": "^0.1.0" + } + }, + "expand-range": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", + "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", + "dev": true, + "requires": { + "fill-range": "^2.1.0" + }, + "dependencies": { + "fill-range": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.4.tgz", + "integrity": "sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q==", + "dev": true, + "requires": { + "is-number": "^2.1.0", + "isobject": "^2.0.0", + "randomatic": "^3.0.0", + "repeat-element": "^1.1.2", + "repeat-string": "^1.5.2" + } + }, + "is-number": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", + "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "expand-tilde": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", + "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", + "dev": true, + "requires": { + "homedir-polyfill": "^1.0.1" + } + }, + "expect": { + "version": "1.20.2", + "resolved": "https://registry.npmjs.org/expect/-/expect-1.20.2.tgz", + "integrity": "sha1-1Fj+TFYAQDa64yMkFqP2Nh8E+WU=", + "requires": { + "define-properties": "~1.1.2", + "has": "^1.0.1", + "is-equal": "^1.5.1", + "is-regex": "^1.0.3", + "object-inspect": "^1.1.0", + "object-keys": "^1.0.9", + "tmatch": "^2.0.1" + } + }, + "express": { + "version": "4.17.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", + "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", + "dev": true, + "requires": { + "accepts": "~1.3.7", + "array-flatten": "1.1.1", + "body-parser": "1.19.0", + "content-disposition": "0.5.3", + "content-type": "~1.0.4", + "cookie": "0.4.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "~1.1.2", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "~1.1.2", + "fresh": "0.5.2", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.5", + "qs": "6.7.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.1.2", + "send": "0.17.1", + "serve-static": "1.14.1", + "setprototypeof": "1.1.1", + "statuses": "~1.5.0", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "dependencies": { + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=", + "dev": true + }, + "cookie": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", + "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==", + "dev": true + }, + "qs": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==", + "dev": true + } + } + }, + "extend": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.0.tgz", + "integrity": "sha1-WkdDU7nzNT3dgXbf03uRyDpG8dQ=" + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "external-editor": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.2.0.tgz", + "integrity": "sha512-bSn6gvGxKt+b7+6TKEv1ZycHleA7aHhRHyAqJyp5pbUFuYYNIzpZnQDk7AsYckyWdEnTeAnay0aCy2aV6iTk9A==", + "dev": true, + "requires": { + "chardet": "^0.4.0", + "iconv-lite": "^0.4.17", + "tmp": "^0.0.33" + } + }, + "extglob": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", + "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", + "dev": true, + "requires": { + "is-extglob": "^1.0.0" + } + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "dev": true + }, + "fast-deep-equal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", + "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=" + }, + "fast-json-stable-stringify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", + "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=" + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true + }, + "fastparse": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.2.tgz", + "integrity": "sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ==", + "dev": true + }, + "faye-websocket": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz", + "integrity": "sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=", + "dev": true, + "requires": { + "websocket-driver": ">=0.5.1" + } + }, + "fb-watchman": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.0.tgz", + "integrity": "sha1-VOmr99+i8mzZsWNsWIwa/AXeXVg=", + "dev": true, + "requires": { + "bser": "^2.0.0" + } + }, + "fbjs": { + "version": "0.8.16", + "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-0.8.16.tgz", + "integrity": "sha1-XmdDL1UNxBtXK/VYR7ispk5TN9s=", + "requires": { + "core-js": "^1.0.0", + "isomorphic-fetch": "^2.1.1", + "loose-envify": "^1.0.0", + "object-assign": "^4.1.0", + "promise": "^7.1.1", + "setimmediate": "^1.0.5", + "ua-parser-js": "^0.7.9" + }, + "dependencies": { + "core-js": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-1.2.7.tgz", + "integrity": "sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY=" + } + } + }, + "figgy-pudding": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.1.tgz", + "integrity": "sha512-vNKxJHTEKNThjfrdJwHc7brvM6eVevuO5nTj6ez8ZQ1qbXTvGthucRF7S4vf2cr71QVnT70V34v0S1DyQsti0w==" + }, + "figures": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", + "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5" + } + }, + "filename-regex": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", + "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", + "dev": true + }, + "fileset": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/fileset/-/fileset-2.0.3.tgz", + "integrity": "sha1-jnVIqW08wjJ+5eZ0FocjozO7oqA=", + "dev": true, + "requires": { + "glob": "^7.0.3", + "minimatch": "^3.0.3" + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "dev": true, + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + } + }, + "find-cache-dir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-1.0.0.tgz", + "integrity": "sha1-kojj6ePMN0hxfTnq3hfPcfww7m8=", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^1.0.0", + "pkg-dir": "^2.0.0" + } + }, + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "requires": { + "locate-path": "^2.0.0" + } + }, + "findup-sync": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-2.0.0.tgz", + "integrity": "sha1-kyaxSIwi0aYIhlCoaQGy2akKLLw=", + "dev": true, + "requires": { + "detect-file": "^1.0.0", + "is-glob": "^3.1.0", + "micromatch": "^3.0.4", + "resolve-dir": "^1.0.1" + }, + "dependencies": { + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "requires": { + "is-extglob": "^2.1.0" + } + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + } + } + }, + "flatten": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/flatten/-/flatten-1.0.2.tgz", + "integrity": "sha1-2uRqnXj74lKSJYzB54CkHZXAN4I=", + "dev": true + }, + "flush-write-stream": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.0.3.tgz", + "integrity": "sha512-calZMC10u0FMUqoiunI2AiGIIUtUIvifNwkHhNupZH4cbNnW1Itkoh/Nf5HFYmDrwWPjrUxpkZT0KhuCq0jmGw==", + "requires": { + "inherits": "^2.0.1", + "readable-stream": "^2.0.4" + } + }, + "follow-redirects": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.7.0.tgz", + "integrity": "sha512-m/pZQy4Gj287eNy94nivy5wchN3Kp+Q5WgUPNy5lJSZ3sgkVKSYV/ZChMAQVIgx1SqfZ2zBZtPA2YlXIWxxJOQ==", + "dev": true, + "requires": { + "debug": "^3.2.6" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "font-awesome": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/font-awesome/-/font-awesome-4.7.0.tgz", + "integrity": "sha1-j6jPBBGhoxr9B7BtKQK7n8gVoTM=" + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=" + }, + "for-own": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", + "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", + "dev": true, + "requires": { + "for-in": "^1.0.1" + } + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "dev": true + }, + "form-data": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.1.tgz", + "integrity": "sha1-b7lPvXGIUwbXPRXMSX/kzE7NRL8=", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.5", + "mime-types": "^2.1.12" + } + }, + "formidable": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/formidable/-/formidable-1.2.1.tgz", + "integrity": "sha512-Fs9VRguL0gqGHkXS5GQiMCr1VhZBxz0JnJs4JmMp/2jL18Fmbzvv7vOFRU+U8TBkHEE/CX1qDXzJplVULgsLeg==" + }, + "forwarded": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", + "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=", + "dev": true + }, + "fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "requires": { + "map-cache": "^0.2.2" + } + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", + "dev": true + }, + "fresh-falafel": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/fresh-falafel/-/fresh-falafel-0.2.6.tgz", + "integrity": "sha1-N3W5ggVf3/sfSMsXdVFk+PxSIzk=", + "dev": true, + "requires": { + "esprima": "^2.0.0" + } + }, + "from2": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", + "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", + "requires": { + "inherits": "^2.0.1", + "readable-stream": "^2.0.0" + } + }, + "fs-readdir-recursive": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz", + "integrity": "sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA==", + "dev": true + }, + "fs-write-stream-atomic": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", + "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=", + "requires": { + "graceful-fs": "^4.1.2", + "iferr": "^0.1.5", + "imurmurhash": "^0.1.4", + "readable-stream": "1 || 2" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + }, + "fsevents": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.9.tgz", + "integrity": "sha512-oeyj2H3EjjonWcFjD5NvZNE9Rqe4UW+nQBU2HNeKw0koVLEFIhtyETyAakeAM3de7Z/SW5kcA+fZUait9EApnw==", + "optional": true, + "requires": { + "nan": "^2.12.1", + "node-pre-gyp": "^0.12.0" + }, + "dependencies": { + "abbrev": { + "version": "1.1.1", + "bundled": true, + "optional": true + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true, + "optional": true + }, + "aproba": { + "version": "1.2.0", + "bundled": true, + "optional": true + }, + "are-we-there-yet": { + "version": "1.1.5", + "bundled": true, + "optional": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "balanced-match": { + "version": "1.0.0", + "bundled": true, + "optional": true + }, + "brace-expansion": { + "version": "1.1.11", + "bundled": true, + "optional": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "chownr": { + "version": "1.1.1", + "bundled": true, + "optional": true + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true, + "optional": true + }, + "concat-map": { + "version": "0.0.1", + "bundled": true, + "optional": true + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true, + "optional": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true, + "optional": true + }, + "debug": { + "version": "4.1.1", + "bundled": true, + "optional": true, + "requires": { + "ms": "^2.1.1" + } + }, + "deep-extend": { + "version": "0.6.0", + "bundled": true, + "optional": true + }, + "delegates": { + "version": "1.0.0", + "bundled": true, + "optional": true + }, + "detect-libc": { + "version": "1.0.3", + "bundled": true, + "optional": true + }, + "fs-minipass": { + "version": "1.2.5", + "bundled": true, + "optional": true, + "requires": { + "minipass": "^2.2.1" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true, + "optional": true + }, + "gauge": { + "version": "2.7.4", + "bundled": true, + "optional": true, + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + } + }, + "glob": { + "version": "7.1.3", + "bundled": true, + "optional": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "has-unicode": { + "version": "2.0.1", + "bundled": true, + "optional": true + }, + "iconv-lite": { + "version": "0.4.24", + "bundled": true, + "optional": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ignore-walk": { + "version": "3.0.1", + "bundled": true, + "optional": true, + "requires": { + "minimatch": "^3.0.4" + } + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "optional": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.3", + "bundled": true, + "optional": true + }, + "ini": { + "version": "1.3.5", + "bundled": true, + "optional": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "optional": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "isarray": { + "version": "1.0.0", + "bundled": true, + "optional": true + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "optional": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "bundled": true, + "optional": true + }, + "minipass": { + "version": "2.3.5", + "bundled": true, + "optional": true, + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + }, + "minizlib": { + "version": "1.2.1", + "bundled": true, + "optional": true, + "requires": { + "minipass": "^2.2.1" + } + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "optional": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.1.1", + "bundled": true, + "optional": true + }, + "needle": { + "version": "2.3.0", + "bundled": true, + "optional": true, + "requires": { + "debug": "^4.1.0", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + } + }, + "node-pre-gyp": { + "version": "0.12.0", + "bundled": true, + "optional": true, + "requires": { + "detect-libc": "^1.0.2", + "mkdirp": "^0.5.1", + "needle": "^2.2.1", + "nopt": "^4.0.1", + "npm-packlist": "^1.1.6", + "npmlog": "^4.0.2", + "rc": "^1.2.7", + "rimraf": "^2.6.1", + "semver": "^5.3.0", + "tar": "^4" + } + }, + "nopt": { + "version": "4.0.1", + "bundled": true, + "optional": true, + "requires": { + "abbrev": "1", + "osenv": "^0.1.4" + } + }, + "npm-bundled": { + "version": "1.0.6", + "bundled": true, + "optional": true + }, + "npm-packlist": { + "version": "1.4.1", + "bundled": true, + "optional": true, + "requires": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1" + } + }, + "npmlog": { + "version": "4.1.2", + "bundled": true, + "optional": true, + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true, + "optional": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true, + "optional": true + }, + "once": { + "version": "1.4.0", + "bundled": true, + "optional": true, + "requires": { + "wrappy": "1" + } + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true, + "optional": true + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true, + "optional": true + }, + "osenv": { + "version": "0.1.5", + "bundled": true, + "optional": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true, + "optional": true + }, + "process-nextick-args": { + "version": "2.0.0", + "bundled": true, + "optional": true + }, + "rc": { + "version": "1.2.8", + "bundled": true, + "optional": true, + "requires": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "bundled": true, + "optional": true + } + } + }, + "readable-stream": { + "version": "2.3.6", + "bundled": true, + "optional": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "rimraf": { + "version": "2.6.3", + "bundled": true, + "optional": true, + "requires": { + "glob": "^7.1.3" + } + }, + "safe-buffer": { + "version": "5.1.2", + "bundled": true, + "optional": true + }, + "safer-buffer": { + "version": "2.1.2", + "bundled": true, + "optional": true + }, + "sax": { + "version": "1.2.4", + "bundled": true, + "optional": true + }, + "semver": { + "version": "5.7.0", + "bundled": true, + "optional": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "optional": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true, + "optional": true + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "optional": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "string_decoder": { + "version": "1.1.1", + "bundled": true, + "optional": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "optional": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "bundled": true, + "optional": true + }, + "tar": { + "version": "4.4.8", + "bundled": true, + "optional": true, + "requires": { + "chownr": "^1.1.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.3.4", + "minizlib": "^1.1.1", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.2", + "yallist": "^3.0.2" + } + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true, + "optional": true + }, + "wide-align": { + "version": "1.1.3", + "bundled": true, + "optional": true, + "requires": { + "string-width": "^1.0.2 || 2" + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true, + "optional": true + }, + "yallist": { + "version": "3.0.3", + "bundled": true, + "optional": true + } + } + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "function.prototype.name": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.0.tgz", + "integrity": "sha512-Bs0VRrTz4ghD8pTmbJQD1mZ8A/mN0ur/jGz+A6FBxPDUPkm1tNfF6bhTYPA7i7aF4lZJVr+OXTNNrnnIl58Wfg==", + "dev": true, + "requires": { + "define-properties": "^1.1.2", + "function-bind": "^1.1.1", + "is-callable": "^1.1.3" + } + }, + "get-caller-file": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", + "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", + "dev": true + }, + "get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "dev": true + }, + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=" + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "glob": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", + "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-all": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-all/-/glob-all-3.1.0.tgz", + "integrity": "sha1-iRPd+17hrHgSZWJBsD1SF8ZLAqs=", + "requires": { + "glob": "^7.0.5", + "yargs": "~1.2.6" + }, + "dependencies": { + "minimist": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.1.0.tgz", + "integrity": "sha1-md9lelJXTCHJBXSX33QnkLK0wN4=" + }, + "yargs": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-1.2.6.tgz", + "integrity": "sha1-nHtKgv1dWVsr8Xq23MQxNUMv40s=", + "requires": { + "minimist": "^0.1.0" + } + } + } + }, + "glob-base": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", + "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", + "dev": true, + "requires": { + "glob-parent": "^2.0.0", + "is-glob": "^2.0.0" + } + }, + "glob-parent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", + "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", + "dev": true, + "requires": { + "is-glob": "^2.0.0" + } + }, + "global-modules": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", + "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", + "dev": true, + "requires": { + "global-prefix": "^1.0.1", + "is-windows": "^1.0.1", + "resolve-dir": "^1.0.0" + } + }, + "global-modules-path": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/global-modules-path/-/global-modules-path-2.3.1.tgz", + "integrity": "sha512-y+shkf4InI7mPRHSo2b/k6ix6+NLDtyccYv86whhxrSGX9wjPX1VMITmrDbE1eh7zkzhiWtW2sHklJYoQ62Cxg==", + "dev": true + }, + "global-prefix": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", + "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=", + "dev": true, + "requires": { + "expand-tilde": "^2.0.2", + "homedir-polyfill": "^1.0.1", + "ini": "^1.3.4", + "is-windows": "^1.0.1", + "which": "^1.2.14" + } + }, + "globals": { + "version": "9.18.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", + "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", + "dev": true + }, + "globby": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/globby/-/globby-7.1.1.tgz", + "integrity": "sha1-+yzP+UAfhgCUXfral0QMypcrhoA=", + "dev": true, + "requires": { + "array-union": "^1.0.1", + "dir-glob": "^2.0.0", + "glob": "^7.1.2", + "ignore": "^3.3.5", + "pify": "^3.0.0", + "slash": "^1.0.0" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + } + } + }, + "graceful-fs": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=" + }, + "growly": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", + "integrity": "sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=", + "dev": true + }, + "handle-thing": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.0.tgz", + "integrity": "sha512-d4sze1JNC454Wdo2fkuyzCr6aHcbL6PGGuFAz0Li/NcOm1tCHGnWDRmJP85dh9IhQErTc2svWFEX5xHIOo//kQ==", + "dev": true + }, + "handlebars": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.1.2.tgz", + "integrity": "sha512-nvfrjqvt9xQ8Z/w0ijewdD/vvWDTOweBUm96NTr66Wfvo1mJenBLwcYmPs3TIBP5ruzYGD7Hx/DaM9RmhroGPw==", + "dev": true, + "requires": { + "neo-async": "^2.6.0", + "optimist": "^0.6.1", + "source-map": "^0.6.1", + "uglify-js": "^3.1.4" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "dev": true + }, + "har-validator": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", + "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", + "dev": true, + "requires": { + "ajv": "^6.5.5", + "har-schema": "^2.0.0" + } + }, + "harmony-reflect": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/harmony-reflect/-/harmony-reflect-1.6.1.tgz", + "integrity": "sha512-WJTeyp0JzGtHcuMsi7rw2VwtkvLa+JyfEKJCFyfcS0+CDkjQ5lHPu7zEhFZP+PDSRrEgXa5Ah0l1MbgbE41XjA==" + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "has-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz", + "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=" + }, + "has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "requires": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + } + }, + "has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "requires": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "dependencies": { + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "hash-base": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", + "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=", + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "requires": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true + }, + "history": { + "version": "4.7.2", + "resolved": "https://registry.npmjs.org/history/-/history-4.7.2.tgz", + "integrity": "sha512-1zkBRWW6XweO0NBcjiphtVJVsIQ+SXF29z9DVkceeaSLVMFXHool+fdCZD4spDCfZJCILPILc3bm7Bc+HRi0nA==", + "requires": { + "invariant": "^2.2.1", + "loose-envify": "^1.2.0", + "resolve-pathname": "^2.2.0", + "value-equal": "^0.4.0", + "warning": "^3.0.0" + } + }, + "hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", + "requires": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "hoist-non-react-statics": { + "version": "2.5.5", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-2.5.5.tgz", + "integrity": "sha512-rqcy4pJo55FTTLWt+bU8ukscqHeE/e9KWvsOW2b/a3afxQZhwkQdT1rPPCJ0rYXdj4vNcasY8zHTH+jF/qStxw==" + }, + "home-or-tmp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz", + "integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=", + "dev": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.1" + } + }, + "homedir-polyfill": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", + "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", + "dev": true, + "requires": { + "parse-passwd": "^1.0.0" + } + }, + "hosted-git-info": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz", + "integrity": "sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w==", + "dev": true + }, + "hpack.js": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", + "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "obuf": "^1.0.0", + "readable-stream": "^2.0.1", + "wbuf": "^1.1.0" + } + }, + "html-comment-regex": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/html-comment-regex/-/html-comment-regex-1.1.2.tgz", + "integrity": "sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ==", + "dev": true + }, + "html-element-map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/html-element-map/-/html-element-map-1.0.1.tgz", + "integrity": "sha512-BZSfdEm6n706/lBfXKWa4frZRZcT5k1cOusw95ijZsHlI+GdgY0v95h6IzO3iIDf2ROwq570YTwqNPqHcNMozw==", + "dev": true, + "requires": { + "array-filter": "^1.0.0" + } + }, + "html-encoding-sniffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz", + "integrity": "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==", + "dev": true, + "requires": { + "whatwg-encoding": "^1.0.1" + } + }, + "html-entities": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.2.1.tgz", + "integrity": "sha1-DfKTUfByEWNRXfueVUPl9u7VFi8=", + "dev": true + }, + "html-minifier": { + "version": "3.5.21", + "resolved": "https://registry.npmjs.org/html-minifier/-/html-minifier-3.5.21.tgz", + "integrity": "sha512-LKUKwuJDhxNa3uf/LPR/KVjm/l3rBqtYeCOAekvG8F1vItxMUpueGd94i/asDDr8/1u7InxzFA5EeGjhhG5mMA==", + "dev": true, + "requires": { + "camel-case": "3.0.x", + "clean-css": "4.2.x", + "commander": "2.17.x", + "he": "1.2.x", + "param-case": "2.1.x", + "relateurl": "0.2.x", + "uglify-js": "3.4.x" + }, + "dependencies": { + "commander": { + "version": "2.17.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz", + "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==", + "dev": true + } + } + }, + "html-webpack-plugin": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-3.2.0.tgz", + "integrity": "sha1-sBq71yOsqqeze2r0SS69oD2d03s=", + "dev": true, + "requires": { + "html-minifier": "^3.2.3", + "loader-utils": "^0.2.16", + "lodash": "^4.17.3", + "pretty-error": "^2.0.2", + "tapable": "^1.0.0", + "toposort": "^1.0.0", + "util.promisify": "1.0.0" + }, + "dependencies": { + "loader-utils": { + "version": "0.2.17", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz", + "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=", + "dev": true, + "requires": { + "big.js": "^3.1.3", + "emojis-list": "^2.0.0", + "json5": "^0.5.0", + "object-assign": "^4.0.1" + } + } + } + }, + "htmlparser2": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz", + "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==", + "dev": true, + "requires": { + "domelementtype": "^1.3.1", + "domhandler": "^2.3.0", + "domutils": "^1.5.1", + "entities": "^1.1.1", + "inherits": "^2.0.1", + "readable-stream": "^3.1.1" + }, + "dependencies": { + "readable-stream": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.4.0.tgz", + "integrity": "sha512-jItXPLmrSR8jmTRmRWJXCnGJsfy85mB3Wd/uINMXA65yrnFo0cPClFIUWzo2najVNSl+mx7/4W8ttlLWJe99pQ==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "http-deceiver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", + "integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=", + "dev": true + }, + "http-errors": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", + "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", + "dev": true, + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.1", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.0" + } + }, + "http-parser-js": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.0.tgz", + "integrity": "sha512-cZdEF7r4gfRIq7ezX9J0T+kQmJNOub71dWbgAXVHDct80TKP4MCETtZQ31xyv38UwgzkWPYF/Xc0ge55dW9Z9w==", + "dev": true + }, + "http-proxy": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.17.0.tgz", + "integrity": "sha512-Taqn+3nNvYRfJ3bGvKfBSRwy1v6eePlm3oc/aWVxZp57DQr5Eq3xhKJi7Z4hZpS8PC3H4qI+Yly5EmFacGuA/g==", + "dev": true, + "requires": { + "eventemitter3": "^3.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + } + }, + "http-proxy-middleware": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.18.0.tgz", + "integrity": "sha512-Fs25KVMPAIIcgjMZkVHJoKg9VcXcC1C8yb9JUgeDvVXY0S/zgVIhMb+qVswDIgtJe2DfckMSY2d6TuTEutlk6Q==", + "dev": true, + "requires": { + "http-proxy": "^1.16.2", + "is-glob": "^4.0.0", + "lodash": "^4.17.5", + "micromatch": "^3.1.9" + }, + "dependencies": { + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + } + } + }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } + }, + "https-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", + "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=" + }, + "humanize": { + "version": "0.0.9", + "resolved": "https://registry.npmjs.org/humanize/-/humanize-0.0.9.tgz", + "integrity": "sha1-GZT/rs3+nEQe0r2sdFK3u0yeQaQ=" + }, + "iconv-lite": { + "version": "0.4.23", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz", + "integrity": "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==", + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "icss-replace-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz", + "integrity": "sha1-Bupvg2ead0njhs/h/oEq5dsiPe0=", + "dev": true + }, + "identity-obj-proxy": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/identity-obj-proxy/-/identity-obj-proxy-3.0.0.tgz", + "integrity": "sha1-lNK9qWCERT7zb7xarsN+D3nx/BQ=", + "requires": { + "harmony-reflect": "^1.4.6" + } + }, + "ieee754": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", + "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==" + }, + "iferr": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", + "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=" + }, + "ignore": { + "version": "3.3.10", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz", + "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==", + "dev": true + }, + "image-size": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz", + "integrity": "sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w=", + "dev": true, + "optional": true + }, + "import-local": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-1.0.0.tgz", + "integrity": "sha512-vAaZHieK9qjGo58agRBg+bhHX3hoTZU/Oa3GESWLz7t1U62fk63aHuDJJEteXoDeTCcPmUT+z38gkHPZkkmpmQ==", + "dev": true, + "requires": { + "pkg-dir": "^2.0.0", + "resolve-cwd": "^2.0.0" + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=" + }, + "indexes-of": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", + "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=", + "dev": true + }, + "indexof": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", + "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=" + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + }, + "ini": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", + "dev": true + }, + "inquirer": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-3.0.6.tgz", + "integrity": "sha1-4EqqnQW3o8ubD0B9BDdfBEcZA0c=", + "dev": true, + "requires": { + "ansi-escapes": "^1.1.0", + "chalk": "^1.0.0", + "cli-cursor": "^2.1.0", + "cli-width": "^2.0.0", + "external-editor": "^2.0.1", + "figures": "^2.0.0", + "lodash": "^4.3.0", + "mute-stream": "0.0.7", + "run-async": "^2.2.0", + "rx": "^4.1.0", + "string-width": "^2.0.0", + "strip-ansi": "^3.0.0", + "through": "^2.3.6" + }, + "dependencies": { + "ansi-escapes": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-1.4.0.tgz", + "integrity": "sha1-06ioOzGapneTZisT52HHkRQiMG4=", + "dev": true + } + } + }, + "internal-ip": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-3.0.1.tgz", + "integrity": "sha512-NXXgESC2nNVtU+pqmC9e6R8B1GpKxzsAQhffvh5AL79qKnodd+L7tnEQmTiUAVngqLalPbSqRA7XGIEL5nCd0Q==", + "dev": true, + "requires": { + "default-gateway": "^2.6.0", + "ipaddr.js": "^1.5.2" + } + }, + "interpret": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.2.0.tgz", + "integrity": "sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw==", + "dev": true + }, + "invariant": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.2.tgz", + "integrity": "sha1-nh9WrArNtr8wMwbzOL47IErmA2A=", + "requires": { + "loose-envify": "^1.0.0" + } + }, + "invert-kv": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", + "dev": true + }, + "ip": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", + "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=", + "dev": true + }, + "ip-regex": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz", + "integrity": "sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=", + "dev": true + }, + "ipaddr.js": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.0.tgz", + "integrity": "sha512-M4Sjn6N/+O6/IXSJseKqHoFc+5FdGJ22sXqnjTpdZweHK64MzEPAyQZyEU3R/KRv2GLoa7nNtg/C2Ev6m7z+eA==", + "dev": true + }, + "is-absolute-url": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.1.0.tgz", + "integrity": "sha1-UFMN+4T8yap9vnhS6Do3uTufKqY=", + "dev": true + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "requires": { + "kind-of": "^6.0.0" + }, + "dependencies": { + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" + } + } + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "is-arrow-function": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-arrow-function/-/is-arrow-function-2.0.3.tgz", + "integrity": "sha1-Kb4sLY2UUIUri7r7Y1unuNjofsI=", + "requires": { + "is-callable": "^1.0.4" + } + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "requires": { + "binary-extensions": "^1.0.0" + } + }, + "is-boolean-object": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.0.0.tgz", + "integrity": "sha1-mPiygDBoQhmpXzdc+9iM40Bd/5M=" + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" + }, + "is-callable": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz", + "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==" + }, + "is-ci": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.2.1.tgz", + "integrity": "sha512-s6tfsaQaQi3JNciBH6shVqEDvhGut0SUXr31ag8Pd8BBbVVlcGfWhpPmEOoM6RJ5TFhbypvf5yyRw/VXW1IiWg==", + "dev": true, + "requires": { + "ci-info": "^1.5.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "requires": { + "kind-of": "^6.0.0" + }, + "dependencies": { + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" + } + } + }, + "is-date-object": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", + "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=" + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + }, + "dependencies": { + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" + } + } + }, + "is-dotfile": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", + "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=", + "dev": true + }, + "is-equal": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/is-equal/-/is-equal-1.5.5.tgz", + "integrity": "sha1-XoXxlX4FKIMkf+s4aWWju6Ffuz0=", + "requires": { + "has": "^1.0.1", + "is-arrow-function": "^2.0.3", + "is-boolean-object": "^1.0.0", + "is-callable": "^1.1.3", + "is-date-object": "^1.0.1", + "is-generator-function": "^1.0.6", + "is-number-object": "^1.0.3", + "is-regex": "^1.0.3", + "is-string": "^1.0.4", + "is-symbol": "^1.0.1", + "object.entries": "^1.0.4" + } + }, + "is-equal-shallow": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", + "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", + "dev": true, + "requires": { + "is-primitive": "^2.0.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=" + }, + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "dev": true + }, + "is-finite": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", + "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "is-generator-fn": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-1.0.0.tgz", + "integrity": "sha1-lp1J4bszKfa7fwkIm+JleLLd1Go=", + "dev": true + }, + "is-generator-function": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.7.tgz", + "integrity": "sha512-YZc5EwyO4f2kWCax7oegfuSr9mFz1ZvieNYBEjmukLxgXfBUbxAWGVF7GZf0zidYtoBl3WvC07YK0wT76a+Rtw==" + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "dev": true, + "requires": { + "is-extglob": "^1.0.0" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "requires": { + "kind-of": "^3.0.2" + } + }, + "is-number-object": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.3.tgz", + "integrity": "sha1-8mWrian0RQNO9q/xWo8AsA9VF5k=" + }, + "is-path-cwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", + "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=", + "dev": true + }, + "is-path-in-cwd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz", + "integrity": "sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ==", + "dev": true, + "requires": { + "is-path-inside": "^1.0.0" + } + }, + "is-path-inside": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", + "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", + "dev": true, + "requires": { + "path-is-inside": "^1.0.1" + } + }, + "is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", + "dev": true + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "requires": { + "isobject": "^3.0.1" + } + }, + "is-posix-bracket": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", + "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=", + "dev": true + }, + "is-primitive": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", + "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", + "dev": true + }, + "is-promise": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", + "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=", + "dev": true + }, + "is-regex": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", + "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", + "requires": { + "has": "^1.0.1" + } + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" + }, + "is-string": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.4.tgz", + "integrity": "sha1-zDqbaYV9Yh6WNyWiTK7shzuCbmQ=" + }, + "is-subset": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-subset/-/is-subset-0.1.1.tgz", + "integrity": "sha1-ilkRfZMt4d4A8kX83TnOQ/HpOaY=", + "dev": true + }, + "is-svg": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-2.1.0.tgz", + "integrity": "sha1-z2EJDaDZ77yrhyLeum8DIgjbsOk=", + "dev": true, + "requires": { + "html-comment-regex": "^1.1.0" + } + }, + "is-symbol": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.2.tgz", + "integrity": "sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==", + "requires": { + "has-symbols": "^1.0.0" + } + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true + }, + "is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", + "dev": true + }, + "is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==" + }, + "is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=" + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + }, + "isomorphic-fetch": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz", + "integrity": "sha1-YRrhrPFPXoH3KVB0coGf6XM1WKk=", + "requires": { + "node-fetch": "^1.0.1", + "whatwg-fetch": ">=0.10.0" + } + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "dev": true + }, + "istanbul-api": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/istanbul-api/-/istanbul-api-1.3.7.tgz", + "integrity": "sha512-4/ApBnMVeEPG3EkSzcw25wDe4N66wxwn+KKn6b47vyek8Xb3NBAcg4xfuQbS7BqcZuTX4wxfD5lVagdggR3gyA==", + "dev": true, + "requires": { + "async": "^2.1.4", + "fileset": "^2.0.2", + "istanbul-lib-coverage": "^1.2.1", + "istanbul-lib-hook": "^1.2.2", + "istanbul-lib-instrument": "^1.10.2", + "istanbul-lib-report": "^1.1.5", + "istanbul-lib-source-maps": "^1.2.6", + "istanbul-reports": "^1.5.1", + "js-yaml": "^3.7.0", + "mkdirp": "^0.5.1", + "once": "^1.4.0" + }, + "dependencies": { + "async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.2.tgz", + "integrity": "sha512-H1qVYh1MYhEEFLsP97cVKqCGo7KfCyTt6uEWqsTBr9SO84oK9Uwbyd/yCW+6rKJLHksBNUVWZDAjfS+Ccx0Bbg==", + "dev": true, + "requires": { + "lodash": "^4.17.11" + } + } + } + }, + "istanbul-lib-coverage": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-1.2.1.tgz", + "integrity": "sha512-PzITeunAgyGbtY1ibVIUiV679EFChHjoMNRibEIobvmrCRaIgwLxNucOSimtNWUhEib/oO7QY2imD75JVgCJWQ==", + "dev": true + }, + "istanbul-lib-hook": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-1.2.2.tgz", + "integrity": "sha512-/Jmq7Y1VeHnZEQ3TL10VHyb564mn6VrQXHchON9Jf/AEcmQ3ZIiyD1BVzNOKTZf/G3gE+kiGK6SmpF9y3qGPLw==", + "dev": true, + "requires": { + "append-transform": "^0.4.0" + } + }, + "istanbul-lib-instrument": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-1.10.2.tgz", + "integrity": "sha512-aWHxfxDqvh/ZlxR8BBaEPVSWDPUkGD63VjGQn3jcw8jCp7sHEMKcrj4xfJn/ABzdMEHiQNyvDQhqm5o8+SQg7A==", + "dev": true, + "requires": { + "babel-generator": "^6.18.0", + "babel-template": "^6.16.0", + "babel-traverse": "^6.18.0", + "babel-types": "^6.18.0", + "babylon": "^6.18.0", + "istanbul-lib-coverage": "^1.2.1", + "semver": "^5.3.0" + } + }, + "istanbul-lib-report": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-1.1.5.tgz", + "integrity": "sha512-UsYfRMoi6QO/doUshYNqcKJqVmFe9w51GZz8BS3WB0lYxAllQYklka2wP9+dGZeHYaWIdcXUx8JGdbqaoXRXzw==", + "dev": true, + "requires": { + "istanbul-lib-coverage": "^1.2.1", + "mkdirp": "^0.5.1", + "path-parse": "^1.0.5", + "supports-color": "^3.1.2" + }, + "dependencies": { + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "^1.0.0" + } + } + } + }, + "istanbul-lib-source-maps": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.6.tgz", + "integrity": "sha512-TtbsY5GIHgbMsMiRw35YBHGpZ1DVFEO19vxxeiDMYaeOFOCzfnYVxvl6pOUIZR4dtPhAGpSMup8OyF8ubsaqEg==", + "dev": true, + "requires": { + "debug": "^3.1.0", + "istanbul-lib-coverage": "^1.2.1", + "mkdirp": "^0.5.1", + "rimraf": "^2.6.1", + "source-map": "^0.5.3" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "istanbul-reports": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-1.5.1.tgz", + "integrity": "sha512-+cfoZ0UXzWjhAdzosCPP3AN8vvef8XDkWtTfgaN+7L3YTpNYITnCaEkceo5SEYy644VkHka/P1FvkWvrG/rrJw==", + "dev": true, + "requires": { + "handlebars": "^4.0.3" + } + }, + "jest": { + "version": "22.1.4", + "resolved": "https://registry.npmjs.org/jest/-/jest-22.1.4.tgz", + "integrity": "sha512-cIPkn+OFGabazPesbhnYkadPftoO2Fo3w84QjeIP+A8eZ5qj7Zs4PuTemAW8StNMxySJr0KPk/LhYG2GUHLexQ==", + "dev": true, + "requires": { + "jest-cli": "^22.1.4" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "jest-cli": { + "version": "22.4.4", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-22.4.4.tgz", + "integrity": "sha512-I9dsgkeyjVEEZj9wrGrqlH+8OlNob9Iptyl+6L5+ToOLJmHm4JwOPatin1b2Bzp5R5YRQJ+oiedx7o1H7wJzhA==", + "dev": true, + "requires": { + "ansi-escapes": "^3.0.0", + "chalk": "^2.0.1", + "exit": "^0.1.2", + "glob": "^7.1.2", + "graceful-fs": "^4.1.11", + "import-local": "^1.0.0", + "is-ci": "^1.0.10", + "istanbul-api": "^1.1.14", + "istanbul-lib-coverage": "^1.1.1", + "istanbul-lib-instrument": "^1.8.0", + "istanbul-lib-source-maps": "^1.2.1", + "jest-changed-files": "^22.2.0", + "jest-config": "^22.4.4", + "jest-environment-jsdom": "^22.4.1", + "jest-get-type": "^22.1.0", + "jest-haste-map": "^22.4.2", + "jest-message-util": "^22.4.0", + "jest-regex-util": "^22.1.0", + "jest-resolve-dependencies": "^22.1.0", + "jest-runner": "^22.4.4", + "jest-runtime": "^22.4.4", + "jest-snapshot": "^22.4.0", + "jest-util": "^22.4.1", + "jest-validate": "^22.4.4", + "jest-worker": "^22.2.2", + "micromatch": "^2.3.11", + "node-notifier": "^5.2.1", + "realpath-native": "^1.0.0", + "rimraf": "^2.5.4", + "slash": "^1.0.0", + "string-length": "^2.0.0", + "strip-ansi": "^4.0.0", + "which": "^1.2.12", + "yargs": "^10.0.3" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "jest-changed-files": { + "version": "22.4.3", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-22.4.3.tgz", + "integrity": "sha512-83Dh0w1aSkUNFhy5d2dvqWxi/y6weDwVVLU6vmK0cV9VpRxPzhTeGimbsbRDSnEoszhF937M4sDLLeS7Cu/Tmw==", + "dev": true, + "requires": { + "throat": "^4.0.0" + } + }, + "jest-config": { + "version": "22.4.4", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-22.4.4.tgz", + "integrity": "sha512-9CKfo1GC4zrXSoMLcNeDvQBfgtqGTB1uP8iDIZ97oB26RCUb886KkKWhVcpyxVDOUxbhN+uzcBCeFe7w+Iem4A==", + "dev": true, + "requires": { + "chalk": "^2.0.1", + "glob": "^7.1.1", + "jest-environment-jsdom": "^22.4.1", + "jest-environment-node": "^22.4.1", + "jest-get-type": "^22.1.0", + "jest-jasmine2": "^22.4.4", + "jest-regex-util": "^22.1.0", + "jest-resolve": "^22.4.2", + "jest-util": "^22.4.1", + "jest-validate": "^22.4.4", + "pretty-format": "^22.4.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "jest-diff": { + "version": "22.4.3", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-22.4.3.tgz", + "integrity": "sha512-/QqGvCDP5oZOF6PebDuLwrB2BMD8ffJv6TAGAdEVuDx1+uEgrHpSFrfrOiMRx2eJ1hgNjlQrOQEHetVwij90KA==", + "dev": true, + "requires": { + "chalk": "^2.0.1", + "diff": "^3.2.0", + "jest-get-type": "^22.4.3", + "pretty-format": "^22.4.3" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "diff": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", + "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "jest-docblock": { + "version": "22.4.3", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-22.4.3.tgz", + "integrity": "sha512-uPKBEAw7YrEMcXueMKZXn/rbMxBiSv48fSqy3uEnmgOlQhSX+lthBqHb1fKWNVmFqAp9E/RsSdBfiV31LbzaOg==", + "dev": true, + "requires": { + "detect-newline": "^2.1.0" + } + }, + "jest-environment-jsdom": { + "version": "22.4.3", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-22.4.3.tgz", + "integrity": "sha512-FviwfR+VyT3Datf13+ULjIMO5CSeajlayhhYQwpzgunswoaLIPutdbrnfUHEMyJCwvqQFaVtTmn9+Y8WCt6n1w==", + "dev": true, + "requires": { + "jest-mock": "^22.4.3", + "jest-util": "^22.4.3", + "jsdom": "^11.5.1" + } + }, + "jest-environment-node": { + "version": "22.4.3", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-22.4.3.tgz", + "integrity": "sha512-reZl8XF6t/lMEuPWwo9OLfttyC26A5AMgDyEQ6DBgZuyfyeNUzYT8BFo6uxCCP/Av/b7eb9fTi3sIHFPBzmlRA==", + "dev": true, + "requires": { + "jest-mock": "^22.4.3", + "jest-util": "^22.4.3" + } + }, + "jest-enzyme": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/jest-enzyme/-/jest-enzyme-4.0.2.tgz", + "integrity": "sha512-DCYrg14VMxWK1qRFXnuy8jaJMSOITkEZAVi8EVOP1mDbLTXGn0oQoSwm7p/pA1zDiqXJF1NhO17xhggdHSrsDw==", + "dev": true, + "requires": { + "enzyme-matchers": "^4.0.2", + "enzyme-to-json": "^3.3.0" + } + }, + "jest-get-type": { + "version": "22.4.3", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-22.4.3.tgz", + "integrity": "sha512-/jsz0Y+V29w1chdXVygEKSz2nBoHoYqNShPe+QgxSNjAuP1i8+k4LbQNrfoliKej0P45sivkSCh7yiD6ubHS3w==", + "dev": true + }, + "jest-haste-map": { + "version": "22.4.3", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-22.4.3.tgz", + "integrity": "sha512-4Q9fjzuPVwnaqGKDpIsCSoTSnG3cteyk2oNVjBX12HHOaF1oxql+uUiqZb5Ndu7g/vTZfdNwwy4WwYogLh29DQ==", + "dev": true, + "requires": { + "fb-watchman": "^2.0.0", + "graceful-fs": "^4.1.11", + "jest-docblock": "^22.4.3", + "jest-serializer": "^22.4.3", + "jest-worker": "^22.4.3", + "micromatch": "^2.3.11", + "sane": "^2.0.0" + } + }, + "jest-jasmine2": { + "version": "22.4.4", + "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-22.4.4.tgz", + "integrity": "sha512-nK3vdUl50MuH7vj/8at7EQVjPGWCi3d5+6aCi7Gxy/XMWdOdbH1qtO/LjKbqD8+8dUAEH+BVVh7HkjpCWC1CSw==", + "dev": true, + "requires": { + "chalk": "^2.0.1", + "co": "^4.6.0", + "expect": "^22.4.0", + "graceful-fs": "^4.1.11", + "is-generator-fn": "^1.0.0", + "jest-diff": "^22.4.0", + "jest-matcher-utils": "^22.4.0", + "jest-message-util": "^22.4.0", + "jest-snapshot": "^22.4.0", + "jest-util": "^22.4.1", + "source-map-support": "^0.5.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "expect": { + "version": "22.4.3", + "resolved": "https://registry.npmjs.org/expect/-/expect-22.4.3.tgz", + "integrity": "sha512-XcNXEPehqn8b/jm8FYotdX0YrXn36qp4HWlrVT4ktwQas1l1LPxiVWncYnnL2eyMtKAmVIaG0XAp0QlrqJaxaA==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.0", + "jest-diff": "^22.4.3", + "jest-get-type": "^22.4.3", + "jest-matcher-utils": "^22.4.3", + "jest-message-util": "^22.4.3", + "jest-regex-util": "^22.4.3" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "source-map-support": { + "version": "0.5.12", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.12.tgz", + "integrity": "sha512-4h2Pbvyy15EE02G+JOZpUCmqWJuqrs+sEkzewTm++BPi7Hvn/HwcqLAcNxYAyI0x13CpPPn+kMjl+hplXMHITQ==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "jest-leak-detector": { + "version": "22.4.3", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-22.4.3.tgz", + "integrity": "sha512-NZpR/Ls7+ndO57LuXROdgCGz2RmUdC541tTImL9bdUtU3WadgFGm0yV+Ok4Fuia/1rLAn5KaJ+i76L6e3zGJYQ==", + "dev": true, + "requires": { + "pretty-format": "^22.4.3" + } + }, + "jest-matcher-utils": { + "version": "22.4.3", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-22.4.3.tgz", + "integrity": "sha512-lsEHVaTnKzdAPR5t4B6OcxXo9Vy4K+kRRbG5gtddY8lBEC+Mlpvm1CJcsMESRjzUhzkz568exMV1hTB76nAKbA==", + "dev": true, + "requires": { + "chalk": "^2.0.1", + "jest-get-type": "^22.4.3", + "pretty-format": "^22.4.3" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "jest-message-util": { + "version": "22.4.3", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-22.4.3.tgz", + "integrity": "sha512-iAMeKxhB3Se5xkSjU0NndLLCHtP4n+GtCqV0bISKA5dmOXQfEbdEmYiu2qpnWBDCQdEafNDDU6Q+l6oBMd/+BA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0-beta.35", + "chalk": "^2.0.1", + "micromatch": "^2.3.11", + "slash": "^1.0.0", + "stack-utils": "^1.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "jest-mock": { + "version": "22.4.3", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-22.4.3.tgz", + "integrity": "sha512-+4R6mH5M1G4NK16CKg9N1DtCaFmuxhcIqF4lQK/Q1CIotqMs/XBemfpDPeVZBFow6iyUNu6EBT9ugdNOTT5o5Q==", + "dev": true + }, + "jest-regex-util": { + "version": "22.4.3", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-22.4.3.tgz", + "integrity": "sha512-LFg1gWr3QinIjb8j833bq7jtQopiwdAs67OGfkPrvy7uNUbVMfTXXcOKXJaeY5GgjobELkKvKENqq1xrUectWg==", + "dev": true + }, + "jest-resolve": { + "version": "22.4.3", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-22.4.3.tgz", + "integrity": "sha512-u3BkD/MQBmwrOJDzDIaxpyqTxYH+XqAXzVJP51gt29H8jpj3QgKof5GGO2uPGKGeA1yTMlpbMs1gIQ6U4vcRhw==", + "dev": true, + "requires": { + "browser-resolve": "^1.11.2", + "chalk": "^2.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "jest-resolve-dependencies": { + "version": "22.4.3", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-22.4.3.tgz", + "integrity": "sha512-06czCMVToSN8F2U4EvgSB1Bv/56gc7MpCftZ9z9fBgUQM7dzHGCMBsyfVA6dZTx8v0FDcnALf7hupeQxaBCvpA==", + "dev": true, + "requires": { + "jest-regex-util": "^22.4.3" + } + }, + "jest-runner": { + "version": "22.4.4", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-22.4.4.tgz", + "integrity": "sha512-5S/OpB51igQW9xnkM5Tgd/7ZjiAuIoiJAVtvVTBcEBiXBIFzWM3BAMPBM19FX68gRV0KWyFuGKj0EY3M3aceeQ==", + "dev": true, + "requires": { + "exit": "^0.1.2", + "jest-config": "^22.4.4", + "jest-docblock": "^22.4.0", + "jest-haste-map": "^22.4.2", + "jest-jasmine2": "^22.4.4", + "jest-leak-detector": "^22.4.0", + "jest-message-util": "^22.4.0", + "jest-runtime": "^22.4.4", + "jest-util": "^22.4.1", + "jest-worker": "^22.2.2", + "throat": "^4.0.0" + } + }, + "jest-runtime": { + "version": "22.4.4", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-22.4.4.tgz", + "integrity": "sha512-WRTj9m///npte1YjuphCYX7GRY/c2YvJImU9t7qOwFcqHr4YMzmX6evP/3Sehz5DKW2Vi8ONYPCFWe36JVXxfw==", + "dev": true, + "requires": { + "babel-core": "^6.0.0", + "babel-jest": "^22.4.4", + "babel-plugin-istanbul": "^4.1.5", + "chalk": "^2.0.1", + "convert-source-map": "^1.4.0", + "exit": "^0.1.2", + "graceful-fs": "^4.1.11", + "jest-config": "^22.4.4", + "jest-haste-map": "^22.4.2", + "jest-regex-util": "^22.1.0", + "jest-resolve": "^22.4.2", + "jest-util": "^22.4.1", + "jest-validate": "^22.4.4", + "json-stable-stringify": "^1.0.1", + "micromatch": "^2.3.11", + "realpath-native": "^1.0.0", + "slash": "^1.0.0", + "strip-bom": "3.0.0", + "write-file-atomic": "^2.1.0", + "yargs": "^10.0.3" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "babel-jest": { + "version": "22.4.4", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-22.4.4.tgz", + "integrity": "sha512-A9NB6/lZhYyypR9ATryOSDcqBaqNdzq4U+CN+/wcMsLcmKkPxQEoTKLajGfd3IkxNyVBT8NewUK2nWyGbSzHEQ==", + "dev": true, + "requires": { + "babel-plugin-istanbul": "^4.1.5", + "babel-preset-jest": "^22.4.4" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "jest-serializer": { + "version": "22.4.3", + "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-22.4.3.tgz", + "integrity": "sha512-uPaUAppx4VUfJ0QDerpNdF43F68eqKWCzzhUlKNDsUPhjOon7ZehR4C809GCqh765FoMRtTVUVnGvIoskkYHiw==", + "dev": true + }, + "jest-snapshot": { + "version": "22.4.3", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-22.4.3.tgz", + "integrity": "sha512-JXA0gVs5YL0HtLDCGa9YxcmmV2LZbwJ+0MfyXBBc5qpgkEYITQFJP7XNhcHFbUvRiniRpRbGVfJrOoYhhGE0RQ==", + "dev": true, + "requires": { + "chalk": "^2.0.1", + "jest-diff": "^22.4.3", + "jest-matcher-utils": "^22.4.3", + "mkdirp": "^0.5.1", + "natural-compare": "^1.4.0", + "pretty-format": "^22.4.3" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "jest-util": { + "version": "22.4.3", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-22.4.3.tgz", + "integrity": "sha512-rfDfG8wyC5pDPNdcnAlZgwKnzHvZDu8Td2NJI/jAGKEGxJPYiE4F0ss/gSAkG4778Y23Hvbz+0GMrDJTeo7RjQ==", + "dev": true, + "requires": { + "callsites": "^2.0.0", + "chalk": "^2.0.1", + "graceful-fs": "^4.1.11", + "is-ci": "^1.0.10", + "jest-message-util": "^22.4.3", + "mkdirp": "^0.5.1", + "source-map": "^0.6.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "jest-validate": { + "version": "22.4.4", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-22.4.4.tgz", + "integrity": "sha512-dmlf4CIZRGvkaVg3fa0uetepcua44DHtktHm6rcoNVtYlpwe6fEJRkMFsaUVcFHLzbuBJ2cPw9Gl9TKfnzMVwg==", + "dev": true, + "requires": { + "chalk": "^2.0.1", + "jest-config": "^22.4.4", + "jest-get-type": "^22.1.0", + "leven": "^2.1.0", + "pretty-format": "^22.4.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "jest-worker": { + "version": "22.4.3", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-22.4.3.tgz", + "integrity": "sha512-B1ucW4fI8qVAuZmicFxI1R3kr2fNeYJyvIQ1rKcuLYnenFV5K5aMbxFj6J0i00Ju83S8jP2d7Dz14+AvbIHRYQ==", + "dev": true, + "requires": { + "merge-stream": "^1.0.1" + } + }, + "js-base64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.5.1.tgz", + "integrity": "sha512-M7kLczedRMYX4L8Mdh4MzyAMM9O5osx+4FcOQuTvr3A9F2D9S5JXheN0ewNbrvK2UatkTRhL5ejGmGSjNMiZuw==", + "dev": true + }, + "js-beautify": { + "version": "1.6.4", + "resolved": "https://registry.npmjs.org/js-beautify/-/js-beautify-1.6.4.tgz", + "integrity": "sha1-qa95aZdCrJobb93B/bx4vE1RX8M=", + "dev": true, + "requires": { + "config-chain": "~1.1.5", + "editorconfig": "^0.13.2", + "mkdirp": "~0.5.0", + "nopt": "~3.0.1" + } + }, + "js-tokens": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.1.tgz", + "integrity": "sha1-COnxMkhKLEWjCQfp3E1VZ7fxFNc=" + }, + "js-yaml": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.7.0.tgz", + "integrity": "sha1-XJZ93YN6m/3KXy3oQlOr6KHAO4A=", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^2.6.0" + } + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "dev": true + }, + "jsdom": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-11.12.0.tgz", + "integrity": "sha512-y8Px43oyiBM13Zc1z780FrfNLJCXTL40EWlty/LXUtcjykRBNgLlCjWXpfSPBl2iv+N7koQN+dvqszHZgT/Fjw==", + "dev": true, + "requires": { + "abab": "^2.0.0", + "acorn": "^5.5.3", + "acorn-globals": "^4.1.0", + "array-equal": "^1.0.0", + "cssom": ">= 0.3.2 < 0.4.0", + "cssstyle": "^1.0.0", + "data-urls": "^1.0.0", + "domexception": "^1.0.1", + "escodegen": "^1.9.1", + "html-encoding-sniffer": "^1.0.2", + "left-pad": "^1.3.0", + "nwsapi": "^2.0.7", + "parse5": "4.0.0", + "pn": "^1.1.0", + "request": "^2.87.0", + "request-promise-native": "^1.0.5", + "sax": "^1.2.4", + "symbol-tree": "^3.2.2", + "tough-cookie": "^2.3.4", + "w3c-hr-time": "^1.0.1", + "webidl-conversions": "^4.0.2", + "whatwg-encoding": "^1.0.3", + "whatwg-mimetype": "^2.1.0", + "whatwg-url": "^6.4.1", + "ws": "^5.2.0", + "xml-name-validator": "^3.0.0" + }, + "dependencies": { + "acorn": { + "version": "5.7.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.3.tgz", + "integrity": "sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw==", + "dev": true + }, + "parse5": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-4.0.0.tgz", + "integrity": "sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA==", + "dev": true + } + } + }, + "jsesc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", + "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", + "dev": true + }, + "json-loader": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/json-loader/-/json-loader-0.5.4.tgz", + "integrity": "sha1-i6oTZaYy9Yo8RtIBdfxgAsluN94=" + }, + "json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==" + }, + "json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "dev": true + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + }, + "json-stable-stringify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", + "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", + "dev": true, + "requires": { + "jsonify": "~0.0.0" + } + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "dev": true + }, + "json3": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.3.tgz", + "integrity": "sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA==", + "dev": true + }, + "json5": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", + "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=" + }, + "jsonify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", + "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", + "dev": true + }, + "jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "jwt-decode": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/jwt-decode/-/jwt-decode-2.2.0.tgz", + "integrity": "sha1-fYa9VmefWM5qhHBKZX3TkruoGnk=" + }, + "keycode": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/keycode/-/keycode-2.2.0.tgz", + "integrity": "sha1-PQr1bce4uOXLqNCpfxByBO7CKwQ=" + }, + "killable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/killable/-/killable-1.0.1.tgz", + "integrity": "sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg==", + "dev": true + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + }, + "lcid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "dev": true, + "requires": { + "invert-kv": "^1.0.0" + } + }, + "left-pad": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/left-pad/-/left-pad-1.3.0.tgz", + "integrity": "sha512-XI5MPzVNApjAyhQzphX8BkmKsKUxD4LdyK24iZeQGinBN9yTQT3bFlCBy/aVx2HrNcqQGsdot8ghrjyrvMCoEA==", + "dev": true + }, + "less": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/less/-/less-3.9.0.tgz", + "integrity": "sha512-31CmtPEZraNUtuUREYjSqRkeETFdyEHSEPAGq4erDlUXtda7pzNmctdljdIagSb589d/qXGWiiP31R5JVf+v0w==", + "dev": true, + "requires": { + "clone": "^2.1.2", + "errno": "^0.1.1", + "graceful-fs": "^4.1.2", + "image-size": "~0.5.0", + "mime": "^1.4.1", + "mkdirp": "^0.5.0", + "promise": "^7.1.1", + "request": "^2.83.0", + "source-map": "~0.6.0" + }, + "dependencies": { + "clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "optional": true + } + } + }, + "less-loader": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/less-loader/-/less-loader-4.1.0.tgz", + "integrity": "sha512-KNTsgCE9tMOM70+ddxp9yyt9iHqgmSs0yTZc5XH5Wo+g80RWRIYNqE58QJKm/yMud5wZEvz50ugRDuzVIkyahg==", + "dev": true, + "requires": { + "clone": "^2.1.1", + "loader-utils": "^1.1.0", + "pify": "^3.0.0" + }, + "dependencies": { + "clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=", + "dev": true + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + } + } + }, + "leven": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-2.1.0.tgz", + "integrity": "sha1-wuep93IJTe6dNCAq6KzORoeHVYA=", + "dev": true + }, + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + } + }, + "load-json-file": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "strip-bom": "^2.0.0" + } + }, + "loader-runner": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz", + "integrity": "sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==" + }, + "loader-utils": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz", + "integrity": "sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0=", + "requires": { + "big.js": "^3.1.3", + "emojis-list": "^2.0.0", + "json5": "^0.5.0" + } + }, + "local-storage-fallback": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/local-storage-fallback/-/local-storage-fallback-4.0.2.tgz", + "integrity": "sha512-UwFa0NLIYGhSp/yX1jztJGu7pigOCp2S58RzQeqM7eWQqsmNLZTjIyMM4Y9uydDTCSB2mEEMgE2Q9uprhDwxAA==", + "requires": { + "cookie": "^0.3.1" + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, + "lodash": { + "version": "4.17.14", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.14.tgz", + "integrity": "sha512-mmKYbW3GLuJeX+iGP+Y7Gp1AiGHGbXHCOh/jZmrawMmsE7MS4znI3RL2FsjbqOyMayHInjOeykW7PEajUk1/xw==" + }, + "lodash-es": { + "version": "4.17.14", + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.14.tgz", + "integrity": "sha512-7zchRrGa8UZXjD/4ivUWP1867jDkhzTG2c/uj739utSd7O/pFFdxspCemIFKEEjErbcqRzn8nKnGsi7mvTgRPA==" + }, + "lodash._baseisequal": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/lodash._baseisequal/-/lodash._baseisequal-3.0.7.tgz", + "integrity": "sha1-2AJfdjOdKTQnZ9zIh85cuVpbUfE=", + "dev": true, + "requires": { + "lodash.isarray": "^3.0.0", + "lodash.istypedarray": "^3.0.0", + "lodash.keys": "^3.0.0" + } + }, + "lodash._bindcallback": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/lodash._bindcallback/-/lodash._bindcallback-3.0.1.tgz", + "integrity": "sha1-5THCdkTPi1epnhftlbNcdIeJOS4=", + "dev": true + }, + "lodash._createcompounder": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._createcompounder/-/lodash._createcompounder-3.0.0.tgz", + "integrity": "sha1-XdLLVTctbnDg4jkvsjBNZjEJEHU=", + "dev": true, + "requires": { + "lodash.deburr": "^3.0.0", + "lodash.words": "^3.0.0" + } + }, + "lodash._getnative": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz", + "integrity": "sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U=", + "dev": true + }, + "lodash._root": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/lodash._root/-/lodash._root-3.0.1.tgz", + "integrity": "sha1-+6HEUkwZ7ppfgTa0YJ8BfPTe1pI=", + "dev": true + }, + "lodash.camelcase": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-3.0.1.tgz", + "integrity": "sha1-kyyLh/ikN3iXxnGXUzKC+Xrqwpg=", + "dev": true, + "requires": { + "lodash._createcompounder": "^3.0.0" + } + }, + "lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=" + }, + "lodash.deburr": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/lodash.deburr/-/lodash.deburr-3.2.0.tgz", + "integrity": "sha1-baj1QzSjZqfPTEx2742Aqhs2XtU=", + "dev": true, + "requires": { + "lodash._root": "^3.0.0" + } + }, + "lodash.escape": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.escape/-/lodash.escape-4.0.1.tgz", + "integrity": "sha1-yQRGkMIeBClL6qUXcS/e0fqI3pg=", + "dev": true + }, + "lodash.flattendeep": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz", + "integrity": "sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI=", + "dev": true + }, + "lodash.isarguments": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", + "integrity": "sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo=", + "dev": true + }, + "lodash.isarray": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz", + "integrity": "sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U=", + "dev": true + }, + "lodash.isequal": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-3.0.4.tgz", + "integrity": "sha1-HDXrO27wzR/1F0Pj6jz3/f/ay2Q=", + "dev": true, + "requires": { + "lodash._baseisequal": "^3.0.0", + "lodash._bindcallback": "^3.0.0" + } + }, + "lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=" + }, + "lodash.istypedarray": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/lodash.istypedarray/-/lodash.istypedarray-3.0.6.tgz", + "integrity": "sha1-yaR3SYYHUB2OhJTSg7h8OSgc72I=", + "dev": true + }, + "lodash.keys": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz", + "integrity": "sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo=", + "dev": true, + "requires": { + "lodash._getnative": "^3.0.0", + "lodash.isarguments": "^3.0.0", + "lodash.isarray": "^3.0.0" + } + }, + "lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=", + "dev": true + }, + "lodash.sortby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", + "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=", + "dev": true + }, + "lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=", + "dev": true + }, + "lodash.words": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/lodash.words/-/lodash.words-3.2.0.tgz", + "integrity": "sha1-TiqGSbwIdFsXxpWxo86P7llmI7M=", + "dev": true, + "requires": { + "lodash._root": "^3.0.0" + } + }, + "loglevel": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.2.tgz", + "integrity": "sha512-Jt2MHrCNdtIe1W6co3tF5KXGRkzF+TYffiQstfXa04mrss9IKXzAAXYWak8LbZseAQY03sH2GzMCMU0ZOUc9bg==", + "dev": true + }, + "loose-envify": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", + "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=", + "requires": { + "js-tokens": "^3.0.0" + } + }, + "lower-case": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", + "integrity": "sha1-miyr0bno4K6ZOkv31YdcOcQujqw=", + "dev": true + }, + "lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "dev": true, + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + }, + "dependencies": { + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "dev": true + } + } + }, + "make-dir": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", + "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", + "dev": true, + "requires": { + "pify": "^3.0.0" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + } + } + }, + "makeerror": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.11.tgz", + "integrity": "sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw=", + "dev": true, + "requires": { + "tmpl": "1.0.x" + } + }, + "map-age-cleaner": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", + "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", + "dev": true, + "requires": { + "p-defer": "^1.0.0" + } + }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=" + }, + "map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "requires": { + "object-visit": "^1.0.0" + } + }, + "material-design-iconic-font": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/material-design-iconic-font/-/material-design-iconic-font-2.2.0.tgz", + "integrity": "sha1-ZsOxyIDvDLh8AsoqD5AP8P5/SA0=" + }, + "math-expression-evaluator": { + "version": "1.2.17", + "resolved": "https://registry.npmjs.org/math-expression-evaluator/-/math-expression-evaluator-1.2.17.tgz", + "integrity": "sha1-3oGf282E3M2PrlnGrreWFbnSZqw=", + "dev": true + }, + "math-random": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/math-random/-/math-random-1.0.4.tgz", + "integrity": "sha512-rUxjysqif/BZQH2yhd5Aaq7vXMSx9NdEsQcyA07uEzIvxgI7zIr33gGsh+RU0/XjmQpCW7RsVof1vlkvQVCK5A==", + "dev": true + }, + "md5.js": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", + "dev": true + }, + "mem": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", + "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", + "dev": true, + "requires": { + "mimic-fn": "^1.0.0" + } + }, + "memory-fs": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", + "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + }, + "merge": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/merge/-/merge-1.2.1.tgz", + "integrity": "sha512-VjFo4P5Whtj4vsLzsYBu5ayHhoHJ0UqNm7ibvShmbmoz7tGi0vXaoJbGdB+GmDMLUdg8DpQXEIeVDAe8MaABvQ==", + "dev": true + }, + "merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=", + "dev": true + }, + "merge-stream": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-1.0.1.tgz", + "integrity": "sha1-QEEgLVCKNCugAXQAjfDCUbjBNeE=", + "dev": true, + "requires": { + "readable-stream": "^2.0.1" + } + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" + }, + "micromatch": { + "version": "2.3.11", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", + "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", + "dev": true, + "requires": { + "arr-diff": "^2.0.0", + "array-unique": "^0.2.1", + "braces": "^1.8.2", + "expand-brackets": "^0.1.4", + "extglob": "^0.3.1", + "filename-regex": "^2.0.0", + "is-extglob": "^1.0.0", + "is-glob": "^2.0.1", + "kind-of": "^3.0.2", + "normalize-path": "^2.0.1", + "object.omit": "^2.0.0", + "parse-glob": "^3.0.4", + "regex-cache": "^0.4.2" + }, + "dependencies": { + "arr-diff": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", + "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", + "dev": true, + "requires": { + "arr-flatten": "^1.0.1" + } + }, + "array-unique": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", + "dev": true + }, + "braces": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", + "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", + "dev": true, + "requires": { + "expand-range": "^1.8.1", + "preserve": "^0.2.0", + "repeat-element": "^1.1.2" + } + } + } + }, + "miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "requires": { + "bn.js": "^4.0.0", + "brorand": "^1.0.1" + } + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" + }, + "mime-db": { + "version": "1.28.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.28.0.tgz", + "integrity": "sha1-/t00m+BtKGW3/FfYN8beTxfXrDw=" + }, + "mime-types": { + "version": "2.1.15", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.15.tgz", + "integrity": "sha1-pOv1BkCUVpI3uM9wBGd20J/JKu0=", + "requires": { + "mime-db": "~1.27.0" + }, + "dependencies": { + "mime-db": { + "version": "1.27.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.27.0.tgz", + "integrity": "sha1-gg9XIpa70g7CXtVeW13oaeVDbrE=" + } + } + }, + "mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "dev": true + }, + "minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" + }, + "minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=" + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" + }, + "mississippi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-2.0.0.tgz", + "integrity": "sha512-zHo8v+otD1J10j/tC+VNoGK9keCuByhKovAvdn74dmxJl9+mWHnx6EMsDN4lgRoMI/eYo2nchAxniIbUPb5onw==", + "dev": true, + "requires": { + "concat-stream": "^1.5.0", + "duplexify": "^3.4.2", + "end-of-stream": "^1.1.0", + "flush-write-stream": "^1.0.0", + "from2": "^2.1.0", + "parallel-transform": "^1.1.0", + "pump": "^2.0.1", + "pumpify": "^1.3.3", + "stream-each": "^1.1.0", + "through2": "^2.0.0" + } + }, + "mixin-deep": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz", + "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==", + "requires": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "requires": { + "minimist": "0.0.8" + }, + "dependencies": { + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" + } + } + }, + "moment": { + "version": "2.24.0", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.24.0.tgz", + "integrity": "sha512-bV7f+6l2QigeBBZSM/6yTNq4P2fNpSWj/0e7jQcy87A8e7o2nAfP/34/2ky5Vw4B9S446EtIhodAzkFCcR4dQg==" + }, + "moo": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/moo/-/moo-0.4.3.tgz", + "integrity": "sha512-gFD2xGCl8YFgGHsqJ9NKRVdwlioeW3mI1iqfLNYQOv0+6JRwG58Zk9DIGQgyIaffSYaO1xsKnMaYzzNr1KyIAw==", + "dev": true + }, + "mout": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/mout/-/mout-1.1.0.tgz", + "integrity": "sha512-XsP0vf4As6BfqglxZqbqQ8SR6KQot2AgxvR0gG+WtUkf90vUXchMOZQtPf/Hml1rEffJupqL/tIrU6EYhsUQjw==", + "dev": true + }, + "move-concurrently": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", + "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=", + "requires": { + "aproba": "^1.1.1", + "copy-concurrently": "^1.0.0", + "fs-write-stream-atomic": "^1.0.8", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.3" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "multicast-dns": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.3.tgz", + "integrity": "sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==", + "dev": true, + "requires": { + "dns-packet": "^1.3.1", + "thunky": "^1.0.2" + } + }, + "multicast-dns-service-types": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz", + "integrity": "sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=", + "dev": true + }, + "mute-stream": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", + "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", + "dev": true + }, + "nan": { + "version": "2.14.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz", + "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==", + "optional": true + }, + "nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" + } + } + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "dev": true + }, + "nearley": { + "version": "2.16.0", + "resolved": "https://registry.npmjs.org/nearley/-/nearley-2.16.0.tgz", + "integrity": "sha512-Tr9XD3Vt/EujXbZBv6UAHYoLUSMQAxSsTnm9K3koXzjzNWY195NqALeyrzLZBKzAkL3gl92BcSogqrHjD8QuUg==", + "dev": true, + "requires": { + "commander": "^2.19.0", + "moo": "^0.4.3", + "railroad-diagrams": "^1.0.0", + "randexp": "0.4.6", + "semver": "^5.4.1" + } + }, + "negotiator": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", + "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==", + "dev": true + }, + "neo-async": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.1.tgz", + "integrity": "sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==" + }, + "nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true + }, + "no-case": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz", + "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==", + "dev": true, + "requires": { + "lower-case": "^1.1.1" + } + }, + "node-fetch": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.6.3.tgz", + "integrity": "sha1-3CNO3WSJmC1Y6PDbT2lQKavNjAQ=", + "requires": { + "encoding": "^0.1.11", + "is-stream": "^1.0.1" + } + }, + "node-forge": { + "version": "0.7.5", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.7.5.tgz", + "integrity": "sha512-MmbQJ2MTESTjt3Gi/3yG1wGpIMhUfcIypUCGtTizFR9IiccFwxSpfp0vtIZlkFclEqERemxfnSdZEMR9VqqEFQ==", + "dev": true + }, + "node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=", + "dev": true + }, + "node-libs-browser": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.0.tgz", + "integrity": "sha512-5MQunG/oyOaBdttrL40dA7bUfPORLRWMUJLQtMg7nluxUvk5XwnLdL9twQHFAjRx/y7mIMkLKT9++qPbbk6BZA==", + "requires": { + "assert": "^1.1.1", + "browserify-zlib": "^0.2.0", + "buffer": "^4.3.0", + "console-browserify": "^1.1.0", + "constants-browserify": "^1.0.0", + "crypto-browserify": "^3.11.0", + "domain-browser": "^1.1.1", + "events": "^3.0.0", + "https-browserify": "^1.0.0", + "os-browserify": "^0.3.0", + "path-browserify": "0.0.0", + "process": "^0.11.10", + "punycode": "^1.2.4", + "querystring-es3": "^0.2.0", + "readable-stream": "^2.3.3", + "stream-browserify": "^2.0.1", + "stream-http": "^2.7.2", + "string_decoder": "^1.0.0", + "timers-browserify": "^2.0.4", + "tty-browserify": "0.0.0", + "url": "^0.11.0", + "util": "^0.11.0", + "vm-browserify": "0.0.4" + } + }, + "node-notifier": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-5.4.0.tgz", + "integrity": "sha512-SUDEb+o71XR5lXSTyivXd9J7fCloE3SyP4lSgt3lU2oSANiox+SxlNRGPjDKrwU1YN3ix2KN/VGGCg0t01rttQ==", + "dev": true, + "requires": { + "growly": "^1.3.0", + "is-wsl": "^1.1.0", + "semver": "^5.5.0", + "shellwords": "^0.1.1", + "which": "^1.3.0" + } + }, + "nopt": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", + "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", + "dev": true, + "requires": { + "abbrev": "1" + } + }, + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "requires": { + "remove-trailing-separator": "^1.0.1" + } + }, + "normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=", + "dev": true + }, + "normalize-url": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-1.9.1.tgz", + "integrity": "sha1-LMDWazHqIwNkWENuNiDYWVTGbDw=", + "dev": true, + "requires": { + "object-assign": "^4.0.1", + "prepend-http": "^1.0.0", + "query-string": "^4.1.0", + "sort-keys": "^1.0.0" + } + }, + "npm-path": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/npm-path/-/npm-path-1.1.0.tgz", + "integrity": "sha1-BHSuAEGcMn1UcBt88s0F3Ii+EUA=", + "dev": true, + "requires": { + "which": "^1.2.4" + } + }, + "npm-run": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/npm-run/-/npm-run-3.0.0.tgz", + "integrity": "sha1-Vokg+ECpj9jiKZ22ayYW4kdsr2k=", + "dev": true, + "requires": { + "minimist": "^1.1.1", + "npm-path": "^1.0.1", + "npm-which": "^2.0.0", + "serializerr": "^1.0.1", + "sync-exec": "^0.6.2" + } + }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "dev": true, + "requires": { + "path-key": "^2.0.0" + } + }, + "npm-which": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/npm-which/-/npm-which-2.0.0.tgz", + "integrity": "sha1-DEaYIWC3gwk2YdHQG9RJbS/qu6w=", + "dev": true, + "requires": { + "commander": "^2.2.0", + "npm-path": "^1.0.0", + "which": "^1.0.5" + } + }, + "nth-check": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", + "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", + "dev": true, + "requires": { + "boolbase": "~1.0.0" + } + }, + "num2fraction": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", + "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=", + "dev": true + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "dev": true + }, + "nwsapi": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.1.4.tgz", + "integrity": "sha512-iGfd9Y6SFdTNldEy2L0GUhcarIutFmk+MPWIn9dmj8NMIup03G08uUF2KGbbmv/Ux4RT0VZJoP/sVbWA6d/VIw==", + "dev": true + }, + "oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + }, + "object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "requires": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "requires": { + "kind-of": "^3.0.2" + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "requires": { + "kind-of": "^3.0.2" + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" + } + } + } + } + }, + "object-inspect": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.6.0.tgz", + "integrity": "sha512-GJzfBZ6DgDAmnuaM3104jR4s1Myxr3Y3zfIyN4z3UdqN69oSRacNK8UhnobDdC+7J2AHCjGwxQubNJfE70SXXQ==" + }, + "object-is": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.0.1.tgz", + "integrity": "sha1-CqYOyZiaCz7Xlc9NBvYs8a1lObY=", + "dev": true + }, + "object-keys": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.11.tgz", + "integrity": "sha1-xUYBd4rVYPEULODgG8yotW0TQm0=" + }, + "object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "requires": { + "isobject": "^3.0.0" + } + }, + "object.assign": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", + "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", + "dev": true, + "requires": { + "define-properties": "^1.1.2", + "function-bind": "^1.1.1", + "has-symbols": "^1.0.0", + "object-keys": "^1.0.11" + } + }, + "object.entries": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.0.4.tgz", + "integrity": "sha1-G/mk3SKI9bM/Opk9JXZh8F0WGl8=", + "requires": { + "define-properties": "^1.1.2", + "es-abstract": "^1.6.1", + "function-bind": "^1.1.0", + "has": "^1.0.1" + } + }, + "object.fromentries": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.0.tgz", + "integrity": "sha512-9iLiI6H083uiqUuvzyY6qrlmc/Gz8hLQFOcb/Ri/0xXFkSNS3ctV+CbE6yM2+AnkYfOB3dGjdzC0wrMLIhQICA==", + "dev": true, + "requires": { + "define-properties": "^1.1.2", + "es-abstract": "^1.11.0", + "function-bind": "^1.1.1", + "has": "^1.0.1" + }, + "dependencies": { + "es-abstract": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.13.0.tgz", + "integrity": "sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.0", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "is-callable": "^1.1.4", + "is-regex": "^1.0.4", + "object-keys": "^1.0.12" + } + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true + } + } + }, + "object.getownpropertydescriptors": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz", + "integrity": "sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY=", + "dev": true, + "requires": { + "define-properties": "^1.1.2", + "es-abstract": "^1.5.1" + } + }, + "object.omit": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", + "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", + "dev": true, + "requires": { + "for-own": "^0.1.4", + "is-extendable": "^0.1.1" + } + }, + "object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "requires": { + "isobject": "^3.0.1" + } + }, + "object.values": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.0.tgz", + "integrity": "sha512-8mf0nKLAoFX6VlNVdhGj31SVYpaNFtUnuoOXWyFEstsWRgU837AK+JYM0iAxwkSzGRbwn8cbFmgbyxj1j4VbXg==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.12.0", + "function-bind": "^1.1.1", + "has": "^1.0.3" + }, + "dependencies": { + "es-abstract": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.13.0.tgz", + "integrity": "sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.0", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "is-callable": "^1.1.4", + "is-regex": "^1.0.4", + "object-keys": "^1.0.12" + } + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true + } + } + }, + "obuf": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", + "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", + "dev": true + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "dev": true, + "requires": { + "ee-first": "1.1.1" + } + }, + "on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "dev": true + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "requires": { + "wrappy": "1" + } + }, + "onetime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", + "dev": true, + "requires": { + "mimic-fn": "^1.0.0" + } + }, + "opencollective": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/opencollective/-/opencollective-1.0.3.tgz", + "integrity": "sha1-ruY3K8KBRFg2kMPKja7PwSDdDvE=", + "dev": true, + "requires": { + "babel-polyfill": "6.23.0", + "chalk": "1.1.3", + "inquirer": "3.0.6", + "minimist": "1.2.0", + "node-fetch": "1.6.3", + "opn": "4.0.2" + } + }, + "opn": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/opn/-/opn-4.0.2.tgz", + "integrity": "sha1-erwi5kTf9jsKltWrfyeQwPAavJU=", + "dev": true, + "requires": { + "object-assign": "^4.0.1", + "pinkie-promise": "^2.0.0" + } + }, + "optimist": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", + "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", + "dev": true, + "requires": { + "minimist": "~0.0.1", + "wordwrap": "~0.0.2" + }, + "dependencies": { + "minimist": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", + "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=", + "dev": true + } + } + }, + "optionator": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", + "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", + "dev": true, + "requires": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.4", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "wordwrap": "~1.0.0" + }, + "dependencies": { + "wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", + "dev": true + } + } + }, + "original": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/original/-/original-1.0.2.tgz", + "integrity": "sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg==", + "dev": true, + "requires": { + "url-parse": "^1.4.3" + } + }, + "os-browserify": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", + "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=" + }, + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "dev": true + }, + "os-locale": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", + "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", + "dev": true, + "requires": { + "execa": "^0.7.0", + "lcid": "^1.0.0", + "mem": "^1.1.0" + } + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "dev": true + }, + "output-file-sync": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/output-file-sync/-/output-file-sync-1.1.2.tgz", + "integrity": "sha1-0KM+7+YaIF+suQCS6CZZjVJFznY=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.4", + "mkdirp": "^0.5.1", + "object-assign": "^4.1.0" + } + }, + "p-defer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", + "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=", + "dev": true + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "dev": true + }, + "p-is-promise": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz", + "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==", + "dev": true + }, + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-map": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-1.2.0.tgz", + "integrity": "sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA==", + "dev": true + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true + }, + "pako": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.10.tgz", + "integrity": "sha512-0DTvPVU3ed8+HNXOu5Bs+o//Mbdj9VNQMUOe9oKCwh8l0GNwpTDMKCWbRjgtD291AWnkAgkqA/LOnQS8AmS1tw==" + }, + "parallel-transform": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.1.0.tgz", + "integrity": "sha1-1BDwZbBdojCB/NEPKIVMKb2jOwY=", + "requires": { + "cyclist": "~0.2.2", + "inherits": "^2.0.3", + "readable-stream": "^2.1.5" + } + }, + "param-case": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-2.1.1.tgz", + "integrity": "sha1-35T9jPZTHs915r75oIWPvHK+Ikc=", + "dev": true, + "requires": { + "no-case": "^2.2.0" + } + }, + "parse-asn1": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.4.tgz", + "integrity": "sha512-Qs5duJcuvNExRfFZ99HDD3z4mAi3r9Wl/FOjEOijlxwCZs7E7mW2vjTpgQ4J8LpTF8x5v+1Vn5UQFejmWT11aw==", + "requires": { + "asn1.js": "^4.0.0", + "browserify-aes": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.0", + "pbkdf2": "^3.0.3", + "safe-buffer": "^5.1.1" + } + }, + "parse-glob": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", + "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", + "dev": true, + "requires": { + "glob-base": "^0.3.0", + "is-dotfile": "^1.0.0", + "is-extglob": "^1.0.0", + "is-glob": "^2.0.0" + } + }, + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "dev": true, + "requires": { + "error-ex": "^1.2.0" + } + }, + "parse-passwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", + "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=", + "dev": true + }, + "parse5": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-3.0.3.tgz", + "integrity": "sha512-rgO9Zg5LLLkfJF9E6CCmXlSE4UVceloys8JrFqCcHloC3usd/kJCyPDwH2SOlzix2j3xaP9sUX3e8+kvkuleAA==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "dev": true + }, + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=" + }, + "path-browserify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.0.tgz", + "integrity": "sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo=" + }, + "path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=" + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" + }, + "path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", + "dev": true + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true + }, + "path-parse": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "dev": true + }, + "path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=", + "dev": true + }, + "path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "pbkdf2": { + "version": "3.0.17", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.17.tgz", + "integrity": "sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA==", + "requires": { + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "dev": true + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "dev": true, + "requires": { + "pinkie": "^2.0.0" + } + }, + "pkg-dir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", + "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", + "dev": true, + "requires": { + "find-up": "^2.1.0" + } + }, + "pn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz", + "integrity": "sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==", + "dev": true + }, + "portfinder": { + "version": "1.0.20", + "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.20.tgz", + "integrity": "sha512-Yxe4mTyDzTd59PZJY4ojZR8F+E5e97iq2ZOHPz3HDgSvYC5siNad2tLooQ5y5QHyQhc3xVqvyk/eNA3wuoa7Sw==", + "dev": true, + "requires": { + "async": "^1.5.2", + "debug": "^2.2.0", + "mkdirp": "0.5.x" + } + }, + "posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=" + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" + }, + "dependencies": { + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "^1.0.0" + } + } + } + }, + "postcss-calc": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-5.3.1.tgz", + "integrity": "sha1-d7rnypKK2FcW4v2kLyYb98HWW14=", + "dev": true, + "requires": { + "postcss": "^5.0.2", + "postcss-message-helpers": "^2.0.0", + "reduce-css-calc": "^1.2.6" + } + }, + "postcss-colormin": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-2.2.2.tgz", + "integrity": "sha1-ZjFBfV8OkJo9fsJrJMio0eT5bks=", + "dev": true, + "requires": { + "colormin": "^1.0.5", + "postcss": "^5.0.13", + "postcss-value-parser": "^3.2.3" + } + }, + "postcss-convert-values": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-2.6.1.tgz", + "integrity": "sha1-u9hZPFwf0uPRwyK7kl3K6Nrk1i0=", + "dev": true, + "requires": { + "postcss": "^5.0.11", + "postcss-value-parser": "^3.1.2" + } + }, + "postcss-discard-comments": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-2.0.4.tgz", + "integrity": "sha1-vv6J+v1bPazlzM5Rt2uBUUvgDj0=", + "dev": true, + "requires": { + "postcss": "^5.0.14" + } + }, + "postcss-discard-duplicates": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-2.1.0.tgz", + "integrity": "sha1-uavye4isGIFYpesSq8riAmO5GTI=", + "dev": true, + "requires": { + "postcss": "^5.0.4" + } + }, + "postcss-discard-empty": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-2.1.0.tgz", + "integrity": "sha1-0rS9nVztXr2Nyt52QMfXzX9PkrU=", + "dev": true, + "requires": { + "postcss": "^5.0.14" + } + }, + "postcss-discard-overridden": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-0.1.1.tgz", + "integrity": "sha1-ix6vVU9ob7KIzYdMVWZ7CqNmjVg=", + "dev": true, + "requires": { + "postcss": "^5.0.16" + } + }, + "postcss-discard-unused": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/postcss-discard-unused/-/postcss-discard-unused-2.2.3.tgz", + "integrity": "sha1-vOMLLMWR/8Y0Mitfs0ZLbZNPRDM=", + "dev": true, + "requires": { + "postcss": "^5.0.14", + "uniqs": "^2.0.0" + } + }, + "postcss-filter-plugins": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/postcss-filter-plugins/-/postcss-filter-plugins-2.0.3.tgz", + "integrity": "sha512-T53GVFsdinJhgwm7rg1BzbeBRomOg9y5MBVhGcsV0CxurUdVj1UlPdKtn7aqYA/c/QVkzKMjq2bSV5dKG5+AwQ==", + "dev": true, + "requires": { + "postcss": "^5.0.4" + } + }, + "postcss-merge-idents": { + "version": "2.1.7", + "resolved": "https://registry.npmjs.org/postcss-merge-idents/-/postcss-merge-idents-2.1.7.tgz", + "integrity": "sha1-TFUwMTwI4dWzu/PSu8dH4njuonA=", + "dev": true, + "requires": { + "has": "^1.0.1", + "postcss": "^5.0.10", + "postcss-value-parser": "^3.1.1" + } + }, + "postcss-merge-longhand": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-2.0.2.tgz", + "integrity": "sha1-I9kM0Sewp3mUkVMyc5A0oaTz1lg=", + "dev": true, + "requires": { + "postcss": "^5.0.4" + } + }, + "postcss-merge-rules": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-2.1.2.tgz", + "integrity": "sha1-0d9d+qexrMO+VT8OnhDofGG19yE=", + "dev": true, + "requires": { + "browserslist": "^1.5.2", + "caniuse-api": "^1.5.2", + "postcss": "^5.0.4", + "postcss-selector-parser": "^2.2.2", + "vendors": "^1.0.0" + } + }, + "postcss-message-helpers": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/postcss-message-helpers/-/postcss-message-helpers-2.0.0.tgz", + "integrity": "sha1-pPL0+rbk/gAvCu0ABHjN9S+bpg4=", + "dev": true + }, + "postcss-minify-font-values": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-1.0.5.tgz", + "integrity": "sha1-S1jttWZB66fIR0qzUmyv17vey2k=", + "dev": true, + "requires": { + "object-assign": "^4.0.1", + "postcss": "^5.0.4", + "postcss-value-parser": "^3.0.2" + } + }, + "postcss-minify-gradients": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-1.0.5.tgz", + "integrity": "sha1-Xb2hE3NwP4PPtKPqOIHY11/15uE=", + "dev": true, + "requires": { + "postcss": "^5.0.12", + "postcss-value-parser": "^3.3.0" + } + }, + "postcss-minify-params": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-1.2.2.tgz", + "integrity": "sha1-rSzgcTc7lDs9kwo/pZo1jCjW8fM=", + "dev": true, + "requires": { + "alphanum-sort": "^1.0.1", + "postcss": "^5.0.2", + "postcss-value-parser": "^3.0.2", + "uniqs": "^2.0.0" + } + }, + "postcss-minify-selectors": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-2.1.1.tgz", + "integrity": "sha1-ssapjAByz5G5MtGkllCBFDEXNb8=", + "dev": true, + "requires": { + "alphanum-sort": "^1.0.2", + "has": "^1.0.1", + "postcss": "^5.0.14", + "postcss-selector-parser": "^2.0.0" + } + }, + "postcss-modules-extract-imports": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.2.1.tgz", + "integrity": "sha512-6jt9XZwUhwmRUhb/CkyJY020PYaPJsCyt3UjbaWo6XEbH/94Hmv6MP7fG2C5NDU/BcHzyGYxNtHvM+LTf9HrYw==", + "dev": true, + "requires": { + "postcss": "^6.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "dev": true, + "requires": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "postcss-modules-local-by-default": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-1.2.0.tgz", + "integrity": "sha1-99gMOYxaOT+nlkRmvRlQCn1hwGk=", + "dev": true, + "requires": { + "css-selector-tokenizer": "^0.7.0", + "postcss": "^6.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "css-selector-tokenizer": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.1.tgz", + "integrity": "sha512-xYL0AMZJ4gFzJQsHUKa5jiWWi2vH77WVNg7JYRyewwj6oPh4yb/y6Y9ZCw9dsj/9UauMhtuxR+ogQd//EdEVNA==", + "dev": true, + "requires": { + "cssesc": "^0.1.0", + "fastparse": "^1.1.1", + "regexpu-core": "^1.0.0" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "dev": true, + "requires": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.0" + } + }, + "regexpu-core": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-1.0.0.tgz", + "integrity": "sha1-hqdj9Y7k18L2sQLkdkBQ3n7ZDGs=", + "dev": true, + "requires": { + "regenerate": "^1.2.1", + "regjsgen": "^0.2.0", + "regjsparser": "^0.1.4" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "postcss-modules-scope": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-1.1.0.tgz", + "integrity": "sha1-1upkmUx5+XtipytCb75gVqGUu5A=", + "dev": true, + "requires": { + "css-selector-tokenizer": "^0.7.0", + "postcss": "^6.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "css-selector-tokenizer": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.1.tgz", + "integrity": "sha512-xYL0AMZJ4gFzJQsHUKa5jiWWi2vH77WVNg7JYRyewwj6oPh4yb/y6Y9ZCw9dsj/9UauMhtuxR+ogQd//EdEVNA==", + "dev": true, + "requires": { + "cssesc": "^0.1.0", + "fastparse": "^1.1.1", + "regexpu-core": "^1.0.0" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "dev": true, + "requires": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.0" + } + }, + "regexpu-core": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-1.0.0.tgz", + "integrity": "sha1-hqdj9Y7k18L2sQLkdkBQ3n7ZDGs=", + "dev": true, + "requires": { + "regenerate": "^1.2.1", + "regjsgen": "^0.2.0", + "regjsparser": "^0.1.4" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "postcss-modules-values": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-1.3.0.tgz", + "integrity": "sha1-7P+p1+GSUYOJ9CrQ6D9yrsRW6iA=", + "dev": true, + "requires": { + "icss-replace-symbols": "^1.1.0", + "postcss": "^6.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "dev": true, + "requires": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "postcss-normalize-charset": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-1.1.1.tgz", + "integrity": "sha1-757nEhLX/nWceO0WL2HtYrXLk/E=", + "dev": true, + "requires": { + "postcss": "^5.0.5" + } + }, + "postcss-normalize-url": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-3.0.8.tgz", + "integrity": "sha1-EI90s/L82viRov+j6kWSJ5/HgiI=", + "dev": true, + "requires": { + "is-absolute-url": "^2.0.0", + "normalize-url": "^1.4.0", + "postcss": "^5.0.14", + "postcss-value-parser": "^3.2.3" + } + }, + "postcss-ordered-values": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-2.2.3.tgz", + "integrity": "sha1-7sbCpntsQSqNsgQud/6NpD+VwR0=", + "dev": true, + "requires": { + "postcss": "^5.0.4", + "postcss-value-parser": "^3.0.1" + } + }, + "postcss-reduce-idents": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/postcss-reduce-idents/-/postcss-reduce-idents-2.4.0.tgz", + "integrity": "sha1-wsbSDMlYKE9qv75j92Cb9AkFmtM=", + "dev": true, + "requires": { + "postcss": "^5.0.4", + "postcss-value-parser": "^3.0.2" + } + }, + "postcss-reduce-initial": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-1.0.1.tgz", + "integrity": "sha1-aPgGlfBF0IJjqHmtJA343WT2ROo=", + "dev": true, + "requires": { + "postcss": "^5.0.4" + } + }, + "postcss-reduce-transforms": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-1.0.4.tgz", + "integrity": "sha1-/3b02CEkN7McKYpC0uFEQCV3GuE=", + "dev": true, + "requires": { + "has": "^1.0.1", + "postcss": "^5.0.8", + "postcss-value-parser": "^3.0.1" + } + }, + "postcss-selector-parser": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-2.2.3.tgz", + "integrity": "sha1-+UN3iGBsPJrO4W/+jYsWKX8nu5A=", + "dev": true, + "requires": { + "flatten": "^1.0.2", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + }, + "postcss-svgo": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-2.1.6.tgz", + "integrity": "sha1-tt8YqmE7Zm4TPwittSGcJoSsEI0=", + "dev": true, + "requires": { + "is-svg": "^2.0.0", + "postcss": "^5.0.14", + "postcss-value-parser": "^3.2.3", + "svgo": "^0.7.0" + } + }, + "postcss-unique-selectors": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-2.0.2.tgz", + "integrity": "sha1-mB1X0p3csz57Hf4f1DuGSfkzyh0=", + "dev": true, + "requires": { + "alphanum-sort": "^1.0.1", + "postcss": "^5.0.4", + "uniqs": "^2.0.0" + } + }, + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + }, + "postcss-zindex": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/postcss-zindex/-/postcss-zindex-2.2.0.tgz", + "integrity": "sha1-0hCd3AVbka9n/EyzsCWUZjnSryI=", + "dev": true, + "requires": { + "has": "^1.0.1", + "postcss": "^5.0.4", + "uniqs": "^2.0.0" + } + }, + "prefix-style": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/prefix-style/-/prefix-style-2.0.1.tgz", + "integrity": "sha1-ZrupqHDP2jCKXcIOhekSCTLJWgY=" + }, + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "dev": true + }, + "prepend-http": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", + "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=", + "dev": true + }, + "preserve": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", + "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", + "dev": true + }, + "pretty-error": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-2.1.1.tgz", + "integrity": "sha1-X0+HyPkeWuPzuoerTPXgOxoX8aM=", + "dev": true, + "requires": { + "renderkid": "^2.0.1", + "utila": "~0.4" + } + }, + "pretty-format": { + "version": "22.4.3", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-22.4.3.tgz", + "integrity": "sha512-S4oT9/sT6MN7/3COoOy+ZJeA92VmOnveLHgrwBE3Z1W5N9S2A1QGNYiE1z75DAENbJrXXUb+OWXhpJcg05QKQQ==", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0", + "ansi-styles": "^3.2.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + } + } + }, + "private": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", + "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==", + "dev": true + }, + "process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=" + }, + "process-nextick-args": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", + "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==" + }, + "promise": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", + "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", + "requires": { + "asap": "~2.0.3" + } + }, + "promise-inflight": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=" + }, + "prop-types": { + "version": "15.6.0", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.6.0.tgz", + "integrity": "sha1-zq8IMCL8RrSjX2nhPvda7Q1jmFY=", + "requires": { + "fbjs": "^0.8.16", + "loose-envify": "^1.3.1", + "object-assign": "^4.1.1" + } + }, + "prop-types-exact": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/prop-types-exact/-/prop-types-exact-1.2.0.tgz", + "integrity": "sha512-K+Tk3Kd9V0odiXFP9fwDHUYRyvK3Nun3GVyPapSIs5OBkITAm15W0CPFD/YKTkMUAbc0b9CUwRQp2ybiBIq+eA==", + "dev": true, + "requires": { + "has": "^1.0.3", + "object.assign": "^4.1.0", + "reflect.ownkeys": "^0.2.0" + } + }, + "prop-types-extra": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/prop-types-extra/-/prop-types-extra-1.1.0.tgz", + "integrity": "sha512-QFyuDxvMipmIVKD2TwxLVPzMnO4e5oOf1vr3tJIomL8E7d0lr6phTHd5nkPhFIzTD1idBLLEPeylL9g+rrTzRg==", + "requires": { + "react-is": "^16.3.2", + "warning": "^3.0.0" + } + }, + "proto-list": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", + "integrity": "sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk=", + "dev": true + }, + "protochain": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/protochain/-/protochain-1.0.5.tgz", + "integrity": "sha1-mRxAfpneJkqt+PgVBLXn+ve/omA=", + "dev": true + }, + "proxy-addr": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.5.tgz", + "integrity": "sha512-t/7RxHXPH6cJtP0pRG6smSr9QJidhB+3kXu0KgXnbGYMgzEnUxRQ4/LDdfOwZEMyIh3/xHb8PX3t+lfL9z+YVQ==", + "dev": true, + "requires": { + "forwarded": "~0.1.2", + "ipaddr.js": "1.9.0" + } + }, + "prr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=" + }, + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", + "dev": true + }, + "psl": { + "version": "1.1.32", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.32.tgz", + "integrity": "sha512-MHACAkHpihU/REGGPLj4sEfc/XKW2bheigvHO1dUqjaKigMp1C8+WLQYRGgeKFMsw5PMfegZcaN8IDXK/cD0+g==", + "dev": true + }, + "public-encrypt": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", + "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", + "requires": { + "bn.js": "^4.1.0", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "parse-asn1": "^5.0.0", + "randombytes": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "pump": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", + "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "pumpify": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", + "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", + "requires": { + "duplexify": "^3.6.0", + "inherits": "^2.0.3", + "pump": "^2.0.0" + } + }, + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" + }, + "purgecss": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/purgecss/-/purgecss-1.3.0.tgz", + "integrity": "sha512-0UMnr8aUsPO7RbzAT72UELRvwMHhadtuunDm7rcgRS6b8pCVO8yglIqikiYFwQk2XP606mk+GpjI1G74Auxgtg==", + "dev": true, + "requires": { + "glob": "^7.1.3", + "postcss": "^7.0.14", + "postcss-selector-parser": "^6.0.0", + "yargs": "^13.2.2" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "dependencies": { + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "cliui": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", + "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", + "dev": true, + "requires": { + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" + } + }, + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true + }, + "execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "dev": true, + "requires": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true + }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "invert-kv": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", + "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==", + "dev": true + }, + "lcid": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", + "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", + "dev": true, + "requires": { + "invert-kv": "^2.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "mem": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz", + "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==", + "dev": true, + "requires": { + "map-age-cleaner": "^0.1.1", + "mimic-fn": "^2.0.0", + "p-is-promise": "^2.0.0" + } + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true + }, + "os-locale": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", + "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==", + "dev": true, + "requires": { + "execa": "^1.0.0", + "lcid": "^2.0.0", + "mem": "^4.0.0" + } + }, + "p-limit": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz", + "integrity": "sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + }, + "postcss": { + "version": "7.0.17", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.17.tgz", + "integrity": "sha512-546ZowA+KZ3OasvQZHsbuEpysvwTZNGJv9EfyCQdsIDltPSWHAeTQ5fQy/Npi2ZDtLI3zs7Ps/p6wThErhm9fQ==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, + "postcss-selector-parser": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.2.tgz", + "integrity": "sha512-36P2QR59jDTOAiIkqEprfJDsoNrvwFei3eCqKd1Y0tUsBimsq39BLp7RD+JWny3WgB1zGhJX8XVePwm9k4wdBg==", + "dev": true, + "requires": { + "cssesc": "^3.0.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "wrap-ansi": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", + "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" + } + }, + "yargs": { + "version": "13.2.4", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.2.4.tgz", + "integrity": "sha512-HG/DWAJa1PAnHT9JAhNa8AbAv3FPaiLzioSjCcmuXXhP8MlpHO5vwls4g4j6n30Z74GVQj8Xa62dWVx1QCGklg==", + "dev": true, + "requires": { + "cliui": "^5.0.0", + "find-up": "^3.0.0", + "get-caller-file": "^2.0.1", + "os-locale": "^3.1.0", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^3.0.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^13.1.0" + } + }, + "yargs-parser": { + "version": "13.1.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.0.tgz", + "integrity": "sha512-Yq+32PrijHRri0vVKQEm+ys8mbqWjLiwQkMFNXEENutzLPP0bE4Lcd4iA3OQY5HF+GD3xXxf0MEHb8E4/SA3AA==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } + } + }, + "purgecss-webpack-plugin": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/purgecss-webpack-plugin/-/purgecss-webpack-plugin-1.4.0.tgz", + "integrity": "sha512-kCVR8RvmtJ6IwzxMBNFmAucItyvY6db0Ui5DBmQHCe8GvY2ST03a26wFCU8XwfzN8gpKUGZPyuD3OtL+9WOT0w==", + "dev": true, + "requires": { + "purgecss": "^1.1.0", + "webpack-sources": "^1.3.0" + } + }, + "q": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", + "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=", + "dev": true + }, + "qs": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", + "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==" + }, + "query-string": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-4.3.4.tgz", + "integrity": "sha1-u7aTucqRXCMlFbIosaArYJBD2+s=", + "dev": true, + "requires": { + "object-assign": "^4.1.0", + "strict-uri-encode": "^1.0.0" + } + }, + "querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=" + }, + "querystring-es3": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", + "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=" + }, + "querystringify": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.1.1.tgz", + "integrity": "sha512-w7fLxIRCRT7U8Qu53jQnJyPkYZIaR4n5151KMfcJlO/A9397Wxb1amJvROTK6TOnp7PfoAmg/qXiNHI+08jRfA==", + "dev": true + }, + "raf": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/raf/-/raf-3.4.1.tgz", + "integrity": "sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA==", + "requires": { + "performance-now": "^2.1.0" + } + }, + "railroad-diagrams": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/railroad-diagrams/-/railroad-diagrams-1.0.0.tgz", + "integrity": "sha1-635iZ1SN3t+4mcG5Dlc3RVnN234=", + "dev": true + }, + "randexp": { + "version": "0.4.6", + "resolved": "https://registry.npmjs.org/randexp/-/randexp-0.4.6.tgz", + "integrity": "sha512-80WNmd9DA0tmZrw9qQa62GPPWfuXJknrmVmLcxvq4uZBdYqb1wYoKTmnlGUchvVWe0XiLupYkBoXVOxz3C8DYQ==", + "dev": true, + "requires": { + "discontinuous-range": "1.0.0", + "ret": "~0.1.10" + } + }, + "randomatic": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-3.1.1.tgz", + "integrity": "sha512-TuDE5KxZ0J461RVjrJZCJc+J+zCkTb1MbH9AQUq68sMhOMcy9jLcb3BrZKgp9q9Ncltdg4QVqWrH02W2EFFVYw==", + "dev": true, + "requires": { + "is-number": "^4.0.0", + "kind-of": "^6.0.0", + "math-random": "^1.0.1" + }, + "dependencies": { + "is-number": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", + "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", + "dev": true + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + } + } + }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "randomfill": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", + "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", + "requires": { + "randombytes": "^2.0.5", + "safe-buffer": "^5.1.0" + } + }, + "range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "dev": true + }, + "raw-body": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", + "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", + "dev": true, + "requires": { + "bytes": "3.1.0", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "dependencies": { + "bytes": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", + "dev": true + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + } + } + }, + "react": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/react/-/react-16.2.0.tgz", + "integrity": "sha512-ZmIomM7EE1DvPEnSFAHZn9Vs9zJl5A9H7el0EGTE6ZbW9FKe/14IYAlPbC8iH25YarEQxZL+E8VW7Mi7kfQrDQ==", + "requires": { + "fbjs": "^0.8.16", + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "prop-types": "^15.6.0" + } + }, + "react-addons-test-utils": { + "version": "0.14.8", + "resolved": "https://registry.npmjs.org/react-addons-test-utils/-/react-addons-test-utils-0.14.8.tgz", + "integrity": "sha1-3N3AOecfw8gdgDOOU6NxTxTUHh8=" + }, + "react-bootstrap": { + "version": "0.32.1", + "resolved": "https://registry.npmjs.org/react-bootstrap/-/react-bootstrap-0.32.1.tgz", + "integrity": "sha512-RbfzKUbsukWsToWqGHfCCyMFq9QQI0TznutdyxyJw6dih2NvIne25Mrssg8LZsprqtPpyQi8bN0L0Fx3fUsL8Q==", + "requires": { + "babel-runtime": "^6.11.6", + "classnames": "^2.2.5", + "dom-helpers": "^3.2.0", + "invariant": "^2.2.1", + "keycode": "^2.1.2", + "prop-types": "^15.5.10", + "prop-types-extra": "^1.0.1", + "react-overlays": "^0.8.0", + "react-prop-types": "^0.4.0", + "react-transition-group": "^2.0.0", + "uncontrollable": "^4.1.0", + "warning": "^3.0.0" + } + }, + "react-copy-to-clipboard": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/react-copy-to-clipboard/-/react-copy-to-clipboard-5.0.1.tgz", + "integrity": "sha512-ELKq31/E3zjFs5rDWNCfFL4NvNFQvGRoJdAKReD/rUPA+xxiLPQmZBZBvy2vgH7V0GE9isIQpT9WXbwIVErYdA==", + "requires": { + "copy-to-clipboard": "^3", + "prop-types": "^15.5.8" + } + }, + "react-custom-scrollbars": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/react-custom-scrollbars/-/react-custom-scrollbars-4.2.1.tgz", + "integrity": "sha1-gw/ZUCkn6X6KeMIIaBOJmyqLZts=", + "requires": { + "dom-css": "^2.0.0", + "prop-types": "^15.5.10", + "raf": "^3.1.0" + } + }, + "react-dom": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.2.0.tgz", + "integrity": "sha512-zpGAdwHVn9K0091d+hr+R0qrjoJ84cIBFL2uU60KvWBPfZ7LPSrfqviTxGHWN0sjPZb2hxWzMexwrvJdKePvjg==", + "requires": { + "fbjs": "^0.8.16", + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "prop-types": "^15.6.0" + } + }, + "react-dropzone": { + "version": "4.2.7", + "resolved": "https://registry.npmjs.org/react-dropzone/-/react-dropzone-4.2.7.tgz", + "integrity": "sha512-BGEc/UtG0rHBEZjAkGsajPRO85d842LWeaP4CINHvXrSNyKp7Tq7s699NyZwWYHahvXaUNZzNJ17JMrfg5sxVg==", + "requires": { + "attr-accept": "^1.0.3", + "prop-types": "^15.5.7" + } + }, + "react-infinite-scroller": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/react-infinite-scroller/-/react-infinite-scroller-1.0.12.tgz", + "integrity": "sha1-pR/LXdgrwbYgf2m+dHvXuHKRf6Q=", + "requires": { + "prop-types": "^15.5.8" + } + }, + "react-is": { + "version": "16.8.6", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.8.6.tgz", + "integrity": "sha512-aUk3bHfZ2bRSVFFbbeVS4i+lNPZr3/WM5jT2J5omUVV1zzcs1nAaf3l51ctA5FFvCRbhrH0bdAsRRQddFJZPtA==" + }, + "react-lifecycles-compat": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz", + "integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==" + }, + "react-onclickout": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/react-onclickout/-/react-onclickout-2.0.4.tgz", + "integrity": "sha1-LHU5pkfh3NyrCyji9Orjw+APDGQ=" + }, + "react-overlays": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/react-overlays/-/react-overlays-0.8.3.tgz", + "integrity": "sha512-h6GT3jgy90PgctleP39Yu3eK1v9vaJAW73GOA/UbN9dJ7aAN4BTZD6793eI1D5U+ukMk17qiqN/wl3diK1Z5LA==", + "requires": { + "classnames": "^2.2.5", + "dom-helpers": "^3.2.1", + "prop-types": "^15.5.10", + "prop-types-extra": "^1.0.1", + "react-transition-group": "^2.2.0", + "warning": "^3.0.0" + } + }, + "react-prop-types": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/react-prop-types/-/react-prop-types-0.4.0.tgz", + "integrity": "sha1-+ZsL+0AGkpya8gUefBQUpcdbk9A=", + "requires": { + "warning": "^3.0.0" + } + }, + "react-reconciler": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/react-reconciler/-/react-reconciler-0.7.0.tgz", + "integrity": "sha512-50JwZ3yNyMS8fchN+jjWEJOH3Oze7UmhxeoJLn2j6f3NjpfCRbcmih83XTWmzqtar/ivd5f7tvQhvvhism2fgg==", + "dev": true, + "requires": { + "fbjs": "^0.8.16", + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "prop-types": "^15.6.0" + } + }, + "react-redux": { + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-5.0.6.tgz", + "integrity": "sha512-8taaaGu+J7PMJQDJrk/xiWEYQmdo3mkXw6wPr3K3LxvXis3Fymiq7c13S+Tpls/AyNUAsoONkU81AP0RA6y6Vw==", + "requires": { + "hoist-non-react-statics": "^2.2.1", + "invariant": "^2.0.0", + "lodash": "^4.2.0", + "lodash-es": "^4.2.0", + "loose-envify": "^1.1.0", + "prop-types": "^15.5.10" + } + }, + "react-router": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-4.3.1.tgz", + "integrity": "sha512-yrvL8AogDh2X42Dt9iknk4wF4V8bWREPirFfS9gLU1huk6qK41sg7Z/1S81jjTrGHxa3B8R3J6xIkDAA6CVarg==", + "requires": { + "history": "^4.7.2", + "hoist-non-react-statics": "^2.5.0", + "invariant": "^2.2.4", + "loose-envify": "^1.3.1", + "path-to-regexp": "^1.7.0", + "prop-types": "^15.6.1", + "warning": "^4.0.1" + }, + "dependencies": { + "invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "requires": { + "loose-envify": "^1.0.0" + } + }, + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" + }, + "path-to-regexp": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.7.0.tgz", + "integrity": "sha1-Wf3g9DW62suhA6hOnTvGTpa5k30=", + "requires": { + "isarray": "0.0.1" + } + }, + "prop-types": { + "version": "15.7.2", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz", + "integrity": "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==", + "requires": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.8.1" + }, + "dependencies": { + "loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "requires": { + "js-tokens": "^3.0.0 || ^4.0.0" + } + } + } + }, + "warning": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz", + "integrity": "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==", + "requires": { + "loose-envify": "^1.0.0" + } + } + } + }, + "react-router-dom": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-4.2.2.tgz", + "integrity": "sha512-cHMFC1ZoLDfEaMFoKTjN7fry/oczMgRt5BKfMAkTu5zEuJvUiPp1J8d0eXSVTnBh6pxlbdqDhozunOOLtmKfPA==", + "requires": { + "history": "^4.7.2", + "invariant": "^2.2.2", + "loose-envify": "^1.3.1", + "prop-types": "^15.5.4", + "react-router": "^4.2.0", + "warning": "^3.0.0" + } + }, + "react-test-renderer": { + "version": "16.8.6", + "resolved": "https://registry.npmjs.org/react-test-renderer/-/react-test-renderer-16.8.6.tgz", + "integrity": "sha512-H2srzU5IWYT6cZXof6AhUcx/wEyJddQ8l7cLM/F7gDXYyPr4oq+vCIxJYXVGhId1J706sqziAjuOEjyNkfgoEw==", + "dev": true, + "requires": { + "object-assign": "^4.1.1", + "prop-types": "^15.6.2", + "react-is": "^16.8.6", + "scheduler": "^0.13.6" + }, + "dependencies": { + "loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dev": true, + "requires": { + "js-tokens": "^3.0.0 || ^4.0.0" + } + }, + "prop-types": { + "version": "15.7.2", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz", + "integrity": "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==", + "dev": true, + "requires": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.8.1" + } + } + } + }, + "react-transition-group": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-2.9.0.tgz", + "integrity": "sha512-+HzNTCHpeQyl4MJ/bdE0u6XRMe9+XG/+aL4mCxVN4DnPBQ0/5bfHWPDuOZUzYdMj94daZaZdCCc1Dzt9R/xSSg==", + "requires": { + "dom-helpers": "^3.4.0", + "loose-envify": "^1.4.0", + "prop-types": "^15.6.2", + "react-lifecycles-compat": "^3.0.4" + }, + "dependencies": { + "loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "requires": { + "js-tokens": "^3.0.0 || ^4.0.0" + } + }, + "prop-types": { + "version": "15.7.2", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz", + "integrity": "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==", + "requires": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.8.1" + } + } + } + }, + "read-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "dev": true, + "requires": { + "load-json-file": "^1.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^1.0.0" + } + }, + "read-pkg-up": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "dev": true, + "requires": { + "find-up": "^1.0.0", + "read-pkg": "^1.0.0" + }, + "dependencies": { + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "dev": true, + "requires": { + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "dev": true, + "requires": { + "pinkie-promise": "^2.0.0" + } + } + } + }, + "readable-stream": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "requires": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + }, + "dependencies": { + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" + } + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + } + } + }, + "realpath-native": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/realpath-native/-/realpath-native-1.1.0.tgz", + "integrity": "sha512-wlgPA6cCIIg9gKz0fgAPjnzh4yR/LnXovwuo9hvyGvx3h8nX4+/iLZplfUWasXpqD8BdnGnP5njOFjkUwPzvjA==", + "dev": true, + "requires": { + "util.promisify": "^1.0.0" + } + }, + "reduce-css-calc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/reduce-css-calc/-/reduce-css-calc-1.3.0.tgz", + "integrity": "sha1-dHyRTgSWFKTJz7umKYca0dKSdxY=", + "dev": true, + "requires": { + "balanced-match": "^0.4.2", + "math-expression-evaluator": "^1.2.14", + "reduce-function-call": "^1.0.1" + } + }, + "reduce-function-call": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/reduce-function-call/-/reduce-function-call-1.0.2.tgz", + "integrity": "sha1-WiAL+S4ON3UXUv5FsKszD9S2vpk=", + "dev": true, + "requires": { + "balanced-match": "^0.4.2" + } + }, + "redux": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/redux/-/redux-3.7.2.tgz", + "integrity": "sha512-pNqnf9q1hI5HHZRBkj3bAngGZW/JMCmexDlOxw4XagXY2o1327nHH54LoTjiPJ0gizoqPDRqWyX/00g0hD6w+A==", + "requires": { + "lodash": "^4.2.1", + "lodash-es": "^4.2.1", + "loose-envify": "^1.1.0", + "symbol-observable": "^1.0.3" + } + }, + "redux-mock-store": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/redux-mock-store/-/redux-mock-store-1.5.1.tgz", + "integrity": "sha512-B+iZ98ESHw4EAWVLKUknQlop1OdLKOayGRmd6KavNtC0zoSsycD8hTt0hEr1eUTw2gmYJOdfBY5QAgZweTUcLQ==", + "requires": { + "lodash.isplainobject": "^4.0.6" + } + }, + "redux-thunk": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/redux-thunk/-/redux-thunk-2.2.0.tgz", + "integrity": "sha1-5hWhbha0ehmlFXZhM9Hj6Zt4UuU=" + }, + "reflect.ownkeys": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/reflect.ownkeys/-/reflect.ownkeys-0.2.0.tgz", + "integrity": "sha1-dJrO7H8/34tj+SegSAnpDFwLNGA=", + "dev": true + }, + "regenerate": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz", + "integrity": "sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg==", + "dev": true + }, + "regenerator-runtime": { + "version": "0.10.5", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz", + "integrity": "sha1-M2w+/BIgrc7dosn6tntaeVWjNlg=" + }, + "regenerator-transform": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.10.1.tgz", + "integrity": "sha512-PJepbvDbuK1xgIgnau7Y90cwaAmO/LCLMI2mPvaXq2heGMR3aWW5/BQvYrhJ8jgmQjXewXvBjzfqKcVOmhjZ6Q==", + "dev": true, + "requires": { + "babel-runtime": "^6.18.0", + "babel-types": "^6.19.0", + "private": "^0.1.6" + } + }, + "regex-cache": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", + "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", + "dev": true, + "requires": { + "is-equal-shallow": "^0.1.3" + } + }, + "regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "requires": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + } + }, + "regexpu-core": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-2.0.0.tgz", + "integrity": "sha1-SdA4g3uNz4v6W5pCE5k45uoq4kA=", + "dev": true, + "requires": { + "regenerate": "^1.2.1", + "regjsgen": "^0.2.0", + "regjsparser": "^0.1.4" + } + }, + "regjsgen": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz", + "integrity": "sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=", + "dev": true + }, + "regjsparser": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz", + "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=", + "dev": true, + "requires": { + "jsesc": "~0.5.0" + }, + "dependencies": { + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "dev": true + } + } + }, + "relateurl": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", + "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=", + "dev": true + }, + "remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=" + }, + "renderkid": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-2.0.3.tgz", + "integrity": "sha512-z8CLQp7EZBPCwCnncgf9C4XAi3WR0dv+uWu/PjIyhhAb5d6IJ/QZqlHFprHeKT+59//V6BNUsLbvN8+2LarxGA==", + "dev": true, + "requires": { + "css-select": "^1.1.0", + "dom-converter": "^0.2", + "htmlparser2": "^3.3.0", + "strip-ansi": "^3.0.0", + "utila": "^0.4.0" + } + }, + "repeat-element": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", + "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==" + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=" + }, + "repeating": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", + "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", + "dev": true, + "requires": { + "is-finite": "^1.0.0" + } + }, + "request": { + "version": "2.88.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", + "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", + "dev": true, + "requires": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.0", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.4.3", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + }, + "dependencies": { + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true + }, + "form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "dev": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + }, + "mime-db": { + "version": "1.40.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.40.0.tgz", + "integrity": "sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA==", + "dev": true + }, + "mime-types": { + "version": "2.1.24", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.24.tgz", + "integrity": "sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ==", + "dev": true, + "requires": { + "mime-db": "1.40.0" + } + }, + "qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "dev": true + }, + "tough-cookie": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", + "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", + "dev": true, + "requires": { + "psl": "^1.1.24", + "punycode": "^1.4.1" + } + } + } + }, + "request-promise-core": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.2.tgz", + "integrity": "sha512-UHYyq1MO8GsefGEt7EprS8UrXsm1TxEvFUX1IMTuSLU2Rh7fTIdFtl8xD7JiEYiWU2dl+NYAjCTksTehQUxPag==", + "dev": true, + "requires": { + "lodash": "^4.17.11" + } + }, + "request-promise-native": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.7.tgz", + "integrity": "sha512-rIMnbBdgNViL37nZ1b3L/VfPOpSi0TqVDQPAvO6U14lMzOLrt5nilxCQqtDKhZeDiW0/hkCXGoQjhgJd/tCh6w==", + "dev": true, + "requires": { + "request-promise-core": "1.1.2", + "stealthy-require": "^1.1.1", + "tough-cookie": "^2.3.3" + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true + }, + "require-main-filename": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", + "dev": true + }, + "requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", + "dev": true + }, + "reselect": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/reselect/-/reselect-3.0.1.tgz", + "integrity": "sha1-79qpjqdFEyTQkrKyFjpqHXqaIUc=" + }, + "resolve": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.11.1.tgz", + "integrity": "sha512-vIpgF6wfuJOZI7KKKSP+HmiKggadPQAdsp5HiC1mvqnfp0gF1vdwgBWZIdrVft9pgqoMFQN+R7BSWZiBxx+BBw==", + "dev": true, + "requires": { + "path-parse": "^1.0.6" + } + }, + "resolve-cwd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", + "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", + "dev": true, + "requires": { + "resolve-from": "^3.0.0" + } + }, + "resolve-dir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", + "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=", + "dev": true, + "requires": { + "expand-tilde": "^2.0.0", + "global-modules": "^1.0.0" + } + }, + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", + "dev": true + }, + "resolve-pathname": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/resolve-pathname/-/resolve-pathname-2.2.0.tgz", + "integrity": "sha512-bAFz9ld18RzJfddgrO2e/0S2O81710++chRMUxHjXOYKF6jTAMrUNZrEZ1PvV0zlhfjidm08iRPdTLPno1FuRg==" + }, + "resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=" + }, + "restore-cursor": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", + "dev": true, + "requires": { + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" + } + }, + "ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==" + }, + "rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "requires": { + "glob": "^7.1.3" + } + }, + "ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "rocambole": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/rocambole/-/rocambole-0.7.0.tgz", + "integrity": "sha1-9seVBVF9xCtvuECEK4uVOw+WhYU=", + "dev": true, + "requires": { + "esprima": "^2.1" + } + }, + "rocambole-indent": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/rocambole-indent/-/rocambole-indent-2.0.4.tgz", + "integrity": "sha1-oYokl3ygQAuGHapGMehh3LUtCFw=", + "dev": true, + "requires": { + "debug": "^2.1.3", + "mout": "^0.11.0", + "rocambole-token": "^1.2.1" + }, + "dependencies": { + "mout": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/mout/-/mout-0.11.1.tgz", + "integrity": "sha1-ujYR318OWx/7/QEWa48C0fX6K5k=", + "dev": true + } + } + }, + "rocambole-linebreak": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/rocambole-linebreak/-/rocambole-linebreak-1.0.2.tgz", + "integrity": "sha1-A2IVFbQ7RyHJflocG8paA2Y2jy8=", + "dev": true, + "requires": { + "debug": "^2.1.3", + "rocambole-token": "^1.2.1", + "semver": "^4.3.1" + }, + "dependencies": { + "semver": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/semver/-/semver-4.3.6.tgz", + "integrity": "sha1-MAvG4OhjdPe6YQaLWx7NV/xlMto=", + "dev": true + } + } + }, + "rocambole-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/rocambole-node/-/rocambole-node-1.0.0.tgz", + "integrity": "sha1-21tJ3nQHsAgN1RSHLyjjk9D3/z8=", + "dev": true + }, + "rocambole-token": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/rocambole-token/-/rocambole-token-1.2.1.tgz", + "integrity": "sha1-x4XfdCjcPLJ614lwR71SOMwHDTU=", + "dev": true + }, + "rocambole-whitespace": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/rocambole-whitespace/-/rocambole-whitespace-1.0.0.tgz", + "integrity": "sha1-YzMJSSVrKZQfWbGQRZ+ZnGsdO/k=", + "dev": true, + "requires": { + "debug": "^2.1.3", + "repeat-string": "^1.5.0", + "rocambole-token": "^1.2.1" + } + }, + "rst-selector-parser": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/rst-selector-parser/-/rst-selector-parser-2.2.3.tgz", + "integrity": "sha1-gbIw6i/MYGbInjRy3nlChdmwPZE=", + "dev": true, + "requires": { + "lodash.flattendeep": "^4.4.0", + "nearley": "^2.7.10" + } + }, + "rsvp": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-3.6.2.tgz", + "integrity": "sha512-OfWGQTb9vnwRjwtA2QwpG2ICclHC3pgXZO5xt8H2EfgDquO0qVdSb5T88L4qJVAEugbS56pAuV4XZM58UX8ulw==", + "dev": true + }, + "run-async": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz", + "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=", + "dev": true, + "requires": { + "is-promise": "^2.1.0" + } + }, + "run-queue": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", + "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=", + "requires": { + "aproba": "^1.1.1" + } + }, + "rx": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/rx/-/rx-4.1.0.tgz", + "integrity": "sha1-pfE/957zt0D+MKqAP7CfmIBdR4I=", + "dev": true + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "requires": { + "ret": "~0.1.10" + } + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "sane": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/sane/-/sane-2.5.2.tgz", + "integrity": "sha1-tNwYYcIbQn6SlQej51HiosuKs/o=", + "dev": true, + "requires": { + "anymatch": "^2.0.0", + "capture-exit": "^1.2.0", + "exec-sh": "^0.2.0", + "fb-watchman": "^2.0.0", + "fsevents": "^1.2.3", + "micromatch": "^3.1.4", + "minimist": "^1.1.1", + "walker": "~1.0.5", + "watch": "~0.18.0" + }, + "dependencies": { + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + } + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + } + } + }, + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "dev": true + }, + "scheduler": { + "version": "0.13.6", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.13.6.tgz", + "integrity": "sha512-IWnObHt413ucAYKsD9J1QShUKkbKLQQHdxRyw73sw4FN26iWr3DY/H34xGPe4nmL1DwXyWmSWmMrA9TfQbE/XQ==", + "dev": true, + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" + } + }, + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + }, + "select-hose": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", + "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=", + "dev": true + }, + "selfsigned": { + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.4.tgz", + "integrity": "sha512-9AukTiDmHXGXWtWjembZ5NDmVvP2695EtpgbCsxCa68w3c88B+alqbmZ4O3hZ4VWGXeGWzEVdvqgAJD8DQPCDw==", + "dev": true, + "requires": { + "node-forge": "0.7.5" + } + }, + "semver": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz", + "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==" + }, + "send": { + "version": "0.17.1", + "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", + "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", + "dev": true, + "requires": { + "debug": "2.6.9", + "depd": "~1.1.2", + "destroy": "~1.0.4", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "~1.7.2", + "mime": "1.6.0", + "ms": "2.1.1", + "on-finished": "~2.3.0", + "range-parser": "~1.2.1", + "statuses": "~1.5.0" + }, + "dependencies": { + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true + } + } + }, + "serialize-javascript": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-1.7.0.tgz", + "integrity": "sha512-ke8UG8ulpFOxO8f8gRYabHQe/ZntKlcig2Mp+8+URDP1D8vJZ0KUt7LYo07q25Z/+JVSgpr/cui9PIp5H6/+nA==", + "dev": true + }, + "serializerr": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/serializerr/-/serializerr-1.0.3.tgz", + "integrity": "sha1-EtTFqhw/+49tHcXzlaqUVVacP5E=", + "dev": true, + "requires": { + "protochain": "^1.0.5" + } + }, + "serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=", + "dev": true, + "requires": { + "accepts": "~1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.6.2", + "mime-types": "~2.1.17", + "parseurl": "~1.3.2" + }, + "dependencies": { + "http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", + "dev": true, + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + } + }, + "mime-db": { + "version": "1.40.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.40.0.tgz", + "integrity": "sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA==", + "dev": true + }, + "mime-types": { + "version": "2.1.24", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.24.tgz", + "integrity": "sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ==", + "dev": true, + "requires": { + "mime-db": "1.40.0" + } + }, + "setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "dev": true + } + } + }, + "serve-static": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", + "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", + "dev": true, + "requires": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.17.1" + } + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true + }, + "set-value": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz", + "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==", + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=" + }, + "setprototypeof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", + "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==", + "dev": true + }, + "sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true + }, + "shellwords": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz", + "integrity": "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==", + "dev": true + }, + "sigmund": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", + "integrity": "sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA=", + "dev": true + }, + "signal-exit": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "dev": true + }, + "slash": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", + "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", + "dev": true + }, + "snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "requires": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" + } + } + }, + "snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "requires": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "requires": { + "is-descriptor": "^1.0.0" + } + } + } + }, + "snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "requires": { + "kind-of": "^3.2.0" + } + }, + "sockjs": { + "version": "0.3.19", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.19.tgz", + "integrity": "sha512-V48klKZl8T6MzatbLlzzRNhMepEys9Y4oGFpypBFFn1gLI/QQ9HtLLyWJNbPlwGLelOVOEijUbTTJeLLI59jLw==", + "dev": true, + "requires": { + "faye-websocket": "^0.10.0", + "uuid": "^3.0.1" + } + }, + "sockjs-client": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.3.0.tgz", + "integrity": "sha512-R9jxEzhnnrdxLCNln0xg5uGHqMnkhPSTzUZH2eXcR03S/On9Yvoq2wyUZILRUhZCNVu2PmwWVoyuiPz8th8zbg==", + "dev": true, + "requires": { + "debug": "^3.2.5", + "eventsource": "^1.0.7", + "faye-websocket": "~0.11.1", + "inherits": "^2.0.3", + "json3": "^3.3.2", + "url-parse": "^1.4.3" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "faye-websocket": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.1.tgz", + "integrity": "sha1-8O/hjE9W5PQK/H4Gxxn9XuYYjzg=", + "dev": true, + "requires": { + "websocket-driver": ">=0.5.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "sort-keys": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz", + "integrity": "sha1-RBttTTRnmPG05J6JIK37oOVD+a0=", + "dev": true, + "requires": { + "is-plain-obj": "^1.0.0" + } + }, + "source-list-map": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-0.1.8.tgz", + "integrity": "sha1-xVCyq1Qn9rPyH1r+rYjE9Vh7IQY=", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + }, + "source-map-resolve": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz", + "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==", + "requires": { + "atob": "^2.1.1", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, + "source-map-support": { + "version": "0.4.18", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", + "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", + "dev": true, + "requires": { + "source-map": "^0.5.6" + } + }, + "source-map-url": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", + "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=" + }, + "spdx-correct": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz", + "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==", + "dev": true, + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz", + "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==", + "dev": true + }, + "spdx-expression-parse": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", + "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", + "dev": true, + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.4.tgz", + "integrity": "sha512-7j8LYJLeY/Yb6ACbQ7F76qy5jHkp0U6jgBfJsk97bwWlVUnUWsAgpyaCvo17h0/RQGnQ036tVDomiwoI4pDkQA==", + "dev": true + }, + "spdy": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.0.tgz", + "integrity": "sha512-ot0oEGT/PGUpzf/6uk4AWLqkq+irlqHXkrdbk51oWONh3bxQmBuljxPNl66zlRRcIJStWq0QkLUCPOPjgjvU0Q==", + "dev": true, + "requires": { + "debug": "^4.1.0", + "handle-thing": "^2.0.0", + "http-deceiver": "^1.2.7", + "select-hose": "^2.0.0", + "spdy-transport": "^3.0.0" + }, + "dependencies": { + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "spdy-transport": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", + "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", + "dev": true, + "requires": { + "debug": "^4.1.0", + "detect-node": "^2.0.4", + "hpack.js": "^2.1.6", + "obuf": "^1.1.2", + "readable-stream": "^3.0.6", + "wbuf": "^1.7.3" + }, + "dependencies": { + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "readable-stream": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.4.0.tgz", + "integrity": "sha512-jItXPLmrSR8jmTRmRWJXCnGJsfy85mB3Wd/uINMXA65yrnFo0cPClFIUWzo2najVNSl+mx7/4W8ttlLWJe99pQ==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "requires": { + "extend-shallow": "^3.0.0" + } + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, + "sshpk": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", + "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", + "dev": true, + "requires": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + } + }, + "ssri": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-5.3.0.tgz", + "integrity": "sha512-XRSIPqLij52MtgoQavH/x/dU1qVKtWUAAZeOHsR9c2Ddi4XerFy3mc1alf+dLJKl9EUIm/Ht+EowFkTUOA6GAQ==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.1" + } + }, + "stack-utils": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-1.0.2.tgz", + "integrity": "sha512-MTX+MeG5U994cazkjd/9KNAapsHnibjMLnfXodlkXw76JEea0UiNzrqidzo1emMwk7w5Qhc9jd4Bn9TBb1MFwA==", + "dev": true + }, + "static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "requires": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" + } + } + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", + "dev": true + }, + "stdin": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/stdin/-/stdin-0.0.1.tgz", + "integrity": "sha1-0wQZgarsPf28d6GzjWNy449ftx4=", + "dev": true + }, + "stealthy-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", + "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=", + "dev": true + }, + "stream-browserify": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", + "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==", + "requires": { + "inherits": "~2.0.1", + "readable-stream": "^2.0.2" + } + }, + "stream-each": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz", + "integrity": "sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==", + "requires": { + "end-of-stream": "^1.1.0", + "stream-shift": "^1.0.0" + } + }, + "stream-http": { + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", + "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", + "requires": { + "builtin-status-codes": "^3.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.3.6", + "to-arraybuffer": "^1.0.0", + "xtend": "^4.0.0" + } + }, + "stream-shift": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.0.tgz", + "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=" + }, + "strict-uri-encode": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", + "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=", + "dev": true + }, + "string-length": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-2.0.0.tgz", + "integrity": "sha1-1A27aGo6zpYMHP/KVivyxF+DY+0=", + "dev": true, + "requires": { + "astral-regex": "^1.0.0", + "strip-ansi": "^4.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "string.prototype.trim": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.1.2.tgz", + "integrity": "sha1-0E3iyJ4Tf019IG8Ia17S+ua+jOo=", + "dev": true, + "requires": { + "define-properties": "^1.1.2", + "es-abstract": "^1.5.0", + "function-bind": "^1.0.2" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "dev": true, + "requires": { + "is-utf8": "^0.2.0" + } + }, + "strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "dev": true + }, + "strip-json-comments": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-0.1.3.tgz", + "integrity": "sha1-Fkxk43Coo8wAyeAbU55WmCPw7lQ=", + "dev": true + }, + "style-loader": { + "version": "0.13.2", + "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-0.13.2.tgz", + "integrity": "sha1-dFMzhM9pjHEEx5URULSXF63C87s=", + "dev": true, + "requires": { + "loader-utils": "^1.0.2" + } + }, + "superagent": { + "version": "3.8.2", + "resolved": "https://registry.npmjs.org/superagent/-/superagent-3.8.2.tgz", + "integrity": "sha512-gVH4QfYHcY3P0f/BZzavLreHW3T1v7hG9B+hpMQotGQqurOvhv87GcMCd6LWySmBuf+BDR44TQd0aISjVHLeNQ==", + "requires": { + "component-emitter": "^1.2.0", + "cookiejar": "^2.1.0", + "debug": "^3.1.0", + "extend": "^3.0.0", + "form-data": "^2.3.1", + "formidable": "^1.1.1", + "methods": "^1.1.1", + "mime": "^1.4.1", + "qs": "^6.5.1", + "readable-stream": "^2.0.5" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } + } + }, + "superagent-es6-promise": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/superagent-es6-promise/-/superagent-es6-promise-1.0.0.tgz", + "integrity": "sha1-9QcwhD1GmKhLHWEl561X8YzC/aQ=" + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + }, + "svgo": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-0.7.2.tgz", + "integrity": "sha1-n1dyQTlSE1xv779Ar+ak+qiLS7U=", + "dev": true, + "requires": { + "coa": "~1.0.1", + "colors": "~1.1.2", + "csso": "~2.3.1", + "js-yaml": "~3.7.0", + "mkdirp": "~0.5.1", + "sax": "~1.2.1", + "whet.extend": "~0.9.9" + } + }, + "symbol-observable": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz", + "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==" + }, + "symbol-tree": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.2.tgz", + "integrity": "sha1-rifbOPZgp64uHDt9G8KQgZuFGeY=", + "dev": true + }, + "sync-exec": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/sync-exec/-/sync-exec-0.6.2.tgz", + "integrity": "sha1-cX0izFPwzh3vVZQ2LzqJouu5EQU=", + "dev": true + }, + "tapable": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.1.tgz", + "integrity": "sha512-9I2ydhj8Z9veORCw5PRm4u9uebCn0mcCa6scWoNcbZ6dAtoo2618u9UUzxgmsCOreJpqDDuv61LvwofW7hLcBA==" + }, + "terser": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-4.0.0.tgz", + "integrity": "sha512-dOapGTU0hETFl1tCo4t56FN+2jffoKyER9qBGoUFyZ6y7WLoKT0bF+lAYi6B6YsILcGF3q1C2FBh8QcKSCgkgA==", + "requires": { + "commander": "^2.19.0", + "source-map": "~0.6.1", + "source-map-support": "~0.5.10" + }, + "dependencies": { + "commander": { + "version": "2.20.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.0.tgz", + "integrity": "sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ==" + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "source-map-support": { + "version": "0.5.12", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.12.tgz", + "integrity": "sha512-4h2Pbvyy15EE02G+JOZpUCmqWJuqrs+sEkzewTm++BPi7Hvn/HwcqLAcNxYAyI0x13CpPPn+kMjl+hplXMHITQ==", + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + } + } + }, + "terser-webpack-plugin": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.3.0.tgz", + "integrity": "sha512-W2YWmxPjjkUcOWa4pBEv4OP4er1aeQJlSo2UhtCFQCuRXEHjOFscO8VyWHj9JLlA0RzQb8Y2/Ta78XZvT54uGg==", + "requires": { + "cacache": "^11.3.2", + "find-cache-dir": "^2.0.0", + "is-wsl": "^1.1.0", + "loader-utils": "^1.2.3", + "schema-utils": "^1.0.0", + "serialize-javascript": "^1.7.0", + "source-map": "^0.6.1", + "terser": "^4.0.0", + "webpack-sources": "^1.3.0", + "worker-farm": "^1.7.0" + }, + "dependencies": { + "big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==" + }, + "cacache": { + "version": "11.3.2", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-11.3.2.tgz", + "integrity": "sha512-E0zP4EPGDOaT2chM08Als91eYnf8Z+eH1awwwVsngUmgppfM5jjJ8l3z5vO5p5w/I3LsiXawb1sW0VY65pQABg==", + "requires": { + "bluebird": "^3.5.3", + "chownr": "^1.1.1", + "figgy-pudding": "^3.5.1", + "glob": "^7.1.3", + "graceful-fs": "^4.1.15", + "lru-cache": "^5.1.1", + "mississippi": "^3.0.0", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "promise-inflight": "^1.0.1", + "rimraf": "^2.6.2", + "ssri": "^6.0.1", + "unique-filename": "^1.1.1", + "y18n": "^4.0.0" + } + }, + "find-cache-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", + "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", + "requires": { + "commondir": "^1.0.1", + "make-dir": "^2.0.0", + "pkg-dir": "^3.0.0" + } + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "requires": { + "locate-path": "^3.0.0" + } + }, + "graceful-fs": { + "version": "4.1.15", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz", + "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==" + }, + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.2.3.tgz", + "integrity": "sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==", + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^2.0.0", + "json5": "^1.0.1" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "requires": { + "yallist": "^3.0.2" + } + }, + "make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "requires": { + "pify": "^4.0.1", + "semver": "^5.6.0" + } + }, + "mississippi": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz", + "integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==", + "requires": { + "concat-stream": "^1.5.0", + "duplexify": "^3.4.2", + "end-of-stream": "^1.1.0", + "flush-write-stream": "^1.0.0", + "from2": "^2.1.0", + "parallel-transform": "^1.1.0", + "pump": "^3.0.0", + "pumpify": "^1.3.3", + "stream-each": "^1.1.0", + "through2": "^2.0.0" + } + }, + "p-limit": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz", + "integrity": "sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==", + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" + }, + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==" + }, + "pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "requires": { + "find-up": "^3.0.0" + } + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "serialize-javascript": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-1.7.0.tgz", + "integrity": "sha512-ke8UG8ulpFOxO8f8gRYabHQe/ZntKlcig2Mp+8+URDP1D8vJZ0KUt7LYo07q25Z/+JVSgpr/cui9PIp5H6/+nA==" + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "ssri": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz", + "integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==", + "requires": { + "figgy-pudding": "^3.5.1" + } + } + } + }, + "test-exclude": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-4.2.3.tgz", + "integrity": "sha512-SYbXgY64PT+4GAL2ocI3HwPa4Q4TBKm0cwAVeKOt/Aoc0gSpNRjJX8w0pA1LMKZ3LBmd8pYBqApFNQLII9kavA==", + "dev": true, + "requires": { + "arrify": "^1.0.1", + "micromatch": "^2.3.11", + "object-assign": "^4.1.0", + "read-pkg-up": "^1.0.1", + "require-main-filename": "^1.0.1" + } + }, + "throat": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/throat/-/throat-4.1.0.tgz", + "integrity": "sha1-iQN8vJLFarGJJua6TLsgDhVnKmo=", + "dev": true + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "dev": true + }, + "through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "thunky": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.0.3.tgz", + "integrity": "sha512-YwT8pjmNcAXBZqrubu22P4FYsh2D4dxRmnWBOL8Jk8bUcRUtc5326kx32tuTmFDAZtLOGEVNl8POAR8j896Iow==", + "dev": true + }, + "timers-browserify": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.10.tgz", + "integrity": "sha512-YvC1SV1XdOUaL6gx5CoGroT3Gu49pK9+TZ38ErPldOWW4j49GI1HKs9DV+KGq/w6y+LZ72W1c8cKz2vzY+qpzg==", + "requires": { + "setimmediate": "^1.0.4" + } + }, + "tmatch": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/tmatch/-/tmatch-2.0.1.tgz", + "integrity": "sha1-DFYkbzPzDaG409colauvFmYPOM8=" + }, + "tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "requires": { + "os-tmpdir": "~1.0.2" + } + }, + "tmpl": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.4.tgz", + "integrity": "sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE=", + "dev": true + }, + "to-arraybuffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", + "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=" + }, + "to-camel-case": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/to-camel-case/-/to-camel-case-1.0.0.tgz", + "integrity": "sha1-GlYFSy+daWKYzmamCJcyK29CPkY=", + "requires": { + "to-space-case": "^1.0.0" + } + }, + "to-fast-properties": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", + "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", + "dev": true + }, + "to-no-case": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/to-no-case/-/to-no-case-1.0.2.tgz", + "integrity": "sha1-xyKQcWTvaxeBMsjmmTAhLRtKoWo=" + }, + "to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "requires": { + "kind-of": "^3.0.2" + } + }, + "to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "requires": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + }, + "to-space-case": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/to-space-case/-/to-space-case-1.0.0.tgz", + "integrity": "sha1-sFLar7Gysp3HcM6gFj5ewOvJ/Bc=", + "requires": { + "to-no-case": "^1.0.0" + } + }, + "toggle-selection": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/toggle-selection/-/toggle-selection-1.0.6.tgz", + "integrity": "sha1-bkWxJj8gF/oKzH2J14sVuL932jI=" + }, + "toidentifier": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", + "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==", + "dev": true + }, + "toposort": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/toposort/-/toposort-1.0.7.tgz", + "integrity": "sha1-LmhELZ9k7HILjMieZEOsbKqVACk=", + "dev": true + }, + "tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "dev": true, + "requires": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + }, + "dependencies": { + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true + } + } + }, + "tr46": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", + "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", + "dev": true, + "requires": { + "punycode": "^2.1.0" + }, + "dependencies": { + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true + } + } + }, + "trim-right": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", + "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", + "dev": true + }, + "tslib": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz", + "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==" + }, + "tty-browserify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", + "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=" + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "dev": true, + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "dev": true + }, + "type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2" + } + }, + "type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dev": true, + "requires": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "dependencies": { + "mime-db": { + "version": "1.40.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.40.0.tgz", + "integrity": "sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA==", + "dev": true + }, + "mime-types": { + "version": "2.1.24", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.24.tgz", + "integrity": "sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ==", + "dev": true, + "requires": { + "mime-db": "1.40.0" + } + } + } + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" + }, + "ua-parser-js": { + "version": "0.7.20", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.20.tgz", + "integrity": "sha512-8OaIKfzL5cpx8eCMAhhvTlft8GYF8b2eQr6JkCyVdrgjcytyOmPCXrqXFcUnhonRpLlh5yxEZVohm6mzaowUOw==" + }, + "uglify-js": { + "version": "3.4.10", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.4.10.tgz", + "integrity": "sha512-Y2VsbPVs0FIshJztycsO2SfPk7/KAF/T72qzv9u5EpQ4kB2hQoHlhNQTsNyy6ul7lQtqJN/AoWeS23OzEiEFxw==", + "dev": true, + "requires": { + "commander": "~2.19.0", + "source-map": "~0.6.1" + }, + "dependencies": { + "commander": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.19.0.tgz", + "integrity": "sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "uncontrollable": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/uncontrollable/-/uncontrollable-4.1.0.tgz", + "integrity": "sha1-4DWCkSUuGGUiLZCTmxny9J+Bwak=", + "requires": { + "invariant": "^2.1.0" + } + }, + "union-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz", + "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=", + "requires": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^0.4.3" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + }, + "set-value": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz", + "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=", + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.1", + "to-object-path": "^0.3.0" + } + } + } + }, + "uniq": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", + "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=", + "dev": true + }, + "uniqs": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz", + "integrity": "sha1-/+3ks2slKQaW5uFl1KWe25mOawI=", + "dev": true + }, + "unique-filename": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", + "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", + "requires": { + "unique-slug": "^2.0.0" + } + }, + "unique-slug": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.1.tgz", + "integrity": "sha512-n9cU6+gITaVu7VGj1Z8feKMmfAjEAQGhwD9fE3zvpRRa0wEIx8ODYkVGfSc94M2OX00tUFV8wH3zYbm1I8mxFg==", + "requires": { + "imurmurhash": "^0.1.4" + } + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", + "dev": true + }, + "unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "requires": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "dependencies": { + "has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "requires": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=" + } + } + }, + "upath": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.1.2.tgz", + "integrity": "sha512-kXpym8nmDmlCBr7nKdIx8P2jNBa+pBpIUFRnKJ4dr8htyYGJFokkr2ZvERRtUN+9SY+JqXouNgUPtv6JQva/2Q==" + }, + "upper-case": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz", + "integrity": "sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg=", + "dev": true + }, + "uri-js": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", + "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", + "requires": { + "punycode": "^2.1.0" + }, + "dependencies": { + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" + } + } + }, + "urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=" + }, + "url": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", + "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", + "requires": { + "punycode": "1.3.2", + "querystring": "0.2.0" + }, + "dependencies": { + "punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=" + } + } + }, + "url-loader": { + "version": "0.5.9", + "resolved": "https://registry.npmjs.org/url-loader/-/url-loader-0.5.9.tgz", + "integrity": "sha512-B7QYFyvv+fOBqBVeefsxv6koWWtjmHaMFT6KZWti4KRw8YUD/hOU+3AECvXuzyVawIBx3z7zQRejXCDSO5kk1Q==", + "dev": true, + "requires": { + "loader-utils": "^1.0.2", + "mime": "1.3.x" + }, + "dependencies": { + "mime": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.3.6.tgz", + "integrity": "sha1-WR2E02U6awtKO5343lqoEI5y5eA=", + "dev": true + } + } + }, + "url-parse": { + "version": "1.4.7", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.7.tgz", + "integrity": "sha512-d3uaVyzDB9tQoSXFvuSUNFibTd9zxd2bkVrDRvF5TmvWWQwqE4lgYJ5m+x1DbecWkw+LK4RNl2CU1hHuOKPVlg==", + "dev": true, + "requires": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, + "use": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==" + }, + "user-home": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/user-home/-/user-home-1.1.1.tgz", + "integrity": "sha1-K1viOjK2Onyd640PKNSFcko98ZA=", + "dev": true + }, + "util": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", + "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", + "requires": { + "inherits": "2.0.3" + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, + "util.promisify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.0.tgz", + "integrity": "sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==", + "dev": true, + "requires": { + "define-properties": "^1.1.2", + "object.getownpropertydescriptors": "^2.0.3" + } + }, + "utila": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", + "integrity": "sha1-ihagXURWV6Oupe7MWxKk+lN5dyw=", + "dev": true + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", + "dev": true + }, + "uuid": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", + "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==", + "dev": true + }, + "v8-compile-cache": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.0.3.tgz", + "integrity": "sha512-CNmdbwQMBjwr9Gsmohvm0pbL954tJrNzf6gWL3K+QMQf00PF7ERGrEiLgjuU3mKreLC2MeGhUsNV9ybTbLgd3w==", + "dev": true + }, + "v8flags": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-2.1.1.tgz", + "integrity": "sha1-qrGh+jDUX4jdMhFIh1rALAtV5bQ=", + "dev": true, + "requires": { + "user-home": "^1.1.1" + } + }, + "validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "value-equal": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/value-equal/-/value-equal-0.4.0.tgz", + "integrity": "sha512-x+cYdNnaA3CxvMaTX0INdTCN8m8aF2uY9BvEqmxuYp8bL09cs/kWVQPVGcA35fMktdOsP69IgU7wFj/61dJHEw==" + }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", + "dev": true + }, + "vendors": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.3.tgz", + "integrity": "sha512-fOi47nsJP5Wqefa43kyWSg80qF+Q3XA6MUkgi7Hp1HQaKDQW4cQrK2D0P7mmbFtsV1N89am55Yru/nyEwRubcw==", + "dev": true + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "vm-browserify": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz", + "integrity": "sha1-XX6kW7755Kb/ZflUOOCofDV9WnM=", + "requires": { + "indexof": "0.0.1" + } + }, + "w3c-hr-time": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.1.tgz", + "integrity": "sha1-gqwr/2PZUOqeMYmlimViX+3xkEU=", + "dev": true, + "requires": { + "browser-process-hrtime": "^0.1.2" + } + }, + "walker": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.7.tgz", + "integrity": "sha1-L3+bj9ENZ3JisYqITijRlhjgKPs=", + "dev": true, + "requires": { + "makeerror": "1.0.x" + } + }, + "warning": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/warning/-/warning-3.0.0.tgz", + "integrity": "sha1-MuU3fLVy3kqwR1O9+IIcAe1gW3w=", + "requires": { + "loose-envify": "^1.0.0" + } + }, + "watch": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/watch/-/watch-0.18.0.tgz", + "integrity": "sha1-KAlUdsbffJDJYxOJkMClQj60uYY=", + "dev": true, + "requires": { + "exec-sh": "^0.2.0", + "minimist": "^1.2.0" + } + }, + "watchpack": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.6.0.tgz", + "integrity": "sha512-i6dHe3EyLjMmDlU1/bGQpEw25XSjkJULPuAVKCbNRefQVq48yXKUpwg538F7AZTf9kyr57zj++pQFltUa5H7yA==", + "requires": { + "chokidar": "^2.0.2", + "graceful-fs": "^4.1.2", + "neo-async": "^2.5.0" + } + }, + "wbuf": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", + "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", + "dev": true, + "requires": { + "minimalistic-assert": "^1.0.0" + } + }, + "webidl-conversions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", + "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", + "dev": true + }, + "webpack": { + "version": "4.28.3", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.28.3.tgz", + "integrity": "sha512-vLZN9k5I7Nr/XB1IDG9GbZB4yQd1sPuvufMFgJkx0b31fi2LD97KQIjwjxE7xytdruAYfu5S0FLBLjdxmwGJCg==", + "requires": { + "@webassemblyjs/ast": "1.7.11", + "@webassemblyjs/helper-module-context": "1.7.11", + "@webassemblyjs/wasm-edit": "1.7.11", + "@webassemblyjs/wasm-parser": "1.7.11", + "acorn": "^5.6.2", + "acorn-dynamic-import": "^3.0.0", + "ajv": "^6.1.0", + "ajv-keywords": "^3.1.0", + "chrome-trace-event": "^1.0.0", + "enhanced-resolve": "^4.1.0", + "eslint-scope": "^4.0.0", + "json-parse-better-errors": "^1.0.2", + "loader-runner": "^2.3.0", + "loader-utils": "^1.1.0", + "memory-fs": "~0.4.1", + "micromatch": "^3.1.8", + "mkdirp": "~0.5.0", + "neo-async": "^2.5.0", + "node-libs-browser": "^2.0.0", + "schema-utils": "^0.4.4", + "tapable": "^1.1.0", + "terser-webpack-plugin": "^1.1.0", + "watchpack": "^1.5.0", + "webpack-sources": "^1.3.0" + }, + "dependencies": { + "acorn": { + "version": "5.7.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.3.tgz", + "integrity": "sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw==" + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" + } + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + }, + "schema-utils": { + "version": "0.4.7", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.4.7.tgz", + "integrity": "sha512-v/iwU6wvwGK8HbU9yi3/nhGzP0yGSuhQMzL6ySiec1FSrZZDkhm4noOSWzrNFo/jEc+SJY6jRTwuwbSXJPDUnQ==", + "requires": { + "ajv": "^6.1.0", + "ajv-keywords": "^3.1.0" + } + } + } + }, + "webpack-cli": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-3.2.0.tgz", + "integrity": "sha512-wxnUqH0P5ErcwGIKMZbUqix2FjuUmhpS2N9ukZAuGmk9+3vOt7VY2ZM/90W9UZetf6lOJuBNcsbeGU7uCTLdSA==", + "dev": true, + "requires": { + "chalk": "^2.4.1", + "cross-spawn": "^6.0.5", + "enhanced-resolve": "^4.1.0", + "findup-sync": "^2.0.0", + "global-modules": "^1.0.0", + "global-modules-path": "^2.3.0", + "import-local": "^2.0.0", + "interpret": "^1.1.0", + "loader-utils": "^1.1.0", + "opencollective": "^1.0.3", + "supports-color": "^5.5.0", + "v8-compile-cache": "^2.0.2", + "yargs": "^12.0.4" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "dev": true, + "requires": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "import-local": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz", + "integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==", + "dev": true, + "requires": { + "pkg-dir": "^3.0.0", + "resolve-cwd": "^2.0.0" + } + }, + "invert-kv": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", + "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==", + "dev": true + }, + "lcid": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", + "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", + "dev": true, + "requires": { + "invert-kv": "^2.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "mem": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz", + "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==", + "dev": true, + "requires": { + "map-age-cleaner": "^0.1.1", + "mimic-fn": "^2.0.0", + "p-is-promise": "^2.0.0" + } + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true + }, + "os-locale": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", + "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==", + "dev": true, + "requires": { + "execa": "^1.0.0", + "lcid": "^2.0.0", + "mem": "^4.0.0" + } + }, + "p-limit": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz", + "integrity": "sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + }, + "pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "dev": true, + "requires": { + "find-up": "^3.0.0" + } + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "yargs": { + "version": "12.0.5", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz", + "integrity": "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==", + "dev": true, + "requires": { + "cliui": "^4.0.0", + "decamelize": "^1.2.0", + "find-up": "^3.0.0", + "get-caller-file": "^1.0.1", + "os-locale": "^3.0.0", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^2.0.0", + "which-module": "^2.0.0", + "y18n": "^3.2.1 || ^4.0.0", + "yargs-parser": "^11.1.1" + } + }, + "yargs-parser": { + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz", + "integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } + } + }, + "webpack-dev-middleware": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.4.0.tgz", + "integrity": "sha512-Q9Iyc0X9dP9bAsYskAVJ/hmIZZQwf/3Sy4xCAZgL5cUkjZmUZLt4l5HpbST/Pdgjn3u6pE7u5OdGd1apgzRujA==", + "dev": true, + "requires": { + "memory-fs": "~0.4.1", + "mime": "^2.3.1", + "range-parser": "^1.0.3", + "webpack-log": "^2.0.0" + }, + "dependencies": { + "mime": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.4.tgz", + "integrity": "sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA==", + "dev": true + } + } + }, + "webpack-dev-server": { + "version": "3.1.14", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.1.14.tgz", + "integrity": "sha512-mGXDgz5SlTxcF3hUpfC8hrQ11yhAttuUQWf1Wmb+6zo3x6rb7b9mIfuQvAPLdfDRCGRGvakBWHdHOa0I9p/EVQ==", + "dev": true, + "requires": { + "ansi-html": "0.0.7", + "bonjour": "^3.5.0", + "chokidar": "^2.0.0", + "compression": "^1.5.2", + "connect-history-api-fallback": "^1.3.0", + "debug": "^3.1.0", + "del": "^3.0.0", + "express": "^4.16.2", + "html-entities": "^1.2.0", + "http-proxy-middleware": "~0.18.0", + "import-local": "^2.0.0", + "internal-ip": "^3.0.1", + "ip": "^1.1.5", + "killable": "^1.0.0", + "loglevel": "^1.4.1", + "opn": "^5.1.0", + "portfinder": "^1.0.9", + "schema-utils": "^1.0.0", + "selfsigned": "^1.9.1", + "semver": "^5.6.0", + "serve-index": "^1.7.2", + "sockjs": "0.3.19", + "sockjs-client": "1.3.0", + "spdy": "^4.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^5.1.0", + "url": "^0.11.0", + "webpack-dev-middleware": "3.4.0", + "webpack-log": "^2.0.0", + "yargs": "12.0.2" + }, + "dependencies": { + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "decamelize": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-2.0.0.tgz", + "integrity": "sha512-Ikpp5scV3MSYxY39ymh45ZLEecsTdv/Xj2CaQfI8RLMuwi7XvjX9H/fhraiSuU+C5w5NTDu4ZU72xNiZnurBPg==", + "dev": true, + "requires": { + "xregexp": "4.0.0" + } + }, + "execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "dev": true, + "requires": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "import-local": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz", + "integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==", + "dev": true, + "requires": { + "pkg-dir": "^3.0.0", + "resolve-cwd": "^2.0.0" + } + }, + "invert-kv": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", + "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==", + "dev": true + }, + "lcid": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", + "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", + "dev": true, + "requires": { + "invert-kv": "^2.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "mem": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz", + "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==", + "dev": true, + "requires": { + "map-age-cleaner": "^0.1.1", + "mimic-fn": "^2.0.0", + "p-is-promise": "^2.0.0" + } + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "opn": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/opn/-/opn-5.5.0.tgz", + "integrity": "sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA==", + "dev": true, + "requires": { + "is-wsl": "^1.1.0" + } + }, + "os-locale": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", + "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==", + "dev": true, + "requires": { + "execa": "^1.0.0", + "lcid": "^2.0.0", + "mem": "^4.0.0" + } + }, + "p-limit": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz", + "integrity": "sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + }, + "pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "dev": true, + "requires": { + "find-up": "^3.0.0" + } + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "yargs": { + "version": "12.0.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.2.tgz", + "integrity": "sha512-e7SkEx6N6SIZ5c5H22RTZae61qtn3PYUE8JYbBFlK9sYmh3DMQ6E5ygtaG/2BW0JZi4WGgTR2IV5ChqlqrDGVQ==", + "dev": true, + "requires": { + "cliui": "^4.0.0", + "decamelize": "^2.0.0", + "find-up": "^3.0.0", + "get-caller-file": "^1.0.1", + "os-locale": "^3.0.0", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^2.0.0", + "which-module": "^2.0.0", + "y18n": "^3.2.1 || ^4.0.0", + "yargs-parser": "^10.1.0" + } + }, + "yargs-parser": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-10.1.0.tgz", + "integrity": "sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ==", + "dev": true, + "requires": { + "camelcase": "^4.1.0" + } + } + } + }, + "webpack-log": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/webpack-log/-/webpack-log-2.0.0.tgz", + "integrity": "sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg==", + "dev": true, + "requires": { + "ansi-colors": "^3.0.0", + "uuid": "^3.3.2" + } + }, + "webpack-sources": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.3.0.tgz", + "integrity": "sha512-OiVgSrbGu7NEnEvQJJgdSFPl2qWKkWq5lHMhgiToIiN9w34EBnjYzSYs+VbL5KoYiLNtFFa7BZIKxRED3I32pA==", + "requires": { + "source-list-map": "^2.0.0", + "source-map": "~0.6.1" + }, + "dependencies": { + "source-list-map": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", + "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==" + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } + } + }, + "websocket-driver": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.0.tgz", + "integrity": "sha1-DK+dLXVdk67gSdS90NP+LMoqJOs=", + "dev": true, + "requires": { + "http-parser-js": ">=0.4.0", + "websocket-extensions": ">=0.1.1" + } + }, + "websocket-extensions": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.3.tgz", + "integrity": "sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg==", + "dev": true + }, + "whatwg-encoding": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", + "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", + "dev": true, + "requires": { + "iconv-lite": "0.4.24" + }, + "dependencies": { + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + } + } + }, + "whatwg-fetch": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.0.0.tgz", + "integrity": "sha512-9GSJUgz1D4MfyKU7KRqwOjXCXTqWdFNvEr7eUBYchQiVc744mqK/MzXPNR2WsPkmkOa4ywfg8C2n8h+13Bey1Q==" + }, + "whatwg-mimetype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", + "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", + "dev": true + }, + "whatwg-url": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-6.5.0.tgz", + "integrity": "sha512-rhRZRqx/TLJQWUpQ6bmrt2UV4f0HCQ463yQuONJqC6fO2VoEb1pTYddbe59SkYq87aoM5A3bdhMZiUiVws+fzQ==", + "dev": true, + "requires": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } + }, + "whet.extend": { + "version": "0.9.9", + "resolved": "https://registry.npmjs.org/whet.extend/-/whet.extend-0.9.9.tgz", + "integrity": "sha1-+HfVv2SMl+WqVC+twW1qJZucEaE=", + "dev": true + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "dev": true + }, + "wordwrap": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", + "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", + "dev": true + }, + "worker-farm": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz", + "integrity": "sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==", + "requires": { + "errno": "~0.1.7" + } + }, + "wrap-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "dev": true, + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" + }, + "dependencies": { + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + } + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "write-file-atomic": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz", + "integrity": "sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.2" + } + }, + "ws": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/ws/-/ws-5.2.2.tgz", + "integrity": "sha512-jaHFD6PFv6UgoIVda6qZllptQsMlDEJkTQcybzzXDYM1XO9Y8em691FGMPmM46WGyLU4z9KMgQN+qrux/nhlHA==", + "dev": true, + "requires": { + "async-limiter": "~1.0.0" + } + }, + "xml-name-validator": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", + "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", + "dev": true + }, + "xregexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/xregexp/-/xregexp-4.0.0.tgz", + "integrity": "sha512-PHyM+sQouu7xspQQwELlGwwd05mXUFqwFYfqPO0cC7x4fxyHnnuetmQr6CjJiafIDoH4MogHb9dOoJzR/Y4rFg==", + "dev": true + }, + "xtend": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", + "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=" + }, + "y18n": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", + "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==" + }, + "yallist": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.3.tgz", + "integrity": "sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==" + }, + "yargs": { + "version": "10.1.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-10.1.2.tgz", + "integrity": "sha512-ivSoxqBGYOqQVruxD35+EyCFDYNEFL/Uo6FcOnz+9xZdZzK0Zzw4r4KhbrME1Oo2gOggwJod2MnsdamSG7H9ig==", + "dev": true, + "requires": { + "cliui": "^4.0.0", + "decamelize": "^1.1.1", + "find-up": "^2.1.0", + "get-caller-file": "^1.0.1", + "os-locale": "^2.0.0", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^2.0.0", + "which-module": "^2.0.0", + "y18n": "^3.2.1", + "yargs-parser": "^8.1.0" + }, + "dependencies": { + "y18n": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", + "dev": true + } + } + }, + "yargs-parser": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-8.1.0.tgz", + "integrity": "sha512-yP+6QqN8BmrgW2ggLtTbdrOyBNSI7zBa4IykmiV5R1wl1JWNxQvWhMfMdmzIYtKU7oP3OOInY/tl2ov3BDjnJQ==", + "dev": true, + "requires": { + "camelcase": "^4.1.0" + } + } + } +} diff --git a/vendor/github.com/minio/minio/browser/package.json b/vendor/github.com/minio/minio/browser/package.json index 86bd3abce9..a199f29c76 100644 --- a/vendor/github.com/minio/minio/browser/package.json +++ b/vendor/github.com/minio/minio/browser/package.json @@ -29,8 +29,8 @@ "homepage": "https://github.com/minio/minio", "devDependencies": { "async": "^1.5.2", - "babel-cli": "^6.14.0", - "babel-core": "^6.14.0", + "babel-cli": "^6.26.0", + "babel-core": "^6.26.3", "babel-jest": "^22.1.0", "babel-loader": "^7.1.2", "babel-plugin-syntax-object-rest-spread": "^6.13.0", @@ -38,10 +38,10 @@ "babel-polyfill": "^6.23.0", "babel-preset-es2015": "^6.14.0", "babel-preset-react": "^6.11.1", - "babel-register": "^6.14.0", + "babel-register": "^6.26.0", "copy-webpack-plugin": "^4.6.0", "css-loader": "^0.23.1", - "enzyme": "^3.3.0", + "enzyme": "^3.10.0", "enzyme-adapter-react-16": "^1.1.1", "esformatter": "^0.10.0", "esformatter-jsx": "^7.4.1", @@ -73,7 +73,7 @@ "material-design-iconic-font": "^2.2.0", "mime-db": "^1.25.0", "mime-types": "^2.1.13", - "moment": "^2.15.1", + "moment": "^2.24.0", "react": "^16.2.0", "react-addons-test-utils": "^0.14.8", "react-bootstrap": "^0.32.0", diff --git a/vendor/github.com/minio/minio/browser/ui-assets.go b/vendor/github.com/minio/minio/browser/ui-assets.go index 4ce8aa6608..2585bac55a 100644 --- a/vendor/github.com/minio/minio/browser/ui-assets.go +++ b/vendor/github.com/minio/minio/browser/ui-assets.go @@ -6,7 +6,7 @@ // production/favicon-96x96.png // production/firefox.png // production/index.html -// production/index_bundle-2019-05-30T05-25-50Z.js +// production/index_bundle-2019-07-02T18-48-01Z.js // production/loader.css // production/logo.svg // production/safari.png @@ -16,7 +16,6 @@ package browser import ( "fmt" - "github.com/elazarl/go-bindata-assetfs" "io/ioutil" "os" "path/filepath" @@ -67,7 +66,7 @@ func productionChromePng() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "production/chrome.png", size: 3726, mode: os.FileMode(420), modTime: time.Unix(1559193981, 0)} + info := bindataFileInfo{name: "production/chrome.png", size: 3726, mode: os.FileMode(420), modTime: time.Unix(1562093292, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -84,7 +83,7 @@ func productionFavicon16x16Png() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "production/favicon-16x16.png", size: 14906, mode: os.FileMode(420), modTime: time.Unix(1559193981, 0)} + info := bindataFileInfo{name: "production/favicon-16x16.png", size: 14906, mode: os.FileMode(420), modTime: time.Unix(1562093292, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -101,7 +100,7 @@ func productionFavicon32x32Png() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "production/favicon-32x32.png", size: 16066, mode: os.FileMode(420), modTime: time.Unix(1559193981, 0)} + info := bindataFileInfo{name: "production/favicon-32x32.png", size: 16066, mode: os.FileMode(420), modTime: time.Unix(1562093292, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -118,7 +117,7 @@ func productionFavicon96x96Png() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "production/favicon-96x96.png", size: 17029, mode: os.FileMode(420), modTime: time.Unix(1559193981, 0)} + info := bindataFileInfo{name: "production/favicon-96x96.png", size: 17029, mode: os.FileMode(420), modTime: time.Unix(1562093292, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -135,7 +134,7 @@ func productionFirefoxPng() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "production/firefox.png", size: 4795, mode: os.FileMode(420), modTime: time.Unix(1559193981, 0)} + info := bindataFileInfo{name: "production/firefox.png", size: 4795, mode: os.FileMode(420), modTime: time.Unix(1562093292, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -195,8 +194,8 @@ var _productionIndexHTML = []byte(`
- - + + `) @@ -211,12 +210,12 @@ func productionIndexHTML() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "production/index.html", size: 2242, mode: os.FileMode(420), modTime: time.Unix(1559193981, 0)} + info := bindataFileInfo{name: "production/index.html", size: 2242, mode: os.FileMode(420), modTime: time.Unix(1562093292, 0)} a := &asset{bytes: bytes, info: info} return a, nil } -var _productionIndex_bundle20190530t052550zJs = []byte(`!function(A){var t={};function M(e){if(t[e])return t[e].exports;var I=t[e]={i:e,l:!1,exports:{}};return A[e].call(I.exports,I,I.exports,M),I.l=!0,I.exports}M.m=A,M.c=t,M.d=function(A,t,e){M.o(A,t)||Object.defineProperty(A,t,{enumerable:!0,get:e})},M.r=function(A){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(A,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(A,"__esModule",{value:!0})},M.t=function(A,t){if(1&t&&(A=M(A)),8&t)return A;if(4&t&&"object"==typeof A&&A&&A.__esModule)return A;var e=Object.create(null);if(M.r(e),Object.defineProperty(e,"default",{enumerable:!0,value:A}),2&t&&"string"!=typeof A)for(var I in A)M.d(e,I,function(t){return A[t]}.bind(null,I));return e},M.n=function(A){var t=A&&A.__esModule?function(){return A.default}:function(){return A};return M.d(t,"a",t),t},M.o=function(A,t){return Object.prototype.hasOwnProperty.call(A,t)},M.p="",M(M.s=272)}([function(A,t,M){A.exports=M(497)()},function(A,t,M){"use strict";A.exports=M(478)},function(A,t,M){"use strict";t.__esModule=!0;var e,I=M(191),g=(e=I)&&e.__esModule?e:{default:e};t.default=g.default||function(A){for(var t=1;t"+I+""};A.exports=function(A,t){var M={};M[A]=t(n),e(e.P+e.F*I(function(){var t=""[A]('"');return t!==t.toLowerCase()||t.split('"').length>3}),"String",M)}},function(A,t,M){var e=M(99),I=M(59),g=M(34),i=M(44),n=M(28),o=M(200),E=Object.getOwnPropertyDescriptor;t.f=M(22)?E:function(A,t){if(A=g(A),t=i(t,!0),o)try{return E(A,t)}catch(A){}if(n(A,t))return I(!e.f.call(A,t),A[t])}},function(A,t,M){var e=M(28),I=M(25),g=M(137)("IE_PROTO"),i=Object.prototype;A.exports=Object.getPrototypeOf||function(A){return A=I(A),e(A,g)?A[g]:"function"==typeof A.constructor&&A instanceof A.constructor?A.constructor.prototype:A instanceof Object?i:null}},function(A,t,M){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.downloadCheckedObjects=t.resetCheckedList=t.uncheckObject=t.checkObject=t.downloadObject=t.hideShareObject=t.showShareObject=t.shareObject=t.deleteCheckedObjects=t.removeObject=t.deleteObject=t.setPrefixWritable=t.setCurrentPrefix=t.selectPrefix=t.setSortOrder=t.setSortBy=t.sortObjects=t.fetchObjects=t.appendList=t.resetList=t.setList=t.CHECKED_LIST_RESET=t.CHECKED_LIST_REMOVE=t.CHECKED_LIST_ADD=t.SET_SHARE_OBJECT=t.SET_PREFIX_WRITABLE=t.SET_CURRENT_PREFIX=t.SET_SORT_ORDER=t.SET_SORT_BY=t.REMOVE=t.APPEND_LIST=t.RESET_LIST=t.SET_LIST=void 0;var e=Object.assign||function(A){for(var t=1;t1?"-":"";e.href=g,e.download=t.bucketName+i+t.prefix.slice(0,-1)+".zip",e.click(),window.URL.revokeObjectURL(g),e.remove()}},I.send(JSON.stringify(t))})},function(A,t){var M={}.toString;A.exports=function(A){return M.call(A).slice(8,-1)}},function(A,t){A.exports=function(A){if(null==A)throw TypeError("Can't call method on "+A);return A}},function(A,t,M){var e=M(17);A.exports=function(A,t){return!!A&&e(function(){t?A.call(null,function(){},1):A.call(null)})}},function(A,t,M){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var e=window.location.pathname;t.minioBrowserPrefix=e.slice(0,e.indexOf("/",1)),t.READ_ONLY="readonly",t.WRITE_ONLY="writeonly",t.READ_WRITE="readwrite",t.NONE="none",t.SHARE_OBJECT_EXPIRY_DAYS=5,t.SHARE_OBJECT_EXPIRY_HOURS=0,t.SHARE_OBJECT_EXPIRY_MINUTES=0,t.ACCESS_KEY_MIN_LENGTH=3,t.SECRET_KEY_MIN_LENGTH=8},function(A,t,M){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.hideBucketPolicy=t.showBucketPolicy=t.setPolicies=t.fetchPolicies=t.hideMakeBucketModal=t.showMakeBucketModal=t.removeBucket=t.addBucket=t.deleteBucket=t.makeBucket=t.setCurrentBucket=t.selectBucket=t.setFilter=t.setList=t.fetchBuckets=t.SET_POLICIES=t.SHOW_BUCKET_POLICY=t.SHOW_MAKE_BUCKET_MODAL=t.SET_CURRENT_BUCKET=t.SET_FILTER=t.REMOVE=t.ADD=t.SET_LIST=void 0;var e=E(M(29)),I=E(M(101)),g=o(M(47)),i=o(M(38)),n=M(123);function o(A){if(A&&A.__esModule)return A;var t={};if(null!=A)for(var M in A)Object.prototype.hasOwnProperty.call(A,M)&&(t[M]=A[M]);return t.default=A,t}function E(A){return A&&A.__esModule?A:{default:A}}var T=t.SET_LIST="buckets/SET_LIST",N=t.ADD="buckets/ADD",c=t.REMOVE="buckets/REMOVE",a=t.SET_FILTER="buckets/SET_FILTER",r=t.SET_CURRENT_BUCKET="buckets/SET_CURRENT_BUCKET",C=t.SHOW_MAKE_BUCKET_MODAL="buckets/SHOW_MAKE_BUCKET_MODAL",D=t.SHOW_BUCKET_POLICY="buckets/SHOW_BUCKET_POLICY",B=t.SET_POLICIES="buckets/SET_POLICIES",Q=t.fetchBuckets=function(){return function(A){return e.default.ListBuckets().then(function(t){var M=t.buckets?t.buckets.map(function(A){return A.name}):[];if(A(s(M)),M.length>0){var e=(0,n.pathSlice)(I.default.location.pathname),g=e.bucket,i=e.prefix;g&&M.indexOf(g)>-1?A(l(g,i)):A(l(M[0]))}else A(l("")),I.default.replace("/")})}},s=t.setList=function(A){return{type:T,buckets:A}},l=(t.setFilter=function(A){return{type:a,filter:A}},t.selectBucket=function(A,t){return function(M){M(u(A)),M(i.selectPrefix(t||""))}}),u=t.setCurrentBucket=function(A){return{type:r,bucket:A}},y=(t.makeBucket=function(A){return function(t){return e.default.MakeBucket({bucketName:A}).then(function(){t(y(A)),t(l(A))}).catch(function(A){return t(g.set({type:"danger",message:A.message}))})}},t.deleteBucket=function(A){return function(t){return e.default.DeleteBucket({bucketName:A}).then(function(){t(g.set({type:"info",message:"Bucket '"+A+"' has been deleted."})),t(x(A)),t(Q())}).catch(function(A){t(g.set({type:"danger",message:A.message}))})}},t.addBucket=function(A){return{type:N,bucket:A}}),x=t.removeBucket=function(A){return{type:c,bucket:A}},w=(t.showMakeBucketModal=function(){return{type:C,show:!0}},t.hideMakeBucketModal=function(){return{type:C,show:!1}},t.fetchPolicies=function(A){return function(t){return e.default.ListAllBucketPolicies({bucketName:A}).then(function(A){var M=A.policies;t(w(M||[]))}).catch(function(A){t(g.set({type:"danger",message:A.message}))})}},t.setPolicies=function(A){return{type:B,policies:A}});t.showBucketPolicy=function(){return{type:D,show:!0}},t.hideBucketPolicy=function(){return{type:D,show:!1}}},function(A,t,M){var e=M(19);A.exports=function(A,t){if(!e(A))return A;var M,I;if(t&&"function"==typeof(M=A.toString)&&!e(I=M.call(A)))return I;if("function"==typeof(M=A.valueOf)&&!e(I=M.call(A)))return I;if(!t&&"function"==typeof(M=A.toString)&&!e(I=M.call(A)))return I;throw TypeError("Can't convert object to primitive value")}},function(A,t,M){var e=M(8),I=M(54),g=M(17);A.exports=function(A,t){var M=(I.Object||{})[A]||Object[A],i={};i[A]=t(M),e(e.S+e.F*g(function(){M(1)}),"Object",i)}},function(A,t,M){var e=M(55),I=M(98),g=M(25),i=M(24),n=M(365);A.exports=function(A,t){var M=1==A,o=2==A,E=3==A,T=4==A,N=6==A,c=5==A||N,a=t||n;return function(t,n,r){for(var C,D,B=g(t),Q=I(B),s=e(n,r,3),l=i(Q.length),u=0,y=M?a(t,l):o?a(t,0):void 0;l>u;u++)if((c||u in Q)&&(D=s(C=Q[u],u,B),A))if(M)y[u]=D;else if(D)switch(A){case 3:return!0;case 5:return C;case 6:return u;case 2:y.push(C)}else if(T)return!1;return N?-1:E||T?T:y}}},function(A,t,M){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var e=t.SET="alert/SET",I=t.CLEAR="alert/CLEAR",g=t.alertId=0;t.set=function(A){var M=(t.alertId=g+=1,g-1);return function(t,g){("danger"!==A.type||A.autoClear)&&setTimeout(function(){t({type:I,alert:{id:M}})},5e3),t({type:e,alert:Object.assign({},A,{id:M})})}},t.clear=function(){return{type:I}}},function(A,t){var M=A.exports={version:"2.4.0"};"number"==typeof __e&&(__e=M)},function(A,t,M){var e=M(172)("wks"),I=M(125),g=M(63).Symbol,i="function"==typeof g;(A.exports=function(A){return e[A]||(e[A]=i&&g[A]||(i?g:I)("Symbol."+A))}).store=e},function(A,t,M){"use strict";M.r(t);var e={};M.r(e),M.d(e,"prefix",function(){return R}),M.d(e,"bsClass",function(){return k}),M.d(e,"bsStyles",function(){return G}),M.d(e,"bsSizes",function(){return J}),M.d(e,"getClassSet",function(){return b}),M.d(e,"splitBsProps",function(){return V}),M.d(e,"splitBsPropsAndOmit",function(){return X}),M.d(e,"addStyle",function(){return W}),M.d(e,"_curry",function(){return P});var I={};M.r(I),M.d(I,"bootstrapUtils",function(){return e}),M.d(I,"createChainedFunction",function(){return QA}),M.d(I,"ValidComponentChildren",function(){return K});var g=M(2),i=M.n(g),n=M(4),o=M.n(n),E=M(3),T=M.n(E),N=M(5),c=M.n(N),a=M(1),r=M.n(a),C=M(7),D=M.n(C),B=M(6),Q=M.n(B),s=M(0),l=M.n(s),u=M(27),y=M.n(u),x=M(94),w=M.n(x),j=M(16),d=M.n(j),Y="large",h="small",L="xsmall",S={large:"lg",medium:"md",small:"sm",xsmall:"xs",lg:"lg",md:"md",sm:"sm",xs:"xs"},z=["lg","md","sm","xs"],U={SUCCESS:"success",WARNING:"warning",DANGER:"danger",INFO:"info"},p="default",f="primary",F="link",m="inverse";function O(A){return function(){for(var t=arguments.length,M=Array(t),e=0;e1?t-1:0),e=1;e1?t-1:0),e=1;e=A.children.length&&this.setState({activeIndex:0,previousActiveIndex:null,direction:null})},t.prototype.componentWillUnmount=function(){clearTimeout(this.timeout),this.isUnmounted=!0},t.prototype.getActiveIndex=function(){var A=this.props.activeIndex;return null!=A?A:this.state.activeIndex},t.prototype.getDirection=function(A,t){return A===t?null:A>t?"prev":"next"},t.prototype.handleItemAnimateOutEnd=function(){var A=this;this.setState({previousActiveIndex:null,direction:null},function(){A.waitForNext(),A.props.onSlideEnd&&A.props.onSlideEnd()})},t.prototype.handleMouseOut=function(){this.isPaused&&this.play()},t.prototype.handleMouseOver=function(){this.props.pauseOnHover&&this.pause()},t.prototype.handleNext=function(A){var t=this.getActiveIndex()+1;if(t>K.count(this.props.children)-1){if(!this.props.wrap)return;t=0}this.select(t,A,"next")},t.prototype.handlePrev=function(A){var t=this.getActiveIndex()-1;if(t<0){if(!this.props.wrap)return;t=K.count(this.props.children)-1}this.select(t,A,"prev")},t.prototype.pause=function(){this.isPaused=!0,clearTimeout(this.timeout)},t.prototype.play=function(){this.isPaused=!1,this.waitForNext()},t.prototype.select=function(A,t,M){if(clearTimeout(this.timeout),!this.isUnmounted){var e=this.props.slide?this.getActiveIndex():null;M=M||this.getDirection(e,A);var I=this.props.onSelect;if(I&&(I.length>1?(t?(t.persist(),t.direction=M):t={direction:M},I(A,t)):I(A)),null==this.props.activeIndex&&A!==e){if(null!=this.state.previousActiveIndex)return;this.setState({activeIndex:A,previousActiveIndex:e,direction:M})}}},t.prototype.waitForNext=function(){var A=this.props,t=A.slide,M=A.interval,e=A.activeIndex;!this.isPaused&&t&&M&&null==e&&(this.timeout=setTimeout(this.handleNext,M))},t.prototype.renderControls=function(A){var t=A.wrap,M=A.children,e=A.activeIndex,I=A.prevIcon,g=A.nextIcon,i=A.bsProps,n=A.prevLabel,o=A.nextLabel,E=R(i,"control"),T=K.count(M);return[(t||0!==e)&&r.a.createElement(yA,{key:"prev",className:Q()(E,"left"),onClick:this.handlePrev},I,n&&r.a.createElement("span",{className:"sr-only"},n)),(t||e!==T-1)&&r.a.createElement(yA,{key:"next",className:Q()(E,"right"),onClick:this.handleNext},g,o&&r.a.createElement("span",{className:"sr-only"},o))]},t.prototype.renderIndicators=function(A,t,M){var e=this,I=[];return K.forEach(A,function(A,M){I.push(r.a.createElement("li",{key:M,className:M===t?"active":null,onClick:function(A){return e.select(M,A)}})," ")}),r.a.createElement("ol",{className:R(M,"indicators")},I)},t.prototype.render=function(){var A=this,t=this.props,M=t.slide,e=t.indicators,I=t.controls,g=t.wrap,n=t.prevIcon,o=t.prevLabel,E=t.nextIcon,T=t.nextLabel,N=t.className,c=t.children,C=D()(t,["slide","indicators","controls","wrap","prevIcon","prevLabel","nextIcon","nextLabel","className","children"]),B=this.state,s=B.previousActiveIndex,l=B.direction,u=X(C,["interval","pauseOnHover","onSelect","onSlideEnd","activeIndex","defaultActiveIndex","direction"]),y=u[0],x=u[1],w=this.getActiveIndex(),j=i()({},b(y),{slide:M});return r.a.createElement("div",i()({},x,{className:Q()(N,j),onMouseOver:this.handleMouseOver,onMouseOut:this.handleMouseOut}),e&&this.renderIndicators(c,w,y),r.a.createElement("div",{className:R(y,"inner")},K.map(c,function(t,e){var I=e===w,g=M&&e===s;return Object(a.cloneElement)(t,{active:I,index:e,animateOut:g,animateIn:I&&null!=s&&M,direction:l,onAnimateOutEnd:g?A.handleItemAnimateOutEnd:null})})),I&&this.renderControls({wrap:g,children:c,activeIndex:w,prevIcon:n,prevLabel:o,nextIcon:E,nextLabel:T,bsProps:y}))},t}(r.a.Component);$A.propTypes=qA,$A.defaultProps=_A,$A.Caption=GA,$A.Item=WA;var At=k("carousel",$A),tt=(M(10),{inline:l.a.bool,disabled:l.a.bool,title:l.a.string,validationState:l.a.oneOf(["success","warning","error",null]),inputRef:l.a.func}),Mt=function(A){function t(){return o()(this,t),T()(this,A.apply(this,arguments))}return c()(t,A),t.prototype.render=function(){var A=this.props,t=A.inline,M=A.disabled,e=A.validationState,I=A.inputRef,g=A.className,n=A.style,o=A.title,E=A.children,T=V(D()(A,["inline","disabled","validationState","inputRef","className","style","title","children"])),N=T[0],c=T[1],a=r.a.createElement("input",i()({},c,{ref:I,type:"checkbox",disabled:M}));if(t){var C,B=((C={})[R(N,"inline")]=!0,C.disabled=M,C);return r.a.createElement("label",{className:Q()(g,B),style:n,title:o},a,E)}var s=i()({},b(N),{disabled:M});return e&&(s["has-"+e]=!0),r.a.createElement("div",{className:Q()(g,s),style:n},r.a.createElement("label",{title:o},a,E))},t}(r.a.Component);Mt.propTypes=tt,Mt.defaultProps={inline:!1,disabled:!1,title:""};var et=k("checkbox",Mt);function It(A){return""+A.charAt(0).toUpperCase()+A.slice(1)}var gt={componentClass:BA.a,visibleXsBlock:l.a.bool,visibleSmBlock:l.a.bool,visibleMdBlock:l.a.bool,visibleLgBlock:l.a.bool},it=function(A){function t(){return o()(this,t),T()(this,A.apply(this,arguments))}return c()(t,A),t.prototype.render=function(){var A=this.props,t=A.componentClass,M=A.className,e=V(D()(A,["componentClass","className"])),I=e[0],g=e[1],n=b(I);return z.forEach(function(A){var t="visible"+It(A)+"Block";g[t]&&(n["visible-"+A+"-block"]=!0),delete g[t]}),r.a.createElement(t,i()({},g,{className:Q()(M,n)}))},t}(r.a.Component);it.propTypes=gt,it.defaultProps={componentClass:"div"};var nt=k("clearfix",it),ot={htmlFor:l.a.string,srOnly:l.a.bool},Et={$bs_formGroup:l.a.object},Tt=function(A){function t(){return o()(this,t),T()(this,A.apply(this,arguments))}return c()(t,A),t.prototype.render=function(){var A=this.context.$bs_formGroup,t=A&&A.controlId,M=this.props,e=M.htmlFor,I=void 0===e?t:e,g=M.srOnly,n=M.className,o=V(D()(M,["htmlFor","srOnly","className"])),E=o[0],T=o[1],N=i()({},b(E),{"sr-only":g});return r.a.createElement("label",i()({},T,{htmlFor:I,className:Q()(n,N)}))},t}(r.a.Component);Tt.propTypes=ot,Tt.defaultProps={srOnly:!1},Tt.contextTypes=Et;var Nt=k("control-label",Tt),ct={componentClass:BA.a,xs:l.a.number,sm:l.a.number,md:l.a.number,lg:l.a.number,xsHidden:l.a.bool,smHidden:l.a.bool,mdHidden:l.a.bool,lgHidden:l.a.bool,xsOffset:l.a.number,smOffset:l.a.number,mdOffset:l.a.number,lgOffset:l.a.number,xsPush:l.a.number,smPush:l.a.number,mdPush:l.a.number,lgPush:l.a.number,xsPull:l.a.number,smPull:l.a.number,mdPull:l.a.number,lgPull:l.a.number},at=function(A){function t(){return o()(this,t),T()(this,A.apply(this,arguments))}return c()(t,A),t.prototype.render=function(){var A=this.props,t=A.componentClass,M=A.className,e=V(D()(A,["componentClass","className"])),I=e[0],g=e[1],n=[];return z.forEach(function(A){function t(t,M){var e=""+A+t,i=g[e];null!=i&&n.push(R(I,""+A+M+"-"+i)),delete g[e]}t("",""),t("Offset","-offset"),t("Push","-push"),t("Pull","-pull");var M=A+"Hidden";g[M]&&n.push("hidden-"+A),delete g[M]}),r.a.createElement(t,i()({},g,{className:Q()(M,n)}))},t}(r.a.Component);at.propTypes=ct,at.defaultProps={componentClass:"div"};var rt,Ct=k("col",at),Dt=M(134),Bt=M.n(Dt),Qt=M(53),st=M.n(Qt),lt={height:["marginTop","marginBottom"],width:["marginLeft","marginRight"]};var ut=((rt={})[Qt.EXITED]="collapse",rt[Qt.EXITING]="collapsing",rt[Qt.ENTERING]="collapsing",rt[Qt.ENTERED]="collapse in",rt),yt={in:l.a.bool,mountOnEnter:l.a.bool,unmountOnExit:l.a.bool,appear:l.a.bool,timeout:l.a.number,onEnter:l.a.func,onEntering:l.a.func,onEntered:l.a.func,onExit:l.a.func,onExiting:l.a.func,onExited:l.a.func,dimension:l.a.oneOfType([l.a.oneOf(["height","width"]),l.a.func]),getDimensionValue:l.a.func,role:l.a.string},xt={in:!1,timeout:300,mountOnEnter:!1,unmountOnExit:!1,appear:!1,dimension:"height",getDimensionValue:function(A,t){var M=t["offset"+It(A)],e=lt[A];return M+parseInt(Bt()(t,e[0]),10)+parseInt(Bt()(t,e[1]),10)}},wt=function(A){function t(){var M,e,I;o()(this,t);for(var g=arguments.length,i=Array(g),n=0;n1&&(I=t,1))}),I?new Error("(children) "+e+" - Duplicate children detected of bsRole: "+I+". Only one child each allowed with the following bsRoles: "+t.join(", ")):null})}(Vt)),disabled:l.a.bool,pullRight:l.a.bool,open:l.a.bool,defaultOpen:l.a.bool,onToggle:l.a.func,onSelect:l.a.func,role:l.a.string,rootCloseEvent:l.a.oneOf(["click","mousedown"]),onMouseEnter:l.a.func,onMouseLeave:l.a.func},Wt={componentClass:FA},Pt=function(A){function t(M,e){o()(this,t);var I=T()(this,A.call(this,M,e));return I.handleClick=I.handleClick.bind(I),I.handleKeyDown=I.handleKeyDown.bind(I),I.handleClose=I.handleClose.bind(I),I._focusInDropdown=!1,I.lastOpenEventType=null,I}return c()(t,A),t.prototype.componentDidMount=function(){this.focusNextOnOpen()},t.prototype.componentWillUpdate=function(A){!A.open&&this.props.open&&(this._focusInDropdown=Lt()(bA.a.findDOMNode(this.menu),Yt()(document)))},t.prototype.componentDidUpdate=function(A){var t=this.props.open,M=A.open;t&&!M&&this.focusNextOnOpen(),!t&&M&&this._focusInDropdown&&(this._focusInDropdown=!1,this.focus())},t.prototype.focus=function(){var A=bA.a.findDOMNode(this.toggle);A&&A.focus&&A.focus()},t.prototype.focusNextOnOpen=function(){var A=this.menu;A.focusNext&&("keydown"!==this.lastOpenEventType&&"menuitem"!==this.props.role||A.focusNext())},t.prototype.handleClick=function(A){this.props.disabled||this.toggleOpen(A,{source:"click"})},t.prototype.handleClose=function(A,t){this.props.open&&this.toggleOpen(A,t)},t.prototype.handleKeyDown=function(A){if(!this.props.disabled)switch(A.keyCode){case zt.a.codes.down:this.props.open?this.menu.focusNext&&this.menu.focusNext():this.toggleOpen(A,{source:"keydown"}),A.preventDefault();break;case zt.a.codes.esc:case zt.a.codes.tab:this.handleClose(A,{source:"keydown"})}},t.prototype.toggleOpen=function(A,t){var M=!this.props.open;M&&(this.lastOpenEventType=t.source),this.props.onToggle&&this.props.onToggle(M,A,t)},t.prototype.renderMenu=function(A,t){var M=this,e=t.id,I=t.onSelect,g=t.rootCloseEvent,n=D()(t,["id","onSelect","rootCloseEvent"]),o=function(A){M.menu=A};return"string"==typeof A.ref||(o=QA(A.ref,o)),Object(a.cloneElement)(A,i()({},n,{ref:o,labelledBy:e,bsClass:R(n,"menu"),onClose:QA(A.props.onClose,this.handleClose),onSelect:QA(A.props.onSelect,I,function(A,t){return M.handleClose(t,{source:"select"})}),rootCloseEvent:g}))},t.prototype.renderToggle=function(A,t){var M=this,e=function(A){M.toggle=A};return"string"==typeof A.ref||(e=QA(A.ref,e)),Object(a.cloneElement)(A,i()({},t,{ref:e,bsClass:R(t,"toggle"),onClick:QA(A.props.onClick,this.handleClick),onKeyDown:QA(A.props.onKeyDown,this.handleKeyDown)}))},t.prototype.render=function(){var A,t=this,M=this.props,e=M.componentClass,I=M.id,g=M.dropup,n=M.disabled,o=M.pullRight,E=M.open,T=M.onSelect,N=M.role,c=M.bsClass,a=M.className,C=M.rootCloseEvent,B=M.children,s=D()(M,["componentClass","id","dropup","disabled","pullRight","open","onSelect","role","bsClass","className","rootCloseEvent","children"]);delete s.onToggle;var l=((A={})[c]=!0,A.open=E,A.disabled=n,A);return g&&(l[c]=!1,l.dropup=!0),r.a.createElement(e,i()({},s,{className:Q()(a,l)}),K.map(B,function(A){switch(A.props.bsRole){case vt:return t.renderToggle(A,{id:I,disabled:n,open:E,role:N,bsClass:c});case Vt:return t.renderMenu(A,{id:I,open:E,pullRight:o,bsClass:c,onSelect:T,rootCloseEvent:C});default:return A}}))},t}(r.a.Component);Pt.propTypes=Xt,Pt.defaultProps=Wt,k("dropdown",Pt);var Kt=y()(Pt,{open:"onToggle"});Kt.Toggle=Ht,Kt.Menu=Gt;var Zt=Kt;function qt(A,t){var M=t.propTypes,e={},I={};return w()(A).forEach(function(A){var t=A[0],g=A[1];M[t]?e[t]=g:I[t]=g}),[e,I]}var _t=i()({},Zt.propTypes,{bsStyle:l.a.string,bsSize:l.a.string,title:l.a.node.isRequired,noCaret:l.a.bool,children:l.a.node}),$t=function(A){function t(){return o()(this,t),T()(this,A.apply(this,arguments))}return c()(t,A),t.prototype.render=function(){var A=this.props,t=A.bsSize,M=A.bsStyle,e=A.title,I=A.children,g=qt(D()(A,["bsSize","bsStyle","title","children"]),Zt.ControlledComponent),n=g[0],o=g[1];return r.a.createElement(Zt,i()({},n,{bsSize:t,bsStyle:M}),r.a.createElement(Zt.Toggle,i()({},o,{bsSize:t,bsStyle:M}),e),r.a.createElement(Zt.Menu,null,I))},t}(r.a.Component);$t.propTypes=_t;var AM,tM=$t,MM={in:l.a.bool,mountOnEnter:l.a.bool,unmountOnExit:l.a.bool,appear:l.a.bool,timeout:l.a.number,onEnter:l.a.func,onEntering:l.a.func,onEntered:l.a.func,onExit:l.a.func,onExiting:l.a.func,onExited:l.a.func},eM=((AM={})[Qt.ENTERING]="in",AM[Qt.ENTERED]="in",AM),IM=function(A){function t(){return o()(this,t),T()(this,A.apply(this,arguments))}return c()(t,A),t.prototype.render=function(){var A=this.props,t=A.className,M=A.children,e=D()(A,["className","children"]);return r.a.createElement(st.a,e,function(A,e){return r.a.cloneElement(M,i()({},e,{className:Q()("fade",t,M.props.className,eM[A])}))})},t}(r.a.Component);IM.propTypes=MM,IM.defaultProps={in:!1,timeout:300,mountOnEnter:!1,unmountOnExit:!1,appear:!1};var gM=IM,iM={horizontal:l.a.bool,inline:l.a.bool,componentClass:BA.a},nM=function(A){function t(){return o()(this,t),T()(this,A.apply(this,arguments))}return c()(t,A),t.prototype.render=function(){var A=this.props,t=A.horizontal,M=A.inline,e=A.componentClass,I=A.className,g=V(D()(A,["horizontal","inline","componentClass","className"])),n=g[0],o=g[1],E=[];return t&&E.push(R(n,"horizontal")),M&&E.push(R(n,"inline")),r.a.createElement(e,i()({},o,{className:Q()(I,E)}))},t}(r.a.Component);nM.propTypes=iM,nM.defaultProps={horizontal:!1,inline:!1,componentClass:"form"};var oM=k("form",nM),EM={$bs_formGroup:l.a.object},TM=function(A){function t(){return o()(this,t),T()(this,A.apply(this,arguments))}return c()(t,A),t.prototype.getGlyph=function(A){switch(A){case"success":return"ok";case"warning":return"warning-sign";case"error":return"remove";default:return null}},t.prototype.renderDefaultFeedback=function(A,t,M,e){var I=this.getGlyph(A&&A.validationState);return I?r.a.createElement(ZA,i()({},e,{glyph:I,className:Q()(t,M)})):null},t.prototype.render=function(){var A=this.props,t=A.className,M=A.children,e=V(D()(A,["className","children"])),I=e[0],g=e[1],n=b(I);if(!M)return this.renderDefaultFeedback(this.context.$bs_formGroup,t,n,g);var o=r.a.Children.only(M);return r.a.cloneElement(o,i()({},g,{className:Q()(o.props.className,t,n)}))},t}(r.a.Component);TM.defaultProps={bsRole:"feedback"},TM.contextTypes=EM;var NM=k("form-control-feedback",TM),cM={componentClass:BA.a},aM=function(A){function t(){return o()(this,t),T()(this,A.apply(this,arguments))}return c()(t,A),t.prototype.render=function(){var A=this.props,t=A.componentClass,M=A.className,e=V(D()(A,["componentClass","className"])),I=e[0],g=e[1],n=b(I);return r.a.createElement(t,i()({},g,{className:Q()(M,n)}))},t}(r.a.Component);aM.propTypes=cM,aM.defaultProps={componentClass:"p"};var rM=k("form-control-static",aM),CM={componentClass:BA.a,type:l.a.string,id:l.a.string,inputRef:l.a.func},DM={$bs_formGroup:l.a.object},BM=function(A){function t(){return o()(this,t),T()(this,A.apply(this,arguments))}return c()(t,A),t.prototype.render=function(){var A=this.context.$bs_formGroup,t=A&&A.controlId,M=this.props,e=M.componentClass,I=M.type,g=M.id,n=void 0===g?t:g,o=M.inputRef,E=M.className,T=M.bsSize,N=V(D()(M,["componentClass","type","id","inputRef","className","bsSize"])),c=N[0],a=N[1],C=void 0;("file"!==I&&(C=b(c)),T)&&(C[R({bsClass:"input"},S[T]||T)]=!0);return r.a.createElement(e,i()({},a,{type:I,id:n,ref:o,className:Q()(E,C)}))},t}(r.a.Component);BM.propTypes=CM,BM.defaultProps={componentClass:"input"},BM.contextTypes=DM,BM.Feedback=NM,BM.Static=rM;var QM=k("form-control",J([h,Y],BM)),sM={controlId:l.a.string,validationState:l.a.oneOf(["success","warning","error",null])},lM={$bs_formGroup:l.a.object.isRequired},uM=function(A){function t(){return o()(this,t),T()(this,A.apply(this,arguments))}return c()(t,A),t.prototype.getChildContext=function(){var A=this.props;return{$bs_formGroup:{controlId:A.controlId,validationState:A.validationState}}},t.prototype.hasFeedback=function(A){var t=this;return K.some(A,function(A){return"feedback"===A.props.bsRole||A.props.children&&t.hasFeedback(A.props.children)})},t.prototype.render=function(){var A=this.props,t=A.validationState,M=A.className,e=A.children,I=X(D()(A,["validationState","className","children"]),["controlId"]),g=I[0],n=I[1],o=i()({},b(g),{"has-feedback":this.hasFeedback(e)});return t&&(o["has-"+t]=!0),r.a.createElement("div",i()({},n,{className:Q()(M,o)}),e)},t}(r.a.Component);uM.propTypes=sM,uM.childContextTypes=lM;var yM=k("form-group",J([Y,h],uM)),xM={fluid:l.a.bool,componentClass:BA.a},wM=function(A){function t(){return o()(this,t),T()(this,A.apply(this,arguments))}return c()(t,A),t.prototype.render=function(){var A=this.props,t=A.fluid,M=A.componentClass,e=A.className,I=V(D()(A,["fluid","componentClass","className"])),g=I[0],n=I[1],o=R(g,t&&"fluid");return r.a.createElement(M,i()({},n,{className:Q()(e,o)}))},t}(r.a.Component);wM.propTypes=xM,wM.defaultProps={componentClass:"div",fluid:!1};var jM=k("container",wM),dM=function(A){function t(){return o()(this,t),T()(this,A.apply(this,arguments))}return c()(t,A),t.prototype.render=function(){var A=this.props,t=A.className,M=V(D()(A,["className"])),e=M[0],I=M[1],g=b(e);return r.a.createElement("span",i()({},I,{className:Q()(t,g)}))},t}(r.a.Component),YM=k("help-block",dM),hM={responsive:l.a.bool,rounded:l.a.bool,circle:l.a.bool,thumbnail:l.a.bool},LM=function(A){function t(){return o()(this,t),T()(this,A.apply(this,arguments))}return c()(t,A),t.prototype.render=function(){var A,t=this.props,M=t.responsive,e=t.rounded,I=t.circle,g=t.thumbnail,n=t.className,o=V(D()(t,["responsive","rounded","circle","thumbnail","className"])),E=o[0],T=o[1],N=((A={})[R(E,"responsive")]=M,A[R(E,"rounded")]=e,A[R(E,"circle")]=I,A[R(E,"thumbnail")]=g,A);return r.a.createElement("img",i()({},T,{className:Q()(n,N)}))},t}(r.a.Component);LM.propTypes=hM,LM.defaultProps={responsive:!1,rounded:!1,circle:!1,thumbnail:!1};var SM=k("img",LM),zM=function(A){function t(){return o()(this,t),T()(this,A.apply(this,arguments))}return c()(t,A),t.prototype.render=function(){var A=this.props,t=A.className,M=V(D()(A,["className"])),e=M[0],I=M[1],g=b(e);return r.a.createElement("span",i()({},I,{className:Q()(t,g)}))},t}(r.a.Component),UM=k("input-group-addon",zM),pM=function(A){function t(){return o()(this,t),T()(this,A.apply(this,arguments))}return c()(t,A),t.prototype.render=function(){var A=this.props,t=A.className,M=V(D()(A,["className"])),e=M[0],I=M[1],g=b(e);return r.a.createElement("span",i()({},I,{className:Q()(t,g)}))},t}(r.a.Component),fM=k("input-group-btn",pM),FM=function(A){function t(){return o()(this,t),T()(this,A.apply(this,arguments))}return c()(t,A),t.prototype.render=function(){var A=this.props,t=A.className,M=V(D()(A,["className"])),e=M[0],I=M[1],g=b(e);return r.a.createElement("span",i()({},I,{className:Q()(t,g)}))},t}(r.a.Component);FM.Addon=UM,FM.Button=fM;var mM=k("input-group",J([Y,h],FM)),OM={componentClass:BA.a},RM=function(A){function t(){return o()(this,t),T()(this,A.apply(this,arguments))}return c()(t,A),t.prototype.render=function(){var A=this.props,t=A.componentClass,M=A.className,e=V(D()(A,["componentClass","className"])),I=e[0],g=e[1],n=b(I);return r.a.createElement(t,i()({},g,{className:Q()(M,n)}))},t}(r.a.Component);RM.propTypes=OM,RM.defaultProps={componentClass:"div"};var kM=k("jumbotron",RM),GM=function(A){function t(){return o()(this,t),T()(this,A.apply(this,arguments))}return c()(t,A),t.prototype.hasContent=function(A){var t=!1;return r.a.Children.forEach(A,function(A){t||(A||0===A)&&(t=!0)}),t},t.prototype.render=function(){var A=this.props,t=A.className,M=A.children,e=V(D()(A,["className","children"])),I=e[0],g=e[1],n=i()({},b(I),{hidden:!this.hasContent(M)});return r.a.createElement("span",i()({},g,{className:Q()(t,n)}),M)},t}(r.a.Component),JM=k("label",G([].concat(iA()(U),[p,f]),p,GM)),bM={active:l.a.any,disabled:l.a.any,header:l.a.node,listItem:l.a.bool,onClick:l.a.func,href:l.a.string,type:l.a.string},HM=function(A){function t(){return o()(this,t),T()(this,A.apply(this,arguments))}return c()(t,A),t.prototype.renderHeader=function(A,t){return r.a.isValidElement(A)?Object(a.cloneElement)(A,{className:Q()(A.props.className,t)}):r.a.createElement("h4",{className:t},A)},t.prototype.render=function(){var A=this.props,t=A.active,M=A.disabled,e=A.className,I=A.header,g=A.listItem,n=A.children,o=V(D()(A,["active","disabled","className","header","listItem","children"])),E=o[0],T=o[1],N=i()({},b(E),{active:t,disabled:M}),c=void 0;return T.href?c="a":T.onClick?(c="button",T.type=T.type||"button"):c=g?"li":"span",T.className=Q()(e,N),I?r.a.createElement(c,T,this.renderHeader(I,R(E,"heading")),r.a.createElement("p",{className:R(E,"text")},n)):r.a.createElement(c,T,n)},t}(r.a.Component);HM.propTypes=bM,HM.defaultProps={listItem:!1};var vM=k("list-group-item",G(iA()(U),HM)),VM={componentClass:BA.a};var XM=function(A){function t(){return o()(this,t),T()(this,A.apply(this,arguments))}return c()(t,A),t.prototype.render=function(){var A=this.props,t=A.children,M=A.componentClass,e=void 0===M?function(A){return A?K.some(A,function(A){return A.type!==vM||A.props.href||A.props.onClick})?"div":"ul":"div"}(t):M,I=A.className,g=V(D()(A,["children","componentClass","className"])),n=g[0],o=g[1],E=b(n),T="ul"===e&&K.every(t,function(A){return A.type===vM});return r.a.createElement(e,i()({},o,{className:Q()(I,E)}),T?K.map(t,function(A){return Object(a.cloneElement)(A,{listItem:!0})}):t)},t}(r.a.Component);XM.propTypes=VM;var WM=k("list-group",XM),PM={align:l.a.oneOf(["top","middle","bottom"]),componentClass:BA.a},KM=function(A){function t(){return o()(this,t),T()(this,A.apply(this,arguments))}return c()(t,A),t.prototype.render=function(){var A=this.props,t=A.componentClass,M=A.align,e=A.className,I=V(D()(A,["componentClass","align","className"])),g=I[0],n=I[1],o=b(g);return M&&(o[R(ce.defaultProps,M)]=!0),r.a.createElement(t,i()({},n,{className:Q()(e,o)}))},t}(r.a.Component);KM.propTypes=PM,KM.defaultProps={componentClass:"div"};var ZM=k("media-body",KM),qM={componentClass:BA.a},_M=function(A){function t(){return o()(this,t),T()(this,A.apply(this,arguments))}return c()(t,A),t.prototype.render=function(){var A=this.props,t=A.componentClass,M=A.className,e=V(D()(A,["componentClass","className"])),I=e[0],g=e[1],n=b(I);return r.a.createElement(t,i()({},g,{className:Q()(M,n)}))},t}(r.a.Component);_M.propTypes=qM,_M.defaultProps={componentClass:"h4"};var $M=k("media-heading",_M),Ae={align:l.a.oneOf(["top","middle","bottom"])},te=function(A){function t(){return o()(this,t),T()(this,A.apply(this,arguments))}return c()(t,A),t.prototype.render=function(){var A=this.props,t=A.align,M=A.className,e=V(D()(A,["align","className"])),I=e[0],g=e[1],n=b(I);return t&&(n[R(ce.defaultProps,t)]=!0),r.a.createElement("div",i()({},g,{className:Q()(M,n)}))},t}(r.a.Component);te.propTypes=Ae;var Me=k("media-left",te),ee=function(A){function t(){return o()(this,t),T()(this,A.apply(this,arguments))}return c()(t,A),t.prototype.render=function(){var A=this.props,t=A.className,M=V(D()(A,["className"])),e=M[0],I=M[1],g=b(e);return r.a.createElement("ul",i()({},I,{className:Q()(t,g)}))},t}(r.a.Component),Ie=k("media-list",ee),ge=function(A){function t(){return o()(this,t),T()(this,A.apply(this,arguments))}return c()(t,A),t.prototype.render=function(){var A=this.props,t=A.className,M=V(D()(A,["className"])),e=M[0],I=M[1],g=b(e);return r.a.createElement("li",i()({},I,{className:Q()(t,g)}))},t}(r.a.Component),ie=k("media",ge),ne={align:l.a.oneOf(["top","middle","bottom"])},oe=function(A){function t(){return o()(this,t),T()(this,A.apply(this,arguments))}return c()(t,A),t.prototype.render=function(){var A=this.props,t=A.align,M=A.className,e=V(D()(A,["align","className"])),I=e[0],g=e[1],n=b(I);return t&&(n[R(ce.defaultProps,t)]=!0),r.a.createElement("div",i()({},g,{className:Q()(M,n)}))},t}(r.a.Component);oe.propTypes=ne;var Ee=k("media-right",oe),Te={componentClass:BA.a},Ne=function(A){function t(){return o()(this,t),T()(this,A.apply(this,arguments))}return c()(t,A),t.prototype.render=function(){var A=this.props,t=A.componentClass,M=A.className,e=V(D()(A,["componentClass","className"])),I=e[0],g=e[1],n=b(I);return r.a.createElement(t,i()({},g,{className:Q()(M,n)}))},t}(r.a.Component);Ne.propTypes=Te,Ne.defaultProps={componentClass:"div"},Ne.Heading=$M,Ne.Body=ZM,Ne.Left=Me,Ne.Right=Ee,Ne.List=Ie,Ne.ListItem=ie;var ce=k("media",Ne),ae={active:l.a.bool,disabled:l.a.bool,divider:UA()(l.a.bool,function(A){var t=A.divider,M=A.children;return t&&M?new Error("Children will not be rendered for dividers"):null}),eventKey:l.a.any,header:l.a.bool,href:l.a.string,onClick:l.a.func,onSelect:l.a.func},re=function(A){function t(M,e){o()(this,t);var I=T()(this,A.call(this,M,e));return I.handleClick=I.handleClick.bind(I),I}return c()(t,A),t.prototype.handleClick=function(A){var t=this.props,M=t.href,e=t.disabled,I=t.onSelect,g=t.eventKey;M&&!e||A.preventDefault(),e||I&&I(g,A)},t.prototype.render=function(){var A=this.props,t=A.active,M=A.disabled,e=A.divider,I=A.header,g=A.onClick,n=A.className,o=A.style,E=X(D()(A,["active","disabled","divider","header","onClick","className","style"]),["eventKey","onSelect"]),T=E[0],N=E[1];return e?(N.children=void 0,r.a.createElement("li",i()({},N,{role:"separator",className:Q()(n,"divider"),style:o}))):I?r.a.createElement("li",i()({},N,{role:"heading",className:Q()(n,R(T,"header")),style:o})):r.a.createElement("li",{role:"presentation",className:Q()(n,{active:t,disabled:M}),style:o},r.a.createElement(yA,i()({},N,{role:"menuitem",tabIndex:"-1",onClick:QA(g,this.handleClick)})))},t}(r.a.Component);re.propTypes=ae,re.defaultProps={divider:!1,disabled:!1,header:!1};var Ce=k("dropdown",re),De=M(197),Be=M.n(De),Qe=M(193),se=M.n(Qe),le=M(65),ue=M.n(le),ye=M(198),xe=M.n(ye),we=M(97),je=M.n(we),de=M(195),Ye=M.n(de),he={componentClass:BA.a},Le=function(A){function t(){return o()(this,t),T()(this,A.apply(this,arguments))}return c()(t,A),t.prototype.render=function(){var A=this.props,t=A.componentClass,M=A.className,e=V(D()(A,["componentClass","className"])),I=e[0],g=e[1],n=b(I);return r.a.createElement(t,i()({},g,{className:Q()(M,n)}))},t}(r.a.Component);Le.propTypes=he,Le.defaultProps={componentClass:"div"};var Se=k("modal-body",Le),ze={dialogClassName:l.a.string},Ue=function(A){function t(){return o()(this,t),T()(this,A.apply(this,arguments))}return c()(t,A),t.prototype.render=function(){var A,t=this.props,M=t.dialogClassName,e=t.className,I=t.style,g=t.children,n=V(D()(t,["dialogClassName","className","style","children"])),o=n[0],E=n[1],T=R(o),N=i()({display:"block"},I),c=i()({},b(o),((A={})[T]=!1,A[R(o,"dialog")]=!0,A));return r.a.createElement("div",i()({},E,{tabIndex:"-1",role:"dialog",style:N,className:Q()(e,T)}),r.a.createElement("div",{className:Q()(M,c)},r.a.createElement("div",{className:R(o,"content"),role:"document"},g)))},t}(r.a.Component);Ue.propTypes=ze;var pe=k("modal",J([Y,h],Ue)),fe={componentClass:BA.a},Fe=function(A){function t(){return o()(this,t),T()(this,A.apply(this,arguments))}return c()(t,A),t.prototype.render=function(){var A=this.props,t=A.componentClass,M=A.className,e=V(D()(A,["componentClass","className"])),I=e[0],g=e[1],n=b(I);return r.a.createElement(t,i()({},g,{className:Q()(M,n)}))},t}(r.a.Component);Fe.propTypes=fe,Fe.defaultProps={componentClass:"div"};var me=k("modal-footer",Fe),Oe={closeLabel:l.a.string,closeButton:l.a.bool,onHide:l.a.func},Re={$bs_modal:l.a.shape({onHide:l.a.func})},ke=function(A){function t(){return o()(this,t),T()(this,A.apply(this,arguments))}return c()(t,A),t.prototype.render=function(){var A=this.props,t=A.closeLabel,M=A.closeButton,e=A.onHide,I=A.className,g=A.children,n=D()(A,["closeLabel","closeButton","onHide","className","children"]),o=this.context.$bs_modal,E=V(n),T=E[0],N=E[1],c=b(T);return r.a.createElement("div",i()({},N,{className:Q()(I,c)}),M&&r.a.createElement(EA,{label:t,onClick:QA(o&&o.onHide,e)}),g)},t}(r.a.Component);ke.propTypes=Oe,ke.defaultProps={closeLabel:"Close",closeButton:!1},ke.contextTypes=Re;var Ge=k("modal-header",ke),Je={componentClass:BA.a},be=function(A){function t(){return o()(this,t),T()(this,A.apply(this,arguments))}return c()(t,A),t.prototype.render=function(){var A=this.props,t=A.componentClass,M=A.className,e=V(D()(A,["componentClass","className"])),I=e[0],g=e[1],n=b(I);return r.a.createElement(t,i()({},g,{className:Q()(M,n)}))},t}(r.a.Component);be.propTypes=Je,be.defaultProps={componentClass:"h4"};var He=k("modal-title",be),ve=i()({},je.a.propTypes,pe.propTypes,{backdrop:l.a.oneOf(["static",!0,!1]),backdropClassName:l.a.string,keyboard:l.a.bool,animation:l.a.bool,dialogComponentClass:BA.a,autoFocus:l.a.bool,enforceFocus:l.a.bool,restoreFocus:l.a.bool,show:l.a.bool,onHide:l.a.func,onEnter:l.a.func,onEntering:l.a.func,onEntered:l.a.func,onExit:l.a.func,onExiting:l.a.func,onExited:l.a.func,container:je.a.propTypes.container}),Ve=i()({},je.a.defaultProps,{animation:!0,dialogComponentClass:pe}),Xe={$bs_modal:l.a.shape({onHide:l.a.func})};function We(A){return r.a.createElement(gM,i()({},A,{timeout:Ke.TRANSITION_DURATION}))}function Pe(A){return r.a.createElement(gM,i()({},A,{timeout:Ke.BACKDROP_TRANSITION_DURATION}))}var Ke=function(A){function t(M,e){o()(this,t);var I=T()(this,A.call(this,M,e));return I.handleEntering=I.handleEntering.bind(I),I.handleExited=I.handleExited.bind(I),I.handleWindowResize=I.handleWindowResize.bind(I),I.handleDialogClick=I.handleDialogClick.bind(I),I.setModalRef=I.setModalRef.bind(I),I.state={style:{}},I}return c()(t,A),t.prototype.getChildContext=function(){return{$bs_modal:{onHide:this.props.onHide}}},t.prototype.componentWillUnmount=function(){this.handleExited()},t.prototype.setModalRef=function(A){this._modal=A},t.prototype.handleDialogClick=function(A){A.target===A.currentTarget&&this.props.onHide()},t.prototype.handleEntering=function(){Be.a.on(window,"resize",this.handleWindowResize),this.updateStyle()},t.prototype.handleExited=function(){Be.a.off(window,"resize",this.handleWindowResize)},t.prototype.handleWindowResize=function(){this.updateStyle()},t.prototype.updateStyle=function(){if(ue.a){var A=this._modal.getDialogElement(),t=A.scrollHeight,M=se()(A),e=Ye()(bA.a.findDOMNode(this.props.container||M.body)),I=t>M.documentElement.clientHeight;this.setState({style:{paddingRight:e&&!I?xe()():void 0,paddingLeft:!e&&I?xe()():void 0}})}},t.prototype.render=function(){var A=this.props,t=A.backdrop,M=A.backdropClassName,e=A.animation,I=A.show,g=A.dialogComponentClass,n=A.className,o=A.style,E=A.children,T=A.onEntering,N=A.onExited,c=D()(A,["backdrop","backdropClassName","animation","show","dialogComponentClass","className","style","children","onEntering","onExited"]),a=qt(c,je.a),C=a[0],B=a[1],s=I&&!e&&"in";return r.a.createElement(je.a,i()({},C,{ref:this.setModalRef,show:I,containerClassName:R(c,"open"),transition:e?We:void 0,backdrop:t,backdropTransition:e?Pe:void 0,backdropClassName:Q()(R(c,"backdrop"),M,s),onEntering:QA(T,this.handleEntering),onExited:QA(N,this.handleExited)}),r.a.createElement(g,i()({},B,{style:i()({},this.state.style,o),className:Q()(n,s),onClick:!0===t?this.handleDialogClick:null}),E))},t}(r.a.Component);Ke.propTypes=ve,Ke.defaultProps=Ve,Ke.childContextTypes=Xe,Ke.Body=Se,Ke.Header=Ge,Ke.Title=He,Ke.Footer=me,Ke.Dialog=pe,Ke.TRANSITION_DURATION=300,Ke.BACKDROP_TRANSITION_DURATION=150;var Ze=k("modal",J([Y,h],Ke)),qe={activeKey:l.a.any,activeHref:l.a.string,stacked:l.a.bool,justified:UA()(l.a.bool,function(A){var t=A.justified,M=A.navbar;return t&&M?Error("justified navbar ` + "`" + `Nav` + "`" + `s are not supported"):null}),onSelect:l.a.func,role:l.a.string,navbar:l.a.bool,pullRight:l.a.bool,pullLeft:l.a.bool},_e={$bs_navbar:l.a.shape({bsClass:l.a.string,onSelect:l.a.func}),$bs_tabContainer:l.a.shape({activeKey:l.a.any,onSelect:l.a.func.isRequired,getTabId:l.a.func.isRequired,getPaneId:l.a.func.isRequired})},$e=function(A){function t(){return o()(this,t),T()(this,A.apply(this,arguments))}return c()(t,A),t.prototype.componentDidUpdate=function(){var A=this;if(this._needsRefocus){this._needsRefocus=!1;var t=this.props.children,M=this.getActiveProps(),e=M.activeKey,I=M.activeHref,g=K.find(t,function(t){return A.isActive(t,e,I)}),i=K.toArray(t).indexOf(g),n=bA.a.findDOMNode(this).children,o=n&&n[i];o&&o.firstChild&&o.firstChild.focus()}},t.prototype.getActiveProps=function(){var A=this.context.$bs_tabContainer;return A||this.props},t.prototype.getNextActiveChild=function(A){var t=this,M=this.props.children,e=M.filter(function(A){return null!=A.props.eventKey&&!A.props.disabled}),I=this.getActiveProps(),g=I.activeKey,i=I.activeHref,n=K.find(M,function(A){return t.isActive(A,g,i)}),o=e.indexOf(n);if(-1===o)return e[0];var E=o+A,T=e.length;return E>=T?E=0:E<0&&(E=T-1),e[E]},t.prototype.getTabProps=function(A,t,M,e,I){var g=this;if(!t&&"tablist"!==M)return null;var i=A.props,n=i.id,o=i["aria-controls"],E=i.eventKey,T=i.role,N=i.onKeyDown,c=i.tabIndex;return t&&(n=t.getTabId(E),o=t.getPaneId(E)),"tablist"===M&&(T=T||"tab",N=QA(function(A){return g.handleTabKeyDown(I,A)},N),c=e?c:-1),{id:n,role:T,onKeyDown:N,"aria-controls":o,tabIndex:c}},t.prototype.handleTabKeyDown=function(A,t){var M=void 0;switch(t.keyCode){case zt.a.codes.left:case zt.a.codes.up:M=this.getNextActiveChild(-1);break;case zt.a.codes.right:case zt.a.codes.down:M=this.getNextActiveChild(1);break;default:return}t.preventDefault(),A&&M&&null!=M.props.eventKey&&A(M.props.eventKey),this._needsRefocus=!0},t.prototype.isActive=function(A,t,M){var e=A.props;return!!(e.active||null!=t&&e.eventKey===t||M&&e.href===M)||e.active},t.prototype.render=function(){var A,t=this,M=this.props,e=M.stacked,I=M.justified,g=M.onSelect,n=M.role,o=M.navbar,E=M.pullRight,T=M.pullLeft,N=M.className,c=M.children,C=D()(M,["stacked","justified","onSelect","role","navbar","pullRight","pullLeft","className","children"]),B=this.context.$bs_tabContainer,s=n||(B?"tablist":null),l=this.getActiveProps(),u=l.activeKey,y=l.activeHref;delete C.activeKey,delete C.activeHref;var x=V(C),w=x[0],j=x[1],d=i()({},b(w),((A={})[R(w,"stacked")]=e,A[R(w,"justified")]=I,A)),Y=null!=o?o:this.context.$bs_navbar,h=void 0,L=void 0;if(Y){var S=this.context.$bs_navbar||{bsClass:"navbar"};d[R(S,"nav")]=!0,L=R(S,"right"),h=R(S,"left")}else L="pull-right",h="pull-left";return d[L]=E,d[h]=T,r.a.createElement("ul",i()({},j,{role:s,className:Q()(N,d)}),K.map(c,function(A){var M=t.isActive(A,u,y),e=QA(A.props.onSelect,g,Y&&Y.onSelect,B&&B.onSelect);return Object(a.cloneElement)(A,i()({},t.getTabProps(A,B,s,M,e),{active:M,activeKey:u,activeHref:y,onSelect:e}))}))},t}(r.a.Component);$e.propTypes=qe,$e.defaultProps={justified:!1,pullRight:!1,pullLeft:!1,stacked:!1},$e.contextTypes=_e;var AI=k("nav",G(["tabs","pills"],$e)),tI={$bs_navbar:l.a.shape({bsClass:l.a.string})},MI=function(A){function t(){return o()(this,t),T()(this,A.apply(this,arguments))}return c()(t,A),t.prototype.render=function(){var A=this.props,t=A.className,M=A.children,e=D()(A,["className","children"]),I=R(this.context.$bs_navbar||{bsClass:"navbar"},"brand");return r.a.isValidElement(M)?r.a.cloneElement(M,{className:Q()(M.props.className,t,I)}):r.a.createElement("span",i()({},e,{className:Q()(t,I)}),M)},t}(r.a.Component);MI.contextTypes=tI;var eI=MI,II={$bs_navbar:l.a.shape({bsClass:l.a.string,expanded:l.a.bool})},gI=function(A){function t(){return o()(this,t),T()(this,A.apply(this,arguments))}return c()(t,A),t.prototype.render=function(){var A=this.props,t=A.children,M=D()(A,["children"]),e=this.context.$bs_navbar||{bsClass:"navbar"},I=R(e,"collapse");return r.a.createElement(jt,i()({in:e.expanded},M),r.a.createElement("div",{className:I},t))},t}(r.a.Component);gI.contextTypes=II;var iI=gI,nI={$bs_navbar:l.a.shape({bsClass:l.a.string})},oI=function(A){function t(){return o()(this,t),T()(this,A.apply(this,arguments))}return c()(t,A),t.prototype.render=function(){var A=this.props,t=A.className,M=D()(A,["className"]),e=R(this.context.$bs_navbar||{bsClass:"navbar"},"header");return r.a.createElement("div",i()({},M,{className:Q()(t,e)}))},t}(r.a.Component);oI.contextTypes=nI;var EI=oI,TI={onClick:l.a.func,children:l.a.node},NI={$bs_navbar:l.a.shape({bsClass:l.a.string,expanded:l.a.bool,onToggle:l.a.func.isRequired})},cI=function(A){function t(){return o()(this,t),T()(this,A.apply(this,arguments))}return c()(t,A),t.prototype.render=function(){var A=this.props,t=A.onClick,M=A.className,e=A.children,I=D()(A,["onClick","className","children"]),g=this.context.$bs_navbar||{bsClass:"navbar"},n=i()({type:"button"},I,{onClick:QA(t,g.onToggle),className:Q()(M,R(g,"toggle"),!g.expanded&&"collapsed")});return e?r.a.createElement("button",n,e):r.a.createElement("button",n,r.a.createElement("span",{className:"sr-only"},"Toggle navigation"),r.a.createElement("span",{className:"icon-bar"}),r.a.createElement("span",{className:"icon-bar"}),r.a.createElement("span",{className:"icon-bar"}))},t}(r.a.Component);cI.propTypes=TI,cI.contextTypes=NI;var aI=cI,rI={fixedTop:l.a.bool,fixedBottom:l.a.bool,staticTop:l.a.bool,inverse:l.a.bool,fluid:l.a.bool,componentClass:BA.a,onToggle:l.a.func,onSelect:l.a.func,collapseOnSelect:l.a.bool,expanded:l.a.bool,role:l.a.string},CI={$bs_navbar:l.a.shape({bsClass:l.a.string,expanded:l.a.bool,onToggle:l.a.func.isRequired,onSelect:l.a.func})},DI=function(A){function t(M,e){o()(this,t);var I=T()(this,A.call(this,M,e));return I.handleToggle=I.handleToggle.bind(I),I.handleCollapse=I.handleCollapse.bind(I),I}return c()(t,A),t.prototype.getChildContext=function(){var A=this.props,t=A.bsClass,M=A.expanded,e=A.onSelect,I=A.collapseOnSelect;return{$bs_navbar:{bsClass:t,expanded:M,onToggle:this.handleToggle,onSelect:QA(e,I?this.handleCollapse:null)}}},t.prototype.handleCollapse=function(){var A=this.props,t=A.onToggle;A.expanded&&t(!1)},t.prototype.handleToggle=function(){var A=this.props;(0,A.onToggle)(!A.expanded)},t.prototype.render=function(){var A,t=this.props,M=t.componentClass,e=t.fixedTop,I=t.fixedBottom,g=t.staticTop,n=t.inverse,o=t.fluid,E=t.className,T=t.children,N=X(D()(t,["componentClass","fixedTop","fixedBottom","staticTop","inverse","fluid","className","children"]),["expanded","onToggle","onSelect","collapseOnSelect"]),c=N[0],a=N[1];void 0===a.role&&"nav"!==M&&(a.role="navigation"),n&&(c.bsStyle=m);var C=i()({},b(c),((A={})[R(c,"fixed-top")]=e,A[R(c,"fixed-bottom")]=I,A[R(c,"static-top")]=g,A));return r.a.createElement(M,i()({},a,{className:Q()(E,C)}),r.a.createElement(jM,{fluid:o},T))},t}(r.a.Component);DI.propTypes=rI,DI.defaultProps={componentClass:"nav",fixedTop:!1,fixedBottom:!1,staticTop:!1,inverse:!1,fluid:!1,collapseOnSelect:!1},DI.childContextTypes=CI,k("navbar",DI);var BI=y()(DI,{expanded:"onToggle"});function QI(A,t,M){var e=function(A,M){var e=M.$bs_navbar,I=void 0===e?{bsClass:"navbar"}:e,g=A.componentClass,n=A.className,o=A.pullRight,E=A.pullLeft,T=D()(A,["componentClass","className","pullRight","pullLeft"]);return r.a.createElement(g,i()({},T,{className:Q()(n,R(I,t),o&&R(I,"right"),E&&R(I,"left"))}))};return e.displayName=M,e.propTypes={componentClass:BA.a,pullRight:l.a.bool,pullLeft:l.a.bool},e.defaultProps={componentClass:A,pullRight:!1,pullLeft:!1},e.contextTypes={$bs_navbar:l.a.shape({bsClass:l.a.string})},e}BI.Brand=eI,BI.Header=EI,BI.Toggle=aI,BI.Collapse=iI,BI.Form=QI("div","form","NavbarForm"),BI.Text=QI("p","text","NavbarText"),BI.Link=QI("a","link","NavbarLink");var sI=G([p,m],p,BI),lI=i()({},Zt.propTypes,{title:l.a.node.isRequired,noCaret:l.a.bool,active:l.a.bool,activeKey:l.a.any,activeHref:l.a.string,children:l.a.node}),uI=function(A){function t(){return o()(this,t),T()(this,A.apply(this,arguments))}return c()(t,A),t.prototype.isActive=function(A,t,M){var e=A.props,I=this;return!!(e.active||null!=t&&e.eventKey===t||M&&e.href===M)||(!!K.some(e.children,function(A){return I.isActive(A,t,M)})||e.active)},t.prototype.render=function(){var A=this,t=this.props,M=t.title,e=t.activeKey,I=t.activeHref,g=t.className,n=t.style,o=t.children,E=D()(t,["title","activeKey","activeHref","className","style","children"]),T=this.isActive(this,e,I);delete E.active,delete E.eventKey;var N=qt(E,Zt.ControlledComponent),c=N[0],a=N[1];return r.a.createElement(Zt,i()({},c,{componentClass:"li",className:Q()(g,{active:T}),style:n}),r.a.createElement(Zt.Toggle,i()({},a,{useAnchor:!0}),M),r.a.createElement(Zt.Menu,null,K.map(o,function(t){return r.a.cloneElement(t,{active:A.isActive(t,e,I)})})))},t}(r.a.Component);uI.propTypes=lI;var yI=uI,xI={active:l.a.bool,disabled:l.a.bool,role:l.a.string,href:l.a.string,onClick:l.a.func,onSelect:l.a.func,eventKey:l.a.any},wI=function(A){function t(M,e){o()(this,t);var I=T()(this,A.call(this,M,e));return I.handleClick=I.handleClick.bind(I),I}return c()(t,A),t.prototype.handleClick=function(A){this.props.disabled?A.preventDefault():this.props.onSelect&&this.props.onSelect(this.props.eventKey,A)},t.prototype.render=function(){var A=this.props,t=A.active,M=A.disabled,e=A.onClick,I=A.className,g=A.style,n=D()(A,["active","disabled","onClick","className","style"]);return delete n.onSelect,delete n.eventKey,delete n.activeKey,delete n.activeHref,n.role?"tab"===n.role&&(n["aria-selected"]=t):"#"===n.href&&(n.role="button"),r.a.createElement("li",{role:"presentation",className:Q()(I,{active:t,disabled:M}),style:g},r.a.createElement(yA,i()({},n,{disabled:M,onClick:QA(e,this.handleClick)})))},t}(r.a.Component);wI.propTypes=xI,wI.defaultProps={active:!1,disabled:!1};var jI=wI,dI=M(199),YI=M.n(dI),hI=i()({},YI.a.propTypes,{show:l.a.bool,rootClose:l.a.bool,onHide:l.a.func,animation:l.a.oneOfType([l.a.bool,BA.a]),onEnter:l.a.func,onEntering:l.a.func,onEntered:l.a.func,onExit:l.a.func,onExiting:l.a.func,onExited:l.a.func,placement:l.a.oneOf(["top","right","bottom","left"])}),LI={animation:gM,rootClose:!1,show:!1,placement:"right"},SI=function(A){function t(){return o()(this,t),T()(this,A.apply(this,arguments))}return c()(t,A),t.prototype.render=function(){var A=this.props,t=A.animation,M=A.children,e=D()(A,["animation","children"]),I=!0===t?gM:t||null,g=void 0;return g=I?M:Object(a.cloneElement)(M,{className:Q()(M.props.className,"in")}),r.a.createElement(YI.a,i()({},e,{transition:I}),g)},t}(r.a.Component);SI.propTypes=hI,SI.defaultProps=LI;var zI=SI;function UI(A,t){return Array.isArray(t)?t.indexOf(A)>=0:A===t}var pI=l.a.oneOf(["click","hover","focus"]),fI=i()({},zI.propTypes,{trigger:l.a.oneOfType([pI,l.a.arrayOf(pI)]),delay:l.a.number,delayShow:l.a.number,delayHide:l.a.number,defaultOverlayShown:l.a.bool,overlay:l.a.node.isRequired,onBlur:l.a.func,onClick:l.a.func,onFocus:l.a.func,onMouseOut:l.a.func,onMouseOver:l.a.func,target:l.a.oneOf([null]),onHide:l.a.oneOf([null]),show:l.a.oneOf([null])}),FI=function(A){function t(M,e){o()(this,t);var I=T()(this,A.call(this,M,e));return I.handleToggle=I.handleToggle.bind(I),I.handleDelayedShow=I.handleDelayedShow.bind(I),I.handleDelayedHide=I.handleDelayedHide.bind(I),I.handleHide=I.handleHide.bind(I),I.handleMouseOver=function(A){return I.handleMouseOverOut(I.handleDelayedShow,A,"fromElement")},I.handleMouseOut=function(A){return I.handleMouseOverOut(I.handleDelayedHide,A,"toElement")},I._mountNode=null,I.state={show:M.defaultOverlayShown},I}return c()(t,A),t.prototype.componentDidMount=function(){this._mountNode=document.createElement("div"),this.renderOverlay()},t.prototype.componentDidUpdate=function(){this.renderOverlay()},t.prototype.componentWillUnmount=function(){bA.a.unmountComponentAtNode(this._mountNode),this._mountNode=null,clearTimeout(this._hoverShowDelay),clearTimeout(this._hoverHideDelay)},t.prototype.handleDelayedHide=function(){var A=this;if(null!=this._hoverShowDelay)return clearTimeout(this._hoverShowDelay),void(this._hoverShowDelay=null);if(this.state.show&&null==this._hoverHideDelay){var t=null!=this.props.delayHide?this.props.delayHide:this.props.delay;t?this._hoverHideDelay=setTimeout(function(){A._hoverHideDelay=null,A.hide()},t):this.hide()}},t.prototype.handleDelayedShow=function(){var A=this;if(null!=this._hoverHideDelay)return clearTimeout(this._hoverHideDelay),void(this._hoverHideDelay=null);if(!this.state.show&&null==this._hoverShowDelay){var t=null!=this.props.delayShow?this.props.delayShow:this.props.delay;t?this._hoverShowDelay=setTimeout(function(){A._hoverShowDelay=null,A.show()},t):this.show()}},t.prototype.handleHide=function(){this.hide()},t.prototype.handleMouseOverOut=function(A,t,M){var e=t.currentTarget,I=t.relatedTarget||t.nativeEvent[M];I&&I===e||Lt()(e,I)||A(t)},t.prototype.handleToggle=function(){this.state.show?this.hide():this.show()},t.prototype.hide=function(){this.setState({show:!1})},t.prototype.makeOverlay=function(A,t){return r.a.createElement(zI,i()({},t,{show:this.state.show,onHide:this.handleHide,target:this}),A)},t.prototype.show=function(){this.setState({show:!0})},t.prototype.renderOverlay=function(){bA.a.unstable_renderSubtreeIntoContainer(this,this._overlay,this._mountNode)},t.prototype.render=function(){var A=this.props,t=A.trigger,M=A.overlay,e=A.children,I=A.onBlur,g=A.onClick,i=A.onFocus,n=A.onMouseOut,o=A.onMouseOver,E=D()(A,["trigger","overlay","children","onBlur","onClick","onFocus","onMouseOut","onMouseOver"]);delete E.delay,delete E.delayShow,delete E.delayHide,delete E.defaultOverlayShown;var T=r.a.Children.only(e),N=T.props,c={};return this.state.show&&(c["aria-describedby"]=M.props.id),c.onClick=QA(N.onClick,g),UI("click",t)&&(c.onClick=QA(c.onClick,this.handleToggle)),UI("hover",t)&&(c.onMouseOver=QA(N.onMouseOver,o,this.handleMouseOver),c.onMouseOut=QA(N.onMouseOut,n,this.handleMouseOut)),UI("focus",t)&&(c.onFocus=QA(N.onFocus,i,this.handleDelayedShow),c.onBlur=QA(N.onBlur,I,this.handleDelayedHide)),this._overlay=this.makeOverlay(M,E),Object(a.cloneElement)(T,c)},t}(r.a.Component);FI.propTypes=fI,FI.defaultProps={defaultOverlayShown:!1,trigger:["hover","focus"]};var mI=FI,OI=function(A){function t(){return o()(this,t),T()(this,A.apply(this,arguments))}return c()(t,A),t.prototype.render=function(){var A=this.props,t=A.className,M=A.children,e=V(D()(A,["className","children"])),I=e[0],g=e[1],n=b(I);return r.a.createElement("div",i()({},g,{className:Q()(t,n)}),r.a.createElement("h1",null,M))},t}(r.a.Component),RI=k("page-header",OI),kI={disabled:l.a.bool,previous:l.a.bool,next:l.a.bool,onClick:l.a.func,onSelect:l.a.func,eventKey:l.a.any},GI=function(A){function t(M,e){o()(this,t);var I=T()(this,A.call(this,M,e));return I.handleSelect=I.handleSelect.bind(I),I}return c()(t,A),t.prototype.handleSelect=function(A){var t=this.props,M=t.disabled,e=t.onSelect,I=t.eventKey;M?A.preventDefault():e&&e(I,A)},t.prototype.render=function(){var A=this.props,t=A.disabled,M=A.previous,e=A.next,I=A.onClick,g=A.className,n=A.style,o=D()(A,["disabled","previous","next","onClick","className","style"]);return delete o.onSelect,delete o.eventKey,r.a.createElement("li",{className:Q()(g,{disabled:t,previous:M,next:e}),style:n},r.a.createElement(yA,i()({},o,{disabled:t,onClick:QA(I,this.handleSelect)})))},t}(r.a.Component);GI.propTypes=kI,GI.defaultProps={disabled:!1,previous:!1,next:!1};var JI=GI,bI=M(130),HI=M.n(bI),vI={};function VI(A,t,M){var e=void 0;"object"===(void 0===A?"undefined":HI()(A))?e=A.message:(e=A+" is deprecated. Use "+t+" instead.",M&&(e+="\nYou can read more about it at "+M)),vI[e]||(vI[e]=!0)}VI.wrapper=function(A){for(var t=arguments.length,M=Array(t>1?t-1:0),e=1;e` + "`" + `","` + "`" + `` + "`" + `"),WI={onSelect:l.a.func},PI=function(A){function t(){return o()(this,t),T()(this,A.apply(this,arguments))}return c()(t,A),t.prototype.render=function(){var A=this.props,t=A.onSelect,M=A.className,e=A.children,I=V(D()(A,["onSelect","className","children"])),g=I[0],n=I[1],o=b(g);return r.a.createElement("ul",i()({},n,{className:Q()(M,o)}),K.map(e,function(A){return Object(a.cloneElement)(A,{onSelect:QA(A.props.onSelect,t)})}))},t}(r.a.Component);PI.propTypes=WI,PI.Item=JI;var KI=k("pager",PI),ZI={eventKey:l.a.any,className:l.a.string,onSelect:l.a.func,disabled:l.a.bool,active:l.a.bool,activeLabel:l.a.string.isRequired};function qI(A){var t=A.active,M=A.disabled,e=A.className,I=A.style,g=A.activeLabel,n=A.children,o=D()(A,["active","disabled","className","style","activeLabel","children"]),E=t||M?"span":yA;return r.a.createElement("li",{style:I,className:Q()(e,{active:t,disabled:M})},r.a.createElement(E,i()({disabled:M},o),n,t&&r.a.createElement("span",{className:"sr-only"},g)))}function _I(A,t){var M,e,I=arguments.length>2&&void 0!==arguments[2]?arguments[2]:A;return e=M=function(A){function M(){return o()(this,M),T()(this,A.apply(this,arguments))}return c()(M,A),M.prototype.render=function(){var A=this.props,M=A.disabled,e=A.children,g=A.className,n=D()(A,["disabled","children","className"]),o=M?"span":yA;return r.a.createElement("li",i()({"aria-label":I,className:Q()(g,{disabled:M})},n),r.a.createElement(o,null,e||t))},M}(r.a.Component),M.displayName=A,M.propTypes={disabled:l.a.bool},e}qI.propTypes=ZI,qI.defaultProps={active:!1,disabled:!1,activeLabel:"(current)"};var $I=_I("First","«"),Ag=_I("Prev","‹"),tg=_I("Ellipsis","…","More"),Mg=_I("Next","›"),eg=_I("Last","»"),Ig=function(A){function t(){return o()(this,t),T()(this,A.apply(this,arguments))}return c()(t,A),t.prototype.render=function(){var A=this.props,t=A.className,M=A.children,e=V(D()(A,["className","children"])),I=e[0],g=e[1],n=b(I);return r.a.createElement("ul",i()({},g,{className:Q()(t,n)}),M)},t}(r.a.Component);k("pagination",Ig),Ig.First=$I,Ig.Prev=Ag,Ig.Ellipsis=tg,Ig.Item=qI,Ig.Next=Mg,Ig.Last=eg;var gg=Ig,ig=M(191),ng=M.n(ig),og={onEnter:l.a.func,onEntering:l.a.func,onEntered:l.a.func,onExit:l.a.func,onExiting:l.a.func,onExited:l.a.func},Eg={$bs_panel:l.a.shape({headingId:l.a.string,bodyId:l.a.string,bsClass:l.a.string,expanded:l.a.bool})},Tg=function(A){function t(){return o()(this,t),T()(this,A.apply(this,arguments))}return c()(t,A),t.prototype.render=function(){var A=this.props.children,t=this.context.$bs_panel||{},M=t.headingId,e=t.bodyId,I=t.bsClass,g=t.expanded,n=V(this.props),o=n[0],E=n[1];return o.bsClass=I||o.bsClass,M&&e&&(E.id=e,E.role=E.role||"tabpanel",E["aria-labelledby"]=M),r.a.createElement(jt,i()({in:g},E),r.a.createElement("div",{className:R(o,"collapse")},A))},t}(r.a.Component);Tg.propTypes=og,Tg.contextTypes=Eg;var Ng=k("panel",Tg),cg={collapsible:l.a.bool.isRequired},ag={$bs_panel:l.a.shape({bsClass:l.a.string})},rg=function(A){function t(){return o()(this,t),T()(this,A.apply(this,arguments))}return c()(t,A),t.prototype.render=function(){var A=this.props,t=A.children,M=A.className,e=A.collapsible,I=(this.context.$bs_panel||{}).bsClass,g=X(this.props,["collapsible"]),n=g[0],o=g[1];n.bsClass=I||n.bsClass;var E=r.a.createElement("div",i()({},o,{className:Q()(M,R(n,"body"))}),t);return e&&(E=r.a.createElement(Ng,null,E)),E},t}(r.a.Component);rg.propTypes=cg,rg.defaultProps={collapsible:!1},rg.contextTypes=ag;var Cg=k("panel",rg),Dg=M(95),Bg=M.n(Dg),Qg={componentClass:Bg.a},sg={$bs_panel:l.a.shape({headingId:l.a.string,bsClass:l.a.string})},lg=function(A){function t(){return o()(this,t),T()(this,A.apply(this,arguments))}return c()(t,A),t.prototype.render=function(){var A=this.props,t=A.children,M=A.className,e=A.componentClass,I=D()(A,["children","className","componentClass"]),g=this.context.$bs_panel||{},n=g.headingId,o=g.bsClass,E=V(I),T=E[0],N=E[1];return T.bsClass=o||T.bsClass,n&&(N.role=N.role||"tab",N.id=n),r.a.createElement(e,i()({},N,{className:Q()(M,R(T,"heading"))}),t)},t}(r.a.Component);lg.propTypes=Qg,lg.defaultProps={componentClass:"div"},lg.contextTypes=sg;var ug=k("panel",lg),yg={onClick:l.a.func,componentClass:Bg.a},xg={componentClass:yA},wg={$bs_panel:l.a.shape({bodyId:l.a.string,onToggle:l.a.func,expanded:l.a.bool})},jg=function(A){function t(){o()(this,t);for(var M=arguments.length,e=Array(M),I=0;I1?M-1:0),I=1;I0&&void 0!==arguments[0]&&arguments[0],t=this.nextStatus;if(null!==t){this.nextStatus=null,this.cancelNextCallback();var M=g.default.findDOMNode(this);t===E?this.performEnter(M,A):this.performExit(M)}else this.props.unmountOnExit&&this.state.status===o&&this.setState({status:n})},t.prototype.performEnter=function(A,t){var M=this,e=this.props.enter,I=this.context.transitionGroup?this.context.transitionGroup.isMounting:t,g=this.getTimeouts();t||e?(this.props.onEnter(A,I),this.safeSetState({status:E},function(){M.props.onEntering(A,I),M.onTransitionEnd(A,g.enter,function(){M.safeSetState({status:T},function(){M.props.onEntered(A,I)})})})):this.safeSetState({status:T},function(){M.props.onEntered(A)})},t.prototype.performExit=function(A){var t=this,M=this.props.exit,e=this.getTimeouts();M?(this.props.onExit(A),this.safeSetState({status:N},function(){t.props.onExiting(A),t.onTransitionEnd(A,e.exit,function(){t.safeSetState({status:o},function(){t.props.onExited(A)})})})):this.safeSetState({status:o},function(){t.props.onExited(A)})},t.prototype.cancelNextCallback=function(){null!==this.nextCallback&&(this.nextCallback.cancel(),this.nextCallback=null)},t.prototype.safeSetState=function(A,t){var M=this;this.pendingState=A,t=this.setNextCallback(t),this.setState(A,function(){M.pendingState=null,t()})},t.prototype.setNextCallback=function(A){var t=this,M=!0;return this.nextCallback=function(e){M&&(M=!1,t.nextCallback=null,A(e))},this.nextCallback.cancel=function(){M=!1},this.nextCallback},t.prototype.onTransitionEnd=function(A,t,M){this.setNextCallback(M),A?(this.props.addEndListener&&this.props.addEndListener(A,this.nextCallback),null!=t&&setTimeout(this.nextCallback,t)):setTimeout(this.nextCallback,0)},t.prototype.render=function(){var A=this.state.status;if(A===n)return null;var t=this.props,M=t.children,e=function(A,t){var M={};for(var e in A)t.indexOf(e)>=0||Object.prototype.hasOwnProperty.call(A,e)&&(M[e]=A[e]);return M}(t,["children"]);if(delete e.in,delete e.mountOnEnter,delete e.unmountOnExit,delete e.appear,delete e.enter,delete e.exit,delete e.timeout,delete e.addEndListener,delete e.onEnter,delete e.onEntering,delete e.onEntered,delete e.onExit,delete e.onExiting,delete e.onExited,"function"==typeof M)return M(A,e);var g=I.default.Children.only(M);return I.default.cloneElement(g,e)},t}(I.default.Component);function a(){}c.contextTypes={transitionGroup:e.object},c.childContextTypes={transitionGroup:function(){}},c.propTypes={},c.defaultProps={in:!1,mountOnEnter:!1,unmountOnExit:!1,appear:!1,enter:!0,exit:!0,onEnter:a,onEntering:a,onEntered:a,onExit:a,onExiting:a,onExited:a},c.UNMOUNTED=0,c.EXITED=1,c.ENTERING=2,c.ENTERED=3,c.EXITING=4,t.default=c},function(A,t){var M=A.exports={version:"2.4.0"};"number"==typeof __e&&(__e=M)},function(A,t,M){var e=M(33);A.exports=function(A,t,M){if(e(A),void 0===t)return A;switch(M){case 1:return function(M){return A.call(t,M)};case 2:return function(M,e){return A.call(t,M,e)};case 3:return function(M,e,I){return A.call(t,M,e,I)}}return function(){return A.apply(t,arguments)}}},function(A,t,M){"use strict";if(M(22)){var e=M(67),I=M(15),g=M(17),i=M(8),n=M(120),o=M(160),E=M(55),T=M(73),N=M(59),c=M(31),a=M(74),r=M(61),C=M(24),D=M(69),B=M(44),Q=M(28),s=M(206),l=M(100),u=M(19),y=M(25),x=M(152),w=M(70),j=M(37),d=M(71).f,Y=M(154),h=M(66),L=M(21),S=M(46),z=M(112),U=M(157),p=M(156),f=M(81),F=M(116),m=M(72),O=M(155),R=M(215),k=M(23),G=M(36),J=k.f,b=G.f,H=I.RangeError,v=I.TypeError,V=I.Uint8Array,X=Array.prototype,W=o.ArrayBuffer,P=o.DataView,K=S(0),Z=S(2),q=S(3),_=S(4),$=S(5),AA=S(6),tA=z(!0),MA=z(!1),eA=p.values,IA=p.keys,gA=p.entries,iA=X.lastIndexOf,nA=X.reduce,oA=X.reduceRight,EA=X.join,TA=X.sort,NA=X.slice,cA=X.toString,aA=X.toLocaleString,rA=L("iterator"),CA=L("toStringTag"),DA=h("typed_constructor"),BA=h("def_constructor"),QA=n.CONSTR,sA=n.TYPED,lA=n.VIEW,uA=S(1,function(A,t){return YA(U(A,A[BA]),t)}),yA=g(function(){return 1===new V(new Uint16Array([1]).buffer)[0]}),xA=!!V&&!!V.prototype.set&&g(function(){new V(1).set({})}),wA=function(A,t){if(void 0===A)throw v("Wrong length!");var M=+A,e=C(A);if(t&&!s(M,e))throw H("Wrong length!");return e},jA=function(A,t){var M=r(A);if(M<0||M%t)throw H("Wrong offset!");return M},dA=function(A){if(u(A)&&sA in A)return A;throw v(A+" is not a typed array!")},YA=function(A,t){if(!(u(A)&&DA in A))throw v("It is not a typed array constructor!");return new A(t)},hA=function(A,t){return LA(U(A,A[BA]),t)},LA=function(A,t){for(var M=0,e=t.length,I=YA(A,e);e>M;)I[M]=t[M++];return I},SA=function(A,t,M){J(A,t,{get:function(){return this._d[M]}})},zA=function(A){var t,M,e,I,g,i,n=y(A),o=arguments.length,T=o>1?arguments[1]:void 0,N=void 0!==T,c=Y(n);if(null!=c&&!x(c)){for(i=c.call(n),e=[],t=0;!(g=i.next()).done;t++)e.push(g.value);n=e}for(N&&o>2&&(T=E(T,arguments[2],2)),t=0,M=C(n.length),I=YA(this,M);M>t;t++)I[t]=N?T(n[t],t):n[t];return I},UA=function(){for(var A=0,t=arguments.length,M=YA(this,t);t>A;)M[A]=arguments[A++];return M},pA=!!V&&g(function(){aA.call(new V(1))}),fA=function(){return aA.apply(pA?NA.call(dA(this)):dA(this),arguments)},FA={copyWithin:function(A,t){return R.call(dA(this),A,t,arguments.length>2?arguments[2]:void 0)},every:function(A){return _(dA(this),A,arguments.length>1?arguments[1]:void 0)},fill:function(A){return O.apply(dA(this),arguments)},filter:function(A){return hA(this,Z(dA(this),A,arguments.length>1?arguments[1]:void 0))},find:function(A){return $(dA(this),A,arguments.length>1?arguments[1]:void 0)},findIndex:function(A){return AA(dA(this),A,arguments.length>1?arguments[1]:void 0)},forEach:function(A){K(dA(this),A,arguments.length>1?arguments[1]:void 0)},indexOf:function(A){return MA(dA(this),A,arguments.length>1?arguments[1]:void 0)},includes:function(A){return tA(dA(this),A,arguments.length>1?arguments[1]:void 0)},join:function(A){return EA.apply(dA(this),arguments)},lastIndexOf:function(A){return iA.apply(dA(this),arguments)},map:function(A){return uA(dA(this),A,arguments.length>1?arguments[1]:void 0)},reduce:function(A){return nA.apply(dA(this),arguments)},reduceRight:function(A){return oA.apply(dA(this),arguments)},reverse:function(){for(var A,t=dA(this).length,M=Math.floor(t/2),e=0;e1?arguments[1]:void 0)},sort:function(A){return TA.call(dA(this),A)},subarray:function(A,t){var M=dA(this),e=M.length,I=D(A,e);return new(U(M,M[BA]))(M.buffer,M.byteOffset+I*M.BYTES_PER_ELEMENT,C((void 0===t?e:D(t,e))-I))}},mA=function(A,t){return hA(this,NA.call(dA(this),A,t))},OA=function(A){dA(this);var t=jA(arguments[1],1),M=this.length,e=y(A),I=C(e.length),g=0;if(I+t>M)throw H("Wrong length!");for(;g255?255:255&e),I.v[r](M*t+I.o,e,yA)}(this,M,A)},enumerable:!0})};s?(D=M(function(A,M,e,I){T(A,D,E,"_d");var g,i,n,o,N=0,a=0;if(u(M)){if(!(M instanceof W||"ArrayBuffer"==(o=l(M))||"SharedArrayBuffer"==o))return sA in M?LA(D,M):zA.call(D,M);g=M,a=jA(e,t);var r=M.byteLength;if(void 0===I){if(r%t)throw H("Wrong length!");if((i=r-a)<0)throw H("Wrong length!")}else if((i=C(I)*t)+a>r)throw H("Wrong length!");n=i/t}else n=wA(M,!0),g=new W(i=n*t);for(c(A,"_d",{b:g,o:a,l:i,e:n,v:new P(g)});N>",n=g||M;if(null==t[M])return new Error("The "+I+" ` + "`" + `"+n+"` + "`" + ` is required to make ` + "`" + `"+i+"` + "`" + ` accessible for users of assistive technologies such as screen readers.");for(var o=arguments.length,E=Array(o>5?o-5:0),T=5;T0?e:M)(A)}},function(A,t,M){var e=M(63),I=M(48),g=M(166),i=M(86),n=function(A,t,M){var o,E,T,N=A&n.F,c=A&n.G,a=A&n.S,r=A&n.P,C=A&n.B,D=A&n.W,B=c?I:I[t]||(I[t]={}),Q=B.prototype,s=c?e:a?e[t]:(e[t]||{}).prototype;for(o in c&&(M=t),M)(E=!N&&s&&void 0!==s[o])&&o in B||(T=E?s[o]:M[o],B[o]=c&&"function"!=typeof s[o]?M[o]:C&&E?g(T,e):D&&s[o]==T?function(A){var t=function(t,M,e){if(this instanceof A){switch(arguments.length){case 0:return new A;case 1:return new A(t);case 2:return new A(t,M)}return new A(t,M,e)}return A.apply(this,arguments)};return t.prototype=A.prototype,t}(T):r&&"function"==typeof T?g(Function.call,T):T,r&&((B.virtual||(B.virtual={}))[o]=T,A&n.R&&Q&&!Q[o]&&i(Q,o,T)))};n.F=1,n.G=2,n.S=4,n.P=8,n.B=16,n.W=32,n.U=64,n.R=128,A.exports=n},function(A,t){var M=A.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=M)},function(A,t,M){var e=M(239),I=M(169);A.exports=function(A){return e(I(A))}},function(A,t,M){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=!("undefined"==typeof window||!window.document||!window.document.createElement),A.exports=t.default},function(A,t){var M=0,e=Math.random();A.exports=function(A){return"Symbol(".concat(void 0===A?"":A,")_",(++M+e).toString(36))}},function(A,t){A.exports=!1},function(A,t,M){var e=M(202),I=M(138);A.exports=Object.keys||function(A){return e(A,I)}},function(A,t,M){var e=M(61),I=Math.max,g=Math.min;A.exports=function(A,t){return(A=e(A))<0?I(A+t,0):g(A,t)}},function(A,t,M){var e=M(13),I=M(203),g=M(138),i=M(137)("IE_PROTO"),n=function(){},o=function(){var A,t=M(135)("iframe"),e=g.length;for(t.style.display="none",M(140).appendChild(t),t.src="javascript:",(A=t.contentWindow.document).open(),A.write("