From b4ebde0956a25e67b877463158c27f3fb85c29d7 Mon Sep 17 00:00:00 2001 From: Angel de la Torre Date: Mon, 16 Dec 2024 13:03:30 -0700 Subject: [PATCH] feat(trace): add http as additional trigger for isHttpEndpoint --- dist/index.js | 2 +- dist/index.js.map | 2 +- dist/tracing/trace.js | 2 +- dist/tracing/trace.js.map | 2 +- src/tracing/trace.ts | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/dist/index.js b/dist/index.js index fe10373..c7089d1 100644 --- a/dist/index.js +++ b/dist/index.js @@ -119384,7 +119384,7 @@ function stringToHeader(value) { } exports.stringToHeader = stringToHeader; function isHttpEndpoint(endpoint) { - return endpoint.startsWith("https://"); + return endpoint.startsWith("https://") || endpoint.startsWith("http://"); } function createTracerProvider(otlpEndpoint, otlpHeaders, workflowRunJobs, otelServiceName) { const serviceName = otelServiceName || diff --git a/dist/index.js.map b/dist/index.js.map index f8c58b7..7157e46 100644 --- a/dist/index.js.map +++ b/dist/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","mappings":";;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACrLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC5EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC9SA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACvSA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC7EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC/BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AClEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC3FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACnDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AClJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC9ZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACxGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACnSA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC3FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC/UA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACzDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC5EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACzDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC1RA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACvCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACtDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACxCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACrEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC1DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACxYA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACjnEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AChFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC3oBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACjFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC9BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC7KA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACxJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACnFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACxBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACvIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AChLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACrEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACnEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2jBA;;;;;;;;;;;;;;;;;;;;AC3jBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC3aA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC/aA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACzBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AChQA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC3BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC/DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC1CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC5GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AClCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACxCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC1CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACjFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACrCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACnQA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC/IA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC7hBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACvJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACtjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AClfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC7KA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACpHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACrSA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACzHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC/IA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACrFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACxPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACrFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC9TA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACxGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AClDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACvFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AChTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACpTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACjpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC7LA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACtKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC7tBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACx4CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC9aA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACnEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC/FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACzMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACrfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC3FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACxIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACxWA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACjCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACxoBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC7HA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACnPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACxFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC1xBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC5EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AChKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACvXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACrJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACzFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC7NA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AChFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC5FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC5DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACxFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC9EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC9DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACtDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AClDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACvBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACrCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACtDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC1DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACxDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC5CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC3CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AChFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC/DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACzHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACvBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACxBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACnHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC9BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACvBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACjCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACxCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACvBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC9DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC1EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC/BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACtDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACrDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACzCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACjFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACtGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC7CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACvBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC1BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC7CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AChDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACzBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACvBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC7BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC3EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC9EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACzDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACvFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACxCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACzCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC9DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC1KA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC7DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACnCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC7CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC1DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC/BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACvBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACrCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC3BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC/EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACtGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACvGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACpCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AClCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AClCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACjEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACvDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AChCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACjDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACjQA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACzKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACjKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACpCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC3BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACvDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC5CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC7BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACjDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACrDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC3GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACvCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACpEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC9HA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC3BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC1DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC1BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC1LA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC9BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AClIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC1GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACjDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC/8YA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACrHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC3BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACvDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACxJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC/8YA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AChDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC3BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC3DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACnCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACxBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACnCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACpEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC7CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACxCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACnFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AClIA;AACA;AACA;;;;;;;;ACFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AClEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACtDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACjDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AChHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC1GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC5DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACpCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACzIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AClCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC1BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC7BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC9CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC7BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACpCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC7BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACvDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACpCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AChCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACvCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACxCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AClCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACxBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACxCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACrCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC9CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACrCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC3EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACpIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AClGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC3GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC5FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACtCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACjdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACrLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC3FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC/FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC/QA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACxFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC9FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC5CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC7FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC9DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AChCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC3BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACxBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC1BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC5DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AChEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC9CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACnJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC1GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC/CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACtDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACzEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACjFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACjDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACnHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACzEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACzCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACjHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AChCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACjIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACjDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC1JA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AChKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AClLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACtDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACrCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACvCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AClEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACpFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC5HA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC/CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC5MA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AClEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACxCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACzRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACvIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACrGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACrNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACrFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC7DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC9BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACpFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC9CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACvDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACvBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC7BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC/BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC/BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AChEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACrDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACzDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC7BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACrCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACz+BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACp0DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACnDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC1IA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AClGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC3EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AClHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC9UA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AChEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC/CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACxGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACxDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC7CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC1BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC1GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACxEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC1BA;AACA;AACA;AACA;AACA;;;;;;;;;ACJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACzGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACzEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC5EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACpFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC1hBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACxDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACtDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACvFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACzEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACzCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACxDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC/XA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACxDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACnHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACrCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC3BA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACzBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACvBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACnHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACtQA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACrNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACrCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AClRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACpfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACpQA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACpSA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACpIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACzSA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACtlBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACzCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC/YA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACtaA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACxGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC1LA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AClDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACnEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC1DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACj1DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACzDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACxVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACnhDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACtVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC/BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACrsCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC9CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC5CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC3hCA;AACA;AACA;AACA;;;;;;;;;ACHA;AACA;AACA;AACA;;;;;;;;;ACHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC9YA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC5SA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AChIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACnGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACrMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACxXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACvGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACnCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC7HA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC1IA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC/JA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AChbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AClPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC1MA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACv2BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC/ZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AClDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC/WA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACnCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC7IA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACtKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC/ZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC5kBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACnMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACnNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACvMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACrbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AChLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACrGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AChdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACpFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AClIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC9CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC1/BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACrNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC9qBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC9EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACzEA;;;;;;;;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC7DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACzLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACvSA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACjDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC/wBA;;;;;;;;;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACvQA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACtKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACnJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACrDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACvGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACxPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACnLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC3NA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACxGA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACjUA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC7CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC7LA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACr0BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC/IA;AACA;AACA;AACA;AACA;;;;;;;;;ACJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AChDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC1uEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC/CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACvLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC5TA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AClSA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC5LA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACrHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACrOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AClfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC9DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACzgBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC/LA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC5lBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACtJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AClnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACvVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACxQA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACvCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC5kBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACnmEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACj7BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC1jBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACvnCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACroBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACjSA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACvVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC7EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACvYA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC/BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AClCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC5NA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC/UA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACrRA;;;;;;;;ACAA;;;;;;;;;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC1KA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC1DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC7MA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC1DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC9VA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACvCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACpHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACjMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACjCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC7FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC5LA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AChGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AClSA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AClDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC9SA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACxEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACvVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACvMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AChoBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACjBA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC9EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC5CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACvBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACtCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC1GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC7EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACpCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC9BA;AAEA;AACA;AACA;AACA;AA+CA;AAKA;AAEA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AArBA;AAuBA;AAKA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AAEA;AACA;AAGA;AACA;AAEA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAIA;AACA;AAEA;AACA;AACA;AAKA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AAKA;AAEA;AACA;AACA;AAEA;AAKA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAxBA;AA0BA;AAMA;AACA;AACA;AACA;AACA;AACA;AACA;AAZA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACrOA;AACA;AAEA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACLA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AAEA;AACA;AAEA;AAEA;AAOA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA7CA;;;;;;;;;;;;ACNA;AAAA;AACA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACDA;AAUA;AACA;AAQA;AAEA;AAOA;AAIA;AAEA;AAEA;AAEA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAMA;AACA;AAEA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AAEA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AAEA;AAEA;AAEA;AAEA;AAEA;AAEA;AACA;AAEA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AAMA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AAtJA;AAiKA;AAQA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AAAA;AACA;AACA;AAEA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACpRA;AACA;AAOA;AAWA;AASA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AA5DA;AAuEA;AAQA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC7GA;AACA;AACA;AACA;AASA;AASA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AAAA;AACA;AACA;AAAA;AACA;AACA;AAAA;AACA;AACA;AAAA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AAEA;AACA;AAGA;AACA;AACA;AACA;AACA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAQA;AAKA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAlCA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACtHA;AACA;AAMA;AACA;AACA;AAOA;AAEA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAbA;AAeA;AACA;AACA;AAEA;AAMA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AAjDA;;;;;;;;;ACzCA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACpNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACnGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACnOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACpFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACjTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC7LA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACrDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACjHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACnMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACv5CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AC7BA;AACA;;;;AEDA;AACA;AACA;AACA","sources":[".././node_modules/@actions/artifact/lib/artifact-client.js",".././node_modules/@actions/artifact/lib/internal/artifact-client.js",".././node_modules/@actions/artifact/lib/internal/config-variables.js",".././node_modules/@actions/artifact/lib/internal/crc64.js",".././node_modules/@actions/artifact/lib/internal/download-http-client.js",".././node_modules/@actions/artifact/lib/internal/download-specification.js",".././node_modules/@actions/artifact/lib/internal/http-manager.js",".././node_modules/@actions/artifact/lib/internal/path-and-artifact-name-validation.js",".././node_modules/@actions/artifact/lib/internal/requestUtils.js",".././node_modules/@actions/artifact/lib/internal/status-reporter.js",".././node_modules/@actions/artifact/lib/internal/upload-gzip.js",".././node_modules/@actions/artifact/lib/internal/upload-http-client.js",".././node_modules/@actions/artifact/lib/internal/upload-specification.js",".././node_modules/@actions/artifact/lib/internal/utils.js",".././node_modules/@actions/core/lib/command.js",".././node_modules/@actions/core/lib/core.js",".././node_modules/@actions/core/lib/file-command.js",".././node_modules/@actions/core/lib/oidc-utils.js",".././node_modules/@actions/core/lib/path-utils.js",".././node_modules/@actions/core/lib/summary.js",".././node_modules/@actions/core/lib/utils.js",".././node_modules/@actions/github/lib/context.js",".././node_modules/@actions/github/lib/github.js",".././node_modules/@actions/github/lib/internal/utils.js",".././node_modules/@actions/github/lib/utils.js",".././node_modules/@actions/github/node_modules/@octokit/plugin-paginate-rest/dist-node/index.js",".././node_modules/@actions/github/node_modules/@octokit/plugin-rest-endpoint-methods/dist-node/index.js",".././node_modules/@actions/http-client/lib/auth.js",".././node_modules/@actions/http-client/lib/index.js",".././node_modules/@actions/http-client/lib/proxy.js",".././node_modules/@grpc/grpc-js/build/src/admin.js",".././node_modules/@grpc/grpc-js/build/src/backoff-timeout.js",".././node_modules/@grpc/grpc-js/build/src/call-credentials.js",".././node_modules/@grpc/grpc-js/build/src/call-interface.js",".././node_modules/@grpc/grpc-js/build/src/call-number.js",".././node_modules/@grpc/grpc-js/build/src/call.js",".././node_modules/@grpc/grpc-js/build/src/channel-credentials.js",".././node_modules/@grpc/grpc-js/build/src/channel-options.js",".././node_modules/@grpc/grpc-js/build/src/channel.js",".././node_modules/@grpc/grpc-js/build/src/channelz.js",".././node_modules/@grpc/grpc-js/build/src/client-interceptors.js",".././node_modules/@grpc/grpc-js/build/src/client.js",".././node_modules/@grpc/grpc-js/build/src/compression-algorithms.js",".././node_modules/@grpc/grpc-js/build/src/compression-filter.js",".././node_modules/@grpc/grpc-js/build/src/connectivity-state.js",".././node_modules/@grpc/grpc-js/build/src/constants.js",".././node_modules/@grpc/grpc-js/build/src/control-plane-status.js",".././node_modules/@grpc/grpc-js/build/src/deadline.js",".././node_modules/@grpc/grpc-js/build/src/duration.js",".././node_modules/@grpc/grpc-js/build/src/error.js",".././node_modules/@grpc/grpc-js/build/src/experimental.js",".././node_modules/@grpc/grpc-js/build/src/filter-stack.js",".././node_modules/@grpc/grpc-js/build/src/filter.js",".././node_modules/@grpc/grpc-js/build/src/http_proxy.js",".././node_modules/@grpc/grpc-js/build/src/index.js",".././node_modules/@grpc/grpc-js/build/src/internal-channel.js",".././node_modules/@grpc/grpc-js/build/src/load-balancer-child-handler.js",".././node_modules/@grpc/grpc-js/build/src/load-balancer-outlier-detection.js",".././node_modules/@grpc/grpc-js/build/src/load-balancer-pick-first.js",".././node_modules/@grpc/grpc-js/build/src/load-balancer-round-robin.js",".././node_modules/@grpc/grpc-js/build/src/load-balancer.js",".././node_modules/@grpc/grpc-js/build/src/load-balancing-call.js",".././node_modules/@grpc/grpc-js/build/src/logging.js",".././node_modules/@grpc/grpc-js/build/src/make-client.js",".././node_modules/@grpc/grpc-js/build/src/max-message-size-filter.js",".././node_modules/@grpc/grpc-js/build/src/metadata.js",".././node_modules/@grpc/grpc-js/build/src/picker.js",".././node_modules/@grpc/grpc-js/build/src/resolver-dns.js",".././node_modules/@grpc/grpc-js/build/src/resolver-ip.js",".././node_modules/@grpc/grpc-js/build/src/resolver-uds.js",".././node_modules/@grpc/grpc-js/build/src/resolver.js",".././node_modules/@grpc/grpc-js/build/src/resolving-call.js",".././node_modules/@grpc/grpc-js/build/src/resolving-load-balancer.js",".././node_modules/@grpc/grpc-js/build/src/retrying-call.js",".././node_modules/@grpc/grpc-js/build/src/server-call.js",".././node_modules/@grpc/grpc-js/build/src/server-credentials.js",".././node_modules/@grpc/grpc-js/build/src/server-interceptors.js",".././node_modules/@grpc/grpc-js/build/src/server.js",".././node_modules/@grpc/grpc-js/build/src/service-config.js",".././node_modules/@grpc/grpc-js/build/src/status-builder.js",".././node_modules/@grpc/grpc-js/build/src/stream-decoder.js",".././node_modules/@grpc/grpc-js/build/src/subchannel-address.js",".././node_modules/@grpc/grpc-js/build/src/subchannel-call.js",".././node_modules/@grpc/grpc-js/build/src/subchannel-interface.js",".././node_modules/@grpc/grpc-js/build/src/subchannel-pool.js",".././node_modules/@grpc/grpc-js/build/src/subchannel.js",".././node_modules/@grpc/grpc-js/build/src/tls-helpers.js",".././node_modules/@grpc/grpc-js/build/src/transport.js",".././node_modules/@grpc/grpc-js/build/src/uri-parser.js",".././node_modules/@grpc/proto-loader/build/src/index.js",".././node_modules/@grpc/proto-loader/build/src/util.js",".././node_modules/@js-sdsl/ordered-map/dist/cjs/index.js",".././node_modules/@octokit/auth-token/dist-node/index.js",".././node_modules/@octokit/core/dist-node/index.js",".././node_modules/@octokit/endpoint/dist-node/index.js",".././node_modules/@octokit/graphql/dist-node/index.js",".././node_modules/@octokit/request-error/dist-node/index.js",".././node_modules/@octokit/request/dist-node/index.js",".././node_modules/@opentelemetry/api/build/src/api/context.js",".././node_modules/@opentelemetry/api/build/src/api/diag.js",".././node_modules/@opentelemetry/api/build/src/api/metrics.js",".././node_modules/@opentelemetry/api/build/src/api/propagation.js",".././node_modules/@opentelemetry/api/build/src/api/trace.js",".././node_modules/@opentelemetry/api/build/src/baggage/context-helpers.js",".././node_modules/@opentelemetry/api/build/src/baggage/internal/baggage-impl.js",".././node_modules/@opentelemetry/api/build/src/baggage/internal/symbol.js",".././node_modules/@opentelemetry/api/build/src/baggage/utils.js",".././node_modules/@opentelemetry/api/build/src/context-api.js",".././node_modules/@opentelemetry/api/build/src/context/NoopContextManager.js",".././node_modules/@opentelemetry/api/build/src/context/context.js",".././node_modules/@opentelemetry/api/build/src/diag-api.js",".././node_modules/@opentelemetry/api/build/src/diag/ComponentLogger.js",".././node_modules/@opentelemetry/api/build/src/diag/consoleLogger.js",".././node_modules/@opentelemetry/api/build/src/diag/internal/logLevelLogger.js",".././node_modules/@opentelemetry/api/build/src/diag/types.js",".././node_modules/@opentelemetry/api/build/src/index.js",".././node_modules/@opentelemetry/api/build/src/internal/global-utils.js",".././node_modules/@opentelemetry/api/build/src/internal/semver.js",".././node_modules/@opentelemetry/api/build/src/metrics-api.js",".././node_modules/@opentelemetry/api/build/src/metrics/Metric.js",".././node_modules/@opentelemetry/api/build/src/metrics/NoopMeter.js",".././node_modules/@opentelemetry/api/build/src/metrics/NoopMeterProvider.js",".././node_modules/@opentelemetry/api/build/src/platform/index.js",".././node_modules/@opentelemetry/api/build/src/platform/node/globalThis.js",".././node_modules/@opentelemetry/api/build/src/platform/node/index.js",".././node_modules/@opentelemetry/api/build/src/propagation-api.js",".././node_modules/@opentelemetry/api/build/src/propagation/NoopTextMapPropagator.js",".././node_modules/@opentelemetry/api/build/src/propagation/TextMapPropagator.js",".././node_modules/@opentelemetry/api/build/src/trace-api.js",".././node_modules/@opentelemetry/api/build/src/trace/NonRecordingSpan.js",".././node_modules/@opentelemetry/api/build/src/trace/NoopTracer.js",".././node_modules/@opentelemetry/api/build/src/trace/NoopTracerProvider.js",".././node_modules/@opentelemetry/api/build/src/trace/ProxyTracer.js",".././node_modules/@opentelemetry/api/build/src/trace/ProxyTracerProvider.js",".././node_modules/@opentelemetry/api/build/src/trace/SamplingResult.js",".././node_modules/@opentelemetry/api/build/src/trace/context-utils.js",".././node_modules/@opentelemetry/api/build/src/trace/internal/tracestate-impl.js",".././node_modules/@opentelemetry/api/build/src/trace/internal/tracestate-validators.js",".././node_modules/@opentelemetry/api/build/src/trace/internal/utils.js",".././node_modules/@opentelemetry/api/build/src/trace/invalid-span-constants.js",".././node_modules/@opentelemetry/api/build/src/trace/span_kind.js",".././node_modules/@opentelemetry/api/build/src/trace/spancontext-utils.js",".././node_modules/@opentelemetry/api/build/src/trace/status.js",".././node_modules/@opentelemetry/api/build/src/trace/trace_flags.js",".././node_modules/@opentelemetry/api/build/src/version.js",".././node_modules/@opentelemetry/core/build/src/ExportResult.js",".././node_modules/@opentelemetry/core/build/src/baggage/constants.js",".././node_modules/@opentelemetry/core/build/src/baggage/propagation/W3CBaggagePropagator.js",".././node_modules/@opentelemetry/core/build/src/baggage/utils.js",".././node_modules/@opentelemetry/core/build/src/common/anchored-clock.js",".././node_modules/@opentelemetry/core/build/src/common/attributes.js",".././node_modules/@opentelemetry/core/build/src/common/global-error-handler.js",".././node_modules/@opentelemetry/core/build/src/common/hex-to-binary.js",".././node_modules/@opentelemetry/core/build/src/common/logging-error-handler.js",".././node_modules/@opentelemetry/core/build/src/common/time.js",".././node_modules/@opentelemetry/core/build/src/common/types.js",".././node_modules/@opentelemetry/core/build/src/index.js",".././node_modules/@opentelemetry/core/build/src/internal/exporter.js",".././node_modules/@opentelemetry/core/build/src/internal/validators.js",".././node_modules/@opentelemetry/core/build/src/platform/index.js",".././node_modules/@opentelemetry/core/build/src/platform/node/RandomIdGenerator.js",".././node_modules/@opentelemetry/core/build/src/platform/node/environment.js",".././node_modules/@opentelemetry/core/build/src/platform/node/globalThis.js",".././node_modules/@opentelemetry/core/build/src/platform/node/hex-to-base64.js",".././node_modules/@opentelemetry/core/build/src/platform/node/index.js",".././node_modules/@opentelemetry/core/build/src/platform/node/performance.js",".././node_modules/@opentelemetry/core/build/src/platform/node/sdk-info.js",".././node_modules/@opentelemetry/core/build/src/platform/node/timer-util.js",".././node_modules/@opentelemetry/core/build/src/propagation/composite.js",".././node_modules/@opentelemetry/core/build/src/trace/IdGenerator.js",".././node_modules/@opentelemetry/core/build/src/trace/TraceState.js",".././node_modules/@opentelemetry/core/build/src/trace/W3CTraceContextPropagator.js",".././node_modules/@opentelemetry/core/build/src/trace/rpc-metadata.js",".././node_modules/@opentelemetry/core/build/src/trace/sampler/AlwaysOffSampler.js",".././node_modules/@opentelemetry/core/build/src/trace/sampler/AlwaysOnSampler.js",".././node_modules/@opentelemetry/core/build/src/trace/sampler/ParentBasedSampler.js",".././node_modules/@opentelemetry/core/build/src/trace/sampler/TraceIdRatioBasedSampler.js",".././node_modules/@opentelemetry/core/build/src/trace/suppress-tracing.js",".././node_modules/@opentelemetry/core/build/src/utils/callback.js",".././node_modules/@opentelemetry/core/build/src/utils/environment.js",".././node_modules/@opentelemetry/core/build/src/utils/lodash.merge.js",".././node_modules/@opentelemetry/core/build/src/utils/merge.js",".././node_modules/@opentelemetry/core/build/src/utils/promise.js",".././node_modules/@opentelemetry/core/build/src/utils/sampling.js",".././node_modules/@opentelemetry/core/build/src/utils/timeout.js",".././node_modules/@opentelemetry/core/build/src/utils/url.js",".././node_modules/@opentelemetry/core/build/src/utils/wrap.js",".././node_modules/@opentelemetry/core/build/src/version.js",".././node_modules/@opentelemetry/exporter-trace-otlp-grpc/build/src/OTLPTraceExporter.js",".././node_modules/@opentelemetry/exporter-trace-otlp-grpc/build/src/index.js",".././node_modules/@opentelemetry/exporter-trace-otlp-grpc/build/src/version.js",".././node_modules/@opentelemetry/exporter-trace-otlp-proto/build/src/index.js",".././node_modules/@opentelemetry/exporter-trace-otlp-proto/build/src/platform/index.js",".././node_modules/@opentelemetry/exporter-trace-otlp-proto/build/src/platform/node/OTLPTraceExporter.js",".././node_modules/@opentelemetry/exporter-trace-otlp-proto/build/src/platform/node/index.js",".././node_modules/@opentelemetry/exporter-trace-otlp-proto/build/src/version.js",".././node_modules/@opentelemetry/otlp-exporter-base/build/src/OTLPExporterBase.js",".././node_modules/@opentelemetry/otlp-exporter-base/build/src/index.js",".././node_modules/@opentelemetry/otlp-exporter-base/build/src/platform/browser/OTLPExporterBrowserBase.js",".././node_modules/@opentelemetry/otlp-exporter-base/build/src/platform/browser/index.js",".././node_modules/@opentelemetry/otlp-exporter-base/build/src/platform/browser/util.js",".././node_modules/@opentelemetry/otlp-exporter-base/build/src/platform/index.js",".././node_modules/@opentelemetry/otlp-exporter-base/build/src/platform/node/OTLPExporterNodeBase.js",".././node_modules/@opentelemetry/otlp-exporter-base/build/src/platform/node/index.js",".././node_modules/@opentelemetry/otlp-exporter-base/build/src/platform/node/types.js",".././node_modules/@opentelemetry/otlp-exporter-base/build/src/platform/node/util.js",".././node_modules/@opentelemetry/otlp-exporter-base/build/src/types.js",".././node_modules/@opentelemetry/otlp-exporter-base/build/src/util.js",".././node_modules/@opentelemetry/otlp-grpc-exporter-base/build/src/OTLPGRPCExporterNodeBase.js",".././node_modules/@opentelemetry/otlp-grpc-exporter-base/build/src/create-service-client-constructor.js",".././node_modules/@opentelemetry/otlp-grpc-exporter-base/build/src/generated/root.js",".././node_modules/@opentelemetry/otlp-grpc-exporter-base/build/src/grpc-exporter-transport.js",".././node_modules/@opentelemetry/otlp-grpc-exporter-base/build/src/index.js",".././node_modules/@opentelemetry/otlp-grpc-exporter-base/build/src/serializers.js",".././node_modules/@opentelemetry/otlp-grpc-exporter-base/build/src/util.js",".././node_modules/@opentelemetry/otlp-proto-exporter-base/build/src/generated/root.js",".././node_modules/@opentelemetry/otlp-proto-exporter-base/build/src/index.js",".././node_modules/@opentelemetry/otlp-proto-exporter-base/build/src/platform/browser/OTLPProtoExporterBrowserBase.js",".././node_modules/@opentelemetry/otlp-proto-exporter-base/build/src/platform/browser/index.js",".././node_modules/@opentelemetry/otlp-proto-exporter-base/build/src/platform/index.js",".././node_modules/@opentelemetry/otlp-proto-exporter-base/build/src/platform/node/OTLPProtoExporterNodeBase.js",".././node_modules/@opentelemetry/otlp-proto-exporter-base/build/src/platform/node/index.js",".././node_modules/@opentelemetry/otlp-proto-exporter-base/build/src/platform/node/util.js",".././node_modules/@opentelemetry/otlp-proto-exporter-base/build/src/platform/types.js",".././node_modules/@opentelemetry/otlp-proto-exporter-base/build/src/platform/util.js",".././node_modules/@opentelemetry/otlp-transformer/build/src/common/index.js",".././node_modules/@opentelemetry/otlp-transformer/build/src/common/internal.js",".././node_modules/@opentelemetry/otlp-transformer/build/src/common/types.js",".././node_modules/@opentelemetry/otlp-transformer/build/src/index.js",".././node_modules/@opentelemetry/otlp-transformer/build/src/logs/index.js",".././node_modules/@opentelemetry/otlp-transformer/build/src/logs/types.js",".././node_modules/@opentelemetry/otlp-transformer/build/src/metrics/index.js",".././node_modules/@opentelemetry/otlp-transformer/build/src/metrics/internal.js",".././node_modules/@opentelemetry/otlp-transformer/build/src/metrics/types.js",".././node_modules/@opentelemetry/otlp-transformer/build/src/resource/internal.js",".././node_modules/@opentelemetry/otlp-transformer/build/src/resource/types.js",".././node_modules/@opentelemetry/otlp-transformer/build/src/trace/index.js",".././node_modules/@opentelemetry/otlp-transformer/build/src/trace/internal.js",".././node_modules/@opentelemetry/otlp-transformer/build/src/trace/types.js",".././node_modules/@opentelemetry/resources/build/src/Resource.js",".././node_modules/@opentelemetry/resources/build/src/detect-resources.js",".././node_modules/@opentelemetry/resources/build/src/detectors/BrowserDetector.js",".././node_modules/@opentelemetry/resources/build/src/detectors/BrowserDetectorSync.js",".././node_modules/@opentelemetry/resources/build/src/detectors/EnvDetector.js",".././node_modules/@opentelemetry/resources/build/src/detectors/EnvDetectorSync.js",".././node_modules/@opentelemetry/resources/build/src/detectors/index.js",".././node_modules/@opentelemetry/resources/build/src/detectors/platform/index.js",".././node_modules/@opentelemetry/resources/build/src/detectors/platform/node/HostDetector.js",".././node_modules/@opentelemetry/resources/build/src/detectors/platform/node/HostDetectorSync.js",".././node_modules/@opentelemetry/resources/build/src/detectors/platform/node/OSDetector.js",".././node_modules/@opentelemetry/resources/build/src/detectors/platform/node/OSDetectorSync.js",".././node_modules/@opentelemetry/resources/build/src/detectors/platform/node/ProcessDetector.js",".././node_modules/@opentelemetry/resources/build/src/detectors/platform/node/ProcessDetectorSync.js",".././node_modules/@opentelemetry/resources/build/src/detectors/platform/node/ServiceInstanceIdDetectorSync.js",".././node_modules/@opentelemetry/resources/build/src/detectors/platform/node/index.js",".././node_modules/@opentelemetry/resources/build/src/detectors/platform/node/machine-id/execAsync.js",".././node_modules/@opentelemetry/resources/build/src/detectors/platform/node/machine-id/getMachineId-bsd.js",".././node_modules/@opentelemetry/resources/build/src/detectors/platform/node/machine-id/getMachineId-darwin.js",".././node_modules/@opentelemetry/resources/build/src/detectors/platform/node/machine-id/getMachineId-linux.js",".././node_modules/@opentelemetry/resources/build/src/detectors/platform/node/machine-id/getMachineId-unsupported.js",".././node_modules/@opentelemetry/resources/build/src/detectors/platform/node/machine-id/getMachineId-win.js",".././node_modules/@opentelemetry/resources/build/src/detectors/platform/node/machine-id/getMachineId.js",".././node_modules/@opentelemetry/resources/build/src/detectors/platform/node/utils.js",".././node_modules/@opentelemetry/resources/build/src/index.js",".././node_modules/@opentelemetry/resources/build/src/platform/index.js",".././node_modules/@opentelemetry/resources/build/src/platform/node/default-service-name.js",".././node_modules/@opentelemetry/resources/build/src/platform/node/index.js",".././node_modules/@opentelemetry/resources/build/src/utils.js",".././node_modules/@opentelemetry/sdk-metrics/build/src/InstrumentDescriptor.js",".././node_modules/@opentelemetry/sdk-metrics/build/src/Instruments.js",".././node_modules/@opentelemetry/sdk-metrics/build/src/Meter.js",".././node_modules/@opentelemetry/sdk-metrics/build/src/MeterProvider.js",".././node_modules/@opentelemetry/sdk-metrics/build/src/ObservableResult.js",".././node_modules/@opentelemetry/sdk-metrics/build/src/aggregator/Drop.js",".././node_modules/@opentelemetry/sdk-metrics/build/src/aggregator/ExponentialHistogram.js",".././node_modules/@opentelemetry/sdk-metrics/build/src/aggregator/Histogram.js",".././node_modules/@opentelemetry/sdk-metrics/build/src/aggregator/LastValue.js",".././node_modules/@opentelemetry/sdk-metrics/build/src/aggregator/Sum.js",".././node_modules/@opentelemetry/sdk-metrics/build/src/aggregator/exponential-histogram/Buckets.js",".././node_modules/@opentelemetry/sdk-metrics/build/src/aggregator/exponential-histogram/mapping/ExponentMapping.js",".././node_modules/@opentelemetry/sdk-metrics/build/src/aggregator/exponential-histogram/mapping/LogarithmMapping.js",".././node_modules/@opentelemetry/sdk-metrics/build/src/aggregator/exponential-histogram/mapping/getMapping.js",".././node_modules/@opentelemetry/sdk-metrics/build/src/aggregator/exponential-histogram/mapping/ieee754.js",".././node_modules/@opentelemetry/sdk-metrics/build/src/aggregator/exponential-histogram/mapping/types.js",".././node_modules/@opentelemetry/sdk-metrics/build/src/aggregator/exponential-histogram/util.js",".././node_modules/@opentelemetry/sdk-metrics/build/src/aggregator/index.js",".././node_modules/@opentelemetry/sdk-metrics/build/src/aggregator/types.js",".././node_modules/@opentelemetry/sdk-metrics/build/src/export/AggregationSelector.js",".././node_modules/@opentelemetry/sdk-metrics/build/src/export/AggregationTemporality.js",".././node_modules/@opentelemetry/sdk-metrics/build/src/export/ConsoleMetricExporter.js",".././node_modules/@opentelemetry/sdk-metrics/build/src/export/InMemoryMetricExporter.js",".././node_modules/@opentelemetry/sdk-metrics/build/src/export/MetricData.js",".././node_modules/@opentelemetry/sdk-metrics/build/src/export/MetricReader.js",".././node_modules/@opentelemetry/sdk-metrics/build/src/export/PeriodicExportingMetricReader.js",".././node_modules/@opentelemetry/sdk-metrics/build/src/index.js",".././node_modules/@opentelemetry/sdk-metrics/build/src/state/AsyncMetricStorage.js",".././node_modules/@opentelemetry/sdk-metrics/build/src/state/DeltaMetricProcessor.js",".././node_modules/@opentelemetry/sdk-metrics/build/src/state/HashMap.js",".././node_modules/@opentelemetry/sdk-metrics/build/src/state/MeterProviderSharedState.js",".././node_modules/@opentelemetry/sdk-metrics/build/src/state/MeterSharedState.js",".././node_modules/@opentelemetry/sdk-metrics/build/src/state/MetricCollector.js",".././node_modules/@opentelemetry/sdk-metrics/build/src/state/MetricStorage.js",".././node_modules/@opentelemetry/sdk-metrics/build/src/state/MetricStorageRegistry.js",".././node_modules/@opentelemetry/sdk-metrics/build/src/state/MultiWritableMetricStorage.js",".././node_modules/@opentelemetry/sdk-metrics/build/src/state/ObservableRegistry.js",".././node_modules/@opentelemetry/sdk-metrics/build/src/state/SyncMetricStorage.js",".././node_modules/@opentelemetry/sdk-metrics/build/src/state/TemporalMetricProcessor.js",".././node_modules/@opentelemetry/sdk-metrics/build/src/utils.js",".././node_modules/@opentelemetry/sdk-metrics/build/src/view/Aggregation.js",".././node_modules/@opentelemetry/sdk-metrics/build/src/view/AttributesProcessor.js",".././node_modules/@opentelemetry/sdk-metrics/build/src/view/InstrumentSelector.js",".././node_modules/@opentelemetry/sdk-metrics/build/src/view/MeterSelector.js",".././node_modules/@opentelemetry/sdk-metrics/build/src/view/Predicate.js",".././node_modules/@opentelemetry/sdk-metrics/build/src/view/RegistrationConflicts.js",".././node_modules/@opentelemetry/sdk-metrics/build/src/view/View.js",".././node_modules/@opentelemetry/sdk-metrics/build/src/view/ViewRegistry.js",".././node_modules/@opentelemetry/sdk-trace-base/build/src/BasicTracerProvider.js",".././node_modules/@opentelemetry/sdk-trace-base/build/src/IdGenerator.js",".././node_modules/@opentelemetry/sdk-trace-base/build/src/MultiSpanProcessor.js",".././node_modules/@opentelemetry/sdk-trace-base/build/src/Sampler.js",".././node_modules/@opentelemetry/sdk-trace-base/build/src/Span.js",".././node_modules/@opentelemetry/sdk-trace-base/build/src/SpanProcessor.js",".././node_modules/@opentelemetry/sdk-trace-base/build/src/TimedEvent.js",".././node_modules/@opentelemetry/sdk-trace-base/build/src/Tracer.js",".././node_modules/@opentelemetry/sdk-trace-base/build/src/config.js",".././node_modules/@opentelemetry/sdk-trace-base/build/src/enums.js",".././node_modules/@opentelemetry/sdk-trace-base/build/src/export/BatchSpanProcessorBase.js",".././node_modules/@opentelemetry/sdk-trace-base/build/src/export/ConsoleSpanExporter.js",".././node_modules/@opentelemetry/sdk-trace-base/build/src/export/InMemorySpanExporter.js",".././node_modules/@opentelemetry/sdk-trace-base/build/src/export/NoopSpanProcessor.js",".././node_modules/@opentelemetry/sdk-trace-base/build/src/export/ReadableSpan.js",".././node_modules/@opentelemetry/sdk-trace-base/build/src/export/SimpleSpanProcessor.js",".././node_modules/@opentelemetry/sdk-trace-base/build/src/export/SpanExporter.js",".././node_modules/@opentelemetry/sdk-trace-base/build/src/index.js",".././node_modules/@opentelemetry/sdk-trace-base/build/src/platform/index.js",".././node_modules/@opentelemetry/sdk-trace-base/build/src/platform/node/RandomIdGenerator.js",".././node_modules/@opentelemetry/sdk-trace-base/build/src/platform/node/export/BatchSpanProcessor.js",".././node_modules/@opentelemetry/sdk-trace-base/build/src/platform/node/index.js",".././node_modules/@opentelemetry/sdk-trace-base/build/src/sampler/AlwaysOffSampler.js",".././node_modules/@opentelemetry/sdk-trace-base/build/src/sampler/AlwaysOnSampler.js",".././node_modules/@opentelemetry/sdk-trace-base/build/src/sampler/ParentBasedSampler.js",".././node_modules/@opentelemetry/sdk-trace-base/build/src/sampler/TraceIdRatioBasedSampler.js",".././node_modules/@opentelemetry/sdk-trace-base/build/src/types.js",".././node_modules/@opentelemetry/sdk-trace-base/build/src/utility.js",".././node_modules/@opentelemetry/semantic-conventions/build/src/index.js",".././node_modules/@opentelemetry/semantic-conventions/build/src/internal/utils.js",".././node_modules/@opentelemetry/semantic-conventions/build/src/resource/SemanticResourceAttributes.js",".././node_modules/@opentelemetry/semantic-conventions/build/src/resource/index.js",".././node_modules/@opentelemetry/semantic-conventions/build/src/trace/SemanticAttributes.js",".././node_modules/@opentelemetry/semantic-conventions/build/src/trace/index.js",".././node_modules/@protobufjs/aspromise/index.js",".././node_modules/@protobufjs/base64/index.js",".././node_modules/@protobufjs/codegen/index.js",".././node_modules/@protobufjs/eventemitter/index.js",".././node_modules/@protobufjs/fetch/index.js",".././node_modules/@protobufjs/float/index.js",".././node_modules/@protobufjs/inquire/index.js",".././node_modules/@protobufjs/path/index.js",".././node_modules/@protobufjs/pool/index.js",".././node_modules/@protobufjs/utf8/index.js",".././node_modules/before-after-hook/index.js",".././node_modules/before-after-hook/lib/add.js",".././node_modules/before-after-hook/lib/register.js",".././node_modules/before-after-hook/lib/remove.js",".././node_modules/core-util-is/lib/util.js",".././node_modules/deprecation/dist-node/index.js",".././node_modules/immediate/lib/index.js",".././node_modules/inherits/inherits.js",".././node_modules/inherits/inherits_browser.js",".././node_modules/isarray/index.js",".././node_modules/jszip/lib/base64.js",".././node_modules/jszip/lib/compressedObject.js",".././node_modules/jszip/lib/compressions.js",".././node_modules/jszip/lib/crc32.js",".././node_modules/jszip/lib/defaults.js",".././node_modules/jszip/lib/external.js",".././node_modules/jszip/lib/flate.js",".././node_modules/jszip/lib/generate/ZipFileWorker.js",".././node_modules/jszip/lib/generate/index.js",".././node_modules/jszip/lib/index.js",".././node_modules/jszip/lib/load.js",".././node_modules/jszip/lib/nodejs/NodejsStreamInputAdapter.js",".././node_modules/jszip/lib/nodejs/NodejsStreamOutputAdapter.js",".././node_modules/jszip/lib/nodejsUtils.js",".././node_modules/jszip/lib/object.js",".././node_modules/jszip/lib/reader/ArrayReader.js",".././node_modules/jszip/lib/reader/DataReader.js",".././node_modules/jszip/lib/reader/NodeBufferReader.js",".././node_modules/jszip/lib/reader/StringReader.js",".././node_modules/jszip/lib/reader/Uint8ArrayReader.js",".././node_modules/jszip/lib/reader/readerFor.js",".././node_modules/jszip/lib/signature.js",".././node_modules/jszip/lib/stream/ConvertWorker.js",".././node_modules/jszip/lib/stream/Crc32Probe.js",".././node_modules/jszip/lib/stream/DataLengthProbe.js",".././node_modules/jszip/lib/stream/DataWorker.js",".././node_modules/jszip/lib/stream/GenericWorker.js",".././node_modules/jszip/lib/stream/StreamHelper.js",".././node_modules/jszip/lib/support.js",".././node_modules/jszip/lib/utf8.js",".././node_modules/jszip/lib/utils.js",".././node_modules/jszip/lib/zipEntries.js",".././node_modules/jszip/lib/zipEntry.js",".././node_modules/jszip/lib/zipObject.js",".././node_modules/lie/lib/index.js",".././node_modules/lodash.camelcase/index.js",".././node_modules/once/once.js",".././node_modules/pako/index.js",".././node_modules/pako/lib/deflate.js",".././node_modules/pako/lib/inflate.js",".././node_modules/pako/lib/utils/common.js",".././node_modules/pako/lib/utils/strings.js",".././node_modules/pako/lib/zlib/adler32.js",".././node_modules/pako/lib/zlib/constants.js",".././node_modules/pako/lib/zlib/crc32.js",".././node_modules/pako/lib/zlib/deflate.js",".././node_modules/pako/lib/zlib/gzheader.js",".././node_modules/pako/lib/zlib/inffast.js",".././node_modules/pako/lib/zlib/inflate.js",".././node_modules/pako/lib/zlib/inftrees.js",".././node_modules/pako/lib/zlib/messages.js",".././node_modules/pako/lib/zlib/trees.js",".././node_modules/pako/lib/zlib/zstream.js",".././node_modules/process-nextick-args/index.js",".././node_modules/protobufjs/ext/descriptor/index.js",".././node_modules/protobufjs/index.js",".././node_modules/protobufjs/minimal.js",".././node_modules/protobufjs/src/common.js",".././node_modules/protobufjs/src/converter.js",".././node_modules/protobufjs/src/decoder.js",".././node_modules/protobufjs/src/encoder.js",".././node_modules/protobufjs/src/enum.js",".././node_modules/protobufjs/src/field.js",".././node_modules/protobufjs/src/index-light.js",".././node_modules/protobufjs/src/index-minimal.js",".././node_modules/protobufjs/src/index.js",".././node_modules/protobufjs/src/mapfield.js",".././node_modules/protobufjs/src/message.js",".././node_modules/protobufjs/src/method.js",".././node_modules/protobufjs/src/namespace.js",".././node_modules/protobufjs/src/object.js",".././node_modules/protobufjs/src/oneof.js",".././node_modules/protobufjs/src/parse.js",".././node_modules/protobufjs/src/reader.js",".././node_modules/protobufjs/src/reader_buffer.js",".././node_modules/protobufjs/src/root.js",".././node_modules/protobufjs/src/roots.js",".././node_modules/protobufjs/src/rpc.js",".././node_modules/protobufjs/src/rpc/service.js",".././node_modules/protobufjs/src/service.js",".././node_modules/protobufjs/src/tokenize.js",".././node_modules/protobufjs/src/type.js",".././node_modules/protobufjs/src/types.js",".././node_modules/protobufjs/src/util.js",".././node_modules/protobufjs/src/util/longbits.js",".././node_modules/protobufjs/src/util/minimal.js",".././node_modules/protobufjs/src/verifier.js",".././node_modules/protobufjs/src/wrappers.js",".././node_modules/protobufjs/src/writer.js",".././node_modules/protobufjs/src/writer_buffer.js",".././node_modules/readable-stream/lib/_stream_duplex.js",".././node_modules/readable-stream/lib/_stream_passthrough.js",".././node_modules/readable-stream/lib/_stream_readable.js",".././node_modules/readable-stream/lib/_stream_transform.js",".././node_modules/readable-stream/lib/_stream_writable.js",".././node_modules/readable-stream/lib/internal/streams/BufferList.js",".././node_modules/readable-stream/lib/internal/streams/destroy.js",".././node_modules/readable-stream/lib/internal/streams/stream.js",".././node_modules/readable-stream/readable.js",".././node_modules/safe-buffer/index.js",".././node_modules/setimmediate/setImmediate.js",".././node_modules/string_decoder/lib/string_decoder.js",".././node_modules/tmp-promise/index.js",".././node_modules/tmp/lib/tmp.js",".././node_modules/tunnel/index.js",".././node_modules/tunnel/lib/tunnel.js",".././node_modules/undici/index.js",".././node_modules/undici/lib/agent.js",".././node_modules/undici/lib/api/abort-signal.js",".././node_modules/undici/lib/api/api-connect.js",".././node_modules/undici/lib/api/api-pipeline.js",".././node_modules/undici/lib/api/api-request.js",".././node_modules/undici/lib/api/api-stream.js",".././node_modules/undici/lib/api/api-upgrade.js",".././node_modules/undici/lib/api/index.js",".././node_modules/undici/lib/api/readable.js",".././node_modules/undici/lib/api/util.js",".././node_modules/undici/lib/balanced-pool.js",".././node_modules/undici/lib/cache/cache.js",".././node_modules/undici/lib/cache/cachestorage.js",".././node_modules/undici/lib/cache/symbols.js",".././node_modules/undici/lib/cache/util.js",".././node_modules/undici/lib/client.js",".././node_modules/undici/lib/compat/dispatcher-weakref.js",".././node_modules/undici/lib/cookies/constants.js",".././node_modules/undici/lib/cookies/index.js",".././node_modules/undici/lib/cookies/parse.js",".././node_modules/undici/lib/cookies/util.js",".././node_modules/undici/lib/core/connect.js",".././node_modules/undici/lib/core/constants.js",".././node_modules/undici/lib/core/errors.js",".././node_modules/undici/lib/core/request.js",".././node_modules/undici/lib/core/symbols.js",".././node_modules/undici/lib/core/util.js",".././node_modules/undici/lib/dispatcher-base.js",".././node_modules/undici/lib/dispatcher.js",".././node_modules/undici/lib/fetch/body.js",".././node_modules/undici/lib/fetch/constants.js",".././node_modules/undici/lib/fetch/dataURL.js",".././node_modules/undici/lib/fetch/file.js",".././node_modules/undici/lib/fetch/formdata.js",".././node_modules/undici/lib/fetch/global.js",".././node_modules/undici/lib/fetch/headers.js",".././node_modules/undici/lib/fetch/index.js",".././node_modules/undici/lib/fetch/request.js",".././node_modules/undici/lib/fetch/response.js",".././node_modules/undici/lib/fetch/symbols.js",".././node_modules/undici/lib/fetch/util.js",".././node_modules/undici/lib/fetch/webidl.js",".././node_modules/undici/lib/fileapi/encoding.js",".././node_modules/undici/lib/fileapi/filereader.js",".././node_modules/undici/lib/fileapi/progressevent.js",".././node_modules/undici/lib/fileapi/symbols.js",".././node_modules/undici/lib/fileapi/util.js",".././node_modules/undici/lib/global.js",".././node_modules/undici/lib/handler/DecoratorHandler.js",".././node_modules/undici/lib/handler/RedirectHandler.js",".././node_modules/undici/lib/handler/RetryHandler.js",".././node_modules/undici/lib/interceptor/redirectInterceptor.js",".././node_modules/undici/lib/llhttp/constants.js",".././node_modules/undici/lib/llhttp/llhttp-wasm.js",".././node_modules/undici/lib/llhttp/llhttp_simd-wasm.js",".././node_modules/undici/lib/llhttp/utils.js",".././node_modules/undici/lib/mock/mock-agent.js",".././node_modules/undici/lib/mock/mock-client.js",".././node_modules/undici/lib/mock/mock-errors.js",".././node_modules/undici/lib/mock/mock-interceptor.js",".././node_modules/undici/lib/mock/mock-pool.js",".././node_modules/undici/lib/mock/mock-symbols.js",".././node_modules/undici/lib/mock/mock-utils.js",".././node_modules/undici/lib/mock/pending-interceptors-formatter.js",".././node_modules/undici/lib/mock/pluralizer.js",".././node_modules/undici/lib/node/fixed-queue.js",".././node_modules/undici/lib/pool-base.js",".././node_modules/undici/lib/pool-stats.js",".././node_modules/undici/lib/pool.js",".././node_modules/undici/lib/proxy-agent.js",".././node_modules/undici/lib/timers.js",".././node_modules/undici/lib/websocket/connection.js",".././node_modules/undici/lib/websocket/constants.js",".././node_modules/undici/lib/websocket/events.js",".././node_modules/undici/lib/websocket/frame.js",".././node_modules/undici/lib/websocket/receiver.js",".././node_modules/undici/lib/websocket/symbols.js",".././node_modules/undici/lib/websocket/util.js",".././node_modules/undici/lib/websocket/websocket.js",".././node_modules/universal-user-agent/dist-node/index.js",".././node_modules/util-deprecate/node.js",".././node_modules/uuid/dist/index.js",".././node_modules/uuid/dist/md5.js",".././node_modules/uuid/dist/nil.js",".././node_modules/uuid/dist/parse.js",".././node_modules/uuid/dist/regex.js",".././node_modules/uuid/dist/rng.js",".././node_modules/uuid/dist/sha1.js",".././node_modules/uuid/dist/stringify.js",".././node_modules/uuid/dist/v1.js",".././node_modules/uuid/dist/v3.js",".././node_modules/uuid/dist/v35.js",".././node_modules/uuid/dist/v4.js",".././node_modules/uuid/dist/v5.js",".././node_modules/uuid/dist/validate.js",".././node_modules/uuid/dist/version.js",".././node_modules/wrappy/wrappy.js",".././src/github.ts",".././src/index.ts",".././src/runner.ts",".././src/tracing/index.ts",".././src/tracing/job.ts",".././src/tracing/step.ts",".././src/tracing/trace-otlp-file.ts",".././src/tracing/trace.ts","../external node-commonjs \"assert\"","../external node-commonjs \"async_hooks\"","../external node-commonjs \"buffer\"","../external node-commonjs \"child_process\"","../external node-commonjs \"console\"","../external node-commonjs \"crypto\"","../external node-commonjs \"diagnostics_channel\"","../external node-commonjs \"dns\"","../external node-commonjs \"events\"","../external node-commonjs \"fs\"","../external node-commonjs \"http\"","../external node-commonjs \"http2\"","../external node-commonjs \"https\"","../external node-commonjs \"net\"","../external node-commonjs \"node:events\"","../external node-commonjs \"node:stream\"","../external node-commonjs \"node:util\"","../external node-commonjs \"os\"","../external node-commonjs \"path\"","../external node-commonjs \"perf_hooks\"","../external node-commonjs \"process\"","../external node-commonjs \"querystring\"","../external node-commonjs \"readline\"","../external node-commonjs \"stream\"","../external node-commonjs \"stream/web\"","../external node-commonjs \"string_decoder\"","../external node-commonjs \"tls\"","../external node-commonjs \"url\"","../external node-commonjs \"util\"","../external node-commonjs \"util/types\"","../external node-commonjs \"worker_threads\"","../external node-commonjs \"zlib\"",".././node_modules/@fastify/busboy/deps/dicer/lib/Dicer.js",".././node_modules/@fastify/busboy/deps/dicer/lib/HeaderParser.js",".././node_modules/@fastify/busboy/deps/dicer/lib/PartStream.js",".././node_modules/@fastify/busboy/deps/streamsearch/sbmh.js",".././node_modules/@fastify/busboy/lib/main.js",".././node_modules/@fastify/busboy/lib/types/multipart.js",".././node_modules/@fastify/busboy/lib/types/urlencoded.js",".././node_modules/@fastify/busboy/lib/utils/Decoder.js",".././node_modules/@fastify/busboy/lib/utils/basename.js",".././node_modules/@fastify/busboy/lib/utils/decodeText.js",".././node_modules/@fastify/busboy/lib/utils/getLimit.js",".././node_modules/@fastify/busboy/lib/utils/parseParams.js",".././node_modules/long/umd/index.js","../webpack/bootstrap","../webpack/runtime/compat","../webpack/before-startup","../webpack/startup","../webpack/after-startup"],"sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.create = void 0;\nconst artifact_client_1 = require(\"./internal/artifact-client\");\n/**\n * Constructs an ArtifactClient\n */\nfunction create() {\n return artifact_client_1.DefaultArtifactClient.create();\n}\nexports.create = create;\n//# sourceMappingURL=artifact-client.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DefaultArtifactClient = void 0;\nconst core = __importStar(require(\"@actions/core\"));\nconst upload_specification_1 = require(\"./upload-specification\");\nconst upload_http_client_1 = require(\"./upload-http-client\");\nconst utils_1 = require(\"./utils\");\nconst path_and_artifact_name_validation_1 = require(\"./path-and-artifact-name-validation\");\nconst download_http_client_1 = require(\"./download-http-client\");\nconst download_specification_1 = require(\"./download-specification\");\nconst config_variables_1 = require(\"./config-variables\");\nconst path_1 = require(\"path\");\nclass DefaultArtifactClient {\n /**\n * Constructs a DefaultArtifactClient\n */\n static create() {\n return new DefaultArtifactClient();\n }\n /**\n * Uploads an artifact\n */\n uploadArtifact(name, files, rootDirectory, options) {\n return __awaiter(this, void 0, void 0, function* () {\n core.info(`Starting artifact upload\nFor more detailed logs during the artifact upload process, enable step-debugging: https://docs.github.com/actions/monitoring-and-troubleshooting-workflows/enabling-debug-logging#enabling-step-debug-logging`);\n (0, path_and_artifact_name_validation_1.checkArtifactName)(name);\n // Get specification for the files being uploaded\n const uploadSpecification = (0, upload_specification_1.getUploadSpecification)(name, rootDirectory, files);\n const uploadResponse = {\n artifactName: name,\n artifactItems: [],\n size: 0,\n failedItems: []\n };\n const uploadHttpClient = new upload_http_client_1.UploadHttpClient();\n if (uploadSpecification.length === 0) {\n core.warning(`No files found that can be uploaded`);\n }\n else {\n // Create an entry for the artifact in the file container\n const response = yield uploadHttpClient.createArtifactInFileContainer(name, options);\n if (!response.fileContainerResourceUrl) {\n core.debug(response.toString());\n throw new Error('No URL provided by the Artifact Service to upload an artifact to');\n }\n core.debug(`Upload Resource URL: ${response.fileContainerResourceUrl}`);\n core.info(`Container for artifact \"${name}\" successfully created. Starting upload of file(s)`);\n // Upload each of the files that were found concurrently\n const uploadResult = yield uploadHttpClient.uploadArtifactToFileContainer(response.fileContainerResourceUrl, uploadSpecification, options);\n // Update the size of the artifact to indicate we are done uploading\n // The uncompressed size is used for display when downloading a zip of the artifact from the UI\n core.info(`File upload process has finished. Finalizing the artifact upload`);\n yield uploadHttpClient.patchArtifactSize(uploadResult.totalSize, name);\n if (uploadResult.failedItems.length > 0) {\n core.info(`Upload finished. There were ${uploadResult.failedItems.length} items that failed to upload`);\n }\n else {\n core.info(`Artifact has been finalized. All files have been successfully uploaded!`);\n }\n core.info(`\nThe raw size of all the files that were specified for upload is ${uploadResult.totalSize} bytes\nThe size of all the files that were uploaded is ${uploadResult.uploadSize} bytes. This takes into account any gzip compression used to reduce the upload size, time and storage\n\nNote: The size of downloaded zips can differ significantly from the reported size. For more information see: https://github.com/actions/upload-artifact#zipped-artifact-downloads \\r\\n`);\n uploadResponse.artifactItems = uploadSpecification.map(item => item.absoluteFilePath);\n uploadResponse.size = uploadResult.uploadSize;\n uploadResponse.failedItems = uploadResult.failedItems;\n }\n return uploadResponse;\n });\n }\n downloadArtifact(name, path, options) {\n return __awaiter(this, void 0, void 0, function* () {\n const downloadHttpClient = new download_http_client_1.DownloadHttpClient();\n const artifacts = yield downloadHttpClient.listArtifacts();\n if (artifacts.count === 0) {\n throw new Error(`Unable to find any artifacts for the associated workflow`);\n }\n const artifactToDownload = artifacts.value.find(artifact => {\n return artifact.name === name;\n });\n if (!artifactToDownload) {\n throw new Error(`Unable to find an artifact with the name: ${name}`);\n }\n const items = yield downloadHttpClient.getContainerItems(artifactToDownload.name, artifactToDownload.fileContainerResourceUrl);\n if (!path) {\n path = (0, config_variables_1.getWorkSpaceDirectory)();\n }\n path = (0, path_1.normalize)(path);\n path = (0, path_1.resolve)(path);\n // During upload, empty directories are rejected by the remote server so there should be no artifacts that consist of only empty directories\n const downloadSpecification = (0, download_specification_1.getDownloadSpecification)(name, items.value, path, (options === null || options === void 0 ? void 0 : options.createArtifactFolder) || false);\n if (downloadSpecification.filesToDownload.length === 0) {\n core.info(`No downloadable files were found for the artifact: ${artifactToDownload.name}`);\n }\n else {\n // Create all necessary directories recursively before starting any download\n yield (0, utils_1.createDirectoriesForArtifact)(downloadSpecification.directoryStructure);\n core.info('Directory structure has been set up for the artifact');\n yield (0, utils_1.createEmptyFilesForArtifact)(downloadSpecification.emptyFilesToCreate);\n yield downloadHttpClient.downloadSingleArtifact(downloadSpecification.filesToDownload);\n }\n return {\n artifactName: name,\n downloadPath: downloadSpecification.rootDownloadLocation\n };\n });\n }\n downloadAllArtifacts(path) {\n return __awaiter(this, void 0, void 0, function* () {\n const downloadHttpClient = new download_http_client_1.DownloadHttpClient();\n const response = [];\n const artifacts = yield downloadHttpClient.listArtifacts();\n if (artifacts.count === 0) {\n core.info('Unable to find any artifacts for the associated workflow');\n return response;\n }\n if (!path) {\n path = (0, config_variables_1.getWorkSpaceDirectory)();\n }\n path = (0, path_1.normalize)(path);\n path = (0, path_1.resolve)(path);\n let downloadedArtifacts = 0;\n while (downloadedArtifacts < artifacts.count) {\n const currentArtifactToDownload = artifacts.value[downloadedArtifacts];\n downloadedArtifacts += 1;\n core.info(`starting download of artifact ${currentArtifactToDownload.name} : ${downloadedArtifacts}/${artifacts.count}`);\n // Get container entries for the specific artifact\n const items = yield downloadHttpClient.getContainerItems(currentArtifactToDownload.name, currentArtifactToDownload.fileContainerResourceUrl);\n const downloadSpecification = (0, download_specification_1.getDownloadSpecification)(currentArtifactToDownload.name, items.value, path, true);\n if (downloadSpecification.filesToDownload.length === 0) {\n core.info(`No downloadable files were found for any artifact ${currentArtifactToDownload.name}`);\n }\n else {\n yield (0, utils_1.createDirectoriesForArtifact)(downloadSpecification.directoryStructure);\n yield (0, utils_1.createEmptyFilesForArtifact)(downloadSpecification.emptyFilesToCreate);\n yield downloadHttpClient.downloadSingleArtifact(downloadSpecification.filesToDownload);\n }\n response.push({\n artifactName: currentArtifactToDownload.name,\n downloadPath: downloadSpecification.rootDownloadLocation\n });\n }\n return response;\n });\n }\n}\nexports.DefaultArtifactClient = DefaultArtifactClient;\n//# sourceMappingURL=artifact-client.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isGhes = exports.getRetentionDays = exports.getWorkSpaceDirectory = exports.getWorkFlowRunId = exports.getRuntimeUrl = exports.getRuntimeToken = exports.getDownloadFileConcurrency = exports.getInitialRetryIntervalInMilliseconds = exports.getRetryMultiplier = exports.getRetryLimit = exports.getUploadChunkSize = exports.getUploadFileConcurrency = void 0;\n// The number of concurrent uploads that happens at the same time\nfunction getUploadFileConcurrency() {\n return 2;\n}\nexports.getUploadFileConcurrency = getUploadFileConcurrency;\n// When uploading large files that can't be uploaded with a single http call, this controls\n// the chunk size that is used during upload\nfunction getUploadChunkSize() {\n return 8 * 1024 * 1024; // 8 MB Chunks\n}\nexports.getUploadChunkSize = getUploadChunkSize;\n// The maximum number of retries that can be attempted before an upload or download fails\nfunction getRetryLimit() {\n return 5;\n}\nexports.getRetryLimit = getRetryLimit;\n// With exponential backoff, the larger the retry count, the larger the wait time before another attempt\n// The retry multiplier controls by how much the backOff time increases depending on the number of retries\nfunction getRetryMultiplier() {\n return 1.5;\n}\nexports.getRetryMultiplier = getRetryMultiplier;\n// The initial wait time if an upload or download fails and a retry is being attempted for the first time\nfunction getInitialRetryIntervalInMilliseconds() {\n return 3000;\n}\nexports.getInitialRetryIntervalInMilliseconds = getInitialRetryIntervalInMilliseconds;\n// The number of concurrent downloads that happens at the same time\nfunction getDownloadFileConcurrency() {\n return 2;\n}\nexports.getDownloadFileConcurrency = getDownloadFileConcurrency;\nfunction getRuntimeToken() {\n const token = process.env['ACTIONS_RUNTIME_TOKEN'];\n if (!token) {\n throw new Error('Unable to get ACTIONS_RUNTIME_TOKEN env variable');\n }\n return token;\n}\nexports.getRuntimeToken = getRuntimeToken;\nfunction getRuntimeUrl() {\n const runtimeUrl = process.env['ACTIONS_RUNTIME_URL'];\n if (!runtimeUrl) {\n throw new Error('Unable to get ACTIONS_RUNTIME_URL env variable');\n }\n return runtimeUrl;\n}\nexports.getRuntimeUrl = getRuntimeUrl;\nfunction getWorkFlowRunId() {\n const workFlowRunId = process.env['GITHUB_RUN_ID'];\n if (!workFlowRunId) {\n throw new Error('Unable to get GITHUB_RUN_ID env variable');\n }\n return workFlowRunId;\n}\nexports.getWorkFlowRunId = getWorkFlowRunId;\nfunction getWorkSpaceDirectory() {\n const workspaceDirectory = process.env['GITHUB_WORKSPACE'];\n if (!workspaceDirectory) {\n throw new Error('Unable to get GITHUB_WORKSPACE env variable');\n }\n return workspaceDirectory;\n}\nexports.getWorkSpaceDirectory = getWorkSpaceDirectory;\nfunction getRetentionDays() {\n return process.env['GITHUB_RETENTION_DAYS'];\n}\nexports.getRetentionDays = getRetentionDays;\nfunction isGhes() {\n const ghUrl = new URL(process.env['GITHUB_SERVER_URL'] || 'https://github.com');\n return ghUrl.hostname.toUpperCase() !== 'GITHUB.COM';\n}\nexports.isGhes = isGhes;\n//# sourceMappingURL=config-variables.js.map","\"use strict\";\n/**\n * CRC64: cyclic redundancy check, 64-bits\n *\n * In order to validate that artifacts are not being corrupted over the wire, this redundancy check allows us to\n * validate that there was no corruption during transmission. The implementation here is based on Go's hash/crc64 pkg,\n * but without the slicing-by-8 optimization: https://cs.opensource.google/go/go/+/master:src/hash/crc64/crc64.go\n *\n * This implementation uses a pregenerated table based on 0x9A6C9329AC4BC9B5 as the polynomial, the same polynomial that\n * is used for Azure Storage: https://github.com/Azure/azure-storage-net/blob/cbe605f9faa01bfc3003d75fc5a16b2eaccfe102/Lib/Common/Core/Util/Crc64.cs#L27\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\n// when transpile target is >= ES2020 (after dropping node 12) these can be changed to bigint literals - ts(2737)\nconst PREGEN_POLY_TABLE = [\n BigInt('0x0000000000000000'),\n BigInt('0x7F6EF0C830358979'),\n BigInt('0xFEDDE190606B12F2'),\n BigInt('0x81B31158505E9B8B'),\n BigInt('0xC962E5739841B68F'),\n BigInt('0xB60C15BBA8743FF6'),\n BigInt('0x37BF04E3F82AA47D'),\n BigInt('0x48D1F42BC81F2D04'),\n BigInt('0xA61CECB46814FE75'),\n BigInt('0xD9721C7C5821770C'),\n BigInt('0x58C10D24087FEC87'),\n BigInt('0x27AFFDEC384A65FE'),\n BigInt('0x6F7E09C7F05548FA'),\n BigInt('0x1010F90FC060C183'),\n BigInt('0x91A3E857903E5A08'),\n BigInt('0xEECD189FA00BD371'),\n BigInt('0x78E0FF3B88BE6F81'),\n BigInt('0x078E0FF3B88BE6F8'),\n BigInt('0x863D1EABE8D57D73'),\n BigInt('0xF953EE63D8E0F40A'),\n BigInt('0xB1821A4810FFD90E'),\n BigInt('0xCEECEA8020CA5077'),\n BigInt('0x4F5FFBD87094CBFC'),\n BigInt('0x30310B1040A14285'),\n BigInt('0xDEFC138FE0AA91F4'),\n BigInt('0xA192E347D09F188D'),\n BigInt('0x2021F21F80C18306'),\n BigInt('0x5F4F02D7B0F40A7F'),\n BigInt('0x179EF6FC78EB277B'),\n BigInt('0x68F0063448DEAE02'),\n BigInt('0xE943176C18803589'),\n BigInt('0x962DE7A428B5BCF0'),\n BigInt('0xF1C1FE77117CDF02'),\n BigInt('0x8EAF0EBF2149567B'),\n BigInt('0x0F1C1FE77117CDF0'),\n BigInt('0x7072EF2F41224489'),\n BigInt('0x38A31B04893D698D'),\n BigInt('0x47CDEBCCB908E0F4'),\n BigInt('0xC67EFA94E9567B7F'),\n BigInt('0xB9100A5CD963F206'),\n BigInt('0x57DD12C379682177'),\n BigInt('0x28B3E20B495DA80E'),\n BigInt('0xA900F35319033385'),\n BigInt('0xD66E039B2936BAFC'),\n BigInt('0x9EBFF7B0E12997F8'),\n BigInt('0xE1D10778D11C1E81'),\n BigInt('0x606216208142850A'),\n BigInt('0x1F0CE6E8B1770C73'),\n BigInt('0x8921014C99C2B083'),\n BigInt('0xF64FF184A9F739FA'),\n BigInt('0x77FCE0DCF9A9A271'),\n BigInt('0x08921014C99C2B08'),\n BigInt('0x4043E43F0183060C'),\n BigInt('0x3F2D14F731B68F75'),\n BigInt('0xBE9E05AF61E814FE'),\n BigInt('0xC1F0F56751DD9D87'),\n BigInt('0x2F3DEDF8F1D64EF6'),\n BigInt('0x50531D30C1E3C78F'),\n BigInt('0xD1E00C6891BD5C04'),\n BigInt('0xAE8EFCA0A188D57D'),\n BigInt('0xE65F088B6997F879'),\n BigInt('0x9931F84359A27100'),\n BigInt('0x1882E91B09FCEA8B'),\n BigInt('0x67EC19D339C963F2'),\n BigInt('0xD75ADABD7A6E2D6F'),\n BigInt('0xA8342A754A5BA416'),\n BigInt('0x29873B2D1A053F9D'),\n BigInt('0x56E9CBE52A30B6E4'),\n BigInt('0x1E383FCEE22F9BE0'),\n BigInt('0x6156CF06D21A1299'),\n BigInt('0xE0E5DE5E82448912'),\n BigInt('0x9F8B2E96B271006B'),\n BigInt('0x71463609127AD31A'),\n BigInt('0x0E28C6C1224F5A63'),\n BigInt('0x8F9BD7997211C1E8'),\n BigInt('0xF0F5275142244891'),\n BigInt('0xB824D37A8A3B6595'),\n BigInt('0xC74A23B2BA0EECEC'),\n BigInt('0x46F932EAEA507767'),\n BigInt('0x3997C222DA65FE1E'),\n BigInt('0xAFBA2586F2D042EE'),\n BigInt('0xD0D4D54EC2E5CB97'),\n BigInt('0x5167C41692BB501C'),\n BigInt('0x2E0934DEA28ED965'),\n BigInt('0x66D8C0F56A91F461'),\n BigInt('0x19B6303D5AA47D18'),\n BigInt('0x980521650AFAE693'),\n BigInt('0xE76BD1AD3ACF6FEA'),\n BigInt('0x09A6C9329AC4BC9B'),\n BigInt('0x76C839FAAAF135E2'),\n BigInt('0xF77B28A2FAAFAE69'),\n BigInt('0x8815D86ACA9A2710'),\n BigInt('0xC0C42C4102850A14'),\n BigInt('0xBFAADC8932B0836D'),\n BigInt('0x3E19CDD162EE18E6'),\n BigInt('0x41773D1952DB919F'),\n BigInt('0x269B24CA6B12F26D'),\n BigInt('0x59F5D4025B277B14'),\n BigInt('0xD846C55A0B79E09F'),\n BigInt('0xA72835923B4C69E6'),\n BigInt('0xEFF9C1B9F35344E2'),\n BigInt('0x90973171C366CD9B'),\n BigInt('0x1124202993385610'),\n BigInt('0x6E4AD0E1A30DDF69'),\n BigInt('0x8087C87E03060C18'),\n BigInt('0xFFE938B633338561'),\n BigInt('0x7E5A29EE636D1EEA'),\n BigInt('0x0134D92653589793'),\n BigInt('0x49E52D0D9B47BA97'),\n BigInt('0x368BDDC5AB7233EE'),\n BigInt('0xB738CC9DFB2CA865'),\n BigInt('0xC8563C55CB19211C'),\n BigInt('0x5E7BDBF1E3AC9DEC'),\n BigInt('0x21152B39D3991495'),\n BigInt('0xA0A63A6183C78F1E'),\n BigInt('0xDFC8CAA9B3F20667'),\n BigInt('0x97193E827BED2B63'),\n BigInt('0xE877CE4A4BD8A21A'),\n BigInt('0x69C4DF121B863991'),\n BigInt('0x16AA2FDA2BB3B0E8'),\n BigInt('0xF86737458BB86399'),\n BigInt('0x8709C78DBB8DEAE0'),\n BigInt('0x06BAD6D5EBD3716B'),\n BigInt('0x79D4261DDBE6F812'),\n BigInt('0x3105D23613F9D516'),\n BigInt('0x4E6B22FE23CC5C6F'),\n BigInt('0xCFD833A67392C7E4'),\n BigInt('0xB0B6C36E43A74E9D'),\n BigInt('0x9A6C9329AC4BC9B5'),\n BigInt('0xE50263E19C7E40CC'),\n BigInt('0x64B172B9CC20DB47'),\n BigInt('0x1BDF8271FC15523E'),\n BigInt('0x530E765A340A7F3A'),\n BigInt('0x2C608692043FF643'),\n BigInt('0xADD397CA54616DC8'),\n BigInt('0xD2BD67026454E4B1'),\n BigInt('0x3C707F9DC45F37C0'),\n BigInt('0x431E8F55F46ABEB9'),\n BigInt('0xC2AD9E0DA4342532'),\n BigInt('0xBDC36EC59401AC4B'),\n BigInt('0xF5129AEE5C1E814F'),\n BigInt('0x8A7C6A266C2B0836'),\n BigInt('0x0BCF7B7E3C7593BD'),\n BigInt('0x74A18BB60C401AC4'),\n BigInt('0xE28C6C1224F5A634'),\n BigInt('0x9DE29CDA14C02F4D'),\n BigInt('0x1C518D82449EB4C6'),\n BigInt('0x633F7D4A74AB3DBF'),\n BigInt('0x2BEE8961BCB410BB'),\n BigInt('0x548079A98C8199C2'),\n BigInt('0xD53368F1DCDF0249'),\n BigInt('0xAA5D9839ECEA8B30'),\n BigInt('0x449080A64CE15841'),\n BigInt('0x3BFE706E7CD4D138'),\n BigInt('0xBA4D61362C8A4AB3'),\n BigInt('0xC52391FE1CBFC3CA'),\n BigInt('0x8DF265D5D4A0EECE'),\n BigInt('0xF29C951DE49567B7'),\n BigInt('0x732F8445B4CBFC3C'),\n BigInt('0x0C41748D84FE7545'),\n BigInt('0x6BAD6D5EBD3716B7'),\n BigInt('0x14C39D968D029FCE'),\n BigInt('0x95708CCEDD5C0445'),\n BigInt('0xEA1E7C06ED698D3C'),\n BigInt('0xA2CF882D2576A038'),\n BigInt('0xDDA178E515432941'),\n BigInt('0x5C1269BD451DB2CA'),\n BigInt('0x237C997575283BB3'),\n BigInt('0xCDB181EAD523E8C2'),\n BigInt('0xB2DF7122E51661BB'),\n BigInt('0x336C607AB548FA30'),\n BigInt('0x4C0290B2857D7349'),\n BigInt('0x04D364994D625E4D'),\n BigInt('0x7BBD94517D57D734'),\n BigInt('0xFA0E85092D094CBF'),\n BigInt('0x856075C11D3CC5C6'),\n BigInt('0x134D926535897936'),\n BigInt('0x6C2362AD05BCF04F'),\n BigInt('0xED9073F555E26BC4'),\n BigInt('0x92FE833D65D7E2BD'),\n BigInt('0xDA2F7716ADC8CFB9'),\n BigInt('0xA54187DE9DFD46C0'),\n BigInt('0x24F29686CDA3DD4B'),\n BigInt('0x5B9C664EFD965432'),\n BigInt('0xB5517ED15D9D8743'),\n BigInt('0xCA3F8E196DA80E3A'),\n BigInt('0x4B8C9F413DF695B1'),\n BigInt('0x34E26F890DC31CC8'),\n BigInt('0x7C339BA2C5DC31CC'),\n BigInt('0x035D6B6AF5E9B8B5'),\n BigInt('0x82EE7A32A5B7233E'),\n BigInt('0xFD808AFA9582AA47'),\n BigInt('0x4D364994D625E4DA'),\n BigInt('0x3258B95CE6106DA3'),\n BigInt('0xB3EBA804B64EF628'),\n BigInt('0xCC8558CC867B7F51'),\n BigInt('0x8454ACE74E645255'),\n BigInt('0xFB3A5C2F7E51DB2C'),\n BigInt('0x7A894D772E0F40A7'),\n BigInt('0x05E7BDBF1E3AC9DE'),\n BigInt('0xEB2AA520BE311AAF'),\n BigInt('0x944455E88E0493D6'),\n BigInt('0x15F744B0DE5A085D'),\n BigInt('0x6A99B478EE6F8124'),\n BigInt('0x224840532670AC20'),\n BigInt('0x5D26B09B16452559'),\n BigInt('0xDC95A1C3461BBED2'),\n BigInt('0xA3FB510B762E37AB'),\n BigInt('0x35D6B6AF5E9B8B5B'),\n BigInt('0x4AB846676EAE0222'),\n BigInt('0xCB0B573F3EF099A9'),\n BigInt('0xB465A7F70EC510D0'),\n BigInt('0xFCB453DCC6DA3DD4'),\n BigInt('0x83DAA314F6EFB4AD'),\n BigInt('0x0269B24CA6B12F26'),\n BigInt('0x7D0742849684A65F'),\n BigInt('0x93CA5A1B368F752E'),\n BigInt('0xECA4AAD306BAFC57'),\n BigInt('0x6D17BB8B56E467DC'),\n BigInt('0x12794B4366D1EEA5'),\n BigInt('0x5AA8BF68AECEC3A1'),\n BigInt('0x25C64FA09EFB4AD8'),\n BigInt('0xA4755EF8CEA5D153'),\n BigInt('0xDB1BAE30FE90582A'),\n BigInt('0xBCF7B7E3C7593BD8'),\n BigInt('0xC399472BF76CB2A1'),\n BigInt('0x422A5673A732292A'),\n BigInt('0x3D44A6BB9707A053'),\n BigInt('0x759552905F188D57'),\n BigInt('0x0AFBA2586F2D042E'),\n BigInt('0x8B48B3003F739FA5'),\n BigInt('0xF42643C80F4616DC'),\n BigInt('0x1AEB5B57AF4DC5AD'),\n BigInt('0x6585AB9F9F784CD4'),\n BigInt('0xE436BAC7CF26D75F'),\n BigInt('0x9B584A0FFF135E26'),\n BigInt('0xD389BE24370C7322'),\n BigInt('0xACE74EEC0739FA5B'),\n BigInt('0x2D545FB4576761D0'),\n BigInt('0x523AAF7C6752E8A9'),\n BigInt('0xC41748D84FE75459'),\n BigInt('0xBB79B8107FD2DD20'),\n BigInt('0x3ACAA9482F8C46AB'),\n BigInt('0x45A459801FB9CFD2'),\n BigInt('0x0D75ADABD7A6E2D6'),\n BigInt('0x721B5D63E7936BAF'),\n BigInt('0xF3A84C3BB7CDF024'),\n BigInt('0x8CC6BCF387F8795D'),\n BigInt('0x620BA46C27F3AA2C'),\n BigInt('0x1D6554A417C62355'),\n BigInt('0x9CD645FC4798B8DE'),\n BigInt('0xE3B8B53477AD31A7'),\n BigInt('0xAB69411FBFB21CA3'),\n BigInt('0xD407B1D78F8795DA'),\n BigInt('0x55B4A08FDFD90E51'),\n BigInt('0x2ADA5047EFEC8728')\n];\nclass CRC64 {\n constructor() {\n this._crc = BigInt(0);\n }\n update(data) {\n const buffer = typeof data === 'string' ? Buffer.from(data) : data;\n let crc = CRC64.flip64Bits(this._crc);\n for (const dataByte of buffer) {\n const crcByte = Number(crc & BigInt(0xff));\n crc = PREGEN_POLY_TABLE[crcByte ^ dataByte] ^ (crc >> BigInt(8));\n }\n this._crc = CRC64.flip64Bits(crc);\n }\n digest(encoding) {\n switch (encoding) {\n case 'hex':\n return this._crc.toString(16).toUpperCase();\n case 'base64':\n return this.toBuffer().toString('base64');\n default:\n return this.toBuffer();\n }\n }\n toBuffer() {\n return Buffer.from([0, 8, 16, 24, 32, 40, 48, 56].map(s => Number((this._crc >> BigInt(s)) & BigInt(0xff))));\n }\n static flip64Bits(n) {\n return (BigInt(1) << BigInt(64)) - BigInt(1) - n;\n }\n}\nexports.default = CRC64;\n//# sourceMappingURL=crc64.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DownloadHttpClient = void 0;\nconst fs = __importStar(require(\"fs\"));\nconst core = __importStar(require(\"@actions/core\"));\nconst zlib = __importStar(require(\"zlib\"));\nconst utils_1 = require(\"./utils\");\nconst url_1 = require(\"url\");\nconst status_reporter_1 = require(\"./status-reporter\");\nconst perf_hooks_1 = require(\"perf_hooks\");\nconst http_manager_1 = require(\"./http-manager\");\nconst config_variables_1 = require(\"./config-variables\");\nconst requestUtils_1 = require(\"./requestUtils\");\nclass DownloadHttpClient {\n constructor() {\n this.downloadHttpManager = new http_manager_1.HttpManager((0, config_variables_1.getDownloadFileConcurrency)(), '@actions/artifact-download');\n // downloads are usually significantly faster than uploads so display status information every second\n this.statusReporter = new status_reporter_1.StatusReporter(1000);\n }\n /**\n * Gets a list of all artifacts that are in a specific container\n */\n listArtifacts() {\n return __awaiter(this, void 0, void 0, function* () {\n const artifactUrl = (0, utils_1.getArtifactUrl)();\n // use the first client from the httpManager, `keep-alive` is not used so the connection will close immediately\n const client = this.downloadHttpManager.getClient(0);\n const headers = (0, utils_1.getDownloadHeaders)('application/json');\n const response = yield (0, requestUtils_1.retryHttpClientRequest)('List Artifacts', () => __awaiter(this, void 0, void 0, function* () { return client.get(artifactUrl, headers); }));\n const body = yield response.readBody();\n return JSON.parse(body);\n });\n }\n /**\n * Fetches a set of container items that describe the contents of an artifact\n * @param artifactName the name of the artifact\n * @param containerUrl the artifact container URL for the run\n */\n getContainerItems(artifactName, containerUrl) {\n return __awaiter(this, void 0, void 0, function* () {\n // the itemPath search parameter controls which containers will be returned\n const resourceUrl = new url_1.URL(containerUrl);\n resourceUrl.searchParams.append('itemPath', artifactName);\n // use the first client from the httpManager, `keep-alive` is not used so the connection will close immediately\n const client = this.downloadHttpManager.getClient(0);\n const headers = (0, utils_1.getDownloadHeaders)('application/json');\n const response = yield (0, requestUtils_1.retryHttpClientRequest)('Get Container Items', () => __awaiter(this, void 0, void 0, function* () { return client.get(resourceUrl.toString(), headers); }));\n const body = yield response.readBody();\n return JSON.parse(body);\n });\n }\n /**\n * Concurrently downloads all the files that are part of an artifact\n * @param downloadItems information about what items to download and where to save them\n */\n downloadSingleArtifact(downloadItems) {\n return __awaiter(this, void 0, void 0, function* () {\n const DOWNLOAD_CONCURRENCY = (0, config_variables_1.getDownloadFileConcurrency)();\n // limit the number of files downloaded at a single time\n core.debug(`Download file concurrency is set to ${DOWNLOAD_CONCURRENCY}`);\n const parallelDownloads = [...new Array(DOWNLOAD_CONCURRENCY).keys()];\n let currentFile = 0;\n let downloadedFiles = 0;\n core.info(`Total number of files that will be downloaded: ${downloadItems.length}`);\n this.statusReporter.setTotalNumberOfFilesToProcess(downloadItems.length);\n this.statusReporter.start();\n yield Promise.all(parallelDownloads.map((index) => __awaiter(this, void 0, void 0, function* () {\n while (currentFile < downloadItems.length) {\n const currentFileToDownload = downloadItems[currentFile];\n currentFile += 1;\n const startTime = perf_hooks_1.performance.now();\n yield this.downloadIndividualFile(index, currentFileToDownload.sourceLocation, currentFileToDownload.targetPath);\n if (core.isDebug()) {\n core.debug(`File: ${++downloadedFiles}/${downloadItems.length}. ${currentFileToDownload.targetPath} took ${(perf_hooks_1.performance.now() - startTime).toFixed(3)} milliseconds to finish downloading`);\n }\n this.statusReporter.incrementProcessedCount();\n }\n })))\n .catch(error => {\n throw new Error(`Unable to download the artifact: ${error}`);\n })\n .finally(() => {\n this.statusReporter.stop();\n // safety dispose all connections\n this.downloadHttpManager.disposeAndReplaceAllClients();\n });\n });\n }\n /**\n * Downloads an individual file\n * @param httpClientIndex the index of the http client that is used to make all of the calls\n * @param artifactLocation origin location where a file will be downloaded from\n * @param downloadPath destination location for the file being downloaded\n */\n downloadIndividualFile(httpClientIndex, artifactLocation, downloadPath) {\n return __awaiter(this, void 0, void 0, function* () {\n let retryCount = 0;\n const retryLimit = (0, config_variables_1.getRetryLimit)();\n let destinationStream = fs.createWriteStream(downloadPath);\n const headers = (0, utils_1.getDownloadHeaders)('application/json', true, true);\n // a single GET request is used to download a file\n const makeDownloadRequest = () => __awaiter(this, void 0, void 0, function* () {\n const client = this.downloadHttpManager.getClient(httpClientIndex);\n return yield client.get(artifactLocation, headers);\n });\n // check the response headers to determine if the file was compressed using gzip\n const isGzip = (incomingHeaders) => {\n return ('content-encoding' in incomingHeaders &&\n incomingHeaders['content-encoding'] === 'gzip');\n };\n // Increments the current retry count and then checks if the retry limit has been reached\n // If there have been too many retries, fail so the download stops. If there is a retryAfterValue value provided,\n // it will be used\n const backOff = (retryAfterValue) => __awaiter(this, void 0, void 0, function* () {\n retryCount++;\n if (retryCount > retryLimit) {\n return Promise.reject(new Error(`Retry limit has been reached. Unable to download ${artifactLocation}`));\n }\n else {\n this.downloadHttpManager.disposeAndReplaceClient(httpClientIndex);\n if (retryAfterValue) {\n // Back off by waiting the specified time denoted by the retry-after header\n core.info(`Backoff due to too many requests, retry #${retryCount}. Waiting for ${retryAfterValue} milliseconds before continuing the download`);\n yield (0, utils_1.sleep)(retryAfterValue);\n }\n else {\n // Back off using an exponential value that depends on the retry count\n const backoffTime = (0, utils_1.getExponentialRetryTimeInMilliseconds)(retryCount);\n core.info(`Exponential backoff for retry #${retryCount}. Waiting for ${backoffTime} milliseconds before continuing the download`);\n yield (0, utils_1.sleep)(backoffTime);\n }\n core.info(`Finished backoff for retry #${retryCount}, continuing with download`);\n }\n });\n const isAllBytesReceived = (expected, received) => {\n // be lenient, if any input is missing, assume success, i.e. not truncated\n if (!expected ||\n !received ||\n process.env['ACTIONS_ARTIFACT_SKIP_DOWNLOAD_VALIDATION']) {\n core.info('Skipping download validation.');\n return true;\n }\n return parseInt(expected) === received;\n };\n const resetDestinationStream = (fileDownloadPath) => __awaiter(this, void 0, void 0, function* () {\n destinationStream.close();\n // await until file is created at downloadpath; node15 and up fs.createWriteStream had not created a file yet\n yield new Promise(resolve => {\n destinationStream.on('close', resolve);\n if (destinationStream.writableFinished) {\n resolve();\n }\n });\n yield (0, utils_1.rmFile)(fileDownloadPath);\n destinationStream = fs.createWriteStream(fileDownloadPath);\n });\n // keep trying to download a file until a retry limit has been reached\n while (retryCount <= retryLimit) {\n let response;\n try {\n response = yield makeDownloadRequest();\n }\n catch (error) {\n // if an error is caught, it is usually indicative of a timeout so retry the download\n core.info('An error occurred while attempting to download a file');\n // eslint-disable-next-line no-console\n console.log(error);\n // increment the retryCount and use exponential backoff to wait before making the next request\n yield backOff();\n continue;\n }\n let forceRetry = false;\n if ((0, utils_1.isSuccessStatusCode)(response.message.statusCode)) {\n // The body contains the contents of the file however calling response.readBody() causes all the content to be converted to a string\n // which can cause some gzip encoded data to be lost\n // Instead of using response.readBody(), response.message is a readableStream that can be directly used to get the raw body contents\n try {\n const isGzipped = isGzip(response.message.headers);\n yield this.pipeResponseToFile(response, destinationStream, isGzipped);\n if (isGzipped ||\n isAllBytesReceived(response.message.headers['content-length'], yield (0, utils_1.getFileSize)(downloadPath))) {\n return;\n }\n else {\n forceRetry = true;\n }\n }\n catch (error) {\n // retry on error, most likely streams were corrupted\n forceRetry = true;\n }\n }\n if (forceRetry || (0, utils_1.isRetryableStatusCode)(response.message.statusCode)) {\n core.info(`A ${response.message.statusCode} response code has been received while attempting to download an artifact`);\n resetDestinationStream(downloadPath);\n // if a throttled status code is received, try to get the retryAfter header value, else differ to standard exponential backoff\n (0, utils_1.isThrottledStatusCode)(response.message.statusCode)\n ? yield backOff((0, utils_1.tryGetRetryAfterValueTimeInMilliseconds)(response.message.headers))\n : yield backOff();\n }\n else {\n // Some unexpected response code, fail immediately and stop the download\n (0, utils_1.displayHttpDiagnostics)(response);\n return Promise.reject(new Error(`Unexpected http ${response.message.statusCode} during download for ${artifactLocation}`));\n }\n }\n });\n }\n /**\n * Pipes the response from downloading an individual file to the appropriate destination stream while decoding gzip content if necessary\n * @param response the http response received when downloading a file\n * @param destinationStream the stream where the file should be written to\n * @param isGzip a boolean denoting if the content is compressed using gzip and if we need to decode it\n */\n pipeResponseToFile(response, destinationStream, isGzip) {\n return __awaiter(this, void 0, void 0, function* () {\n yield new Promise((resolve, reject) => {\n if (isGzip) {\n const gunzip = zlib.createGunzip();\n response.message\n .on('error', error => {\n core.info(`An error occurred while attempting to read the response stream`);\n gunzip.close();\n destinationStream.close();\n reject(error);\n })\n .pipe(gunzip)\n .on('error', error => {\n core.info(`An error occurred while attempting to decompress the response stream`);\n destinationStream.close();\n reject(error);\n })\n .pipe(destinationStream)\n .on('close', () => {\n resolve();\n })\n .on('error', error => {\n core.info(`An error occurred while writing a downloaded file to ${destinationStream.path}`);\n reject(error);\n });\n }\n else {\n response.message\n .on('error', error => {\n core.info(`An error occurred while attempting to read the response stream`);\n destinationStream.close();\n reject(error);\n })\n .pipe(destinationStream)\n .on('close', () => {\n resolve();\n })\n .on('error', error => {\n core.info(`An error occurred while writing a downloaded file to ${destinationStream.path}`);\n reject(error);\n });\n }\n });\n return;\n });\n }\n}\nexports.DownloadHttpClient = DownloadHttpClient;\n//# sourceMappingURL=download-http-client.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getDownloadSpecification = void 0;\nconst path = __importStar(require(\"path\"));\n/**\n * Creates a specification for a set of files that will be downloaded\n * @param artifactName the name of the artifact\n * @param artifactEntries a set of container entries that describe that files that make up an artifact\n * @param downloadPath the path where the artifact will be downloaded to\n * @param includeRootDirectory specifies if there should be an extra directory (denoted by the artifact name) where the artifact files should be downloaded to\n */\nfunction getDownloadSpecification(artifactName, artifactEntries, downloadPath, includeRootDirectory) {\n // use a set for the directory paths so that there are no duplicates\n const directories = new Set();\n const specifications = {\n rootDownloadLocation: includeRootDirectory\n ? path.join(downloadPath, artifactName)\n : downloadPath,\n directoryStructure: [],\n emptyFilesToCreate: [],\n filesToDownload: []\n };\n for (const entry of artifactEntries) {\n // Ignore artifacts in the container that don't begin with the same name\n if (entry.path.startsWith(`${artifactName}/`) ||\n entry.path.startsWith(`${artifactName}\\\\`)) {\n // normalize all separators to the local OS\n const normalizedPathEntry = path.normalize(entry.path);\n // entry.path always starts with the artifact name, if includeRootDirectory is false, remove the name from the beginning of the path\n const filePath = path.join(downloadPath, includeRootDirectory\n ? normalizedPathEntry\n : normalizedPathEntry.replace(artifactName, ''));\n // Case insensitive folder structure maintained in the backend, not every folder is created so the 'folder'\n // itemType cannot be relied upon. The file must be used to determine the directory structure\n if (entry.itemType === 'file') {\n // Get the directories that we need to create from the filePath for each individual file\n directories.add(path.dirname(filePath));\n if (entry.fileLength === 0) {\n // An empty file was uploaded, create the empty files locally so that no extra http calls are made\n specifications.emptyFilesToCreate.push(filePath);\n }\n else {\n specifications.filesToDownload.push({\n sourceLocation: entry.contentLocation,\n targetPath: filePath\n });\n }\n }\n }\n }\n specifications.directoryStructure = Array.from(directories);\n return specifications;\n}\nexports.getDownloadSpecification = getDownloadSpecification;\n//# sourceMappingURL=download-specification.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.HttpManager = void 0;\nconst utils_1 = require(\"./utils\");\n/**\n * Used for managing http clients during either upload or download\n */\nclass HttpManager {\n constructor(clientCount, userAgent) {\n if (clientCount < 1) {\n throw new Error('There must be at least one client');\n }\n this.userAgent = userAgent;\n this.clients = new Array(clientCount).fill((0, utils_1.createHttpClient)(userAgent));\n }\n getClient(index) {\n return this.clients[index];\n }\n // client disposal is necessary if a keep-alive connection is used to properly close the connection\n // for more information see: https://github.com/actions/http-client/blob/04e5ad73cd3fd1f5610a32116b0759eddf6570d2/index.ts#L292\n disposeAndReplaceClient(index) {\n this.clients[index].dispose();\n this.clients[index] = (0, utils_1.createHttpClient)(this.userAgent);\n }\n disposeAndReplaceAllClients() {\n for (const [index] of this.clients.entries()) {\n this.disposeAndReplaceClient(index);\n }\n }\n}\nexports.HttpManager = HttpManager;\n//# sourceMappingURL=http-manager.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.checkArtifactFilePath = exports.checkArtifactName = void 0;\nconst core_1 = require(\"@actions/core\");\n/**\n * Invalid characters that cannot be in the artifact name or an uploaded file. Will be rejected\n * from the server if attempted to be sent over. These characters are not allowed due to limitations with certain\n * file systems such as NTFS. To maintain platform-agnostic behavior, all characters that are not supported by an\n * individual filesystem/platform will not be supported on all fileSystems/platforms\n *\n * FilePaths can include characters such as \\ and / which are not permitted in the artifact name alone\n */\nconst invalidArtifactFilePathCharacters = new Map([\n ['\"', ' Double quote \"'],\n [':', ' Colon :'],\n ['<', ' Less than <'],\n ['>', ' Greater than >'],\n ['|', ' Vertical bar |'],\n ['*', ' Asterisk *'],\n ['?', ' Question mark ?'],\n ['\\r', ' Carriage return \\\\r'],\n ['\\n', ' Line feed \\\\n']\n]);\nconst invalidArtifactNameCharacters = new Map([\n ...invalidArtifactFilePathCharacters,\n ['\\\\', ' Backslash \\\\'],\n ['/', ' Forward slash /']\n]);\n/**\n * Scans the name of the artifact to make sure there are no illegal characters\n */\nfunction checkArtifactName(name) {\n if (!name) {\n throw new Error(`Artifact name: ${name}, is incorrectly provided`);\n }\n for (const [invalidCharacterKey, errorMessageForCharacter] of invalidArtifactNameCharacters) {\n if (name.includes(invalidCharacterKey)) {\n throw new Error(`Artifact name is not valid: ${name}. Contains the following character: ${errorMessageForCharacter}\n \nInvalid characters include: ${Array.from(invalidArtifactNameCharacters.values()).toString()}\n \nThese characters are not allowed in the artifact name due to limitations with certain file systems such as NTFS. To maintain file system agnostic behavior, these characters are intentionally not allowed to prevent potential problems with downloads on different file systems.`);\n }\n }\n (0, core_1.info)(`Artifact name is valid!`);\n}\nexports.checkArtifactName = checkArtifactName;\n/**\n * Scans the name of the filePath used to make sure there are no illegal characters\n */\nfunction checkArtifactFilePath(path) {\n if (!path) {\n throw new Error(`Artifact path: ${path}, is incorrectly provided`);\n }\n for (const [invalidCharacterKey, errorMessageForCharacter] of invalidArtifactFilePathCharacters) {\n if (path.includes(invalidCharacterKey)) {\n throw new Error(`Artifact path is not valid: ${path}. Contains the following character: ${errorMessageForCharacter}\n \nInvalid characters include: ${Array.from(invalidArtifactFilePathCharacters.values()).toString()}\n \nThe following characters are not allowed in files that are uploaded due to limitations with certain file systems such as NTFS. To maintain file system agnostic behavior, these characters are intentionally not allowed to prevent potential problems with downloads on different file systems.\n `);\n }\n }\n}\nexports.checkArtifactFilePath = checkArtifactFilePath;\n//# sourceMappingURL=path-and-artifact-name-validation.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.retryHttpClientRequest = exports.retry = void 0;\nconst utils_1 = require(\"./utils\");\nconst core = __importStar(require(\"@actions/core\"));\nconst config_variables_1 = require(\"./config-variables\");\nfunction retry(name, operation, customErrorMessages, maxAttempts) {\n return __awaiter(this, void 0, void 0, function* () {\n let response = undefined;\n let statusCode = undefined;\n let isRetryable = false;\n let errorMessage = '';\n let customErrorInformation = undefined;\n let attempt = 1;\n while (attempt <= maxAttempts) {\n try {\n response = yield operation();\n statusCode = response.message.statusCode;\n if ((0, utils_1.isSuccessStatusCode)(statusCode)) {\n return response;\n }\n // Extra error information that we want to display if a particular response code is hit\n if (statusCode) {\n customErrorInformation = customErrorMessages.get(statusCode);\n }\n isRetryable = (0, utils_1.isRetryableStatusCode)(statusCode);\n errorMessage = `Artifact service responded with ${statusCode}`;\n }\n catch (error) {\n isRetryable = true;\n errorMessage = error.message;\n }\n if (!isRetryable) {\n core.info(`${name} - Error is not retryable`);\n if (response) {\n (0, utils_1.displayHttpDiagnostics)(response);\n }\n break;\n }\n core.info(`${name} - Attempt ${attempt} of ${maxAttempts} failed with error: ${errorMessage}`);\n yield (0, utils_1.sleep)((0, utils_1.getExponentialRetryTimeInMilliseconds)(attempt));\n attempt++;\n }\n if (response) {\n (0, utils_1.displayHttpDiagnostics)(response);\n }\n if (customErrorInformation) {\n throw Error(`${name} failed: ${customErrorInformation}`);\n }\n throw Error(`${name} failed: ${errorMessage}`);\n });\n}\nexports.retry = retry;\nfunction retryHttpClientRequest(name, method, customErrorMessages = new Map(), maxAttempts = (0, config_variables_1.getRetryLimit)()) {\n return __awaiter(this, void 0, void 0, function* () {\n return yield retry(name, method, customErrorMessages, maxAttempts);\n });\n}\nexports.retryHttpClientRequest = retryHttpClientRequest;\n//# sourceMappingURL=requestUtils.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.StatusReporter = void 0;\nconst core_1 = require(\"@actions/core\");\n/**\n * Status Reporter that displays information about the progress/status of an artifact that is being uploaded or downloaded\n *\n * Variable display time that can be adjusted using the displayFrequencyInMilliseconds variable\n * The total status of the upload/download gets displayed according to this value\n * If there is a large file that is being uploaded, extra information about the individual status can also be displayed using the updateLargeFileStatus function\n */\nclass StatusReporter {\n constructor(displayFrequencyInMilliseconds) {\n this.totalNumberOfFilesToProcess = 0;\n this.processedCount = 0;\n this.largeFiles = new Map();\n this.totalFileStatus = undefined;\n this.displayFrequencyInMilliseconds = displayFrequencyInMilliseconds;\n }\n setTotalNumberOfFilesToProcess(fileTotal) {\n this.totalNumberOfFilesToProcess = fileTotal;\n this.processedCount = 0;\n }\n start() {\n // displays information about the total upload/download status\n this.totalFileStatus = setInterval(() => {\n // display 1 decimal place without any rounding\n const percentage = this.formatPercentage(this.processedCount, this.totalNumberOfFilesToProcess);\n (0, core_1.info)(`Total file count: ${this.totalNumberOfFilesToProcess} ---- Processed file #${this.processedCount} (${percentage.slice(0, percentage.indexOf('.') + 2)}%)`);\n }, this.displayFrequencyInMilliseconds);\n }\n // if there is a large file that is being uploaded in chunks, this is used to display extra information about the status of the upload\n updateLargeFileStatus(fileName, chunkStartIndex, chunkEndIndex, totalUploadFileSize) {\n // display 1 decimal place without any rounding\n const percentage = this.formatPercentage(chunkEndIndex, totalUploadFileSize);\n (0, core_1.info)(`Uploaded ${fileName} (${percentage.slice(0, percentage.indexOf('.') + 2)}%) bytes ${chunkStartIndex}:${chunkEndIndex}`);\n }\n stop() {\n if (this.totalFileStatus) {\n clearInterval(this.totalFileStatus);\n }\n }\n incrementProcessedCount() {\n this.processedCount++;\n }\n formatPercentage(numerator, denominator) {\n // toFixed() rounds, so use extra precision to display accurate information even though 4 decimal places are not displayed\n return ((numerator / denominator) * 100).toFixed(4).toString();\n }\n}\nexports.StatusReporter = StatusReporter;\n//# sourceMappingURL=status-reporter.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __asyncValues = (this && this.__asyncValues) || function (o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createGZipFileInBuffer = exports.createGZipFileOnDisk = void 0;\nconst fs = __importStar(require(\"fs\"));\nconst zlib = __importStar(require(\"zlib\"));\nconst util_1 = require(\"util\");\nconst stat = (0, util_1.promisify)(fs.stat);\n/**\n * GZipping certain files that are already compressed will likely not yield further size reductions. Creating large temporary gzip\n * files then will just waste a lot of time before ultimately being discarded (especially for very large files).\n * If any of these types of files are encountered then on-disk gzip creation will be skipped and the original file will be uploaded as-is\n */\nconst gzipExemptFileExtensions = [\n '.gz',\n '.gzip',\n '.tgz',\n '.taz',\n '.Z',\n '.taZ',\n '.bz2',\n '.tbz',\n '.tbz2',\n '.tz2',\n '.lz',\n '.lzma',\n '.tlz',\n '.lzo',\n '.xz',\n '.txz',\n '.zst',\n '.zstd',\n '.tzst',\n '.zip',\n '.7z' // 7ZIP\n];\n/**\n * Creates a Gzip compressed file of an original file at the provided temporary filepath location\n * @param {string} originalFilePath filepath of whatever will be compressed. The original file will be unmodified\n * @param {string} tempFilePath the location of where the Gzip file will be created\n * @returns the size of gzip file that gets created\n */\nfunction createGZipFileOnDisk(originalFilePath, tempFilePath) {\n return __awaiter(this, void 0, void 0, function* () {\n for (const gzipExemptExtension of gzipExemptFileExtensions) {\n if (originalFilePath.endsWith(gzipExemptExtension)) {\n // return a really large number so that the original file gets uploaded\n return Number.MAX_SAFE_INTEGER;\n }\n }\n return new Promise((resolve, reject) => {\n const inputStream = fs.createReadStream(originalFilePath);\n const gzip = zlib.createGzip();\n const outputStream = fs.createWriteStream(tempFilePath);\n inputStream.pipe(gzip).pipe(outputStream);\n outputStream.on('finish', () => __awaiter(this, void 0, void 0, function* () {\n // wait for stream to finish before calculating the size which is needed as part of the Content-Length header when starting an upload\n const size = (yield stat(tempFilePath)).size;\n resolve(size);\n }));\n outputStream.on('error', error => {\n // eslint-disable-next-line no-console\n console.log(error);\n reject(error);\n });\n });\n });\n}\nexports.createGZipFileOnDisk = createGZipFileOnDisk;\n/**\n * Creates a GZip file in memory using a buffer. Should be used for smaller files to reduce disk I/O\n * @param originalFilePath the path to the original file that is being GZipped\n * @returns a buffer with the GZip file\n */\nfunction createGZipFileInBuffer(originalFilePath) {\n return __awaiter(this, void 0, void 0, function* () {\n return new Promise((resolve) => __awaiter(this, void 0, void 0, function* () {\n var _a, e_1, _b, _c;\n const inputStream = fs.createReadStream(originalFilePath);\n const gzip = zlib.createGzip();\n inputStream.pipe(gzip);\n // read stream into buffer, using experimental async iterators see https://github.com/nodejs/readable-stream/issues/403#issuecomment-479069043\n const chunks = [];\n try {\n for (var _d = true, gzip_1 = __asyncValues(gzip), gzip_1_1; gzip_1_1 = yield gzip_1.next(), _a = gzip_1_1.done, !_a;) {\n _c = gzip_1_1.value;\n _d = false;\n try {\n const chunk = _c;\n chunks.push(chunk);\n }\n finally {\n _d = true;\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (!_d && !_a && (_b = gzip_1.return)) yield _b.call(gzip_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n resolve(Buffer.concat(chunks));\n }));\n });\n}\nexports.createGZipFileInBuffer = createGZipFileInBuffer;\n//# sourceMappingURL=upload-gzip.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.UploadHttpClient = void 0;\nconst fs = __importStar(require(\"fs\"));\nconst core = __importStar(require(\"@actions/core\"));\nconst tmp = __importStar(require(\"tmp-promise\"));\nconst stream = __importStar(require(\"stream\"));\nconst utils_1 = require(\"./utils\");\nconst config_variables_1 = require(\"./config-variables\");\nconst util_1 = require(\"util\");\nconst url_1 = require(\"url\");\nconst perf_hooks_1 = require(\"perf_hooks\");\nconst status_reporter_1 = require(\"./status-reporter\");\nconst http_client_1 = require(\"@actions/http-client\");\nconst http_manager_1 = require(\"./http-manager\");\nconst upload_gzip_1 = require(\"./upload-gzip\");\nconst requestUtils_1 = require(\"./requestUtils\");\nconst stat = (0, util_1.promisify)(fs.stat);\nclass UploadHttpClient {\n constructor() {\n this.uploadHttpManager = new http_manager_1.HttpManager((0, config_variables_1.getUploadFileConcurrency)(), '@actions/artifact-upload');\n this.statusReporter = new status_reporter_1.StatusReporter(10000);\n }\n /**\n * Creates a file container for the new artifact in the remote blob storage/file service\n * @param {string} artifactName Name of the artifact being created\n * @returns The response from the Artifact Service if the file container was successfully created\n */\n createArtifactInFileContainer(artifactName, options) {\n return __awaiter(this, void 0, void 0, function* () {\n const parameters = {\n Type: 'actions_storage',\n Name: artifactName\n };\n // calculate retention period\n if (options && options.retentionDays) {\n const maxRetentionStr = (0, config_variables_1.getRetentionDays)();\n parameters.RetentionDays = (0, utils_1.getProperRetention)(options.retentionDays, maxRetentionStr);\n }\n const data = JSON.stringify(parameters, null, 2);\n const artifactUrl = (0, utils_1.getArtifactUrl)();\n // use the first client from the httpManager, `keep-alive` is not used so the connection will close immediately\n const client = this.uploadHttpManager.getClient(0);\n const headers = (0, utils_1.getUploadHeaders)('application/json', false);\n // Extra information to display when a particular HTTP code is returned\n // If a 403 is returned when trying to create a file container, the customer has exceeded\n // their storage quota so no new artifact containers can be created\n const customErrorMessages = new Map([\n [\n http_client_1.HttpCodes.Forbidden,\n (0, config_variables_1.isGhes)()\n ? 'Please reference [Enabling GitHub Actions for GitHub Enterprise Server](https://docs.github.com/en/enterprise-server@3.8/admin/github-actions/enabling-github-actions-for-github-enterprise-server) to ensure Actions storage is configured correctly.'\n : 'Artifact storage quota has been hit. Unable to upload any new artifacts'\n ],\n [\n http_client_1.HttpCodes.BadRequest,\n `The artifact name ${artifactName} is not valid. Request URL ${artifactUrl}`\n ]\n ]);\n const response = yield (0, requestUtils_1.retryHttpClientRequest)('Create Artifact Container', () => __awaiter(this, void 0, void 0, function* () { return client.post(artifactUrl, data, headers); }), customErrorMessages);\n const body = yield response.readBody();\n return JSON.parse(body);\n });\n }\n /**\n * Concurrently upload all of the files in chunks\n * @param {string} uploadUrl Base Url for the artifact that was created\n * @param {SearchResult[]} filesToUpload A list of information about the files being uploaded\n * @returns The size of all the files uploaded in bytes\n */\n uploadArtifactToFileContainer(uploadUrl, filesToUpload, options) {\n return __awaiter(this, void 0, void 0, function* () {\n const FILE_CONCURRENCY = (0, config_variables_1.getUploadFileConcurrency)();\n const MAX_CHUNK_SIZE = (0, config_variables_1.getUploadChunkSize)();\n core.debug(`File Concurrency: ${FILE_CONCURRENCY}, and Chunk Size: ${MAX_CHUNK_SIZE}`);\n const parameters = [];\n // by default, file uploads will continue if there is an error unless specified differently in the options\n let continueOnError = true;\n if (options) {\n if (options.continueOnError === false) {\n continueOnError = false;\n }\n }\n // prepare the necessary parameters to upload all the files\n for (const file of filesToUpload) {\n const resourceUrl = new url_1.URL(uploadUrl);\n resourceUrl.searchParams.append('itemPath', file.uploadFilePath);\n parameters.push({\n file: file.absoluteFilePath,\n resourceUrl: resourceUrl.toString(),\n maxChunkSize: MAX_CHUNK_SIZE,\n continueOnError\n });\n }\n const parallelUploads = [...new Array(FILE_CONCURRENCY).keys()];\n const failedItemsToReport = [];\n let currentFile = 0;\n let completedFiles = 0;\n let uploadFileSize = 0;\n let totalFileSize = 0;\n let abortPendingFileUploads = false;\n this.statusReporter.setTotalNumberOfFilesToProcess(filesToUpload.length);\n this.statusReporter.start();\n // only allow a certain amount of files to be uploaded at once, this is done to reduce potential errors\n yield Promise.all(parallelUploads.map((index) => __awaiter(this, void 0, void 0, function* () {\n while (currentFile < filesToUpload.length) {\n const currentFileParameters = parameters[currentFile];\n currentFile += 1;\n if (abortPendingFileUploads) {\n failedItemsToReport.push(currentFileParameters.file);\n continue;\n }\n const startTime = perf_hooks_1.performance.now();\n const uploadFileResult = yield this.uploadFileAsync(index, currentFileParameters);\n if (core.isDebug()) {\n core.debug(`File: ${++completedFiles}/${filesToUpload.length}. ${currentFileParameters.file} took ${(perf_hooks_1.performance.now() - startTime).toFixed(3)} milliseconds to finish upload`);\n }\n uploadFileSize += uploadFileResult.successfulUploadSize;\n totalFileSize += uploadFileResult.totalSize;\n if (uploadFileResult.isSuccess === false) {\n failedItemsToReport.push(currentFileParameters.file);\n if (!continueOnError) {\n // fail fast\n core.error(`aborting artifact upload`);\n abortPendingFileUploads = true;\n }\n }\n this.statusReporter.incrementProcessedCount();\n }\n })));\n this.statusReporter.stop();\n // done uploading, safety dispose all connections\n this.uploadHttpManager.disposeAndReplaceAllClients();\n core.info(`Total size of all the files uploaded is ${uploadFileSize} bytes`);\n return {\n uploadSize: uploadFileSize,\n totalSize: totalFileSize,\n failedItems: failedItemsToReport\n };\n });\n }\n /**\n * Asynchronously uploads a file. The file is compressed and uploaded using GZip if it is determined to save space.\n * If the upload file is bigger than the max chunk size it will be uploaded via multiple calls\n * @param {number} httpClientIndex The index of the httpClient that is being used to make all of the calls\n * @param {UploadFileParameters} parameters Information about the file that needs to be uploaded\n * @returns The size of the file that was uploaded in bytes along with any failed uploads\n */\n uploadFileAsync(httpClientIndex, parameters) {\n return __awaiter(this, void 0, void 0, function* () {\n const fileStat = yield stat(parameters.file);\n const totalFileSize = fileStat.size;\n const isFIFO = fileStat.isFIFO();\n let offset = 0;\n let isUploadSuccessful = true;\n let failedChunkSizes = 0;\n let uploadFileSize = 0;\n let isGzip = true;\n // the file that is being uploaded is less than 64k in size to increase throughput and to minimize disk I/O\n // for creating a new GZip file, an in-memory buffer is used for compression\n // with named pipes the file size is reported as zero in that case don't read the file in memory\n if (!isFIFO && totalFileSize < 65536) {\n core.debug(`${parameters.file} is less than 64k in size. Creating a gzip file in-memory to potentially reduce the upload size`);\n const buffer = yield (0, upload_gzip_1.createGZipFileInBuffer)(parameters.file);\n // An open stream is needed in the event of a failure and we need to retry. If a NodeJS.ReadableStream is directly passed in,\n // it will not properly get reset to the start of the stream if a chunk upload needs to be retried\n let openUploadStream;\n if (totalFileSize < buffer.byteLength) {\n // compression did not help with reducing the size, use a readable stream from the original file for upload\n core.debug(`The gzip file created for ${parameters.file} did not help with reducing the size of the file. The original file will be uploaded as-is`);\n openUploadStream = () => fs.createReadStream(parameters.file);\n isGzip = false;\n uploadFileSize = totalFileSize;\n }\n else {\n // create a readable stream using a PassThrough stream that is both readable and writable\n core.debug(`A gzip file created for ${parameters.file} helped with reducing the size of the original file. The file will be uploaded using gzip.`);\n openUploadStream = () => {\n const passThrough = new stream.PassThrough();\n passThrough.end(buffer);\n return passThrough;\n };\n uploadFileSize = buffer.byteLength;\n }\n const result = yield this.uploadChunk(httpClientIndex, parameters.resourceUrl, openUploadStream, 0, uploadFileSize - 1, uploadFileSize, isGzip, totalFileSize);\n if (!result) {\n // chunk failed to upload\n isUploadSuccessful = false;\n failedChunkSizes += uploadFileSize;\n core.warning(`Aborting upload for ${parameters.file} due to failure`);\n }\n return {\n isSuccess: isUploadSuccessful,\n successfulUploadSize: uploadFileSize - failedChunkSizes,\n totalSize: totalFileSize\n };\n }\n else {\n // the file that is being uploaded is greater than 64k in size, a temporary file gets created on disk using the\n // npm tmp-promise package and this file gets used to create a GZipped file\n const tempFile = yield tmp.file();\n core.debug(`${parameters.file} is greater than 64k in size. Creating a gzip file on-disk ${tempFile.path} to potentially reduce the upload size`);\n // create a GZip file of the original file being uploaded, the original file should not be modified in any way\n uploadFileSize = yield (0, upload_gzip_1.createGZipFileOnDisk)(parameters.file, tempFile.path);\n let uploadFilePath = tempFile.path;\n // compression did not help with size reduction, use the original file for upload and delete the temp GZip file\n // for named pipes totalFileSize is zero, this assumes compression did help\n if (!isFIFO && totalFileSize < uploadFileSize) {\n core.debug(`The gzip file created for ${parameters.file} did not help with reducing the size of the file. The original file will be uploaded as-is`);\n uploadFileSize = totalFileSize;\n uploadFilePath = parameters.file;\n isGzip = false;\n }\n else {\n core.debug(`The gzip file created for ${parameters.file} is smaller than the original file. The file will be uploaded using gzip.`);\n }\n let abortFileUpload = false;\n // upload only a single chunk at a time\n while (offset < uploadFileSize) {\n const chunkSize = Math.min(uploadFileSize - offset, parameters.maxChunkSize);\n const startChunkIndex = offset;\n const endChunkIndex = offset + chunkSize - 1;\n offset += parameters.maxChunkSize;\n if (abortFileUpload) {\n // if we don't want to continue in the event of an error, any pending upload chunks will be marked as failed\n failedChunkSizes += chunkSize;\n continue;\n }\n const result = yield this.uploadChunk(httpClientIndex, parameters.resourceUrl, () => fs.createReadStream(uploadFilePath, {\n start: startChunkIndex,\n end: endChunkIndex,\n autoClose: false\n }), startChunkIndex, endChunkIndex, uploadFileSize, isGzip, totalFileSize);\n if (!result) {\n // Chunk failed to upload, report as failed and do not continue uploading any more chunks for the file. It is possible that part of a chunk was\n // successfully uploaded so the server may report a different size for what was uploaded\n isUploadSuccessful = false;\n failedChunkSizes += chunkSize;\n core.warning(`Aborting upload for ${parameters.file} due to failure`);\n abortFileUpload = true;\n }\n else {\n // if an individual file is greater than 8MB (1024*1024*8) in size, display extra information about the upload status\n if (uploadFileSize > 8388608) {\n this.statusReporter.updateLargeFileStatus(parameters.file, startChunkIndex, endChunkIndex, uploadFileSize);\n }\n }\n }\n // Delete the temporary file that was created as part of the upload. If the temp file does not get manually deleted by\n // calling cleanup, it gets removed when the node process exits. For more info see: https://www.npmjs.com/package/tmp-promise#about\n core.debug(`deleting temporary gzip file ${tempFile.path}`);\n yield tempFile.cleanup();\n return {\n isSuccess: isUploadSuccessful,\n successfulUploadSize: uploadFileSize - failedChunkSizes,\n totalSize: totalFileSize\n };\n }\n });\n }\n /**\n * Uploads a chunk of an individual file to the specified resourceUrl. If the upload fails and the status code\n * indicates a retryable status, we try to upload the chunk as well\n * @param {number} httpClientIndex The index of the httpClient being used to make all the necessary calls\n * @param {string} resourceUrl Url of the resource that the chunk will be uploaded to\n * @param {NodeJS.ReadableStream} openStream Stream of the file that will be uploaded\n * @param {number} start Starting byte index of file that the chunk belongs to\n * @param {number} end Ending byte index of file that the chunk belongs to\n * @param {number} uploadFileSize Total size of the file in bytes that is being uploaded\n * @param {boolean} isGzip Denotes if we are uploading a Gzip compressed stream\n * @param {number} totalFileSize Original total size of the file that is being uploaded\n * @returns if the chunk was successfully uploaded\n */\n uploadChunk(httpClientIndex, resourceUrl, openStream, start, end, uploadFileSize, isGzip, totalFileSize) {\n return __awaiter(this, void 0, void 0, function* () {\n // open a new stream and read it to compute the digest\n const digest = yield (0, utils_1.digestForStream)(openStream());\n // prepare all the necessary headers before making any http call\n const headers = (0, utils_1.getUploadHeaders)('application/octet-stream', true, isGzip, totalFileSize, end - start + 1, (0, utils_1.getContentRange)(start, end, uploadFileSize), digest);\n const uploadChunkRequest = () => __awaiter(this, void 0, void 0, function* () {\n const client = this.uploadHttpManager.getClient(httpClientIndex);\n return yield client.sendStream('PUT', resourceUrl, openStream(), headers);\n });\n let retryCount = 0;\n const retryLimit = (0, config_variables_1.getRetryLimit)();\n // Increments the current retry count and then checks if the retry limit has been reached\n // If there have been too many retries, fail so the download stops\n const incrementAndCheckRetryLimit = (response) => {\n retryCount++;\n if (retryCount > retryLimit) {\n if (response) {\n (0, utils_1.displayHttpDiagnostics)(response);\n }\n core.info(`Retry limit has been reached for chunk at offset ${start} to ${resourceUrl}`);\n return true;\n }\n return false;\n };\n const backOff = (retryAfterValue) => __awaiter(this, void 0, void 0, function* () {\n this.uploadHttpManager.disposeAndReplaceClient(httpClientIndex);\n if (retryAfterValue) {\n core.info(`Backoff due to too many requests, retry #${retryCount}. Waiting for ${retryAfterValue} milliseconds before continuing the upload`);\n yield (0, utils_1.sleep)(retryAfterValue);\n }\n else {\n const backoffTime = (0, utils_1.getExponentialRetryTimeInMilliseconds)(retryCount);\n core.info(`Exponential backoff for retry #${retryCount}. Waiting for ${backoffTime} milliseconds before continuing the upload at offset ${start}`);\n yield (0, utils_1.sleep)(backoffTime);\n }\n core.info(`Finished backoff for retry #${retryCount}, continuing with upload`);\n return;\n });\n // allow for failed chunks to be retried multiple times\n while (retryCount <= retryLimit) {\n let response;\n try {\n response = yield uploadChunkRequest();\n }\n catch (error) {\n // if an error is caught, it is usually indicative of a timeout so retry the upload\n core.info(`An error has been caught http-client index ${httpClientIndex}, retrying the upload`);\n // eslint-disable-next-line no-console\n console.log(error);\n if (incrementAndCheckRetryLimit()) {\n return false;\n }\n yield backOff();\n continue;\n }\n // Always read the body of the response. There is potential for a resource leak if the body is not read which will\n // result in the connection remaining open along with unintended consequences when trying to dispose of the client\n yield response.readBody();\n if ((0, utils_1.isSuccessStatusCode)(response.message.statusCode)) {\n return true;\n }\n else if ((0, utils_1.isRetryableStatusCode)(response.message.statusCode)) {\n core.info(`A ${response.message.statusCode} status code has been received, will attempt to retry the upload`);\n if (incrementAndCheckRetryLimit(response)) {\n return false;\n }\n (0, utils_1.isThrottledStatusCode)(response.message.statusCode)\n ? yield backOff((0, utils_1.tryGetRetryAfterValueTimeInMilliseconds)(response.message.headers))\n : yield backOff();\n }\n else {\n core.error(`Unexpected response. Unable to upload chunk to ${resourceUrl}`);\n (0, utils_1.displayHttpDiagnostics)(response);\n return false;\n }\n }\n return false;\n });\n }\n /**\n * Updates the size of the artifact from -1 which was initially set when the container was first created for the artifact.\n * Updating the size indicates that we are done uploading all the contents of the artifact\n */\n patchArtifactSize(size, artifactName) {\n return __awaiter(this, void 0, void 0, function* () {\n const resourceUrl = new url_1.URL((0, utils_1.getArtifactUrl)());\n resourceUrl.searchParams.append('artifactName', artifactName);\n const parameters = { Size: size };\n const data = JSON.stringify(parameters, null, 2);\n core.debug(`URL is ${resourceUrl.toString()}`);\n // use the first client from the httpManager, `keep-alive` is not used so the connection will close immediately\n const client = this.uploadHttpManager.getClient(0);\n const headers = (0, utils_1.getUploadHeaders)('application/json', false);\n // Extra information to display when a particular HTTP code is returned\n const customErrorMessages = new Map([\n [\n http_client_1.HttpCodes.NotFound,\n `An Artifact with the name ${artifactName} was not found`\n ]\n ]);\n // TODO retry for all possible response codes, the artifact upload is pretty much complete so it at all costs we should try to finish this\n const response = yield (0, requestUtils_1.retryHttpClientRequest)('Finalize artifact upload', () => __awaiter(this, void 0, void 0, function* () { return client.patch(resourceUrl.toString(), data, headers); }), customErrorMessages);\n yield response.readBody();\n core.debug(`Artifact ${artifactName} has been successfully uploaded, total size in bytes: ${size}`);\n });\n }\n}\nexports.UploadHttpClient = UploadHttpClient;\n//# sourceMappingURL=upload-http-client.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getUploadSpecification = void 0;\nconst fs = __importStar(require(\"fs\"));\nconst core_1 = require(\"@actions/core\");\nconst path_1 = require(\"path\");\nconst path_and_artifact_name_validation_1 = require(\"./path-and-artifact-name-validation\");\n/**\n * Creates a specification that describes how each file that is part of the artifact will be uploaded\n * @param artifactName the name of the artifact being uploaded. Used during upload to denote where the artifact is stored on the server\n * @param rootDirectory an absolute file path that denotes the path that should be removed from the beginning of each artifact file\n * @param artifactFiles a list of absolute file paths that denote what should be uploaded as part of the artifact\n */\nfunction getUploadSpecification(artifactName, rootDirectory, artifactFiles) {\n // artifact name was checked earlier on, no need to check again\n const specifications = [];\n if (!fs.existsSync(rootDirectory)) {\n throw new Error(`Provided rootDirectory ${rootDirectory} does not exist`);\n }\n if (!fs.statSync(rootDirectory).isDirectory()) {\n throw new Error(`Provided rootDirectory ${rootDirectory} is not a valid directory`);\n }\n // Normalize and resolve, this allows for either absolute or relative paths to be used\n rootDirectory = (0, path_1.normalize)(rootDirectory);\n rootDirectory = (0, path_1.resolve)(rootDirectory);\n /*\n Example to demonstrate behavior\n \n Input:\n artifactName: my-artifact\n rootDirectory: '/home/user/files/plz-upload'\n artifactFiles: [\n '/home/user/files/plz-upload/file1.txt',\n '/home/user/files/plz-upload/file2.txt',\n '/home/user/files/plz-upload/dir/file3.txt'\n ]\n \n Output:\n specifications: [\n ['/home/user/files/plz-upload/file1.txt', 'my-artifact/file1.txt'],\n ['/home/user/files/plz-upload/file1.txt', 'my-artifact/file2.txt'],\n ['/home/user/files/plz-upload/file1.txt', 'my-artifact/dir/file3.txt']\n ]\n */\n for (let file of artifactFiles) {\n if (!fs.existsSync(file)) {\n throw new Error(`File ${file} does not exist`);\n }\n if (!fs.statSync(file).isDirectory()) {\n // Normalize and resolve, this allows for either absolute or relative paths to be used\n file = (0, path_1.normalize)(file);\n file = (0, path_1.resolve)(file);\n if (!file.startsWith(rootDirectory)) {\n throw new Error(`The rootDirectory: ${rootDirectory} is not a parent directory of the file: ${file}`);\n }\n // Check for forbidden characters in file paths that will be rejected during upload\n const uploadPath = file.replace(rootDirectory, '');\n (0, path_and_artifact_name_validation_1.checkArtifactFilePath)(uploadPath);\n /*\n uploadFilePath denotes where the file will be uploaded in the file container on the server. During a run, if multiple artifacts are uploaded, they will all\n be saved in the same container. The artifact name is used as the root directory in the container to separate and distinguish uploaded artifacts\n \n path.join handles all the following cases and would return 'artifact-name/file-to-upload.txt\n join('artifact-name/', 'file-to-upload.txt')\n join('artifact-name/', '/file-to-upload.txt')\n join('artifact-name', 'file-to-upload.txt')\n join('artifact-name', '/file-to-upload.txt')\n */\n specifications.push({\n absoluteFilePath: file,\n uploadFilePath: (0, path_1.join)(artifactName, uploadPath)\n });\n }\n else {\n // Directories are rejected by the server during upload\n (0, core_1.debug)(`Removing ${file} from rawSearchResults because it is a directory`);\n }\n }\n return specifications;\n}\nexports.getUploadSpecification = getUploadSpecification;\n//# sourceMappingURL=upload-specification.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.digestForStream = exports.sleep = exports.getProperRetention = exports.rmFile = exports.getFileSize = exports.createEmptyFilesForArtifact = exports.createDirectoriesForArtifact = exports.displayHttpDiagnostics = exports.getArtifactUrl = exports.createHttpClient = exports.getUploadHeaders = exports.getDownloadHeaders = exports.getContentRange = exports.tryGetRetryAfterValueTimeInMilliseconds = exports.isThrottledStatusCode = exports.isRetryableStatusCode = exports.isForbiddenStatusCode = exports.isSuccessStatusCode = exports.getApiVersion = exports.parseEnvNumber = exports.getExponentialRetryTimeInMilliseconds = void 0;\nconst crypto_1 = __importDefault(require(\"crypto\"));\nconst fs_1 = require(\"fs\");\nconst core_1 = require(\"@actions/core\");\nconst http_client_1 = require(\"@actions/http-client\");\nconst auth_1 = require(\"@actions/http-client/lib/auth\");\nconst config_variables_1 = require(\"./config-variables\");\nconst crc64_1 = __importDefault(require(\"./crc64\"));\n/**\n * Returns a retry time in milliseconds that exponentially gets larger\n * depending on the amount of retries that have been attempted\n */\nfunction getExponentialRetryTimeInMilliseconds(retryCount) {\n if (retryCount < 0) {\n throw new Error('RetryCount should not be negative');\n }\n else if (retryCount === 0) {\n return (0, config_variables_1.getInitialRetryIntervalInMilliseconds)();\n }\n const minTime = (0, config_variables_1.getInitialRetryIntervalInMilliseconds)() * (0, config_variables_1.getRetryMultiplier)() * retryCount;\n const maxTime = minTime * (0, config_variables_1.getRetryMultiplier)();\n // returns a random number between the minTime (inclusive) and the maxTime (exclusive)\n return Math.trunc(Math.random() * (maxTime - minTime) + minTime);\n}\nexports.getExponentialRetryTimeInMilliseconds = getExponentialRetryTimeInMilliseconds;\n/**\n * Parses a env variable that is a number\n */\nfunction parseEnvNumber(key) {\n const value = Number(process.env[key]);\n if (Number.isNaN(value) || value < 0) {\n return undefined;\n }\n return value;\n}\nexports.parseEnvNumber = parseEnvNumber;\n/**\n * Various utility functions to help with the necessary API calls\n */\nfunction getApiVersion() {\n return '6.0-preview';\n}\nexports.getApiVersion = getApiVersion;\nfunction isSuccessStatusCode(statusCode) {\n if (!statusCode) {\n return false;\n }\n return statusCode >= 200 && statusCode < 300;\n}\nexports.isSuccessStatusCode = isSuccessStatusCode;\nfunction isForbiddenStatusCode(statusCode) {\n if (!statusCode) {\n return false;\n }\n return statusCode === http_client_1.HttpCodes.Forbidden;\n}\nexports.isForbiddenStatusCode = isForbiddenStatusCode;\nfunction isRetryableStatusCode(statusCode) {\n if (!statusCode) {\n return false;\n }\n const retryableStatusCodes = [\n http_client_1.HttpCodes.BadGateway,\n http_client_1.HttpCodes.GatewayTimeout,\n http_client_1.HttpCodes.InternalServerError,\n http_client_1.HttpCodes.ServiceUnavailable,\n http_client_1.HttpCodes.TooManyRequests,\n 413 // Payload Too Large\n ];\n return retryableStatusCodes.includes(statusCode);\n}\nexports.isRetryableStatusCode = isRetryableStatusCode;\nfunction isThrottledStatusCode(statusCode) {\n if (!statusCode) {\n return false;\n }\n return statusCode === http_client_1.HttpCodes.TooManyRequests;\n}\nexports.isThrottledStatusCode = isThrottledStatusCode;\n/**\n * Attempts to get the retry-after value from a set of http headers. The retry time\n * is originally denoted in seconds, so if present, it is converted to milliseconds\n * @param headers all the headers received when making an http call\n */\nfunction tryGetRetryAfterValueTimeInMilliseconds(headers) {\n if (headers['retry-after']) {\n const retryTime = Number(headers['retry-after']);\n if (!isNaN(retryTime)) {\n (0, core_1.info)(`Retry-After header is present with a value of ${retryTime}`);\n return retryTime * 1000;\n }\n (0, core_1.info)(`Returned retry-after header value: ${retryTime} is non-numeric and cannot be used`);\n return undefined;\n }\n (0, core_1.info)(`No retry-after header was found. Dumping all headers for diagnostic purposes`);\n // eslint-disable-next-line no-console\n console.log(headers);\n return undefined;\n}\nexports.tryGetRetryAfterValueTimeInMilliseconds = tryGetRetryAfterValueTimeInMilliseconds;\nfunction getContentRange(start, end, total) {\n // Format: `bytes start-end/fileSize\n // start and end are inclusive\n // For a 200 byte chunk starting at byte 0:\n // Content-Range: bytes 0-199/200\n return `bytes ${start}-${end}/${total}`;\n}\nexports.getContentRange = getContentRange;\n/**\n * Sets all the necessary headers when downloading an artifact\n * @param {string} contentType the type of content being uploaded\n * @param {boolean} isKeepAlive is the same connection being used to make multiple calls\n * @param {boolean} acceptGzip can we accept a gzip encoded response\n * @param {string} acceptType the type of content that we can accept\n * @returns appropriate headers to make a specific http call during artifact download\n */\nfunction getDownloadHeaders(contentType, isKeepAlive, acceptGzip) {\n const requestOptions = {};\n if (contentType) {\n requestOptions['Content-Type'] = contentType;\n }\n if (isKeepAlive) {\n requestOptions['Connection'] = 'Keep-Alive';\n // keep alive for at least 10 seconds before closing the connection\n requestOptions['Keep-Alive'] = '10';\n }\n if (acceptGzip) {\n // if we are expecting a response with gzip encoding, it should be using an octet-stream in the accept header\n requestOptions['Accept-Encoding'] = 'gzip';\n requestOptions['Accept'] = `application/octet-stream;api-version=${getApiVersion()}`;\n }\n else {\n // default to application/json if we are not working with gzip content\n requestOptions['Accept'] = `application/json;api-version=${getApiVersion()}`;\n }\n return requestOptions;\n}\nexports.getDownloadHeaders = getDownloadHeaders;\n/**\n * Sets all the necessary headers when uploading an artifact\n * @param {string} contentType the type of content being uploaded\n * @param {boolean} isKeepAlive is the same connection being used to make multiple calls\n * @param {boolean} isGzip is the connection being used to upload GZip compressed content\n * @param {number} uncompressedLength the original size of the content if something is being uploaded that has been compressed\n * @param {number} contentLength the length of the content that is being uploaded\n * @param {string} contentRange the range of the content that is being uploaded\n * @returns appropriate headers to make a specific http call during artifact upload\n */\nfunction getUploadHeaders(contentType, isKeepAlive, isGzip, uncompressedLength, contentLength, contentRange, digest) {\n const requestOptions = {};\n requestOptions['Accept'] = `application/json;api-version=${getApiVersion()}`;\n if (contentType) {\n requestOptions['Content-Type'] = contentType;\n }\n if (isKeepAlive) {\n requestOptions['Connection'] = 'Keep-Alive';\n // keep alive for at least 10 seconds before closing the connection\n requestOptions['Keep-Alive'] = '10';\n }\n if (isGzip) {\n requestOptions['Content-Encoding'] = 'gzip';\n requestOptions['x-tfs-filelength'] = uncompressedLength;\n }\n if (contentLength) {\n requestOptions['Content-Length'] = contentLength;\n }\n if (contentRange) {\n requestOptions['Content-Range'] = contentRange;\n }\n if (digest) {\n requestOptions['x-actions-results-crc64'] = digest.crc64;\n requestOptions['x-actions-results-md5'] = digest.md5;\n }\n return requestOptions;\n}\nexports.getUploadHeaders = getUploadHeaders;\nfunction createHttpClient(userAgent) {\n return new http_client_1.HttpClient(userAgent, [\n new auth_1.BearerCredentialHandler((0, config_variables_1.getRuntimeToken)())\n ]);\n}\nexports.createHttpClient = createHttpClient;\nfunction getArtifactUrl() {\n const artifactUrl = `${(0, config_variables_1.getRuntimeUrl)()}_apis/pipelines/workflows/${(0, config_variables_1.getWorkFlowRunId)()}/artifacts?api-version=${getApiVersion()}`;\n (0, core_1.debug)(`Artifact Url: ${artifactUrl}`);\n return artifactUrl;\n}\nexports.getArtifactUrl = getArtifactUrl;\n/**\n * Uh oh! Something might have gone wrong during either upload or download. The IHtttpClientResponse object contains information\n * about the http call that was made by the actions http client. This information might be useful to display for diagnostic purposes, but\n * this entire object is really big and most of the information is not really useful. This function takes the response object and displays only\n * the information that we want.\n *\n * Certain information such as the TLSSocket and the Readable state are not really useful for diagnostic purposes so they can be avoided.\n * Other information such as the headers, the response code and message might be useful, so this is displayed.\n */\nfunction displayHttpDiagnostics(response) {\n (0, core_1.info)(`##### Begin Diagnostic HTTP information #####\nStatus Code: ${response.message.statusCode}\nStatus Message: ${response.message.statusMessage}\nHeader Information: ${JSON.stringify(response.message.headers, undefined, 2)}\n###### End Diagnostic HTTP information ######`);\n}\nexports.displayHttpDiagnostics = displayHttpDiagnostics;\nfunction createDirectoriesForArtifact(directories) {\n return __awaiter(this, void 0, void 0, function* () {\n for (const directory of directories) {\n yield fs_1.promises.mkdir(directory, {\n recursive: true\n });\n }\n });\n}\nexports.createDirectoriesForArtifact = createDirectoriesForArtifact;\nfunction createEmptyFilesForArtifact(emptyFilesToCreate) {\n return __awaiter(this, void 0, void 0, function* () {\n for (const filePath of emptyFilesToCreate) {\n yield (yield fs_1.promises.open(filePath, 'w')).close();\n }\n });\n}\nexports.createEmptyFilesForArtifact = createEmptyFilesForArtifact;\nfunction getFileSize(filePath) {\n return __awaiter(this, void 0, void 0, function* () {\n const stats = yield fs_1.promises.stat(filePath);\n (0, core_1.debug)(`${filePath} size:(${stats.size}) blksize:(${stats.blksize}) blocks:(${stats.blocks})`);\n return stats.size;\n });\n}\nexports.getFileSize = getFileSize;\nfunction rmFile(filePath) {\n return __awaiter(this, void 0, void 0, function* () {\n yield fs_1.promises.unlink(filePath);\n });\n}\nexports.rmFile = rmFile;\nfunction getProperRetention(retentionInput, retentionSetting) {\n if (retentionInput < 0) {\n throw new Error('Invalid retention, minimum value is 1.');\n }\n let retention = retentionInput;\n if (retentionSetting) {\n const maxRetention = parseInt(retentionSetting);\n if (!isNaN(maxRetention) && maxRetention < retention) {\n (0, core_1.warning)(`Retention days is greater than the max value allowed by the repository setting, reduce retention to ${maxRetention} days`);\n retention = maxRetention;\n }\n }\n return retention;\n}\nexports.getProperRetention = getProperRetention;\nfunction sleep(milliseconds) {\n return __awaiter(this, void 0, void 0, function* () {\n return new Promise(resolve => setTimeout(resolve, milliseconds));\n });\n}\nexports.sleep = sleep;\nfunction digestForStream(stream) {\n return __awaiter(this, void 0, void 0, function* () {\n return new Promise((resolve, reject) => {\n const crc64 = new crc64_1.default();\n const md5 = crypto_1.default.createHash('md5');\n stream\n .on('data', data => {\n crc64.update(data);\n md5.update(data);\n })\n .on('end', () => resolve({\n crc64: crc64.digest('base64'),\n md5: md5.digest('base64')\n }))\n .on('error', reject);\n });\n });\n}\nexports.digestForStream = digestForStream;\n//# sourceMappingURL=utils.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.issue = exports.issueCommand = void 0;\nconst os = __importStar(require(\"os\"));\nconst utils_1 = require(\"./utils\");\n/**\n * Commands\n *\n * Command Format:\n * ::name key=value,key=value::message\n *\n * Examples:\n * ::warning::This is the message\n * ::set-env name=MY_VAR::some value\n */\nfunction issueCommand(command, properties, message) {\n const cmd = new Command(command, properties, message);\n process.stdout.write(cmd.toString() + os.EOL);\n}\nexports.issueCommand = issueCommand;\nfunction issue(name, message = '') {\n issueCommand(name, {}, message);\n}\nexports.issue = issue;\nconst CMD_STRING = '::';\nclass Command {\n constructor(command, properties, message) {\n if (!command) {\n command = 'missing.command';\n }\n this.command = command;\n this.properties = properties;\n this.message = message;\n }\n toString() {\n let cmdStr = CMD_STRING + this.command;\n if (this.properties && Object.keys(this.properties).length > 0) {\n cmdStr += ' ';\n let first = true;\n for (const key in this.properties) {\n if (this.properties.hasOwnProperty(key)) {\n const val = this.properties[key];\n if (val) {\n if (first) {\n first = false;\n }\n else {\n cmdStr += ',';\n }\n cmdStr += `${key}=${escapeProperty(val)}`;\n }\n }\n }\n }\n cmdStr += `${CMD_STRING}${escapeData(this.message)}`;\n return cmdStr;\n }\n}\nfunction escapeData(s) {\n return utils_1.toCommandValue(s)\n .replace(/%/g, '%25')\n .replace(/\\r/g, '%0D')\n .replace(/\\n/g, '%0A');\n}\nfunction escapeProperty(s) {\n return utils_1.toCommandValue(s)\n .replace(/%/g, '%25')\n .replace(/\\r/g, '%0D')\n .replace(/\\n/g, '%0A')\n .replace(/:/g, '%3A')\n .replace(/,/g, '%2C');\n}\n//# sourceMappingURL=command.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getIDToken = exports.getState = exports.saveState = exports.group = exports.endGroup = exports.startGroup = exports.info = exports.notice = exports.warning = exports.error = exports.debug = exports.isDebug = exports.setFailed = exports.setCommandEcho = exports.setOutput = exports.getBooleanInput = exports.getMultilineInput = exports.getInput = exports.addPath = exports.setSecret = exports.exportVariable = exports.ExitCode = void 0;\nconst command_1 = require(\"./command\");\nconst file_command_1 = require(\"./file-command\");\nconst utils_1 = require(\"./utils\");\nconst os = __importStar(require(\"os\"));\nconst path = __importStar(require(\"path\"));\nconst oidc_utils_1 = require(\"./oidc-utils\");\n/**\n * The code to exit an action\n */\nvar ExitCode;\n(function (ExitCode) {\n /**\n * A code indicating that the action was successful\n */\n ExitCode[ExitCode[\"Success\"] = 0] = \"Success\";\n /**\n * A code indicating that the action was a failure\n */\n ExitCode[ExitCode[\"Failure\"] = 1] = \"Failure\";\n})(ExitCode = exports.ExitCode || (exports.ExitCode = {}));\n//-----------------------------------------------------------------------\n// Variables\n//-----------------------------------------------------------------------\n/**\n * Sets env variable for this action and future actions in the job\n * @param name the name of the variable to set\n * @param val the value of the variable. Non-string values will be converted to a string via JSON.stringify\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction exportVariable(name, val) {\n const convertedVal = utils_1.toCommandValue(val);\n process.env[name] = convertedVal;\n const filePath = process.env['GITHUB_ENV'] || '';\n if (filePath) {\n return file_command_1.issueFileCommand('ENV', file_command_1.prepareKeyValueMessage(name, val));\n }\n command_1.issueCommand('set-env', { name }, convertedVal);\n}\nexports.exportVariable = exportVariable;\n/**\n * Registers a secret which will get masked from logs\n * @param secret value of the secret\n */\nfunction setSecret(secret) {\n command_1.issueCommand('add-mask', {}, secret);\n}\nexports.setSecret = setSecret;\n/**\n * Prepends inputPath to the PATH (for this action and future actions)\n * @param inputPath\n */\nfunction addPath(inputPath) {\n const filePath = process.env['GITHUB_PATH'] || '';\n if (filePath) {\n file_command_1.issueFileCommand('PATH', inputPath);\n }\n else {\n command_1.issueCommand('add-path', {}, inputPath);\n }\n process.env['PATH'] = `${inputPath}${path.delimiter}${process.env['PATH']}`;\n}\nexports.addPath = addPath;\n/**\n * Gets the value of an input.\n * Unless trimWhitespace is set to false in InputOptions, the value is also trimmed.\n * Returns an empty string if the value is not defined.\n *\n * @param name name of the input to get\n * @param options optional. See InputOptions.\n * @returns string\n */\nfunction getInput(name, options) {\n const val = process.env[`INPUT_${name.replace(/ /g, '_').toUpperCase()}`] || '';\n if (options && options.required && !val) {\n throw new Error(`Input required and not supplied: ${name}`);\n }\n if (options && options.trimWhitespace === false) {\n return val;\n }\n return val.trim();\n}\nexports.getInput = getInput;\n/**\n * Gets the values of an multiline input. Each value is also trimmed.\n *\n * @param name name of the input to get\n * @param options optional. See InputOptions.\n * @returns string[]\n *\n */\nfunction getMultilineInput(name, options) {\n const inputs = getInput(name, options)\n .split('\\n')\n .filter(x => x !== '');\n if (options && options.trimWhitespace === false) {\n return inputs;\n }\n return inputs.map(input => input.trim());\n}\nexports.getMultilineInput = getMultilineInput;\n/**\n * Gets the input value of the boolean type in the YAML 1.2 \"core schema\" specification.\n * Support boolean input list: `true | True | TRUE | false | False | FALSE` .\n * The return value is also in boolean type.\n * ref: https://yaml.org/spec/1.2/spec.html#id2804923\n *\n * @param name name of the input to get\n * @param options optional. See InputOptions.\n * @returns boolean\n */\nfunction getBooleanInput(name, options) {\n const trueValue = ['true', 'True', 'TRUE'];\n const falseValue = ['false', 'False', 'FALSE'];\n const val = getInput(name, options);\n if (trueValue.includes(val))\n return true;\n if (falseValue.includes(val))\n return false;\n throw new TypeError(`Input does not meet YAML 1.2 \"Core Schema\" specification: ${name}\\n` +\n `Support boolean input list: \\`true | True | TRUE | false | False | FALSE\\``);\n}\nexports.getBooleanInput = getBooleanInput;\n/**\n * Sets the value of an output.\n *\n * @param name name of the output to set\n * @param value value to store. Non-string values will be converted to a string via JSON.stringify\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction setOutput(name, value) {\n const filePath = process.env['GITHUB_OUTPUT'] || '';\n if (filePath) {\n return file_command_1.issueFileCommand('OUTPUT', file_command_1.prepareKeyValueMessage(name, value));\n }\n process.stdout.write(os.EOL);\n command_1.issueCommand('set-output', { name }, utils_1.toCommandValue(value));\n}\nexports.setOutput = setOutput;\n/**\n * Enables or disables the echoing of commands into stdout for the rest of the step.\n * Echoing is disabled by default if ACTIONS_STEP_DEBUG is not set.\n *\n */\nfunction setCommandEcho(enabled) {\n command_1.issue('echo', enabled ? 'on' : 'off');\n}\nexports.setCommandEcho = setCommandEcho;\n//-----------------------------------------------------------------------\n// Results\n//-----------------------------------------------------------------------\n/**\n * Sets the action status to failed.\n * When the action exits it will be with an exit code of 1\n * @param message add error issue message\n */\nfunction setFailed(message) {\n process.exitCode = ExitCode.Failure;\n error(message);\n}\nexports.setFailed = setFailed;\n//-----------------------------------------------------------------------\n// Logging Commands\n//-----------------------------------------------------------------------\n/**\n * Gets whether Actions Step Debug is on or not\n */\nfunction isDebug() {\n return process.env['RUNNER_DEBUG'] === '1';\n}\nexports.isDebug = isDebug;\n/**\n * Writes debug message to user log\n * @param message debug message\n */\nfunction debug(message) {\n command_1.issueCommand('debug', {}, message);\n}\nexports.debug = debug;\n/**\n * Adds an error issue\n * @param message error issue message. Errors will be converted to string via toString()\n * @param properties optional properties to add to the annotation.\n */\nfunction error(message, properties = {}) {\n command_1.issueCommand('error', utils_1.toCommandProperties(properties), message instanceof Error ? message.toString() : message);\n}\nexports.error = error;\n/**\n * Adds a warning issue\n * @param message warning issue message. Errors will be converted to string via toString()\n * @param properties optional properties to add to the annotation.\n */\nfunction warning(message, properties = {}) {\n command_1.issueCommand('warning', utils_1.toCommandProperties(properties), message instanceof Error ? message.toString() : message);\n}\nexports.warning = warning;\n/**\n * Adds a notice issue\n * @param message notice issue message. Errors will be converted to string via toString()\n * @param properties optional properties to add to the annotation.\n */\nfunction notice(message, properties = {}) {\n command_1.issueCommand('notice', utils_1.toCommandProperties(properties), message instanceof Error ? message.toString() : message);\n}\nexports.notice = notice;\n/**\n * Writes info to log with console.log.\n * @param message info message\n */\nfunction info(message) {\n process.stdout.write(message + os.EOL);\n}\nexports.info = info;\n/**\n * Begin an output group.\n *\n * Output until the next `groupEnd` will be foldable in this group\n *\n * @param name The name of the output group\n */\nfunction startGroup(name) {\n command_1.issue('group', name);\n}\nexports.startGroup = startGroup;\n/**\n * End an output group.\n */\nfunction endGroup() {\n command_1.issue('endgroup');\n}\nexports.endGroup = endGroup;\n/**\n * Wrap an asynchronous function call in a group.\n *\n * Returns the same type as the function itself.\n *\n * @param name The name of the group\n * @param fn The function to wrap in the group\n */\nfunction group(name, fn) {\n return __awaiter(this, void 0, void 0, function* () {\n startGroup(name);\n let result;\n try {\n result = yield fn();\n }\n finally {\n endGroup();\n }\n return result;\n });\n}\nexports.group = group;\n//-----------------------------------------------------------------------\n// Wrapper action state\n//-----------------------------------------------------------------------\n/**\n * Saves state for current action, the state can only be retrieved by this action's post job execution.\n *\n * @param name name of the state to store\n * @param value value to store. Non-string values will be converted to a string via JSON.stringify\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction saveState(name, value) {\n const filePath = process.env['GITHUB_STATE'] || '';\n if (filePath) {\n return file_command_1.issueFileCommand('STATE', file_command_1.prepareKeyValueMessage(name, value));\n }\n command_1.issueCommand('save-state', { name }, utils_1.toCommandValue(value));\n}\nexports.saveState = saveState;\n/**\n * Gets the value of an state set by this action's main execution.\n *\n * @param name name of the state to get\n * @returns string\n */\nfunction getState(name) {\n return process.env[`STATE_${name}`] || '';\n}\nexports.getState = getState;\nfunction getIDToken(aud) {\n return __awaiter(this, void 0, void 0, function* () {\n return yield oidc_utils_1.OidcClient.getIDToken(aud);\n });\n}\nexports.getIDToken = getIDToken;\n/**\n * Summary exports\n */\nvar summary_1 = require(\"./summary\");\nObject.defineProperty(exports, \"summary\", { enumerable: true, get: function () { return summary_1.summary; } });\n/**\n * @deprecated use core.summary\n */\nvar summary_2 = require(\"./summary\");\nObject.defineProperty(exports, \"markdownSummary\", { enumerable: true, get: function () { return summary_2.markdownSummary; } });\n/**\n * Path exports\n */\nvar path_utils_1 = require(\"./path-utils\");\nObject.defineProperty(exports, \"toPosixPath\", { enumerable: true, get: function () { return path_utils_1.toPosixPath; } });\nObject.defineProperty(exports, \"toWin32Path\", { enumerable: true, get: function () { return path_utils_1.toWin32Path; } });\nObject.defineProperty(exports, \"toPlatformPath\", { enumerable: true, get: function () { return path_utils_1.toPlatformPath; } });\n//# sourceMappingURL=core.js.map","\"use strict\";\n// For internal use, subject to change.\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.prepareKeyValueMessage = exports.issueFileCommand = void 0;\n// We use any as a valid input type\n/* eslint-disable @typescript-eslint/no-explicit-any */\nconst fs = __importStar(require(\"fs\"));\nconst os = __importStar(require(\"os\"));\nconst uuid_1 = require(\"uuid\");\nconst utils_1 = require(\"./utils\");\nfunction issueFileCommand(command, message) {\n const filePath = process.env[`GITHUB_${command}`];\n if (!filePath) {\n throw new Error(`Unable to find environment variable for file command ${command}`);\n }\n if (!fs.existsSync(filePath)) {\n throw new Error(`Missing file at path: ${filePath}`);\n }\n fs.appendFileSync(filePath, `${utils_1.toCommandValue(message)}${os.EOL}`, {\n encoding: 'utf8'\n });\n}\nexports.issueFileCommand = issueFileCommand;\nfunction prepareKeyValueMessage(key, value) {\n const delimiter = `ghadelimiter_${uuid_1.v4()}`;\n const convertedValue = utils_1.toCommandValue(value);\n // These should realistically never happen, but just in case someone finds a\n // way to exploit uuid generation let's not allow keys or values that contain\n // the delimiter.\n if (key.includes(delimiter)) {\n throw new Error(`Unexpected input: name should not contain the delimiter \"${delimiter}\"`);\n }\n if (convertedValue.includes(delimiter)) {\n throw new Error(`Unexpected input: value should not contain the delimiter \"${delimiter}\"`);\n }\n return `${key}<<${delimiter}${os.EOL}${convertedValue}${os.EOL}${delimiter}`;\n}\nexports.prepareKeyValueMessage = prepareKeyValueMessage;\n//# sourceMappingURL=file-command.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.OidcClient = void 0;\nconst http_client_1 = require(\"@actions/http-client\");\nconst auth_1 = require(\"@actions/http-client/lib/auth\");\nconst core_1 = require(\"./core\");\nclass OidcClient {\n static createHttpClient(allowRetry = true, maxRetry = 10) {\n const requestOptions = {\n allowRetries: allowRetry,\n maxRetries: maxRetry\n };\n return new http_client_1.HttpClient('actions/oidc-client', [new auth_1.BearerCredentialHandler(OidcClient.getRequestToken())], requestOptions);\n }\n static getRequestToken() {\n const token = process.env['ACTIONS_ID_TOKEN_REQUEST_TOKEN'];\n if (!token) {\n throw new Error('Unable to get ACTIONS_ID_TOKEN_REQUEST_TOKEN env variable');\n }\n return token;\n }\n static getIDTokenUrl() {\n const runtimeUrl = process.env['ACTIONS_ID_TOKEN_REQUEST_URL'];\n if (!runtimeUrl) {\n throw new Error('Unable to get ACTIONS_ID_TOKEN_REQUEST_URL env variable');\n }\n return runtimeUrl;\n }\n static getCall(id_token_url) {\n var _a;\n return __awaiter(this, void 0, void 0, function* () {\n const httpclient = OidcClient.createHttpClient();\n const res = yield httpclient\n .getJson(id_token_url)\n .catch(error => {\n throw new Error(`Failed to get ID Token. \\n \n Error Code : ${error.statusCode}\\n \n Error Message: ${error.message}`);\n });\n const id_token = (_a = res.result) === null || _a === void 0 ? void 0 : _a.value;\n if (!id_token) {\n throw new Error('Response json body do not have ID Token field');\n }\n return id_token;\n });\n }\n static getIDToken(audience) {\n return __awaiter(this, void 0, void 0, function* () {\n try {\n // New ID Token is requested from action service\n let id_token_url = OidcClient.getIDTokenUrl();\n if (audience) {\n const encodedAudience = encodeURIComponent(audience);\n id_token_url = `${id_token_url}&audience=${encodedAudience}`;\n }\n core_1.debug(`ID token url is ${id_token_url}`);\n const id_token = yield OidcClient.getCall(id_token_url);\n core_1.setSecret(id_token);\n return id_token;\n }\n catch (error) {\n throw new Error(`Error message: ${error.message}`);\n }\n });\n }\n}\nexports.OidcClient = OidcClient;\n//# sourceMappingURL=oidc-utils.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.toPlatformPath = exports.toWin32Path = exports.toPosixPath = void 0;\nconst path = __importStar(require(\"path\"));\n/**\n * toPosixPath converts the given path to the posix form. On Windows, \\\\ will be\n * replaced with /.\n *\n * @param pth. Path to transform.\n * @return string Posix path.\n */\nfunction toPosixPath(pth) {\n return pth.replace(/[\\\\]/g, '/');\n}\nexports.toPosixPath = toPosixPath;\n/**\n * toWin32Path converts the given path to the win32 form. On Linux, / will be\n * replaced with \\\\.\n *\n * @param pth. Path to transform.\n * @return string Win32 path.\n */\nfunction toWin32Path(pth) {\n return pth.replace(/[/]/g, '\\\\');\n}\nexports.toWin32Path = toWin32Path;\n/**\n * toPlatformPath converts the given path to a platform-specific path. It does\n * this by replacing instances of / and \\ with the platform-specific path\n * separator.\n *\n * @param pth The path to platformize.\n * @return string The platform-specific path.\n */\nfunction toPlatformPath(pth) {\n return pth.replace(/[/\\\\]/g, path.sep);\n}\nexports.toPlatformPath = toPlatformPath;\n//# sourceMappingURL=path-utils.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.summary = exports.markdownSummary = exports.SUMMARY_DOCS_URL = exports.SUMMARY_ENV_VAR = void 0;\nconst os_1 = require(\"os\");\nconst fs_1 = require(\"fs\");\nconst { access, appendFile, writeFile } = fs_1.promises;\nexports.SUMMARY_ENV_VAR = 'GITHUB_STEP_SUMMARY';\nexports.SUMMARY_DOCS_URL = 'https://docs.github.com/actions/using-workflows/workflow-commands-for-github-actions#adding-a-job-summary';\nclass Summary {\n constructor() {\n this._buffer = '';\n }\n /**\n * Finds the summary file path from the environment, rejects if env var is not found or file does not exist\n * Also checks r/w permissions.\n *\n * @returns step summary file path\n */\n filePath() {\n return __awaiter(this, void 0, void 0, function* () {\n if (this._filePath) {\n return this._filePath;\n }\n const pathFromEnv = process.env[exports.SUMMARY_ENV_VAR];\n if (!pathFromEnv) {\n throw new Error(`Unable to find environment variable for $${exports.SUMMARY_ENV_VAR}. Check if your runtime environment supports job summaries.`);\n }\n try {\n yield access(pathFromEnv, fs_1.constants.R_OK | fs_1.constants.W_OK);\n }\n catch (_a) {\n throw new Error(`Unable to access summary file: '${pathFromEnv}'. Check if the file has correct read/write permissions.`);\n }\n this._filePath = pathFromEnv;\n return this._filePath;\n });\n }\n /**\n * Wraps content in an HTML tag, adding any HTML attributes\n *\n * @param {string} tag HTML tag to wrap\n * @param {string | null} content content within the tag\n * @param {[attribute: string]: string} attrs key-value list of HTML attributes to add\n *\n * @returns {string} content wrapped in HTML element\n */\n wrap(tag, content, attrs = {}) {\n const htmlAttrs = Object.entries(attrs)\n .map(([key, value]) => ` ${key}=\"${value}\"`)\n .join('');\n if (!content) {\n return `<${tag}${htmlAttrs}>`;\n }\n return `<${tag}${htmlAttrs}>${content}`;\n }\n /**\n * Writes text in the buffer to the summary buffer file and empties buffer. Will append by default.\n *\n * @param {SummaryWriteOptions} [options] (optional) options for write operation\n *\n * @returns {Promise} summary instance\n */\n write(options) {\n return __awaiter(this, void 0, void 0, function* () {\n const overwrite = !!(options === null || options === void 0 ? void 0 : options.overwrite);\n const filePath = yield this.filePath();\n const writeFunc = overwrite ? writeFile : appendFile;\n yield writeFunc(filePath, this._buffer, { encoding: 'utf8' });\n return this.emptyBuffer();\n });\n }\n /**\n * Clears the summary buffer and wipes the summary file\n *\n * @returns {Summary} summary instance\n */\n clear() {\n return __awaiter(this, void 0, void 0, function* () {\n return this.emptyBuffer().write({ overwrite: true });\n });\n }\n /**\n * Returns the current summary buffer as a string\n *\n * @returns {string} string of summary buffer\n */\n stringify() {\n return this._buffer;\n }\n /**\n * If the summary buffer is empty\n *\n * @returns {boolen} true if the buffer is empty\n */\n isEmptyBuffer() {\n return this._buffer.length === 0;\n }\n /**\n * Resets the summary buffer without writing to summary file\n *\n * @returns {Summary} summary instance\n */\n emptyBuffer() {\n this._buffer = '';\n return this;\n }\n /**\n * Adds raw text to the summary buffer\n *\n * @param {string} text content to add\n * @param {boolean} [addEOL=false] (optional) append an EOL to the raw text (default: false)\n *\n * @returns {Summary} summary instance\n */\n addRaw(text, addEOL = false) {\n this._buffer += text;\n return addEOL ? this.addEOL() : this;\n }\n /**\n * Adds the operating system-specific end-of-line marker to the buffer\n *\n * @returns {Summary} summary instance\n */\n addEOL() {\n return this.addRaw(os_1.EOL);\n }\n /**\n * Adds an HTML codeblock to the summary buffer\n *\n * @param {string} code content to render within fenced code block\n * @param {string} lang (optional) language to syntax highlight code\n *\n * @returns {Summary} summary instance\n */\n addCodeBlock(code, lang) {\n const attrs = Object.assign({}, (lang && { lang }));\n const element = this.wrap('pre', this.wrap('code', code), attrs);\n return this.addRaw(element).addEOL();\n }\n /**\n * Adds an HTML list to the summary buffer\n *\n * @param {string[]} items list of items to render\n * @param {boolean} [ordered=false] (optional) if the rendered list should be ordered or not (default: false)\n *\n * @returns {Summary} summary instance\n */\n addList(items, ordered = false) {\n const tag = ordered ? 'ol' : 'ul';\n const listItems = items.map(item => this.wrap('li', item)).join('');\n const element = this.wrap(tag, listItems);\n return this.addRaw(element).addEOL();\n }\n /**\n * Adds an HTML table to the summary buffer\n *\n * @param {SummaryTableCell[]} rows table rows\n *\n * @returns {Summary} summary instance\n */\n addTable(rows) {\n const tableBody = rows\n .map(row => {\n const cells = row\n .map(cell => {\n if (typeof cell === 'string') {\n return this.wrap('td', cell);\n }\n const { header, data, colspan, rowspan } = cell;\n const tag = header ? 'th' : 'td';\n const attrs = Object.assign(Object.assign({}, (colspan && { colspan })), (rowspan && { rowspan }));\n return this.wrap(tag, data, attrs);\n })\n .join('');\n return this.wrap('tr', cells);\n })\n .join('');\n const element = this.wrap('table', tableBody);\n return this.addRaw(element).addEOL();\n }\n /**\n * Adds a collapsable HTML details element to the summary buffer\n *\n * @param {string} label text for the closed state\n * @param {string} content collapsable content\n *\n * @returns {Summary} summary instance\n */\n addDetails(label, content) {\n const element = this.wrap('details', this.wrap('summary', label) + content);\n return this.addRaw(element).addEOL();\n }\n /**\n * Adds an HTML image tag to the summary buffer\n *\n * @param {string} src path to the image you to embed\n * @param {string} alt text description of the image\n * @param {SummaryImageOptions} options (optional) addition image attributes\n *\n * @returns {Summary} summary instance\n */\n addImage(src, alt, options) {\n const { width, height } = options || {};\n const attrs = Object.assign(Object.assign({}, (width && { width })), (height && { height }));\n const element = this.wrap('img', null, Object.assign({ src, alt }, attrs));\n return this.addRaw(element).addEOL();\n }\n /**\n * Adds an HTML section heading element\n *\n * @param {string} text heading text\n * @param {number | string} [level=1] (optional) the heading level, default: 1\n *\n * @returns {Summary} summary instance\n */\n addHeading(text, level) {\n const tag = `h${level}`;\n const allowedTag = ['h1', 'h2', 'h3', 'h4', 'h5', 'h6'].includes(tag)\n ? tag\n : 'h1';\n const element = this.wrap(allowedTag, text);\n return this.addRaw(element).addEOL();\n }\n /**\n * Adds an HTML thematic break (
) to the summary buffer\n *\n * @returns {Summary} summary instance\n */\n addSeparator() {\n const element = this.wrap('hr', null);\n return this.addRaw(element).addEOL();\n }\n /**\n * Adds an HTML line break (
) to the summary buffer\n *\n * @returns {Summary} summary instance\n */\n addBreak() {\n const element = this.wrap('br', null);\n return this.addRaw(element).addEOL();\n }\n /**\n * Adds an HTML blockquote to the summary buffer\n *\n * @param {string} text quote text\n * @param {string} cite (optional) citation url\n *\n * @returns {Summary} summary instance\n */\n addQuote(text, cite) {\n const attrs = Object.assign({}, (cite && { cite }));\n const element = this.wrap('blockquote', text, attrs);\n return this.addRaw(element).addEOL();\n }\n /**\n * Adds an HTML anchor tag to the summary buffer\n *\n * @param {string} text link text/content\n * @param {string} href hyperlink\n *\n * @returns {Summary} summary instance\n */\n addLink(text, href) {\n const element = this.wrap('a', text, { href });\n return this.addRaw(element).addEOL();\n }\n}\nconst _summary = new Summary();\n/**\n * @deprecated use `core.summary`\n */\nexports.markdownSummary = _summary;\nexports.summary = _summary;\n//# sourceMappingURL=summary.js.map","\"use strict\";\n// We use any as a valid input type\n/* eslint-disable @typescript-eslint/no-explicit-any */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.toCommandProperties = exports.toCommandValue = void 0;\n/**\n * Sanitizes an input into a string so it can be passed into issueCommand safely\n * @param input input to sanitize into a string\n */\nfunction toCommandValue(input) {\n if (input === null || input === undefined) {\n return '';\n }\n else if (typeof input === 'string' || input instanceof String) {\n return input;\n }\n return JSON.stringify(input);\n}\nexports.toCommandValue = toCommandValue;\n/**\n *\n * @param annotationProperties\n * @returns The command properties to send with the actual annotation command\n * See IssueCommandProperties: https://github.com/actions/runner/blob/main/src/Runner.Worker/ActionCommandManager.cs#L646\n */\nfunction toCommandProperties(annotationProperties) {\n if (!Object.keys(annotationProperties).length) {\n return {};\n }\n return {\n title: annotationProperties.title,\n file: annotationProperties.file,\n line: annotationProperties.startLine,\n endLine: annotationProperties.endLine,\n col: annotationProperties.startColumn,\n endColumn: annotationProperties.endColumn\n };\n}\nexports.toCommandProperties = toCommandProperties;\n//# sourceMappingURL=utils.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Context = void 0;\nconst fs_1 = require(\"fs\");\nconst os_1 = require(\"os\");\nclass Context {\n /**\n * Hydrate the context from the environment\n */\n constructor() {\n var _a, _b, _c;\n this.payload = {};\n if (process.env.GITHUB_EVENT_PATH) {\n if ((0, fs_1.existsSync)(process.env.GITHUB_EVENT_PATH)) {\n this.payload = JSON.parse((0, fs_1.readFileSync)(process.env.GITHUB_EVENT_PATH, { encoding: 'utf8' }));\n }\n else {\n const path = process.env.GITHUB_EVENT_PATH;\n process.stdout.write(`GITHUB_EVENT_PATH ${path} does not exist${os_1.EOL}`);\n }\n }\n this.eventName = process.env.GITHUB_EVENT_NAME;\n this.sha = process.env.GITHUB_SHA;\n this.ref = process.env.GITHUB_REF;\n this.workflow = process.env.GITHUB_WORKFLOW;\n this.action = process.env.GITHUB_ACTION;\n this.actor = process.env.GITHUB_ACTOR;\n this.job = process.env.GITHUB_JOB;\n this.runNumber = parseInt(process.env.GITHUB_RUN_NUMBER, 10);\n this.runId = parseInt(process.env.GITHUB_RUN_ID, 10);\n this.apiUrl = (_a = process.env.GITHUB_API_URL) !== null && _a !== void 0 ? _a : `https://api.github.com`;\n this.serverUrl = (_b = process.env.GITHUB_SERVER_URL) !== null && _b !== void 0 ? _b : `https://github.com`;\n this.graphqlUrl =\n (_c = process.env.GITHUB_GRAPHQL_URL) !== null && _c !== void 0 ? _c : `https://api.github.com/graphql`;\n }\n get issue() {\n const payload = this.payload;\n return Object.assign(Object.assign({}, this.repo), { number: (payload.issue || payload.pull_request || payload).number });\n }\n get repo() {\n if (process.env.GITHUB_REPOSITORY) {\n const [owner, repo] = process.env.GITHUB_REPOSITORY.split('/');\n return { owner, repo };\n }\n if (this.payload.repository) {\n return {\n owner: this.payload.repository.owner.login,\n repo: this.payload.repository.name\n };\n }\n throw new Error(\"context.repo requires a GITHUB_REPOSITORY environment variable like 'owner/repo'\");\n }\n}\nexports.Context = Context;\n//# sourceMappingURL=context.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getOctokit = exports.context = void 0;\nconst Context = __importStar(require(\"./context\"));\nconst utils_1 = require(\"./utils\");\nexports.context = new Context.Context();\n/**\n * Returns a hydrated octokit ready to use for GitHub Actions\n *\n * @param token the repo PAT or GITHUB_TOKEN\n * @param options other options to set\n */\nfunction getOctokit(token, options, ...additionalPlugins) {\n const GitHubWithPlugins = utils_1.GitHub.plugin(...additionalPlugins);\n return new GitHubWithPlugins((0, utils_1.getOctokitOptions)(token, options));\n}\nexports.getOctokit = getOctokit;\n//# sourceMappingURL=github.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getApiBaseUrl = exports.getProxyFetch = exports.getProxyAgentDispatcher = exports.getProxyAgent = exports.getAuthString = void 0;\nconst httpClient = __importStar(require(\"@actions/http-client\"));\nconst undici_1 = require(\"undici\");\nfunction getAuthString(token, options) {\n if (!token && !options.auth) {\n throw new Error('Parameter token or opts.auth is required');\n }\n else if (token && options.auth) {\n throw new Error('Parameters token and opts.auth may not both be specified');\n }\n return typeof options.auth === 'string' ? options.auth : `token ${token}`;\n}\nexports.getAuthString = getAuthString;\nfunction getProxyAgent(destinationUrl) {\n const hc = new httpClient.HttpClient();\n return hc.getAgent(destinationUrl);\n}\nexports.getProxyAgent = getProxyAgent;\nfunction getProxyAgentDispatcher(destinationUrl) {\n const hc = new httpClient.HttpClient();\n return hc.getAgentDispatcher(destinationUrl);\n}\nexports.getProxyAgentDispatcher = getProxyAgentDispatcher;\nfunction getProxyFetch(destinationUrl) {\n const httpDispatcher = getProxyAgentDispatcher(destinationUrl);\n const proxyFetch = (url, opts) => __awaiter(this, void 0, void 0, function* () {\n return (0, undici_1.fetch)(url, Object.assign(Object.assign({}, opts), { dispatcher: httpDispatcher }));\n });\n return proxyFetch;\n}\nexports.getProxyFetch = getProxyFetch;\nfunction getApiBaseUrl() {\n return process.env['GITHUB_API_URL'] || 'https://api.github.com';\n}\nexports.getApiBaseUrl = getApiBaseUrl;\n//# sourceMappingURL=utils.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getOctokitOptions = exports.GitHub = exports.defaults = exports.context = void 0;\nconst Context = __importStar(require(\"./context\"));\nconst Utils = __importStar(require(\"./internal/utils\"));\n// octokit + plugins\nconst core_1 = require(\"@octokit/core\");\nconst plugin_rest_endpoint_methods_1 = require(\"@octokit/plugin-rest-endpoint-methods\");\nconst plugin_paginate_rest_1 = require(\"@octokit/plugin-paginate-rest\");\nexports.context = new Context.Context();\nconst baseUrl = Utils.getApiBaseUrl();\nexports.defaults = {\n baseUrl,\n request: {\n agent: Utils.getProxyAgent(baseUrl),\n fetch: Utils.getProxyFetch(baseUrl)\n }\n};\nexports.GitHub = core_1.Octokit.plugin(plugin_rest_endpoint_methods_1.restEndpointMethods, plugin_paginate_rest_1.paginateRest).defaults(exports.defaults);\n/**\n * Convience function to correctly format Octokit Options to pass into the constructor.\n *\n * @param token the repo PAT or GITHUB_TOKEN\n * @param options other options to set\n */\nfunction getOctokitOptions(token, options) {\n const opts = Object.assign({}, options || {}); // Shallow clone - don't mutate the object provided by the caller\n // Auth\n const auth = Utils.getAuthString(token, opts);\n if (auth) {\n opts.auth = auth;\n }\n return opts;\n}\nexports.getOctokitOptions = getOctokitOptions;\n//# sourceMappingURL=utils.js.map","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// pkg/dist-src/index.js\nvar dist_src_exports = {};\n__export(dist_src_exports, {\n composePaginateRest: () => composePaginateRest,\n isPaginatingEndpoint: () => isPaginatingEndpoint,\n paginateRest: () => paginateRest,\n paginatingEndpoints: () => paginatingEndpoints\n});\nmodule.exports = __toCommonJS(dist_src_exports);\n\n// pkg/dist-src/version.js\nvar VERSION = \"9.2.1\";\n\n// pkg/dist-src/normalize-paginated-list-response.js\nfunction normalizePaginatedListResponse(response) {\n if (!response.data) {\n return {\n ...response,\n data: []\n };\n }\n const responseNeedsNormalization = \"total_count\" in response.data && !(\"url\" in response.data);\n if (!responseNeedsNormalization)\n return response;\n const incompleteResults = response.data.incomplete_results;\n const repositorySelection = response.data.repository_selection;\n const totalCount = response.data.total_count;\n delete response.data.incomplete_results;\n delete response.data.repository_selection;\n delete response.data.total_count;\n const namespaceKey = Object.keys(response.data)[0];\n const data = response.data[namespaceKey];\n response.data = data;\n if (typeof incompleteResults !== \"undefined\") {\n response.data.incomplete_results = incompleteResults;\n }\n if (typeof repositorySelection !== \"undefined\") {\n response.data.repository_selection = repositorySelection;\n }\n response.data.total_count = totalCount;\n return response;\n}\n\n// pkg/dist-src/iterator.js\nfunction iterator(octokit, route, parameters) {\n const options = typeof route === \"function\" ? route.endpoint(parameters) : octokit.request.endpoint(route, parameters);\n const requestMethod = typeof route === \"function\" ? route : octokit.request;\n const method = options.method;\n const headers = options.headers;\n let url = options.url;\n return {\n [Symbol.asyncIterator]: () => ({\n async next() {\n if (!url)\n return { done: true };\n try {\n const response = await requestMethod({ method, url, headers });\n const normalizedResponse = normalizePaginatedListResponse(response);\n url = ((normalizedResponse.headers.link || \"\").match(\n /<([^>]+)>;\\s*rel=\"next\"/\n ) || [])[1];\n return { value: normalizedResponse };\n } catch (error) {\n if (error.status !== 409)\n throw error;\n url = \"\";\n return {\n value: {\n status: 200,\n headers: {},\n data: []\n }\n };\n }\n }\n })\n };\n}\n\n// pkg/dist-src/paginate.js\nfunction paginate(octokit, route, parameters, mapFn) {\n if (typeof parameters === \"function\") {\n mapFn = parameters;\n parameters = void 0;\n }\n return gather(\n octokit,\n [],\n iterator(octokit, route, parameters)[Symbol.asyncIterator](),\n mapFn\n );\n}\nfunction gather(octokit, results, iterator2, mapFn) {\n return iterator2.next().then((result) => {\n if (result.done) {\n return results;\n }\n let earlyExit = false;\n function done() {\n earlyExit = true;\n }\n results = results.concat(\n mapFn ? mapFn(result.value, done) : result.value.data\n );\n if (earlyExit) {\n return results;\n }\n return gather(octokit, results, iterator2, mapFn);\n });\n}\n\n// pkg/dist-src/compose-paginate.js\nvar composePaginateRest = Object.assign(paginate, {\n iterator\n});\n\n// pkg/dist-src/generated/paginating-endpoints.js\nvar paginatingEndpoints = [\n \"GET /advisories\",\n \"GET /app/hook/deliveries\",\n \"GET /app/installation-requests\",\n \"GET /app/installations\",\n \"GET /assignments/{assignment_id}/accepted_assignments\",\n \"GET /classrooms\",\n \"GET /classrooms/{classroom_id}/assignments\",\n \"GET /enterprises/{enterprise}/dependabot/alerts\",\n \"GET /enterprises/{enterprise}/secret-scanning/alerts\",\n \"GET /events\",\n \"GET /gists\",\n \"GET /gists/public\",\n \"GET /gists/starred\",\n \"GET /gists/{gist_id}/comments\",\n \"GET /gists/{gist_id}/commits\",\n \"GET /gists/{gist_id}/forks\",\n \"GET /installation/repositories\",\n \"GET /issues\",\n \"GET /licenses\",\n \"GET /marketplace_listing/plans\",\n \"GET /marketplace_listing/plans/{plan_id}/accounts\",\n \"GET /marketplace_listing/stubbed/plans\",\n \"GET /marketplace_listing/stubbed/plans/{plan_id}/accounts\",\n \"GET /networks/{owner}/{repo}/events\",\n \"GET /notifications\",\n \"GET /organizations\",\n \"GET /orgs/{org}/actions/cache/usage-by-repository\",\n \"GET /orgs/{org}/actions/permissions/repositories\",\n \"GET /orgs/{org}/actions/runners\",\n \"GET /orgs/{org}/actions/secrets\",\n \"GET /orgs/{org}/actions/secrets/{secret_name}/repositories\",\n \"GET /orgs/{org}/actions/variables\",\n \"GET /orgs/{org}/actions/variables/{name}/repositories\",\n \"GET /orgs/{org}/blocks\",\n \"GET /orgs/{org}/code-scanning/alerts\",\n \"GET /orgs/{org}/codespaces\",\n \"GET /orgs/{org}/codespaces/secrets\",\n \"GET /orgs/{org}/codespaces/secrets/{secret_name}/repositories\",\n \"GET /orgs/{org}/copilot/billing/seats\",\n \"GET /orgs/{org}/dependabot/alerts\",\n \"GET /orgs/{org}/dependabot/secrets\",\n \"GET /orgs/{org}/dependabot/secrets/{secret_name}/repositories\",\n \"GET /orgs/{org}/events\",\n \"GET /orgs/{org}/failed_invitations\",\n \"GET /orgs/{org}/hooks\",\n \"GET /orgs/{org}/hooks/{hook_id}/deliveries\",\n \"GET /orgs/{org}/installations\",\n \"GET /orgs/{org}/invitations\",\n \"GET /orgs/{org}/invitations/{invitation_id}/teams\",\n \"GET /orgs/{org}/issues\",\n \"GET /orgs/{org}/members\",\n \"GET /orgs/{org}/members/{username}/codespaces\",\n \"GET /orgs/{org}/migrations\",\n \"GET /orgs/{org}/migrations/{migration_id}/repositories\",\n \"GET /orgs/{org}/organization-roles/{role_id}/teams\",\n \"GET /orgs/{org}/organization-roles/{role_id}/users\",\n \"GET /orgs/{org}/outside_collaborators\",\n \"GET /orgs/{org}/packages\",\n \"GET /orgs/{org}/packages/{package_type}/{package_name}/versions\",\n \"GET /orgs/{org}/personal-access-token-requests\",\n \"GET /orgs/{org}/personal-access-token-requests/{pat_request_id}/repositories\",\n \"GET /orgs/{org}/personal-access-tokens\",\n \"GET /orgs/{org}/personal-access-tokens/{pat_id}/repositories\",\n \"GET /orgs/{org}/projects\",\n \"GET /orgs/{org}/properties/values\",\n \"GET /orgs/{org}/public_members\",\n \"GET /orgs/{org}/repos\",\n \"GET /orgs/{org}/rulesets\",\n \"GET /orgs/{org}/rulesets/rule-suites\",\n \"GET /orgs/{org}/secret-scanning/alerts\",\n \"GET /orgs/{org}/security-advisories\",\n \"GET /orgs/{org}/teams\",\n \"GET /orgs/{org}/teams/{team_slug}/discussions\",\n \"GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments\",\n \"GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions\",\n \"GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions\",\n \"GET /orgs/{org}/teams/{team_slug}/invitations\",\n \"GET /orgs/{org}/teams/{team_slug}/members\",\n \"GET /orgs/{org}/teams/{team_slug}/projects\",\n \"GET /orgs/{org}/teams/{team_slug}/repos\",\n \"GET /orgs/{org}/teams/{team_slug}/teams\",\n \"GET /projects/columns/{column_id}/cards\",\n \"GET /projects/{project_id}/collaborators\",\n \"GET /projects/{project_id}/columns\",\n \"GET /repos/{owner}/{repo}/actions/artifacts\",\n \"GET /repos/{owner}/{repo}/actions/caches\",\n \"GET /repos/{owner}/{repo}/actions/organization-secrets\",\n \"GET /repos/{owner}/{repo}/actions/organization-variables\",\n \"GET /repos/{owner}/{repo}/actions/runners\",\n \"GET /repos/{owner}/{repo}/actions/runs\",\n \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/artifacts\",\n \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/jobs\",\n \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/jobs\",\n \"GET /repos/{owner}/{repo}/actions/secrets\",\n \"GET /repos/{owner}/{repo}/actions/variables\",\n \"GET /repos/{owner}/{repo}/actions/workflows\",\n \"GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs\",\n \"GET /repos/{owner}/{repo}/activity\",\n \"GET /repos/{owner}/{repo}/assignees\",\n \"GET /repos/{owner}/{repo}/branches\",\n \"GET /repos/{owner}/{repo}/check-runs/{check_run_id}/annotations\",\n \"GET /repos/{owner}/{repo}/check-suites/{check_suite_id}/check-runs\",\n \"GET /repos/{owner}/{repo}/code-scanning/alerts\",\n \"GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances\",\n \"GET /repos/{owner}/{repo}/code-scanning/analyses\",\n \"GET /repos/{owner}/{repo}/codespaces\",\n \"GET /repos/{owner}/{repo}/codespaces/devcontainers\",\n \"GET /repos/{owner}/{repo}/codespaces/secrets\",\n \"GET /repos/{owner}/{repo}/collaborators\",\n \"GET /repos/{owner}/{repo}/comments\",\n \"GET /repos/{owner}/{repo}/comments/{comment_id}/reactions\",\n \"GET /repos/{owner}/{repo}/commits\",\n \"GET /repos/{owner}/{repo}/commits/{commit_sha}/comments\",\n \"GET /repos/{owner}/{repo}/commits/{commit_sha}/pulls\",\n \"GET /repos/{owner}/{repo}/commits/{ref}/check-runs\",\n \"GET /repos/{owner}/{repo}/commits/{ref}/check-suites\",\n \"GET /repos/{owner}/{repo}/commits/{ref}/status\",\n \"GET /repos/{owner}/{repo}/commits/{ref}/statuses\",\n \"GET /repos/{owner}/{repo}/contributors\",\n \"GET /repos/{owner}/{repo}/dependabot/alerts\",\n \"GET /repos/{owner}/{repo}/dependabot/secrets\",\n \"GET /repos/{owner}/{repo}/deployments\",\n \"GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses\",\n \"GET /repos/{owner}/{repo}/environments\",\n \"GET /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies\",\n \"GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/apps\",\n \"GET /repos/{owner}/{repo}/events\",\n \"GET /repos/{owner}/{repo}/forks\",\n \"GET /repos/{owner}/{repo}/hooks\",\n \"GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries\",\n \"GET /repos/{owner}/{repo}/invitations\",\n \"GET /repos/{owner}/{repo}/issues\",\n \"GET /repos/{owner}/{repo}/issues/comments\",\n \"GET /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions\",\n \"GET /repos/{owner}/{repo}/issues/events\",\n \"GET /repos/{owner}/{repo}/issues/{issue_number}/comments\",\n \"GET /repos/{owner}/{repo}/issues/{issue_number}/events\",\n \"GET /repos/{owner}/{repo}/issues/{issue_number}/labels\",\n \"GET /repos/{owner}/{repo}/issues/{issue_number}/reactions\",\n \"GET /repos/{owner}/{repo}/issues/{issue_number}/timeline\",\n \"GET /repos/{owner}/{repo}/keys\",\n \"GET /repos/{owner}/{repo}/labels\",\n \"GET /repos/{owner}/{repo}/milestones\",\n \"GET /repos/{owner}/{repo}/milestones/{milestone_number}/labels\",\n \"GET /repos/{owner}/{repo}/notifications\",\n \"GET /repos/{owner}/{repo}/pages/builds\",\n \"GET /repos/{owner}/{repo}/projects\",\n \"GET /repos/{owner}/{repo}/pulls\",\n \"GET /repos/{owner}/{repo}/pulls/comments\",\n \"GET /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions\",\n \"GET /repos/{owner}/{repo}/pulls/{pull_number}/comments\",\n \"GET /repos/{owner}/{repo}/pulls/{pull_number}/commits\",\n \"GET /repos/{owner}/{repo}/pulls/{pull_number}/files\",\n \"GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews\",\n \"GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/comments\",\n \"GET /repos/{owner}/{repo}/releases\",\n \"GET /repos/{owner}/{repo}/releases/{release_id}/assets\",\n \"GET /repos/{owner}/{repo}/releases/{release_id}/reactions\",\n \"GET /repos/{owner}/{repo}/rules/branches/{branch}\",\n \"GET /repos/{owner}/{repo}/rulesets\",\n \"GET /repos/{owner}/{repo}/rulesets/rule-suites\",\n \"GET /repos/{owner}/{repo}/secret-scanning/alerts\",\n \"GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}/locations\",\n \"GET /repos/{owner}/{repo}/security-advisories\",\n \"GET /repos/{owner}/{repo}/stargazers\",\n \"GET /repos/{owner}/{repo}/subscribers\",\n \"GET /repos/{owner}/{repo}/tags\",\n \"GET /repos/{owner}/{repo}/teams\",\n \"GET /repos/{owner}/{repo}/topics\",\n \"GET /repositories\",\n \"GET /repositories/{repository_id}/environments/{environment_name}/secrets\",\n \"GET /repositories/{repository_id}/environments/{environment_name}/variables\",\n \"GET /search/code\",\n \"GET /search/commits\",\n \"GET /search/issues\",\n \"GET /search/labels\",\n \"GET /search/repositories\",\n \"GET /search/topics\",\n \"GET /search/users\",\n \"GET /teams/{team_id}/discussions\",\n \"GET /teams/{team_id}/discussions/{discussion_number}/comments\",\n \"GET /teams/{team_id}/discussions/{discussion_number}/comments/{comment_number}/reactions\",\n \"GET /teams/{team_id}/discussions/{discussion_number}/reactions\",\n \"GET /teams/{team_id}/invitations\",\n \"GET /teams/{team_id}/members\",\n \"GET /teams/{team_id}/projects\",\n \"GET /teams/{team_id}/repos\",\n \"GET /teams/{team_id}/teams\",\n \"GET /user/blocks\",\n \"GET /user/codespaces\",\n \"GET /user/codespaces/secrets\",\n \"GET /user/emails\",\n \"GET /user/followers\",\n \"GET /user/following\",\n \"GET /user/gpg_keys\",\n \"GET /user/installations\",\n \"GET /user/installations/{installation_id}/repositories\",\n \"GET /user/issues\",\n \"GET /user/keys\",\n \"GET /user/marketplace_purchases\",\n \"GET /user/marketplace_purchases/stubbed\",\n \"GET /user/memberships/orgs\",\n \"GET /user/migrations\",\n \"GET /user/migrations/{migration_id}/repositories\",\n \"GET /user/orgs\",\n \"GET /user/packages\",\n \"GET /user/packages/{package_type}/{package_name}/versions\",\n \"GET /user/public_emails\",\n \"GET /user/repos\",\n \"GET /user/repository_invitations\",\n \"GET /user/social_accounts\",\n \"GET /user/ssh_signing_keys\",\n \"GET /user/starred\",\n \"GET /user/subscriptions\",\n \"GET /user/teams\",\n \"GET /users\",\n \"GET /users/{username}/events\",\n \"GET /users/{username}/events/orgs/{org}\",\n \"GET /users/{username}/events/public\",\n \"GET /users/{username}/followers\",\n \"GET /users/{username}/following\",\n \"GET /users/{username}/gists\",\n \"GET /users/{username}/gpg_keys\",\n \"GET /users/{username}/keys\",\n \"GET /users/{username}/orgs\",\n \"GET /users/{username}/packages\",\n \"GET /users/{username}/projects\",\n \"GET /users/{username}/received_events\",\n \"GET /users/{username}/received_events/public\",\n \"GET /users/{username}/repos\",\n \"GET /users/{username}/social_accounts\",\n \"GET /users/{username}/ssh_signing_keys\",\n \"GET /users/{username}/starred\",\n \"GET /users/{username}/subscriptions\"\n];\n\n// pkg/dist-src/paginating-endpoints.js\nfunction isPaginatingEndpoint(arg) {\n if (typeof arg === \"string\") {\n return paginatingEndpoints.includes(arg);\n } else {\n return false;\n }\n}\n\n// pkg/dist-src/index.js\nfunction paginateRest(octokit) {\n return {\n paginate: Object.assign(paginate.bind(null, octokit), {\n iterator: iterator.bind(null, octokit)\n })\n };\n}\npaginateRest.VERSION = VERSION;\n// Annotate the CommonJS export names for ESM import in node:\n0 && (module.exports = {\n composePaginateRest,\n isPaginatingEndpoint,\n paginateRest,\n paginatingEndpoints\n});\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// pkg/dist-src/index.js\nvar dist_src_exports = {};\n__export(dist_src_exports, {\n legacyRestEndpointMethods: () => legacyRestEndpointMethods,\n restEndpointMethods: () => restEndpointMethods\n});\nmodule.exports = __toCommonJS(dist_src_exports);\n\n// pkg/dist-src/version.js\nvar VERSION = \"10.4.1\";\n\n// pkg/dist-src/generated/endpoints.js\nvar Endpoints = {\n actions: {\n addCustomLabelsToSelfHostedRunnerForOrg: [\n \"POST /orgs/{org}/actions/runners/{runner_id}/labels\"\n ],\n addCustomLabelsToSelfHostedRunnerForRepo: [\n \"POST /repos/{owner}/{repo}/actions/runners/{runner_id}/labels\"\n ],\n addSelectedRepoToOrgSecret: [\n \"PUT /orgs/{org}/actions/secrets/{secret_name}/repositories/{repository_id}\"\n ],\n addSelectedRepoToOrgVariable: [\n \"PUT /orgs/{org}/actions/variables/{name}/repositories/{repository_id}\"\n ],\n approveWorkflowRun: [\n \"POST /repos/{owner}/{repo}/actions/runs/{run_id}/approve\"\n ],\n cancelWorkflowRun: [\n \"POST /repos/{owner}/{repo}/actions/runs/{run_id}/cancel\"\n ],\n createEnvironmentVariable: [\n \"POST /repositories/{repository_id}/environments/{environment_name}/variables\"\n ],\n createOrUpdateEnvironmentSecret: [\n \"PUT /repositories/{repository_id}/environments/{environment_name}/secrets/{secret_name}\"\n ],\n createOrUpdateOrgSecret: [\"PUT /orgs/{org}/actions/secrets/{secret_name}\"],\n createOrUpdateRepoSecret: [\n \"PUT /repos/{owner}/{repo}/actions/secrets/{secret_name}\"\n ],\n createOrgVariable: [\"POST /orgs/{org}/actions/variables\"],\n createRegistrationTokenForOrg: [\n \"POST /orgs/{org}/actions/runners/registration-token\"\n ],\n createRegistrationTokenForRepo: [\n \"POST /repos/{owner}/{repo}/actions/runners/registration-token\"\n ],\n createRemoveTokenForOrg: [\"POST /orgs/{org}/actions/runners/remove-token\"],\n createRemoveTokenForRepo: [\n \"POST /repos/{owner}/{repo}/actions/runners/remove-token\"\n ],\n createRepoVariable: [\"POST /repos/{owner}/{repo}/actions/variables\"],\n createWorkflowDispatch: [\n \"POST /repos/{owner}/{repo}/actions/workflows/{workflow_id}/dispatches\"\n ],\n deleteActionsCacheById: [\n \"DELETE /repos/{owner}/{repo}/actions/caches/{cache_id}\"\n ],\n deleteActionsCacheByKey: [\n \"DELETE /repos/{owner}/{repo}/actions/caches{?key,ref}\"\n ],\n deleteArtifact: [\n \"DELETE /repos/{owner}/{repo}/actions/artifacts/{artifact_id}\"\n ],\n deleteEnvironmentSecret: [\n \"DELETE /repositories/{repository_id}/environments/{environment_name}/secrets/{secret_name}\"\n ],\n deleteEnvironmentVariable: [\n \"DELETE /repositories/{repository_id}/environments/{environment_name}/variables/{name}\"\n ],\n deleteOrgSecret: [\"DELETE /orgs/{org}/actions/secrets/{secret_name}\"],\n deleteOrgVariable: [\"DELETE /orgs/{org}/actions/variables/{name}\"],\n deleteRepoSecret: [\n \"DELETE /repos/{owner}/{repo}/actions/secrets/{secret_name}\"\n ],\n deleteRepoVariable: [\n \"DELETE /repos/{owner}/{repo}/actions/variables/{name}\"\n ],\n deleteSelfHostedRunnerFromOrg: [\n \"DELETE /orgs/{org}/actions/runners/{runner_id}\"\n ],\n deleteSelfHostedRunnerFromRepo: [\n \"DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}\"\n ],\n deleteWorkflowRun: [\"DELETE /repos/{owner}/{repo}/actions/runs/{run_id}\"],\n deleteWorkflowRunLogs: [\n \"DELETE /repos/{owner}/{repo}/actions/runs/{run_id}/logs\"\n ],\n disableSelectedRepositoryGithubActionsOrganization: [\n \"DELETE /orgs/{org}/actions/permissions/repositories/{repository_id}\"\n ],\n disableWorkflow: [\n \"PUT /repos/{owner}/{repo}/actions/workflows/{workflow_id}/disable\"\n ],\n downloadArtifact: [\n \"GET /repos/{owner}/{repo}/actions/artifacts/{artifact_id}/{archive_format}\"\n ],\n downloadJobLogsForWorkflowRun: [\n \"GET /repos/{owner}/{repo}/actions/jobs/{job_id}/logs\"\n ],\n downloadWorkflowRunAttemptLogs: [\n \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/logs\"\n ],\n downloadWorkflowRunLogs: [\n \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/logs\"\n ],\n enableSelectedRepositoryGithubActionsOrganization: [\n \"PUT /orgs/{org}/actions/permissions/repositories/{repository_id}\"\n ],\n enableWorkflow: [\n \"PUT /repos/{owner}/{repo}/actions/workflows/{workflow_id}/enable\"\n ],\n forceCancelWorkflowRun: [\n \"POST /repos/{owner}/{repo}/actions/runs/{run_id}/force-cancel\"\n ],\n generateRunnerJitconfigForOrg: [\n \"POST /orgs/{org}/actions/runners/generate-jitconfig\"\n ],\n generateRunnerJitconfigForRepo: [\n \"POST /repos/{owner}/{repo}/actions/runners/generate-jitconfig\"\n ],\n getActionsCacheList: [\"GET /repos/{owner}/{repo}/actions/caches\"],\n getActionsCacheUsage: [\"GET /repos/{owner}/{repo}/actions/cache/usage\"],\n getActionsCacheUsageByRepoForOrg: [\n \"GET /orgs/{org}/actions/cache/usage-by-repository\"\n ],\n getActionsCacheUsageForOrg: [\"GET /orgs/{org}/actions/cache/usage\"],\n getAllowedActionsOrganization: [\n \"GET /orgs/{org}/actions/permissions/selected-actions\"\n ],\n getAllowedActionsRepository: [\n \"GET /repos/{owner}/{repo}/actions/permissions/selected-actions\"\n ],\n getArtifact: [\"GET /repos/{owner}/{repo}/actions/artifacts/{artifact_id}\"],\n getCustomOidcSubClaimForRepo: [\n \"GET /repos/{owner}/{repo}/actions/oidc/customization/sub\"\n ],\n getEnvironmentPublicKey: [\n \"GET /repositories/{repository_id}/environments/{environment_name}/secrets/public-key\"\n ],\n getEnvironmentSecret: [\n \"GET /repositories/{repository_id}/environments/{environment_name}/secrets/{secret_name}\"\n ],\n getEnvironmentVariable: [\n \"GET /repositories/{repository_id}/environments/{environment_name}/variables/{name}\"\n ],\n getGithubActionsDefaultWorkflowPermissionsOrganization: [\n \"GET /orgs/{org}/actions/permissions/workflow\"\n ],\n getGithubActionsDefaultWorkflowPermissionsRepository: [\n \"GET /repos/{owner}/{repo}/actions/permissions/workflow\"\n ],\n getGithubActionsPermissionsOrganization: [\n \"GET /orgs/{org}/actions/permissions\"\n ],\n getGithubActionsPermissionsRepository: [\n \"GET /repos/{owner}/{repo}/actions/permissions\"\n ],\n getJobForWorkflowRun: [\"GET /repos/{owner}/{repo}/actions/jobs/{job_id}\"],\n getOrgPublicKey: [\"GET /orgs/{org}/actions/secrets/public-key\"],\n getOrgSecret: [\"GET /orgs/{org}/actions/secrets/{secret_name}\"],\n getOrgVariable: [\"GET /orgs/{org}/actions/variables/{name}\"],\n getPendingDeploymentsForRun: [\n \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/pending_deployments\"\n ],\n getRepoPermissions: [\n \"GET /repos/{owner}/{repo}/actions/permissions\",\n {},\n { renamed: [\"actions\", \"getGithubActionsPermissionsRepository\"] }\n ],\n getRepoPublicKey: [\"GET /repos/{owner}/{repo}/actions/secrets/public-key\"],\n getRepoSecret: [\"GET /repos/{owner}/{repo}/actions/secrets/{secret_name}\"],\n getRepoVariable: [\"GET /repos/{owner}/{repo}/actions/variables/{name}\"],\n getReviewsForRun: [\n \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/approvals\"\n ],\n getSelfHostedRunnerForOrg: [\"GET /orgs/{org}/actions/runners/{runner_id}\"],\n getSelfHostedRunnerForRepo: [\n \"GET /repos/{owner}/{repo}/actions/runners/{runner_id}\"\n ],\n getWorkflow: [\"GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}\"],\n getWorkflowAccessToRepository: [\n \"GET /repos/{owner}/{repo}/actions/permissions/access\"\n ],\n getWorkflowRun: [\"GET /repos/{owner}/{repo}/actions/runs/{run_id}\"],\n getWorkflowRunAttempt: [\n \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}\"\n ],\n getWorkflowRunUsage: [\n \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/timing\"\n ],\n getWorkflowUsage: [\n \"GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/timing\"\n ],\n listArtifactsForRepo: [\"GET /repos/{owner}/{repo}/actions/artifacts\"],\n listEnvironmentSecrets: [\n \"GET /repositories/{repository_id}/environments/{environment_name}/secrets\"\n ],\n listEnvironmentVariables: [\n \"GET /repositories/{repository_id}/environments/{environment_name}/variables\"\n ],\n listJobsForWorkflowRun: [\n \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/jobs\"\n ],\n listJobsForWorkflowRunAttempt: [\n \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/jobs\"\n ],\n listLabelsForSelfHostedRunnerForOrg: [\n \"GET /orgs/{org}/actions/runners/{runner_id}/labels\"\n ],\n listLabelsForSelfHostedRunnerForRepo: [\n \"GET /repos/{owner}/{repo}/actions/runners/{runner_id}/labels\"\n ],\n listOrgSecrets: [\"GET /orgs/{org}/actions/secrets\"],\n listOrgVariables: [\"GET /orgs/{org}/actions/variables\"],\n listRepoOrganizationSecrets: [\n \"GET /repos/{owner}/{repo}/actions/organization-secrets\"\n ],\n listRepoOrganizationVariables: [\n \"GET /repos/{owner}/{repo}/actions/organization-variables\"\n ],\n listRepoSecrets: [\"GET /repos/{owner}/{repo}/actions/secrets\"],\n listRepoVariables: [\"GET /repos/{owner}/{repo}/actions/variables\"],\n listRepoWorkflows: [\"GET /repos/{owner}/{repo}/actions/workflows\"],\n listRunnerApplicationsForOrg: [\"GET /orgs/{org}/actions/runners/downloads\"],\n listRunnerApplicationsForRepo: [\n \"GET /repos/{owner}/{repo}/actions/runners/downloads\"\n ],\n listSelectedReposForOrgSecret: [\n \"GET /orgs/{org}/actions/secrets/{secret_name}/repositories\"\n ],\n listSelectedReposForOrgVariable: [\n \"GET /orgs/{org}/actions/variables/{name}/repositories\"\n ],\n listSelectedRepositoriesEnabledGithubActionsOrganization: [\n \"GET /orgs/{org}/actions/permissions/repositories\"\n ],\n listSelfHostedRunnersForOrg: [\"GET /orgs/{org}/actions/runners\"],\n listSelfHostedRunnersForRepo: [\"GET /repos/{owner}/{repo}/actions/runners\"],\n listWorkflowRunArtifacts: [\n \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/artifacts\"\n ],\n listWorkflowRuns: [\n \"GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs\"\n ],\n listWorkflowRunsForRepo: [\"GET /repos/{owner}/{repo}/actions/runs\"],\n reRunJobForWorkflowRun: [\n \"POST /repos/{owner}/{repo}/actions/jobs/{job_id}/rerun\"\n ],\n reRunWorkflow: [\"POST /repos/{owner}/{repo}/actions/runs/{run_id}/rerun\"],\n reRunWorkflowFailedJobs: [\n \"POST /repos/{owner}/{repo}/actions/runs/{run_id}/rerun-failed-jobs\"\n ],\n removeAllCustomLabelsFromSelfHostedRunnerForOrg: [\n \"DELETE /orgs/{org}/actions/runners/{runner_id}/labels\"\n ],\n removeAllCustomLabelsFromSelfHostedRunnerForRepo: [\n \"DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}/labels\"\n ],\n removeCustomLabelFromSelfHostedRunnerForOrg: [\n \"DELETE /orgs/{org}/actions/runners/{runner_id}/labels/{name}\"\n ],\n removeCustomLabelFromSelfHostedRunnerForRepo: [\n \"DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}/labels/{name}\"\n ],\n removeSelectedRepoFromOrgSecret: [\n \"DELETE /orgs/{org}/actions/secrets/{secret_name}/repositories/{repository_id}\"\n ],\n removeSelectedRepoFromOrgVariable: [\n \"DELETE /orgs/{org}/actions/variables/{name}/repositories/{repository_id}\"\n ],\n reviewCustomGatesForRun: [\n \"POST /repos/{owner}/{repo}/actions/runs/{run_id}/deployment_protection_rule\"\n ],\n reviewPendingDeploymentsForRun: [\n \"POST /repos/{owner}/{repo}/actions/runs/{run_id}/pending_deployments\"\n ],\n setAllowedActionsOrganization: [\n \"PUT /orgs/{org}/actions/permissions/selected-actions\"\n ],\n setAllowedActionsRepository: [\n \"PUT /repos/{owner}/{repo}/actions/permissions/selected-actions\"\n ],\n setCustomLabelsForSelfHostedRunnerForOrg: [\n \"PUT /orgs/{org}/actions/runners/{runner_id}/labels\"\n ],\n setCustomLabelsForSelfHostedRunnerForRepo: [\n \"PUT /repos/{owner}/{repo}/actions/runners/{runner_id}/labels\"\n ],\n setCustomOidcSubClaimForRepo: [\n \"PUT /repos/{owner}/{repo}/actions/oidc/customization/sub\"\n ],\n setGithubActionsDefaultWorkflowPermissionsOrganization: [\n \"PUT /orgs/{org}/actions/permissions/workflow\"\n ],\n setGithubActionsDefaultWorkflowPermissionsRepository: [\n \"PUT /repos/{owner}/{repo}/actions/permissions/workflow\"\n ],\n setGithubActionsPermissionsOrganization: [\n \"PUT /orgs/{org}/actions/permissions\"\n ],\n setGithubActionsPermissionsRepository: [\n \"PUT /repos/{owner}/{repo}/actions/permissions\"\n ],\n setSelectedReposForOrgSecret: [\n \"PUT /orgs/{org}/actions/secrets/{secret_name}/repositories\"\n ],\n setSelectedReposForOrgVariable: [\n \"PUT /orgs/{org}/actions/variables/{name}/repositories\"\n ],\n setSelectedRepositoriesEnabledGithubActionsOrganization: [\n \"PUT /orgs/{org}/actions/permissions/repositories\"\n ],\n setWorkflowAccessToRepository: [\n \"PUT /repos/{owner}/{repo}/actions/permissions/access\"\n ],\n updateEnvironmentVariable: [\n \"PATCH /repositories/{repository_id}/environments/{environment_name}/variables/{name}\"\n ],\n updateOrgVariable: [\"PATCH /orgs/{org}/actions/variables/{name}\"],\n updateRepoVariable: [\n \"PATCH /repos/{owner}/{repo}/actions/variables/{name}\"\n ]\n },\n activity: {\n checkRepoIsStarredByAuthenticatedUser: [\"GET /user/starred/{owner}/{repo}\"],\n deleteRepoSubscription: [\"DELETE /repos/{owner}/{repo}/subscription\"],\n deleteThreadSubscription: [\n \"DELETE /notifications/threads/{thread_id}/subscription\"\n ],\n getFeeds: [\"GET /feeds\"],\n getRepoSubscription: [\"GET /repos/{owner}/{repo}/subscription\"],\n getThread: [\"GET /notifications/threads/{thread_id}\"],\n getThreadSubscriptionForAuthenticatedUser: [\n \"GET /notifications/threads/{thread_id}/subscription\"\n ],\n listEventsForAuthenticatedUser: [\"GET /users/{username}/events\"],\n listNotificationsForAuthenticatedUser: [\"GET /notifications\"],\n listOrgEventsForAuthenticatedUser: [\n \"GET /users/{username}/events/orgs/{org}\"\n ],\n listPublicEvents: [\"GET /events\"],\n listPublicEventsForRepoNetwork: [\"GET /networks/{owner}/{repo}/events\"],\n listPublicEventsForUser: [\"GET /users/{username}/events/public\"],\n listPublicOrgEvents: [\"GET /orgs/{org}/events\"],\n listReceivedEventsForUser: [\"GET /users/{username}/received_events\"],\n listReceivedPublicEventsForUser: [\n \"GET /users/{username}/received_events/public\"\n ],\n listRepoEvents: [\"GET /repos/{owner}/{repo}/events\"],\n listRepoNotificationsForAuthenticatedUser: [\n \"GET /repos/{owner}/{repo}/notifications\"\n ],\n listReposStarredByAuthenticatedUser: [\"GET /user/starred\"],\n listReposStarredByUser: [\"GET /users/{username}/starred\"],\n listReposWatchedByUser: [\"GET /users/{username}/subscriptions\"],\n listStargazersForRepo: [\"GET /repos/{owner}/{repo}/stargazers\"],\n listWatchedReposForAuthenticatedUser: [\"GET /user/subscriptions\"],\n listWatchersForRepo: [\"GET /repos/{owner}/{repo}/subscribers\"],\n markNotificationsAsRead: [\"PUT /notifications\"],\n markRepoNotificationsAsRead: [\"PUT /repos/{owner}/{repo}/notifications\"],\n markThreadAsDone: [\"DELETE /notifications/threads/{thread_id}\"],\n markThreadAsRead: [\"PATCH /notifications/threads/{thread_id}\"],\n setRepoSubscription: [\"PUT /repos/{owner}/{repo}/subscription\"],\n setThreadSubscription: [\n \"PUT /notifications/threads/{thread_id}/subscription\"\n ],\n starRepoForAuthenticatedUser: [\"PUT /user/starred/{owner}/{repo}\"],\n unstarRepoForAuthenticatedUser: [\"DELETE /user/starred/{owner}/{repo}\"]\n },\n apps: {\n addRepoToInstallation: [\n \"PUT /user/installations/{installation_id}/repositories/{repository_id}\",\n {},\n { renamed: [\"apps\", \"addRepoToInstallationForAuthenticatedUser\"] }\n ],\n addRepoToInstallationForAuthenticatedUser: [\n \"PUT /user/installations/{installation_id}/repositories/{repository_id}\"\n ],\n checkToken: [\"POST /applications/{client_id}/token\"],\n createFromManifest: [\"POST /app-manifests/{code}/conversions\"],\n createInstallationAccessToken: [\n \"POST /app/installations/{installation_id}/access_tokens\"\n ],\n deleteAuthorization: [\"DELETE /applications/{client_id}/grant\"],\n deleteInstallation: [\"DELETE /app/installations/{installation_id}\"],\n deleteToken: [\"DELETE /applications/{client_id}/token\"],\n getAuthenticated: [\"GET /app\"],\n getBySlug: [\"GET /apps/{app_slug}\"],\n getInstallation: [\"GET /app/installations/{installation_id}\"],\n getOrgInstallation: [\"GET /orgs/{org}/installation\"],\n getRepoInstallation: [\"GET /repos/{owner}/{repo}/installation\"],\n getSubscriptionPlanForAccount: [\n \"GET /marketplace_listing/accounts/{account_id}\"\n ],\n getSubscriptionPlanForAccountStubbed: [\n \"GET /marketplace_listing/stubbed/accounts/{account_id}\"\n ],\n getUserInstallation: [\"GET /users/{username}/installation\"],\n getWebhookConfigForApp: [\"GET /app/hook/config\"],\n getWebhookDelivery: [\"GET /app/hook/deliveries/{delivery_id}\"],\n listAccountsForPlan: [\"GET /marketplace_listing/plans/{plan_id}/accounts\"],\n listAccountsForPlanStubbed: [\n \"GET /marketplace_listing/stubbed/plans/{plan_id}/accounts\"\n ],\n listInstallationReposForAuthenticatedUser: [\n \"GET /user/installations/{installation_id}/repositories\"\n ],\n listInstallationRequestsForAuthenticatedApp: [\n \"GET /app/installation-requests\"\n ],\n listInstallations: [\"GET /app/installations\"],\n listInstallationsForAuthenticatedUser: [\"GET /user/installations\"],\n listPlans: [\"GET /marketplace_listing/plans\"],\n listPlansStubbed: [\"GET /marketplace_listing/stubbed/plans\"],\n listReposAccessibleToInstallation: [\"GET /installation/repositories\"],\n listSubscriptionsForAuthenticatedUser: [\"GET /user/marketplace_purchases\"],\n listSubscriptionsForAuthenticatedUserStubbed: [\n \"GET /user/marketplace_purchases/stubbed\"\n ],\n listWebhookDeliveries: [\"GET /app/hook/deliveries\"],\n redeliverWebhookDelivery: [\n \"POST /app/hook/deliveries/{delivery_id}/attempts\"\n ],\n removeRepoFromInstallation: [\n \"DELETE /user/installations/{installation_id}/repositories/{repository_id}\",\n {},\n { renamed: [\"apps\", \"removeRepoFromInstallationForAuthenticatedUser\"] }\n ],\n removeRepoFromInstallationForAuthenticatedUser: [\n \"DELETE /user/installations/{installation_id}/repositories/{repository_id}\"\n ],\n resetToken: [\"PATCH /applications/{client_id}/token\"],\n revokeInstallationAccessToken: [\"DELETE /installation/token\"],\n scopeToken: [\"POST /applications/{client_id}/token/scoped\"],\n suspendInstallation: [\"PUT /app/installations/{installation_id}/suspended\"],\n unsuspendInstallation: [\n \"DELETE /app/installations/{installation_id}/suspended\"\n ],\n updateWebhookConfigForApp: [\"PATCH /app/hook/config\"]\n },\n billing: {\n getGithubActionsBillingOrg: [\"GET /orgs/{org}/settings/billing/actions\"],\n getGithubActionsBillingUser: [\n \"GET /users/{username}/settings/billing/actions\"\n ],\n getGithubPackagesBillingOrg: [\"GET /orgs/{org}/settings/billing/packages\"],\n getGithubPackagesBillingUser: [\n \"GET /users/{username}/settings/billing/packages\"\n ],\n getSharedStorageBillingOrg: [\n \"GET /orgs/{org}/settings/billing/shared-storage\"\n ],\n getSharedStorageBillingUser: [\n \"GET /users/{username}/settings/billing/shared-storage\"\n ]\n },\n checks: {\n create: [\"POST /repos/{owner}/{repo}/check-runs\"],\n createSuite: [\"POST /repos/{owner}/{repo}/check-suites\"],\n get: [\"GET /repos/{owner}/{repo}/check-runs/{check_run_id}\"],\n getSuite: [\"GET /repos/{owner}/{repo}/check-suites/{check_suite_id}\"],\n listAnnotations: [\n \"GET /repos/{owner}/{repo}/check-runs/{check_run_id}/annotations\"\n ],\n listForRef: [\"GET /repos/{owner}/{repo}/commits/{ref}/check-runs\"],\n listForSuite: [\n \"GET /repos/{owner}/{repo}/check-suites/{check_suite_id}/check-runs\"\n ],\n listSuitesForRef: [\"GET /repos/{owner}/{repo}/commits/{ref}/check-suites\"],\n rerequestRun: [\n \"POST /repos/{owner}/{repo}/check-runs/{check_run_id}/rerequest\"\n ],\n rerequestSuite: [\n \"POST /repos/{owner}/{repo}/check-suites/{check_suite_id}/rerequest\"\n ],\n setSuitesPreferences: [\n \"PATCH /repos/{owner}/{repo}/check-suites/preferences\"\n ],\n update: [\"PATCH /repos/{owner}/{repo}/check-runs/{check_run_id}\"]\n },\n codeScanning: {\n deleteAnalysis: [\n \"DELETE /repos/{owner}/{repo}/code-scanning/analyses/{analysis_id}{?confirm_delete}\"\n ],\n getAlert: [\n \"GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}\",\n {},\n { renamedParameters: { alert_id: \"alert_number\" } }\n ],\n getAnalysis: [\n \"GET /repos/{owner}/{repo}/code-scanning/analyses/{analysis_id}\"\n ],\n getCodeqlDatabase: [\n \"GET /repos/{owner}/{repo}/code-scanning/codeql/databases/{language}\"\n ],\n getDefaultSetup: [\"GET /repos/{owner}/{repo}/code-scanning/default-setup\"],\n getSarif: [\"GET /repos/{owner}/{repo}/code-scanning/sarifs/{sarif_id}\"],\n listAlertInstances: [\n \"GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances\"\n ],\n listAlertsForOrg: [\"GET /orgs/{org}/code-scanning/alerts\"],\n listAlertsForRepo: [\"GET /repos/{owner}/{repo}/code-scanning/alerts\"],\n listAlertsInstances: [\n \"GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances\",\n {},\n { renamed: [\"codeScanning\", \"listAlertInstances\"] }\n ],\n listCodeqlDatabases: [\n \"GET /repos/{owner}/{repo}/code-scanning/codeql/databases\"\n ],\n listRecentAnalyses: [\"GET /repos/{owner}/{repo}/code-scanning/analyses\"],\n updateAlert: [\n \"PATCH /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}\"\n ],\n updateDefaultSetup: [\n \"PATCH /repos/{owner}/{repo}/code-scanning/default-setup\"\n ],\n uploadSarif: [\"POST /repos/{owner}/{repo}/code-scanning/sarifs\"]\n },\n codesOfConduct: {\n getAllCodesOfConduct: [\"GET /codes_of_conduct\"],\n getConductCode: [\"GET /codes_of_conduct/{key}\"]\n },\n codespaces: {\n addRepositoryForSecretForAuthenticatedUser: [\n \"PUT /user/codespaces/secrets/{secret_name}/repositories/{repository_id}\"\n ],\n addSelectedRepoToOrgSecret: [\n \"PUT /orgs/{org}/codespaces/secrets/{secret_name}/repositories/{repository_id}\"\n ],\n checkPermissionsForDevcontainer: [\n \"GET /repos/{owner}/{repo}/codespaces/permissions_check\"\n ],\n codespaceMachinesForAuthenticatedUser: [\n \"GET /user/codespaces/{codespace_name}/machines\"\n ],\n createForAuthenticatedUser: [\"POST /user/codespaces\"],\n createOrUpdateOrgSecret: [\n \"PUT /orgs/{org}/codespaces/secrets/{secret_name}\"\n ],\n createOrUpdateRepoSecret: [\n \"PUT /repos/{owner}/{repo}/codespaces/secrets/{secret_name}\"\n ],\n createOrUpdateSecretForAuthenticatedUser: [\n \"PUT /user/codespaces/secrets/{secret_name}\"\n ],\n createWithPrForAuthenticatedUser: [\n \"POST /repos/{owner}/{repo}/pulls/{pull_number}/codespaces\"\n ],\n createWithRepoForAuthenticatedUser: [\n \"POST /repos/{owner}/{repo}/codespaces\"\n ],\n deleteForAuthenticatedUser: [\"DELETE /user/codespaces/{codespace_name}\"],\n deleteFromOrganization: [\n \"DELETE /orgs/{org}/members/{username}/codespaces/{codespace_name}\"\n ],\n deleteOrgSecret: [\"DELETE /orgs/{org}/codespaces/secrets/{secret_name}\"],\n deleteRepoSecret: [\n \"DELETE /repos/{owner}/{repo}/codespaces/secrets/{secret_name}\"\n ],\n deleteSecretForAuthenticatedUser: [\n \"DELETE /user/codespaces/secrets/{secret_name}\"\n ],\n exportForAuthenticatedUser: [\n \"POST /user/codespaces/{codespace_name}/exports\"\n ],\n getCodespacesForUserInOrg: [\n \"GET /orgs/{org}/members/{username}/codespaces\"\n ],\n getExportDetailsForAuthenticatedUser: [\n \"GET /user/codespaces/{codespace_name}/exports/{export_id}\"\n ],\n getForAuthenticatedUser: [\"GET /user/codespaces/{codespace_name}\"],\n getOrgPublicKey: [\"GET /orgs/{org}/codespaces/secrets/public-key\"],\n getOrgSecret: [\"GET /orgs/{org}/codespaces/secrets/{secret_name}\"],\n getPublicKeyForAuthenticatedUser: [\n \"GET /user/codespaces/secrets/public-key\"\n ],\n getRepoPublicKey: [\n \"GET /repos/{owner}/{repo}/codespaces/secrets/public-key\"\n ],\n getRepoSecret: [\n \"GET /repos/{owner}/{repo}/codespaces/secrets/{secret_name}\"\n ],\n getSecretForAuthenticatedUser: [\n \"GET /user/codespaces/secrets/{secret_name}\"\n ],\n listDevcontainersInRepositoryForAuthenticatedUser: [\n \"GET /repos/{owner}/{repo}/codespaces/devcontainers\"\n ],\n listForAuthenticatedUser: [\"GET /user/codespaces\"],\n listInOrganization: [\n \"GET /orgs/{org}/codespaces\",\n {},\n { renamedParameters: { org_id: \"org\" } }\n ],\n listInRepositoryForAuthenticatedUser: [\n \"GET /repos/{owner}/{repo}/codespaces\"\n ],\n listOrgSecrets: [\"GET /orgs/{org}/codespaces/secrets\"],\n listRepoSecrets: [\"GET /repos/{owner}/{repo}/codespaces/secrets\"],\n listRepositoriesForSecretForAuthenticatedUser: [\n \"GET /user/codespaces/secrets/{secret_name}/repositories\"\n ],\n listSecretsForAuthenticatedUser: [\"GET /user/codespaces/secrets\"],\n listSelectedReposForOrgSecret: [\n \"GET /orgs/{org}/codespaces/secrets/{secret_name}/repositories\"\n ],\n preFlightWithRepoForAuthenticatedUser: [\n \"GET /repos/{owner}/{repo}/codespaces/new\"\n ],\n publishForAuthenticatedUser: [\n \"POST /user/codespaces/{codespace_name}/publish\"\n ],\n removeRepositoryForSecretForAuthenticatedUser: [\n \"DELETE /user/codespaces/secrets/{secret_name}/repositories/{repository_id}\"\n ],\n removeSelectedRepoFromOrgSecret: [\n \"DELETE /orgs/{org}/codespaces/secrets/{secret_name}/repositories/{repository_id}\"\n ],\n repoMachinesForAuthenticatedUser: [\n \"GET /repos/{owner}/{repo}/codespaces/machines\"\n ],\n setRepositoriesForSecretForAuthenticatedUser: [\n \"PUT /user/codespaces/secrets/{secret_name}/repositories\"\n ],\n setSelectedReposForOrgSecret: [\n \"PUT /orgs/{org}/codespaces/secrets/{secret_name}/repositories\"\n ],\n startForAuthenticatedUser: [\"POST /user/codespaces/{codespace_name}/start\"],\n stopForAuthenticatedUser: [\"POST /user/codespaces/{codespace_name}/stop\"],\n stopInOrganization: [\n \"POST /orgs/{org}/members/{username}/codespaces/{codespace_name}/stop\"\n ],\n updateForAuthenticatedUser: [\"PATCH /user/codespaces/{codespace_name}\"]\n },\n copilot: {\n addCopilotSeatsForTeams: [\n \"POST /orgs/{org}/copilot/billing/selected_teams\"\n ],\n addCopilotSeatsForUsers: [\n \"POST /orgs/{org}/copilot/billing/selected_users\"\n ],\n cancelCopilotSeatAssignmentForTeams: [\n \"DELETE /orgs/{org}/copilot/billing/selected_teams\"\n ],\n cancelCopilotSeatAssignmentForUsers: [\n \"DELETE /orgs/{org}/copilot/billing/selected_users\"\n ],\n getCopilotOrganizationDetails: [\"GET /orgs/{org}/copilot/billing\"],\n getCopilotSeatDetailsForUser: [\n \"GET /orgs/{org}/members/{username}/copilot\"\n ],\n listCopilotSeats: [\"GET /orgs/{org}/copilot/billing/seats\"]\n },\n dependabot: {\n addSelectedRepoToOrgSecret: [\n \"PUT /orgs/{org}/dependabot/secrets/{secret_name}/repositories/{repository_id}\"\n ],\n createOrUpdateOrgSecret: [\n \"PUT /orgs/{org}/dependabot/secrets/{secret_name}\"\n ],\n createOrUpdateRepoSecret: [\n \"PUT /repos/{owner}/{repo}/dependabot/secrets/{secret_name}\"\n ],\n deleteOrgSecret: [\"DELETE /orgs/{org}/dependabot/secrets/{secret_name}\"],\n deleteRepoSecret: [\n \"DELETE /repos/{owner}/{repo}/dependabot/secrets/{secret_name}\"\n ],\n getAlert: [\"GET /repos/{owner}/{repo}/dependabot/alerts/{alert_number}\"],\n getOrgPublicKey: [\"GET /orgs/{org}/dependabot/secrets/public-key\"],\n getOrgSecret: [\"GET /orgs/{org}/dependabot/secrets/{secret_name}\"],\n getRepoPublicKey: [\n \"GET /repos/{owner}/{repo}/dependabot/secrets/public-key\"\n ],\n getRepoSecret: [\n \"GET /repos/{owner}/{repo}/dependabot/secrets/{secret_name}\"\n ],\n listAlertsForEnterprise: [\n \"GET /enterprises/{enterprise}/dependabot/alerts\"\n ],\n listAlertsForOrg: [\"GET /orgs/{org}/dependabot/alerts\"],\n listAlertsForRepo: [\"GET /repos/{owner}/{repo}/dependabot/alerts\"],\n listOrgSecrets: [\"GET /orgs/{org}/dependabot/secrets\"],\n listRepoSecrets: [\"GET /repos/{owner}/{repo}/dependabot/secrets\"],\n listSelectedReposForOrgSecret: [\n \"GET /orgs/{org}/dependabot/secrets/{secret_name}/repositories\"\n ],\n removeSelectedRepoFromOrgSecret: [\n \"DELETE /orgs/{org}/dependabot/secrets/{secret_name}/repositories/{repository_id}\"\n ],\n setSelectedReposForOrgSecret: [\n \"PUT /orgs/{org}/dependabot/secrets/{secret_name}/repositories\"\n ],\n updateAlert: [\n \"PATCH /repos/{owner}/{repo}/dependabot/alerts/{alert_number}\"\n ]\n },\n dependencyGraph: {\n createRepositorySnapshot: [\n \"POST /repos/{owner}/{repo}/dependency-graph/snapshots\"\n ],\n diffRange: [\n \"GET /repos/{owner}/{repo}/dependency-graph/compare/{basehead}\"\n ],\n exportSbom: [\"GET /repos/{owner}/{repo}/dependency-graph/sbom\"]\n },\n emojis: { get: [\"GET /emojis\"] },\n gists: {\n checkIsStarred: [\"GET /gists/{gist_id}/star\"],\n create: [\"POST /gists\"],\n createComment: [\"POST /gists/{gist_id}/comments\"],\n delete: [\"DELETE /gists/{gist_id}\"],\n deleteComment: [\"DELETE /gists/{gist_id}/comments/{comment_id}\"],\n fork: [\"POST /gists/{gist_id}/forks\"],\n get: [\"GET /gists/{gist_id}\"],\n getComment: [\"GET /gists/{gist_id}/comments/{comment_id}\"],\n getRevision: [\"GET /gists/{gist_id}/{sha}\"],\n list: [\"GET /gists\"],\n listComments: [\"GET /gists/{gist_id}/comments\"],\n listCommits: [\"GET /gists/{gist_id}/commits\"],\n listForUser: [\"GET /users/{username}/gists\"],\n listForks: [\"GET /gists/{gist_id}/forks\"],\n listPublic: [\"GET /gists/public\"],\n listStarred: [\"GET /gists/starred\"],\n star: [\"PUT /gists/{gist_id}/star\"],\n unstar: [\"DELETE /gists/{gist_id}/star\"],\n update: [\"PATCH /gists/{gist_id}\"],\n updateComment: [\"PATCH /gists/{gist_id}/comments/{comment_id}\"]\n },\n git: {\n createBlob: [\"POST /repos/{owner}/{repo}/git/blobs\"],\n createCommit: [\"POST /repos/{owner}/{repo}/git/commits\"],\n createRef: [\"POST /repos/{owner}/{repo}/git/refs\"],\n createTag: [\"POST /repos/{owner}/{repo}/git/tags\"],\n createTree: [\"POST /repos/{owner}/{repo}/git/trees\"],\n deleteRef: [\"DELETE /repos/{owner}/{repo}/git/refs/{ref}\"],\n getBlob: [\"GET /repos/{owner}/{repo}/git/blobs/{file_sha}\"],\n getCommit: [\"GET /repos/{owner}/{repo}/git/commits/{commit_sha}\"],\n getRef: [\"GET /repos/{owner}/{repo}/git/ref/{ref}\"],\n getTag: [\"GET /repos/{owner}/{repo}/git/tags/{tag_sha}\"],\n getTree: [\"GET /repos/{owner}/{repo}/git/trees/{tree_sha}\"],\n listMatchingRefs: [\"GET /repos/{owner}/{repo}/git/matching-refs/{ref}\"],\n updateRef: [\"PATCH /repos/{owner}/{repo}/git/refs/{ref}\"]\n },\n gitignore: {\n getAllTemplates: [\"GET /gitignore/templates\"],\n getTemplate: [\"GET /gitignore/templates/{name}\"]\n },\n interactions: {\n getRestrictionsForAuthenticatedUser: [\"GET /user/interaction-limits\"],\n getRestrictionsForOrg: [\"GET /orgs/{org}/interaction-limits\"],\n getRestrictionsForRepo: [\"GET /repos/{owner}/{repo}/interaction-limits\"],\n getRestrictionsForYourPublicRepos: [\n \"GET /user/interaction-limits\",\n {},\n { renamed: [\"interactions\", \"getRestrictionsForAuthenticatedUser\"] }\n ],\n removeRestrictionsForAuthenticatedUser: [\"DELETE /user/interaction-limits\"],\n removeRestrictionsForOrg: [\"DELETE /orgs/{org}/interaction-limits\"],\n removeRestrictionsForRepo: [\n \"DELETE /repos/{owner}/{repo}/interaction-limits\"\n ],\n removeRestrictionsForYourPublicRepos: [\n \"DELETE /user/interaction-limits\",\n {},\n { renamed: [\"interactions\", \"removeRestrictionsForAuthenticatedUser\"] }\n ],\n setRestrictionsForAuthenticatedUser: [\"PUT /user/interaction-limits\"],\n setRestrictionsForOrg: [\"PUT /orgs/{org}/interaction-limits\"],\n setRestrictionsForRepo: [\"PUT /repos/{owner}/{repo}/interaction-limits\"],\n setRestrictionsForYourPublicRepos: [\n \"PUT /user/interaction-limits\",\n {},\n { renamed: [\"interactions\", \"setRestrictionsForAuthenticatedUser\"] }\n ]\n },\n issues: {\n addAssignees: [\n \"POST /repos/{owner}/{repo}/issues/{issue_number}/assignees\"\n ],\n addLabels: [\"POST /repos/{owner}/{repo}/issues/{issue_number}/labels\"],\n checkUserCanBeAssigned: [\"GET /repos/{owner}/{repo}/assignees/{assignee}\"],\n checkUserCanBeAssignedToIssue: [\n \"GET /repos/{owner}/{repo}/issues/{issue_number}/assignees/{assignee}\"\n ],\n create: [\"POST /repos/{owner}/{repo}/issues\"],\n createComment: [\n \"POST /repos/{owner}/{repo}/issues/{issue_number}/comments\"\n ],\n createLabel: [\"POST /repos/{owner}/{repo}/labels\"],\n createMilestone: [\"POST /repos/{owner}/{repo}/milestones\"],\n deleteComment: [\n \"DELETE /repos/{owner}/{repo}/issues/comments/{comment_id}\"\n ],\n deleteLabel: [\"DELETE /repos/{owner}/{repo}/labels/{name}\"],\n deleteMilestone: [\n \"DELETE /repos/{owner}/{repo}/milestones/{milestone_number}\"\n ],\n get: [\"GET /repos/{owner}/{repo}/issues/{issue_number}\"],\n getComment: [\"GET /repos/{owner}/{repo}/issues/comments/{comment_id}\"],\n getEvent: [\"GET /repos/{owner}/{repo}/issues/events/{event_id}\"],\n getLabel: [\"GET /repos/{owner}/{repo}/labels/{name}\"],\n getMilestone: [\"GET /repos/{owner}/{repo}/milestones/{milestone_number}\"],\n list: [\"GET /issues\"],\n listAssignees: [\"GET /repos/{owner}/{repo}/assignees\"],\n listComments: [\"GET /repos/{owner}/{repo}/issues/{issue_number}/comments\"],\n listCommentsForRepo: [\"GET /repos/{owner}/{repo}/issues/comments\"],\n listEvents: [\"GET /repos/{owner}/{repo}/issues/{issue_number}/events\"],\n listEventsForRepo: [\"GET /repos/{owner}/{repo}/issues/events\"],\n listEventsForTimeline: [\n \"GET /repos/{owner}/{repo}/issues/{issue_number}/timeline\"\n ],\n listForAuthenticatedUser: [\"GET /user/issues\"],\n listForOrg: [\"GET /orgs/{org}/issues\"],\n listForRepo: [\"GET /repos/{owner}/{repo}/issues\"],\n listLabelsForMilestone: [\n \"GET /repos/{owner}/{repo}/milestones/{milestone_number}/labels\"\n ],\n listLabelsForRepo: [\"GET /repos/{owner}/{repo}/labels\"],\n listLabelsOnIssue: [\n \"GET /repos/{owner}/{repo}/issues/{issue_number}/labels\"\n ],\n listMilestones: [\"GET /repos/{owner}/{repo}/milestones\"],\n lock: [\"PUT /repos/{owner}/{repo}/issues/{issue_number}/lock\"],\n removeAllLabels: [\n \"DELETE /repos/{owner}/{repo}/issues/{issue_number}/labels\"\n ],\n removeAssignees: [\n \"DELETE /repos/{owner}/{repo}/issues/{issue_number}/assignees\"\n ],\n removeLabel: [\n \"DELETE /repos/{owner}/{repo}/issues/{issue_number}/labels/{name}\"\n ],\n setLabels: [\"PUT /repos/{owner}/{repo}/issues/{issue_number}/labels\"],\n unlock: [\"DELETE /repos/{owner}/{repo}/issues/{issue_number}/lock\"],\n update: [\"PATCH /repos/{owner}/{repo}/issues/{issue_number}\"],\n updateComment: [\"PATCH /repos/{owner}/{repo}/issues/comments/{comment_id}\"],\n updateLabel: [\"PATCH /repos/{owner}/{repo}/labels/{name}\"],\n updateMilestone: [\n \"PATCH /repos/{owner}/{repo}/milestones/{milestone_number}\"\n ]\n },\n licenses: {\n get: [\"GET /licenses/{license}\"],\n getAllCommonlyUsed: [\"GET /licenses\"],\n getForRepo: [\"GET /repos/{owner}/{repo}/license\"]\n },\n markdown: {\n render: [\"POST /markdown\"],\n renderRaw: [\n \"POST /markdown/raw\",\n { headers: { \"content-type\": \"text/plain; charset=utf-8\" } }\n ]\n },\n meta: {\n get: [\"GET /meta\"],\n getAllVersions: [\"GET /versions\"],\n getOctocat: [\"GET /octocat\"],\n getZen: [\"GET /zen\"],\n root: [\"GET /\"]\n },\n migrations: {\n cancelImport: [\n \"DELETE /repos/{owner}/{repo}/import\",\n {},\n {\n deprecated: \"octokit.rest.migrations.cancelImport() is deprecated, see https://docs.github.com/rest/migrations/source-imports#cancel-an-import\"\n }\n ],\n deleteArchiveForAuthenticatedUser: [\n \"DELETE /user/migrations/{migration_id}/archive\"\n ],\n deleteArchiveForOrg: [\n \"DELETE /orgs/{org}/migrations/{migration_id}/archive\"\n ],\n downloadArchiveForOrg: [\n \"GET /orgs/{org}/migrations/{migration_id}/archive\"\n ],\n getArchiveForAuthenticatedUser: [\n \"GET /user/migrations/{migration_id}/archive\"\n ],\n getCommitAuthors: [\n \"GET /repos/{owner}/{repo}/import/authors\",\n {},\n {\n deprecated: \"octokit.rest.migrations.getCommitAuthors() is deprecated, see https://docs.github.com/rest/migrations/source-imports#get-commit-authors\"\n }\n ],\n getImportStatus: [\n \"GET /repos/{owner}/{repo}/import\",\n {},\n {\n deprecated: \"octokit.rest.migrations.getImportStatus() is deprecated, see https://docs.github.com/rest/migrations/source-imports#get-an-import-status\"\n }\n ],\n getLargeFiles: [\n \"GET /repos/{owner}/{repo}/import/large_files\",\n {},\n {\n deprecated: \"octokit.rest.migrations.getLargeFiles() is deprecated, see https://docs.github.com/rest/migrations/source-imports#get-large-files\"\n }\n ],\n getStatusForAuthenticatedUser: [\"GET /user/migrations/{migration_id}\"],\n getStatusForOrg: [\"GET /orgs/{org}/migrations/{migration_id}\"],\n listForAuthenticatedUser: [\"GET /user/migrations\"],\n listForOrg: [\"GET /orgs/{org}/migrations\"],\n listReposForAuthenticatedUser: [\n \"GET /user/migrations/{migration_id}/repositories\"\n ],\n listReposForOrg: [\"GET /orgs/{org}/migrations/{migration_id}/repositories\"],\n listReposForUser: [\n \"GET /user/migrations/{migration_id}/repositories\",\n {},\n { renamed: [\"migrations\", \"listReposForAuthenticatedUser\"] }\n ],\n mapCommitAuthor: [\n \"PATCH /repos/{owner}/{repo}/import/authors/{author_id}\",\n {},\n {\n deprecated: \"octokit.rest.migrations.mapCommitAuthor() is deprecated, see https://docs.github.com/rest/migrations/source-imports#map-a-commit-author\"\n }\n ],\n setLfsPreference: [\n \"PATCH /repos/{owner}/{repo}/import/lfs\",\n {},\n {\n deprecated: \"octokit.rest.migrations.setLfsPreference() is deprecated, see https://docs.github.com/rest/migrations/source-imports#update-git-lfs-preference\"\n }\n ],\n startForAuthenticatedUser: [\"POST /user/migrations\"],\n startForOrg: [\"POST /orgs/{org}/migrations\"],\n startImport: [\n \"PUT /repos/{owner}/{repo}/import\",\n {},\n {\n deprecated: \"octokit.rest.migrations.startImport() is deprecated, see https://docs.github.com/rest/migrations/source-imports#start-an-import\"\n }\n ],\n unlockRepoForAuthenticatedUser: [\n \"DELETE /user/migrations/{migration_id}/repos/{repo_name}/lock\"\n ],\n unlockRepoForOrg: [\n \"DELETE /orgs/{org}/migrations/{migration_id}/repos/{repo_name}/lock\"\n ],\n updateImport: [\n \"PATCH /repos/{owner}/{repo}/import\",\n {},\n {\n deprecated: \"octokit.rest.migrations.updateImport() is deprecated, see https://docs.github.com/rest/migrations/source-imports#update-an-import\"\n }\n ]\n },\n oidc: {\n getOidcCustomSubTemplateForOrg: [\n \"GET /orgs/{org}/actions/oidc/customization/sub\"\n ],\n updateOidcCustomSubTemplateForOrg: [\n \"PUT /orgs/{org}/actions/oidc/customization/sub\"\n ]\n },\n orgs: {\n addSecurityManagerTeam: [\n \"PUT /orgs/{org}/security-managers/teams/{team_slug}\"\n ],\n assignTeamToOrgRole: [\n \"PUT /orgs/{org}/organization-roles/teams/{team_slug}/{role_id}\"\n ],\n assignUserToOrgRole: [\n \"PUT /orgs/{org}/organization-roles/users/{username}/{role_id}\"\n ],\n blockUser: [\"PUT /orgs/{org}/blocks/{username}\"],\n cancelInvitation: [\"DELETE /orgs/{org}/invitations/{invitation_id}\"],\n checkBlockedUser: [\"GET /orgs/{org}/blocks/{username}\"],\n checkMembershipForUser: [\"GET /orgs/{org}/members/{username}\"],\n checkPublicMembershipForUser: [\"GET /orgs/{org}/public_members/{username}\"],\n convertMemberToOutsideCollaborator: [\n \"PUT /orgs/{org}/outside_collaborators/{username}\"\n ],\n createCustomOrganizationRole: [\"POST /orgs/{org}/organization-roles\"],\n createInvitation: [\"POST /orgs/{org}/invitations\"],\n createOrUpdateCustomProperties: [\"PATCH /orgs/{org}/properties/schema\"],\n createOrUpdateCustomPropertiesValuesForRepos: [\n \"PATCH /orgs/{org}/properties/values\"\n ],\n createOrUpdateCustomProperty: [\n \"PUT /orgs/{org}/properties/schema/{custom_property_name}\"\n ],\n createWebhook: [\"POST /orgs/{org}/hooks\"],\n delete: [\"DELETE /orgs/{org}\"],\n deleteCustomOrganizationRole: [\n \"DELETE /orgs/{org}/organization-roles/{role_id}\"\n ],\n deleteWebhook: [\"DELETE /orgs/{org}/hooks/{hook_id}\"],\n enableOrDisableSecurityProductOnAllOrgRepos: [\n \"POST /orgs/{org}/{security_product}/{enablement}\"\n ],\n get: [\"GET /orgs/{org}\"],\n getAllCustomProperties: [\"GET /orgs/{org}/properties/schema\"],\n getCustomProperty: [\n \"GET /orgs/{org}/properties/schema/{custom_property_name}\"\n ],\n getMembershipForAuthenticatedUser: [\"GET /user/memberships/orgs/{org}\"],\n getMembershipForUser: [\"GET /orgs/{org}/memberships/{username}\"],\n getOrgRole: [\"GET /orgs/{org}/organization-roles/{role_id}\"],\n getWebhook: [\"GET /orgs/{org}/hooks/{hook_id}\"],\n getWebhookConfigForOrg: [\"GET /orgs/{org}/hooks/{hook_id}/config\"],\n getWebhookDelivery: [\n \"GET /orgs/{org}/hooks/{hook_id}/deliveries/{delivery_id}\"\n ],\n list: [\"GET /organizations\"],\n listAppInstallations: [\"GET /orgs/{org}/installations\"],\n listBlockedUsers: [\"GET /orgs/{org}/blocks\"],\n listCustomPropertiesValuesForRepos: [\"GET /orgs/{org}/properties/values\"],\n listFailedInvitations: [\"GET /orgs/{org}/failed_invitations\"],\n listForAuthenticatedUser: [\"GET /user/orgs\"],\n listForUser: [\"GET /users/{username}/orgs\"],\n listInvitationTeams: [\"GET /orgs/{org}/invitations/{invitation_id}/teams\"],\n listMembers: [\"GET /orgs/{org}/members\"],\n listMembershipsForAuthenticatedUser: [\"GET /user/memberships/orgs\"],\n listOrgRoleTeams: [\"GET /orgs/{org}/organization-roles/{role_id}/teams\"],\n listOrgRoleUsers: [\"GET /orgs/{org}/organization-roles/{role_id}/users\"],\n listOrgRoles: [\"GET /orgs/{org}/organization-roles\"],\n listOrganizationFineGrainedPermissions: [\n \"GET /orgs/{org}/organization-fine-grained-permissions\"\n ],\n listOutsideCollaborators: [\"GET /orgs/{org}/outside_collaborators\"],\n listPatGrantRepositories: [\n \"GET /orgs/{org}/personal-access-tokens/{pat_id}/repositories\"\n ],\n listPatGrantRequestRepositories: [\n \"GET /orgs/{org}/personal-access-token-requests/{pat_request_id}/repositories\"\n ],\n listPatGrantRequests: [\"GET /orgs/{org}/personal-access-token-requests\"],\n listPatGrants: [\"GET /orgs/{org}/personal-access-tokens\"],\n listPendingInvitations: [\"GET /orgs/{org}/invitations\"],\n listPublicMembers: [\"GET /orgs/{org}/public_members\"],\n listSecurityManagerTeams: [\"GET /orgs/{org}/security-managers\"],\n listWebhookDeliveries: [\"GET /orgs/{org}/hooks/{hook_id}/deliveries\"],\n listWebhooks: [\"GET /orgs/{org}/hooks\"],\n patchCustomOrganizationRole: [\n \"PATCH /orgs/{org}/organization-roles/{role_id}\"\n ],\n pingWebhook: [\"POST /orgs/{org}/hooks/{hook_id}/pings\"],\n redeliverWebhookDelivery: [\n \"POST /orgs/{org}/hooks/{hook_id}/deliveries/{delivery_id}/attempts\"\n ],\n removeCustomProperty: [\n \"DELETE /orgs/{org}/properties/schema/{custom_property_name}\"\n ],\n removeMember: [\"DELETE /orgs/{org}/members/{username}\"],\n removeMembershipForUser: [\"DELETE /orgs/{org}/memberships/{username}\"],\n removeOutsideCollaborator: [\n \"DELETE /orgs/{org}/outside_collaborators/{username}\"\n ],\n removePublicMembershipForAuthenticatedUser: [\n \"DELETE /orgs/{org}/public_members/{username}\"\n ],\n removeSecurityManagerTeam: [\n \"DELETE /orgs/{org}/security-managers/teams/{team_slug}\"\n ],\n reviewPatGrantRequest: [\n \"POST /orgs/{org}/personal-access-token-requests/{pat_request_id}\"\n ],\n reviewPatGrantRequestsInBulk: [\n \"POST /orgs/{org}/personal-access-token-requests\"\n ],\n revokeAllOrgRolesTeam: [\n \"DELETE /orgs/{org}/organization-roles/teams/{team_slug}\"\n ],\n revokeAllOrgRolesUser: [\n \"DELETE /orgs/{org}/organization-roles/users/{username}\"\n ],\n revokeOrgRoleTeam: [\n \"DELETE /orgs/{org}/organization-roles/teams/{team_slug}/{role_id}\"\n ],\n revokeOrgRoleUser: [\n \"DELETE /orgs/{org}/organization-roles/users/{username}/{role_id}\"\n ],\n setMembershipForUser: [\"PUT /orgs/{org}/memberships/{username}\"],\n setPublicMembershipForAuthenticatedUser: [\n \"PUT /orgs/{org}/public_members/{username}\"\n ],\n unblockUser: [\"DELETE /orgs/{org}/blocks/{username}\"],\n update: [\"PATCH /orgs/{org}\"],\n updateMembershipForAuthenticatedUser: [\n \"PATCH /user/memberships/orgs/{org}\"\n ],\n updatePatAccess: [\"POST /orgs/{org}/personal-access-tokens/{pat_id}\"],\n updatePatAccesses: [\"POST /orgs/{org}/personal-access-tokens\"],\n updateWebhook: [\"PATCH /orgs/{org}/hooks/{hook_id}\"],\n updateWebhookConfigForOrg: [\"PATCH /orgs/{org}/hooks/{hook_id}/config\"]\n },\n packages: {\n deletePackageForAuthenticatedUser: [\n \"DELETE /user/packages/{package_type}/{package_name}\"\n ],\n deletePackageForOrg: [\n \"DELETE /orgs/{org}/packages/{package_type}/{package_name}\"\n ],\n deletePackageForUser: [\n \"DELETE /users/{username}/packages/{package_type}/{package_name}\"\n ],\n deletePackageVersionForAuthenticatedUser: [\n \"DELETE /user/packages/{package_type}/{package_name}/versions/{package_version_id}\"\n ],\n deletePackageVersionForOrg: [\n \"DELETE /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}\"\n ],\n deletePackageVersionForUser: [\n \"DELETE /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}\"\n ],\n getAllPackageVersionsForAPackageOwnedByAnOrg: [\n \"GET /orgs/{org}/packages/{package_type}/{package_name}/versions\",\n {},\n { renamed: [\"packages\", \"getAllPackageVersionsForPackageOwnedByOrg\"] }\n ],\n getAllPackageVersionsForAPackageOwnedByTheAuthenticatedUser: [\n \"GET /user/packages/{package_type}/{package_name}/versions\",\n {},\n {\n renamed: [\n \"packages\",\n \"getAllPackageVersionsForPackageOwnedByAuthenticatedUser\"\n ]\n }\n ],\n getAllPackageVersionsForPackageOwnedByAuthenticatedUser: [\n \"GET /user/packages/{package_type}/{package_name}/versions\"\n ],\n getAllPackageVersionsForPackageOwnedByOrg: [\n \"GET /orgs/{org}/packages/{package_type}/{package_name}/versions\"\n ],\n getAllPackageVersionsForPackageOwnedByUser: [\n \"GET /users/{username}/packages/{package_type}/{package_name}/versions\"\n ],\n getPackageForAuthenticatedUser: [\n \"GET /user/packages/{package_type}/{package_name}\"\n ],\n getPackageForOrganization: [\n \"GET /orgs/{org}/packages/{package_type}/{package_name}\"\n ],\n getPackageForUser: [\n \"GET /users/{username}/packages/{package_type}/{package_name}\"\n ],\n getPackageVersionForAuthenticatedUser: [\n \"GET /user/packages/{package_type}/{package_name}/versions/{package_version_id}\"\n ],\n getPackageVersionForOrganization: [\n \"GET /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}\"\n ],\n getPackageVersionForUser: [\n \"GET /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}\"\n ],\n listDockerMigrationConflictingPackagesForAuthenticatedUser: [\n \"GET /user/docker/conflicts\"\n ],\n listDockerMigrationConflictingPackagesForOrganization: [\n \"GET /orgs/{org}/docker/conflicts\"\n ],\n listDockerMigrationConflictingPackagesForUser: [\n \"GET /users/{username}/docker/conflicts\"\n ],\n listPackagesForAuthenticatedUser: [\"GET /user/packages\"],\n listPackagesForOrganization: [\"GET /orgs/{org}/packages\"],\n listPackagesForUser: [\"GET /users/{username}/packages\"],\n restorePackageForAuthenticatedUser: [\n \"POST /user/packages/{package_type}/{package_name}/restore{?token}\"\n ],\n restorePackageForOrg: [\n \"POST /orgs/{org}/packages/{package_type}/{package_name}/restore{?token}\"\n ],\n restorePackageForUser: [\n \"POST /users/{username}/packages/{package_type}/{package_name}/restore{?token}\"\n ],\n restorePackageVersionForAuthenticatedUser: [\n \"POST /user/packages/{package_type}/{package_name}/versions/{package_version_id}/restore\"\n ],\n restorePackageVersionForOrg: [\n \"POST /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}/restore\"\n ],\n restorePackageVersionForUser: [\n \"POST /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}/restore\"\n ]\n },\n projects: {\n addCollaborator: [\"PUT /projects/{project_id}/collaborators/{username}\"],\n createCard: [\"POST /projects/columns/{column_id}/cards\"],\n createColumn: [\"POST /projects/{project_id}/columns\"],\n createForAuthenticatedUser: [\"POST /user/projects\"],\n createForOrg: [\"POST /orgs/{org}/projects\"],\n createForRepo: [\"POST /repos/{owner}/{repo}/projects\"],\n delete: [\"DELETE /projects/{project_id}\"],\n deleteCard: [\"DELETE /projects/columns/cards/{card_id}\"],\n deleteColumn: [\"DELETE /projects/columns/{column_id}\"],\n get: [\"GET /projects/{project_id}\"],\n getCard: [\"GET /projects/columns/cards/{card_id}\"],\n getColumn: [\"GET /projects/columns/{column_id}\"],\n getPermissionForUser: [\n \"GET /projects/{project_id}/collaborators/{username}/permission\"\n ],\n listCards: [\"GET /projects/columns/{column_id}/cards\"],\n listCollaborators: [\"GET /projects/{project_id}/collaborators\"],\n listColumns: [\"GET /projects/{project_id}/columns\"],\n listForOrg: [\"GET /orgs/{org}/projects\"],\n listForRepo: [\"GET /repos/{owner}/{repo}/projects\"],\n listForUser: [\"GET /users/{username}/projects\"],\n moveCard: [\"POST /projects/columns/cards/{card_id}/moves\"],\n moveColumn: [\"POST /projects/columns/{column_id}/moves\"],\n removeCollaborator: [\n \"DELETE /projects/{project_id}/collaborators/{username}\"\n ],\n update: [\"PATCH /projects/{project_id}\"],\n updateCard: [\"PATCH /projects/columns/cards/{card_id}\"],\n updateColumn: [\"PATCH /projects/columns/{column_id}\"]\n },\n pulls: {\n checkIfMerged: [\"GET /repos/{owner}/{repo}/pulls/{pull_number}/merge\"],\n create: [\"POST /repos/{owner}/{repo}/pulls\"],\n createReplyForReviewComment: [\n \"POST /repos/{owner}/{repo}/pulls/{pull_number}/comments/{comment_id}/replies\"\n ],\n createReview: [\"POST /repos/{owner}/{repo}/pulls/{pull_number}/reviews\"],\n createReviewComment: [\n \"POST /repos/{owner}/{repo}/pulls/{pull_number}/comments\"\n ],\n deletePendingReview: [\n \"DELETE /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}\"\n ],\n deleteReviewComment: [\n \"DELETE /repos/{owner}/{repo}/pulls/comments/{comment_id}\"\n ],\n dismissReview: [\n \"PUT /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/dismissals\"\n ],\n get: [\"GET /repos/{owner}/{repo}/pulls/{pull_number}\"],\n getReview: [\n \"GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}\"\n ],\n getReviewComment: [\"GET /repos/{owner}/{repo}/pulls/comments/{comment_id}\"],\n list: [\"GET /repos/{owner}/{repo}/pulls\"],\n listCommentsForReview: [\n \"GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/comments\"\n ],\n listCommits: [\"GET /repos/{owner}/{repo}/pulls/{pull_number}/commits\"],\n listFiles: [\"GET /repos/{owner}/{repo}/pulls/{pull_number}/files\"],\n listRequestedReviewers: [\n \"GET /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers\"\n ],\n listReviewComments: [\n \"GET /repos/{owner}/{repo}/pulls/{pull_number}/comments\"\n ],\n listReviewCommentsForRepo: [\"GET /repos/{owner}/{repo}/pulls/comments\"],\n listReviews: [\"GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews\"],\n merge: [\"PUT /repos/{owner}/{repo}/pulls/{pull_number}/merge\"],\n removeRequestedReviewers: [\n \"DELETE /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers\"\n ],\n requestReviewers: [\n \"POST /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers\"\n ],\n submitReview: [\n \"POST /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/events\"\n ],\n update: [\"PATCH /repos/{owner}/{repo}/pulls/{pull_number}\"],\n updateBranch: [\n \"PUT /repos/{owner}/{repo}/pulls/{pull_number}/update-branch\"\n ],\n updateReview: [\n \"PUT /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}\"\n ],\n updateReviewComment: [\n \"PATCH /repos/{owner}/{repo}/pulls/comments/{comment_id}\"\n ]\n },\n rateLimit: { get: [\"GET /rate_limit\"] },\n reactions: {\n createForCommitComment: [\n \"POST /repos/{owner}/{repo}/comments/{comment_id}/reactions\"\n ],\n createForIssue: [\n \"POST /repos/{owner}/{repo}/issues/{issue_number}/reactions\"\n ],\n createForIssueComment: [\n \"POST /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions\"\n ],\n createForPullRequestReviewComment: [\n \"POST /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions\"\n ],\n createForRelease: [\n \"POST /repos/{owner}/{repo}/releases/{release_id}/reactions\"\n ],\n createForTeamDiscussionCommentInOrg: [\n \"POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions\"\n ],\n createForTeamDiscussionInOrg: [\n \"POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions\"\n ],\n deleteForCommitComment: [\n \"DELETE /repos/{owner}/{repo}/comments/{comment_id}/reactions/{reaction_id}\"\n ],\n deleteForIssue: [\n \"DELETE /repos/{owner}/{repo}/issues/{issue_number}/reactions/{reaction_id}\"\n ],\n deleteForIssueComment: [\n \"DELETE /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions/{reaction_id}\"\n ],\n deleteForPullRequestComment: [\n \"DELETE /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions/{reaction_id}\"\n ],\n deleteForRelease: [\n \"DELETE /repos/{owner}/{repo}/releases/{release_id}/reactions/{reaction_id}\"\n ],\n deleteForTeamDiscussion: [\n \"DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions/{reaction_id}\"\n ],\n deleteForTeamDiscussionComment: [\n \"DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions/{reaction_id}\"\n ],\n listForCommitComment: [\n \"GET /repos/{owner}/{repo}/comments/{comment_id}/reactions\"\n ],\n listForIssue: [\"GET /repos/{owner}/{repo}/issues/{issue_number}/reactions\"],\n listForIssueComment: [\n \"GET /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions\"\n ],\n listForPullRequestReviewComment: [\n \"GET /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions\"\n ],\n listForRelease: [\n \"GET /repos/{owner}/{repo}/releases/{release_id}/reactions\"\n ],\n listForTeamDiscussionCommentInOrg: [\n \"GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions\"\n ],\n listForTeamDiscussionInOrg: [\n \"GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions\"\n ]\n },\n repos: {\n acceptInvitation: [\n \"PATCH /user/repository_invitations/{invitation_id}\",\n {},\n { renamed: [\"repos\", \"acceptInvitationForAuthenticatedUser\"] }\n ],\n acceptInvitationForAuthenticatedUser: [\n \"PATCH /user/repository_invitations/{invitation_id}\"\n ],\n addAppAccessRestrictions: [\n \"POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps\",\n {},\n { mapToData: \"apps\" }\n ],\n addCollaborator: [\"PUT /repos/{owner}/{repo}/collaborators/{username}\"],\n addStatusCheckContexts: [\n \"POST /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts\",\n {},\n { mapToData: \"contexts\" }\n ],\n addTeamAccessRestrictions: [\n \"POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams\",\n {},\n { mapToData: \"teams\" }\n ],\n addUserAccessRestrictions: [\n \"POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users\",\n {},\n { mapToData: \"users\" }\n ],\n cancelPagesDeployment: [\n \"POST /repos/{owner}/{repo}/pages/deployments/{pages_deployment_id}/cancel\"\n ],\n checkAutomatedSecurityFixes: [\n \"GET /repos/{owner}/{repo}/automated-security-fixes\"\n ],\n checkCollaborator: [\"GET /repos/{owner}/{repo}/collaborators/{username}\"],\n checkVulnerabilityAlerts: [\n \"GET /repos/{owner}/{repo}/vulnerability-alerts\"\n ],\n codeownersErrors: [\"GET /repos/{owner}/{repo}/codeowners/errors\"],\n compareCommits: [\"GET /repos/{owner}/{repo}/compare/{base}...{head}\"],\n compareCommitsWithBasehead: [\n \"GET /repos/{owner}/{repo}/compare/{basehead}\"\n ],\n createAutolink: [\"POST /repos/{owner}/{repo}/autolinks\"],\n createCommitComment: [\n \"POST /repos/{owner}/{repo}/commits/{commit_sha}/comments\"\n ],\n createCommitSignatureProtection: [\n \"POST /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures\"\n ],\n createCommitStatus: [\"POST /repos/{owner}/{repo}/statuses/{sha}\"],\n createDeployKey: [\"POST /repos/{owner}/{repo}/keys\"],\n createDeployment: [\"POST /repos/{owner}/{repo}/deployments\"],\n createDeploymentBranchPolicy: [\n \"POST /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies\"\n ],\n createDeploymentProtectionRule: [\n \"POST /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules\"\n ],\n createDeploymentStatus: [\n \"POST /repos/{owner}/{repo}/deployments/{deployment_id}/statuses\"\n ],\n createDispatchEvent: [\"POST /repos/{owner}/{repo}/dispatches\"],\n createForAuthenticatedUser: [\"POST /user/repos\"],\n createFork: [\"POST /repos/{owner}/{repo}/forks\"],\n createInOrg: [\"POST /orgs/{org}/repos\"],\n createOrUpdateCustomPropertiesValues: [\n \"PATCH /repos/{owner}/{repo}/properties/values\"\n ],\n createOrUpdateEnvironment: [\n \"PUT /repos/{owner}/{repo}/environments/{environment_name}\"\n ],\n createOrUpdateFileContents: [\"PUT /repos/{owner}/{repo}/contents/{path}\"],\n createOrgRuleset: [\"POST /orgs/{org}/rulesets\"],\n createPagesDeployment: [\"POST /repos/{owner}/{repo}/pages/deployments\"],\n createPagesSite: [\"POST /repos/{owner}/{repo}/pages\"],\n createRelease: [\"POST /repos/{owner}/{repo}/releases\"],\n createRepoRuleset: [\"POST /repos/{owner}/{repo}/rulesets\"],\n createTagProtection: [\"POST /repos/{owner}/{repo}/tags/protection\"],\n createUsingTemplate: [\n \"POST /repos/{template_owner}/{template_repo}/generate\"\n ],\n createWebhook: [\"POST /repos/{owner}/{repo}/hooks\"],\n declineInvitation: [\n \"DELETE /user/repository_invitations/{invitation_id}\",\n {},\n { renamed: [\"repos\", \"declineInvitationForAuthenticatedUser\"] }\n ],\n declineInvitationForAuthenticatedUser: [\n \"DELETE /user/repository_invitations/{invitation_id}\"\n ],\n delete: [\"DELETE /repos/{owner}/{repo}\"],\n deleteAccessRestrictions: [\n \"DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions\"\n ],\n deleteAdminBranchProtection: [\n \"DELETE /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins\"\n ],\n deleteAnEnvironment: [\n \"DELETE /repos/{owner}/{repo}/environments/{environment_name}\"\n ],\n deleteAutolink: [\"DELETE /repos/{owner}/{repo}/autolinks/{autolink_id}\"],\n deleteBranchProtection: [\n \"DELETE /repos/{owner}/{repo}/branches/{branch}/protection\"\n ],\n deleteCommitComment: [\"DELETE /repos/{owner}/{repo}/comments/{comment_id}\"],\n deleteCommitSignatureProtection: [\n \"DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures\"\n ],\n deleteDeployKey: [\"DELETE /repos/{owner}/{repo}/keys/{key_id}\"],\n deleteDeployment: [\n \"DELETE /repos/{owner}/{repo}/deployments/{deployment_id}\"\n ],\n deleteDeploymentBranchPolicy: [\n \"DELETE /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies/{branch_policy_id}\"\n ],\n deleteFile: [\"DELETE /repos/{owner}/{repo}/contents/{path}\"],\n deleteInvitation: [\n \"DELETE /repos/{owner}/{repo}/invitations/{invitation_id}\"\n ],\n deleteOrgRuleset: [\"DELETE /orgs/{org}/rulesets/{ruleset_id}\"],\n deletePagesSite: [\"DELETE /repos/{owner}/{repo}/pages\"],\n deletePullRequestReviewProtection: [\n \"DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews\"\n ],\n deleteRelease: [\"DELETE /repos/{owner}/{repo}/releases/{release_id}\"],\n deleteReleaseAsset: [\n \"DELETE /repos/{owner}/{repo}/releases/assets/{asset_id}\"\n ],\n deleteRepoRuleset: [\"DELETE /repos/{owner}/{repo}/rulesets/{ruleset_id}\"],\n deleteTagProtection: [\n \"DELETE /repos/{owner}/{repo}/tags/protection/{tag_protection_id}\"\n ],\n deleteWebhook: [\"DELETE /repos/{owner}/{repo}/hooks/{hook_id}\"],\n disableAutomatedSecurityFixes: [\n \"DELETE /repos/{owner}/{repo}/automated-security-fixes\"\n ],\n disableDeploymentProtectionRule: [\n \"DELETE /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/{protection_rule_id}\"\n ],\n disablePrivateVulnerabilityReporting: [\n \"DELETE /repos/{owner}/{repo}/private-vulnerability-reporting\"\n ],\n disableVulnerabilityAlerts: [\n \"DELETE /repos/{owner}/{repo}/vulnerability-alerts\"\n ],\n downloadArchive: [\n \"GET /repos/{owner}/{repo}/zipball/{ref}\",\n {},\n { renamed: [\"repos\", \"downloadZipballArchive\"] }\n ],\n downloadTarballArchive: [\"GET /repos/{owner}/{repo}/tarball/{ref}\"],\n downloadZipballArchive: [\"GET /repos/{owner}/{repo}/zipball/{ref}\"],\n enableAutomatedSecurityFixes: [\n \"PUT /repos/{owner}/{repo}/automated-security-fixes\"\n ],\n enablePrivateVulnerabilityReporting: [\n \"PUT /repos/{owner}/{repo}/private-vulnerability-reporting\"\n ],\n enableVulnerabilityAlerts: [\n \"PUT /repos/{owner}/{repo}/vulnerability-alerts\"\n ],\n generateReleaseNotes: [\n \"POST /repos/{owner}/{repo}/releases/generate-notes\"\n ],\n get: [\"GET /repos/{owner}/{repo}\"],\n getAccessRestrictions: [\n \"GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions\"\n ],\n getAdminBranchProtection: [\n \"GET /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins\"\n ],\n getAllDeploymentProtectionRules: [\n \"GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules\"\n ],\n getAllEnvironments: [\"GET /repos/{owner}/{repo}/environments\"],\n getAllStatusCheckContexts: [\n \"GET /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts\"\n ],\n getAllTopics: [\"GET /repos/{owner}/{repo}/topics\"],\n getAppsWithAccessToProtectedBranch: [\n \"GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps\"\n ],\n getAutolink: [\"GET /repos/{owner}/{repo}/autolinks/{autolink_id}\"],\n getBranch: [\"GET /repos/{owner}/{repo}/branches/{branch}\"],\n getBranchProtection: [\n \"GET /repos/{owner}/{repo}/branches/{branch}/protection\"\n ],\n getBranchRules: [\"GET /repos/{owner}/{repo}/rules/branches/{branch}\"],\n getClones: [\"GET /repos/{owner}/{repo}/traffic/clones\"],\n getCodeFrequencyStats: [\"GET /repos/{owner}/{repo}/stats/code_frequency\"],\n getCollaboratorPermissionLevel: [\n \"GET /repos/{owner}/{repo}/collaborators/{username}/permission\"\n ],\n getCombinedStatusForRef: [\"GET /repos/{owner}/{repo}/commits/{ref}/status\"],\n getCommit: [\"GET /repos/{owner}/{repo}/commits/{ref}\"],\n getCommitActivityStats: [\"GET /repos/{owner}/{repo}/stats/commit_activity\"],\n getCommitComment: [\"GET /repos/{owner}/{repo}/comments/{comment_id}\"],\n getCommitSignatureProtection: [\n \"GET /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures\"\n ],\n getCommunityProfileMetrics: [\"GET /repos/{owner}/{repo}/community/profile\"],\n getContent: [\"GET /repos/{owner}/{repo}/contents/{path}\"],\n getContributorsStats: [\"GET /repos/{owner}/{repo}/stats/contributors\"],\n getCustomDeploymentProtectionRule: [\n \"GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/{protection_rule_id}\"\n ],\n getCustomPropertiesValues: [\"GET /repos/{owner}/{repo}/properties/values\"],\n getDeployKey: [\"GET /repos/{owner}/{repo}/keys/{key_id}\"],\n getDeployment: [\"GET /repos/{owner}/{repo}/deployments/{deployment_id}\"],\n getDeploymentBranchPolicy: [\n \"GET /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies/{branch_policy_id}\"\n ],\n getDeploymentStatus: [\n \"GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses/{status_id}\"\n ],\n getEnvironment: [\n \"GET /repos/{owner}/{repo}/environments/{environment_name}\"\n ],\n getLatestPagesBuild: [\"GET /repos/{owner}/{repo}/pages/builds/latest\"],\n getLatestRelease: [\"GET /repos/{owner}/{repo}/releases/latest\"],\n getOrgRuleSuite: [\"GET /orgs/{org}/rulesets/rule-suites/{rule_suite_id}\"],\n getOrgRuleSuites: [\"GET /orgs/{org}/rulesets/rule-suites\"],\n getOrgRuleset: [\"GET /orgs/{org}/rulesets/{ruleset_id}\"],\n getOrgRulesets: [\"GET /orgs/{org}/rulesets\"],\n getPages: [\"GET /repos/{owner}/{repo}/pages\"],\n getPagesBuild: [\"GET /repos/{owner}/{repo}/pages/builds/{build_id}\"],\n getPagesDeployment: [\n \"GET /repos/{owner}/{repo}/pages/deployments/{pages_deployment_id}\"\n ],\n getPagesHealthCheck: [\"GET /repos/{owner}/{repo}/pages/health\"],\n getParticipationStats: [\"GET /repos/{owner}/{repo}/stats/participation\"],\n getPullRequestReviewProtection: [\n \"GET /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews\"\n ],\n getPunchCardStats: [\"GET /repos/{owner}/{repo}/stats/punch_card\"],\n getReadme: [\"GET /repos/{owner}/{repo}/readme\"],\n getReadmeInDirectory: [\"GET /repos/{owner}/{repo}/readme/{dir}\"],\n getRelease: [\"GET /repos/{owner}/{repo}/releases/{release_id}\"],\n getReleaseAsset: [\"GET /repos/{owner}/{repo}/releases/assets/{asset_id}\"],\n getReleaseByTag: [\"GET /repos/{owner}/{repo}/releases/tags/{tag}\"],\n getRepoRuleSuite: [\n \"GET /repos/{owner}/{repo}/rulesets/rule-suites/{rule_suite_id}\"\n ],\n getRepoRuleSuites: [\"GET /repos/{owner}/{repo}/rulesets/rule-suites\"],\n getRepoRuleset: [\"GET /repos/{owner}/{repo}/rulesets/{ruleset_id}\"],\n getRepoRulesets: [\"GET /repos/{owner}/{repo}/rulesets\"],\n getStatusChecksProtection: [\n \"GET /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks\"\n ],\n getTeamsWithAccessToProtectedBranch: [\n \"GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams\"\n ],\n getTopPaths: [\"GET /repos/{owner}/{repo}/traffic/popular/paths\"],\n getTopReferrers: [\"GET /repos/{owner}/{repo}/traffic/popular/referrers\"],\n getUsersWithAccessToProtectedBranch: [\n \"GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users\"\n ],\n getViews: [\"GET /repos/{owner}/{repo}/traffic/views\"],\n getWebhook: [\"GET /repos/{owner}/{repo}/hooks/{hook_id}\"],\n getWebhookConfigForRepo: [\n \"GET /repos/{owner}/{repo}/hooks/{hook_id}/config\"\n ],\n getWebhookDelivery: [\n \"GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries/{delivery_id}\"\n ],\n listActivities: [\"GET /repos/{owner}/{repo}/activity\"],\n listAutolinks: [\"GET /repos/{owner}/{repo}/autolinks\"],\n listBranches: [\"GET /repos/{owner}/{repo}/branches\"],\n listBranchesForHeadCommit: [\n \"GET /repos/{owner}/{repo}/commits/{commit_sha}/branches-where-head\"\n ],\n listCollaborators: [\"GET /repos/{owner}/{repo}/collaborators\"],\n listCommentsForCommit: [\n \"GET /repos/{owner}/{repo}/commits/{commit_sha}/comments\"\n ],\n listCommitCommentsForRepo: [\"GET /repos/{owner}/{repo}/comments\"],\n listCommitStatusesForRef: [\n \"GET /repos/{owner}/{repo}/commits/{ref}/statuses\"\n ],\n listCommits: [\"GET /repos/{owner}/{repo}/commits\"],\n listContributors: [\"GET /repos/{owner}/{repo}/contributors\"],\n listCustomDeploymentRuleIntegrations: [\n \"GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/apps\"\n ],\n listDeployKeys: [\"GET /repos/{owner}/{repo}/keys\"],\n listDeploymentBranchPolicies: [\n \"GET /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies\"\n ],\n listDeploymentStatuses: [\n \"GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses\"\n ],\n listDeployments: [\"GET /repos/{owner}/{repo}/deployments\"],\n listForAuthenticatedUser: [\"GET /user/repos\"],\n listForOrg: [\"GET /orgs/{org}/repos\"],\n listForUser: [\"GET /users/{username}/repos\"],\n listForks: [\"GET /repos/{owner}/{repo}/forks\"],\n listInvitations: [\"GET /repos/{owner}/{repo}/invitations\"],\n listInvitationsForAuthenticatedUser: [\"GET /user/repository_invitations\"],\n listLanguages: [\"GET /repos/{owner}/{repo}/languages\"],\n listPagesBuilds: [\"GET /repos/{owner}/{repo}/pages/builds\"],\n listPublic: [\"GET /repositories\"],\n listPullRequestsAssociatedWithCommit: [\n \"GET /repos/{owner}/{repo}/commits/{commit_sha}/pulls\"\n ],\n listReleaseAssets: [\n \"GET /repos/{owner}/{repo}/releases/{release_id}/assets\"\n ],\n listReleases: [\"GET /repos/{owner}/{repo}/releases\"],\n listTagProtection: [\"GET /repos/{owner}/{repo}/tags/protection\"],\n listTags: [\"GET /repos/{owner}/{repo}/tags\"],\n listTeams: [\"GET /repos/{owner}/{repo}/teams\"],\n listWebhookDeliveries: [\n \"GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries\"\n ],\n listWebhooks: [\"GET /repos/{owner}/{repo}/hooks\"],\n merge: [\"POST /repos/{owner}/{repo}/merges\"],\n mergeUpstream: [\"POST /repos/{owner}/{repo}/merge-upstream\"],\n pingWebhook: [\"POST /repos/{owner}/{repo}/hooks/{hook_id}/pings\"],\n redeliverWebhookDelivery: [\n \"POST /repos/{owner}/{repo}/hooks/{hook_id}/deliveries/{delivery_id}/attempts\"\n ],\n removeAppAccessRestrictions: [\n \"DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps\",\n {},\n { mapToData: \"apps\" }\n ],\n removeCollaborator: [\n \"DELETE /repos/{owner}/{repo}/collaborators/{username}\"\n ],\n removeStatusCheckContexts: [\n \"DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts\",\n {},\n { mapToData: \"contexts\" }\n ],\n removeStatusCheckProtection: [\n \"DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks\"\n ],\n removeTeamAccessRestrictions: [\n \"DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams\",\n {},\n { mapToData: \"teams\" }\n ],\n removeUserAccessRestrictions: [\n \"DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users\",\n {},\n { mapToData: \"users\" }\n ],\n renameBranch: [\"POST /repos/{owner}/{repo}/branches/{branch}/rename\"],\n replaceAllTopics: [\"PUT /repos/{owner}/{repo}/topics\"],\n requestPagesBuild: [\"POST /repos/{owner}/{repo}/pages/builds\"],\n setAdminBranchProtection: [\n \"POST /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins\"\n ],\n setAppAccessRestrictions: [\n \"PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps\",\n {},\n { mapToData: \"apps\" }\n ],\n setStatusCheckContexts: [\n \"PUT /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts\",\n {},\n { mapToData: \"contexts\" }\n ],\n setTeamAccessRestrictions: [\n \"PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams\",\n {},\n { mapToData: \"teams\" }\n ],\n setUserAccessRestrictions: [\n \"PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users\",\n {},\n { mapToData: \"users\" }\n ],\n testPushWebhook: [\"POST /repos/{owner}/{repo}/hooks/{hook_id}/tests\"],\n transfer: [\"POST /repos/{owner}/{repo}/transfer\"],\n update: [\"PATCH /repos/{owner}/{repo}\"],\n updateBranchProtection: [\n \"PUT /repos/{owner}/{repo}/branches/{branch}/protection\"\n ],\n updateCommitComment: [\"PATCH /repos/{owner}/{repo}/comments/{comment_id}\"],\n updateDeploymentBranchPolicy: [\n \"PUT /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies/{branch_policy_id}\"\n ],\n updateInformationAboutPagesSite: [\"PUT /repos/{owner}/{repo}/pages\"],\n updateInvitation: [\n \"PATCH /repos/{owner}/{repo}/invitations/{invitation_id}\"\n ],\n updateOrgRuleset: [\"PUT /orgs/{org}/rulesets/{ruleset_id}\"],\n updatePullRequestReviewProtection: [\n \"PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews\"\n ],\n updateRelease: [\"PATCH /repos/{owner}/{repo}/releases/{release_id}\"],\n updateReleaseAsset: [\n \"PATCH /repos/{owner}/{repo}/releases/assets/{asset_id}\"\n ],\n updateRepoRuleset: [\"PUT /repos/{owner}/{repo}/rulesets/{ruleset_id}\"],\n updateStatusCheckPotection: [\n \"PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks\",\n {},\n { renamed: [\"repos\", \"updateStatusCheckProtection\"] }\n ],\n updateStatusCheckProtection: [\n \"PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks\"\n ],\n updateWebhook: [\"PATCH /repos/{owner}/{repo}/hooks/{hook_id}\"],\n updateWebhookConfigForRepo: [\n \"PATCH /repos/{owner}/{repo}/hooks/{hook_id}/config\"\n ],\n uploadReleaseAsset: [\n \"POST /repos/{owner}/{repo}/releases/{release_id}/assets{?name,label}\",\n { baseUrl: \"https://uploads.github.com\" }\n ]\n },\n search: {\n code: [\"GET /search/code\"],\n commits: [\"GET /search/commits\"],\n issuesAndPullRequests: [\"GET /search/issues\"],\n labels: [\"GET /search/labels\"],\n repos: [\"GET /search/repositories\"],\n topics: [\"GET /search/topics\"],\n users: [\"GET /search/users\"]\n },\n secretScanning: {\n getAlert: [\n \"GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}\"\n ],\n listAlertsForEnterprise: [\n \"GET /enterprises/{enterprise}/secret-scanning/alerts\"\n ],\n listAlertsForOrg: [\"GET /orgs/{org}/secret-scanning/alerts\"],\n listAlertsForRepo: [\"GET /repos/{owner}/{repo}/secret-scanning/alerts\"],\n listLocationsForAlert: [\n \"GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}/locations\"\n ],\n updateAlert: [\n \"PATCH /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}\"\n ]\n },\n securityAdvisories: {\n createFork: [\n \"POST /repos/{owner}/{repo}/security-advisories/{ghsa_id}/forks\"\n ],\n createPrivateVulnerabilityReport: [\n \"POST /repos/{owner}/{repo}/security-advisories/reports\"\n ],\n createRepositoryAdvisory: [\n \"POST /repos/{owner}/{repo}/security-advisories\"\n ],\n createRepositoryAdvisoryCveRequest: [\n \"POST /repos/{owner}/{repo}/security-advisories/{ghsa_id}/cve\"\n ],\n getGlobalAdvisory: [\"GET /advisories/{ghsa_id}\"],\n getRepositoryAdvisory: [\n \"GET /repos/{owner}/{repo}/security-advisories/{ghsa_id}\"\n ],\n listGlobalAdvisories: [\"GET /advisories\"],\n listOrgRepositoryAdvisories: [\"GET /orgs/{org}/security-advisories\"],\n listRepositoryAdvisories: [\"GET /repos/{owner}/{repo}/security-advisories\"],\n updateRepositoryAdvisory: [\n \"PATCH /repos/{owner}/{repo}/security-advisories/{ghsa_id}\"\n ]\n },\n teams: {\n addOrUpdateMembershipForUserInOrg: [\n \"PUT /orgs/{org}/teams/{team_slug}/memberships/{username}\"\n ],\n addOrUpdateProjectPermissionsInOrg: [\n \"PUT /orgs/{org}/teams/{team_slug}/projects/{project_id}\"\n ],\n addOrUpdateRepoPermissionsInOrg: [\n \"PUT /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}\"\n ],\n checkPermissionsForProjectInOrg: [\n \"GET /orgs/{org}/teams/{team_slug}/projects/{project_id}\"\n ],\n checkPermissionsForRepoInOrg: [\n \"GET /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}\"\n ],\n create: [\"POST /orgs/{org}/teams\"],\n createDiscussionCommentInOrg: [\n \"POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments\"\n ],\n createDiscussionInOrg: [\"POST /orgs/{org}/teams/{team_slug}/discussions\"],\n deleteDiscussionCommentInOrg: [\n \"DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}\"\n ],\n deleteDiscussionInOrg: [\n \"DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}\"\n ],\n deleteInOrg: [\"DELETE /orgs/{org}/teams/{team_slug}\"],\n getByName: [\"GET /orgs/{org}/teams/{team_slug}\"],\n getDiscussionCommentInOrg: [\n \"GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}\"\n ],\n getDiscussionInOrg: [\n \"GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}\"\n ],\n getMembershipForUserInOrg: [\n \"GET /orgs/{org}/teams/{team_slug}/memberships/{username}\"\n ],\n list: [\"GET /orgs/{org}/teams\"],\n listChildInOrg: [\"GET /orgs/{org}/teams/{team_slug}/teams\"],\n listDiscussionCommentsInOrg: [\n \"GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments\"\n ],\n listDiscussionsInOrg: [\"GET /orgs/{org}/teams/{team_slug}/discussions\"],\n listForAuthenticatedUser: [\"GET /user/teams\"],\n listMembersInOrg: [\"GET /orgs/{org}/teams/{team_slug}/members\"],\n listPendingInvitationsInOrg: [\n \"GET /orgs/{org}/teams/{team_slug}/invitations\"\n ],\n listProjectsInOrg: [\"GET /orgs/{org}/teams/{team_slug}/projects\"],\n listReposInOrg: [\"GET /orgs/{org}/teams/{team_slug}/repos\"],\n removeMembershipForUserInOrg: [\n \"DELETE /orgs/{org}/teams/{team_slug}/memberships/{username}\"\n ],\n removeProjectInOrg: [\n \"DELETE /orgs/{org}/teams/{team_slug}/projects/{project_id}\"\n ],\n removeRepoInOrg: [\n \"DELETE /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}\"\n ],\n updateDiscussionCommentInOrg: [\n \"PATCH /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}\"\n ],\n updateDiscussionInOrg: [\n \"PATCH /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}\"\n ],\n updateInOrg: [\"PATCH /orgs/{org}/teams/{team_slug}\"]\n },\n users: {\n addEmailForAuthenticated: [\n \"POST /user/emails\",\n {},\n { renamed: [\"users\", \"addEmailForAuthenticatedUser\"] }\n ],\n addEmailForAuthenticatedUser: [\"POST /user/emails\"],\n addSocialAccountForAuthenticatedUser: [\"POST /user/social_accounts\"],\n block: [\"PUT /user/blocks/{username}\"],\n checkBlocked: [\"GET /user/blocks/{username}\"],\n checkFollowingForUser: [\"GET /users/{username}/following/{target_user}\"],\n checkPersonIsFollowedByAuthenticated: [\"GET /user/following/{username}\"],\n createGpgKeyForAuthenticated: [\n \"POST /user/gpg_keys\",\n {},\n { renamed: [\"users\", \"createGpgKeyForAuthenticatedUser\"] }\n ],\n createGpgKeyForAuthenticatedUser: [\"POST /user/gpg_keys\"],\n createPublicSshKeyForAuthenticated: [\n \"POST /user/keys\",\n {},\n { renamed: [\"users\", \"createPublicSshKeyForAuthenticatedUser\"] }\n ],\n createPublicSshKeyForAuthenticatedUser: [\"POST /user/keys\"],\n createSshSigningKeyForAuthenticatedUser: [\"POST /user/ssh_signing_keys\"],\n deleteEmailForAuthenticated: [\n \"DELETE /user/emails\",\n {},\n { renamed: [\"users\", \"deleteEmailForAuthenticatedUser\"] }\n ],\n deleteEmailForAuthenticatedUser: [\"DELETE /user/emails\"],\n deleteGpgKeyForAuthenticated: [\n \"DELETE /user/gpg_keys/{gpg_key_id}\",\n {},\n { renamed: [\"users\", \"deleteGpgKeyForAuthenticatedUser\"] }\n ],\n deleteGpgKeyForAuthenticatedUser: [\"DELETE /user/gpg_keys/{gpg_key_id}\"],\n deletePublicSshKeyForAuthenticated: [\n \"DELETE /user/keys/{key_id}\",\n {},\n { renamed: [\"users\", \"deletePublicSshKeyForAuthenticatedUser\"] }\n ],\n deletePublicSshKeyForAuthenticatedUser: [\"DELETE /user/keys/{key_id}\"],\n deleteSocialAccountForAuthenticatedUser: [\"DELETE /user/social_accounts\"],\n deleteSshSigningKeyForAuthenticatedUser: [\n \"DELETE /user/ssh_signing_keys/{ssh_signing_key_id}\"\n ],\n follow: [\"PUT /user/following/{username}\"],\n getAuthenticated: [\"GET /user\"],\n getByUsername: [\"GET /users/{username}\"],\n getContextForUser: [\"GET /users/{username}/hovercard\"],\n getGpgKeyForAuthenticated: [\n \"GET /user/gpg_keys/{gpg_key_id}\",\n {},\n { renamed: [\"users\", \"getGpgKeyForAuthenticatedUser\"] }\n ],\n getGpgKeyForAuthenticatedUser: [\"GET /user/gpg_keys/{gpg_key_id}\"],\n getPublicSshKeyForAuthenticated: [\n \"GET /user/keys/{key_id}\",\n {},\n { renamed: [\"users\", \"getPublicSshKeyForAuthenticatedUser\"] }\n ],\n getPublicSshKeyForAuthenticatedUser: [\"GET /user/keys/{key_id}\"],\n getSshSigningKeyForAuthenticatedUser: [\n \"GET /user/ssh_signing_keys/{ssh_signing_key_id}\"\n ],\n list: [\"GET /users\"],\n listBlockedByAuthenticated: [\n \"GET /user/blocks\",\n {},\n { renamed: [\"users\", \"listBlockedByAuthenticatedUser\"] }\n ],\n listBlockedByAuthenticatedUser: [\"GET /user/blocks\"],\n listEmailsForAuthenticated: [\n \"GET /user/emails\",\n {},\n { renamed: [\"users\", \"listEmailsForAuthenticatedUser\"] }\n ],\n listEmailsForAuthenticatedUser: [\"GET /user/emails\"],\n listFollowedByAuthenticated: [\n \"GET /user/following\",\n {},\n { renamed: [\"users\", \"listFollowedByAuthenticatedUser\"] }\n ],\n listFollowedByAuthenticatedUser: [\"GET /user/following\"],\n listFollowersForAuthenticatedUser: [\"GET /user/followers\"],\n listFollowersForUser: [\"GET /users/{username}/followers\"],\n listFollowingForUser: [\"GET /users/{username}/following\"],\n listGpgKeysForAuthenticated: [\n \"GET /user/gpg_keys\",\n {},\n { renamed: [\"users\", \"listGpgKeysForAuthenticatedUser\"] }\n ],\n listGpgKeysForAuthenticatedUser: [\"GET /user/gpg_keys\"],\n listGpgKeysForUser: [\"GET /users/{username}/gpg_keys\"],\n listPublicEmailsForAuthenticated: [\n \"GET /user/public_emails\",\n {},\n { renamed: [\"users\", \"listPublicEmailsForAuthenticatedUser\"] }\n ],\n listPublicEmailsForAuthenticatedUser: [\"GET /user/public_emails\"],\n listPublicKeysForUser: [\"GET /users/{username}/keys\"],\n listPublicSshKeysForAuthenticated: [\n \"GET /user/keys\",\n {},\n { renamed: [\"users\", \"listPublicSshKeysForAuthenticatedUser\"] }\n ],\n listPublicSshKeysForAuthenticatedUser: [\"GET /user/keys\"],\n listSocialAccountsForAuthenticatedUser: [\"GET /user/social_accounts\"],\n listSocialAccountsForUser: [\"GET /users/{username}/social_accounts\"],\n listSshSigningKeysForAuthenticatedUser: [\"GET /user/ssh_signing_keys\"],\n listSshSigningKeysForUser: [\"GET /users/{username}/ssh_signing_keys\"],\n setPrimaryEmailVisibilityForAuthenticated: [\n \"PATCH /user/email/visibility\",\n {},\n { renamed: [\"users\", \"setPrimaryEmailVisibilityForAuthenticatedUser\"] }\n ],\n setPrimaryEmailVisibilityForAuthenticatedUser: [\n \"PATCH /user/email/visibility\"\n ],\n unblock: [\"DELETE /user/blocks/{username}\"],\n unfollow: [\"DELETE /user/following/{username}\"],\n updateAuthenticated: [\"PATCH /user\"]\n }\n};\nvar endpoints_default = Endpoints;\n\n// pkg/dist-src/endpoints-to-methods.js\nvar endpointMethodsMap = /* @__PURE__ */ new Map();\nfor (const [scope, endpoints] of Object.entries(endpoints_default)) {\n for (const [methodName, endpoint] of Object.entries(endpoints)) {\n const [route, defaults, decorations] = endpoint;\n const [method, url] = route.split(/ /);\n const endpointDefaults = Object.assign(\n {\n method,\n url\n },\n defaults\n );\n if (!endpointMethodsMap.has(scope)) {\n endpointMethodsMap.set(scope, /* @__PURE__ */ new Map());\n }\n endpointMethodsMap.get(scope).set(methodName, {\n scope,\n methodName,\n endpointDefaults,\n decorations\n });\n }\n}\nvar handler = {\n has({ scope }, methodName) {\n return endpointMethodsMap.get(scope).has(methodName);\n },\n getOwnPropertyDescriptor(target, methodName) {\n return {\n value: this.get(target, methodName),\n // ensures method is in the cache\n configurable: true,\n writable: true,\n enumerable: true\n };\n },\n defineProperty(target, methodName, descriptor) {\n Object.defineProperty(target.cache, methodName, descriptor);\n return true;\n },\n deleteProperty(target, methodName) {\n delete target.cache[methodName];\n return true;\n },\n ownKeys({ scope }) {\n return [...endpointMethodsMap.get(scope).keys()];\n },\n set(target, methodName, value) {\n return target.cache[methodName] = value;\n },\n get({ octokit, scope, cache }, methodName) {\n if (cache[methodName]) {\n return cache[methodName];\n }\n const method = endpointMethodsMap.get(scope).get(methodName);\n if (!method) {\n return void 0;\n }\n const { endpointDefaults, decorations } = method;\n if (decorations) {\n cache[methodName] = decorate(\n octokit,\n scope,\n methodName,\n endpointDefaults,\n decorations\n );\n } else {\n cache[methodName] = octokit.request.defaults(endpointDefaults);\n }\n return cache[methodName];\n }\n};\nfunction endpointsToMethods(octokit) {\n const newMethods = {};\n for (const scope of endpointMethodsMap.keys()) {\n newMethods[scope] = new Proxy({ octokit, scope, cache: {} }, handler);\n }\n return newMethods;\n}\nfunction decorate(octokit, scope, methodName, defaults, decorations) {\n const requestWithDefaults = octokit.request.defaults(defaults);\n function withDecorations(...args) {\n let options = requestWithDefaults.endpoint.merge(...args);\n if (decorations.mapToData) {\n options = Object.assign({}, options, {\n data: options[decorations.mapToData],\n [decorations.mapToData]: void 0\n });\n return requestWithDefaults(options);\n }\n if (decorations.renamed) {\n const [newScope, newMethodName] = decorations.renamed;\n octokit.log.warn(\n `octokit.${scope}.${methodName}() has been renamed to octokit.${newScope}.${newMethodName}()`\n );\n }\n if (decorations.deprecated) {\n octokit.log.warn(decorations.deprecated);\n }\n if (decorations.renamedParameters) {\n const options2 = requestWithDefaults.endpoint.merge(...args);\n for (const [name, alias] of Object.entries(\n decorations.renamedParameters\n )) {\n if (name in options2) {\n octokit.log.warn(\n `\"${name}\" parameter is deprecated for \"octokit.${scope}.${methodName}()\". Use \"${alias}\" instead`\n );\n if (!(alias in options2)) {\n options2[alias] = options2[name];\n }\n delete options2[name];\n }\n }\n return requestWithDefaults(options2);\n }\n return requestWithDefaults(...args);\n }\n return Object.assign(withDecorations, requestWithDefaults);\n}\n\n// pkg/dist-src/index.js\nfunction restEndpointMethods(octokit) {\n const api = endpointsToMethods(octokit);\n return {\n rest: api\n };\n}\nrestEndpointMethods.VERSION = VERSION;\nfunction legacyRestEndpointMethods(octokit) {\n const api = endpointsToMethods(octokit);\n return {\n ...api,\n rest: api\n };\n}\nlegacyRestEndpointMethods.VERSION = VERSION;\n// Annotate the CommonJS export names for ESM import in node:\n0 && (module.exports = {\n legacyRestEndpointMethods,\n restEndpointMethods\n});\n","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PersonalAccessTokenCredentialHandler = exports.BearerCredentialHandler = exports.BasicCredentialHandler = void 0;\nclass BasicCredentialHandler {\n constructor(username, password) {\n this.username = username;\n this.password = password;\n }\n prepareRequest(options) {\n if (!options.headers) {\n throw Error('The request has no headers');\n }\n options.headers['Authorization'] = `Basic ${Buffer.from(`${this.username}:${this.password}`).toString('base64')}`;\n }\n // This handler cannot handle 401\n canHandleAuthentication() {\n return false;\n }\n handleAuthentication() {\n return __awaiter(this, void 0, void 0, function* () {\n throw new Error('not implemented');\n });\n }\n}\nexports.BasicCredentialHandler = BasicCredentialHandler;\nclass BearerCredentialHandler {\n constructor(token) {\n this.token = token;\n }\n // currently implements pre-authorization\n // TODO: support preAuth = false where it hooks on 401\n prepareRequest(options) {\n if (!options.headers) {\n throw Error('The request has no headers');\n }\n options.headers['Authorization'] = `Bearer ${this.token}`;\n }\n // This handler cannot handle 401\n canHandleAuthentication() {\n return false;\n }\n handleAuthentication() {\n return __awaiter(this, void 0, void 0, function* () {\n throw new Error('not implemented');\n });\n }\n}\nexports.BearerCredentialHandler = BearerCredentialHandler;\nclass PersonalAccessTokenCredentialHandler {\n constructor(token) {\n this.token = token;\n }\n // currently implements pre-authorization\n // TODO: support preAuth = false where it hooks on 401\n prepareRequest(options) {\n if (!options.headers) {\n throw Error('The request has no headers');\n }\n options.headers['Authorization'] = `Basic ${Buffer.from(`PAT:${this.token}`).toString('base64')}`;\n }\n // This handler cannot handle 401\n canHandleAuthentication() {\n return false;\n }\n handleAuthentication() {\n return __awaiter(this, void 0, void 0, function* () {\n throw new Error('not implemented');\n });\n }\n}\nexports.PersonalAccessTokenCredentialHandler = PersonalAccessTokenCredentialHandler;\n//# sourceMappingURL=auth.js.map","\"use strict\";\n/* eslint-disable @typescript-eslint/no-explicit-any */\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.HttpClient = exports.isHttps = exports.HttpClientResponse = exports.HttpClientError = exports.getProxyUrl = exports.MediaTypes = exports.Headers = exports.HttpCodes = void 0;\nconst http = __importStar(require(\"http\"));\nconst https = __importStar(require(\"https\"));\nconst pm = __importStar(require(\"./proxy\"));\nconst tunnel = __importStar(require(\"tunnel\"));\nconst undici_1 = require(\"undici\");\nvar HttpCodes;\n(function (HttpCodes) {\n HttpCodes[HttpCodes[\"OK\"] = 200] = \"OK\";\n HttpCodes[HttpCodes[\"MultipleChoices\"] = 300] = \"MultipleChoices\";\n HttpCodes[HttpCodes[\"MovedPermanently\"] = 301] = \"MovedPermanently\";\n HttpCodes[HttpCodes[\"ResourceMoved\"] = 302] = \"ResourceMoved\";\n HttpCodes[HttpCodes[\"SeeOther\"] = 303] = \"SeeOther\";\n HttpCodes[HttpCodes[\"NotModified\"] = 304] = \"NotModified\";\n HttpCodes[HttpCodes[\"UseProxy\"] = 305] = \"UseProxy\";\n HttpCodes[HttpCodes[\"SwitchProxy\"] = 306] = \"SwitchProxy\";\n HttpCodes[HttpCodes[\"TemporaryRedirect\"] = 307] = \"TemporaryRedirect\";\n HttpCodes[HttpCodes[\"PermanentRedirect\"] = 308] = \"PermanentRedirect\";\n HttpCodes[HttpCodes[\"BadRequest\"] = 400] = \"BadRequest\";\n HttpCodes[HttpCodes[\"Unauthorized\"] = 401] = \"Unauthorized\";\n HttpCodes[HttpCodes[\"PaymentRequired\"] = 402] = \"PaymentRequired\";\n HttpCodes[HttpCodes[\"Forbidden\"] = 403] = \"Forbidden\";\n HttpCodes[HttpCodes[\"NotFound\"] = 404] = \"NotFound\";\n HttpCodes[HttpCodes[\"MethodNotAllowed\"] = 405] = \"MethodNotAllowed\";\n HttpCodes[HttpCodes[\"NotAcceptable\"] = 406] = \"NotAcceptable\";\n HttpCodes[HttpCodes[\"ProxyAuthenticationRequired\"] = 407] = \"ProxyAuthenticationRequired\";\n HttpCodes[HttpCodes[\"RequestTimeout\"] = 408] = \"RequestTimeout\";\n HttpCodes[HttpCodes[\"Conflict\"] = 409] = \"Conflict\";\n HttpCodes[HttpCodes[\"Gone\"] = 410] = \"Gone\";\n HttpCodes[HttpCodes[\"TooManyRequests\"] = 429] = \"TooManyRequests\";\n HttpCodes[HttpCodes[\"InternalServerError\"] = 500] = \"InternalServerError\";\n HttpCodes[HttpCodes[\"NotImplemented\"] = 501] = \"NotImplemented\";\n HttpCodes[HttpCodes[\"BadGateway\"] = 502] = \"BadGateway\";\n HttpCodes[HttpCodes[\"ServiceUnavailable\"] = 503] = \"ServiceUnavailable\";\n HttpCodes[HttpCodes[\"GatewayTimeout\"] = 504] = \"GatewayTimeout\";\n})(HttpCodes || (exports.HttpCodes = HttpCodes = {}));\nvar Headers;\n(function (Headers) {\n Headers[\"Accept\"] = \"accept\";\n Headers[\"ContentType\"] = \"content-type\";\n})(Headers || (exports.Headers = Headers = {}));\nvar MediaTypes;\n(function (MediaTypes) {\n MediaTypes[\"ApplicationJson\"] = \"application/json\";\n})(MediaTypes || (exports.MediaTypes = MediaTypes = {}));\n/**\n * Returns the proxy URL, depending upon the supplied url and proxy environment variables.\n * @param serverUrl The server URL where the request will be sent. For example, https://api.github.com\n */\nfunction getProxyUrl(serverUrl) {\n const proxyUrl = pm.getProxyUrl(new URL(serverUrl));\n return proxyUrl ? proxyUrl.href : '';\n}\nexports.getProxyUrl = getProxyUrl;\nconst HttpRedirectCodes = [\n HttpCodes.MovedPermanently,\n HttpCodes.ResourceMoved,\n HttpCodes.SeeOther,\n HttpCodes.TemporaryRedirect,\n HttpCodes.PermanentRedirect\n];\nconst HttpResponseRetryCodes = [\n HttpCodes.BadGateway,\n HttpCodes.ServiceUnavailable,\n HttpCodes.GatewayTimeout\n];\nconst RetryableHttpVerbs = ['OPTIONS', 'GET', 'DELETE', 'HEAD'];\nconst ExponentialBackoffCeiling = 10;\nconst ExponentialBackoffTimeSlice = 5;\nclass HttpClientError extends Error {\n constructor(message, statusCode) {\n super(message);\n this.name = 'HttpClientError';\n this.statusCode = statusCode;\n Object.setPrototypeOf(this, HttpClientError.prototype);\n }\n}\nexports.HttpClientError = HttpClientError;\nclass HttpClientResponse {\n constructor(message) {\n this.message = message;\n }\n readBody() {\n return __awaiter(this, void 0, void 0, function* () {\n return new Promise((resolve) => __awaiter(this, void 0, void 0, function* () {\n let output = Buffer.alloc(0);\n this.message.on('data', (chunk) => {\n output = Buffer.concat([output, chunk]);\n });\n this.message.on('end', () => {\n resolve(output.toString());\n });\n }));\n });\n }\n readBodyBuffer() {\n return __awaiter(this, void 0, void 0, function* () {\n return new Promise((resolve) => __awaiter(this, void 0, void 0, function* () {\n const chunks = [];\n this.message.on('data', (chunk) => {\n chunks.push(chunk);\n });\n this.message.on('end', () => {\n resolve(Buffer.concat(chunks));\n });\n }));\n });\n }\n}\nexports.HttpClientResponse = HttpClientResponse;\nfunction isHttps(requestUrl) {\n const parsedUrl = new URL(requestUrl);\n return parsedUrl.protocol === 'https:';\n}\nexports.isHttps = isHttps;\nclass HttpClient {\n constructor(userAgent, handlers, requestOptions) {\n this._ignoreSslError = false;\n this._allowRedirects = true;\n this._allowRedirectDowngrade = false;\n this._maxRedirects = 50;\n this._allowRetries = false;\n this._maxRetries = 1;\n this._keepAlive = false;\n this._disposed = false;\n this.userAgent = userAgent;\n this.handlers = handlers || [];\n this.requestOptions = requestOptions;\n if (requestOptions) {\n if (requestOptions.ignoreSslError != null) {\n this._ignoreSslError = requestOptions.ignoreSslError;\n }\n this._socketTimeout = requestOptions.socketTimeout;\n if (requestOptions.allowRedirects != null) {\n this._allowRedirects = requestOptions.allowRedirects;\n }\n if (requestOptions.allowRedirectDowngrade != null) {\n this._allowRedirectDowngrade = requestOptions.allowRedirectDowngrade;\n }\n if (requestOptions.maxRedirects != null) {\n this._maxRedirects = Math.max(requestOptions.maxRedirects, 0);\n }\n if (requestOptions.keepAlive != null) {\n this._keepAlive = requestOptions.keepAlive;\n }\n if (requestOptions.allowRetries != null) {\n this._allowRetries = requestOptions.allowRetries;\n }\n if (requestOptions.maxRetries != null) {\n this._maxRetries = requestOptions.maxRetries;\n }\n }\n }\n options(requestUrl, additionalHeaders) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.request('OPTIONS', requestUrl, null, additionalHeaders || {});\n });\n }\n get(requestUrl, additionalHeaders) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.request('GET', requestUrl, null, additionalHeaders || {});\n });\n }\n del(requestUrl, additionalHeaders) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.request('DELETE', requestUrl, null, additionalHeaders || {});\n });\n }\n post(requestUrl, data, additionalHeaders) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.request('POST', requestUrl, data, additionalHeaders || {});\n });\n }\n patch(requestUrl, data, additionalHeaders) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.request('PATCH', requestUrl, data, additionalHeaders || {});\n });\n }\n put(requestUrl, data, additionalHeaders) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.request('PUT', requestUrl, data, additionalHeaders || {});\n });\n }\n head(requestUrl, additionalHeaders) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.request('HEAD', requestUrl, null, additionalHeaders || {});\n });\n }\n sendStream(verb, requestUrl, stream, additionalHeaders) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.request(verb, requestUrl, stream, additionalHeaders);\n });\n }\n /**\n * Gets a typed object from an endpoint\n * Be aware that not found returns a null. Other errors (4xx, 5xx) reject the promise\n */\n getJson(requestUrl, additionalHeaders = {}) {\n return __awaiter(this, void 0, void 0, function* () {\n additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.Accept, MediaTypes.ApplicationJson);\n const res = yield this.get(requestUrl, additionalHeaders);\n return this._processResponse(res, this.requestOptions);\n });\n }\n postJson(requestUrl, obj, additionalHeaders = {}) {\n return __awaiter(this, void 0, void 0, function* () {\n const data = JSON.stringify(obj, null, 2);\n additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.Accept, MediaTypes.ApplicationJson);\n additionalHeaders[Headers.ContentType] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.ContentType, MediaTypes.ApplicationJson);\n const res = yield this.post(requestUrl, data, additionalHeaders);\n return this._processResponse(res, this.requestOptions);\n });\n }\n putJson(requestUrl, obj, additionalHeaders = {}) {\n return __awaiter(this, void 0, void 0, function* () {\n const data = JSON.stringify(obj, null, 2);\n additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.Accept, MediaTypes.ApplicationJson);\n additionalHeaders[Headers.ContentType] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.ContentType, MediaTypes.ApplicationJson);\n const res = yield this.put(requestUrl, data, additionalHeaders);\n return this._processResponse(res, this.requestOptions);\n });\n }\n patchJson(requestUrl, obj, additionalHeaders = {}) {\n return __awaiter(this, void 0, void 0, function* () {\n const data = JSON.stringify(obj, null, 2);\n additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.Accept, MediaTypes.ApplicationJson);\n additionalHeaders[Headers.ContentType] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.ContentType, MediaTypes.ApplicationJson);\n const res = yield this.patch(requestUrl, data, additionalHeaders);\n return this._processResponse(res, this.requestOptions);\n });\n }\n /**\n * Makes a raw http request.\n * All other methods such as get, post, patch, and request ultimately call this.\n * Prefer get, del, post and patch\n */\n request(verb, requestUrl, data, headers) {\n return __awaiter(this, void 0, void 0, function* () {\n if (this._disposed) {\n throw new Error('Client has already been disposed.');\n }\n const parsedUrl = new URL(requestUrl);\n let info = this._prepareRequest(verb, parsedUrl, headers);\n // Only perform retries on reads since writes may not be idempotent.\n const maxTries = this._allowRetries && RetryableHttpVerbs.includes(verb)\n ? this._maxRetries + 1\n : 1;\n let numTries = 0;\n let response;\n do {\n response = yield this.requestRaw(info, data);\n // Check if it's an authentication challenge\n if (response &&\n response.message &&\n response.message.statusCode === HttpCodes.Unauthorized) {\n let authenticationHandler;\n for (const handler of this.handlers) {\n if (handler.canHandleAuthentication(response)) {\n authenticationHandler = handler;\n break;\n }\n }\n if (authenticationHandler) {\n return authenticationHandler.handleAuthentication(this, info, data);\n }\n else {\n // We have received an unauthorized response but have no handlers to handle it.\n // Let the response return to the caller.\n return response;\n }\n }\n let redirectsRemaining = this._maxRedirects;\n while (response.message.statusCode &&\n HttpRedirectCodes.includes(response.message.statusCode) &&\n this._allowRedirects &&\n redirectsRemaining > 0) {\n const redirectUrl = response.message.headers['location'];\n if (!redirectUrl) {\n // if there's no location to redirect to, we won't\n break;\n }\n const parsedRedirectUrl = new URL(redirectUrl);\n if (parsedUrl.protocol === 'https:' &&\n parsedUrl.protocol !== parsedRedirectUrl.protocol &&\n !this._allowRedirectDowngrade) {\n throw new Error('Redirect from HTTPS to HTTP protocol. This downgrade is not allowed for security reasons. If you want to allow this behavior, set the allowRedirectDowngrade option to true.');\n }\n // we need to finish reading the response before reassigning response\n // which will leak the open socket.\n yield response.readBody();\n // strip authorization header if redirected to a different hostname\n if (parsedRedirectUrl.hostname !== parsedUrl.hostname) {\n for (const header in headers) {\n // header names are case insensitive\n if (header.toLowerCase() === 'authorization') {\n delete headers[header];\n }\n }\n }\n // let's make the request with the new redirectUrl\n info = this._prepareRequest(verb, parsedRedirectUrl, headers);\n response = yield this.requestRaw(info, data);\n redirectsRemaining--;\n }\n if (!response.message.statusCode ||\n !HttpResponseRetryCodes.includes(response.message.statusCode)) {\n // If not a retry code, return immediately instead of retrying\n return response;\n }\n numTries += 1;\n if (numTries < maxTries) {\n yield response.readBody();\n yield this._performExponentialBackoff(numTries);\n }\n } while (numTries < maxTries);\n return response;\n });\n }\n /**\n * Needs to be called if keepAlive is set to true in request options.\n */\n dispose() {\n if (this._agent) {\n this._agent.destroy();\n }\n this._disposed = true;\n }\n /**\n * Raw request.\n * @param info\n * @param data\n */\n requestRaw(info, data) {\n return __awaiter(this, void 0, void 0, function* () {\n return new Promise((resolve, reject) => {\n function callbackForResult(err, res) {\n if (err) {\n reject(err);\n }\n else if (!res) {\n // If `err` is not passed, then `res` must be passed.\n reject(new Error('Unknown error'));\n }\n else {\n resolve(res);\n }\n }\n this.requestRawWithCallback(info, data, callbackForResult);\n });\n });\n }\n /**\n * Raw request with callback.\n * @param info\n * @param data\n * @param onResult\n */\n requestRawWithCallback(info, data, onResult) {\n if (typeof data === 'string') {\n if (!info.options.headers) {\n info.options.headers = {};\n }\n info.options.headers['Content-Length'] = Buffer.byteLength(data, 'utf8');\n }\n let callbackCalled = false;\n function handleResult(err, res) {\n if (!callbackCalled) {\n callbackCalled = true;\n onResult(err, res);\n }\n }\n const req = info.httpModule.request(info.options, (msg) => {\n const res = new HttpClientResponse(msg);\n handleResult(undefined, res);\n });\n let socket;\n req.on('socket', sock => {\n socket = sock;\n });\n // If we ever get disconnected, we want the socket to timeout eventually\n req.setTimeout(this._socketTimeout || 3 * 60000, () => {\n if (socket) {\n socket.end();\n }\n handleResult(new Error(`Request timeout: ${info.options.path}`));\n });\n req.on('error', function (err) {\n // err has statusCode property\n // res should have headers\n handleResult(err);\n });\n if (data && typeof data === 'string') {\n req.write(data, 'utf8');\n }\n if (data && typeof data !== 'string') {\n data.on('close', function () {\n req.end();\n });\n data.pipe(req);\n }\n else {\n req.end();\n }\n }\n /**\n * Gets an http agent. This function is useful when you need an http agent that handles\n * routing through a proxy server - depending upon the url and proxy environment variables.\n * @param serverUrl The server URL where the request will be sent. For example, https://api.github.com\n */\n getAgent(serverUrl) {\n const parsedUrl = new URL(serverUrl);\n return this._getAgent(parsedUrl);\n }\n getAgentDispatcher(serverUrl) {\n const parsedUrl = new URL(serverUrl);\n const proxyUrl = pm.getProxyUrl(parsedUrl);\n const useProxy = proxyUrl && proxyUrl.hostname;\n if (!useProxy) {\n return;\n }\n return this._getProxyAgentDispatcher(parsedUrl, proxyUrl);\n }\n _prepareRequest(method, requestUrl, headers) {\n const info = {};\n info.parsedUrl = requestUrl;\n const usingSsl = info.parsedUrl.protocol === 'https:';\n info.httpModule = usingSsl ? https : http;\n const defaultPort = usingSsl ? 443 : 80;\n info.options = {};\n info.options.host = info.parsedUrl.hostname;\n info.options.port = info.parsedUrl.port\n ? parseInt(info.parsedUrl.port)\n : defaultPort;\n info.options.path =\n (info.parsedUrl.pathname || '') + (info.parsedUrl.search || '');\n info.options.method = method;\n info.options.headers = this._mergeHeaders(headers);\n if (this.userAgent != null) {\n info.options.headers['user-agent'] = this.userAgent;\n }\n info.options.agent = this._getAgent(info.parsedUrl);\n // gives handlers an opportunity to participate\n if (this.handlers) {\n for (const handler of this.handlers) {\n handler.prepareRequest(info.options);\n }\n }\n return info;\n }\n _mergeHeaders(headers) {\n if (this.requestOptions && this.requestOptions.headers) {\n return Object.assign({}, lowercaseKeys(this.requestOptions.headers), lowercaseKeys(headers || {}));\n }\n return lowercaseKeys(headers || {});\n }\n _getExistingOrDefaultHeader(additionalHeaders, header, _default) {\n let clientHeader;\n if (this.requestOptions && this.requestOptions.headers) {\n clientHeader = lowercaseKeys(this.requestOptions.headers)[header];\n }\n return additionalHeaders[header] || clientHeader || _default;\n }\n _getAgent(parsedUrl) {\n let agent;\n const proxyUrl = pm.getProxyUrl(parsedUrl);\n const useProxy = proxyUrl && proxyUrl.hostname;\n if (this._keepAlive && useProxy) {\n agent = this._proxyAgent;\n }\n if (!useProxy) {\n agent = this._agent;\n }\n // if agent is already assigned use that agent.\n if (agent) {\n return agent;\n }\n const usingSsl = parsedUrl.protocol === 'https:';\n let maxSockets = 100;\n if (this.requestOptions) {\n maxSockets = this.requestOptions.maxSockets || http.globalAgent.maxSockets;\n }\n // This is `useProxy` again, but we need to check `proxyURl` directly for TypeScripts's flow analysis.\n if (proxyUrl && proxyUrl.hostname) {\n const agentOptions = {\n maxSockets,\n keepAlive: this._keepAlive,\n proxy: Object.assign(Object.assign({}, ((proxyUrl.username || proxyUrl.password) && {\n proxyAuth: `${proxyUrl.username}:${proxyUrl.password}`\n })), { host: proxyUrl.hostname, port: proxyUrl.port })\n };\n let tunnelAgent;\n const overHttps = proxyUrl.protocol === 'https:';\n if (usingSsl) {\n tunnelAgent = overHttps ? tunnel.httpsOverHttps : tunnel.httpsOverHttp;\n }\n else {\n tunnelAgent = overHttps ? tunnel.httpOverHttps : tunnel.httpOverHttp;\n }\n agent = tunnelAgent(agentOptions);\n this._proxyAgent = agent;\n }\n // if tunneling agent isn't assigned create a new agent\n if (!agent) {\n const options = { keepAlive: this._keepAlive, maxSockets };\n agent = usingSsl ? new https.Agent(options) : new http.Agent(options);\n this._agent = agent;\n }\n if (usingSsl && this._ignoreSslError) {\n // we don't want to set NODE_TLS_REJECT_UNAUTHORIZED=0 since that will affect request for entire process\n // http.RequestOptions doesn't expose a way to modify RequestOptions.agent.options\n // we have to cast it to any and change it directly\n agent.options = Object.assign(agent.options || {}, {\n rejectUnauthorized: false\n });\n }\n return agent;\n }\n _getProxyAgentDispatcher(parsedUrl, proxyUrl) {\n let proxyAgent;\n if (this._keepAlive) {\n proxyAgent = this._proxyAgentDispatcher;\n }\n // if agent is already assigned use that agent.\n if (proxyAgent) {\n return proxyAgent;\n }\n const usingSsl = parsedUrl.protocol === 'https:';\n proxyAgent = new undici_1.ProxyAgent(Object.assign({ uri: proxyUrl.href, pipelining: !this._keepAlive ? 0 : 1 }, ((proxyUrl.username || proxyUrl.password) && {\n token: `${proxyUrl.username}:${proxyUrl.password}`\n })));\n this._proxyAgentDispatcher = proxyAgent;\n if (usingSsl && this._ignoreSslError) {\n // we don't want to set NODE_TLS_REJECT_UNAUTHORIZED=0 since that will affect request for entire process\n // http.RequestOptions doesn't expose a way to modify RequestOptions.agent.options\n // we have to cast it to any and change it directly\n proxyAgent.options = Object.assign(proxyAgent.options.requestTls || {}, {\n rejectUnauthorized: false\n });\n }\n return proxyAgent;\n }\n _performExponentialBackoff(retryNumber) {\n return __awaiter(this, void 0, void 0, function* () {\n retryNumber = Math.min(ExponentialBackoffCeiling, retryNumber);\n const ms = ExponentialBackoffTimeSlice * Math.pow(2, retryNumber);\n return new Promise(resolve => setTimeout(() => resolve(), ms));\n });\n }\n _processResponse(res, options) {\n return __awaiter(this, void 0, void 0, function* () {\n return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () {\n const statusCode = res.message.statusCode || 0;\n const response = {\n statusCode,\n result: null,\n headers: {}\n };\n // not found leads to null obj returned\n if (statusCode === HttpCodes.NotFound) {\n resolve(response);\n }\n // get the result from the body\n function dateTimeDeserializer(key, value) {\n if (typeof value === 'string') {\n const a = new Date(value);\n if (!isNaN(a.valueOf())) {\n return a;\n }\n }\n return value;\n }\n let obj;\n let contents;\n try {\n contents = yield res.readBody();\n if (contents && contents.length > 0) {\n if (options && options.deserializeDates) {\n obj = JSON.parse(contents, dateTimeDeserializer);\n }\n else {\n obj = JSON.parse(contents);\n }\n response.result = obj;\n }\n response.headers = res.message.headers;\n }\n catch (err) {\n // Invalid resource (contents not json); leaving result obj null\n }\n // note that 3xx redirects are handled by the http layer.\n if (statusCode > 299) {\n let msg;\n // if exception/error in body, attempt to get better error\n if (obj && obj.message) {\n msg = obj.message;\n }\n else if (contents && contents.length > 0) {\n // it may be the case that the exception is in the body message as string\n msg = contents;\n }\n else {\n msg = `Failed request: (${statusCode})`;\n }\n const err = new HttpClientError(msg, statusCode);\n err.result = response.result;\n reject(err);\n }\n else {\n resolve(response);\n }\n }));\n });\n }\n}\nexports.HttpClient = HttpClient;\nconst lowercaseKeys = (obj) => Object.keys(obj).reduce((c, k) => ((c[k.toLowerCase()] = obj[k]), c), {});\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.checkBypass = exports.getProxyUrl = void 0;\nfunction getProxyUrl(reqUrl) {\n const usingSsl = reqUrl.protocol === 'https:';\n if (checkBypass(reqUrl)) {\n return undefined;\n }\n const proxyVar = (() => {\n if (usingSsl) {\n return process.env['https_proxy'] || process.env['HTTPS_PROXY'];\n }\n else {\n return process.env['http_proxy'] || process.env['HTTP_PROXY'];\n }\n })();\n if (proxyVar) {\n try {\n return new URL(proxyVar);\n }\n catch (_a) {\n if (!proxyVar.startsWith('http://') && !proxyVar.startsWith('https://'))\n return new URL(`http://${proxyVar}`);\n }\n }\n else {\n return undefined;\n }\n}\nexports.getProxyUrl = getProxyUrl;\nfunction checkBypass(reqUrl) {\n if (!reqUrl.hostname) {\n return false;\n }\n const reqHost = reqUrl.hostname;\n if (isLoopbackAddress(reqHost)) {\n return true;\n }\n const noProxy = process.env['no_proxy'] || process.env['NO_PROXY'] || '';\n if (!noProxy) {\n return false;\n }\n // Determine the request port\n let reqPort;\n if (reqUrl.port) {\n reqPort = Number(reqUrl.port);\n }\n else if (reqUrl.protocol === 'http:') {\n reqPort = 80;\n }\n else if (reqUrl.protocol === 'https:') {\n reqPort = 443;\n }\n // Format the request hostname and hostname with port\n const upperReqHosts = [reqUrl.hostname.toUpperCase()];\n if (typeof reqPort === 'number') {\n upperReqHosts.push(`${upperReqHosts[0]}:${reqPort}`);\n }\n // Compare request host against noproxy\n for (const upperNoProxyItem of noProxy\n .split(',')\n .map(x => x.trim().toUpperCase())\n .filter(x => x)) {\n if (upperNoProxyItem === '*' ||\n upperReqHosts.some(x => x === upperNoProxyItem ||\n x.endsWith(`.${upperNoProxyItem}`) ||\n (upperNoProxyItem.startsWith('.') &&\n x.endsWith(`${upperNoProxyItem}`)))) {\n return true;\n }\n }\n return false;\n}\nexports.checkBypass = checkBypass;\nfunction isLoopbackAddress(host) {\n const hostLower = host.toLowerCase();\n return (hostLower === 'localhost' ||\n hostLower.startsWith('127.') ||\n hostLower.startsWith('[::1]') ||\n hostLower.startsWith('[0:0:0:0:0:0:0:1]'));\n}\n//# sourceMappingURL=proxy.js.map","\"use strict\";\n/*\n * Copyright 2021 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.addAdminServicesToServer = exports.registerAdminService = void 0;\nconst registeredAdminServices = [];\nfunction registerAdminService(getServiceDefinition, getHandlers) {\n registeredAdminServices.push({ getServiceDefinition, getHandlers });\n}\nexports.registerAdminService = registerAdminService;\nfunction addAdminServicesToServer(server) {\n for (const { getServiceDefinition, getHandlers } of registeredAdminServices) {\n server.addService(getServiceDefinition(), getHandlers());\n }\n}\nexports.addAdminServicesToServer = addAdminServicesToServer;\n//# sourceMappingURL=admin.js.map","\"use strict\";\n/*\n * Copyright 2019 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BackoffTimeout = void 0;\nconst INITIAL_BACKOFF_MS = 1000;\nconst BACKOFF_MULTIPLIER = 1.6;\nconst MAX_BACKOFF_MS = 120000;\nconst BACKOFF_JITTER = 0.2;\n/**\n * Get a number uniformly at random in the range [min, max)\n * @param min\n * @param max\n */\nfunction uniformRandom(min, max) {\n return Math.random() * (max - min) + min;\n}\nclass BackoffTimeout {\n constructor(callback, options) {\n this.callback = callback;\n /**\n * The delay time at the start, and after each reset.\n */\n this.initialDelay = INITIAL_BACKOFF_MS;\n /**\n * The exponential backoff multiplier.\n */\n this.multiplier = BACKOFF_MULTIPLIER;\n /**\n * The maximum delay time\n */\n this.maxDelay = MAX_BACKOFF_MS;\n /**\n * The maximum fraction by which the delay time can randomly vary after\n * applying the multiplier.\n */\n this.jitter = BACKOFF_JITTER;\n /**\n * Indicates whether the timer is currently running.\n */\n this.running = false;\n /**\n * Indicates whether the timer should keep the Node process running if no\n * other async operation is doing so.\n */\n this.hasRef = true;\n /**\n * The time that the currently running timer was started. Only valid if\n * running is true.\n */\n this.startTime = new Date();\n /**\n * The approximate time that the currently running timer will end. Only valid\n * if running is true.\n */\n this.endTime = new Date();\n if (options) {\n if (options.initialDelay) {\n this.initialDelay = options.initialDelay;\n }\n if (options.multiplier) {\n this.multiplier = options.multiplier;\n }\n if (options.jitter) {\n this.jitter = options.jitter;\n }\n if (options.maxDelay) {\n this.maxDelay = options.maxDelay;\n }\n }\n this.nextDelay = this.initialDelay;\n this.timerId = setTimeout(() => { }, 0);\n clearTimeout(this.timerId);\n }\n runTimer(delay) {\n var _a, _b;\n this.endTime = this.startTime;\n this.endTime.setMilliseconds(this.endTime.getMilliseconds() + this.nextDelay);\n clearTimeout(this.timerId);\n this.timerId = setTimeout(() => {\n this.callback();\n this.running = false;\n }, delay);\n if (!this.hasRef) {\n (_b = (_a = this.timerId).unref) === null || _b === void 0 ? void 0 : _b.call(_a);\n }\n }\n /**\n * Call the callback after the current amount of delay time\n */\n runOnce() {\n this.running = true;\n this.startTime = new Date();\n this.runTimer(this.nextDelay);\n const nextBackoff = Math.min(this.nextDelay * this.multiplier, this.maxDelay);\n const jitterMagnitude = nextBackoff * this.jitter;\n this.nextDelay =\n nextBackoff + uniformRandom(-jitterMagnitude, jitterMagnitude);\n }\n /**\n * Stop the timer. The callback will not be called until `runOnce` is called\n * again.\n */\n stop() {\n clearTimeout(this.timerId);\n this.running = false;\n }\n /**\n * Reset the delay time to its initial value. If the timer is still running,\n * retroactively apply that reset to the current timer.\n */\n reset() {\n this.nextDelay = this.initialDelay;\n if (this.running) {\n const now = new Date();\n const newEndTime = this.startTime;\n newEndTime.setMilliseconds(newEndTime.getMilliseconds() + this.nextDelay);\n clearTimeout(this.timerId);\n if (now < newEndTime) {\n this.runTimer(newEndTime.getTime() - now.getTime());\n }\n else {\n this.running = false;\n }\n }\n }\n /**\n * Check whether the timer is currently running.\n */\n isRunning() {\n return this.running;\n }\n /**\n * Set that while the timer is running, it should keep the Node process\n * running.\n */\n ref() {\n var _a, _b;\n this.hasRef = true;\n (_b = (_a = this.timerId).ref) === null || _b === void 0 ? void 0 : _b.call(_a);\n }\n /**\n * Set that while the timer is running, it should not keep the Node process\n * running.\n */\n unref() {\n var _a, _b;\n this.hasRef = false;\n (_b = (_a = this.timerId).unref) === null || _b === void 0 ? void 0 : _b.call(_a);\n }\n /**\n * Get the approximate timestamp of when the timer will fire. Only valid if\n * this.isRunning() is true.\n */\n getEndTime() {\n return this.endTime;\n }\n}\nexports.BackoffTimeout = BackoffTimeout;\n//# sourceMappingURL=backoff-timeout.js.map","\"use strict\";\n/*\n * Copyright 2019 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CallCredentials = void 0;\nconst metadata_1 = require(\"./metadata\");\nfunction isCurrentOauth2Client(client) {\n return ('getRequestHeaders' in client &&\n typeof client.getRequestHeaders === 'function');\n}\n/**\n * A class that represents a generic method of adding authentication-related\n * metadata on a per-request basis.\n */\nclass CallCredentials {\n /**\n * Creates a new CallCredentials object from a given function that generates\n * Metadata objects.\n * @param metadataGenerator A function that accepts a set of options, and\n * generates a Metadata object based on these options, which is passed back\n * to the caller via a supplied (err, metadata) callback.\n */\n static createFromMetadataGenerator(metadataGenerator) {\n return new SingleCallCredentials(metadataGenerator);\n }\n /**\n * Create a gRPC credential from a Google credential object.\n * @param googleCredentials The authentication client to use.\n * @return The resulting CallCredentials object.\n */\n static createFromGoogleCredential(googleCredentials) {\n return CallCredentials.createFromMetadataGenerator((options, callback) => {\n let getHeaders;\n if (isCurrentOauth2Client(googleCredentials)) {\n getHeaders = googleCredentials.getRequestHeaders(options.service_url);\n }\n else {\n getHeaders = new Promise((resolve, reject) => {\n googleCredentials.getRequestMetadata(options.service_url, (err, headers) => {\n if (err) {\n reject(err);\n return;\n }\n if (!headers) {\n reject(new Error('Headers not set by metadata plugin'));\n return;\n }\n resolve(headers);\n });\n });\n }\n getHeaders.then(headers => {\n const metadata = new metadata_1.Metadata();\n for (const key of Object.keys(headers)) {\n metadata.add(key, headers[key]);\n }\n callback(null, metadata);\n }, err => {\n callback(err);\n });\n });\n }\n static createEmpty() {\n return new EmptyCallCredentials();\n }\n}\nexports.CallCredentials = CallCredentials;\nclass ComposedCallCredentials extends CallCredentials {\n constructor(creds) {\n super();\n this.creds = creds;\n }\n async generateMetadata(options) {\n const base = new metadata_1.Metadata();\n const generated = await Promise.all(this.creds.map(cred => cred.generateMetadata(options)));\n for (const gen of generated) {\n base.merge(gen);\n }\n return base;\n }\n compose(other) {\n return new ComposedCallCredentials(this.creds.concat([other]));\n }\n _equals(other) {\n if (this === other) {\n return true;\n }\n if (other instanceof ComposedCallCredentials) {\n return this.creds.every((value, index) => value._equals(other.creds[index]));\n }\n else {\n return false;\n }\n }\n}\nclass SingleCallCredentials extends CallCredentials {\n constructor(metadataGenerator) {\n super();\n this.metadataGenerator = metadataGenerator;\n }\n generateMetadata(options) {\n return new Promise((resolve, reject) => {\n this.metadataGenerator(options, (err, metadata) => {\n if (metadata !== undefined) {\n resolve(metadata);\n }\n else {\n reject(err);\n }\n });\n });\n }\n compose(other) {\n return new ComposedCallCredentials([this, other]);\n }\n _equals(other) {\n if (this === other) {\n return true;\n }\n if (other instanceof SingleCallCredentials) {\n return this.metadataGenerator === other.metadataGenerator;\n }\n else {\n return false;\n }\n }\n}\nclass EmptyCallCredentials extends CallCredentials {\n generateMetadata(options) {\n return Promise.resolve(new metadata_1.Metadata());\n }\n compose(other) {\n return other;\n }\n _equals(other) {\n return other instanceof EmptyCallCredentials;\n }\n}\n//# sourceMappingURL=call-credentials.js.map","\"use strict\";\n/*\n * Copyright 2022 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.InterceptingListenerImpl = exports.isInterceptingListener = void 0;\nfunction isInterceptingListener(listener) {\n return (listener.onReceiveMetadata !== undefined &&\n listener.onReceiveMetadata.length === 1);\n}\nexports.isInterceptingListener = isInterceptingListener;\nclass InterceptingListenerImpl {\n constructor(listener, nextListener) {\n this.listener = listener;\n this.nextListener = nextListener;\n this.processingMetadata = false;\n this.hasPendingMessage = false;\n this.processingMessage = false;\n this.pendingStatus = null;\n }\n processPendingMessage() {\n if (this.hasPendingMessage) {\n this.nextListener.onReceiveMessage(this.pendingMessage);\n this.pendingMessage = null;\n this.hasPendingMessage = false;\n }\n }\n processPendingStatus() {\n if (this.pendingStatus) {\n this.nextListener.onReceiveStatus(this.pendingStatus);\n }\n }\n onReceiveMetadata(metadata) {\n this.processingMetadata = true;\n this.listener.onReceiveMetadata(metadata, metadata => {\n this.processingMetadata = false;\n this.nextListener.onReceiveMetadata(metadata);\n this.processPendingMessage();\n this.processPendingStatus();\n });\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n onReceiveMessage(message) {\n /* If this listener processes messages asynchronously, the last message may\n * be reordered with respect to the status */\n this.processingMessage = true;\n this.listener.onReceiveMessage(message, msg => {\n this.processingMessage = false;\n if (this.processingMetadata) {\n this.pendingMessage = msg;\n this.hasPendingMessage = true;\n }\n else {\n this.nextListener.onReceiveMessage(msg);\n this.processPendingStatus();\n }\n });\n }\n onReceiveStatus(status) {\n this.listener.onReceiveStatus(status, processedStatus => {\n if (this.processingMetadata || this.processingMessage) {\n this.pendingStatus = processedStatus;\n }\n else {\n this.nextListener.onReceiveStatus(processedStatus);\n }\n });\n }\n}\nexports.InterceptingListenerImpl = InterceptingListenerImpl;\n//# sourceMappingURL=call-interface.js.map","\"use strict\";\n/*\n * Copyright 2022 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getNextCallNumber = void 0;\nlet nextCallNumber = 0;\nfunction getNextCallNumber() {\n return nextCallNumber++;\n}\nexports.getNextCallNumber = getNextCallNumber;\n//# sourceMappingURL=call-number.js.map","\"use strict\";\n/*\n * Copyright 2019 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ClientDuplexStreamImpl = exports.ClientWritableStreamImpl = exports.ClientReadableStreamImpl = exports.ClientUnaryCallImpl = exports.callErrorFromStatus = void 0;\nconst events_1 = require(\"events\");\nconst stream_1 = require(\"stream\");\nconst constants_1 = require(\"./constants\");\n/**\n * Construct a ServiceError from a StatusObject. This function exists primarily\n * as an attempt to make the error stack trace clearly communicate that the\n * error is not necessarily a problem in gRPC itself.\n * @param status\n */\nfunction callErrorFromStatus(status, callerStack) {\n const message = `${status.code} ${constants_1.Status[status.code]}: ${status.details}`;\n const error = new Error(message);\n const stack = `${error.stack}\\nfor call at\\n${callerStack}`;\n return Object.assign(new Error(message), status, { stack });\n}\nexports.callErrorFromStatus = callErrorFromStatus;\nclass ClientUnaryCallImpl extends events_1.EventEmitter {\n constructor() {\n super();\n }\n cancel() {\n var _a;\n (_a = this.call) === null || _a === void 0 ? void 0 : _a.cancelWithStatus(constants_1.Status.CANCELLED, 'Cancelled on client');\n }\n getPeer() {\n var _a, _b;\n return (_b = (_a = this.call) === null || _a === void 0 ? void 0 : _a.getPeer()) !== null && _b !== void 0 ? _b : 'unknown';\n }\n}\nexports.ClientUnaryCallImpl = ClientUnaryCallImpl;\nclass ClientReadableStreamImpl extends stream_1.Readable {\n constructor(deserialize) {\n super({ objectMode: true });\n this.deserialize = deserialize;\n }\n cancel() {\n var _a;\n (_a = this.call) === null || _a === void 0 ? void 0 : _a.cancelWithStatus(constants_1.Status.CANCELLED, 'Cancelled on client');\n }\n getPeer() {\n var _a, _b;\n return (_b = (_a = this.call) === null || _a === void 0 ? void 0 : _a.getPeer()) !== null && _b !== void 0 ? _b : 'unknown';\n }\n _read(_size) {\n var _a;\n (_a = this.call) === null || _a === void 0 ? void 0 : _a.startRead();\n }\n}\nexports.ClientReadableStreamImpl = ClientReadableStreamImpl;\nclass ClientWritableStreamImpl extends stream_1.Writable {\n constructor(serialize) {\n super({ objectMode: true });\n this.serialize = serialize;\n }\n cancel() {\n var _a;\n (_a = this.call) === null || _a === void 0 ? void 0 : _a.cancelWithStatus(constants_1.Status.CANCELLED, 'Cancelled on client');\n }\n getPeer() {\n var _a, _b;\n return (_b = (_a = this.call) === null || _a === void 0 ? void 0 : _a.getPeer()) !== null && _b !== void 0 ? _b : 'unknown';\n }\n _write(chunk, encoding, cb) {\n var _a;\n const context = {\n callback: cb,\n };\n const flags = Number(encoding);\n if (!Number.isNaN(flags)) {\n context.flags = flags;\n }\n (_a = this.call) === null || _a === void 0 ? void 0 : _a.sendMessageWithContext(context, chunk);\n }\n _final(cb) {\n var _a;\n (_a = this.call) === null || _a === void 0 ? void 0 : _a.halfClose();\n cb();\n }\n}\nexports.ClientWritableStreamImpl = ClientWritableStreamImpl;\nclass ClientDuplexStreamImpl extends stream_1.Duplex {\n constructor(serialize, deserialize) {\n super({ objectMode: true });\n this.serialize = serialize;\n this.deserialize = deserialize;\n }\n cancel() {\n var _a;\n (_a = this.call) === null || _a === void 0 ? void 0 : _a.cancelWithStatus(constants_1.Status.CANCELLED, 'Cancelled on client');\n }\n getPeer() {\n var _a, _b;\n return (_b = (_a = this.call) === null || _a === void 0 ? void 0 : _a.getPeer()) !== null && _b !== void 0 ? _b : 'unknown';\n }\n _read(_size) {\n var _a;\n (_a = this.call) === null || _a === void 0 ? void 0 : _a.startRead();\n }\n _write(chunk, encoding, cb) {\n var _a;\n const context = {\n callback: cb,\n };\n const flags = Number(encoding);\n if (!Number.isNaN(flags)) {\n context.flags = flags;\n }\n (_a = this.call) === null || _a === void 0 ? void 0 : _a.sendMessageWithContext(context, chunk);\n }\n _final(cb) {\n var _a;\n (_a = this.call) === null || _a === void 0 ? void 0 : _a.halfClose();\n cb();\n }\n}\nexports.ClientDuplexStreamImpl = ClientDuplexStreamImpl;\n//# sourceMappingURL=call.js.map","\"use strict\";\n/*\n * Copyright 2019 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ChannelCredentials = void 0;\nconst tls_1 = require(\"tls\");\nconst call_credentials_1 = require(\"./call-credentials\");\nconst tls_helpers_1 = require(\"./tls-helpers\");\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction verifyIsBufferOrNull(obj, friendlyName) {\n if (obj && !(obj instanceof Buffer)) {\n throw new TypeError(`${friendlyName}, if provided, must be a Buffer.`);\n }\n}\n/**\n * A class that contains credentials for communicating over a channel, as well\n * as a set of per-call credentials, which are applied to every method call made\n * over a channel initialized with an instance of this class.\n */\nclass ChannelCredentials {\n constructor(callCredentials) {\n this.callCredentials = callCredentials || call_credentials_1.CallCredentials.createEmpty();\n }\n /**\n * Gets the set of per-call credentials associated with this instance.\n */\n _getCallCredentials() {\n return this.callCredentials;\n }\n /**\n * Return a new ChannelCredentials instance with a given set of credentials.\n * The resulting instance can be used to construct a Channel that communicates\n * over TLS.\n * @param rootCerts The root certificate data.\n * @param privateKey The client certificate private key, if available.\n * @param certChain The client certificate key chain, if available.\n * @param verifyOptions Additional options to modify certificate verification\n */\n static createSsl(rootCerts, privateKey, certChain, verifyOptions) {\n var _a;\n verifyIsBufferOrNull(rootCerts, 'Root certificate');\n verifyIsBufferOrNull(privateKey, 'Private key');\n verifyIsBufferOrNull(certChain, 'Certificate chain');\n if (privateKey && !certChain) {\n throw new Error('Private key must be given with accompanying certificate chain');\n }\n if (!privateKey && certChain) {\n throw new Error('Certificate chain must be given with accompanying private key');\n }\n const secureContext = (0, tls_1.createSecureContext)({\n ca: (_a = rootCerts !== null && rootCerts !== void 0 ? rootCerts : (0, tls_helpers_1.getDefaultRootsData)()) !== null && _a !== void 0 ? _a : undefined,\n key: privateKey !== null && privateKey !== void 0 ? privateKey : undefined,\n cert: certChain !== null && certChain !== void 0 ? certChain : undefined,\n ciphers: tls_helpers_1.CIPHER_SUITES,\n });\n return new SecureChannelCredentialsImpl(secureContext, verifyOptions !== null && verifyOptions !== void 0 ? verifyOptions : {});\n }\n /**\n * Return a new ChannelCredentials instance with credentials created using\n * the provided secureContext. The resulting instances can be used to\n * construct a Channel that communicates over TLS. gRPC will not override\n * anything in the provided secureContext, so the environment variables\n * GRPC_SSL_CIPHER_SUITES and GRPC_DEFAULT_SSL_ROOTS_FILE_PATH will\n * not be applied.\n * @param secureContext The return value of tls.createSecureContext()\n * @param verifyOptions Additional options to modify certificate verification\n */\n static createFromSecureContext(secureContext, verifyOptions) {\n return new SecureChannelCredentialsImpl(secureContext, verifyOptions !== null && verifyOptions !== void 0 ? verifyOptions : {});\n }\n /**\n * Return a new ChannelCredentials instance with no credentials.\n */\n static createInsecure() {\n return new InsecureChannelCredentialsImpl();\n }\n}\nexports.ChannelCredentials = ChannelCredentials;\nclass InsecureChannelCredentialsImpl extends ChannelCredentials {\n constructor() {\n super();\n }\n compose(callCredentials) {\n throw new Error('Cannot compose insecure credentials');\n }\n _getConnectionOptions() {\n return null;\n }\n _isSecure() {\n return false;\n }\n _equals(other) {\n return other instanceof InsecureChannelCredentialsImpl;\n }\n}\nclass SecureChannelCredentialsImpl extends ChannelCredentials {\n constructor(secureContext, verifyOptions) {\n super();\n this.secureContext = secureContext;\n this.verifyOptions = verifyOptions;\n this.connectionOptions = {\n secureContext,\n };\n // Node asserts that this option is a function, so we cannot pass undefined\n if (verifyOptions === null || verifyOptions === void 0 ? void 0 : verifyOptions.checkServerIdentity) {\n this.connectionOptions.checkServerIdentity =\n verifyOptions.checkServerIdentity;\n }\n }\n compose(callCredentials) {\n const combinedCallCredentials = this.callCredentials.compose(callCredentials);\n return new ComposedChannelCredentialsImpl(this, combinedCallCredentials);\n }\n _getConnectionOptions() {\n // Copy to prevent callers from mutating this.connectionOptions\n return Object.assign({}, this.connectionOptions);\n }\n _isSecure() {\n return true;\n }\n _equals(other) {\n if (this === other) {\n return true;\n }\n if (other instanceof SecureChannelCredentialsImpl) {\n return (this.secureContext === other.secureContext &&\n this.verifyOptions.checkServerIdentity ===\n other.verifyOptions.checkServerIdentity);\n }\n else {\n return false;\n }\n }\n}\nclass ComposedChannelCredentialsImpl extends ChannelCredentials {\n constructor(channelCredentials, callCreds) {\n super(callCreds);\n this.channelCredentials = channelCredentials;\n }\n compose(callCredentials) {\n const combinedCallCredentials = this.callCredentials.compose(callCredentials);\n return new ComposedChannelCredentialsImpl(this.channelCredentials, combinedCallCredentials);\n }\n _getConnectionOptions() {\n return this.channelCredentials._getConnectionOptions();\n }\n _isSecure() {\n return true;\n }\n _equals(other) {\n if (this === other) {\n return true;\n }\n if (other instanceof ComposedChannelCredentialsImpl) {\n return (this.channelCredentials._equals(other.channelCredentials) &&\n this.callCredentials._equals(other.callCredentials));\n }\n else {\n return false;\n }\n }\n}\n//# sourceMappingURL=channel-credentials.js.map","\"use strict\";\n/*\n * Copyright 2019 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.channelOptionsEqual = exports.recognizedOptions = void 0;\n/**\n * This is for checking provided options at runtime. This is an object for\n * easier membership checking.\n */\nexports.recognizedOptions = {\n 'grpc.ssl_target_name_override': true,\n 'grpc.primary_user_agent': true,\n 'grpc.secondary_user_agent': true,\n 'grpc.default_authority': true,\n 'grpc.keepalive_time_ms': true,\n 'grpc.keepalive_timeout_ms': true,\n 'grpc.keepalive_permit_without_calls': true,\n 'grpc.service_config': true,\n 'grpc.max_concurrent_streams': true,\n 'grpc.initial_reconnect_backoff_ms': true,\n 'grpc.max_reconnect_backoff_ms': true,\n 'grpc.use_local_subchannel_pool': true,\n 'grpc.max_send_message_length': true,\n 'grpc.max_receive_message_length': true,\n 'grpc.enable_http_proxy': true,\n 'grpc.enable_channelz': true,\n 'grpc.dns_min_time_between_resolutions_ms': true,\n 'grpc.enable_retries': true,\n 'grpc.per_rpc_retry_buffer_size': true,\n 'grpc.retry_buffer_size': true,\n 'grpc.max_connection_age_ms': true,\n 'grpc.max_connection_age_grace_ms': true,\n 'grpc-node.max_session_memory': true,\n 'grpc.service_config_disable_resolution': true,\n 'grpc.client_idle_timeout_ms': true,\n 'grpc-node.tls_enable_trace': true,\n 'grpc.lb.ring_hash.ring_size_cap': true,\n};\nfunction channelOptionsEqual(options1, options2) {\n const keys1 = Object.keys(options1).sort();\n const keys2 = Object.keys(options2).sort();\n if (keys1.length !== keys2.length) {\n return false;\n }\n for (let i = 0; i < keys1.length; i += 1) {\n if (keys1[i] !== keys2[i]) {\n return false;\n }\n if (options1[keys1[i]] !== options2[keys2[i]]) {\n return false;\n }\n }\n return true;\n}\nexports.channelOptionsEqual = channelOptionsEqual;\n//# sourceMappingURL=channel-options.js.map","\"use strict\";\n/*\n * Copyright 2019 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ChannelImplementation = void 0;\nconst channel_credentials_1 = require(\"./channel-credentials\");\nconst internal_channel_1 = require(\"./internal-channel\");\nclass ChannelImplementation {\n constructor(target, credentials, options) {\n if (typeof target !== 'string') {\n throw new TypeError('Channel target must be a string');\n }\n if (!(credentials instanceof channel_credentials_1.ChannelCredentials)) {\n throw new TypeError('Channel credentials must be a ChannelCredentials object');\n }\n if (options) {\n if (typeof options !== 'object') {\n throw new TypeError('Channel options must be an object');\n }\n }\n this.internalChannel = new internal_channel_1.InternalChannel(target, credentials, options);\n }\n close() {\n this.internalChannel.close();\n }\n getTarget() {\n return this.internalChannel.getTarget();\n }\n getConnectivityState(tryToConnect) {\n return this.internalChannel.getConnectivityState(tryToConnect);\n }\n watchConnectivityState(currentState, deadline, callback) {\n this.internalChannel.watchConnectivityState(currentState, deadline, callback);\n }\n /**\n * Get the channelz reference object for this channel. The returned value is\n * garbage if channelz is disabled for this channel.\n * @returns\n */\n getChannelzRef() {\n return this.internalChannel.getChannelzRef();\n }\n createCall(method, deadline, host, parentCall, propagateFlags) {\n if (typeof method !== 'string') {\n throw new TypeError('Channel#createCall: method must be a string');\n }\n if (!(typeof deadline === 'number' || deadline instanceof Date)) {\n throw new TypeError('Channel#createCall: deadline must be a number or Date');\n }\n return this.internalChannel.createCall(method, deadline, host, parentCall, propagateFlags);\n }\n}\nexports.ChannelImplementation = ChannelImplementation;\n//# sourceMappingURL=channel.js.map",null,"\"use strict\";\n/*\n * Copyright 2019 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getInterceptingCall = exports.InterceptingCall = exports.RequesterBuilder = exports.ListenerBuilder = exports.InterceptorConfigurationError = void 0;\nconst metadata_1 = require(\"./metadata\");\nconst call_interface_1 = require(\"./call-interface\");\nconst constants_1 = require(\"./constants\");\nconst error_1 = require(\"./error\");\n/**\n * Error class associated with passing both interceptors and interceptor\n * providers to a client constructor or as call options.\n */\nclass InterceptorConfigurationError extends Error {\n constructor(message) {\n super(message);\n this.name = 'InterceptorConfigurationError';\n Error.captureStackTrace(this, InterceptorConfigurationError);\n }\n}\nexports.InterceptorConfigurationError = InterceptorConfigurationError;\nclass ListenerBuilder {\n constructor() {\n this.metadata = undefined;\n this.message = undefined;\n this.status = undefined;\n }\n withOnReceiveMetadata(onReceiveMetadata) {\n this.metadata = onReceiveMetadata;\n return this;\n }\n withOnReceiveMessage(onReceiveMessage) {\n this.message = onReceiveMessage;\n return this;\n }\n withOnReceiveStatus(onReceiveStatus) {\n this.status = onReceiveStatus;\n return this;\n }\n build() {\n return {\n onReceiveMetadata: this.metadata,\n onReceiveMessage: this.message,\n onReceiveStatus: this.status,\n };\n }\n}\nexports.ListenerBuilder = ListenerBuilder;\nclass RequesterBuilder {\n constructor() {\n this.start = undefined;\n this.message = undefined;\n this.halfClose = undefined;\n this.cancel = undefined;\n }\n withStart(start) {\n this.start = start;\n return this;\n }\n withSendMessage(sendMessage) {\n this.message = sendMessage;\n return this;\n }\n withHalfClose(halfClose) {\n this.halfClose = halfClose;\n return this;\n }\n withCancel(cancel) {\n this.cancel = cancel;\n return this;\n }\n build() {\n return {\n start: this.start,\n sendMessage: this.message,\n halfClose: this.halfClose,\n cancel: this.cancel,\n };\n }\n}\nexports.RequesterBuilder = RequesterBuilder;\n/**\n * A Listener with a default pass-through implementation of each method. Used\n * for filling out Listeners with some methods omitted.\n */\nconst defaultListener = {\n onReceiveMetadata: (metadata, next) => {\n next(metadata);\n },\n onReceiveMessage: (message, next) => {\n next(message);\n },\n onReceiveStatus: (status, next) => {\n next(status);\n },\n};\n/**\n * A Requester with a default pass-through implementation of each method. Used\n * for filling out Requesters with some methods omitted.\n */\nconst defaultRequester = {\n start: (metadata, listener, next) => {\n next(metadata, listener);\n },\n sendMessage: (message, next) => {\n next(message);\n },\n halfClose: next => {\n next();\n },\n cancel: next => {\n next();\n },\n};\nclass InterceptingCall {\n constructor(nextCall, requester) {\n var _a, _b, _c, _d;\n this.nextCall = nextCall;\n /**\n * Indicates that metadata has been passed to the requester's start\n * method but it has not been passed to the corresponding next callback\n */\n this.processingMetadata = false;\n /**\n * Message context for a pending message that is waiting for\n */\n this.pendingMessageContext = null;\n /**\n * Indicates that a message has been passed to the requester's sendMessage\n * method but it has not been passed to the corresponding next callback\n */\n this.processingMessage = false;\n /**\n * Indicates that a status was received but could not be propagated because\n * a message was still being processed.\n */\n this.pendingHalfClose = false;\n if (requester) {\n this.requester = {\n start: (_a = requester.start) !== null && _a !== void 0 ? _a : defaultRequester.start,\n sendMessage: (_b = requester.sendMessage) !== null && _b !== void 0 ? _b : defaultRequester.sendMessage,\n halfClose: (_c = requester.halfClose) !== null && _c !== void 0 ? _c : defaultRequester.halfClose,\n cancel: (_d = requester.cancel) !== null && _d !== void 0 ? _d : defaultRequester.cancel,\n };\n }\n else {\n this.requester = defaultRequester;\n }\n }\n cancelWithStatus(status, details) {\n this.requester.cancel(() => {\n this.nextCall.cancelWithStatus(status, details);\n });\n }\n getPeer() {\n return this.nextCall.getPeer();\n }\n processPendingMessage() {\n if (this.pendingMessageContext) {\n this.nextCall.sendMessageWithContext(this.pendingMessageContext, this.pendingMessage);\n this.pendingMessageContext = null;\n this.pendingMessage = null;\n }\n }\n processPendingHalfClose() {\n if (this.pendingHalfClose) {\n this.nextCall.halfClose();\n }\n }\n start(metadata, interceptingListener) {\n var _a, _b, _c, _d, _e, _f;\n const fullInterceptingListener = {\n onReceiveMetadata: (_b = (_a = interceptingListener === null || interceptingListener === void 0 ? void 0 : interceptingListener.onReceiveMetadata) === null || _a === void 0 ? void 0 : _a.bind(interceptingListener)) !== null && _b !== void 0 ? _b : (metadata => { }),\n onReceiveMessage: (_d = (_c = interceptingListener === null || interceptingListener === void 0 ? void 0 : interceptingListener.onReceiveMessage) === null || _c === void 0 ? void 0 : _c.bind(interceptingListener)) !== null && _d !== void 0 ? _d : (message => { }),\n onReceiveStatus: (_f = (_e = interceptingListener === null || interceptingListener === void 0 ? void 0 : interceptingListener.onReceiveStatus) === null || _e === void 0 ? void 0 : _e.bind(interceptingListener)) !== null && _f !== void 0 ? _f : (status => { }),\n };\n this.processingMetadata = true;\n this.requester.start(metadata, fullInterceptingListener, (md, listener) => {\n var _a, _b, _c;\n this.processingMetadata = false;\n let finalInterceptingListener;\n if ((0, call_interface_1.isInterceptingListener)(listener)) {\n finalInterceptingListener = listener;\n }\n else {\n const fullListener = {\n onReceiveMetadata: (_a = listener.onReceiveMetadata) !== null && _a !== void 0 ? _a : defaultListener.onReceiveMetadata,\n onReceiveMessage: (_b = listener.onReceiveMessage) !== null && _b !== void 0 ? _b : defaultListener.onReceiveMessage,\n onReceiveStatus: (_c = listener.onReceiveStatus) !== null && _c !== void 0 ? _c : defaultListener.onReceiveStatus,\n };\n finalInterceptingListener = new call_interface_1.InterceptingListenerImpl(fullListener, fullInterceptingListener);\n }\n this.nextCall.start(md, finalInterceptingListener);\n this.processPendingMessage();\n this.processPendingHalfClose();\n });\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n sendMessageWithContext(context, message) {\n this.processingMessage = true;\n this.requester.sendMessage(message, finalMessage => {\n this.processingMessage = false;\n if (this.processingMetadata) {\n this.pendingMessageContext = context;\n this.pendingMessage = message;\n }\n else {\n this.nextCall.sendMessageWithContext(context, finalMessage);\n this.processPendingHalfClose();\n }\n });\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n sendMessage(message) {\n this.sendMessageWithContext({}, message);\n }\n startRead() {\n this.nextCall.startRead();\n }\n halfClose() {\n this.requester.halfClose(() => {\n if (this.processingMetadata || this.processingMessage) {\n this.pendingHalfClose = true;\n }\n else {\n this.nextCall.halfClose();\n }\n });\n }\n}\nexports.InterceptingCall = InterceptingCall;\nfunction getCall(channel, path, options) {\n var _a, _b;\n const deadline = (_a = options.deadline) !== null && _a !== void 0 ? _a : Infinity;\n const host = options.host;\n const parent = (_b = options.parent) !== null && _b !== void 0 ? _b : null;\n const propagateFlags = options.propagate_flags;\n const credentials = options.credentials;\n const call = channel.createCall(path, deadline, host, parent, propagateFlags);\n if (credentials) {\n call.setCredentials(credentials);\n }\n return call;\n}\n/**\n * InterceptingCall implementation that directly owns the underlying Call\n * object and handles serialization and deseraizliation.\n */\nclass BaseInterceptingCall {\n constructor(call, \n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n methodDefinition) {\n this.call = call;\n this.methodDefinition = methodDefinition;\n }\n cancelWithStatus(status, details) {\n this.call.cancelWithStatus(status, details);\n }\n getPeer() {\n return this.call.getPeer();\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n sendMessageWithContext(context, message) {\n let serialized;\n try {\n serialized = this.methodDefinition.requestSerialize(message);\n }\n catch (e) {\n this.call.cancelWithStatus(constants_1.Status.INTERNAL, `Request message serialization failure: ${(0, error_1.getErrorMessage)(e)}`);\n return;\n }\n this.call.sendMessageWithContext(context, serialized);\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n sendMessage(message) {\n this.sendMessageWithContext({}, message);\n }\n start(metadata, interceptingListener) {\n let readError = null;\n this.call.start(metadata, {\n onReceiveMetadata: metadata => {\n var _a;\n (_a = interceptingListener === null || interceptingListener === void 0 ? void 0 : interceptingListener.onReceiveMetadata) === null || _a === void 0 ? void 0 : _a.call(interceptingListener, metadata);\n },\n onReceiveMessage: message => {\n var _a;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let deserialized;\n try {\n deserialized = this.methodDefinition.responseDeserialize(message);\n }\n catch (e) {\n readError = {\n code: constants_1.Status.INTERNAL,\n details: `Response message parsing error: ${(0, error_1.getErrorMessage)(e)}`,\n metadata: new metadata_1.Metadata(),\n };\n this.call.cancelWithStatus(readError.code, readError.details);\n return;\n }\n (_a = interceptingListener === null || interceptingListener === void 0 ? void 0 : interceptingListener.onReceiveMessage) === null || _a === void 0 ? void 0 : _a.call(interceptingListener, deserialized);\n },\n onReceiveStatus: status => {\n var _a, _b;\n if (readError) {\n (_a = interceptingListener === null || interceptingListener === void 0 ? void 0 : interceptingListener.onReceiveStatus) === null || _a === void 0 ? void 0 : _a.call(interceptingListener, readError);\n }\n else {\n (_b = interceptingListener === null || interceptingListener === void 0 ? void 0 : interceptingListener.onReceiveStatus) === null || _b === void 0 ? void 0 : _b.call(interceptingListener, status);\n }\n },\n });\n }\n startRead() {\n this.call.startRead();\n }\n halfClose() {\n this.call.halfClose();\n }\n}\n/**\n * BaseInterceptingCall with special-cased behavior for methods with unary\n * responses.\n */\nclass BaseUnaryInterceptingCall extends BaseInterceptingCall {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n constructor(call, methodDefinition) {\n super(call, methodDefinition);\n }\n start(metadata, listener) {\n var _a, _b;\n let receivedMessage = false;\n const wrapperListener = {\n onReceiveMetadata: (_b = (_a = listener === null || listener === void 0 ? void 0 : listener.onReceiveMetadata) === null || _a === void 0 ? void 0 : _a.bind(listener)) !== null && _b !== void 0 ? _b : (metadata => { }),\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n onReceiveMessage: (message) => {\n var _a;\n receivedMessage = true;\n (_a = listener === null || listener === void 0 ? void 0 : listener.onReceiveMessage) === null || _a === void 0 ? void 0 : _a.call(listener, message);\n },\n onReceiveStatus: (status) => {\n var _a, _b;\n if (!receivedMessage) {\n (_a = listener === null || listener === void 0 ? void 0 : listener.onReceiveMessage) === null || _a === void 0 ? void 0 : _a.call(listener, null);\n }\n (_b = listener === null || listener === void 0 ? void 0 : listener.onReceiveStatus) === null || _b === void 0 ? void 0 : _b.call(listener, status);\n },\n };\n super.start(metadata, wrapperListener);\n this.call.startRead();\n }\n}\n/**\n * BaseInterceptingCall with special-cased behavior for methods with streaming\n * responses.\n */\nclass BaseStreamingInterceptingCall extends BaseInterceptingCall {\n}\nfunction getBottomInterceptingCall(channel, options, \n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nmethodDefinition) {\n const call = getCall(channel, methodDefinition.path, options);\n if (methodDefinition.responseStream) {\n return new BaseStreamingInterceptingCall(call, methodDefinition);\n }\n else {\n return new BaseUnaryInterceptingCall(call, methodDefinition);\n }\n}\nfunction getInterceptingCall(interceptorArgs, \n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nmethodDefinition, options, channel) {\n if (interceptorArgs.clientInterceptors.length > 0 &&\n interceptorArgs.clientInterceptorProviders.length > 0) {\n throw new InterceptorConfigurationError('Both interceptors and interceptor_providers were passed as options ' +\n 'to the client constructor. Only one of these is allowed.');\n }\n if (interceptorArgs.callInterceptors.length > 0 &&\n interceptorArgs.callInterceptorProviders.length > 0) {\n throw new InterceptorConfigurationError('Both interceptors and interceptor_providers were passed as call ' +\n 'options. Only one of these is allowed.');\n }\n let interceptors = [];\n // Interceptors passed to the call override interceptors passed to the client constructor\n if (interceptorArgs.callInterceptors.length > 0 ||\n interceptorArgs.callInterceptorProviders.length > 0) {\n interceptors = []\n .concat(interceptorArgs.callInterceptors, interceptorArgs.callInterceptorProviders.map(provider => provider(methodDefinition)))\n .filter(interceptor => interceptor);\n // Filter out falsy values when providers return nothing\n }\n else {\n interceptors = []\n .concat(interceptorArgs.clientInterceptors, interceptorArgs.clientInterceptorProviders.map(provider => provider(methodDefinition)))\n .filter(interceptor => interceptor);\n // Filter out falsy values when providers return nothing\n }\n const interceptorOptions = Object.assign({}, options, {\n method_definition: methodDefinition,\n });\n /* For each interceptor in the list, the nextCall function passed to it is\n * based on the next interceptor in the list, using a nextCall function\n * constructed with the following interceptor in the list, and so on. The\n * initialValue, which is effectively at the end of the list, is a nextCall\n * function that invokes getBottomInterceptingCall, the result of which\n * handles (de)serialization and also gets the underlying call from the\n * channel. */\n const getCall = interceptors.reduceRight((nextCall, nextInterceptor) => {\n return currentOptions => nextInterceptor(currentOptions, nextCall);\n }, (finalOptions) => getBottomInterceptingCall(channel, finalOptions, methodDefinition));\n return getCall(interceptorOptions);\n}\nexports.getInterceptingCall = getInterceptingCall;\n//# sourceMappingURL=client-interceptors.js.map","\"use strict\";\n/*\n * Copyright 2019 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Client = void 0;\nconst call_1 = require(\"./call\");\nconst channel_1 = require(\"./channel\");\nconst connectivity_state_1 = require(\"./connectivity-state\");\nconst constants_1 = require(\"./constants\");\nconst metadata_1 = require(\"./metadata\");\nconst client_interceptors_1 = require(\"./client-interceptors\");\nconst CHANNEL_SYMBOL = Symbol();\nconst INTERCEPTOR_SYMBOL = Symbol();\nconst INTERCEPTOR_PROVIDER_SYMBOL = Symbol();\nconst CALL_INVOCATION_TRANSFORMER_SYMBOL = Symbol();\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\nfunction getErrorStackString(error) {\n var _a;\n return ((_a = error.stack) === null || _a === void 0 ? void 0 : _a.split('\\n').slice(1).join('\\n')) || 'no stack trace available';\n}\n/**\n * A generic gRPC client. Primarily useful as a base class for all generated\n * clients.\n */\nclass Client {\n constructor(address, credentials, options = {}) {\n var _a, _b;\n options = Object.assign({}, options);\n this[INTERCEPTOR_SYMBOL] = (_a = options.interceptors) !== null && _a !== void 0 ? _a : [];\n delete options.interceptors;\n this[INTERCEPTOR_PROVIDER_SYMBOL] = (_b = options.interceptor_providers) !== null && _b !== void 0 ? _b : [];\n delete options.interceptor_providers;\n if (this[INTERCEPTOR_SYMBOL].length > 0 &&\n this[INTERCEPTOR_PROVIDER_SYMBOL].length > 0) {\n throw new Error('Both interceptors and interceptor_providers were passed as options ' +\n 'to the client constructor. Only one of these is allowed.');\n }\n this[CALL_INVOCATION_TRANSFORMER_SYMBOL] =\n options.callInvocationTransformer;\n delete options.callInvocationTransformer;\n if (options.channelOverride) {\n this[CHANNEL_SYMBOL] = options.channelOverride;\n }\n else if (options.channelFactoryOverride) {\n const channelFactoryOverride = options.channelFactoryOverride;\n delete options.channelFactoryOverride;\n this[CHANNEL_SYMBOL] = channelFactoryOverride(address, credentials, options);\n }\n else {\n this[CHANNEL_SYMBOL] = new channel_1.ChannelImplementation(address, credentials, options);\n }\n }\n close() {\n this[CHANNEL_SYMBOL].close();\n }\n getChannel() {\n return this[CHANNEL_SYMBOL];\n }\n waitForReady(deadline, callback) {\n const checkState = (err) => {\n if (err) {\n callback(new Error('Failed to connect before the deadline'));\n return;\n }\n let newState;\n try {\n newState = this[CHANNEL_SYMBOL].getConnectivityState(true);\n }\n catch (e) {\n callback(new Error('The channel has been closed'));\n return;\n }\n if (newState === connectivity_state_1.ConnectivityState.READY) {\n callback();\n }\n else {\n try {\n this[CHANNEL_SYMBOL].watchConnectivityState(newState, deadline, checkState);\n }\n catch (e) {\n callback(new Error('The channel has been closed'));\n }\n }\n };\n setImmediate(checkState);\n }\n checkOptionalUnaryResponseArguments(arg1, arg2, arg3) {\n if (isFunction(arg1)) {\n return { metadata: new metadata_1.Metadata(), options: {}, callback: arg1 };\n }\n else if (isFunction(arg2)) {\n if (arg1 instanceof metadata_1.Metadata) {\n return { metadata: arg1, options: {}, callback: arg2 };\n }\n else {\n return { metadata: new metadata_1.Metadata(), options: arg1, callback: arg2 };\n }\n }\n else {\n if (!(arg1 instanceof metadata_1.Metadata &&\n arg2 instanceof Object &&\n isFunction(arg3))) {\n throw new Error('Incorrect arguments passed');\n }\n return { metadata: arg1, options: arg2, callback: arg3 };\n }\n }\n makeUnaryRequest(method, serialize, deserialize, argument, metadata, options, callback) {\n var _a, _b;\n const checkedArguments = this.checkOptionalUnaryResponseArguments(metadata, options, callback);\n const methodDefinition = {\n path: method,\n requestStream: false,\n responseStream: false,\n requestSerialize: serialize,\n responseDeserialize: deserialize,\n };\n let callProperties = {\n argument: argument,\n metadata: checkedArguments.metadata,\n call: new call_1.ClientUnaryCallImpl(),\n channel: this[CHANNEL_SYMBOL],\n methodDefinition: methodDefinition,\n callOptions: checkedArguments.options,\n callback: checkedArguments.callback,\n };\n if (this[CALL_INVOCATION_TRANSFORMER_SYMBOL]) {\n callProperties = this[CALL_INVOCATION_TRANSFORMER_SYMBOL](callProperties);\n }\n const emitter = callProperties.call;\n const interceptorArgs = {\n clientInterceptors: this[INTERCEPTOR_SYMBOL],\n clientInterceptorProviders: this[INTERCEPTOR_PROVIDER_SYMBOL],\n callInterceptors: (_a = callProperties.callOptions.interceptors) !== null && _a !== void 0 ? _a : [],\n callInterceptorProviders: (_b = callProperties.callOptions.interceptor_providers) !== null && _b !== void 0 ? _b : [],\n };\n const call = (0, client_interceptors_1.getInterceptingCall)(interceptorArgs, callProperties.methodDefinition, callProperties.callOptions, callProperties.channel);\n /* This needs to happen before the emitter is used. Unfortunately we can't\n * enforce this with the type system. We need to construct this emitter\n * before calling the CallInvocationTransformer, and we need to create the\n * call after that. */\n emitter.call = call;\n let responseMessage = null;\n let receivedStatus = false;\n let callerStackError = new Error();\n call.start(callProperties.metadata, {\n onReceiveMetadata: metadata => {\n emitter.emit('metadata', metadata);\n },\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n onReceiveMessage(message) {\n if (responseMessage !== null) {\n call.cancelWithStatus(constants_1.Status.INTERNAL, 'Too many responses received');\n }\n responseMessage = message;\n },\n onReceiveStatus(status) {\n if (receivedStatus) {\n return;\n }\n receivedStatus = true;\n if (status.code === constants_1.Status.OK) {\n if (responseMessage === null) {\n const callerStack = getErrorStackString(callerStackError);\n callProperties.callback((0, call_1.callErrorFromStatus)({\n code: constants_1.Status.INTERNAL,\n details: 'No message received',\n metadata: status.metadata,\n }, callerStack));\n }\n else {\n callProperties.callback(null, responseMessage);\n }\n }\n else {\n const callerStack = getErrorStackString(callerStackError);\n callProperties.callback((0, call_1.callErrorFromStatus)(status, callerStack));\n }\n /* Avoid retaining the callerStackError object in the call context of\n * the status event handler. */\n callerStackError = null;\n emitter.emit('status', status);\n },\n });\n call.sendMessage(argument);\n call.halfClose();\n return emitter;\n }\n makeClientStreamRequest(method, serialize, deserialize, metadata, options, callback) {\n var _a, _b;\n const checkedArguments = this.checkOptionalUnaryResponseArguments(metadata, options, callback);\n const methodDefinition = {\n path: method,\n requestStream: true,\n responseStream: false,\n requestSerialize: serialize,\n responseDeserialize: deserialize,\n };\n let callProperties = {\n metadata: checkedArguments.metadata,\n call: new call_1.ClientWritableStreamImpl(serialize),\n channel: this[CHANNEL_SYMBOL],\n methodDefinition: methodDefinition,\n callOptions: checkedArguments.options,\n callback: checkedArguments.callback,\n };\n if (this[CALL_INVOCATION_TRANSFORMER_SYMBOL]) {\n callProperties = this[CALL_INVOCATION_TRANSFORMER_SYMBOL](callProperties);\n }\n const emitter = callProperties.call;\n const interceptorArgs = {\n clientInterceptors: this[INTERCEPTOR_SYMBOL],\n clientInterceptorProviders: this[INTERCEPTOR_PROVIDER_SYMBOL],\n callInterceptors: (_a = callProperties.callOptions.interceptors) !== null && _a !== void 0 ? _a : [],\n callInterceptorProviders: (_b = callProperties.callOptions.interceptor_providers) !== null && _b !== void 0 ? _b : [],\n };\n const call = (0, client_interceptors_1.getInterceptingCall)(interceptorArgs, callProperties.methodDefinition, callProperties.callOptions, callProperties.channel);\n /* This needs to happen before the emitter is used. Unfortunately we can't\n * enforce this with the type system. We need to construct this emitter\n * before calling the CallInvocationTransformer, and we need to create the\n * call after that. */\n emitter.call = call;\n let responseMessage = null;\n let receivedStatus = false;\n let callerStackError = new Error();\n call.start(callProperties.metadata, {\n onReceiveMetadata: metadata => {\n emitter.emit('metadata', metadata);\n },\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n onReceiveMessage(message) {\n if (responseMessage !== null) {\n call.cancelWithStatus(constants_1.Status.INTERNAL, 'Too many responses received');\n }\n responseMessage = message;\n },\n onReceiveStatus(status) {\n if (receivedStatus) {\n return;\n }\n receivedStatus = true;\n if (status.code === constants_1.Status.OK) {\n if (responseMessage === null) {\n const callerStack = getErrorStackString(callerStackError);\n callProperties.callback((0, call_1.callErrorFromStatus)({\n code: constants_1.Status.INTERNAL,\n details: 'No message received',\n metadata: status.metadata,\n }, callerStack));\n }\n else {\n callProperties.callback(null, responseMessage);\n }\n }\n else {\n const callerStack = getErrorStackString(callerStackError);\n callProperties.callback((0, call_1.callErrorFromStatus)(status, callerStack));\n }\n /* Avoid retaining the callerStackError object in the call context of\n * the status event handler. */\n callerStackError = null;\n emitter.emit('status', status);\n },\n });\n return emitter;\n }\n checkMetadataAndOptions(arg1, arg2) {\n let metadata;\n let options;\n if (arg1 instanceof metadata_1.Metadata) {\n metadata = arg1;\n if (arg2) {\n options = arg2;\n }\n else {\n options = {};\n }\n }\n else {\n if (arg1) {\n options = arg1;\n }\n else {\n options = {};\n }\n metadata = new metadata_1.Metadata();\n }\n return { metadata, options };\n }\n makeServerStreamRequest(method, serialize, deserialize, argument, metadata, options) {\n var _a, _b;\n const checkedArguments = this.checkMetadataAndOptions(metadata, options);\n const methodDefinition = {\n path: method,\n requestStream: false,\n responseStream: true,\n requestSerialize: serialize,\n responseDeserialize: deserialize,\n };\n let callProperties = {\n argument: argument,\n metadata: checkedArguments.metadata,\n call: new call_1.ClientReadableStreamImpl(deserialize),\n channel: this[CHANNEL_SYMBOL],\n methodDefinition: methodDefinition,\n callOptions: checkedArguments.options,\n };\n if (this[CALL_INVOCATION_TRANSFORMER_SYMBOL]) {\n callProperties = this[CALL_INVOCATION_TRANSFORMER_SYMBOL](callProperties);\n }\n const stream = callProperties.call;\n const interceptorArgs = {\n clientInterceptors: this[INTERCEPTOR_SYMBOL],\n clientInterceptorProviders: this[INTERCEPTOR_PROVIDER_SYMBOL],\n callInterceptors: (_a = callProperties.callOptions.interceptors) !== null && _a !== void 0 ? _a : [],\n callInterceptorProviders: (_b = callProperties.callOptions.interceptor_providers) !== null && _b !== void 0 ? _b : [],\n };\n const call = (0, client_interceptors_1.getInterceptingCall)(interceptorArgs, callProperties.methodDefinition, callProperties.callOptions, callProperties.channel);\n /* This needs to happen before the emitter is used. Unfortunately we can't\n * enforce this with the type system. We need to construct this emitter\n * before calling the CallInvocationTransformer, and we need to create the\n * call after that. */\n stream.call = call;\n let receivedStatus = false;\n let callerStackError = new Error();\n call.start(callProperties.metadata, {\n onReceiveMetadata(metadata) {\n stream.emit('metadata', metadata);\n },\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n onReceiveMessage(message) {\n stream.push(message);\n },\n onReceiveStatus(status) {\n if (receivedStatus) {\n return;\n }\n receivedStatus = true;\n stream.push(null);\n if (status.code !== constants_1.Status.OK) {\n const callerStack = getErrorStackString(callerStackError);\n stream.emit('error', (0, call_1.callErrorFromStatus)(status, callerStack));\n }\n /* Avoid retaining the callerStackError object in the call context of\n * the status event handler. */\n callerStackError = null;\n stream.emit('status', status);\n },\n });\n call.sendMessage(argument);\n call.halfClose();\n return stream;\n }\n makeBidiStreamRequest(method, serialize, deserialize, metadata, options) {\n var _a, _b;\n const checkedArguments = this.checkMetadataAndOptions(metadata, options);\n const methodDefinition = {\n path: method,\n requestStream: true,\n responseStream: true,\n requestSerialize: serialize,\n responseDeserialize: deserialize,\n };\n let callProperties = {\n metadata: checkedArguments.metadata,\n call: new call_1.ClientDuplexStreamImpl(serialize, deserialize),\n channel: this[CHANNEL_SYMBOL],\n methodDefinition: methodDefinition,\n callOptions: checkedArguments.options,\n };\n if (this[CALL_INVOCATION_TRANSFORMER_SYMBOL]) {\n callProperties = this[CALL_INVOCATION_TRANSFORMER_SYMBOL](callProperties);\n }\n const stream = callProperties.call;\n const interceptorArgs = {\n clientInterceptors: this[INTERCEPTOR_SYMBOL],\n clientInterceptorProviders: this[INTERCEPTOR_PROVIDER_SYMBOL],\n callInterceptors: (_a = callProperties.callOptions.interceptors) !== null && _a !== void 0 ? _a : [],\n callInterceptorProviders: (_b = callProperties.callOptions.interceptor_providers) !== null && _b !== void 0 ? _b : [],\n };\n const call = (0, client_interceptors_1.getInterceptingCall)(interceptorArgs, callProperties.methodDefinition, callProperties.callOptions, callProperties.channel);\n /* This needs to happen before the emitter is used. Unfortunately we can't\n * enforce this with the type system. We need to construct this emitter\n * before calling the CallInvocationTransformer, and we need to create the\n * call after that. */\n stream.call = call;\n let receivedStatus = false;\n let callerStackError = new Error();\n call.start(callProperties.metadata, {\n onReceiveMetadata(metadata) {\n stream.emit('metadata', metadata);\n },\n onReceiveMessage(message) {\n stream.push(message);\n },\n onReceiveStatus(status) {\n if (receivedStatus) {\n return;\n }\n receivedStatus = true;\n stream.push(null);\n if (status.code !== constants_1.Status.OK) {\n const callerStack = getErrorStackString(callerStackError);\n stream.emit('error', (0, call_1.callErrorFromStatus)(status, callerStack));\n }\n /* Avoid retaining the callerStackError object in the call context of\n * the status event handler. */\n callerStackError = null;\n stream.emit('status', status);\n },\n });\n return stream;\n }\n}\nexports.Client = Client;\n//# sourceMappingURL=client.js.map","\"use strict\";\n/*\n * Copyright 2021 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CompressionAlgorithms = void 0;\nvar CompressionAlgorithms;\n(function (CompressionAlgorithms) {\n CompressionAlgorithms[CompressionAlgorithms[\"identity\"] = 0] = \"identity\";\n CompressionAlgorithms[CompressionAlgorithms[\"deflate\"] = 1] = \"deflate\";\n CompressionAlgorithms[CompressionAlgorithms[\"gzip\"] = 2] = \"gzip\";\n})(CompressionAlgorithms || (exports.CompressionAlgorithms = CompressionAlgorithms = {}));\n//# sourceMappingURL=compression-algorithms.js.map","\"use strict\";\n/*\n * Copyright 2019 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CompressionFilterFactory = exports.CompressionFilter = void 0;\nconst zlib = require(\"zlib\");\nconst compression_algorithms_1 = require(\"./compression-algorithms\");\nconst constants_1 = require(\"./constants\");\nconst filter_1 = require(\"./filter\");\nconst logging = require(\"./logging\");\nconst isCompressionAlgorithmKey = (key) => {\n return (typeof key === 'number' && typeof compression_algorithms_1.CompressionAlgorithms[key] === 'string');\n};\nclass CompressionHandler {\n /**\n * @param message Raw uncompressed message bytes\n * @param compress Indicates whether the message should be compressed\n * @return Framed message, compressed if applicable\n */\n async writeMessage(message, compress) {\n let messageBuffer = message;\n if (compress) {\n messageBuffer = await this.compressMessage(messageBuffer);\n }\n const output = Buffer.allocUnsafe(messageBuffer.length + 5);\n output.writeUInt8(compress ? 1 : 0, 0);\n output.writeUInt32BE(messageBuffer.length, 1);\n messageBuffer.copy(output, 5);\n return output;\n }\n /**\n * @param data Framed message, possibly compressed\n * @return Uncompressed message\n */\n async readMessage(data) {\n const compressed = data.readUInt8(0) === 1;\n let messageBuffer = data.slice(5);\n if (compressed) {\n messageBuffer = await this.decompressMessage(messageBuffer);\n }\n return messageBuffer;\n }\n}\nclass IdentityHandler extends CompressionHandler {\n async compressMessage(message) {\n return message;\n }\n async writeMessage(message, compress) {\n const output = Buffer.allocUnsafe(message.length + 5);\n /* With \"identity\" compression, messages should always be marked as\n * uncompressed */\n output.writeUInt8(0, 0);\n output.writeUInt32BE(message.length, 1);\n message.copy(output, 5);\n return output;\n }\n decompressMessage(message) {\n return Promise.reject(new Error('Received compressed message but \"grpc-encoding\" header was identity'));\n }\n}\nclass DeflateHandler extends CompressionHandler {\n compressMessage(message) {\n return new Promise((resolve, reject) => {\n zlib.deflate(message, (err, output) => {\n if (err) {\n reject(err);\n }\n else {\n resolve(output);\n }\n });\n });\n }\n decompressMessage(message) {\n return new Promise((resolve, reject) => {\n zlib.inflate(message, (err, output) => {\n if (err) {\n reject(err);\n }\n else {\n resolve(output);\n }\n });\n });\n }\n}\nclass GzipHandler extends CompressionHandler {\n compressMessage(message) {\n return new Promise((resolve, reject) => {\n zlib.gzip(message, (err, output) => {\n if (err) {\n reject(err);\n }\n else {\n resolve(output);\n }\n });\n });\n }\n decompressMessage(message) {\n return new Promise((resolve, reject) => {\n zlib.unzip(message, (err, output) => {\n if (err) {\n reject(err);\n }\n else {\n resolve(output);\n }\n });\n });\n }\n}\nclass UnknownHandler extends CompressionHandler {\n constructor(compressionName) {\n super();\n this.compressionName = compressionName;\n }\n compressMessage(message) {\n return Promise.reject(new Error(`Received message compressed with unsupported compression method ${this.compressionName}`));\n }\n decompressMessage(message) {\n // This should be unreachable\n return Promise.reject(new Error(`Compression method not supported: ${this.compressionName}`));\n }\n}\nfunction getCompressionHandler(compressionName) {\n switch (compressionName) {\n case 'identity':\n return new IdentityHandler();\n case 'deflate':\n return new DeflateHandler();\n case 'gzip':\n return new GzipHandler();\n default:\n return new UnknownHandler(compressionName);\n }\n}\nclass CompressionFilter extends filter_1.BaseFilter {\n constructor(channelOptions, sharedFilterConfig) {\n var _a;\n super();\n this.sharedFilterConfig = sharedFilterConfig;\n this.sendCompression = new IdentityHandler();\n this.receiveCompression = new IdentityHandler();\n this.currentCompressionAlgorithm = 'identity';\n const compressionAlgorithmKey = channelOptions['grpc.default_compression_algorithm'];\n if (compressionAlgorithmKey !== undefined) {\n if (isCompressionAlgorithmKey(compressionAlgorithmKey)) {\n const clientSelectedEncoding = compression_algorithms_1.CompressionAlgorithms[compressionAlgorithmKey];\n const serverSupportedEncodings = (_a = sharedFilterConfig.serverSupportedEncodingHeader) === null || _a === void 0 ? void 0 : _a.split(',');\n /**\n * There are two possible situations here:\n * 1) We don't have any info yet from the server about what compression it supports\n * In that case we should just use what the client tells us to use\n * 2) We've previously received a response from the server including a grpc-accept-encoding header\n * In that case we only want to use the encoding chosen by the client if the server supports it\n */\n if (!serverSupportedEncodings ||\n serverSupportedEncodings.includes(clientSelectedEncoding)) {\n this.currentCompressionAlgorithm = clientSelectedEncoding;\n this.sendCompression = getCompressionHandler(this.currentCompressionAlgorithm);\n }\n }\n else {\n logging.log(constants_1.LogVerbosity.ERROR, `Invalid value provided for grpc.default_compression_algorithm option: ${compressionAlgorithmKey}`);\n }\n }\n }\n async sendMetadata(metadata) {\n const headers = await metadata;\n headers.set('grpc-accept-encoding', 'identity,deflate,gzip');\n headers.set('accept-encoding', 'identity');\n // No need to send the header if it's \"identity\" - behavior is identical; save the bandwidth\n if (this.currentCompressionAlgorithm === 'identity') {\n headers.remove('grpc-encoding');\n }\n else {\n headers.set('grpc-encoding', this.currentCompressionAlgorithm);\n }\n return headers;\n }\n receiveMetadata(metadata) {\n const receiveEncoding = metadata.get('grpc-encoding');\n if (receiveEncoding.length > 0) {\n const encoding = receiveEncoding[0];\n if (typeof encoding === 'string') {\n this.receiveCompression = getCompressionHandler(encoding);\n }\n }\n metadata.remove('grpc-encoding');\n /* Check to see if the compression we're using to send messages is supported by the server\n * If not, reset the sendCompression filter and have it use the default IdentityHandler */\n const serverSupportedEncodingsHeader = metadata.get('grpc-accept-encoding')[0];\n if (serverSupportedEncodingsHeader) {\n this.sharedFilterConfig.serverSupportedEncodingHeader =\n serverSupportedEncodingsHeader;\n const serverSupportedEncodings = serverSupportedEncodingsHeader.split(',');\n if (!serverSupportedEncodings.includes(this.currentCompressionAlgorithm)) {\n this.sendCompression = new IdentityHandler();\n this.currentCompressionAlgorithm = 'identity';\n }\n }\n metadata.remove('grpc-accept-encoding');\n return metadata;\n }\n async sendMessage(message) {\n var _a;\n /* This filter is special. The input message is the bare message bytes,\n * and the output is a framed and possibly compressed message. For this\n * reason, this filter should be at the bottom of the filter stack */\n const resolvedMessage = await message;\n let compress;\n if (this.sendCompression instanceof IdentityHandler) {\n compress = false;\n }\n else {\n compress = (((_a = resolvedMessage.flags) !== null && _a !== void 0 ? _a : 0) & 2 /* WriteFlags.NoCompress */) === 0;\n }\n return {\n message: await this.sendCompression.writeMessage(resolvedMessage.message, compress),\n flags: resolvedMessage.flags,\n };\n }\n async receiveMessage(message) {\n /* This filter is also special. The input message is framed and possibly\n * compressed, and the output message is deframed and uncompressed. So\n * this is another reason that this filter should be at the bottom of the\n * filter stack. */\n return this.receiveCompression.readMessage(await message);\n }\n}\nexports.CompressionFilter = CompressionFilter;\nclass CompressionFilterFactory {\n constructor(channel, options) {\n this.options = options;\n this.sharedFilterConfig = {};\n }\n createFilter() {\n return new CompressionFilter(this.options, this.sharedFilterConfig);\n }\n}\nexports.CompressionFilterFactory = CompressionFilterFactory;\n//# sourceMappingURL=compression-filter.js.map","\"use strict\";\n/*\n * Copyright 2021 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ConnectivityState = void 0;\nvar ConnectivityState;\n(function (ConnectivityState) {\n ConnectivityState[ConnectivityState[\"IDLE\"] = 0] = \"IDLE\";\n ConnectivityState[ConnectivityState[\"CONNECTING\"] = 1] = \"CONNECTING\";\n ConnectivityState[ConnectivityState[\"READY\"] = 2] = \"READY\";\n ConnectivityState[ConnectivityState[\"TRANSIENT_FAILURE\"] = 3] = \"TRANSIENT_FAILURE\";\n ConnectivityState[ConnectivityState[\"SHUTDOWN\"] = 4] = \"SHUTDOWN\";\n})(ConnectivityState || (exports.ConnectivityState = ConnectivityState = {}));\n//# sourceMappingURL=connectivity-state.js.map","\"use strict\";\n/*\n * Copyright 2019 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DEFAULT_MAX_RECEIVE_MESSAGE_LENGTH = exports.DEFAULT_MAX_SEND_MESSAGE_LENGTH = exports.Propagate = exports.LogVerbosity = exports.Status = void 0;\nvar Status;\n(function (Status) {\n Status[Status[\"OK\"] = 0] = \"OK\";\n Status[Status[\"CANCELLED\"] = 1] = \"CANCELLED\";\n Status[Status[\"UNKNOWN\"] = 2] = \"UNKNOWN\";\n Status[Status[\"INVALID_ARGUMENT\"] = 3] = \"INVALID_ARGUMENT\";\n Status[Status[\"DEADLINE_EXCEEDED\"] = 4] = \"DEADLINE_EXCEEDED\";\n Status[Status[\"NOT_FOUND\"] = 5] = \"NOT_FOUND\";\n Status[Status[\"ALREADY_EXISTS\"] = 6] = \"ALREADY_EXISTS\";\n Status[Status[\"PERMISSION_DENIED\"] = 7] = \"PERMISSION_DENIED\";\n Status[Status[\"RESOURCE_EXHAUSTED\"] = 8] = \"RESOURCE_EXHAUSTED\";\n Status[Status[\"FAILED_PRECONDITION\"] = 9] = \"FAILED_PRECONDITION\";\n Status[Status[\"ABORTED\"] = 10] = \"ABORTED\";\n Status[Status[\"OUT_OF_RANGE\"] = 11] = \"OUT_OF_RANGE\";\n Status[Status[\"UNIMPLEMENTED\"] = 12] = \"UNIMPLEMENTED\";\n Status[Status[\"INTERNAL\"] = 13] = \"INTERNAL\";\n Status[Status[\"UNAVAILABLE\"] = 14] = \"UNAVAILABLE\";\n Status[Status[\"DATA_LOSS\"] = 15] = \"DATA_LOSS\";\n Status[Status[\"UNAUTHENTICATED\"] = 16] = \"UNAUTHENTICATED\";\n})(Status || (exports.Status = Status = {}));\nvar LogVerbosity;\n(function (LogVerbosity) {\n LogVerbosity[LogVerbosity[\"DEBUG\"] = 0] = \"DEBUG\";\n LogVerbosity[LogVerbosity[\"INFO\"] = 1] = \"INFO\";\n LogVerbosity[LogVerbosity[\"ERROR\"] = 2] = \"ERROR\";\n LogVerbosity[LogVerbosity[\"NONE\"] = 3] = \"NONE\";\n})(LogVerbosity || (exports.LogVerbosity = LogVerbosity = {}));\n/**\n * NOTE: This enum is not currently used in any implemented API in this\n * library. It is included only for type parity with the other implementation.\n */\nvar Propagate;\n(function (Propagate) {\n Propagate[Propagate[\"DEADLINE\"] = 1] = \"DEADLINE\";\n Propagate[Propagate[\"CENSUS_STATS_CONTEXT\"] = 2] = \"CENSUS_STATS_CONTEXT\";\n Propagate[Propagate[\"CENSUS_TRACING_CONTEXT\"] = 4] = \"CENSUS_TRACING_CONTEXT\";\n Propagate[Propagate[\"CANCELLATION\"] = 8] = \"CANCELLATION\";\n // https://github.com/grpc/grpc/blob/master/include/grpc/impl/codegen/propagation_bits.h#L43\n Propagate[Propagate[\"DEFAULTS\"] = 65535] = \"DEFAULTS\";\n})(Propagate || (exports.Propagate = Propagate = {}));\n// -1 means unlimited\nexports.DEFAULT_MAX_SEND_MESSAGE_LENGTH = -1;\n// 4 MB default\nexports.DEFAULT_MAX_RECEIVE_MESSAGE_LENGTH = 4 * 1024 * 1024;\n//# sourceMappingURL=constants.js.map","\"use strict\";\n/*\n * Copyright 2022 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.restrictControlPlaneStatusCode = void 0;\nconst constants_1 = require(\"./constants\");\nconst INAPPROPRIATE_CONTROL_PLANE_CODES = [\n constants_1.Status.OK,\n constants_1.Status.INVALID_ARGUMENT,\n constants_1.Status.NOT_FOUND,\n constants_1.Status.ALREADY_EXISTS,\n constants_1.Status.FAILED_PRECONDITION,\n constants_1.Status.ABORTED,\n constants_1.Status.OUT_OF_RANGE,\n constants_1.Status.DATA_LOSS,\n];\nfunction restrictControlPlaneStatusCode(code, details) {\n if (INAPPROPRIATE_CONTROL_PLANE_CODES.includes(code)) {\n return {\n code: constants_1.Status.INTERNAL,\n details: `Invalid status from control plane: ${code} ${constants_1.Status[code]} ${details}`,\n };\n }\n else {\n return { code, details };\n }\n}\nexports.restrictControlPlaneStatusCode = restrictControlPlaneStatusCode;\n//# sourceMappingURL=control-plane-status.js.map","\"use strict\";\n/*\n * Copyright 2019 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.formatDateDifference = exports.deadlineToString = exports.getRelativeTimeout = exports.getDeadlineTimeoutString = exports.minDeadline = void 0;\nfunction minDeadline(...deadlineList) {\n let minValue = Infinity;\n for (const deadline of deadlineList) {\n const deadlineMsecs = deadline instanceof Date ? deadline.getTime() : deadline;\n if (deadlineMsecs < minValue) {\n minValue = deadlineMsecs;\n }\n }\n return minValue;\n}\nexports.minDeadline = minDeadline;\nconst units = [\n ['m', 1],\n ['S', 1000],\n ['M', 60 * 1000],\n ['H', 60 * 60 * 1000],\n];\nfunction getDeadlineTimeoutString(deadline) {\n const now = new Date().getTime();\n if (deadline instanceof Date) {\n deadline = deadline.getTime();\n }\n const timeoutMs = Math.max(deadline - now, 0);\n for (const [unit, factor] of units) {\n const amount = timeoutMs / factor;\n if (amount < 1e8) {\n return String(Math.ceil(amount)) + unit;\n }\n }\n throw new Error('Deadline is too far in the future');\n}\nexports.getDeadlineTimeoutString = getDeadlineTimeoutString;\n/**\n * See https://nodejs.org/api/timers.html#settimeoutcallback-delay-args\n * In particular, \"When delay is larger than 2147483647 or less than 1, the\n * delay will be set to 1. Non-integer delays are truncated to an integer.\"\n * This number of milliseconds is almost 25 days.\n */\nconst MAX_TIMEOUT_TIME = 2147483647;\n/**\n * Get the timeout value that should be passed to setTimeout now for the timer\n * to end at the deadline. For any deadline before now, the timer should end\n * immediately, represented by a value of 0. For any deadline more than\n * MAX_TIMEOUT_TIME milliseconds in the future, a timer cannot be set that will\n * end at that time, so it is treated as infinitely far in the future.\n * @param deadline\n * @returns\n */\nfunction getRelativeTimeout(deadline) {\n const deadlineMs = deadline instanceof Date ? deadline.getTime() : deadline;\n const now = new Date().getTime();\n const timeout = deadlineMs - now;\n if (timeout < 0) {\n return 0;\n }\n else if (timeout > MAX_TIMEOUT_TIME) {\n return Infinity;\n }\n else {\n return timeout;\n }\n}\nexports.getRelativeTimeout = getRelativeTimeout;\nfunction deadlineToString(deadline) {\n if (deadline instanceof Date) {\n return deadline.toISOString();\n }\n else {\n const dateDeadline = new Date(deadline);\n if (Number.isNaN(dateDeadline.getTime())) {\n return '' + deadline;\n }\n else {\n return dateDeadline.toISOString();\n }\n }\n}\nexports.deadlineToString = deadlineToString;\n/**\n * Calculate the difference between two dates as a number of seconds and format\n * it as a string.\n * @param startDate\n * @param endDate\n * @returns\n */\nfunction formatDateDifference(startDate, endDate) {\n return ((endDate.getTime() - startDate.getTime()) / 1000).toFixed(3) + 's';\n}\nexports.formatDateDifference = formatDateDifference;\n//# sourceMappingURL=deadline.js.map","\"use strict\";\n/*\n * Copyright 2022 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isDuration = exports.durationToMs = exports.msToDuration = void 0;\nfunction msToDuration(millis) {\n return {\n seconds: (millis / 1000) | 0,\n nanos: ((millis % 1000) * 1000000) | 0,\n };\n}\nexports.msToDuration = msToDuration;\nfunction durationToMs(duration) {\n return (duration.seconds * 1000 + duration.nanos / 1000000) | 0;\n}\nexports.durationToMs = durationToMs;\nfunction isDuration(value) {\n return typeof value.seconds === 'number' && typeof value.nanos === 'number';\n}\nexports.isDuration = isDuration;\n//# sourceMappingURL=duration.js.map","\"use strict\";\n/*\n * Copyright 2022 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getErrorCode = exports.getErrorMessage = void 0;\nfunction getErrorMessage(error) {\n if (error instanceof Error) {\n return error.message;\n }\n else {\n return String(error);\n }\n}\nexports.getErrorMessage = getErrorMessage;\nfunction getErrorCode(error) {\n if (typeof error === 'object' &&\n error !== null &&\n 'code' in error &&\n typeof error.code === 'number') {\n return error.code;\n }\n else {\n return null;\n }\n}\nexports.getErrorCode = getErrorCode;\n//# sourceMappingURL=error.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BaseSubchannelWrapper = exports.registerAdminService = exports.FilterStackFactory = exports.BaseFilter = exports.PickResultType = exports.QueuePicker = exports.UnavailablePicker = exports.ChildLoadBalancerHandler = exports.EndpointMap = exports.endpointHasAddress = exports.endpointToString = exports.subchannelAddressToString = exports.LeafLoadBalancer = exports.isLoadBalancerNameRegistered = exports.parseLoadBalancingConfig = exports.selectLbConfigFromList = exports.registerLoadBalancerType = exports.createChildChannelControlHelper = exports.BackoffTimeout = exports.durationToMs = exports.uriToString = exports.createResolver = exports.registerResolver = exports.log = exports.trace = void 0;\nvar logging_1 = require(\"./logging\");\nObject.defineProperty(exports, \"trace\", { enumerable: true, get: function () { return logging_1.trace; } });\nObject.defineProperty(exports, \"log\", { enumerable: true, get: function () { return logging_1.log; } });\nvar resolver_1 = require(\"./resolver\");\nObject.defineProperty(exports, \"registerResolver\", { enumerable: true, get: function () { return resolver_1.registerResolver; } });\nObject.defineProperty(exports, \"createResolver\", { enumerable: true, get: function () { return resolver_1.createResolver; } });\nvar uri_parser_1 = require(\"./uri-parser\");\nObject.defineProperty(exports, \"uriToString\", { enumerable: true, get: function () { return uri_parser_1.uriToString; } });\nvar duration_1 = require(\"./duration\");\nObject.defineProperty(exports, \"durationToMs\", { enumerable: true, get: function () { return duration_1.durationToMs; } });\nvar backoff_timeout_1 = require(\"./backoff-timeout\");\nObject.defineProperty(exports, \"BackoffTimeout\", { enumerable: true, get: function () { return backoff_timeout_1.BackoffTimeout; } });\nvar load_balancer_1 = require(\"./load-balancer\");\nObject.defineProperty(exports, \"createChildChannelControlHelper\", { enumerable: true, get: function () { return load_balancer_1.createChildChannelControlHelper; } });\nObject.defineProperty(exports, \"registerLoadBalancerType\", { enumerable: true, get: function () { return load_balancer_1.registerLoadBalancerType; } });\nObject.defineProperty(exports, \"selectLbConfigFromList\", { enumerable: true, get: function () { return load_balancer_1.selectLbConfigFromList; } });\nObject.defineProperty(exports, \"parseLoadBalancingConfig\", { enumerable: true, get: function () { return load_balancer_1.parseLoadBalancingConfig; } });\nObject.defineProperty(exports, \"isLoadBalancerNameRegistered\", { enumerable: true, get: function () { return load_balancer_1.isLoadBalancerNameRegistered; } });\nvar load_balancer_pick_first_1 = require(\"./load-balancer-pick-first\");\nObject.defineProperty(exports, \"LeafLoadBalancer\", { enumerable: true, get: function () { return load_balancer_pick_first_1.LeafLoadBalancer; } });\nvar subchannel_address_1 = require(\"./subchannel-address\");\nObject.defineProperty(exports, \"subchannelAddressToString\", { enumerable: true, get: function () { return subchannel_address_1.subchannelAddressToString; } });\nObject.defineProperty(exports, \"endpointToString\", { enumerable: true, get: function () { return subchannel_address_1.endpointToString; } });\nObject.defineProperty(exports, \"endpointHasAddress\", { enumerable: true, get: function () { return subchannel_address_1.endpointHasAddress; } });\nObject.defineProperty(exports, \"EndpointMap\", { enumerable: true, get: function () { return subchannel_address_1.EndpointMap; } });\nvar load_balancer_child_handler_1 = require(\"./load-balancer-child-handler\");\nObject.defineProperty(exports, \"ChildLoadBalancerHandler\", { enumerable: true, get: function () { return load_balancer_child_handler_1.ChildLoadBalancerHandler; } });\nvar picker_1 = require(\"./picker\");\nObject.defineProperty(exports, \"UnavailablePicker\", { enumerable: true, get: function () { return picker_1.UnavailablePicker; } });\nObject.defineProperty(exports, \"QueuePicker\", { enumerable: true, get: function () { return picker_1.QueuePicker; } });\nObject.defineProperty(exports, \"PickResultType\", { enumerable: true, get: function () { return picker_1.PickResultType; } });\nvar filter_1 = require(\"./filter\");\nObject.defineProperty(exports, \"BaseFilter\", { enumerable: true, get: function () { return filter_1.BaseFilter; } });\nvar filter_stack_1 = require(\"./filter-stack\");\nObject.defineProperty(exports, \"FilterStackFactory\", { enumerable: true, get: function () { return filter_stack_1.FilterStackFactory; } });\nvar admin_1 = require(\"./admin\");\nObject.defineProperty(exports, \"registerAdminService\", { enumerable: true, get: function () { return admin_1.registerAdminService; } });\nvar subchannel_interface_1 = require(\"./subchannel-interface\");\nObject.defineProperty(exports, \"BaseSubchannelWrapper\", { enumerable: true, get: function () { return subchannel_interface_1.BaseSubchannelWrapper; } });\n//# sourceMappingURL=experimental.js.map","\"use strict\";\n/*\n * Copyright 2019 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.FilterStackFactory = exports.FilterStack = void 0;\nclass FilterStack {\n constructor(filters) {\n this.filters = filters;\n }\n sendMetadata(metadata) {\n let result = metadata;\n for (let i = 0; i < this.filters.length; i++) {\n result = this.filters[i].sendMetadata(result);\n }\n return result;\n }\n receiveMetadata(metadata) {\n let result = metadata;\n for (let i = this.filters.length - 1; i >= 0; i--) {\n result = this.filters[i].receiveMetadata(result);\n }\n return result;\n }\n sendMessage(message) {\n let result = message;\n for (let i = 0; i < this.filters.length; i++) {\n result = this.filters[i].sendMessage(result);\n }\n return result;\n }\n receiveMessage(message) {\n let result = message;\n for (let i = this.filters.length - 1; i >= 0; i--) {\n result = this.filters[i].receiveMessage(result);\n }\n return result;\n }\n receiveTrailers(status) {\n let result = status;\n for (let i = this.filters.length - 1; i >= 0; i--) {\n result = this.filters[i].receiveTrailers(result);\n }\n return result;\n }\n push(filters) {\n this.filters.unshift(...filters);\n }\n getFilters() {\n return this.filters;\n }\n}\nexports.FilterStack = FilterStack;\nclass FilterStackFactory {\n constructor(factories) {\n this.factories = factories;\n }\n push(filterFactories) {\n this.factories.unshift(...filterFactories);\n }\n clone() {\n return new FilterStackFactory([...this.factories]);\n }\n createFilter() {\n return new FilterStack(this.factories.map(factory => factory.createFilter()));\n }\n}\nexports.FilterStackFactory = FilterStackFactory;\n//# sourceMappingURL=filter-stack.js.map","\"use strict\";\n/*\n * Copyright 2019 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BaseFilter = void 0;\nclass BaseFilter {\n async sendMetadata(metadata) {\n return metadata;\n }\n receiveMetadata(metadata) {\n return metadata;\n }\n async sendMessage(message) {\n return message;\n }\n async receiveMessage(message) {\n return message;\n }\n receiveTrailers(status) {\n return status;\n }\n}\nexports.BaseFilter = BaseFilter;\n//# sourceMappingURL=filter.js.map","\"use strict\";\n/*\n * Copyright 2019 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getProxiedConnection = exports.mapProxyName = void 0;\nconst logging_1 = require(\"./logging\");\nconst constants_1 = require(\"./constants\");\nconst resolver_1 = require(\"./resolver\");\nconst http = require(\"http\");\nconst tls = require(\"tls\");\nconst logging = require(\"./logging\");\nconst subchannel_address_1 = require(\"./subchannel-address\");\nconst uri_parser_1 = require(\"./uri-parser\");\nconst url_1 = require(\"url\");\nconst resolver_dns_1 = require(\"./resolver-dns\");\nconst TRACER_NAME = 'proxy';\nfunction trace(text) {\n logging.trace(constants_1.LogVerbosity.DEBUG, TRACER_NAME, text);\n}\nfunction getProxyInfo() {\n let proxyEnv = '';\n let envVar = '';\n /* Prefer using 'grpc_proxy'. Fallback on 'http_proxy' if it is not set.\n * Also prefer using 'https_proxy' with fallback on 'http_proxy'. The\n * fallback behavior can be removed if there's a demand for it.\n */\n if (process.env.grpc_proxy) {\n envVar = 'grpc_proxy';\n proxyEnv = process.env.grpc_proxy;\n }\n else if (process.env.https_proxy) {\n envVar = 'https_proxy';\n proxyEnv = process.env.https_proxy;\n }\n else if (process.env.http_proxy) {\n envVar = 'http_proxy';\n proxyEnv = process.env.http_proxy;\n }\n else {\n return {};\n }\n let proxyUrl;\n try {\n proxyUrl = new url_1.URL(proxyEnv);\n }\n catch (e) {\n (0, logging_1.log)(constants_1.LogVerbosity.ERROR, `cannot parse value of \"${envVar}\" env var`);\n return {};\n }\n if (proxyUrl.protocol !== 'http:') {\n (0, logging_1.log)(constants_1.LogVerbosity.ERROR, `\"${proxyUrl.protocol}\" scheme not supported in proxy URI`);\n return {};\n }\n let userCred = null;\n if (proxyUrl.username) {\n if (proxyUrl.password) {\n (0, logging_1.log)(constants_1.LogVerbosity.INFO, 'userinfo found in proxy URI');\n userCred = `${proxyUrl.username}:${proxyUrl.password}`;\n }\n else {\n userCred = proxyUrl.username;\n }\n }\n const hostname = proxyUrl.hostname;\n let port = proxyUrl.port;\n /* The proxy URL uses the scheme \"http:\", which has a default port number of\n * 80. We need to set that explicitly here if it is omitted because otherwise\n * it will use gRPC's default port 443. */\n if (port === '') {\n port = '80';\n }\n const result = {\n address: `${hostname}:${port}`,\n };\n if (userCred) {\n result.creds = userCred;\n }\n trace('Proxy server ' + result.address + ' set by environment variable ' + envVar);\n return result;\n}\nfunction getNoProxyHostList() {\n /* Prefer using 'no_grpc_proxy'. Fallback on 'no_proxy' if it is not set. */\n let noProxyStr = process.env.no_grpc_proxy;\n let envVar = 'no_grpc_proxy';\n if (!noProxyStr) {\n noProxyStr = process.env.no_proxy;\n envVar = 'no_proxy';\n }\n if (noProxyStr) {\n trace('No proxy server list set by environment variable ' + envVar);\n return noProxyStr.split(',');\n }\n else {\n return [];\n }\n}\nfunction mapProxyName(target, options) {\n var _a;\n const noProxyResult = {\n target: target,\n extraOptions: {},\n };\n if (((_a = options['grpc.enable_http_proxy']) !== null && _a !== void 0 ? _a : 1) === 0) {\n return noProxyResult;\n }\n if (target.scheme === 'unix') {\n return noProxyResult;\n }\n const proxyInfo = getProxyInfo();\n if (!proxyInfo.address) {\n return noProxyResult;\n }\n const hostPort = (0, uri_parser_1.splitHostPort)(target.path);\n if (!hostPort) {\n return noProxyResult;\n }\n const serverHost = hostPort.host;\n for (const host of getNoProxyHostList()) {\n if (host === serverHost) {\n trace('Not using proxy for target in no_proxy list: ' + (0, uri_parser_1.uriToString)(target));\n return noProxyResult;\n }\n }\n const extraOptions = {\n 'grpc.http_connect_target': (0, uri_parser_1.uriToString)(target),\n };\n if (proxyInfo.creds) {\n extraOptions['grpc.http_connect_creds'] = proxyInfo.creds;\n }\n return {\n target: {\n scheme: 'dns',\n path: proxyInfo.address,\n },\n extraOptions: extraOptions,\n };\n}\nexports.mapProxyName = mapProxyName;\nfunction getProxiedConnection(address, channelOptions, connectionOptions) {\n var _a;\n if (!('grpc.http_connect_target' in channelOptions)) {\n return Promise.resolve({});\n }\n const realTarget = channelOptions['grpc.http_connect_target'];\n const parsedTarget = (0, uri_parser_1.parseUri)(realTarget);\n if (parsedTarget === null) {\n return Promise.resolve({});\n }\n const splitHostPost = (0, uri_parser_1.splitHostPort)(parsedTarget.path);\n if (splitHostPost === null) {\n return Promise.resolve({});\n }\n const hostPort = `${splitHostPost.host}:${(_a = splitHostPost.port) !== null && _a !== void 0 ? _a : resolver_dns_1.DEFAULT_PORT}`;\n const options = {\n method: 'CONNECT',\n path: hostPort,\n };\n const headers = {\n Host: hostPort,\n };\n // Connect to the subchannel address as a proxy\n if ((0, subchannel_address_1.isTcpSubchannelAddress)(address)) {\n options.host = address.host;\n options.port = address.port;\n }\n else {\n options.socketPath = address.path;\n }\n if ('grpc.http_connect_creds' in channelOptions) {\n headers['Proxy-Authorization'] =\n 'Basic ' +\n Buffer.from(channelOptions['grpc.http_connect_creds']).toString('base64');\n }\n options.headers = headers;\n const proxyAddressString = (0, subchannel_address_1.subchannelAddressToString)(address);\n trace('Using proxy ' + proxyAddressString + ' to connect to ' + options.path);\n return new Promise((resolve, reject) => {\n const request = http.request(options);\n request.once('connect', (res, socket, head) => {\n var _a;\n request.removeAllListeners();\n socket.removeAllListeners();\n if (res.statusCode === 200) {\n trace('Successfully connected to ' +\n options.path +\n ' through proxy ' +\n proxyAddressString);\n if ('secureContext' in connectionOptions) {\n /* The proxy is connecting to a TLS server, so upgrade this socket\n * connection to a TLS connection.\n * This is a workaround for https://github.com/nodejs/node/issues/32922\n * See https://github.com/grpc/grpc-node/pull/1369 for more info. */\n const targetPath = (0, resolver_1.getDefaultAuthority)(parsedTarget);\n const hostPort = (0, uri_parser_1.splitHostPort)(targetPath);\n const remoteHost = (_a = hostPort === null || hostPort === void 0 ? void 0 : hostPort.host) !== null && _a !== void 0 ? _a : targetPath;\n const cts = tls.connect(Object.assign({ host: remoteHost, servername: remoteHost, socket: socket }, connectionOptions), () => {\n trace('Successfully established a TLS connection to ' +\n options.path +\n ' through proxy ' +\n proxyAddressString);\n resolve({ socket: cts, realTarget: parsedTarget });\n });\n cts.on('error', (error) => {\n trace('Failed to establish a TLS connection to ' +\n options.path +\n ' through proxy ' +\n proxyAddressString +\n ' with error ' +\n error.message);\n reject();\n });\n }\n else {\n trace('Successfully established a plaintext connection to ' +\n options.path +\n ' through proxy ' +\n proxyAddressString);\n resolve({\n socket,\n realTarget: parsedTarget,\n });\n }\n }\n else {\n (0, logging_1.log)(constants_1.LogVerbosity.ERROR, 'Failed to connect to ' +\n options.path +\n ' through proxy ' +\n proxyAddressString +\n ' with status ' +\n res.statusCode);\n reject();\n }\n });\n request.once('error', err => {\n request.removeAllListeners();\n (0, logging_1.log)(constants_1.LogVerbosity.ERROR, 'Failed to connect to proxy ' +\n proxyAddressString +\n ' with error ' +\n err.message);\n reject();\n });\n request.end();\n });\n}\nexports.getProxiedConnection = getProxiedConnection;\n//# sourceMappingURL=http_proxy.js.map","\"use strict\";\n/*\n * Copyright 2019 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.experimental = exports.ServerInterceptingCall = exports.ResponderBuilder = exports.ServerListenerBuilder = exports.addAdminServicesToServer = exports.getChannelzHandlers = exports.getChannelzServiceDefinition = exports.InterceptorConfigurationError = exports.InterceptingCall = exports.RequesterBuilder = exports.ListenerBuilder = exports.StatusBuilder = exports.getClientChannel = exports.ServerCredentials = exports.Server = exports.setLogVerbosity = exports.setLogger = exports.load = exports.loadObject = exports.CallCredentials = exports.ChannelCredentials = exports.waitForClientReady = exports.closeClient = exports.Channel = exports.makeGenericClientConstructor = exports.makeClientConstructor = exports.loadPackageDefinition = exports.Client = exports.compressionAlgorithms = exports.propagate = exports.connectivityState = exports.status = exports.logVerbosity = exports.Metadata = exports.credentials = void 0;\nconst call_credentials_1 = require(\"./call-credentials\");\nObject.defineProperty(exports, \"CallCredentials\", { enumerable: true, get: function () { return call_credentials_1.CallCredentials; } });\nconst channel_1 = require(\"./channel\");\nObject.defineProperty(exports, \"Channel\", { enumerable: true, get: function () { return channel_1.ChannelImplementation; } });\nconst compression_algorithms_1 = require(\"./compression-algorithms\");\nObject.defineProperty(exports, \"compressionAlgorithms\", { enumerable: true, get: function () { return compression_algorithms_1.CompressionAlgorithms; } });\nconst connectivity_state_1 = require(\"./connectivity-state\");\nObject.defineProperty(exports, \"connectivityState\", { enumerable: true, get: function () { return connectivity_state_1.ConnectivityState; } });\nconst channel_credentials_1 = require(\"./channel-credentials\");\nObject.defineProperty(exports, \"ChannelCredentials\", { enumerable: true, get: function () { return channel_credentials_1.ChannelCredentials; } });\nconst client_1 = require(\"./client\");\nObject.defineProperty(exports, \"Client\", { enumerable: true, get: function () { return client_1.Client; } });\nconst constants_1 = require(\"./constants\");\nObject.defineProperty(exports, \"logVerbosity\", { enumerable: true, get: function () { return constants_1.LogVerbosity; } });\nObject.defineProperty(exports, \"status\", { enumerable: true, get: function () { return constants_1.Status; } });\nObject.defineProperty(exports, \"propagate\", { enumerable: true, get: function () { return constants_1.Propagate; } });\nconst logging = require(\"./logging\");\nconst make_client_1 = require(\"./make-client\");\nObject.defineProperty(exports, \"loadPackageDefinition\", { enumerable: true, get: function () { return make_client_1.loadPackageDefinition; } });\nObject.defineProperty(exports, \"makeClientConstructor\", { enumerable: true, get: function () { return make_client_1.makeClientConstructor; } });\nObject.defineProperty(exports, \"makeGenericClientConstructor\", { enumerable: true, get: function () { return make_client_1.makeClientConstructor; } });\nconst metadata_1 = require(\"./metadata\");\nObject.defineProperty(exports, \"Metadata\", { enumerable: true, get: function () { return metadata_1.Metadata; } });\nconst server_1 = require(\"./server\");\nObject.defineProperty(exports, \"Server\", { enumerable: true, get: function () { return server_1.Server; } });\nconst server_credentials_1 = require(\"./server-credentials\");\nObject.defineProperty(exports, \"ServerCredentials\", { enumerable: true, get: function () { return server_credentials_1.ServerCredentials; } });\nconst status_builder_1 = require(\"./status-builder\");\nObject.defineProperty(exports, \"StatusBuilder\", { enumerable: true, get: function () { return status_builder_1.StatusBuilder; } });\n/**** Client Credentials ****/\n// Using assign only copies enumerable properties, which is what we want\nexports.credentials = {\n /**\n * Combine a ChannelCredentials with any number of CallCredentials into a\n * single ChannelCredentials object.\n * @param channelCredentials The ChannelCredentials object.\n * @param callCredentials Any number of CallCredentials objects.\n * @return The resulting ChannelCredentials object.\n */\n combineChannelCredentials: (channelCredentials, ...callCredentials) => {\n return callCredentials.reduce((acc, other) => acc.compose(other), channelCredentials);\n },\n /**\n * Combine any number of CallCredentials into a single CallCredentials\n * object.\n * @param first The first CallCredentials object.\n * @param additional Any number of additional CallCredentials objects.\n * @return The resulting CallCredentials object.\n */\n combineCallCredentials: (first, ...additional) => {\n return additional.reduce((acc, other) => acc.compose(other), first);\n },\n // from channel-credentials.ts\n createInsecure: channel_credentials_1.ChannelCredentials.createInsecure,\n createSsl: channel_credentials_1.ChannelCredentials.createSsl,\n createFromSecureContext: channel_credentials_1.ChannelCredentials.createFromSecureContext,\n // from call-credentials.ts\n createFromMetadataGenerator: call_credentials_1.CallCredentials.createFromMetadataGenerator,\n createFromGoogleCredential: call_credentials_1.CallCredentials.createFromGoogleCredential,\n createEmpty: call_credentials_1.CallCredentials.createEmpty,\n};\n/**\n * Close a Client object.\n * @param client The client to close.\n */\nconst closeClient = (client) => client.close();\nexports.closeClient = closeClient;\nconst waitForClientReady = (client, deadline, callback) => client.waitForReady(deadline, callback);\nexports.waitForClientReady = waitForClientReady;\n/* eslint-enable @typescript-eslint/no-explicit-any */\n/**** Unimplemented function stubs ****/\n/* eslint-disable @typescript-eslint/no-explicit-any */\nconst loadObject = (value, options) => {\n throw new Error('Not available in this library. Use @grpc/proto-loader and loadPackageDefinition instead');\n};\nexports.loadObject = loadObject;\nconst load = (filename, format, options) => {\n throw new Error('Not available in this library. Use @grpc/proto-loader and loadPackageDefinition instead');\n};\nexports.load = load;\nconst setLogger = (logger) => {\n logging.setLogger(logger);\n};\nexports.setLogger = setLogger;\nconst setLogVerbosity = (verbosity) => {\n logging.setLoggerVerbosity(verbosity);\n};\nexports.setLogVerbosity = setLogVerbosity;\nconst getClientChannel = (client) => {\n return client_1.Client.prototype.getChannel.call(client);\n};\nexports.getClientChannel = getClientChannel;\nvar client_interceptors_1 = require(\"./client-interceptors\");\nObject.defineProperty(exports, \"ListenerBuilder\", { enumerable: true, get: function () { return client_interceptors_1.ListenerBuilder; } });\nObject.defineProperty(exports, \"RequesterBuilder\", { enumerable: true, get: function () { return client_interceptors_1.RequesterBuilder; } });\nObject.defineProperty(exports, \"InterceptingCall\", { enumerable: true, get: function () { return client_interceptors_1.InterceptingCall; } });\nObject.defineProperty(exports, \"InterceptorConfigurationError\", { enumerable: true, get: function () { return client_interceptors_1.InterceptorConfigurationError; } });\nvar channelz_1 = require(\"./channelz\");\nObject.defineProperty(exports, \"getChannelzServiceDefinition\", { enumerable: true, get: function () { return channelz_1.getChannelzServiceDefinition; } });\nObject.defineProperty(exports, \"getChannelzHandlers\", { enumerable: true, get: function () { return channelz_1.getChannelzHandlers; } });\nvar admin_1 = require(\"./admin\");\nObject.defineProperty(exports, \"addAdminServicesToServer\", { enumerable: true, get: function () { return admin_1.addAdminServicesToServer; } });\nvar server_interceptors_1 = require(\"./server-interceptors\");\nObject.defineProperty(exports, \"ServerListenerBuilder\", { enumerable: true, get: function () { return server_interceptors_1.ServerListenerBuilder; } });\nObject.defineProperty(exports, \"ResponderBuilder\", { enumerable: true, get: function () { return server_interceptors_1.ResponderBuilder; } });\nObject.defineProperty(exports, \"ServerInterceptingCall\", { enumerable: true, get: function () { return server_interceptors_1.ServerInterceptingCall; } });\nconst experimental = require(\"./experimental\");\nexports.experimental = experimental;\nconst resolver_dns = require(\"./resolver-dns\");\nconst resolver_uds = require(\"./resolver-uds\");\nconst resolver_ip = require(\"./resolver-ip\");\nconst load_balancer_pick_first = require(\"./load-balancer-pick-first\");\nconst load_balancer_round_robin = require(\"./load-balancer-round-robin\");\nconst load_balancer_outlier_detection = require(\"./load-balancer-outlier-detection\");\nconst channelz = require(\"./channelz\");\n(() => {\n resolver_dns.setup();\n resolver_uds.setup();\n resolver_ip.setup();\n load_balancer_pick_first.setup();\n load_balancer_round_robin.setup();\n load_balancer_outlier_detection.setup();\n channelz.setup();\n})();\n//# sourceMappingURL=index.js.map","\"use strict\";\n/*\n * Copyright 2019 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.InternalChannel = void 0;\nconst channel_credentials_1 = require(\"./channel-credentials\");\nconst resolving_load_balancer_1 = require(\"./resolving-load-balancer\");\nconst subchannel_pool_1 = require(\"./subchannel-pool\");\nconst picker_1 = require(\"./picker\");\nconst constants_1 = require(\"./constants\");\nconst filter_stack_1 = require(\"./filter-stack\");\nconst compression_filter_1 = require(\"./compression-filter\");\nconst resolver_1 = require(\"./resolver\");\nconst logging_1 = require(\"./logging\");\nconst max_message_size_filter_1 = require(\"./max-message-size-filter\");\nconst http_proxy_1 = require(\"./http_proxy\");\nconst uri_parser_1 = require(\"./uri-parser\");\nconst connectivity_state_1 = require(\"./connectivity-state\");\nconst channelz_1 = require(\"./channelz\");\nconst load_balancing_call_1 = require(\"./load-balancing-call\");\nconst deadline_1 = require(\"./deadline\");\nconst resolving_call_1 = require(\"./resolving-call\");\nconst call_number_1 = require(\"./call-number\");\nconst control_plane_status_1 = require(\"./control-plane-status\");\nconst retrying_call_1 = require(\"./retrying-call\");\nconst subchannel_interface_1 = require(\"./subchannel-interface\");\n/**\n * See https://nodejs.org/api/timers.html#timers_setinterval_callback_delay_args\n */\nconst MAX_TIMEOUT_TIME = 2147483647;\nconst MIN_IDLE_TIMEOUT_MS = 1000;\n// 30 minutes\nconst DEFAULT_IDLE_TIMEOUT_MS = 30 * 60 * 1000;\nconst RETRY_THROTTLER_MAP = new Map();\nconst DEFAULT_RETRY_BUFFER_SIZE_BYTES = 1 << 24; // 16 MB\nconst DEFAULT_PER_RPC_RETRY_BUFFER_SIZE_BYTES = 1 << 20; // 1 MB\nclass ChannelSubchannelWrapper extends subchannel_interface_1.BaseSubchannelWrapper {\n constructor(childSubchannel, channel) {\n super(childSubchannel);\n this.channel = channel;\n this.refCount = 0;\n this.subchannelStateListener = (subchannel, previousState, newState, keepaliveTime) => {\n channel.throttleKeepalive(keepaliveTime);\n };\n childSubchannel.addConnectivityStateListener(this.subchannelStateListener);\n }\n ref() {\n this.child.ref();\n this.refCount += 1;\n }\n unref() {\n this.child.unref();\n this.refCount -= 1;\n if (this.refCount <= 0) {\n this.child.removeConnectivityStateListener(this.subchannelStateListener);\n this.channel.removeWrappedSubchannel(this);\n }\n }\n}\nclass InternalChannel {\n constructor(target, credentials, options) {\n var _a, _b, _c, _d, _e, _f, _g, _h;\n this.credentials = credentials;\n this.options = options;\n this.connectivityState = connectivity_state_1.ConnectivityState.IDLE;\n this.currentPicker = new picker_1.UnavailablePicker();\n /**\n * Calls queued up to get a call config. Should only be populated before the\n * first time the resolver returns a result, which includes the ConfigSelector.\n */\n this.configSelectionQueue = [];\n this.pickQueue = [];\n this.connectivityStateWatchers = [];\n this.configSelector = null;\n /**\n * This is the error from the name resolver if it failed most recently. It\n * is only used to end calls that start while there is no config selector\n * and the name resolver is in backoff, so it should be nulled if\n * configSelector becomes set or the channel state becomes anything other\n * than TRANSIENT_FAILURE.\n */\n this.currentResolutionError = null;\n this.wrappedSubchannels = new Set();\n this.callCount = 0;\n this.idleTimer = null;\n // Channelz info\n this.channelzEnabled = true;\n this.callTracker = new channelz_1.ChannelzCallTracker();\n this.childrenTracker = new channelz_1.ChannelzChildrenTracker();\n /**\n * Randomly generated ID to be passed to the config selector, for use by\n * ring_hash in xDS. An integer distributed approximately uniformly between\n * 0 and MAX_SAFE_INTEGER.\n */\n this.randomChannelId = Math.floor(Math.random() * Number.MAX_SAFE_INTEGER);\n if (typeof target !== 'string') {\n throw new TypeError('Channel target must be a string');\n }\n if (!(credentials instanceof channel_credentials_1.ChannelCredentials)) {\n throw new TypeError('Channel credentials must be a ChannelCredentials object');\n }\n if (options) {\n if (typeof options !== 'object') {\n throw new TypeError('Channel options must be an object');\n }\n }\n this.originalTarget = target;\n const originalTargetUri = (0, uri_parser_1.parseUri)(target);\n if (originalTargetUri === null) {\n throw new Error(`Could not parse target name \"${target}\"`);\n }\n /* This ensures that the target has a scheme that is registered with the\n * resolver */\n const defaultSchemeMapResult = (0, resolver_1.mapUriDefaultScheme)(originalTargetUri);\n if (defaultSchemeMapResult === null) {\n throw new Error(`Could not find a default scheme for target name \"${target}\"`);\n }\n this.callRefTimer = setInterval(() => { }, MAX_TIMEOUT_TIME);\n (_b = (_a = this.callRefTimer).unref) === null || _b === void 0 ? void 0 : _b.call(_a);\n if (this.options['grpc.enable_channelz'] === 0) {\n this.channelzEnabled = false;\n }\n this.channelzTrace = new channelz_1.ChannelzTrace();\n this.channelzRef = (0, channelz_1.registerChannelzChannel)(target, () => this.getChannelzInfo(), this.channelzEnabled);\n if (this.channelzEnabled) {\n this.channelzTrace.addTrace('CT_INFO', 'Channel created');\n }\n if (this.options['grpc.default_authority']) {\n this.defaultAuthority = this.options['grpc.default_authority'];\n }\n else {\n this.defaultAuthority = (0, resolver_1.getDefaultAuthority)(defaultSchemeMapResult);\n }\n const proxyMapResult = (0, http_proxy_1.mapProxyName)(defaultSchemeMapResult, options);\n this.target = proxyMapResult.target;\n this.options = Object.assign({}, this.options, proxyMapResult.extraOptions);\n /* The global boolean parameter to getSubchannelPool has the inverse meaning to what\n * the grpc.use_local_subchannel_pool channel option means. */\n this.subchannelPool = (0, subchannel_pool_1.getSubchannelPool)(((_c = options['grpc.use_local_subchannel_pool']) !== null && _c !== void 0 ? _c : 0) === 0);\n this.retryBufferTracker = new retrying_call_1.MessageBufferTracker((_d = options['grpc.retry_buffer_size']) !== null && _d !== void 0 ? _d : DEFAULT_RETRY_BUFFER_SIZE_BYTES, (_e = options['grpc.per_rpc_retry_buffer_size']) !== null && _e !== void 0 ? _e : DEFAULT_PER_RPC_RETRY_BUFFER_SIZE_BYTES);\n this.keepaliveTime = (_f = options['grpc.keepalive_time_ms']) !== null && _f !== void 0 ? _f : -1;\n this.idleTimeoutMs = Math.max((_g = options['grpc.client_idle_timeout_ms']) !== null && _g !== void 0 ? _g : DEFAULT_IDLE_TIMEOUT_MS, MIN_IDLE_TIMEOUT_MS);\n const channelControlHelper = {\n createSubchannel: (subchannelAddress, subchannelArgs) => {\n const subchannel = this.subchannelPool.getOrCreateSubchannel(this.target, subchannelAddress, Object.assign({}, this.options, subchannelArgs), this.credentials);\n subchannel.throttleKeepalive(this.keepaliveTime);\n if (this.channelzEnabled) {\n this.channelzTrace.addTrace('CT_INFO', 'Created subchannel or used existing subchannel', subchannel.getChannelzRef());\n }\n const wrappedSubchannel = new ChannelSubchannelWrapper(subchannel, this);\n this.wrappedSubchannels.add(wrappedSubchannel);\n return wrappedSubchannel;\n },\n updateState: (connectivityState, picker) => {\n this.currentPicker = picker;\n const queueCopy = this.pickQueue.slice();\n this.pickQueue = [];\n if (queueCopy.length > 0) {\n this.callRefTimerUnref();\n }\n for (const call of queueCopy) {\n call.doPick();\n }\n this.updateState(connectivityState);\n },\n requestReresolution: () => {\n // This should never be called.\n throw new Error('Resolving load balancer should never call requestReresolution');\n },\n addChannelzChild: (child) => {\n if (this.channelzEnabled) {\n this.childrenTracker.refChild(child);\n }\n },\n removeChannelzChild: (child) => {\n if (this.channelzEnabled) {\n this.childrenTracker.unrefChild(child);\n }\n },\n };\n this.resolvingLoadBalancer = new resolving_load_balancer_1.ResolvingLoadBalancer(this.target, channelControlHelper, options, (serviceConfig, configSelector) => {\n if (serviceConfig.retryThrottling) {\n RETRY_THROTTLER_MAP.set(this.getTarget(), new retrying_call_1.RetryThrottler(serviceConfig.retryThrottling.maxTokens, serviceConfig.retryThrottling.tokenRatio, RETRY_THROTTLER_MAP.get(this.getTarget())));\n }\n else {\n RETRY_THROTTLER_MAP.delete(this.getTarget());\n }\n if (this.channelzEnabled) {\n this.channelzTrace.addTrace('CT_INFO', 'Address resolution succeeded');\n }\n this.configSelector = configSelector;\n this.currentResolutionError = null;\n /* We process the queue asynchronously to ensure that the corresponding\n * load balancer update has completed. */\n process.nextTick(() => {\n const localQueue = this.configSelectionQueue;\n this.configSelectionQueue = [];\n if (localQueue.length > 0) {\n this.callRefTimerUnref();\n }\n for (const call of localQueue) {\n call.getConfig();\n }\n });\n }, status => {\n if (this.channelzEnabled) {\n this.channelzTrace.addTrace('CT_WARNING', 'Address resolution failed with code ' +\n status.code +\n ' and details \"' +\n status.details +\n '\"');\n }\n if (this.configSelectionQueue.length > 0) {\n this.trace('Name resolution failed with calls queued for config selection');\n }\n if (this.configSelector === null) {\n this.currentResolutionError = Object.assign(Object.assign({}, (0, control_plane_status_1.restrictControlPlaneStatusCode)(status.code, status.details)), { metadata: status.metadata });\n }\n const localQueue = this.configSelectionQueue;\n this.configSelectionQueue = [];\n if (localQueue.length > 0) {\n this.callRefTimerUnref();\n }\n for (const call of localQueue) {\n call.reportResolverError(status);\n }\n });\n this.filterStackFactory = new filter_stack_1.FilterStackFactory([\n new max_message_size_filter_1.MaxMessageSizeFilterFactory(this.options),\n new compression_filter_1.CompressionFilterFactory(this, this.options),\n ]);\n this.trace('Channel constructed with options ' +\n JSON.stringify(options, undefined, 2));\n const error = new Error();\n (0, logging_1.trace)(constants_1.LogVerbosity.DEBUG, 'channel_stacktrace', '(' +\n this.channelzRef.id +\n ') ' +\n 'Channel constructed \\n' +\n ((_h = error.stack) === null || _h === void 0 ? void 0 : _h.substring(error.stack.indexOf('\\n') + 1)));\n this.lastActivityTimestamp = new Date();\n }\n getChannelzInfo() {\n return {\n target: this.originalTarget,\n state: this.connectivityState,\n trace: this.channelzTrace,\n callTracker: this.callTracker,\n children: this.childrenTracker.getChildLists(),\n };\n }\n trace(text, verbosityOverride) {\n (0, logging_1.trace)(verbosityOverride !== null && verbosityOverride !== void 0 ? verbosityOverride : constants_1.LogVerbosity.DEBUG, 'channel', '(' + this.channelzRef.id + ') ' + (0, uri_parser_1.uriToString)(this.target) + ' ' + text);\n }\n callRefTimerRef() {\n var _a, _b, _c, _d;\n // If the hasRef function does not exist, always run the code\n if (!((_b = (_a = this.callRefTimer).hasRef) === null || _b === void 0 ? void 0 : _b.call(_a))) {\n this.trace('callRefTimer.ref | configSelectionQueue.length=' +\n this.configSelectionQueue.length +\n ' pickQueue.length=' +\n this.pickQueue.length);\n (_d = (_c = this.callRefTimer).ref) === null || _d === void 0 ? void 0 : _d.call(_c);\n }\n }\n callRefTimerUnref() {\n var _a, _b;\n // If the hasRef function does not exist, always run the code\n if (!this.callRefTimer.hasRef || this.callRefTimer.hasRef()) {\n this.trace('callRefTimer.unref | configSelectionQueue.length=' +\n this.configSelectionQueue.length +\n ' pickQueue.length=' +\n this.pickQueue.length);\n (_b = (_a = this.callRefTimer).unref) === null || _b === void 0 ? void 0 : _b.call(_a);\n }\n }\n removeConnectivityStateWatcher(watcherObject) {\n const watcherIndex = this.connectivityStateWatchers.findIndex(value => value === watcherObject);\n if (watcherIndex >= 0) {\n this.connectivityStateWatchers.splice(watcherIndex, 1);\n }\n }\n updateState(newState) {\n (0, logging_1.trace)(constants_1.LogVerbosity.DEBUG, 'connectivity_state', '(' +\n this.channelzRef.id +\n ') ' +\n (0, uri_parser_1.uriToString)(this.target) +\n ' ' +\n connectivity_state_1.ConnectivityState[this.connectivityState] +\n ' -> ' +\n connectivity_state_1.ConnectivityState[newState]);\n if (this.channelzEnabled) {\n this.channelzTrace.addTrace('CT_INFO', 'Connectivity state change to ' + connectivity_state_1.ConnectivityState[newState]);\n }\n this.connectivityState = newState;\n const watchersCopy = this.connectivityStateWatchers.slice();\n for (const watcherObject of watchersCopy) {\n if (newState !== watcherObject.currentState) {\n if (watcherObject.timer) {\n clearTimeout(watcherObject.timer);\n }\n this.removeConnectivityStateWatcher(watcherObject);\n watcherObject.callback();\n }\n }\n if (newState !== connectivity_state_1.ConnectivityState.TRANSIENT_FAILURE) {\n this.currentResolutionError = null;\n }\n }\n throttleKeepalive(newKeepaliveTime) {\n if (newKeepaliveTime > this.keepaliveTime) {\n this.keepaliveTime = newKeepaliveTime;\n for (const wrappedSubchannel of this.wrappedSubchannels) {\n wrappedSubchannel.throttleKeepalive(newKeepaliveTime);\n }\n }\n }\n removeWrappedSubchannel(wrappedSubchannel) {\n this.wrappedSubchannels.delete(wrappedSubchannel);\n }\n doPick(metadata, extraPickInfo) {\n return this.currentPicker.pick({\n metadata: metadata,\n extraPickInfo: extraPickInfo,\n });\n }\n queueCallForPick(call) {\n this.pickQueue.push(call);\n this.callRefTimerRef();\n }\n getConfig(method, metadata) {\n this.resolvingLoadBalancer.exitIdle();\n if (this.configSelector) {\n return {\n type: 'SUCCESS',\n config: this.configSelector(method, metadata, this.randomChannelId),\n };\n }\n else {\n if (this.currentResolutionError) {\n return {\n type: 'ERROR',\n error: this.currentResolutionError,\n };\n }\n else {\n return {\n type: 'NONE',\n };\n }\n }\n }\n queueCallForConfig(call) {\n this.configSelectionQueue.push(call);\n this.callRefTimerRef();\n }\n enterIdle() {\n this.resolvingLoadBalancer.destroy();\n this.updateState(connectivity_state_1.ConnectivityState.IDLE);\n this.currentPicker = new picker_1.QueuePicker(this.resolvingLoadBalancer);\n if (this.idleTimer) {\n clearTimeout(this.idleTimer);\n this.idleTimer = null;\n }\n }\n startIdleTimeout(timeoutMs) {\n var _a, _b;\n this.idleTimer = setTimeout(() => {\n if (this.callCount > 0) {\n /* If there is currently a call, the channel will not go idle for a\n * period of at least idleTimeoutMs, so check again after that time.\n */\n this.startIdleTimeout(this.idleTimeoutMs);\n return;\n }\n const now = new Date();\n const timeSinceLastActivity = now.valueOf() - this.lastActivityTimestamp.valueOf();\n if (timeSinceLastActivity >= this.idleTimeoutMs) {\n this.trace('Idle timer triggered after ' +\n this.idleTimeoutMs +\n 'ms of inactivity');\n this.enterIdle();\n }\n else {\n /* Whenever the timer fires with the latest activity being too recent,\n * set the timer again for the time when the time since the last\n * activity is equal to the timeout. This should result in the timer\n * firing no more than once every idleTimeoutMs/2 on average. */\n this.startIdleTimeout(this.idleTimeoutMs - timeSinceLastActivity);\n }\n }, timeoutMs);\n (_b = (_a = this.idleTimer).unref) === null || _b === void 0 ? void 0 : _b.call(_a);\n }\n maybeStartIdleTimer() {\n if (this.connectivityState !== connectivity_state_1.ConnectivityState.SHUTDOWN &&\n !this.idleTimer) {\n this.startIdleTimeout(this.idleTimeoutMs);\n }\n }\n onCallStart() {\n if (this.channelzEnabled) {\n this.callTracker.addCallStarted();\n }\n this.callCount += 1;\n }\n onCallEnd(status) {\n if (this.channelzEnabled) {\n if (status.code === constants_1.Status.OK) {\n this.callTracker.addCallSucceeded();\n }\n else {\n this.callTracker.addCallFailed();\n }\n }\n this.callCount -= 1;\n this.lastActivityTimestamp = new Date();\n this.maybeStartIdleTimer();\n }\n createLoadBalancingCall(callConfig, method, host, credentials, deadline) {\n const callNumber = (0, call_number_1.getNextCallNumber)();\n this.trace('createLoadBalancingCall [' + callNumber + '] method=\"' + method + '\"');\n return new load_balancing_call_1.LoadBalancingCall(this, callConfig, method, host, credentials, deadline, callNumber);\n }\n createRetryingCall(callConfig, method, host, credentials, deadline) {\n const callNumber = (0, call_number_1.getNextCallNumber)();\n this.trace('createRetryingCall [' + callNumber + '] method=\"' + method + '\"');\n return new retrying_call_1.RetryingCall(this, callConfig, method, host, credentials, deadline, callNumber, this.retryBufferTracker, RETRY_THROTTLER_MAP.get(this.getTarget()));\n }\n createInnerCall(callConfig, method, host, credentials, deadline) {\n // Create a RetryingCall if retries are enabled\n if (this.options['grpc.enable_retries'] === 0) {\n return this.createLoadBalancingCall(callConfig, method, host, credentials, deadline);\n }\n else {\n return this.createRetryingCall(callConfig, method, host, credentials, deadline);\n }\n }\n createResolvingCall(method, deadline, host, parentCall, propagateFlags) {\n const callNumber = (0, call_number_1.getNextCallNumber)();\n this.trace('createResolvingCall [' +\n callNumber +\n '] method=\"' +\n method +\n '\", deadline=' +\n (0, deadline_1.deadlineToString)(deadline));\n const finalOptions = {\n deadline: deadline,\n flags: propagateFlags !== null && propagateFlags !== void 0 ? propagateFlags : constants_1.Propagate.DEFAULTS,\n host: host !== null && host !== void 0 ? host : this.defaultAuthority,\n parentCall: parentCall,\n };\n const call = new resolving_call_1.ResolvingCall(this, method, finalOptions, this.filterStackFactory.clone(), this.credentials._getCallCredentials(), callNumber);\n this.onCallStart();\n call.addStatusWatcher(status => {\n this.onCallEnd(status);\n });\n return call;\n }\n close() {\n this.resolvingLoadBalancer.destroy();\n this.updateState(connectivity_state_1.ConnectivityState.SHUTDOWN);\n clearInterval(this.callRefTimer);\n if (this.idleTimer) {\n clearTimeout(this.idleTimer);\n }\n if (this.channelzEnabled) {\n (0, channelz_1.unregisterChannelzRef)(this.channelzRef);\n }\n this.subchannelPool.unrefUnusedSubchannels();\n }\n getTarget() {\n return (0, uri_parser_1.uriToString)(this.target);\n }\n getConnectivityState(tryToConnect) {\n const connectivityState = this.connectivityState;\n if (tryToConnect) {\n this.resolvingLoadBalancer.exitIdle();\n this.lastActivityTimestamp = new Date();\n this.maybeStartIdleTimer();\n }\n return connectivityState;\n }\n watchConnectivityState(currentState, deadline, callback) {\n if (this.connectivityState === connectivity_state_1.ConnectivityState.SHUTDOWN) {\n throw new Error('Channel has been shut down');\n }\n let timer = null;\n if (deadline !== Infinity) {\n const deadlineDate = deadline instanceof Date ? deadline : new Date(deadline);\n const now = new Date();\n if (deadline === -Infinity || deadlineDate <= now) {\n process.nextTick(callback, new Error('Deadline passed without connectivity state change'));\n return;\n }\n timer = setTimeout(() => {\n this.removeConnectivityStateWatcher(watcherObject);\n callback(new Error('Deadline passed without connectivity state change'));\n }, deadlineDate.getTime() - now.getTime());\n }\n const watcherObject = {\n currentState,\n callback,\n timer,\n };\n this.connectivityStateWatchers.push(watcherObject);\n }\n /**\n * Get the channelz reference object for this channel. The returned value is\n * garbage if channelz is disabled for this channel.\n * @returns\n */\n getChannelzRef() {\n return this.channelzRef;\n }\n createCall(method, deadline, host, parentCall, propagateFlags) {\n if (typeof method !== 'string') {\n throw new TypeError('Channel#createCall: method must be a string');\n }\n if (!(typeof deadline === 'number' || deadline instanceof Date)) {\n throw new TypeError('Channel#createCall: deadline must be a number or Date');\n }\n if (this.connectivityState === connectivity_state_1.ConnectivityState.SHUTDOWN) {\n throw new Error('Channel has been shut down');\n }\n return this.createResolvingCall(method, deadline, host, parentCall, propagateFlags);\n }\n}\nexports.InternalChannel = InternalChannel;\n//# sourceMappingURL=internal-channel.js.map","\"use strict\";\n/*\n * Copyright 2020 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ChildLoadBalancerHandler = void 0;\nconst load_balancer_1 = require(\"./load-balancer\");\nconst connectivity_state_1 = require(\"./connectivity-state\");\nconst TYPE_NAME = 'child_load_balancer_helper';\nclass ChildLoadBalancerHandler {\n constructor(channelControlHelper, options) {\n this.channelControlHelper = channelControlHelper;\n this.options = options;\n this.currentChild = null;\n this.pendingChild = null;\n this.latestConfig = null;\n this.ChildPolicyHelper = class {\n constructor(parent) {\n this.parent = parent;\n this.child = null;\n }\n createSubchannel(subchannelAddress, subchannelArgs) {\n return this.parent.channelControlHelper.createSubchannel(subchannelAddress, subchannelArgs);\n }\n updateState(connectivityState, picker) {\n var _a;\n if (this.calledByPendingChild()) {\n if (connectivityState === connectivity_state_1.ConnectivityState.CONNECTING) {\n return;\n }\n (_a = this.parent.currentChild) === null || _a === void 0 ? void 0 : _a.destroy();\n this.parent.currentChild = this.parent.pendingChild;\n this.parent.pendingChild = null;\n }\n else if (!this.calledByCurrentChild()) {\n return;\n }\n this.parent.channelControlHelper.updateState(connectivityState, picker);\n }\n requestReresolution() {\n var _a;\n const latestChild = (_a = this.parent.pendingChild) !== null && _a !== void 0 ? _a : this.parent.currentChild;\n if (this.child === latestChild) {\n this.parent.channelControlHelper.requestReresolution();\n }\n }\n setChild(newChild) {\n this.child = newChild;\n }\n addChannelzChild(child) {\n this.parent.channelControlHelper.addChannelzChild(child);\n }\n removeChannelzChild(child) {\n this.parent.channelControlHelper.removeChannelzChild(child);\n }\n calledByPendingChild() {\n return this.child === this.parent.pendingChild;\n }\n calledByCurrentChild() {\n return this.child === this.parent.currentChild;\n }\n };\n }\n configUpdateRequiresNewPolicyInstance(oldConfig, newConfig) {\n return oldConfig.getLoadBalancerName() !== newConfig.getLoadBalancerName();\n }\n /**\n * Prerequisites: lbConfig !== null and lbConfig.name is registered\n * @param endpointList\n * @param lbConfig\n * @param attributes\n */\n updateAddressList(endpointList, lbConfig, attributes) {\n let childToUpdate;\n if (this.currentChild === null ||\n this.latestConfig === null ||\n this.configUpdateRequiresNewPolicyInstance(this.latestConfig, lbConfig)) {\n const newHelper = new this.ChildPolicyHelper(this);\n const newChild = (0, load_balancer_1.createLoadBalancer)(lbConfig, newHelper, this.options);\n newHelper.setChild(newChild);\n if (this.currentChild === null) {\n this.currentChild = newChild;\n childToUpdate = this.currentChild;\n }\n else {\n if (this.pendingChild) {\n this.pendingChild.destroy();\n }\n this.pendingChild = newChild;\n childToUpdate = this.pendingChild;\n }\n }\n else {\n if (this.pendingChild === null) {\n childToUpdate = this.currentChild;\n }\n else {\n childToUpdate = this.pendingChild;\n }\n }\n this.latestConfig = lbConfig;\n childToUpdate.updateAddressList(endpointList, lbConfig, attributes);\n }\n exitIdle() {\n if (this.currentChild) {\n this.currentChild.exitIdle();\n if (this.pendingChild) {\n this.pendingChild.exitIdle();\n }\n }\n }\n resetBackoff() {\n if (this.currentChild) {\n this.currentChild.resetBackoff();\n if (this.pendingChild) {\n this.pendingChild.resetBackoff();\n }\n }\n }\n destroy() {\n /* Note: state updates are only propagated from the child balancer if that\n * object is equal to this.currentChild or this.pendingChild. Since this\n * function sets both of those to null, no further state updates will\n * occur after this function returns. */\n if (this.currentChild) {\n this.currentChild.destroy();\n this.currentChild = null;\n }\n if (this.pendingChild) {\n this.pendingChild.destroy();\n this.pendingChild = null;\n }\n }\n getTypeName() {\n return TYPE_NAME;\n }\n}\nexports.ChildLoadBalancerHandler = ChildLoadBalancerHandler;\n//# sourceMappingURL=load-balancer-child-handler.js.map","\"use strict\";\n/*\n * Copyright 2022 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nvar _a;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.setup = exports.OutlierDetectionLoadBalancer = exports.OutlierDetectionLoadBalancingConfig = void 0;\nconst connectivity_state_1 = require(\"./connectivity-state\");\nconst constants_1 = require(\"./constants\");\nconst duration_1 = require(\"./duration\");\nconst experimental_1 = require(\"./experimental\");\nconst load_balancer_1 = require(\"./load-balancer\");\nconst load_balancer_child_handler_1 = require(\"./load-balancer-child-handler\");\nconst picker_1 = require(\"./picker\");\nconst subchannel_address_1 = require(\"./subchannel-address\");\nconst subchannel_interface_1 = require(\"./subchannel-interface\");\nconst logging = require(\"./logging\");\nconst TRACER_NAME = 'outlier_detection';\nfunction trace(text) {\n logging.trace(constants_1.LogVerbosity.DEBUG, TRACER_NAME, text);\n}\nconst TYPE_NAME = 'outlier_detection';\nconst OUTLIER_DETECTION_ENABLED = ((_a = process.env.GRPC_EXPERIMENTAL_ENABLE_OUTLIER_DETECTION) !== null && _a !== void 0 ? _a : 'true') === 'true';\nconst defaultSuccessRateEjectionConfig = {\n stdev_factor: 1900,\n enforcement_percentage: 100,\n minimum_hosts: 5,\n request_volume: 100,\n};\nconst defaultFailurePercentageEjectionConfig = {\n threshold: 85,\n enforcement_percentage: 100,\n minimum_hosts: 5,\n request_volume: 50,\n};\nfunction validateFieldType(obj, fieldName, expectedType, objectName) {\n if (fieldName in obj &&\n obj[fieldName] !== undefined &&\n typeof obj[fieldName] !== expectedType) {\n const fullFieldName = objectName ? `${objectName}.${fieldName}` : fieldName;\n throw new Error(`outlier detection config ${fullFieldName} parse error: expected ${expectedType}, got ${typeof obj[fieldName]}`);\n }\n}\nfunction validatePositiveDuration(obj, fieldName, objectName) {\n const fullFieldName = objectName ? `${objectName}.${fieldName}` : fieldName;\n if (fieldName in obj && obj[fieldName] !== undefined) {\n if (!(0, duration_1.isDuration)(obj[fieldName])) {\n throw new Error(`outlier detection config ${fullFieldName} parse error: expected Duration, got ${typeof obj[fieldName]}`);\n }\n if (!(obj[fieldName].seconds >= 0 &&\n obj[fieldName].seconds <= 315576000000 &&\n obj[fieldName].nanos >= 0 &&\n obj[fieldName].nanos <= 999999999)) {\n throw new Error(`outlier detection config ${fullFieldName} parse error: values out of range for non-negative Duaration`);\n }\n }\n}\nfunction validatePercentage(obj, fieldName, objectName) {\n const fullFieldName = objectName ? `${objectName}.${fieldName}` : fieldName;\n validateFieldType(obj, fieldName, 'number', objectName);\n if (fieldName in obj &&\n obj[fieldName] !== undefined &&\n !(obj[fieldName] >= 0 && obj[fieldName] <= 100)) {\n throw new Error(`outlier detection config ${fullFieldName} parse error: value out of range for percentage (0-100)`);\n }\n}\nclass OutlierDetectionLoadBalancingConfig {\n constructor(intervalMs, baseEjectionTimeMs, maxEjectionTimeMs, maxEjectionPercent, successRateEjection, failurePercentageEjection, childPolicy) {\n this.childPolicy = childPolicy;\n if (childPolicy.getLoadBalancerName() === 'pick_first') {\n throw new Error('outlier_detection LB policy cannot have a pick_first child policy');\n }\n this.intervalMs = intervalMs !== null && intervalMs !== void 0 ? intervalMs : 10000;\n this.baseEjectionTimeMs = baseEjectionTimeMs !== null && baseEjectionTimeMs !== void 0 ? baseEjectionTimeMs : 30000;\n this.maxEjectionTimeMs = maxEjectionTimeMs !== null && maxEjectionTimeMs !== void 0 ? maxEjectionTimeMs : 300000;\n this.maxEjectionPercent = maxEjectionPercent !== null && maxEjectionPercent !== void 0 ? maxEjectionPercent : 10;\n this.successRateEjection = successRateEjection\n ? Object.assign(Object.assign({}, defaultSuccessRateEjectionConfig), successRateEjection) : null;\n this.failurePercentageEjection = failurePercentageEjection\n ? Object.assign(Object.assign({}, defaultFailurePercentageEjectionConfig), failurePercentageEjection) : null;\n }\n getLoadBalancerName() {\n return TYPE_NAME;\n }\n toJsonObject() {\n var _a, _b;\n return {\n outlier_detection: {\n interval: (0, duration_1.msToDuration)(this.intervalMs),\n base_ejection_time: (0, duration_1.msToDuration)(this.baseEjectionTimeMs),\n max_ejection_time: (0, duration_1.msToDuration)(this.maxEjectionTimeMs),\n max_ejection_percent: this.maxEjectionPercent,\n success_rate_ejection: (_a = this.successRateEjection) !== null && _a !== void 0 ? _a : undefined,\n failure_percentage_ejection: (_b = this.failurePercentageEjection) !== null && _b !== void 0 ? _b : undefined,\n child_policy: [this.childPolicy.toJsonObject()],\n },\n };\n }\n getIntervalMs() {\n return this.intervalMs;\n }\n getBaseEjectionTimeMs() {\n return this.baseEjectionTimeMs;\n }\n getMaxEjectionTimeMs() {\n return this.maxEjectionTimeMs;\n }\n getMaxEjectionPercent() {\n return this.maxEjectionPercent;\n }\n getSuccessRateEjectionConfig() {\n return this.successRateEjection;\n }\n getFailurePercentageEjectionConfig() {\n return this.failurePercentageEjection;\n }\n getChildPolicy() {\n return this.childPolicy;\n }\n static createFromJson(obj) {\n var _a;\n validatePositiveDuration(obj, 'interval');\n validatePositiveDuration(obj, 'base_ejection_time');\n validatePositiveDuration(obj, 'max_ejection_time');\n validatePercentage(obj, 'max_ejection_percent');\n if ('success_rate_ejection' in obj &&\n obj.success_rate_ejection !== undefined) {\n if (typeof obj.success_rate_ejection !== 'object') {\n throw new Error('outlier detection config success_rate_ejection must be an object');\n }\n validateFieldType(obj.success_rate_ejection, 'stdev_factor', 'number', 'success_rate_ejection');\n validatePercentage(obj.success_rate_ejection, 'enforcement_percentage', 'success_rate_ejection');\n validateFieldType(obj.success_rate_ejection, 'minimum_hosts', 'number', 'success_rate_ejection');\n validateFieldType(obj.success_rate_ejection, 'request_volume', 'number', 'success_rate_ejection');\n }\n if ('failure_percentage_ejection' in obj &&\n obj.failure_percentage_ejection !== undefined) {\n if (typeof obj.failure_percentage_ejection !== 'object') {\n throw new Error('outlier detection config failure_percentage_ejection must be an object');\n }\n validatePercentage(obj.failure_percentage_ejection, 'threshold', 'failure_percentage_ejection');\n validatePercentage(obj.failure_percentage_ejection, 'enforcement_percentage', 'failure_percentage_ejection');\n validateFieldType(obj.failure_percentage_ejection, 'minimum_hosts', 'number', 'failure_percentage_ejection');\n validateFieldType(obj.failure_percentage_ejection, 'request_volume', 'number', 'failure_percentage_ejection');\n }\n if (!('child_policy' in obj) || !Array.isArray(obj.child_policy)) {\n throw new Error('outlier detection config child_policy must be an array');\n }\n const childPolicy = (0, load_balancer_1.selectLbConfigFromList)(obj.child_policy);\n if (!childPolicy) {\n throw new Error('outlier detection config child_policy: no valid recognized policy found');\n }\n return new OutlierDetectionLoadBalancingConfig(obj.interval ? (0, duration_1.durationToMs)(obj.interval) : null, obj.base_ejection_time ? (0, duration_1.durationToMs)(obj.base_ejection_time) : null, obj.max_ejection_time ? (0, duration_1.durationToMs)(obj.max_ejection_time) : null, (_a = obj.max_ejection_percent) !== null && _a !== void 0 ? _a : null, obj.success_rate_ejection, obj.failure_percentage_ejection, childPolicy);\n }\n}\nexports.OutlierDetectionLoadBalancingConfig = OutlierDetectionLoadBalancingConfig;\nclass OutlierDetectionSubchannelWrapper extends subchannel_interface_1.BaseSubchannelWrapper {\n constructor(childSubchannel, mapEntry) {\n super(childSubchannel);\n this.mapEntry = mapEntry;\n this.refCount = 0;\n }\n ref() {\n this.child.ref();\n this.refCount += 1;\n }\n unref() {\n this.child.unref();\n this.refCount -= 1;\n if (this.refCount <= 0) {\n if (this.mapEntry) {\n const index = this.mapEntry.subchannelWrappers.indexOf(this);\n if (index >= 0) {\n this.mapEntry.subchannelWrappers.splice(index, 1);\n }\n }\n }\n }\n eject() {\n this.setHealthy(false);\n }\n uneject() {\n this.setHealthy(true);\n }\n getMapEntry() {\n return this.mapEntry;\n }\n getWrappedSubchannel() {\n return this.child;\n }\n}\nfunction createEmptyBucket() {\n return {\n success: 0,\n failure: 0,\n };\n}\nclass CallCounter {\n constructor() {\n this.activeBucket = createEmptyBucket();\n this.inactiveBucket = createEmptyBucket();\n }\n addSuccess() {\n this.activeBucket.success += 1;\n }\n addFailure() {\n this.activeBucket.failure += 1;\n }\n switchBuckets() {\n this.inactiveBucket = this.activeBucket;\n this.activeBucket = createEmptyBucket();\n }\n getLastSuccesses() {\n return this.inactiveBucket.success;\n }\n getLastFailures() {\n return this.inactiveBucket.failure;\n }\n}\nclass OutlierDetectionPicker {\n constructor(wrappedPicker, countCalls) {\n this.wrappedPicker = wrappedPicker;\n this.countCalls = countCalls;\n }\n pick(pickArgs) {\n const wrappedPick = this.wrappedPicker.pick(pickArgs);\n if (wrappedPick.pickResultType === picker_1.PickResultType.COMPLETE) {\n const subchannelWrapper = wrappedPick.subchannel;\n const mapEntry = subchannelWrapper.getMapEntry();\n if (mapEntry) {\n let onCallEnded = wrappedPick.onCallEnded;\n if (this.countCalls) {\n onCallEnded = statusCode => {\n var _a;\n if (statusCode === constants_1.Status.OK) {\n mapEntry.counter.addSuccess();\n }\n else {\n mapEntry.counter.addFailure();\n }\n (_a = wrappedPick.onCallEnded) === null || _a === void 0 ? void 0 : _a.call(wrappedPick, statusCode);\n };\n }\n return Object.assign(Object.assign({}, wrappedPick), { subchannel: subchannelWrapper.getWrappedSubchannel(), onCallEnded: onCallEnded });\n }\n else {\n return Object.assign(Object.assign({}, wrappedPick), { subchannel: subchannelWrapper.getWrappedSubchannel() });\n }\n }\n else {\n return wrappedPick;\n }\n }\n}\nclass OutlierDetectionLoadBalancer {\n constructor(channelControlHelper, options) {\n this.entryMap = new subchannel_address_1.EndpointMap();\n this.latestConfig = null;\n this.timerStartTime = null;\n this.childBalancer = new load_balancer_child_handler_1.ChildLoadBalancerHandler((0, experimental_1.createChildChannelControlHelper)(channelControlHelper, {\n createSubchannel: (subchannelAddress, subchannelArgs) => {\n const originalSubchannel = channelControlHelper.createSubchannel(subchannelAddress, subchannelArgs);\n const mapEntry = this.entryMap.getForSubchannelAddress(subchannelAddress);\n const subchannelWrapper = new OutlierDetectionSubchannelWrapper(originalSubchannel, mapEntry);\n if ((mapEntry === null || mapEntry === void 0 ? void 0 : mapEntry.currentEjectionTimestamp) !== null) {\n // If the address is ejected, propagate that to the new subchannel wrapper\n subchannelWrapper.eject();\n }\n mapEntry === null || mapEntry === void 0 ? void 0 : mapEntry.subchannelWrappers.push(subchannelWrapper);\n return subchannelWrapper;\n },\n updateState: (connectivityState, picker) => {\n if (connectivityState === connectivity_state_1.ConnectivityState.READY) {\n channelControlHelper.updateState(connectivityState, new OutlierDetectionPicker(picker, this.isCountingEnabled()));\n }\n else {\n channelControlHelper.updateState(connectivityState, picker);\n }\n },\n }), options);\n this.ejectionTimer = setInterval(() => { }, 0);\n clearInterval(this.ejectionTimer);\n }\n isCountingEnabled() {\n return (this.latestConfig !== null &&\n (this.latestConfig.getSuccessRateEjectionConfig() !== null ||\n this.latestConfig.getFailurePercentageEjectionConfig() !== null));\n }\n getCurrentEjectionPercent() {\n let ejectionCount = 0;\n for (const mapEntry of this.entryMap.values()) {\n if (mapEntry.currentEjectionTimestamp !== null) {\n ejectionCount += 1;\n }\n }\n return (ejectionCount * 100) / this.entryMap.size;\n }\n runSuccessRateCheck(ejectionTimestamp) {\n if (!this.latestConfig) {\n return;\n }\n const successRateConfig = this.latestConfig.getSuccessRateEjectionConfig();\n if (!successRateConfig) {\n return;\n }\n trace('Running success rate check');\n // Step 1\n const targetRequestVolume = successRateConfig.request_volume;\n let addresesWithTargetVolume = 0;\n const successRates = [];\n for (const [endpoint, mapEntry] of this.entryMap.entries()) {\n const successes = mapEntry.counter.getLastSuccesses();\n const failures = mapEntry.counter.getLastFailures();\n trace('Stats for ' +\n (0, subchannel_address_1.endpointToString)(endpoint) +\n ': successes=' +\n successes +\n ' failures=' +\n failures +\n ' targetRequestVolume=' +\n targetRequestVolume);\n if (successes + failures >= targetRequestVolume) {\n addresesWithTargetVolume += 1;\n successRates.push(successes / (successes + failures));\n }\n }\n trace('Found ' +\n addresesWithTargetVolume +\n ' success rate candidates; currentEjectionPercent=' +\n this.getCurrentEjectionPercent() +\n ' successRates=[' +\n successRates +\n ']');\n if (addresesWithTargetVolume < successRateConfig.minimum_hosts) {\n return;\n }\n // Step 2\n const successRateMean = successRates.reduce((a, b) => a + b) / successRates.length;\n let successRateDeviationSum = 0;\n for (const rate of successRates) {\n const deviation = rate - successRateMean;\n successRateDeviationSum += deviation * deviation;\n }\n const successRateVariance = successRateDeviationSum / successRates.length;\n const successRateStdev = Math.sqrt(successRateVariance);\n const ejectionThreshold = successRateMean -\n successRateStdev * (successRateConfig.stdev_factor / 1000);\n trace('stdev=' + successRateStdev + ' ejectionThreshold=' + ejectionThreshold);\n // Step 3\n for (const [address, mapEntry] of this.entryMap.entries()) {\n // Step 3.i\n if (this.getCurrentEjectionPercent() >=\n this.latestConfig.getMaxEjectionPercent()) {\n break;\n }\n // Step 3.ii\n const successes = mapEntry.counter.getLastSuccesses();\n const failures = mapEntry.counter.getLastFailures();\n if (successes + failures < targetRequestVolume) {\n continue;\n }\n // Step 3.iii\n const successRate = successes / (successes + failures);\n trace('Checking candidate ' + address + ' successRate=' + successRate);\n if (successRate < ejectionThreshold) {\n const randomNumber = Math.random() * 100;\n trace('Candidate ' +\n address +\n ' randomNumber=' +\n randomNumber +\n ' enforcement_percentage=' +\n successRateConfig.enforcement_percentage);\n if (randomNumber < successRateConfig.enforcement_percentage) {\n trace('Ejecting candidate ' + address);\n this.eject(mapEntry, ejectionTimestamp);\n }\n }\n }\n }\n runFailurePercentageCheck(ejectionTimestamp) {\n if (!this.latestConfig) {\n return;\n }\n const failurePercentageConfig = this.latestConfig.getFailurePercentageEjectionConfig();\n if (!failurePercentageConfig) {\n return;\n }\n trace('Running failure percentage check. threshold=' +\n failurePercentageConfig.threshold +\n ' request volume threshold=' +\n failurePercentageConfig.request_volume);\n // Step 1\n let addressesWithTargetVolume = 0;\n for (const mapEntry of this.entryMap.values()) {\n const successes = mapEntry.counter.getLastSuccesses();\n const failures = mapEntry.counter.getLastFailures();\n if (successes + failures >= failurePercentageConfig.request_volume) {\n addressesWithTargetVolume += 1;\n }\n }\n if (addressesWithTargetVolume < failurePercentageConfig.minimum_hosts) {\n return;\n }\n // Step 2\n for (const [address, mapEntry] of this.entryMap.entries()) {\n // Step 2.i\n if (this.getCurrentEjectionPercent() >=\n this.latestConfig.getMaxEjectionPercent()) {\n break;\n }\n // Step 2.ii\n const successes = mapEntry.counter.getLastSuccesses();\n const failures = mapEntry.counter.getLastFailures();\n trace('Candidate successes=' + successes + ' failures=' + failures);\n if (successes + failures < failurePercentageConfig.request_volume) {\n continue;\n }\n // Step 2.iii\n const failurePercentage = (failures * 100) / (failures + successes);\n if (failurePercentage > failurePercentageConfig.threshold) {\n const randomNumber = Math.random() * 100;\n trace('Candidate ' +\n address +\n ' randomNumber=' +\n randomNumber +\n ' enforcement_percentage=' +\n failurePercentageConfig.enforcement_percentage);\n if (randomNumber < failurePercentageConfig.enforcement_percentage) {\n trace('Ejecting candidate ' + address);\n this.eject(mapEntry, ejectionTimestamp);\n }\n }\n }\n }\n eject(mapEntry, ejectionTimestamp) {\n mapEntry.currentEjectionTimestamp = new Date();\n mapEntry.ejectionTimeMultiplier += 1;\n for (const subchannelWrapper of mapEntry.subchannelWrappers) {\n subchannelWrapper.eject();\n }\n }\n uneject(mapEntry) {\n mapEntry.currentEjectionTimestamp = null;\n for (const subchannelWrapper of mapEntry.subchannelWrappers) {\n subchannelWrapper.uneject();\n }\n }\n switchAllBuckets() {\n for (const mapEntry of this.entryMap.values()) {\n mapEntry.counter.switchBuckets();\n }\n }\n startTimer(delayMs) {\n var _a, _b;\n this.ejectionTimer = setTimeout(() => this.runChecks(), delayMs);\n (_b = (_a = this.ejectionTimer).unref) === null || _b === void 0 ? void 0 : _b.call(_a);\n }\n runChecks() {\n const ejectionTimestamp = new Date();\n trace('Ejection timer running');\n this.switchAllBuckets();\n if (!this.latestConfig) {\n return;\n }\n this.timerStartTime = ejectionTimestamp;\n this.startTimer(this.latestConfig.getIntervalMs());\n this.runSuccessRateCheck(ejectionTimestamp);\n this.runFailurePercentageCheck(ejectionTimestamp);\n for (const [address, mapEntry] of this.entryMap.entries()) {\n if (mapEntry.currentEjectionTimestamp === null) {\n if (mapEntry.ejectionTimeMultiplier > 0) {\n mapEntry.ejectionTimeMultiplier -= 1;\n }\n }\n else {\n const baseEjectionTimeMs = this.latestConfig.getBaseEjectionTimeMs();\n const maxEjectionTimeMs = this.latestConfig.getMaxEjectionTimeMs();\n const returnTime = new Date(mapEntry.currentEjectionTimestamp.getTime());\n returnTime.setMilliseconds(returnTime.getMilliseconds() +\n Math.min(baseEjectionTimeMs * mapEntry.ejectionTimeMultiplier, Math.max(baseEjectionTimeMs, maxEjectionTimeMs)));\n if (returnTime < new Date()) {\n trace('Unejecting ' + address);\n this.uneject(mapEntry);\n }\n }\n }\n }\n updateAddressList(endpointList, lbConfig, attributes) {\n if (!(lbConfig instanceof OutlierDetectionLoadBalancingConfig)) {\n return;\n }\n for (const endpoint of endpointList) {\n if (!this.entryMap.has(endpoint)) {\n trace('Adding map entry for ' + (0, subchannel_address_1.endpointToString)(endpoint));\n this.entryMap.set(endpoint, {\n counter: new CallCounter(),\n currentEjectionTimestamp: null,\n ejectionTimeMultiplier: 0,\n subchannelWrappers: [],\n });\n }\n }\n this.entryMap.deleteMissing(endpointList);\n const childPolicy = lbConfig.getChildPolicy();\n this.childBalancer.updateAddressList(endpointList, childPolicy, attributes);\n if (lbConfig.getSuccessRateEjectionConfig() ||\n lbConfig.getFailurePercentageEjectionConfig()) {\n if (this.timerStartTime) {\n trace('Previous timer existed. Replacing timer');\n clearTimeout(this.ejectionTimer);\n const remainingDelay = lbConfig.getIntervalMs() -\n (new Date().getTime() - this.timerStartTime.getTime());\n this.startTimer(remainingDelay);\n }\n else {\n trace('Starting new timer');\n this.timerStartTime = new Date();\n this.startTimer(lbConfig.getIntervalMs());\n this.switchAllBuckets();\n }\n }\n else {\n trace('Counting disabled. Cancelling timer.');\n this.timerStartTime = null;\n clearTimeout(this.ejectionTimer);\n for (const mapEntry of this.entryMap.values()) {\n this.uneject(mapEntry);\n mapEntry.ejectionTimeMultiplier = 0;\n }\n }\n this.latestConfig = lbConfig;\n }\n exitIdle() {\n this.childBalancer.exitIdle();\n }\n resetBackoff() {\n this.childBalancer.resetBackoff();\n }\n destroy() {\n clearTimeout(this.ejectionTimer);\n this.childBalancer.destroy();\n }\n getTypeName() {\n return TYPE_NAME;\n }\n}\nexports.OutlierDetectionLoadBalancer = OutlierDetectionLoadBalancer;\nfunction setup() {\n if (OUTLIER_DETECTION_ENABLED) {\n (0, experimental_1.registerLoadBalancerType)(TYPE_NAME, OutlierDetectionLoadBalancer, OutlierDetectionLoadBalancingConfig);\n }\n}\nexports.setup = setup;\n//# sourceMappingURL=load-balancer-outlier-detection.js.map","\"use strict\";\n/*\n * Copyright 2019 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.setup = exports.LeafLoadBalancer = exports.PickFirstLoadBalancer = exports.shuffled = exports.PickFirstLoadBalancingConfig = void 0;\nconst load_balancer_1 = require(\"./load-balancer\");\nconst connectivity_state_1 = require(\"./connectivity-state\");\nconst picker_1 = require(\"./picker\");\nconst logging = require(\"./logging\");\nconst constants_1 = require(\"./constants\");\nconst subchannel_address_1 = require(\"./subchannel-address\");\nconst net_1 = require(\"net\");\nconst TRACER_NAME = 'pick_first';\nfunction trace(text) {\n logging.trace(constants_1.LogVerbosity.DEBUG, TRACER_NAME, text);\n}\nconst TYPE_NAME = 'pick_first';\n/**\n * Delay after starting a connection on a subchannel before starting a\n * connection on the next subchannel in the list, for Happy Eyeballs algorithm.\n */\nconst CONNECTION_DELAY_INTERVAL_MS = 250;\nclass PickFirstLoadBalancingConfig {\n constructor(shuffleAddressList) {\n this.shuffleAddressList = shuffleAddressList;\n }\n getLoadBalancerName() {\n return TYPE_NAME;\n }\n toJsonObject() {\n return {\n [TYPE_NAME]: {\n shuffleAddressList: this.shuffleAddressList,\n },\n };\n }\n getShuffleAddressList() {\n return this.shuffleAddressList;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n static createFromJson(obj) {\n if ('shuffleAddressList' in obj &&\n !(typeof obj.shuffleAddressList === 'boolean')) {\n throw new Error('pick_first config field shuffleAddressList must be a boolean if provided');\n }\n return new PickFirstLoadBalancingConfig(obj.shuffleAddressList === true);\n }\n}\nexports.PickFirstLoadBalancingConfig = PickFirstLoadBalancingConfig;\n/**\n * Picker for a `PickFirstLoadBalancer` in the READY state. Always returns the\n * picked subchannel.\n */\nclass PickFirstPicker {\n constructor(subchannel) {\n this.subchannel = subchannel;\n }\n pick(pickArgs) {\n return {\n pickResultType: picker_1.PickResultType.COMPLETE,\n subchannel: this.subchannel,\n status: null,\n onCallStarted: null,\n onCallEnded: null,\n };\n }\n}\n/**\n * Return a new array with the elements of the input array in a random order\n * @param list The input array\n * @returns A shuffled array of the elements of list\n */\nfunction shuffled(list) {\n const result = list.slice();\n for (let i = result.length - 1; i > 1; i--) {\n const j = Math.floor(Math.random() * (i + 1));\n const temp = result[i];\n result[i] = result[j];\n result[j] = temp;\n }\n return result;\n}\nexports.shuffled = shuffled;\n/**\n * Interleave addresses in addressList by family in accordance with RFC-8304 section 4\n * @param addressList\n * @returns\n */\nfunction interleaveAddressFamilies(addressList) {\n const result = [];\n const ipv6Addresses = [];\n const ipv4Addresses = [];\n const ipv6First = (0, subchannel_address_1.isTcpSubchannelAddress)(addressList[0]) && (0, net_1.isIPv6)(addressList[0].host);\n for (const address of addressList) {\n if ((0, subchannel_address_1.isTcpSubchannelAddress)(address) && (0, net_1.isIPv6)(address.host)) {\n ipv6Addresses.push(address);\n }\n else {\n ipv4Addresses.push(address);\n }\n }\n const firstList = ipv6First ? ipv6Addresses : ipv4Addresses;\n const secondList = ipv6First ? ipv4Addresses : ipv6Addresses;\n for (let i = 0; i < Math.max(firstList.length, secondList.length); i++) {\n if (i < firstList.length) {\n result.push(firstList[i]);\n }\n if (i < secondList.length) {\n result.push(secondList[i]);\n }\n }\n return result;\n}\nconst REPORT_HEALTH_STATUS_OPTION_NAME = 'grpc-node.internal.pick-first.report_health_status';\nclass PickFirstLoadBalancer {\n /**\n * Load balancer that attempts to connect to each backend in the address list\n * in order, and picks the first one that connects, using it for every\n * request.\n * @param channelControlHelper `ChannelControlHelper` instance provided by\n * this load balancer's owner.\n */\n constructor(channelControlHelper, options) {\n this.channelControlHelper = channelControlHelper;\n /**\n * The list of subchannels this load balancer is currently attempting to\n * connect to.\n */\n this.children = [];\n /**\n * The current connectivity state of the load balancer.\n */\n this.currentState = connectivity_state_1.ConnectivityState.IDLE;\n /**\n * The index within the `subchannels` array of the subchannel with the most\n * recently started connection attempt.\n */\n this.currentSubchannelIndex = 0;\n /**\n * The currently picked subchannel used for making calls. Populated if\n * and only if the load balancer's current state is READY. In that case,\n * the subchannel's current state is also READY.\n */\n this.currentPick = null;\n /**\n * Listener callback attached to each subchannel in the `subchannels` list\n * while establishing a connection.\n */\n this.subchannelStateListener = (subchannel, previousState, newState, keepaliveTime, errorMessage) => {\n this.onSubchannelStateUpdate(subchannel, previousState, newState, errorMessage);\n };\n this.pickedSubchannelHealthListener = () => this.calculateAndReportNewState();\n this.triedAllSubchannels = false;\n /**\n * The LB policy enters sticky TRANSIENT_FAILURE mode when all\n * subchannels have failed to connect at least once, and it stays in that\n * mode until a connection attempt is successful. While in sticky TF mode,\n * the LB policy continuously attempts to connect to all of its subchannels.\n */\n this.stickyTransientFailureMode = false;\n /**\n * Indicates whether we called channelControlHelper.requestReresolution since\n * the last call to updateAddressList\n */\n this.requestedResolutionSinceLastUpdate = false;\n /**\n * The most recent error reported by any subchannel as it transitioned to\n * TRANSIENT_FAILURE.\n */\n this.lastError = null;\n this.latestAddressList = null;\n this.connectionDelayTimeout = setTimeout(() => { }, 0);\n clearTimeout(this.connectionDelayTimeout);\n this.reportHealthStatus = options[REPORT_HEALTH_STATUS_OPTION_NAME];\n }\n allChildrenHaveReportedTF() {\n return this.children.every(child => child.hasReportedTransientFailure);\n }\n calculateAndReportNewState() {\n if (this.currentPick) {\n if (this.reportHealthStatus && !this.currentPick.isHealthy()) {\n this.updateState(connectivity_state_1.ConnectivityState.TRANSIENT_FAILURE, new picker_1.UnavailablePicker({\n details: `Picked subchannel ${this.currentPick.getAddress()} is unhealthy`,\n }));\n }\n else {\n this.updateState(connectivity_state_1.ConnectivityState.READY, new PickFirstPicker(this.currentPick));\n }\n }\n else if (this.children.length === 0) {\n this.updateState(connectivity_state_1.ConnectivityState.IDLE, new picker_1.QueuePicker(this));\n }\n else {\n if (this.stickyTransientFailureMode) {\n this.updateState(connectivity_state_1.ConnectivityState.TRANSIENT_FAILURE, new picker_1.UnavailablePicker({\n details: `No connection established. Last error: ${this.lastError}`,\n }));\n }\n else {\n this.updateState(connectivity_state_1.ConnectivityState.CONNECTING, new picker_1.QueuePicker(this));\n }\n }\n }\n requestReresolution() {\n this.requestedResolutionSinceLastUpdate = true;\n this.channelControlHelper.requestReresolution();\n }\n maybeEnterStickyTransientFailureMode() {\n if (!this.allChildrenHaveReportedTF()) {\n return;\n }\n if (!this.requestedResolutionSinceLastUpdate) {\n /* Each time we get an update we reset each subchannel's\n * hasReportedTransientFailure flag, so the next time we get to this\n * point after that, each subchannel has reported TRANSIENT_FAILURE\n * at least once since then. That is the trigger for requesting\n * reresolution, whether or not the LB policy is already in sticky TF\n * mode. */\n this.requestReresolution();\n }\n if (this.stickyTransientFailureMode) {\n return;\n }\n this.stickyTransientFailureMode = true;\n for (const { subchannel } of this.children) {\n subchannel.startConnecting();\n }\n this.calculateAndReportNewState();\n }\n removeCurrentPick() {\n if (this.currentPick !== null) {\n /* Unref can cause a state change, which can cause a change in the value\n * of this.currentPick, so we hold a local reference to make sure that\n * does not impact this function. */\n const currentPick = this.currentPick;\n this.currentPick = null;\n currentPick.unref();\n currentPick.removeConnectivityStateListener(this.subchannelStateListener);\n this.channelControlHelper.removeChannelzChild(currentPick.getChannelzRef());\n if (this.reportHealthStatus) {\n currentPick.removeHealthStateWatcher(this.pickedSubchannelHealthListener);\n }\n }\n }\n onSubchannelStateUpdate(subchannel, previousState, newState, errorMessage) {\n var _a;\n if ((_a = this.currentPick) === null || _a === void 0 ? void 0 : _a.realSubchannelEquals(subchannel)) {\n if (newState !== connectivity_state_1.ConnectivityState.READY) {\n this.removeCurrentPick();\n this.calculateAndReportNewState();\n this.requestReresolution();\n }\n return;\n }\n for (const [index, child] of this.children.entries()) {\n if (subchannel.realSubchannelEquals(child.subchannel)) {\n if (newState === connectivity_state_1.ConnectivityState.READY) {\n this.pickSubchannel(child.subchannel);\n }\n if (newState === connectivity_state_1.ConnectivityState.TRANSIENT_FAILURE) {\n child.hasReportedTransientFailure = true;\n if (errorMessage) {\n this.lastError = errorMessage;\n }\n this.maybeEnterStickyTransientFailureMode();\n if (index === this.currentSubchannelIndex) {\n this.startNextSubchannelConnecting(index + 1);\n }\n }\n child.subchannel.startConnecting();\n return;\n }\n }\n }\n startNextSubchannelConnecting(startIndex) {\n clearTimeout(this.connectionDelayTimeout);\n if (this.triedAllSubchannels) {\n return;\n }\n for (const [index, child] of this.children.entries()) {\n if (index >= startIndex) {\n const subchannelState = child.subchannel.getConnectivityState();\n if (subchannelState === connectivity_state_1.ConnectivityState.IDLE ||\n subchannelState === connectivity_state_1.ConnectivityState.CONNECTING) {\n this.startConnecting(index);\n return;\n }\n }\n }\n this.triedAllSubchannels = true;\n this.maybeEnterStickyTransientFailureMode();\n }\n /**\n * Have a single subchannel in the `subchannels` list start connecting.\n * @param subchannelIndex The index into the `subchannels` list.\n */\n startConnecting(subchannelIndex) {\n var _a, _b;\n clearTimeout(this.connectionDelayTimeout);\n this.currentSubchannelIndex = subchannelIndex;\n if (this.children[subchannelIndex].subchannel.getConnectivityState() ===\n connectivity_state_1.ConnectivityState.IDLE) {\n trace('Start connecting to subchannel with address ' +\n this.children[subchannelIndex].subchannel.getAddress());\n process.nextTick(() => {\n var _a;\n (_a = this.children[subchannelIndex]) === null || _a === void 0 ? void 0 : _a.subchannel.startConnecting();\n });\n }\n this.connectionDelayTimeout = setTimeout(() => {\n this.startNextSubchannelConnecting(subchannelIndex + 1);\n }, CONNECTION_DELAY_INTERVAL_MS);\n (_b = (_a = this.connectionDelayTimeout).unref) === null || _b === void 0 ? void 0 : _b.call(_a);\n }\n pickSubchannel(subchannel) {\n if (this.currentPick && subchannel.realSubchannelEquals(this.currentPick)) {\n return;\n }\n trace('Pick subchannel with address ' + subchannel.getAddress());\n this.stickyTransientFailureMode = false;\n this.removeCurrentPick();\n this.currentPick = subchannel;\n subchannel.ref();\n if (this.reportHealthStatus) {\n subchannel.addHealthStateWatcher(this.pickedSubchannelHealthListener);\n }\n this.channelControlHelper.addChannelzChild(subchannel.getChannelzRef());\n this.resetSubchannelList();\n clearTimeout(this.connectionDelayTimeout);\n this.calculateAndReportNewState();\n }\n updateState(newState, picker) {\n trace(connectivity_state_1.ConnectivityState[this.currentState] +\n ' -> ' +\n connectivity_state_1.ConnectivityState[newState]);\n this.currentState = newState;\n this.channelControlHelper.updateState(newState, picker);\n }\n resetSubchannelList() {\n for (const child of this.children) {\n if (!(this.currentPick &&\n child.subchannel.realSubchannelEquals(this.currentPick))) {\n /* The connectivity state listener is the same whether the subchannel\n * is in the list of children or it is the currentPick, so if it is in\n * both, removing it here would cause problems. In particular, that\n * always happens immediately after the subchannel is picked. */\n child.subchannel.removeConnectivityStateListener(this.subchannelStateListener);\n }\n /* Refs are counted independently for the children list and the\n * currentPick, so we call unref whether or not the child is the\n * currentPick. Channelz child references are also refcounted, so\n * removeChannelzChild can be handled the same way. */\n child.subchannel.unref();\n this.channelControlHelper.removeChannelzChild(child.subchannel.getChannelzRef());\n }\n this.currentSubchannelIndex = 0;\n this.children = [];\n this.triedAllSubchannels = false;\n this.requestedResolutionSinceLastUpdate = false;\n }\n connectToAddressList(addressList) {\n const newChildrenList = addressList.map(address => ({\n subchannel: this.channelControlHelper.createSubchannel(address, {}),\n hasReportedTransientFailure: false,\n }));\n /* Ref each subchannel before resetting the list, to ensure that\n * subchannels shared between the list don't drop to 0 refs during the\n * transition. */\n for (const { subchannel } of newChildrenList) {\n subchannel.ref();\n this.channelControlHelper.addChannelzChild(subchannel.getChannelzRef());\n }\n this.resetSubchannelList();\n this.children = newChildrenList;\n for (const { subchannel } of this.children) {\n subchannel.addConnectivityStateListener(this.subchannelStateListener);\n if (subchannel.getConnectivityState() === connectivity_state_1.ConnectivityState.READY) {\n this.pickSubchannel(subchannel);\n return;\n }\n }\n for (const child of this.children) {\n if (child.subchannel.getConnectivityState() ===\n connectivity_state_1.ConnectivityState.TRANSIENT_FAILURE) {\n child.hasReportedTransientFailure = true;\n }\n }\n this.startNextSubchannelConnecting(0);\n this.calculateAndReportNewState();\n }\n updateAddressList(endpointList, lbConfig) {\n if (!(lbConfig instanceof PickFirstLoadBalancingConfig)) {\n return;\n }\n /* Previously, an update would be discarded if it was identical to the\n * previous update, to minimize churn. Now the DNS resolver is\n * rate-limited, so that is less of a concern. */\n if (lbConfig.getShuffleAddressList()) {\n endpointList = shuffled(endpointList);\n }\n const rawAddressList = [].concat(...endpointList.map(endpoint => endpoint.addresses));\n if (rawAddressList.length === 0) {\n throw new Error('No addresses in endpoint list passed to pick_first');\n }\n const addressList = interleaveAddressFamilies(rawAddressList);\n this.latestAddressList = addressList;\n this.connectToAddressList(addressList);\n }\n exitIdle() {\n if (this.currentState === connectivity_state_1.ConnectivityState.IDLE &&\n this.latestAddressList) {\n this.connectToAddressList(this.latestAddressList);\n }\n }\n resetBackoff() {\n /* The pick first load balancer does not have a connection backoff, so this\n * does nothing */\n }\n destroy() {\n this.resetSubchannelList();\n this.removeCurrentPick();\n }\n getTypeName() {\n return TYPE_NAME;\n }\n}\nexports.PickFirstLoadBalancer = PickFirstLoadBalancer;\nconst LEAF_CONFIG = new PickFirstLoadBalancingConfig(false);\n/**\n * This class handles the leaf load balancing operations for a single endpoint.\n * It is a thin wrapper around a PickFirstLoadBalancer with a different API\n * that more closely reflects how it will be used as a leaf balancer.\n */\nclass LeafLoadBalancer {\n constructor(endpoint, channelControlHelper, options) {\n this.endpoint = endpoint;\n this.latestState = connectivity_state_1.ConnectivityState.IDLE;\n const childChannelControlHelper = (0, load_balancer_1.createChildChannelControlHelper)(channelControlHelper, {\n updateState: (connectivityState, picker) => {\n this.latestState = connectivityState;\n this.latestPicker = picker;\n channelControlHelper.updateState(connectivityState, picker);\n },\n });\n this.pickFirstBalancer = new PickFirstLoadBalancer(childChannelControlHelper, Object.assign(Object.assign({}, options), { [REPORT_HEALTH_STATUS_OPTION_NAME]: true }));\n this.latestPicker = new picker_1.QueuePicker(this.pickFirstBalancer);\n }\n startConnecting() {\n this.pickFirstBalancer.updateAddressList([this.endpoint], LEAF_CONFIG);\n }\n /**\n * Update the endpoint associated with this LeafLoadBalancer to a new\n * endpoint. Does not trigger connection establishment if a connection\n * attempt is not already in progress.\n * @param newEndpoint\n */\n updateEndpoint(newEndpoint) {\n this.endpoint = newEndpoint;\n if (this.latestState !== connectivity_state_1.ConnectivityState.IDLE) {\n this.startConnecting();\n }\n }\n getConnectivityState() {\n return this.latestState;\n }\n getPicker() {\n return this.latestPicker;\n }\n getEndpoint() {\n return this.endpoint;\n }\n exitIdle() {\n this.pickFirstBalancer.exitIdle();\n }\n destroy() {\n this.pickFirstBalancer.destroy();\n }\n}\nexports.LeafLoadBalancer = LeafLoadBalancer;\nfunction setup() {\n (0, load_balancer_1.registerLoadBalancerType)(TYPE_NAME, PickFirstLoadBalancer, PickFirstLoadBalancingConfig);\n (0, load_balancer_1.registerDefaultLoadBalancerType)(TYPE_NAME);\n}\nexports.setup = setup;\n//# sourceMappingURL=load-balancer-pick-first.js.map","\"use strict\";\n/*\n * Copyright 2019 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.setup = exports.RoundRobinLoadBalancer = void 0;\nconst load_balancer_1 = require(\"./load-balancer\");\nconst connectivity_state_1 = require(\"./connectivity-state\");\nconst picker_1 = require(\"./picker\");\nconst logging = require(\"./logging\");\nconst constants_1 = require(\"./constants\");\nconst subchannel_address_1 = require(\"./subchannel-address\");\nconst load_balancer_pick_first_1 = require(\"./load-balancer-pick-first\");\nconst TRACER_NAME = 'round_robin';\nfunction trace(text) {\n logging.trace(constants_1.LogVerbosity.DEBUG, TRACER_NAME, text);\n}\nconst TYPE_NAME = 'round_robin';\nclass RoundRobinLoadBalancingConfig {\n getLoadBalancerName() {\n return TYPE_NAME;\n }\n constructor() { }\n toJsonObject() {\n return {\n [TYPE_NAME]: {},\n };\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n static createFromJson(obj) {\n return new RoundRobinLoadBalancingConfig();\n }\n}\nclass RoundRobinPicker {\n constructor(children, nextIndex = 0) {\n this.children = children;\n this.nextIndex = nextIndex;\n }\n pick(pickArgs) {\n const childPicker = this.children[this.nextIndex].picker;\n this.nextIndex = (this.nextIndex + 1) % this.children.length;\n return childPicker.pick(pickArgs);\n }\n /**\n * Check what the next subchannel returned would be. Used by the load\n * balancer implementation to preserve this part of the picker state if\n * possible when a subchannel connects or disconnects.\n */\n peekNextEndpoint() {\n return this.children[this.nextIndex].endpoint;\n }\n}\nclass RoundRobinLoadBalancer {\n constructor(channelControlHelper, options) {\n this.channelControlHelper = channelControlHelper;\n this.options = options;\n this.children = [];\n this.currentState = connectivity_state_1.ConnectivityState.IDLE;\n this.currentReadyPicker = null;\n this.updatesPaused = false;\n this.lastError = null;\n this.childChannelControlHelper = (0, load_balancer_1.createChildChannelControlHelper)(channelControlHelper, {\n updateState: (connectivityState, picker) => {\n this.calculateAndUpdateState();\n },\n });\n }\n countChildrenWithState(state) {\n return this.children.filter(child => child.getConnectivityState() === state)\n .length;\n }\n calculateAndUpdateState() {\n if (this.updatesPaused) {\n return;\n }\n if (this.countChildrenWithState(connectivity_state_1.ConnectivityState.READY) > 0) {\n const readyChildren = this.children.filter(child => child.getConnectivityState() === connectivity_state_1.ConnectivityState.READY);\n let index = 0;\n if (this.currentReadyPicker !== null) {\n const nextPickedEndpoint = this.currentReadyPicker.peekNextEndpoint();\n index = readyChildren.findIndex(child => (0, subchannel_address_1.endpointEqual)(child.getEndpoint(), nextPickedEndpoint));\n if (index < 0) {\n index = 0;\n }\n }\n this.updateState(connectivity_state_1.ConnectivityState.READY, new RoundRobinPicker(readyChildren.map(child => ({\n endpoint: child.getEndpoint(),\n picker: child.getPicker(),\n })), index));\n }\n else if (this.countChildrenWithState(connectivity_state_1.ConnectivityState.CONNECTING) > 0) {\n this.updateState(connectivity_state_1.ConnectivityState.CONNECTING, new picker_1.QueuePicker(this));\n }\n else if (this.countChildrenWithState(connectivity_state_1.ConnectivityState.TRANSIENT_FAILURE) > 0) {\n this.updateState(connectivity_state_1.ConnectivityState.TRANSIENT_FAILURE, new picker_1.UnavailablePicker({\n details: `No connection established. Last error: ${this.lastError}`,\n }));\n }\n else {\n this.updateState(connectivity_state_1.ConnectivityState.IDLE, new picker_1.QueuePicker(this));\n }\n /* round_robin should keep all children connected, this is how we do that.\n * We can't do this more efficiently in the individual child's updateState\n * callback because that doesn't have a reference to which child the state\n * change is associated with. */\n for (const child of this.children) {\n if (child.getConnectivityState() === connectivity_state_1.ConnectivityState.IDLE) {\n child.exitIdle();\n }\n }\n }\n updateState(newState, picker) {\n trace(connectivity_state_1.ConnectivityState[this.currentState] +\n ' -> ' +\n connectivity_state_1.ConnectivityState[newState]);\n if (newState === connectivity_state_1.ConnectivityState.READY) {\n this.currentReadyPicker = picker;\n }\n else {\n this.currentReadyPicker = null;\n }\n this.currentState = newState;\n this.channelControlHelper.updateState(newState, picker);\n }\n resetSubchannelList() {\n for (const child of this.children) {\n child.destroy();\n }\n }\n updateAddressList(endpointList, lbConfig) {\n this.resetSubchannelList();\n trace('Connect to endpoint list ' + endpointList.map(subchannel_address_1.endpointToString));\n this.updatesPaused = true;\n this.children = endpointList.map(endpoint => new load_balancer_pick_first_1.LeafLoadBalancer(endpoint, this.childChannelControlHelper, this.options));\n for (const child of this.children) {\n child.startConnecting();\n }\n this.updatesPaused = false;\n this.calculateAndUpdateState();\n }\n exitIdle() {\n /* The round_robin LB policy is only in the IDLE state if it has no\n * addresses to try to connect to and it has no picked subchannel.\n * In that case, there is no meaningful action that can be taken here. */\n }\n resetBackoff() {\n // This LB policy has no backoff to reset\n }\n destroy() {\n this.resetSubchannelList();\n }\n getTypeName() {\n return TYPE_NAME;\n }\n}\nexports.RoundRobinLoadBalancer = RoundRobinLoadBalancer;\nfunction setup() {\n (0, load_balancer_1.registerLoadBalancerType)(TYPE_NAME, RoundRobinLoadBalancer, RoundRobinLoadBalancingConfig);\n}\nexports.setup = setup;\n//# sourceMappingURL=load-balancer-round-robin.js.map","\"use strict\";\n/*\n * Copyright 2019 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.selectLbConfigFromList = exports.getDefaultConfig = exports.parseLoadBalancingConfig = exports.isLoadBalancerNameRegistered = exports.createLoadBalancer = exports.registerDefaultLoadBalancerType = exports.registerLoadBalancerType = exports.createChildChannelControlHelper = void 0;\nconst logging_1 = require(\"./logging\");\nconst constants_1 = require(\"./constants\");\n/**\n * Create a child ChannelControlHelper that overrides some methods of the\n * parent while letting others pass through to the parent unmodified. This\n * allows other code to create these children without needing to know about\n * all of the methods to be passed through.\n * @param parent\n * @param overrides\n */\nfunction createChildChannelControlHelper(parent, overrides) {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;\n return {\n createSubchannel: (_b = (_a = overrides.createSubchannel) === null || _a === void 0 ? void 0 : _a.bind(overrides)) !== null && _b !== void 0 ? _b : parent.createSubchannel.bind(parent),\n updateState: (_d = (_c = overrides.updateState) === null || _c === void 0 ? void 0 : _c.bind(overrides)) !== null && _d !== void 0 ? _d : parent.updateState.bind(parent),\n requestReresolution: (_f = (_e = overrides.requestReresolution) === null || _e === void 0 ? void 0 : _e.bind(overrides)) !== null && _f !== void 0 ? _f : parent.requestReresolution.bind(parent),\n addChannelzChild: (_h = (_g = overrides.addChannelzChild) === null || _g === void 0 ? void 0 : _g.bind(overrides)) !== null && _h !== void 0 ? _h : parent.addChannelzChild.bind(parent),\n removeChannelzChild: (_k = (_j = overrides.removeChannelzChild) === null || _j === void 0 ? void 0 : _j.bind(overrides)) !== null && _k !== void 0 ? _k : parent.removeChannelzChild.bind(parent),\n };\n}\nexports.createChildChannelControlHelper = createChildChannelControlHelper;\nconst registeredLoadBalancerTypes = {};\nlet defaultLoadBalancerType = null;\nfunction registerLoadBalancerType(typeName, loadBalancerType, loadBalancingConfigType) {\n registeredLoadBalancerTypes[typeName] = {\n LoadBalancer: loadBalancerType,\n LoadBalancingConfig: loadBalancingConfigType,\n };\n}\nexports.registerLoadBalancerType = registerLoadBalancerType;\nfunction registerDefaultLoadBalancerType(typeName) {\n defaultLoadBalancerType = typeName;\n}\nexports.registerDefaultLoadBalancerType = registerDefaultLoadBalancerType;\nfunction createLoadBalancer(config, channelControlHelper, options) {\n const typeName = config.getLoadBalancerName();\n if (typeName in registeredLoadBalancerTypes) {\n return new registeredLoadBalancerTypes[typeName].LoadBalancer(channelControlHelper, options);\n }\n else {\n return null;\n }\n}\nexports.createLoadBalancer = createLoadBalancer;\nfunction isLoadBalancerNameRegistered(typeName) {\n return typeName in registeredLoadBalancerTypes;\n}\nexports.isLoadBalancerNameRegistered = isLoadBalancerNameRegistered;\nfunction parseLoadBalancingConfig(rawConfig) {\n const keys = Object.keys(rawConfig);\n if (keys.length !== 1) {\n throw new Error('Provided load balancing config has multiple conflicting entries');\n }\n const typeName = keys[0];\n if (typeName in registeredLoadBalancerTypes) {\n try {\n return registeredLoadBalancerTypes[typeName].LoadBalancingConfig.createFromJson(rawConfig[typeName]);\n }\n catch (e) {\n throw new Error(`${typeName}: ${e.message}`);\n }\n }\n else {\n throw new Error(`Unrecognized load balancing config name ${typeName}`);\n }\n}\nexports.parseLoadBalancingConfig = parseLoadBalancingConfig;\nfunction getDefaultConfig() {\n if (!defaultLoadBalancerType) {\n throw new Error('No default load balancer type registered');\n }\n return new registeredLoadBalancerTypes[defaultLoadBalancerType].LoadBalancingConfig();\n}\nexports.getDefaultConfig = getDefaultConfig;\nfunction selectLbConfigFromList(configs, fallbackTodefault = false) {\n for (const config of configs) {\n try {\n return parseLoadBalancingConfig(config);\n }\n catch (e) {\n (0, logging_1.log)(constants_1.LogVerbosity.DEBUG, 'Config parsing failed with error', e.message);\n continue;\n }\n }\n if (fallbackTodefault) {\n if (defaultLoadBalancerType) {\n return new registeredLoadBalancerTypes[defaultLoadBalancerType].LoadBalancingConfig();\n }\n else {\n return null;\n }\n }\n else {\n return null;\n }\n}\nexports.selectLbConfigFromList = selectLbConfigFromList;\n//# sourceMappingURL=load-balancer.js.map","\"use strict\";\n/*\n * Copyright 2022 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.LoadBalancingCall = void 0;\nconst connectivity_state_1 = require(\"./connectivity-state\");\nconst constants_1 = require(\"./constants\");\nconst deadline_1 = require(\"./deadline\");\nconst metadata_1 = require(\"./metadata\");\nconst picker_1 = require(\"./picker\");\nconst uri_parser_1 = require(\"./uri-parser\");\nconst logging = require(\"./logging\");\nconst control_plane_status_1 = require(\"./control-plane-status\");\nconst http2 = require(\"http2\");\nconst TRACER_NAME = 'load_balancing_call';\nclass LoadBalancingCall {\n constructor(channel, callConfig, methodName, host, credentials, deadline, callNumber) {\n var _a, _b;\n this.channel = channel;\n this.callConfig = callConfig;\n this.methodName = methodName;\n this.host = host;\n this.credentials = credentials;\n this.deadline = deadline;\n this.callNumber = callNumber;\n this.child = null;\n this.readPending = false;\n this.pendingMessage = null;\n this.pendingHalfClose = false;\n this.ended = false;\n this.metadata = null;\n this.listener = null;\n this.onCallEnded = null;\n this.childStartTime = null;\n const splitPath = this.methodName.split('/');\n let serviceName = '';\n /* The standard path format is \"/{serviceName}/{methodName}\", so if we split\n * by '/', the first item should be empty and the second should be the\n * service name */\n if (splitPath.length >= 2) {\n serviceName = splitPath[1];\n }\n const hostname = (_b = (_a = (0, uri_parser_1.splitHostPort)(this.host)) === null || _a === void 0 ? void 0 : _a.host) !== null && _b !== void 0 ? _b : 'localhost';\n /* Currently, call credentials are only allowed on HTTPS connections, so we\n * can assume that the scheme is \"https\" */\n this.serviceUrl = `https://${hostname}/${serviceName}`;\n this.startTime = new Date();\n }\n getDeadlineInfo() {\n var _a, _b;\n const deadlineInfo = [];\n if (this.childStartTime) {\n if (this.childStartTime > this.startTime) {\n if ((_a = this.metadata) === null || _a === void 0 ? void 0 : _a.getOptions().waitForReady) {\n deadlineInfo.push('wait_for_ready');\n }\n deadlineInfo.push(`LB pick: ${(0, deadline_1.formatDateDifference)(this.startTime, this.childStartTime)}`);\n }\n deadlineInfo.push(...this.child.getDeadlineInfo());\n return deadlineInfo;\n }\n else {\n if ((_b = this.metadata) === null || _b === void 0 ? void 0 : _b.getOptions().waitForReady) {\n deadlineInfo.push('wait_for_ready');\n }\n deadlineInfo.push('Waiting for LB pick');\n }\n return deadlineInfo;\n }\n trace(text) {\n logging.trace(constants_1.LogVerbosity.DEBUG, TRACER_NAME, '[' + this.callNumber + '] ' + text);\n }\n outputStatus(status, progress) {\n var _a, _b;\n if (!this.ended) {\n this.ended = true;\n this.trace('ended with status: code=' +\n status.code +\n ' details=\"' +\n status.details +\n '\" start time=' +\n this.startTime.toISOString());\n const finalStatus = Object.assign(Object.assign({}, status), { progress });\n (_a = this.listener) === null || _a === void 0 ? void 0 : _a.onReceiveStatus(finalStatus);\n (_b = this.onCallEnded) === null || _b === void 0 ? void 0 : _b.call(this, finalStatus.code);\n }\n }\n doPick() {\n var _a, _b;\n if (this.ended) {\n return;\n }\n if (!this.metadata) {\n throw new Error('doPick called before start');\n }\n this.trace('Pick called');\n const finalMetadata = this.metadata.clone();\n const pickResult = this.channel.doPick(finalMetadata, this.callConfig.pickInformation);\n const subchannelString = pickResult.subchannel\n ? '(' +\n pickResult.subchannel.getChannelzRef().id +\n ') ' +\n pickResult.subchannel.getAddress()\n : '' + pickResult.subchannel;\n this.trace('Pick result: ' +\n picker_1.PickResultType[pickResult.pickResultType] +\n ' subchannel: ' +\n subchannelString +\n ' status: ' +\n ((_a = pickResult.status) === null || _a === void 0 ? void 0 : _a.code) +\n ' ' +\n ((_b = pickResult.status) === null || _b === void 0 ? void 0 : _b.details));\n switch (pickResult.pickResultType) {\n case picker_1.PickResultType.COMPLETE:\n this.credentials\n .generateMetadata({ service_url: this.serviceUrl })\n .then(credsMetadata => {\n var _a, _b, _c;\n /* If this call was cancelled (e.g. by the deadline) before\n * metadata generation finished, we shouldn't do anything with\n * it. */\n if (this.ended) {\n this.trace('Credentials metadata generation finished after call ended');\n return;\n }\n finalMetadata.merge(credsMetadata);\n if (finalMetadata.get('authorization').length > 1) {\n this.outputStatus({\n code: constants_1.Status.INTERNAL,\n details: '\"authorization\" metadata cannot have multiple values',\n metadata: new metadata_1.Metadata(),\n }, 'PROCESSED');\n }\n if (pickResult.subchannel.getConnectivityState() !==\n connectivity_state_1.ConnectivityState.READY) {\n this.trace('Picked subchannel ' +\n subchannelString +\n ' has state ' +\n connectivity_state_1.ConnectivityState[pickResult.subchannel.getConnectivityState()] +\n ' after getting credentials metadata. Retrying pick');\n this.doPick();\n return;\n }\n if (this.deadline !== Infinity) {\n finalMetadata.set('grpc-timeout', (0, deadline_1.getDeadlineTimeoutString)(this.deadline));\n }\n try {\n this.child = pickResult\n .subchannel.getRealSubchannel()\n .createCall(finalMetadata, this.host, this.methodName, {\n onReceiveMetadata: metadata => {\n this.trace('Received metadata');\n this.listener.onReceiveMetadata(metadata);\n },\n onReceiveMessage: message => {\n this.trace('Received message');\n this.listener.onReceiveMessage(message);\n },\n onReceiveStatus: status => {\n this.trace('Received status');\n if (status.rstCode ===\n http2.constants.NGHTTP2_REFUSED_STREAM) {\n this.outputStatus(status, 'REFUSED');\n }\n else {\n this.outputStatus(status, 'PROCESSED');\n }\n },\n });\n this.childStartTime = new Date();\n }\n catch (error) {\n this.trace('Failed to start call on picked subchannel ' +\n subchannelString +\n ' with error ' +\n error.message);\n this.outputStatus({\n code: constants_1.Status.INTERNAL,\n details: 'Failed to start HTTP/2 stream with error ' +\n error.message,\n metadata: new metadata_1.Metadata(),\n }, 'NOT_STARTED');\n return;\n }\n (_b = (_a = this.callConfig).onCommitted) === null || _b === void 0 ? void 0 : _b.call(_a);\n (_c = pickResult.onCallStarted) === null || _c === void 0 ? void 0 : _c.call(pickResult);\n this.onCallEnded = pickResult.onCallEnded;\n this.trace('Created child call [' + this.child.getCallNumber() + ']');\n if (this.readPending) {\n this.child.startRead();\n }\n if (this.pendingMessage) {\n this.child.sendMessageWithContext(this.pendingMessage.context, this.pendingMessage.message);\n }\n if (this.pendingHalfClose) {\n this.child.halfClose();\n }\n }, (error) => {\n // We assume the error code isn't 0 (Status.OK)\n const { code, details } = (0, control_plane_status_1.restrictControlPlaneStatusCode)(typeof error.code === 'number' ? error.code : constants_1.Status.UNKNOWN, `Getting metadata from plugin failed with error: ${error.message}`);\n this.outputStatus({\n code: code,\n details: details,\n metadata: new metadata_1.Metadata(),\n }, 'PROCESSED');\n });\n break;\n case picker_1.PickResultType.DROP:\n const { code, details } = (0, control_plane_status_1.restrictControlPlaneStatusCode)(pickResult.status.code, pickResult.status.details);\n setImmediate(() => {\n this.outputStatus({ code, details, metadata: pickResult.status.metadata }, 'DROP');\n });\n break;\n case picker_1.PickResultType.TRANSIENT_FAILURE:\n if (this.metadata.getOptions().waitForReady) {\n this.channel.queueCallForPick(this);\n }\n else {\n const { code, details } = (0, control_plane_status_1.restrictControlPlaneStatusCode)(pickResult.status.code, pickResult.status.details);\n setImmediate(() => {\n this.outputStatus({ code, details, metadata: pickResult.status.metadata }, 'PROCESSED');\n });\n }\n break;\n case picker_1.PickResultType.QUEUE:\n this.channel.queueCallForPick(this);\n }\n }\n cancelWithStatus(status, details) {\n var _a;\n this.trace('cancelWithStatus code: ' + status + ' details: \"' + details + '\"');\n (_a = this.child) === null || _a === void 0 ? void 0 : _a.cancelWithStatus(status, details);\n this.outputStatus({ code: status, details: details, metadata: new metadata_1.Metadata() }, 'PROCESSED');\n }\n getPeer() {\n var _a, _b;\n return (_b = (_a = this.child) === null || _a === void 0 ? void 0 : _a.getPeer()) !== null && _b !== void 0 ? _b : this.channel.getTarget();\n }\n start(metadata, listener) {\n this.trace('start called');\n this.listener = listener;\n this.metadata = metadata;\n this.doPick();\n }\n sendMessageWithContext(context, message) {\n this.trace('write() called with message of length ' + message.length);\n if (this.child) {\n this.child.sendMessageWithContext(context, message);\n }\n else {\n this.pendingMessage = { context, message };\n }\n }\n startRead() {\n this.trace('startRead called');\n if (this.child) {\n this.child.startRead();\n }\n else {\n this.readPending = true;\n }\n }\n halfClose() {\n this.trace('halfClose called');\n if (this.child) {\n this.child.halfClose();\n }\n else {\n this.pendingHalfClose = true;\n }\n }\n setCredentials(credentials) {\n throw new Error('Method not implemented.');\n }\n getCallNumber() {\n return this.callNumber;\n }\n}\nexports.LoadBalancingCall = LoadBalancingCall;\n//# sourceMappingURL=load-balancing-call.js.map","\"use strict\";\n/*\n * Copyright 2019 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nvar _a, _b, _c, _d;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isTracerEnabled = exports.trace = exports.log = exports.setLoggerVerbosity = exports.setLogger = exports.getLogger = void 0;\nconst constants_1 = require(\"./constants\");\nconst process_1 = require(\"process\");\nconst clientVersion = require('../../package.json').version;\nconst DEFAULT_LOGGER = {\n error: (message, ...optionalParams) => {\n console.error('E ' + message, ...optionalParams);\n },\n info: (message, ...optionalParams) => {\n console.error('I ' + message, ...optionalParams);\n },\n debug: (message, ...optionalParams) => {\n console.error('D ' + message, ...optionalParams);\n },\n};\nlet _logger = DEFAULT_LOGGER;\nlet _logVerbosity = constants_1.LogVerbosity.ERROR;\nconst verbosityString = (_b = (_a = process.env.GRPC_NODE_VERBOSITY) !== null && _a !== void 0 ? _a : process.env.GRPC_VERBOSITY) !== null && _b !== void 0 ? _b : '';\nswitch (verbosityString.toUpperCase()) {\n case 'DEBUG':\n _logVerbosity = constants_1.LogVerbosity.DEBUG;\n break;\n case 'INFO':\n _logVerbosity = constants_1.LogVerbosity.INFO;\n break;\n case 'ERROR':\n _logVerbosity = constants_1.LogVerbosity.ERROR;\n break;\n case 'NONE':\n _logVerbosity = constants_1.LogVerbosity.NONE;\n break;\n default:\n // Ignore any other values\n}\nconst getLogger = () => {\n return _logger;\n};\nexports.getLogger = getLogger;\nconst setLogger = (logger) => {\n _logger = logger;\n};\nexports.setLogger = setLogger;\nconst setLoggerVerbosity = (verbosity) => {\n _logVerbosity = verbosity;\n};\nexports.setLoggerVerbosity = setLoggerVerbosity;\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst log = (severity, ...args) => {\n let logFunction;\n if (severity >= _logVerbosity) {\n switch (severity) {\n case constants_1.LogVerbosity.DEBUG:\n logFunction = _logger.debug;\n break;\n case constants_1.LogVerbosity.INFO:\n logFunction = _logger.info;\n break;\n case constants_1.LogVerbosity.ERROR:\n logFunction = _logger.error;\n break;\n }\n /* Fall back to _logger.error when other methods are not available for\n * compatiblity with older behavior that always logged to _logger.error */\n if (!logFunction) {\n logFunction = _logger.error;\n }\n if (logFunction) {\n logFunction.bind(_logger)(...args);\n }\n }\n};\nexports.log = log;\nconst tracersString = (_d = (_c = process.env.GRPC_NODE_TRACE) !== null && _c !== void 0 ? _c : process.env.GRPC_TRACE) !== null && _d !== void 0 ? _d : '';\nconst enabledTracers = new Set();\nconst disabledTracers = new Set();\nfor (const tracerName of tracersString.split(',')) {\n if (tracerName.startsWith('-')) {\n disabledTracers.add(tracerName.substring(1));\n }\n else {\n enabledTracers.add(tracerName);\n }\n}\nconst allEnabled = enabledTracers.has('all');\nfunction trace(severity, tracer, text) {\n if (isTracerEnabled(tracer)) {\n (0, exports.log)(severity, new Date().toISOString() +\n ' | v' +\n clientVersion +\n ' ' +\n process_1.pid +\n ' | ' +\n tracer +\n ' | ' +\n text);\n }\n}\nexports.trace = trace;\nfunction isTracerEnabled(tracer) {\n return (!disabledTracers.has(tracer) && (allEnabled || enabledTracers.has(tracer)));\n}\nexports.isTracerEnabled = isTracerEnabled;\n//# sourceMappingURL=logging.js.map","\"use strict\";\n/*\n * Copyright 2019 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.loadPackageDefinition = exports.makeClientConstructor = void 0;\nconst client_1 = require(\"./client\");\n/**\n * Map with short names for each of the requester maker functions. Used in\n * makeClientConstructor\n * @private\n */\nconst requesterFuncs = {\n unary: client_1.Client.prototype.makeUnaryRequest,\n server_stream: client_1.Client.prototype.makeServerStreamRequest,\n client_stream: client_1.Client.prototype.makeClientStreamRequest,\n bidi: client_1.Client.prototype.makeBidiStreamRequest,\n};\n/**\n * Returns true, if given key is included in the blacklisted\n * keys.\n * @param key key for check, string.\n */\nfunction isPrototypePolluted(key) {\n return ['__proto__', 'prototype', 'constructor'].includes(key);\n}\n/**\n * Creates a constructor for a client with the given methods, as specified in\n * the methods argument. The resulting class will have an instance method for\n * each method in the service, which is a partial application of one of the\n * [Client]{@link grpc.Client} request methods, depending on `requestSerialize`\n * and `responseSerialize`, with the `method`, `serialize`, and `deserialize`\n * arguments predefined.\n * @param methods An object mapping method names to\n * method attributes\n * @param serviceName The fully qualified name of the service\n * @param classOptions An options object.\n * @return New client constructor, which is a subclass of\n * {@link grpc.Client}, and has the same arguments as that constructor.\n */\nfunction makeClientConstructor(methods, serviceName, classOptions) {\n if (!classOptions) {\n classOptions = {};\n }\n class ServiceClientImpl extends client_1.Client {\n }\n Object.keys(methods).forEach(name => {\n if (isPrototypePolluted(name)) {\n return;\n }\n const attrs = methods[name];\n let methodType;\n // TODO(murgatroid99): Verify that we don't need this anymore\n if (typeof name === 'string' && name.charAt(0) === '$') {\n throw new Error('Method names cannot start with $');\n }\n if (attrs.requestStream) {\n if (attrs.responseStream) {\n methodType = 'bidi';\n }\n else {\n methodType = 'client_stream';\n }\n }\n else {\n if (attrs.responseStream) {\n methodType = 'server_stream';\n }\n else {\n methodType = 'unary';\n }\n }\n const serialize = attrs.requestSerialize;\n const deserialize = attrs.responseDeserialize;\n const methodFunc = partial(requesterFuncs[methodType], attrs.path, serialize, deserialize);\n ServiceClientImpl.prototype[name] = methodFunc;\n // Associate all provided attributes with the method\n Object.assign(ServiceClientImpl.prototype[name], attrs);\n if (attrs.originalName && !isPrototypePolluted(attrs.originalName)) {\n ServiceClientImpl.prototype[attrs.originalName] =\n ServiceClientImpl.prototype[name];\n }\n });\n ServiceClientImpl.service = methods;\n ServiceClientImpl.serviceName = serviceName;\n return ServiceClientImpl;\n}\nexports.makeClientConstructor = makeClientConstructor;\nfunction partial(fn, path, serialize, deserialize) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return function (...args) {\n return fn.call(this, path, serialize, deserialize, ...args);\n };\n}\nfunction isProtobufTypeDefinition(obj) {\n return 'format' in obj;\n}\n/**\n * Load a gRPC package definition as a gRPC object hierarchy.\n * @param packageDef The package definition object.\n * @return The resulting gRPC object.\n */\nfunction loadPackageDefinition(packageDef) {\n const result = {};\n for (const serviceFqn in packageDef) {\n if (Object.prototype.hasOwnProperty.call(packageDef, serviceFqn)) {\n const service = packageDef[serviceFqn];\n const nameComponents = serviceFqn.split('.');\n if (nameComponents.some((comp) => isPrototypePolluted(comp))) {\n continue;\n }\n const serviceName = nameComponents[nameComponents.length - 1];\n let current = result;\n for (const packageName of nameComponents.slice(0, -1)) {\n if (!current[packageName]) {\n current[packageName] = {};\n }\n current = current[packageName];\n }\n if (isProtobufTypeDefinition(service)) {\n current[serviceName] = service;\n }\n else {\n current[serviceName] = makeClientConstructor(service, serviceName, {});\n }\n }\n }\n return result;\n}\nexports.loadPackageDefinition = loadPackageDefinition;\n//# sourceMappingURL=make-client.js.map","\"use strict\";\n/*\n * Copyright 2020 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MaxMessageSizeFilterFactory = exports.MaxMessageSizeFilter = void 0;\nconst filter_1 = require(\"./filter\");\nconst constants_1 = require(\"./constants\");\nconst metadata_1 = require(\"./metadata\");\nclass MaxMessageSizeFilter extends filter_1.BaseFilter {\n constructor(options) {\n super();\n this.maxSendMessageSize = constants_1.DEFAULT_MAX_SEND_MESSAGE_LENGTH;\n this.maxReceiveMessageSize = constants_1.DEFAULT_MAX_RECEIVE_MESSAGE_LENGTH;\n if ('grpc.max_send_message_length' in options) {\n this.maxSendMessageSize = options['grpc.max_send_message_length'];\n }\n if ('grpc.max_receive_message_length' in options) {\n this.maxReceiveMessageSize = options['grpc.max_receive_message_length'];\n }\n }\n async sendMessage(message) {\n /* A configured size of -1 means that there is no limit, so skip the check\n * entirely */\n if (this.maxSendMessageSize === -1) {\n return message;\n }\n else {\n const concreteMessage = await message;\n if (concreteMessage.message.length > this.maxSendMessageSize) {\n throw {\n code: constants_1.Status.RESOURCE_EXHAUSTED,\n details: `Sent message larger than max (${concreteMessage.message.length} vs. ${this.maxSendMessageSize})`,\n metadata: new metadata_1.Metadata(),\n };\n }\n else {\n return concreteMessage;\n }\n }\n }\n async receiveMessage(message) {\n /* A configured size of -1 means that there is no limit, so skip the check\n * entirely */\n if (this.maxReceiveMessageSize === -1) {\n return message;\n }\n else {\n const concreteMessage = await message;\n if (concreteMessage.length > this.maxReceiveMessageSize) {\n throw {\n code: constants_1.Status.RESOURCE_EXHAUSTED,\n details: `Received message larger than max (${concreteMessage.length} vs. ${this.maxReceiveMessageSize})`,\n metadata: new metadata_1.Metadata(),\n };\n }\n else {\n return concreteMessage;\n }\n }\n }\n}\nexports.MaxMessageSizeFilter = MaxMessageSizeFilter;\nclass MaxMessageSizeFilterFactory {\n constructor(options) {\n this.options = options;\n }\n createFilter() {\n return new MaxMessageSizeFilter(this.options);\n }\n}\nexports.MaxMessageSizeFilterFactory = MaxMessageSizeFilterFactory;\n//# sourceMappingURL=max-message-size-filter.js.map","\"use strict\";\n/*\n * Copyright 2019 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Metadata = void 0;\nconst logging_1 = require(\"./logging\");\nconst constants_1 = require(\"./constants\");\nconst error_1 = require(\"./error\");\nconst LEGAL_KEY_REGEX = /^[0-9a-z_.-]+$/;\nconst LEGAL_NON_BINARY_VALUE_REGEX = /^[ -~]*$/;\nfunction isLegalKey(key) {\n return LEGAL_KEY_REGEX.test(key);\n}\nfunction isLegalNonBinaryValue(value) {\n return LEGAL_NON_BINARY_VALUE_REGEX.test(value);\n}\nfunction isBinaryKey(key) {\n return key.endsWith('-bin');\n}\nfunction isCustomMetadata(key) {\n return !key.startsWith('grpc-');\n}\nfunction normalizeKey(key) {\n return key.toLowerCase();\n}\nfunction validate(key, value) {\n if (!isLegalKey(key)) {\n throw new Error('Metadata key \"' + key + '\" contains illegal characters');\n }\n if (value !== null && value !== undefined) {\n if (isBinaryKey(key)) {\n if (!Buffer.isBuffer(value)) {\n throw new Error(\"keys that end with '-bin' must have Buffer values\");\n }\n }\n else {\n if (Buffer.isBuffer(value)) {\n throw new Error(\"keys that don't end with '-bin' must have String values\");\n }\n if (!isLegalNonBinaryValue(value)) {\n throw new Error('Metadata string value \"' + value + '\" contains illegal characters');\n }\n }\n }\n}\n/**\n * A class for storing metadata. Keys are normalized to lowercase ASCII.\n */\nclass Metadata {\n constructor(options = {}) {\n this.internalRepr = new Map();\n this.options = options;\n }\n /**\n * Sets the given value for the given key by replacing any other values\n * associated with that key. Normalizes the key.\n * @param key The key to whose value should be set.\n * @param value The value to set. Must be a buffer if and only\n * if the normalized key ends with '-bin'.\n */\n set(key, value) {\n key = normalizeKey(key);\n validate(key, value);\n this.internalRepr.set(key, [value]);\n }\n /**\n * Adds the given value for the given key by appending to a list of previous\n * values associated with that key. Normalizes the key.\n * @param key The key for which a new value should be appended.\n * @param value The value to add. Must be a buffer if and only\n * if the normalized key ends with '-bin'.\n */\n add(key, value) {\n key = normalizeKey(key);\n validate(key, value);\n const existingValue = this.internalRepr.get(key);\n if (existingValue === undefined) {\n this.internalRepr.set(key, [value]);\n }\n else {\n existingValue.push(value);\n }\n }\n /**\n * Removes the given key and any associated values. Normalizes the key.\n * @param key The key whose values should be removed.\n */\n remove(key) {\n key = normalizeKey(key);\n // validate(key);\n this.internalRepr.delete(key);\n }\n /**\n * Gets a list of all values associated with the key. Normalizes the key.\n * @param key The key whose value should be retrieved.\n * @return A list of values associated with the given key.\n */\n get(key) {\n key = normalizeKey(key);\n // validate(key);\n return this.internalRepr.get(key) || [];\n }\n /**\n * Gets a plain object mapping each key to the first value associated with it.\n * This reflects the most common way that people will want to see metadata.\n * @return A key/value mapping of the metadata.\n */\n getMap() {\n const result = {};\n for (const [key, values] of this.internalRepr) {\n if (values.length > 0) {\n const v = values[0];\n result[key] = Buffer.isBuffer(v) ? Buffer.from(v) : v;\n }\n }\n return result;\n }\n /**\n * Clones the metadata object.\n * @return The newly cloned object.\n */\n clone() {\n const newMetadata = new Metadata(this.options);\n const newInternalRepr = newMetadata.internalRepr;\n for (const [key, value] of this.internalRepr) {\n const clonedValue = value.map(v => {\n if (Buffer.isBuffer(v)) {\n return Buffer.from(v);\n }\n else {\n return v;\n }\n });\n newInternalRepr.set(key, clonedValue);\n }\n return newMetadata;\n }\n /**\n * Merges all key-value pairs from a given Metadata object into this one.\n * If both this object and the given object have values in the same key,\n * values from the other Metadata object will be appended to this object's\n * values.\n * @param other A Metadata object.\n */\n merge(other) {\n for (const [key, values] of other.internalRepr) {\n const mergedValue = (this.internalRepr.get(key) || []).concat(values);\n this.internalRepr.set(key, mergedValue);\n }\n }\n setOptions(options) {\n this.options = options;\n }\n getOptions() {\n return this.options;\n }\n /**\n * Creates an OutgoingHttpHeaders object that can be used with the http2 API.\n */\n toHttp2Headers() {\n // NOTE: Node <8.9 formats http2 headers incorrectly.\n const result = {};\n for (const [key, values] of this.internalRepr) {\n // We assume that the user's interaction with this object is limited to\n // through its public API (i.e. keys and values are already validated).\n result[key] = values.map(bufToString);\n }\n return result;\n }\n /**\n * This modifies the behavior of JSON.stringify to show an object\n * representation of the metadata map.\n */\n toJSON() {\n const result = {};\n for (const [key, values] of this.internalRepr) {\n result[key] = values;\n }\n return result;\n }\n /**\n * Returns a new Metadata object based fields in a given IncomingHttpHeaders\n * object.\n * @param headers An IncomingHttpHeaders object.\n */\n static fromHttp2Headers(headers) {\n const result = new Metadata();\n for (const key of Object.keys(headers)) {\n // Reserved headers (beginning with `:`) are not valid keys.\n if (key.charAt(0) === ':') {\n continue;\n }\n const values = headers[key];\n try {\n if (isBinaryKey(key)) {\n if (Array.isArray(values)) {\n values.forEach(value => {\n result.add(key, Buffer.from(value, 'base64'));\n });\n }\n else if (values !== undefined) {\n if (isCustomMetadata(key)) {\n values.split(',').forEach(v => {\n result.add(key, Buffer.from(v.trim(), 'base64'));\n });\n }\n else {\n result.add(key, Buffer.from(values, 'base64'));\n }\n }\n }\n else {\n if (Array.isArray(values)) {\n values.forEach(value => {\n result.add(key, value);\n });\n }\n else if (values !== undefined) {\n result.add(key, values);\n }\n }\n }\n catch (error) {\n const message = `Failed to add metadata entry ${key}: ${values}. ${(0, error_1.getErrorMessage)(error)}. For more information see https://github.com/grpc/grpc-node/issues/1173`;\n (0, logging_1.log)(constants_1.LogVerbosity.ERROR, message);\n }\n }\n return result;\n }\n}\nexports.Metadata = Metadata;\nconst bufToString = (val) => {\n return Buffer.isBuffer(val) ? val.toString('base64') : val;\n};\n//# sourceMappingURL=metadata.js.map","\"use strict\";\n/*\n * Copyright 2019 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.QueuePicker = exports.UnavailablePicker = exports.PickResultType = void 0;\nconst metadata_1 = require(\"./metadata\");\nconst constants_1 = require(\"./constants\");\nvar PickResultType;\n(function (PickResultType) {\n PickResultType[PickResultType[\"COMPLETE\"] = 0] = \"COMPLETE\";\n PickResultType[PickResultType[\"QUEUE\"] = 1] = \"QUEUE\";\n PickResultType[PickResultType[\"TRANSIENT_FAILURE\"] = 2] = \"TRANSIENT_FAILURE\";\n PickResultType[PickResultType[\"DROP\"] = 3] = \"DROP\";\n})(PickResultType || (exports.PickResultType = PickResultType = {}));\n/**\n * A standard picker representing a load balancer in the TRANSIENT_FAILURE\n * state. Always responds to every pick request with an UNAVAILABLE status.\n */\nclass UnavailablePicker {\n constructor(status) {\n this.status = Object.assign({ code: constants_1.Status.UNAVAILABLE, details: 'No connection established', metadata: new metadata_1.Metadata() }, status);\n }\n pick(pickArgs) {\n return {\n pickResultType: PickResultType.TRANSIENT_FAILURE,\n subchannel: null,\n status: this.status,\n onCallStarted: null,\n onCallEnded: null,\n };\n }\n}\nexports.UnavailablePicker = UnavailablePicker;\n/**\n * A standard picker representing a load balancer in the IDLE or CONNECTING\n * state. Always responds to every pick request with a QUEUE pick result\n * indicating that the pick should be tried again with the next `Picker`. Also\n * reports back to the load balancer that a connection should be established\n * once any pick is attempted.\n * If the childPicker is provided, delegate to it instead of returning the\n * hardcoded QUEUE pick result, but still calls exitIdle.\n */\nclass QueuePicker {\n // Constructed with a load balancer. Calls exitIdle on it the first time pick is called\n constructor(loadBalancer, childPicker) {\n this.loadBalancer = loadBalancer;\n this.childPicker = childPicker;\n this.calledExitIdle = false;\n }\n pick(pickArgs) {\n if (!this.calledExitIdle) {\n process.nextTick(() => {\n this.loadBalancer.exitIdle();\n });\n this.calledExitIdle = true;\n }\n if (this.childPicker) {\n return this.childPicker.pick(pickArgs);\n }\n else {\n return {\n pickResultType: PickResultType.QUEUE,\n subchannel: null,\n status: null,\n onCallStarted: null,\n onCallEnded: null,\n };\n }\n }\n}\nexports.QueuePicker = QueuePicker;\n//# sourceMappingURL=picker.js.map","\"use strict\";\n/*\n * Copyright 2019 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.setup = exports.DEFAULT_PORT = void 0;\nconst resolver_1 = require(\"./resolver\");\nconst dns = require(\"dns\");\nconst util = require(\"util\");\nconst service_config_1 = require(\"./service-config\");\nconst constants_1 = require(\"./constants\");\nconst metadata_1 = require(\"./metadata\");\nconst logging = require(\"./logging\");\nconst constants_2 = require(\"./constants\");\nconst uri_parser_1 = require(\"./uri-parser\");\nconst net_1 = require(\"net\");\nconst backoff_timeout_1 = require(\"./backoff-timeout\");\nconst TRACER_NAME = 'dns_resolver';\nfunction trace(text) {\n logging.trace(constants_2.LogVerbosity.DEBUG, TRACER_NAME, text);\n}\n/**\n * The default TCP port to connect to if not explicitly specified in the target.\n */\nexports.DEFAULT_PORT = 443;\nconst DEFAULT_MIN_TIME_BETWEEN_RESOLUTIONS_MS = 30000;\nconst resolveTxtPromise = util.promisify(dns.resolveTxt);\nconst dnsLookupPromise = util.promisify(dns.lookup);\n/**\n * Resolver implementation that handles DNS names and IP addresses.\n */\nclass DnsResolver {\n constructor(target, listener, channelOptions) {\n var _a, _b, _c;\n this.target = target;\n this.listener = listener;\n this.pendingLookupPromise = null;\n this.pendingTxtPromise = null;\n this.latestLookupResult = null;\n this.latestServiceConfig = null;\n this.latestServiceConfigError = null;\n this.continueResolving = false;\n this.isNextResolutionTimerRunning = false;\n this.isServiceConfigEnabled = true;\n this.returnedIpResult = false;\n trace('Resolver constructed for target ' + (0, uri_parser_1.uriToString)(target));\n const hostPort = (0, uri_parser_1.splitHostPort)(target.path);\n if (hostPort === null) {\n this.ipResult = null;\n this.dnsHostname = null;\n this.port = null;\n }\n else {\n if ((0, net_1.isIPv4)(hostPort.host) || (0, net_1.isIPv6)(hostPort.host)) {\n this.ipResult = [\n {\n addresses: [\n {\n host: hostPort.host,\n port: (_a = hostPort.port) !== null && _a !== void 0 ? _a : exports.DEFAULT_PORT,\n },\n ],\n },\n ];\n this.dnsHostname = null;\n this.port = null;\n }\n else {\n this.ipResult = null;\n this.dnsHostname = hostPort.host;\n this.port = (_b = hostPort.port) !== null && _b !== void 0 ? _b : exports.DEFAULT_PORT;\n }\n }\n this.percentage = Math.random() * 100;\n if (channelOptions['grpc.service_config_disable_resolution'] === 1) {\n this.isServiceConfigEnabled = false;\n }\n this.defaultResolutionError = {\n code: constants_1.Status.UNAVAILABLE,\n details: `Name resolution failed for target ${(0, uri_parser_1.uriToString)(this.target)}`,\n metadata: new metadata_1.Metadata(),\n };\n const backoffOptions = {\n initialDelay: channelOptions['grpc.initial_reconnect_backoff_ms'],\n maxDelay: channelOptions['grpc.max_reconnect_backoff_ms'],\n };\n this.backoff = new backoff_timeout_1.BackoffTimeout(() => {\n if (this.continueResolving) {\n this.startResolutionWithBackoff();\n }\n }, backoffOptions);\n this.backoff.unref();\n this.minTimeBetweenResolutionsMs =\n (_c = channelOptions['grpc.dns_min_time_between_resolutions_ms']) !== null && _c !== void 0 ? _c : DEFAULT_MIN_TIME_BETWEEN_RESOLUTIONS_MS;\n this.nextResolutionTimer = setTimeout(() => { }, 0);\n clearTimeout(this.nextResolutionTimer);\n }\n /**\n * If the target is an IP address, just provide that address as a result.\n * Otherwise, initiate A, AAAA, and TXT lookups\n */\n startResolution() {\n if (this.ipResult !== null) {\n if (!this.returnedIpResult) {\n trace('Returning IP address for target ' + (0, uri_parser_1.uriToString)(this.target));\n setImmediate(() => {\n this.listener.onSuccessfulResolution(this.ipResult, null, null, null, {});\n });\n this.returnedIpResult = true;\n }\n this.backoff.stop();\n this.backoff.reset();\n this.stopNextResolutionTimer();\n return;\n }\n if (this.dnsHostname === null) {\n trace('Failed to parse DNS address ' + (0, uri_parser_1.uriToString)(this.target));\n setImmediate(() => {\n this.listener.onError({\n code: constants_1.Status.UNAVAILABLE,\n details: `Failed to parse DNS address ${(0, uri_parser_1.uriToString)(this.target)}`,\n metadata: new metadata_1.Metadata(),\n });\n });\n this.stopNextResolutionTimer();\n }\n else {\n if (this.pendingLookupPromise !== null) {\n return;\n }\n trace('Looking up DNS hostname ' + this.dnsHostname);\n /* We clear out latestLookupResult here to ensure that it contains the\n * latest result since the last time we started resolving. That way, the\n * TXT resolution handler can use it, but only if it finishes second. We\n * don't clear out any previous service config results because it's\n * better to use a service config that's slightly out of date than to\n * revert to an effectively blank one. */\n this.latestLookupResult = null;\n const hostname = this.dnsHostname;\n /* We lookup both address families here and then split them up later\n * because when looking up a single family, dns.lookup outputs an error\n * if the name exists but there are no records for that family, and that\n * error is indistinguishable from other kinds of errors */\n this.pendingLookupPromise = dnsLookupPromise(hostname, { all: true });\n this.pendingLookupPromise.then(addressList => {\n if (this.pendingLookupPromise === null) {\n return;\n }\n this.pendingLookupPromise = null;\n this.backoff.reset();\n this.backoff.stop();\n const subchannelAddresses = addressList.map(addr => ({ host: addr.address, port: +this.port }));\n this.latestLookupResult = subchannelAddresses.map(address => ({\n addresses: [address],\n }));\n const allAddressesString = '[' +\n subchannelAddresses\n .map(addr => addr.host + ':' + addr.port)\n .join(',') +\n ']';\n trace('Resolved addresses for target ' +\n (0, uri_parser_1.uriToString)(this.target) +\n ': ' +\n allAddressesString);\n if (this.latestLookupResult.length === 0) {\n this.listener.onError(this.defaultResolutionError);\n return;\n }\n /* If the TXT lookup has not yet finished, both of the last two\n * arguments will be null, which is the equivalent of getting an\n * empty TXT response. When the TXT lookup does finish, its handler\n * can update the service config by using the same address list */\n this.listener.onSuccessfulResolution(this.latestLookupResult, this.latestServiceConfig, this.latestServiceConfigError, null, {});\n }, err => {\n if (this.pendingLookupPromise === null) {\n return;\n }\n trace('Resolution error for target ' +\n (0, uri_parser_1.uriToString)(this.target) +\n ': ' +\n err.message);\n this.pendingLookupPromise = null;\n this.stopNextResolutionTimer();\n this.listener.onError(this.defaultResolutionError);\n });\n /* If there already is a still-pending TXT resolution, we can just use\n * that result when it comes in */\n if (this.isServiceConfigEnabled && this.pendingTxtPromise === null) {\n /* We handle the TXT query promise differently than the others because\n * the name resolution attempt as a whole is a success even if the TXT\n * lookup fails */\n this.pendingTxtPromise = resolveTxtPromise(hostname);\n this.pendingTxtPromise.then(txtRecord => {\n if (this.pendingTxtPromise === null) {\n return;\n }\n this.pendingTxtPromise = null;\n try {\n this.latestServiceConfig = (0, service_config_1.extractAndSelectServiceConfig)(txtRecord, this.percentage);\n }\n catch (err) {\n this.latestServiceConfigError = {\n code: constants_1.Status.UNAVAILABLE,\n details: `Parsing service config failed with error ${err.message}`,\n metadata: new metadata_1.Metadata(),\n };\n }\n if (this.latestLookupResult !== null) {\n /* We rely here on the assumption that calling this function with\n * identical parameters will be essentialy idempotent, and calling\n * it with the same address list and a different service config\n * should result in a fast and seamless switchover. */\n this.listener.onSuccessfulResolution(this.latestLookupResult, this.latestServiceConfig, this.latestServiceConfigError, null, {});\n }\n }, err => {\n /* If TXT lookup fails we should do nothing, which means that we\n * continue to use the result of the most recent successful lookup,\n * or the default null config object if there has never been a\n * successful lookup. We do not set the latestServiceConfigError\n * here because that is specifically used for response validation\n * errors. We still need to handle this error so that it does not\n * bubble up as an unhandled promise rejection. */\n });\n }\n }\n }\n startNextResolutionTimer() {\n var _a, _b;\n clearTimeout(this.nextResolutionTimer);\n this.nextResolutionTimer = setTimeout(() => {\n this.stopNextResolutionTimer();\n if (this.continueResolving) {\n this.startResolutionWithBackoff();\n }\n }, this.minTimeBetweenResolutionsMs);\n (_b = (_a = this.nextResolutionTimer).unref) === null || _b === void 0 ? void 0 : _b.call(_a);\n this.isNextResolutionTimerRunning = true;\n }\n stopNextResolutionTimer() {\n clearTimeout(this.nextResolutionTimer);\n this.isNextResolutionTimerRunning = false;\n }\n startResolutionWithBackoff() {\n if (this.pendingLookupPromise === null) {\n this.continueResolving = false;\n this.backoff.runOnce();\n this.startNextResolutionTimer();\n this.startResolution();\n }\n }\n updateResolution() {\n /* If there is a pending lookup, just let it finish. Otherwise, if the\n * nextResolutionTimer or backoff timer is running, set the\n * continueResolving flag to resolve when whichever of those timers\n * fires. Otherwise, start resolving immediately. */\n if (this.pendingLookupPromise === null) {\n if (this.isNextResolutionTimerRunning || this.backoff.isRunning()) {\n if (this.isNextResolutionTimerRunning) {\n trace('resolution update delayed by \"min time between resolutions\" rate limit');\n }\n else {\n trace('resolution update delayed by backoff timer until ' +\n this.backoff.getEndTime().toISOString());\n }\n this.continueResolving = true;\n }\n else {\n this.startResolutionWithBackoff();\n }\n }\n }\n /**\n * Reset the resolver to the same state it had when it was created. In-flight\n * DNS requests cannot be cancelled, but they are discarded and their results\n * will be ignored.\n */\n destroy() {\n this.continueResolving = false;\n this.backoff.reset();\n this.backoff.stop();\n this.stopNextResolutionTimer();\n this.pendingLookupPromise = null;\n this.pendingTxtPromise = null;\n this.latestLookupResult = null;\n this.latestServiceConfig = null;\n this.latestServiceConfigError = null;\n this.returnedIpResult = false;\n }\n /**\n * Get the default authority for the given target. For IP targets, that is\n * the IP address. For DNS targets, it is the hostname.\n * @param target\n */\n static getDefaultAuthority(target) {\n return target.path;\n }\n}\n/**\n * Set up the DNS resolver class by registering it as the handler for the\n * \"dns:\" prefix and as the default resolver.\n */\nfunction setup() {\n (0, resolver_1.registerResolver)('dns', DnsResolver);\n (0, resolver_1.registerDefaultScheme)('dns');\n}\nexports.setup = setup;\n//# sourceMappingURL=resolver-dns.js.map","\"use strict\";\n/*\n * Copyright 2021 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.setup = void 0;\nconst net_1 = require(\"net\");\nconst constants_1 = require(\"./constants\");\nconst metadata_1 = require(\"./metadata\");\nconst resolver_1 = require(\"./resolver\");\nconst uri_parser_1 = require(\"./uri-parser\");\nconst logging = require(\"./logging\");\nconst TRACER_NAME = 'ip_resolver';\nfunction trace(text) {\n logging.trace(constants_1.LogVerbosity.DEBUG, TRACER_NAME, text);\n}\nconst IPV4_SCHEME = 'ipv4';\nconst IPV6_SCHEME = 'ipv6';\n/**\n * The default TCP port to connect to if not explicitly specified in the target.\n */\nconst DEFAULT_PORT = 443;\nclass IpResolver {\n constructor(target, listener, channelOptions) {\n var _a;\n this.listener = listener;\n this.endpoints = [];\n this.error = null;\n this.hasReturnedResult = false;\n trace('Resolver constructed for target ' + (0, uri_parser_1.uriToString)(target));\n const addresses = [];\n if (!(target.scheme === IPV4_SCHEME || target.scheme === IPV6_SCHEME)) {\n this.error = {\n code: constants_1.Status.UNAVAILABLE,\n details: `Unrecognized scheme ${target.scheme} in IP resolver`,\n metadata: new metadata_1.Metadata(),\n };\n return;\n }\n const pathList = target.path.split(',');\n for (const path of pathList) {\n const hostPort = (0, uri_parser_1.splitHostPort)(path);\n if (hostPort === null) {\n this.error = {\n code: constants_1.Status.UNAVAILABLE,\n details: `Failed to parse ${target.scheme} address ${path}`,\n metadata: new metadata_1.Metadata(),\n };\n return;\n }\n if ((target.scheme === IPV4_SCHEME && !(0, net_1.isIPv4)(hostPort.host)) ||\n (target.scheme === IPV6_SCHEME && !(0, net_1.isIPv6)(hostPort.host))) {\n this.error = {\n code: constants_1.Status.UNAVAILABLE,\n details: `Failed to parse ${target.scheme} address ${path}`,\n metadata: new metadata_1.Metadata(),\n };\n return;\n }\n addresses.push({\n host: hostPort.host,\n port: (_a = hostPort.port) !== null && _a !== void 0 ? _a : DEFAULT_PORT,\n });\n }\n this.endpoints = addresses.map(address => ({ addresses: [address] }));\n trace('Parsed ' + target.scheme + ' address list ' + addresses);\n }\n updateResolution() {\n if (!this.hasReturnedResult) {\n this.hasReturnedResult = true;\n process.nextTick(() => {\n if (this.error) {\n this.listener.onError(this.error);\n }\n else {\n this.listener.onSuccessfulResolution(this.endpoints, null, null, null, {});\n }\n });\n }\n }\n destroy() {\n this.hasReturnedResult = false;\n }\n static getDefaultAuthority(target) {\n return target.path.split(',')[0];\n }\n}\nfunction setup() {\n (0, resolver_1.registerResolver)(IPV4_SCHEME, IpResolver);\n (0, resolver_1.registerResolver)(IPV6_SCHEME, IpResolver);\n}\nexports.setup = setup;\n//# sourceMappingURL=resolver-ip.js.map","\"use strict\";\n/*\n * Copyright 2019 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.setup = void 0;\nconst resolver_1 = require(\"./resolver\");\nclass UdsResolver {\n constructor(target, listener, channelOptions) {\n this.listener = listener;\n this.hasReturnedResult = false;\n this.endpoints = [];\n let path;\n if (target.authority === '') {\n path = '/' + target.path;\n }\n else {\n path = target.path;\n }\n this.endpoints = [{ addresses: [{ path }] }];\n }\n updateResolution() {\n if (!this.hasReturnedResult) {\n this.hasReturnedResult = true;\n process.nextTick(this.listener.onSuccessfulResolution, this.endpoints, null, null, null, {});\n }\n }\n destroy() {\n // This resolver owns no resources, so we do nothing here.\n }\n static getDefaultAuthority(target) {\n return 'localhost';\n }\n}\nfunction setup() {\n (0, resolver_1.registerResolver)('unix', UdsResolver);\n}\nexports.setup = setup;\n//# sourceMappingURL=resolver-uds.js.map","\"use strict\";\n/*\n * Copyright 2019 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.mapUriDefaultScheme = exports.getDefaultAuthority = exports.createResolver = exports.registerDefaultScheme = exports.registerResolver = void 0;\nconst uri_parser_1 = require(\"./uri-parser\");\nconst registeredResolvers = {};\nlet defaultScheme = null;\n/**\n * Register a resolver class to handle target names prefixed with the `prefix`\n * string. This prefix should correspond to a URI scheme name listed in the\n * [gRPC Name Resolution document](https://github.com/grpc/grpc/blob/master/doc/naming.md)\n * @param prefix\n * @param resolverClass\n */\nfunction registerResolver(scheme, resolverClass) {\n registeredResolvers[scheme] = resolverClass;\n}\nexports.registerResolver = registerResolver;\n/**\n * Register a default resolver to handle target names that do not start with\n * any registered prefix.\n * @param resolverClass\n */\nfunction registerDefaultScheme(scheme) {\n defaultScheme = scheme;\n}\nexports.registerDefaultScheme = registerDefaultScheme;\n/**\n * Create a name resolver for the specified target, if possible. Throws an\n * error if no such name resolver can be created.\n * @param target\n * @param listener\n */\nfunction createResolver(target, listener, options) {\n if (target.scheme !== undefined && target.scheme in registeredResolvers) {\n return new registeredResolvers[target.scheme](target, listener, options);\n }\n else {\n throw new Error(`No resolver could be created for target ${(0, uri_parser_1.uriToString)(target)}`);\n }\n}\nexports.createResolver = createResolver;\n/**\n * Get the default authority for the specified target, if possible. Throws an\n * error if no registered name resolver can parse that target string.\n * @param target\n */\nfunction getDefaultAuthority(target) {\n if (target.scheme !== undefined && target.scheme in registeredResolvers) {\n return registeredResolvers[target.scheme].getDefaultAuthority(target);\n }\n else {\n throw new Error(`Invalid target ${(0, uri_parser_1.uriToString)(target)}`);\n }\n}\nexports.getDefaultAuthority = getDefaultAuthority;\nfunction mapUriDefaultScheme(target) {\n if (target.scheme === undefined || !(target.scheme in registeredResolvers)) {\n if (defaultScheme !== null) {\n return {\n scheme: defaultScheme,\n authority: undefined,\n path: (0, uri_parser_1.uriToString)(target),\n };\n }\n else {\n return null;\n }\n }\n return target;\n}\nexports.mapUriDefaultScheme = mapUriDefaultScheme;\n//# sourceMappingURL=resolver.js.map","\"use strict\";\n/*\n * Copyright 2022 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ResolvingCall = void 0;\nconst constants_1 = require(\"./constants\");\nconst deadline_1 = require(\"./deadline\");\nconst metadata_1 = require(\"./metadata\");\nconst logging = require(\"./logging\");\nconst control_plane_status_1 = require(\"./control-plane-status\");\nconst TRACER_NAME = 'resolving_call';\nclass ResolvingCall {\n constructor(channel, method, options, filterStackFactory, credentials, callNumber) {\n this.channel = channel;\n this.method = method;\n this.filterStackFactory = filterStackFactory;\n this.credentials = credentials;\n this.callNumber = callNumber;\n this.child = null;\n this.readPending = false;\n this.pendingMessage = null;\n this.pendingHalfClose = false;\n this.ended = false;\n this.readFilterPending = false;\n this.writeFilterPending = false;\n this.pendingChildStatus = null;\n this.metadata = null;\n this.listener = null;\n this.statusWatchers = [];\n this.deadlineTimer = setTimeout(() => { }, 0);\n this.filterStack = null;\n this.deadlineStartTime = null;\n this.configReceivedTime = null;\n this.childStartTime = null;\n this.deadline = options.deadline;\n this.host = options.host;\n if (options.parentCall) {\n if (options.flags & constants_1.Propagate.CANCELLATION) {\n options.parentCall.on('cancelled', () => {\n this.cancelWithStatus(constants_1.Status.CANCELLED, 'Cancelled by parent call');\n });\n }\n if (options.flags & constants_1.Propagate.DEADLINE) {\n this.trace('Propagating deadline from parent: ' +\n options.parentCall.getDeadline());\n this.deadline = (0, deadline_1.minDeadline)(this.deadline, options.parentCall.getDeadline());\n }\n }\n this.trace('Created');\n this.runDeadlineTimer();\n }\n trace(text) {\n logging.trace(constants_1.LogVerbosity.DEBUG, TRACER_NAME, '[' + this.callNumber + '] ' + text);\n }\n runDeadlineTimer() {\n clearTimeout(this.deadlineTimer);\n this.deadlineStartTime = new Date();\n this.trace('Deadline: ' + (0, deadline_1.deadlineToString)(this.deadline));\n const timeout = (0, deadline_1.getRelativeTimeout)(this.deadline);\n if (timeout !== Infinity) {\n this.trace('Deadline will be reached in ' + timeout + 'ms');\n const handleDeadline = () => {\n if (!this.deadlineStartTime) {\n this.cancelWithStatus(constants_1.Status.DEADLINE_EXCEEDED, 'Deadline exceeded');\n return;\n }\n const deadlineInfo = [];\n const deadlineEndTime = new Date();\n deadlineInfo.push(`Deadline exceeded after ${(0, deadline_1.formatDateDifference)(this.deadlineStartTime, deadlineEndTime)}`);\n if (this.configReceivedTime) {\n if (this.configReceivedTime > this.deadlineStartTime) {\n deadlineInfo.push(`name resolution: ${(0, deadline_1.formatDateDifference)(this.deadlineStartTime, this.configReceivedTime)}`);\n }\n if (this.childStartTime) {\n if (this.childStartTime > this.configReceivedTime) {\n deadlineInfo.push(`metadata filters: ${(0, deadline_1.formatDateDifference)(this.configReceivedTime, this.childStartTime)}`);\n }\n }\n else {\n deadlineInfo.push('waiting for metadata filters');\n }\n }\n else {\n deadlineInfo.push('waiting for name resolution');\n }\n if (this.child) {\n deadlineInfo.push(...this.child.getDeadlineInfo());\n }\n this.cancelWithStatus(constants_1.Status.DEADLINE_EXCEEDED, deadlineInfo.join(','));\n };\n if (timeout <= 0) {\n process.nextTick(handleDeadline);\n }\n else {\n this.deadlineTimer = setTimeout(handleDeadline, timeout);\n }\n }\n }\n outputStatus(status) {\n if (!this.ended) {\n this.ended = true;\n if (!this.filterStack) {\n this.filterStack = this.filterStackFactory.createFilter();\n }\n clearTimeout(this.deadlineTimer);\n const filteredStatus = this.filterStack.receiveTrailers(status);\n this.trace('ended with status: code=' +\n filteredStatus.code +\n ' details=\"' +\n filteredStatus.details +\n '\"');\n this.statusWatchers.forEach(watcher => watcher(filteredStatus));\n process.nextTick(() => {\n var _a;\n (_a = this.listener) === null || _a === void 0 ? void 0 : _a.onReceiveStatus(filteredStatus);\n });\n }\n }\n sendMessageOnChild(context, message) {\n if (!this.child) {\n throw new Error('sendMessageonChild called with child not populated');\n }\n const child = this.child;\n this.writeFilterPending = true;\n this.filterStack.sendMessage(Promise.resolve({ message: message, flags: context.flags })).then(filteredMessage => {\n this.writeFilterPending = false;\n child.sendMessageWithContext(context, filteredMessage.message);\n if (this.pendingHalfClose) {\n child.halfClose();\n }\n }, (status) => {\n this.cancelWithStatus(status.code, status.details);\n });\n }\n getConfig() {\n if (this.ended) {\n return;\n }\n if (!this.metadata || !this.listener) {\n throw new Error('getConfig called before start');\n }\n const configResult = this.channel.getConfig(this.method, this.metadata);\n if (configResult.type === 'NONE') {\n this.channel.queueCallForConfig(this);\n return;\n }\n else if (configResult.type === 'ERROR') {\n if (this.metadata.getOptions().waitForReady) {\n this.channel.queueCallForConfig(this);\n }\n else {\n this.outputStatus(configResult.error);\n }\n return;\n }\n // configResult.type === 'SUCCESS'\n this.configReceivedTime = new Date();\n const config = configResult.config;\n if (config.status !== constants_1.Status.OK) {\n const { code, details } = (0, control_plane_status_1.restrictControlPlaneStatusCode)(config.status, 'Failed to route call to method ' + this.method);\n this.outputStatus({\n code: code,\n details: details,\n metadata: new metadata_1.Metadata(),\n });\n return;\n }\n if (config.methodConfig.timeout) {\n const configDeadline = new Date();\n configDeadline.setSeconds(configDeadline.getSeconds() + config.methodConfig.timeout.seconds);\n configDeadline.setMilliseconds(configDeadline.getMilliseconds() +\n config.methodConfig.timeout.nanos / 1000000);\n this.deadline = (0, deadline_1.minDeadline)(this.deadline, configDeadline);\n this.runDeadlineTimer();\n }\n this.filterStackFactory.push(config.dynamicFilterFactories);\n this.filterStack = this.filterStackFactory.createFilter();\n this.filterStack.sendMetadata(Promise.resolve(this.metadata)).then(filteredMetadata => {\n this.child = this.channel.createInnerCall(config, this.method, this.host, this.credentials, this.deadline);\n this.trace('Created child [' + this.child.getCallNumber() + ']');\n this.childStartTime = new Date();\n this.child.start(filteredMetadata, {\n onReceiveMetadata: metadata => {\n this.trace('Received metadata');\n this.listener.onReceiveMetadata(this.filterStack.receiveMetadata(metadata));\n },\n onReceiveMessage: message => {\n this.trace('Received message');\n this.readFilterPending = true;\n this.filterStack.receiveMessage(message).then(filteredMesssage => {\n this.trace('Finished filtering received message');\n this.readFilterPending = false;\n this.listener.onReceiveMessage(filteredMesssage);\n if (this.pendingChildStatus) {\n this.outputStatus(this.pendingChildStatus);\n }\n }, (status) => {\n this.cancelWithStatus(status.code, status.details);\n });\n },\n onReceiveStatus: status => {\n this.trace('Received status');\n if (this.readFilterPending) {\n this.pendingChildStatus = status;\n }\n else {\n this.outputStatus(status);\n }\n },\n });\n if (this.readPending) {\n this.child.startRead();\n }\n if (this.pendingMessage) {\n this.sendMessageOnChild(this.pendingMessage.context, this.pendingMessage.message);\n }\n else if (this.pendingHalfClose) {\n this.child.halfClose();\n }\n }, (status) => {\n this.outputStatus(status);\n });\n }\n reportResolverError(status) {\n var _a;\n if ((_a = this.metadata) === null || _a === void 0 ? void 0 : _a.getOptions().waitForReady) {\n this.channel.queueCallForConfig(this);\n }\n else {\n this.outputStatus(status);\n }\n }\n cancelWithStatus(status, details) {\n var _a;\n this.trace('cancelWithStatus code: ' + status + ' details: \"' + details + '\"');\n (_a = this.child) === null || _a === void 0 ? void 0 : _a.cancelWithStatus(status, details);\n this.outputStatus({\n code: status,\n details: details,\n metadata: new metadata_1.Metadata(),\n });\n }\n getPeer() {\n var _a, _b;\n return (_b = (_a = this.child) === null || _a === void 0 ? void 0 : _a.getPeer()) !== null && _b !== void 0 ? _b : this.channel.getTarget();\n }\n start(metadata, listener) {\n this.trace('start called');\n this.metadata = metadata.clone();\n this.listener = listener;\n this.getConfig();\n }\n sendMessageWithContext(context, message) {\n this.trace('write() called with message of length ' + message.length);\n if (this.child) {\n this.sendMessageOnChild(context, message);\n }\n else {\n this.pendingMessage = { context, message };\n }\n }\n startRead() {\n this.trace('startRead called');\n if (this.child) {\n this.child.startRead();\n }\n else {\n this.readPending = true;\n }\n }\n halfClose() {\n this.trace('halfClose called');\n if (this.child && !this.writeFilterPending) {\n this.child.halfClose();\n }\n else {\n this.pendingHalfClose = true;\n }\n }\n setCredentials(credentials) {\n this.credentials = this.credentials.compose(credentials);\n }\n addStatusWatcher(watcher) {\n this.statusWatchers.push(watcher);\n }\n getCallNumber() {\n return this.callNumber;\n }\n}\nexports.ResolvingCall = ResolvingCall;\n//# sourceMappingURL=resolving-call.js.map","\"use strict\";\n/*\n * Copyright 2019 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ResolvingLoadBalancer = void 0;\nconst load_balancer_1 = require(\"./load-balancer\");\nconst service_config_1 = require(\"./service-config\");\nconst connectivity_state_1 = require(\"./connectivity-state\");\nconst resolver_1 = require(\"./resolver\");\nconst picker_1 = require(\"./picker\");\nconst backoff_timeout_1 = require(\"./backoff-timeout\");\nconst constants_1 = require(\"./constants\");\nconst metadata_1 = require(\"./metadata\");\nconst logging = require(\"./logging\");\nconst constants_2 = require(\"./constants\");\nconst uri_parser_1 = require(\"./uri-parser\");\nconst load_balancer_child_handler_1 = require(\"./load-balancer-child-handler\");\nconst TRACER_NAME = 'resolving_load_balancer';\nfunction trace(text) {\n logging.trace(constants_2.LogVerbosity.DEBUG, TRACER_NAME, text);\n}\n/**\n * Name match levels in order from most to least specific. This is the order in\n * which searches will be performed.\n */\nconst NAME_MATCH_LEVEL_ORDER = [\n 'SERVICE_AND_METHOD',\n 'SERVICE',\n 'EMPTY',\n];\nfunction hasMatchingName(service, method, methodConfig, matchLevel) {\n for (const name of methodConfig.name) {\n switch (matchLevel) {\n case 'EMPTY':\n if (!name.service && !name.method) {\n return true;\n }\n break;\n case 'SERVICE':\n if (name.service === service && !name.method) {\n return true;\n }\n break;\n case 'SERVICE_AND_METHOD':\n if (name.service === service && name.method === method) {\n return true;\n }\n }\n }\n return false;\n}\nfunction findMatchingConfig(service, method, methodConfigs, matchLevel) {\n for (const config of methodConfigs) {\n if (hasMatchingName(service, method, config, matchLevel)) {\n return config;\n }\n }\n return null;\n}\nfunction getDefaultConfigSelector(serviceConfig) {\n return function defaultConfigSelector(methodName, metadata) {\n var _a, _b;\n const splitName = methodName.split('/').filter(x => x.length > 0);\n const service = (_a = splitName[0]) !== null && _a !== void 0 ? _a : '';\n const method = (_b = splitName[1]) !== null && _b !== void 0 ? _b : '';\n if (serviceConfig && serviceConfig.methodConfig) {\n /* Check for the following in order, and return the first method\n * config that matches:\n * 1. A name that exactly matches the service and method\n * 2. A name with no method set that matches the service\n * 3. An empty name\n */\n for (const matchLevel of NAME_MATCH_LEVEL_ORDER) {\n const matchingConfig = findMatchingConfig(service, method, serviceConfig.methodConfig, matchLevel);\n if (matchingConfig) {\n return {\n methodConfig: matchingConfig,\n pickInformation: {},\n status: constants_1.Status.OK,\n dynamicFilterFactories: [],\n };\n }\n }\n }\n return {\n methodConfig: { name: [] },\n pickInformation: {},\n status: constants_1.Status.OK,\n dynamicFilterFactories: [],\n };\n };\n}\nclass ResolvingLoadBalancer {\n /**\n * Wrapper class that behaves like a `LoadBalancer` and also handles name\n * resolution internally.\n * @param target The address of the backend to connect to.\n * @param channelControlHelper `ChannelControlHelper` instance provided by\n * this load balancer's owner.\n * @param defaultServiceConfig The default service configuration to be used\n * if none is provided by the name resolver. A `null` value indicates\n * that the default behavior should be the default unconfigured behavior.\n * In practice, that means using the \"pick first\" load balancer\n * implmentation\n */\n constructor(target, channelControlHelper, channelOptions, onSuccessfulResolution, onFailedResolution) {\n this.target = target;\n this.channelControlHelper = channelControlHelper;\n this.onSuccessfulResolution = onSuccessfulResolution;\n this.onFailedResolution = onFailedResolution;\n this.latestChildState = connectivity_state_1.ConnectivityState.IDLE;\n this.latestChildPicker = new picker_1.QueuePicker(this);\n /**\n * This resolving load balancer's current connectivity state.\n */\n this.currentState = connectivity_state_1.ConnectivityState.IDLE;\n /**\n * The service config object from the last successful resolution, if\n * available. A value of null indicates that we have not yet received a valid\n * service config from the resolver.\n */\n this.previousServiceConfig = null;\n /**\n * Indicates whether we should attempt to resolve again after the backoff\n * timer runs out.\n */\n this.continueResolving = false;\n if (channelOptions['grpc.service_config']) {\n this.defaultServiceConfig = (0, service_config_1.validateServiceConfig)(JSON.parse(channelOptions['grpc.service_config']));\n }\n else {\n this.defaultServiceConfig = {\n loadBalancingConfig: [],\n methodConfig: [],\n };\n }\n this.updateState(connectivity_state_1.ConnectivityState.IDLE, new picker_1.QueuePicker(this));\n this.childLoadBalancer = new load_balancer_child_handler_1.ChildLoadBalancerHandler({\n createSubchannel: channelControlHelper.createSubchannel.bind(channelControlHelper),\n requestReresolution: () => {\n /* If the backoffTimeout is running, we're still backing off from\n * making resolve requests, so we shouldn't make another one here.\n * In that case, the backoff timer callback will call\n * updateResolution */\n if (this.backoffTimeout.isRunning()) {\n trace('requestReresolution delayed by backoff timer until ' +\n this.backoffTimeout.getEndTime().toISOString());\n this.continueResolving = true;\n }\n else {\n this.updateResolution();\n }\n },\n updateState: (newState, picker) => {\n this.latestChildState = newState;\n this.latestChildPicker = picker;\n this.updateState(newState, picker);\n },\n addChannelzChild: channelControlHelper.addChannelzChild.bind(channelControlHelper),\n removeChannelzChild: channelControlHelper.removeChannelzChild.bind(channelControlHelper),\n }, channelOptions);\n this.innerResolver = (0, resolver_1.createResolver)(target, {\n onSuccessfulResolution: (endpointList, serviceConfig, serviceConfigError, configSelector, attributes) => {\n var _a;\n this.backoffTimeout.stop();\n this.backoffTimeout.reset();\n let workingServiceConfig = null;\n /* This first group of conditionals implements the algorithm described\n * in https://github.com/grpc/proposal/blob/master/A21-service-config-error-handling.md\n * in the section called \"Behavior on receiving a new gRPC Config\".\n */\n if (serviceConfig === null) {\n // Step 4 and 5\n if (serviceConfigError === null) {\n // Step 5\n this.previousServiceConfig = null;\n workingServiceConfig = this.defaultServiceConfig;\n }\n else {\n // Step 4\n if (this.previousServiceConfig === null) {\n // Step 4.ii\n this.handleResolutionFailure(serviceConfigError);\n }\n else {\n // Step 4.i\n workingServiceConfig = this.previousServiceConfig;\n }\n }\n }\n else {\n // Step 3\n workingServiceConfig = serviceConfig;\n this.previousServiceConfig = serviceConfig;\n }\n const workingConfigList = (_a = workingServiceConfig === null || workingServiceConfig === void 0 ? void 0 : workingServiceConfig.loadBalancingConfig) !== null && _a !== void 0 ? _a : [];\n const loadBalancingConfig = (0, load_balancer_1.selectLbConfigFromList)(workingConfigList, true);\n if (loadBalancingConfig === null) {\n // There were load balancing configs but none are supported. This counts as a resolution failure\n this.handleResolutionFailure({\n code: constants_1.Status.UNAVAILABLE,\n details: 'All load balancer options in service config are not compatible',\n metadata: new metadata_1.Metadata(),\n });\n return;\n }\n this.childLoadBalancer.updateAddressList(endpointList, loadBalancingConfig, attributes);\n const finalServiceConfig = workingServiceConfig !== null && workingServiceConfig !== void 0 ? workingServiceConfig : this.defaultServiceConfig;\n this.onSuccessfulResolution(finalServiceConfig, configSelector !== null && configSelector !== void 0 ? configSelector : getDefaultConfigSelector(finalServiceConfig));\n },\n onError: (error) => {\n this.handleResolutionFailure(error);\n },\n }, channelOptions);\n const backoffOptions = {\n initialDelay: channelOptions['grpc.initial_reconnect_backoff_ms'],\n maxDelay: channelOptions['grpc.max_reconnect_backoff_ms'],\n };\n this.backoffTimeout = new backoff_timeout_1.BackoffTimeout(() => {\n if (this.continueResolving) {\n this.updateResolution();\n this.continueResolving = false;\n }\n else {\n this.updateState(this.latestChildState, this.latestChildPicker);\n }\n }, backoffOptions);\n this.backoffTimeout.unref();\n }\n updateResolution() {\n this.innerResolver.updateResolution();\n if (this.currentState === connectivity_state_1.ConnectivityState.IDLE) {\n /* this.latestChildPicker is initialized as new QueuePicker(this), which\n * is an appropriate value here if the child LB policy is unset.\n * Otherwise, we want to delegate to the child here, in case that\n * triggers something. */\n this.updateState(connectivity_state_1.ConnectivityState.CONNECTING, this.latestChildPicker);\n }\n this.backoffTimeout.runOnce();\n }\n updateState(connectivityState, picker) {\n trace((0, uri_parser_1.uriToString)(this.target) +\n ' ' +\n connectivity_state_1.ConnectivityState[this.currentState] +\n ' -> ' +\n connectivity_state_1.ConnectivityState[connectivityState]);\n // Ensure that this.exitIdle() is called by the picker\n if (connectivityState === connectivity_state_1.ConnectivityState.IDLE) {\n picker = new picker_1.QueuePicker(this, picker);\n }\n this.currentState = connectivityState;\n this.channelControlHelper.updateState(connectivityState, picker);\n }\n handleResolutionFailure(error) {\n if (this.latestChildState === connectivity_state_1.ConnectivityState.IDLE) {\n this.updateState(connectivity_state_1.ConnectivityState.TRANSIENT_FAILURE, new picker_1.UnavailablePicker(error));\n this.onFailedResolution(error);\n }\n }\n exitIdle() {\n if (this.currentState === connectivity_state_1.ConnectivityState.IDLE ||\n this.currentState === connectivity_state_1.ConnectivityState.TRANSIENT_FAILURE) {\n if (this.backoffTimeout.isRunning()) {\n this.continueResolving = true;\n }\n else {\n this.updateResolution();\n }\n }\n this.childLoadBalancer.exitIdle();\n }\n updateAddressList(endpointList, lbConfig) {\n throw new Error('updateAddressList not supported on ResolvingLoadBalancer');\n }\n resetBackoff() {\n this.backoffTimeout.reset();\n this.childLoadBalancer.resetBackoff();\n }\n destroy() {\n this.childLoadBalancer.destroy();\n this.innerResolver.destroy();\n this.backoffTimeout.reset();\n this.backoffTimeout.stop();\n this.latestChildState = connectivity_state_1.ConnectivityState.IDLE;\n this.latestChildPicker = new picker_1.QueuePicker(this);\n this.currentState = connectivity_state_1.ConnectivityState.IDLE;\n this.previousServiceConfig = null;\n this.continueResolving = false;\n }\n getTypeName() {\n return 'resolving_load_balancer';\n }\n}\nexports.ResolvingLoadBalancer = ResolvingLoadBalancer;\n//# sourceMappingURL=resolving-load-balancer.js.map","\"use strict\";\n/*\n * Copyright 2022 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RetryingCall = exports.MessageBufferTracker = exports.RetryThrottler = void 0;\nconst constants_1 = require(\"./constants\");\nconst deadline_1 = require(\"./deadline\");\nconst metadata_1 = require(\"./metadata\");\nconst logging = require(\"./logging\");\nconst TRACER_NAME = 'retrying_call';\nclass RetryThrottler {\n constructor(maxTokens, tokenRatio, previousRetryThrottler) {\n this.maxTokens = maxTokens;\n this.tokenRatio = tokenRatio;\n if (previousRetryThrottler) {\n /* When carrying over tokens from a previous config, rescale them to the\n * new max value */\n this.tokens =\n previousRetryThrottler.tokens *\n (maxTokens / previousRetryThrottler.maxTokens);\n }\n else {\n this.tokens = maxTokens;\n }\n }\n addCallSucceeded() {\n this.tokens = Math.max(this.tokens + this.tokenRatio, this.maxTokens);\n }\n addCallFailed() {\n this.tokens = Math.min(this.tokens - 1, 0);\n }\n canRetryCall() {\n return this.tokens > this.maxTokens / 2;\n }\n}\nexports.RetryThrottler = RetryThrottler;\nclass MessageBufferTracker {\n constructor(totalLimit, limitPerCall) {\n this.totalLimit = totalLimit;\n this.limitPerCall = limitPerCall;\n this.totalAllocated = 0;\n this.allocatedPerCall = new Map();\n }\n allocate(size, callId) {\n var _a;\n const currentPerCall = (_a = this.allocatedPerCall.get(callId)) !== null && _a !== void 0 ? _a : 0;\n if (this.limitPerCall - currentPerCall < size ||\n this.totalLimit - this.totalAllocated < size) {\n return false;\n }\n this.allocatedPerCall.set(callId, currentPerCall + size);\n this.totalAllocated += size;\n return true;\n }\n free(size, callId) {\n var _a;\n if (this.totalAllocated < size) {\n throw new Error(`Invalid buffer allocation state: call ${callId} freed ${size} > total allocated ${this.totalAllocated}`);\n }\n this.totalAllocated -= size;\n const currentPerCall = (_a = this.allocatedPerCall.get(callId)) !== null && _a !== void 0 ? _a : 0;\n if (currentPerCall < size) {\n throw new Error(`Invalid buffer allocation state: call ${callId} freed ${size} > allocated for call ${currentPerCall}`);\n }\n this.allocatedPerCall.set(callId, currentPerCall - size);\n }\n freeAll(callId) {\n var _a;\n const currentPerCall = (_a = this.allocatedPerCall.get(callId)) !== null && _a !== void 0 ? _a : 0;\n if (this.totalAllocated < currentPerCall) {\n throw new Error(`Invalid buffer allocation state: call ${callId} allocated ${currentPerCall} > total allocated ${this.totalAllocated}`);\n }\n this.totalAllocated -= currentPerCall;\n this.allocatedPerCall.delete(callId);\n }\n}\nexports.MessageBufferTracker = MessageBufferTracker;\nconst PREVIONS_RPC_ATTEMPTS_METADATA_KEY = 'grpc-previous-rpc-attempts';\nclass RetryingCall {\n constructor(channel, callConfig, methodName, host, credentials, deadline, callNumber, bufferTracker, retryThrottler) {\n this.channel = channel;\n this.callConfig = callConfig;\n this.methodName = methodName;\n this.host = host;\n this.credentials = credentials;\n this.deadline = deadline;\n this.callNumber = callNumber;\n this.bufferTracker = bufferTracker;\n this.retryThrottler = retryThrottler;\n this.listener = null;\n this.initialMetadata = null;\n this.underlyingCalls = [];\n this.writeBuffer = [];\n /**\n * The offset of message indices in the writeBuffer. For example, if\n * writeBufferOffset is 10, message 10 is in writeBuffer[0] and message 15\n * is in writeBuffer[5].\n */\n this.writeBufferOffset = 0;\n /**\n * Tracks whether a read has been started, so that we know whether to start\n * reads on new child calls. This only matters for the first read, because\n * once a message comes in the child call becomes committed and there will\n * be no new child calls.\n */\n this.readStarted = false;\n this.transparentRetryUsed = false;\n /**\n * Number of attempts so far\n */\n this.attempts = 0;\n this.hedgingTimer = null;\n this.committedCallIndex = null;\n this.initialRetryBackoffSec = 0;\n this.nextRetryBackoffSec = 0;\n if (callConfig.methodConfig.retryPolicy) {\n this.state = 'RETRY';\n const retryPolicy = callConfig.methodConfig.retryPolicy;\n this.nextRetryBackoffSec = this.initialRetryBackoffSec = Number(retryPolicy.initialBackoff.substring(0, retryPolicy.initialBackoff.length - 1));\n }\n else if (callConfig.methodConfig.hedgingPolicy) {\n this.state = 'HEDGING';\n }\n else {\n this.state = 'TRANSPARENT_ONLY';\n }\n this.startTime = new Date();\n }\n getDeadlineInfo() {\n if (this.underlyingCalls.length === 0) {\n return [];\n }\n const deadlineInfo = [];\n const latestCall = this.underlyingCalls[this.underlyingCalls.length - 1];\n if (this.underlyingCalls.length > 1) {\n deadlineInfo.push(`previous attempts: ${this.underlyingCalls.length - 1}`);\n }\n if (latestCall.startTime > this.startTime) {\n deadlineInfo.push(`time to current attempt start: ${(0, deadline_1.formatDateDifference)(this.startTime, latestCall.startTime)}`);\n }\n deadlineInfo.push(...latestCall.call.getDeadlineInfo());\n return deadlineInfo;\n }\n getCallNumber() {\n return this.callNumber;\n }\n trace(text) {\n logging.trace(constants_1.LogVerbosity.DEBUG, TRACER_NAME, '[' + this.callNumber + '] ' + text);\n }\n reportStatus(statusObject) {\n this.trace('ended with status: code=' +\n statusObject.code +\n ' details=\"' +\n statusObject.details +\n '\" start time=' +\n this.startTime.toISOString());\n this.bufferTracker.freeAll(this.callNumber);\n this.writeBufferOffset = this.writeBufferOffset + this.writeBuffer.length;\n this.writeBuffer = [];\n process.nextTick(() => {\n var _a;\n // Explicitly construct status object to remove progress field\n (_a = this.listener) === null || _a === void 0 ? void 0 : _a.onReceiveStatus({\n code: statusObject.code,\n details: statusObject.details,\n metadata: statusObject.metadata,\n });\n });\n }\n cancelWithStatus(status, details) {\n this.trace('cancelWithStatus code: ' + status + ' details: \"' + details + '\"');\n this.reportStatus({ code: status, details, metadata: new metadata_1.Metadata() });\n for (const { call } of this.underlyingCalls) {\n call.cancelWithStatus(status, details);\n }\n }\n getPeer() {\n if (this.committedCallIndex !== null) {\n return this.underlyingCalls[this.committedCallIndex].call.getPeer();\n }\n else {\n return 'unknown';\n }\n }\n getBufferEntry(messageIndex) {\n var _a;\n return ((_a = this.writeBuffer[messageIndex - this.writeBufferOffset]) !== null && _a !== void 0 ? _a : {\n entryType: 'FREED',\n allocated: false,\n });\n }\n getNextBufferIndex() {\n return this.writeBufferOffset + this.writeBuffer.length;\n }\n clearSentMessages() {\n if (this.state !== 'COMMITTED') {\n return;\n }\n const earliestNeededMessageIndex = this.underlyingCalls[this.committedCallIndex].nextMessageToSend;\n for (let messageIndex = this.writeBufferOffset; messageIndex < earliestNeededMessageIndex; messageIndex++) {\n const bufferEntry = this.getBufferEntry(messageIndex);\n if (bufferEntry.allocated) {\n this.bufferTracker.free(bufferEntry.message.message.length, this.callNumber);\n }\n }\n this.writeBuffer = this.writeBuffer.slice(earliestNeededMessageIndex - this.writeBufferOffset);\n this.writeBufferOffset = earliestNeededMessageIndex;\n }\n commitCall(index) {\n if (this.state === 'COMMITTED') {\n return;\n }\n if (this.underlyingCalls[index].state === 'COMPLETED') {\n return;\n }\n this.trace('Committing call [' +\n this.underlyingCalls[index].call.getCallNumber() +\n '] at index ' +\n index);\n this.state = 'COMMITTED';\n this.committedCallIndex = index;\n for (let i = 0; i < this.underlyingCalls.length; i++) {\n if (i === index) {\n continue;\n }\n if (this.underlyingCalls[i].state === 'COMPLETED') {\n continue;\n }\n this.underlyingCalls[i].state = 'COMPLETED';\n this.underlyingCalls[i].call.cancelWithStatus(constants_1.Status.CANCELLED, 'Discarded in favor of other hedged attempt');\n }\n this.clearSentMessages();\n }\n commitCallWithMostMessages() {\n if (this.state === 'COMMITTED') {\n return;\n }\n let mostMessages = -1;\n let callWithMostMessages = -1;\n for (const [index, childCall] of this.underlyingCalls.entries()) {\n if (childCall.state === 'ACTIVE' &&\n childCall.nextMessageToSend > mostMessages) {\n mostMessages = childCall.nextMessageToSend;\n callWithMostMessages = index;\n }\n }\n if (callWithMostMessages === -1) {\n /* There are no active calls, disable retries to force the next call that\n * is started to be committed. */\n this.state = 'TRANSPARENT_ONLY';\n }\n else {\n this.commitCall(callWithMostMessages);\n }\n }\n isStatusCodeInList(list, code) {\n return list.some(value => value === code ||\n value.toString().toLowerCase() === constants_1.Status[code].toLowerCase());\n }\n getNextRetryBackoffMs() {\n var _a;\n const retryPolicy = (_a = this.callConfig) === null || _a === void 0 ? void 0 : _a.methodConfig.retryPolicy;\n if (!retryPolicy) {\n return 0;\n }\n const nextBackoffMs = Math.random() * this.nextRetryBackoffSec * 1000;\n const maxBackoffSec = Number(retryPolicy.maxBackoff.substring(0, retryPolicy.maxBackoff.length - 1));\n this.nextRetryBackoffSec = Math.min(this.nextRetryBackoffSec * retryPolicy.backoffMultiplier, maxBackoffSec);\n return nextBackoffMs;\n }\n maybeRetryCall(pushback, callback) {\n if (this.state !== 'RETRY') {\n callback(false);\n return;\n }\n const retryPolicy = this.callConfig.methodConfig.retryPolicy;\n if (this.attempts >= Math.min(retryPolicy.maxAttempts, 5)) {\n callback(false);\n return;\n }\n let retryDelayMs;\n if (pushback === null) {\n retryDelayMs = this.getNextRetryBackoffMs();\n }\n else if (pushback < 0) {\n this.state = 'TRANSPARENT_ONLY';\n callback(false);\n return;\n }\n else {\n retryDelayMs = pushback;\n this.nextRetryBackoffSec = this.initialRetryBackoffSec;\n }\n setTimeout(() => {\n var _a, _b;\n if (this.state !== 'RETRY') {\n callback(false);\n return;\n }\n if ((_b = (_a = this.retryThrottler) === null || _a === void 0 ? void 0 : _a.canRetryCall()) !== null && _b !== void 0 ? _b : true) {\n callback(true);\n this.attempts += 1;\n this.startNewAttempt();\n }\n }, retryDelayMs);\n }\n countActiveCalls() {\n let count = 0;\n for (const call of this.underlyingCalls) {\n if ((call === null || call === void 0 ? void 0 : call.state) === 'ACTIVE') {\n count += 1;\n }\n }\n return count;\n }\n handleProcessedStatus(status, callIndex, pushback) {\n var _a, _b, _c;\n switch (this.state) {\n case 'COMMITTED':\n case 'TRANSPARENT_ONLY':\n this.commitCall(callIndex);\n this.reportStatus(status);\n break;\n case 'HEDGING':\n if (this.isStatusCodeInList((_a = this.callConfig.methodConfig.hedgingPolicy.nonFatalStatusCodes) !== null && _a !== void 0 ? _a : [], status.code)) {\n (_b = this.retryThrottler) === null || _b === void 0 ? void 0 : _b.addCallFailed();\n let delayMs;\n if (pushback === null) {\n delayMs = 0;\n }\n else if (pushback < 0) {\n this.state = 'TRANSPARENT_ONLY';\n this.commitCall(callIndex);\n this.reportStatus(status);\n return;\n }\n else {\n delayMs = pushback;\n }\n setTimeout(() => {\n this.maybeStartHedgingAttempt();\n // If after trying to start a call there are no active calls, this was the last one\n if (this.countActiveCalls() === 0) {\n this.commitCall(callIndex);\n this.reportStatus(status);\n }\n }, delayMs);\n }\n else {\n this.commitCall(callIndex);\n this.reportStatus(status);\n }\n break;\n case 'RETRY':\n if (this.isStatusCodeInList(this.callConfig.methodConfig.retryPolicy.retryableStatusCodes, status.code)) {\n (_c = this.retryThrottler) === null || _c === void 0 ? void 0 : _c.addCallFailed();\n this.maybeRetryCall(pushback, retried => {\n if (!retried) {\n this.commitCall(callIndex);\n this.reportStatus(status);\n }\n });\n }\n else {\n this.commitCall(callIndex);\n this.reportStatus(status);\n }\n break;\n }\n }\n getPushback(metadata) {\n const mdValue = metadata.get('grpc-retry-pushback-ms');\n if (mdValue.length === 0) {\n return null;\n }\n try {\n return parseInt(mdValue[0]);\n }\n catch (e) {\n return -1;\n }\n }\n handleChildStatus(status, callIndex) {\n var _a;\n if (this.underlyingCalls[callIndex].state === 'COMPLETED') {\n return;\n }\n this.trace('state=' +\n this.state +\n ' handling status with progress ' +\n status.progress +\n ' from child [' +\n this.underlyingCalls[callIndex].call.getCallNumber() +\n '] in state ' +\n this.underlyingCalls[callIndex].state);\n this.underlyingCalls[callIndex].state = 'COMPLETED';\n if (status.code === constants_1.Status.OK) {\n (_a = this.retryThrottler) === null || _a === void 0 ? void 0 : _a.addCallSucceeded();\n this.commitCall(callIndex);\n this.reportStatus(status);\n return;\n }\n if (this.state === 'COMMITTED') {\n this.reportStatus(status);\n return;\n }\n const pushback = this.getPushback(status.metadata);\n switch (status.progress) {\n case 'NOT_STARTED':\n // RPC never leaves the client, always safe to retry\n this.startNewAttempt();\n break;\n case 'REFUSED':\n // RPC reaches the server library, but not the server application logic\n if (this.transparentRetryUsed) {\n this.handleProcessedStatus(status, callIndex, pushback);\n }\n else {\n this.transparentRetryUsed = true;\n this.startNewAttempt();\n }\n break;\n case 'DROP':\n this.commitCall(callIndex);\n this.reportStatus(status);\n break;\n case 'PROCESSED':\n this.handleProcessedStatus(status, callIndex, pushback);\n break;\n }\n }\n maybeStartHedgingAttempt() {\n if (this.state !== 'HEDGING') {\n return;\n }\n if (!this.callConfig.methodConfig.hedgingPolicy) {\n return;\n }\n const hedgingPolicy = this.callConfig.methodConfig.hedgingPolicy;\n if (this.attempts >= Math.min(hedgingPolicy.maxAttempts, 5)) {\n return;\n }\n this.attempts += 1;\n this.startNewAttempt();\n this.maybeStartHedgingTimer();\n }\n maybeStartHedgingTimer() {\n var _a, _b, _c;\n if (this.hedgingTimer) {\n clearTimeout(this.hedgingTimer);\n }\n if (this.state !== 'HEDGING') {\n return;\n }\n if (!this.callConfig.methodConfig.hedgingPolicy) {\n return;\n }\n const hedgingPolicy = this.callConfig.methodConfig.hedgingPolicy;\n if (this.attempts >= Math.min(hedgingPolicy.maxAttempts, 5)) {\n return;\n }\n const hedgingDelayString = (_a = hedgingPolicy.hedgingDelay) !== null && _a !== void 0 ? _a : '0s';\n const hedgingDelaySec = Number(hedgingDelayString.substring(0, hedgingDelayString.length - 1));\n this.hedgingTimer = setTimeout(() => {\n this.maybeStartHedgingAttempt();\n }, hedgingDelaySec * 1000);\n (_c = (_b = this.hedgingTimer).unref) === null || _c === void 0 ? void 0 : _c.call(_b);\n }\n startNewAttempt() {\n const child = this.channel.createLoadBalancingCall(this.callConfig, this.methodName, this.host, this.credentials, this.deadline);\n this.trace('Created child call [' +\n child.getCallNumber() +\n '] for attempt ' +\n this.attempts);\n const index = this.underlyingCalls.length;\n this.underlyingCalls.push({\n state: 'ACTIVE',\n call: child,\n nextMessageToSend: 0,\n startTime: new Date()\n });\n const previousAttempts = this.attempts - 1;\n const initialMetadata = this.initialMetadata.clone();\n if (previousAttempts > 0) {\n initialMetadata.set(PREVIONS_RPC_ATTEMPTS_METADATA_KEY, `${previousAttempts}`);\n }\n let receivedMetadata = false;\n child.start(initialMetadata, {\n onReceiveMetadata: metadata => {\n this.trace('Received metadata from child [' + child.getCallNumber() + ']');\n this.commitCall(index);\n receivedMetadata = true;\n if (previousAttempts > 0) {\n metadata.set(PREVIONS_RPC_ATTEMPTS_METADATA_KEY, `${previousAttempts}`);\n }\n if (this.underlyingCalls[index].state === 'ACTIVE') {\n this.listener.onReceiveMetadata(metadata);\n }\n },\n onReceiveMessage: message => {\n this.trace('Received message from child [' + child.getCallNumber() + ']');\n this.commitCall(index);\n if (this.underlyingCalls[index].state === 'ACTIVE') {\n this.listener.onReceiveMessage(message);\n }\n },\n onReceiveStatus: status => {\n this.trace('Received status from child [' + child.getCallNumber() + ']');\n if (!receivedMetadata && previousAttempts > 0) {\n status.metadata.set(PREVIONS_RPC_ATTEMPTS_METADATA_KEY, `${previousAttempts}`);\n }\n this.handleChildStatus(status, index);\n },\n });\n this.sendNextChildMessage(index);\n if (this.readStarted) {\n child.startRead();\n }\n }\n start(metadata, listener) {\n this.trace('start called');\n this.listener = listener;\n this.initialMetadata = metadata;\n this.attempts += 1;\n this.startNewAttempt();\n this.maybeStartHedgingTimer();\n }\n handleChildWriteCompleted(childIndex) {\n var _a, _b;\n const childCall = this.underlyingCalls[childIndex];\n const messageIndex = childCall.nextMessageToSend;\n (_b = (_a = this.getBufferEntry(messageIndex)).callback) === null || _b === void 0 ? void 0 : _b.call(_a);\n this.clearSentMessages();\n childCall.nextMessageToSend += 1;\n this.sendNextChildMessage(childIndex);\n }\n sendNextChildMessage(childIndex) {\n const childCall = this.underlyingCalls[childIndex];\n if (childCall.state === 'COMPLETED') {\n return;\n }\n if (this.getBufferEntry(childCall.nextMessageToSend)) {\n const bufferEntry = this.getBufferEntry(childCall.nextMessageToSend);\n switch (bufferEntry.entryType) {\n case 'MESSAGE':\n childCall.call.sendMessageWithContext({\n callback: error => {\n // Ignore error\n this.handleChildWriteCompleted(childIndex);\n },\n }, bufferEntry.message.message);\n break;\n case 'HALF_CLOSE':\n childCall.nextMessageToSend += 1;\n childCall.call.halfClose();\n break;\n case 'FREED':\n // Should not be possible\n break;\n }\n }\n }\n sendMessageWithContext(context, message) {\n var _a;\n this.trace('write() called with message of length ' + message.length);\n const writeObj = {\n message,\n flags: context.flags,\n };\n const messageIndex = this.getNextBufferIndex();\n const bufferEntry = {\n entryType: 'MESSAGE',\n message: writeObj,\n allocated: this.bufferTracker.allocate(message.length, this.callNumber),\n };\n this.writeBuffer.push(bufferEntry);\n if (bufferEntry.allocated) {\n (_a = context.callback) === null || _a === void 0 ? void 0 : _a.call(context);\n for (const [callIndex, call] of this.underlyingCalls.entries()) {\n if (call.state === 'ACTIVE' &&\n call.nextMessageToSend === messageIndex) {\n call.call.sendMessageWithContext({\n callback: error => {\n // Ignore error\n this.handleChildWriteCompleted(callIndex);\n },\n }, message);\n }\n }\n }\n else {\n this.commitCallWithMostMessages();\n // commitCallWithMostMessages can fail if we are between ping attempts\n if (this.committedCallIndex === null) {\n return;\n }\n const call = this.underlyingCalls[this.committedCallIndex];\n bufferEntry.callback = context.callback;\n if (call.state === 'ACTIVE' && call.nextMessageToSend === messageIndex) {\n call.call.sendMessageWithContext({\n callback: error => {\n // Ignore error\n this.handleChildWriteCompleted(this.committedCallIndex);\n },\n }, message);\n }\n }\n }\n startRead() {\n this.trace('startRead called');\n this.readStarted = true;\n for (const underlyingCall of this.underlyingCalls) {\n if ((underlyingCall === null || underlyingCall === void 0 ? void 0 : underlyingCall.state) === 'ACTIVE') {\n underlyingCall.call.startRead();\n }\n }\n }\n halfClose() {\n this.trace('halfClose called');\n const halfCloseIndex = this.getNextBufferIndex();\n this.writeBuffer.push({\n entryType: 'HALF_CLOSE',\n allocated: false,\n });\n for (const call of this.underlyingCalls) {\n if ((call === null || call === void 0 ? void 0 : call.state) === 'ACTIVE' &&\n call.nextMessageToSend === halfCloseIndex) {\n call.nextMessageToSend += 1;\n call.call.halfClose();\n }\n }\n }\n setCredentials(newCredentials) {\n throw new Error('Method not implemented.');\n }\n getMethod() {\n return this.methodName;\n }\n getHost() {\n return this.host;\n }\n}\nexports.RetryingCall = RetryingCall;\n//# sourceMappingURL=retrying-call.js.map","\"use strict\";\n/*\n * Copyright 2019 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ServerDuplexStreamImpl = exports.ServerWritableStreamImpl = exports.ServerReadableStreamImpl = exports.ServerUnaryCallImpl = exports.serverErrorToStatus = void 0;\nconst events_1 = require(\"events\");\nconst stream_1 = require(\"stream\");\nconst constants_1 = require(\"./constants\");\nconst metadata_1 = require(\"./metadata\");\nfunction serverErrorToStatus(error, overrideTrailers) {\n var _a;\n const status = {\n code: constants_1.Status.UNKNOWN,\n details: 'message' in error ? error.message : 'Unknown Error',\n metadata: (_a = overrideTrailers !== null && overrideTrailers !== void 0 ? overrideTrailers : error.metadata) !== null && _a !== void 0 ? _a : null,\n };\n if ('code' in error &&\n typeof error.code === 'number' &&\n Number.isInteger(error.code)) {\n status.code = error.code;\n if ('details' in error && typeof error.details === 'string') {\n status.details = error.details;\n }\n }\n return status;\n}\nexports.serverErrorToStatus = serverErrorToStatus;\nclass ServerUnaryCallImpl extends events_1.EventEmitter {\n constructor(path, call, metadata, request) {\n super();\n this.path = path;\n this.call = call;\n this.metadata = metadata;\n this.request = request;\n this.cancelled = false;\n }\n getPeer() {\n return this.call.getPeer();\n }\n sendMetadata(responseMetadata) {\n this.call.sendMetadata(responseMetadata);\n }\n getDeadline() {\n return this.call.getDeadline();\n }\n getPath() {\n return this.path;\n }\n}\nexports.ServerUnaryCallImpl = ServerUnaryCallImpl;\nclass ServerReadableStreamImpl extends stream_1.Readable {\n constructor(path, call, metadata) {\n super({ objectMode: true });\n this.path = path;\n this.call = call;\n this.metadata = metadata;\n this.cancelled = false;\n }\n _read(size) {\n this.call.startRead();\n }\n getPeer() {\n return this.call.getPeer();\n }\n sendMetadata(responseMetadata) {\n this.call.sendMetadata(responseMetadata);\n }\n getDeadline() {\n return this.call.getDeadline();\n }\n getPath() {\n return this.path;\n }\n}\nexports.ServerReadableStreamImpl = ServerReadableStreamImpl;\nclass ServerWritableStreamImpl extends stream_1.Writable {\n constructor(path, call, metadata, request) {\n super({ objectMode: true });\n this.path = path;\n this.call = call;\n this.metadata = metadata;\n this.request = request;\n this.pendingStatus = {\n code: constants_1.Status.OK,\n details: 'OK',\n };\n this.cancelled = false;\n this.trailingMetadata = new metadata_1.Metadata();\n this.on('error', err => {\n this.pendingStatus = serverErrorToStatus(err);\n this.end();\n });\n }\n getPeer() {\n return this.call.getPeer();\n }\n sendMetadata(responseMetadata) {\n this.call.sendMetadata(responseMetadata);\n }\n getDeadline() {\n return this.call.getDeadline();\n }\n getPath() {\n return this.path;\n }\n _write(chunk, encoding, \n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n callback) {\n this.call.sendMessage(chunk, callback);\n }\n _final(callback) {\n var _a;\n callback(null);\n this.call.sendStatus(Object.assign(Object.assign({}, this.pendingStatus), { metadata: (_a = this.pendingStatus.metadata) !== null && _a !== void 0 ? _a : this.trailingMetadata }));\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n end(metadata) {\n if (metadata) {\n this.trailingMetadata = metadata;\n }\n return super.end();\n }\n}\nexports.ServerWritableStreamImpl = ServerWritableStreamImpl;\nclass ServerDuplexStreamImpl extends stream_1.Duplex {\n constructor(path, call, metadata) {\n super({ objectMode: true });\n this.path = path;\n this.call = call;\n this.metadata = metadata;\n this.pendingStatus = {\n code: constants_1.Status.OK,\n details: 'OK',\n };\n this.cancelled = false;\n this.trailingMetadata = new metadata_1.Metadata();\n this.on('error', err => {\n this.pendingStatus = serverErrorToStatus(err);\n this.end();\n });\n }\n getPeer() {\n return this.call.getPeer();\n }\n sendMetadata(responseMetadata) {\n this.call.sendMetadata(responseMetadata);\n }\n getDeadline() {\n return this.call.getDeadline();\n }\n getPath() {\n return this.path;\n }\n _read(size) {\n this.call.startRead();\n }\n _write(chunk, encoding, \n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n callback) {\n this.call.sendMessage(chunk, callback);\n }\n _final(callback) {\n var _a;\n callback(null);\n this.call.sendStatus(Object.assign(Object.assign({}, this.pendingStatus), { metadata: (_a = this.pendingStatus.metadata) !== null && _a !== void 0 ? _a : this.trailingMetadata }));\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n end(metadata) {\n if (metadata) {\n this.trailingMetadata = metadata;\n }\n return super.end();\n }\n}\nexports.ServerDuplexStreamImpl = ServerDuplexStreamImpl;\n//# sourceMappingURL=server-call.js.map","\"use strict\";\n/*\n * Copyright 2019 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ServerCredentials = void 0;\nconst tls_helpers_1 = require(\"./tls-helpers\");\nclass ServerCredentials {\n static createInsecure() {\n return new InsecureServerCredentials();\n }\n static createSsl(rootCerts, keyCertPairs, checkClientCertificate = false) {\n var _a;\n if (rootCerts !== null && !Buffer.isBuffer(rootCerts)) {\n throw new TypeError('rootCerts must be null or a Buffer');\n }\n if (!Array.isArray(keyCertPairs)) {\n throw new TypeError('keyCertPairs must be an array');\n }\n if (typeof checkClientCertificate !== 'boolean') {\n throw new TypeError('checkClientCertificate must be a boolean');\n }\n const cert = [];\n const key = [];\n for (let i = 0; i < keyCertPairs.length; i++) {\n const pair = keyCertPairs[i];\n if (pair === null || typeof pair !== 'object') {\n throw new TypeError(`keyCertPair[${i}] must be an object`);\n }\n if (!Buffer.isBuffer(pair.private_key)) {\n throw new TypeError(`keyCertPair[${i}].private_key must be a Buffer`);\n }\n if (!Buffer.isBuffer(pair.cert_chain)) {\n throw new TypeError(`keyCertPair[${i}].cert_chain must be a Buffer`);\n }\n cert.push(pair.cert_chain);\n key.push(pair.private_key);\n }\n return new SecureServerCredentials({\n ca: (_a = rootCerts !== null && rootCerts !== void 0 ? rootCerts : (0, tls_helpers_1.getDefaultRootsData)()) !== null && _a !== void 0 ? _a : undefined,\n cert,\n key,\n requestCert: checkClientCertificate,\n ciphers: tls_helpers_1.CIPHER_SUITES,\n });\n }\n}\nexports.ServerCredentials = ServerCredentials;\nclass InsecureServerCredentials extends ServerCredentials {\n _isSecure() {\n return false;\n }\n _getSettings() {\n return null;\n }\n _equals(other) {\n return other instanceof InsecureServerCredentials;\n }\n}\nclass SecureServerCredentials extends ServerCredentials {\n constructor(options) {\n super();\n this.options = options;\n }\n _isSecure() {\n return true;\n }\n _getSettings() {\n return this.options;\n }\n /**\n * Checks equality by checking the options that are actually set by\n * createSsl.\n * @param other\n * @returns\n */\n _equals(other) {\n if (this === other) {\n return true;\n }\n if (!(other instanceof SecureServerCredentials)) {\n return false;\n }\n // options.ca equality check\n if (Buffer.isBuffer(this.options.ca) && Buffer.isBuffer(other.options.ca)) {\n if (!this.options.ca.equals(other.options.ca)) {\n return false;\n }\n }\n else {\n if (this.options.ca !== other.options.ca) {\n return false;\n }\n }\n // options.cert equality check\n if (Array.isArray(this.options.cert) && Array.isArray(other.options.cert)) {\n if (this.options.cert.length !== other.options.cert.length) {\n return false;\n }\n for (let i = 0; i < this.options.cert.length; i++) {\n const thisCert = this.options.cert[i];\n const otherCert = other.options.cert[i];\n if (Buffer.isBuffer(thisCert) && Buffer.isBuffer(otherCert)) {\n if (!thisCert.equals(otherCert)) {\n return false;\n }\n }\n else {\n if (thisCert !== otherCert) {\n return false;\n }\n }\n }\n }\n else {\n if (this.options.cert !== other.options.cert) {\n return false;\n }\n }\n // options.key equality check\n if (Array.isArray(this.options.key) && Array.isArray(other.options.key)) {\n if (this.options.key.length !== other.options.key.length) {\n return false;\n }\n for (let i = 0; i < this.options.key.length; i++) {\n const thisKey = this.options.key[i];\n const otherKey = other.options.key[i];\n if (Buffer.isBuffer(thisKey) && Buffer.isBuffer(otherKey)) {\n if (!thisKey.equals(otherKey)) {\n return false;\n }\n }\n else {\n if (thisKey !== otherKey) {\n return false;\n }\n }\n }\n }\n else {\n if (this.options.key !== other.options.key) {\n return false;\n }\n }\n // options.requestCert equality check\n if (this.options.requestCert !== other.options.requestCert) {\n return false;\n }\n /* ciphers is derived from a value that is constant for the process, so no\n * equality check is needed. */\n return true;\n }\n}\n//# sourceMappingURL=server-credentials.js.map","\"use strict\";\n/*\n * Copyright 2024 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getServerInterceptingCall = exports.BaseServerInterceptingCall = exports.ServerInterceptingCall = exports.ResponderBuilder = exports.isInterceptingServerListener = exports.ServerListenerBuilder = void 0;\nconst metadata_1 = require(\"./metadata\");\nconst constants_1 = require(\"./constants\");\nconst http2 = require(\"http2\");\nconst error_1 = require(\"./error\");\nconst zlib = require(\"zlib\");\nconst util_1 = require(\"util\");\nconst stream_decoder_1 = require(\"./stream-decoder\");\nconst logging = require(\"./logging\");\nconst unzip = (0, util_1.promisify)(zlib.unzip);\nconst inflate = (0, util_1.promisify)(zlib.inflate);\nconst TRACER_NAME = 'server_call';\nfunction trace(text) {\n logging.trace(constants_1.LogVerbosity.DEBUG, TRACER_NAME, text);\n}\nclass ServerListenerBuilder {\n constructor() {\n this.metadata = undefined;\n this.message = undefined;\n this.halfClose = undefined;\n this.cancel = undefined;\n }\n withOnReceiveMetadata(onReceiveMetadata) {\n this.metadata = onReceiveMetadata;\n return this;\n }\n withOnReceiveMessage(onReceiveMessage) {\n this.message = onReceiveMessage;\n return this;\n }\n withOnReceiveHalfClose(onReceiveHalfClose) {\n this.halfClose = onReceiveHalfClose;\n return this;\n }\n withOnCancel(onCancel) {\n this.cancel = onCancel;\n return this;\n }\n build() {\n return {\n onReceiveMetadata: this.metadata,\n onReceiveMessage: this.message,\n onReceiveHalfClose: this.halfClose,\n onCancel: this.cancel,\n };\n }\n}\nexports.ServerListenerBuilder = ServerListenerBuilder;\nfunction isInterceptingServerListener(listener) {\n return (listener.onReceiveMetadata !== undefined &&\n listener.onReceiveMetadata.length === 1);\n}\nexports.isInterceptingServerListener = isInterceptingServerListener;\nclass InterceptingServerListenerImpl {\n constructor(listener, nextListener) {\n this.listener = listener;\n this.nextListener = nextListener;\n /**\n * Once the call is cancelled, ignore all other events.\n */\n this.cancelled = false;\n this.processingMetadata = false;\n this.hasPendingMessage = false;\n this.pendingMessage = null;\n this.processingMessage = false;\n this.hasPendingHalfClose = false;\n }\n processPendingMessage() {\n if (this.hasPendingMessage) {\n this.nextListener.onReceiveMessage(this.pendingMessage);\n this.pendingMessage = null;\n this.hasPendingMessage = false;\n }\n }\n processPendingHalfClose() {\n if (this.hasPendingHalfClose) {\n this.nextListener.onReceiveHalfClose();\n this.hasPendingHalfClose = false;\n }\n }\n onReceiveMetadata(metadata) {\n if (this.cancelled) {\n return;\n }\n this.processingMetadata = true;\n this.listener.onReceiveMetadata(metadata, interceptedMetadata => {\n this.processingMetadata = false;\n if (this.cancelled) {\n return;\n }\n this.nextListener.onReceiveMetadata(interceptedMetadata);\n this.processPendingMessage();\n this.processPendingHalfClose();\n });\n }\n onReceiveMessage(message) {\n if (this.cancelled) {\n return;\n }\n this.processingMessage = true;\n this.listener.onReceiveMessage(message, msg => {\n this.processingMessage = false;\n if (this.cancelled) {\n return;\n }\n if (this.processingMetadata) {\n this.pendingMessage = msg;\n this.hasPendingMessage = true;\n }\n else {\n this.nextListener.onReceiveMessage(msg);\n this.processPendingHalfClose();\n }\n });\n }\n onReceiveHalfClose() {\n if (this.cancelled) {\n return;\n }\n this.listener.onReceiveHalfClose(() => {\n if (this.cancelled) {\n return;\n }\n if (this.processingMetadata || this.processingMessage) {\n this.hasPendingHalfClose = true;\n }\n else {\n this.nextListener.onReceiveHalfClose();\n }\n });\n }\n onCancel() {\n this.cancelled = true;\n this.listener.onCancel();\n this.nextListener.onCancel();\n }\n}\nclass ResponderBuilder {\n constructor() {\n this.start = undefined;\n this.metadata = undefined;\n this.message = undefined;\n this.status = undefined;\n }\n withStart(start) {\n this.start = start;\n return this;\n }\n withSendMetadata(sendMetadata) {\n this.metadata = sendMetadata;\n return this;\n }\n withSendMessage(sendMessage) {\n this.message = sendMessage;\n return this;\n }\n withSendStatus(sendStatus) {\n this.status = sendStatus;\n return this;\n }\n build() {\n return {\n start: this.start,\n sendMetadata: this.metadata,\n sendMessage: this.message,\n sendStatus: this.status,\n };\n }\n}\nexports.ResponderBuilder = ResponderBuilder;\nconst defaultServerListener = {\n onReceiveMetadata: (metadata, next) => {\n next(metadata);\n },\n onReceiveMessage: (message, next) => {\n next(message);\n },\n onReceiveHalfClose: next => {\n next();\n },\n onCancel: () => { },\n};\nconst defaultResponder = {\n start: next => {\n next();\n },\n sendMetadata: (metadata, next) => {\n next(metadata);\n },\n sendMessage: (message, next) => {\n next(message);\n },\n sendStatus: (status, next) => {\n next(status);\n },\n};\nclass ServerInterceptingCall {\n constructor(nextCall, responder) {\n var _a, _b, _c, _d;\n this.nextCall = nextCall;\n this.processingMetadata = false;\n this.processingMessage = false;\n this.pendingMessage = null;\n this.pendingMessageCallback = null;\n this.pendingStatus = null;\n this.responder = {\n start: (_a = responder === null || responder === void 0 ? void 0 : responder.start) !== null && _a !== void 0 ? _a : defaultResponder.start,\n sendMetadata: (_b = responder === null || responder === void 0 ? void 0 : responder.sendMetadata) !== null && _b !== void 0 ? _b : defaultResponder.sendMetadata,\n sendMessage: (_c = responder === null || responder === void 0 ? void 0 : responder.sendMessage) !== null && _c !== void 0 ? _c : defaultResponder.sendMessage,\n sendStatus: (_d = responder === null || responder === void 0 ? void 0 : responder.sendStatus) !== null && _d !== void 0 ? _d : defaultResponder.sendStatus,\n };\n }\n processPendingMessage() {\n if (this.pendingMessageCallback) {\n this.nextCall.sendMessage(this.pendingMessage, this.pendingMessageCallback);\n this.pendingMessage = null;\n this.pendingMessageCallback = null;\n }\n }\n processPendingStatus() {\n if (this.pendingStatus) {\n this.nextCall.sendStatus(this.pendingStatus);\n this.pendingStatus = null;\n }\n }\n start(listener) {\n this.responder.start(interceptedListener => {\n var _a, _b, _c, _d;\n const fullInterceptedListener = {\n onReceiveMetadata: (_a = interceptedListener === null || interceptedListener === void 0 ? void 0 : interceptedListener.onReceiveMetadata) !== null && _a !== void 0 ? _a : defaultServerListener.onReceiveMetadata,\n onReceiveMessage: (_b = interceptedListener === null || interceptedListener === void 0 ? void 0 : interceptedListener.onReceiveMessage) !== null && _b !== void 0 ? _b : defaultServerListener.onReceiveMessage,\n onReceiveHalfClose: (_c = interceptedListener === null || interceptedListener === void 0 ? void 0 : interceptedListener.onReceiveHalfClose) !== null && _c !== void 0 ? _c : defaultServerListener.onReceiveHalfClose,\n onCancel: (_d = interceptedListener === null || interceptedListener === void 0 ? void 0 : interceptedListener.onCancel) !== null && _d !== void 0 ? _d : defaultServerListener.onCancel,\n };\n const finalInterceptingListener = new InterceptingServerListenerImpl(fullInterceptedListener, listener);\n this.nextCall.start(finalInterceptingListener);\n });\n }\n sendMetadata(metadata) {\n this.processingMetadata = true;\n this.responder.sendMetadata(metadata, interceptedMetadata => {\n this.processingMetadata = false;\n this.nextCall.sendMetadata(interceptedMetadata);\n this.processPendingMessage();\n this.processPendingStatus();\n });\n }\n sendMessage(message, callback) {\n this.processingMessage = true;\n this.responder.sendMessage(message, interceptedMessage => {\n this.processingMessage = false;\n if (this.processingMetadata) {\n this.pendingMessage = interceptedMessage;\n this.pendingMessageCallback = callback;\n }\n else {\n this.nextCall.sendMessage(interceptedMessage, callback);\n }\n });\n }\n sendStatus(status) {\n this.responder.sendStatus(status, interceptedStatus => {\n if (this.processingMetadata || this.processingMessage) {\n this.pendingStatus = interceptedStatus;\n }\n else {\n this.nextCall.sendStatus(interceptedStatus);\n }\n });\n }\n startRead() {\n this.nextCall.startRead();\n }\n getPeer() {\n return this.nextCall.getPeer();\n }\n getDeadline() {\n return this.nextCall.getDeadline();\n }\n}\nexports.ServerInterceptingCall = ServerInterceptingCall;\nconst GRPC_ACCEPT_ENCODING_HEADER = 'grpc-accept-encoding';\nconst GRPC_ENCODING_HEADER = 'grpc-encoding';\nconst GRPC_MESSAGE_HEADER = 'grpc-message';\nconst GRPC_STATUS_HEADER = 'grpc-status';\nconst GRPC_TIMEOUT_HEADER = 'grpc-timeout';\nconst DEADLINE_REGEX = /(\\d{1,8})\\s*([HMSmun])/;\nconst deadlineUnitsToMs = {\n H: 3600000,\n M: 60000,\n S: 1000,\n m: 1,\n u: 0.001,\n n: 0.000001,\n};\nconst defaultCompressionHeaders = {\n // TODO(cjihrig): Remove these encoding headers from the default response\n // once compression is integrated.\n [GRPC_ACCEPT_ENCODING_HEADER]: 'identity,deflate,gzip',\n [GRPC_ENCODING_HEADER]: 'identity',\n};\nconst defaultResponseHeaders = {\n [http2.constants.HTTP2_HEADER_STATUS]: http2.constants.HTTP_STATUS_OK,\n [http2.constants.HTTP2_HEADER_CONTENT_TYPE]: 'application/grpc+proto',\n};\nconst defaultResponseOptions = {\n waitForTrailers: true,\n};\nclass BaseServerInterceptingCall {\n constructor(stream, headers, callEventTracker, handler, options) {\n this.stream = stream;\n this.callEventTracker = callEventTracker;\n this.handler = handler;\n this.listener = null;\n this.deadlineTimer = null;\n this.deadline = Infinity;\n this.maxSendMessageSize = constants_1.DEFAULT_MAX_SEND_MESSAGE_LENGTH;\n this.maxReceiveMessageSize = constants_1.DEFAULT_MAX_RECEIVE_MESSAGE_LENGTH;\n this.cancelled = false;\n this.metadataSent = false;\n this.wantTrailers = false;\n this.cancelNotified = false;\n this.incomingEncoding = 'identity';\n this.decoder = new stream_decoder_1.StreamDecoder();\n this.readQueue = [];\n this.isReadPending = false;\n this.receivedHalfClose = false;\n this.streamEnded = false;\n this.stream.once('error', (err) => {\n /* We need an error handler to avoid uncaught error event exceptions, but\n * there is nothing we can reasonably do here. Any error event should\n * have a corresponding close event, which handles emitting the cancelled\n * event. And the stream is now in a bad state, so we can't reasonably\n * expect to be able to send an error over it. */\n });\n this.stream.once('close', () => {\n var _a;\n trace('Request to method ' +\n ((_a = this.handler) === null || _a === void 0 ? void 0 : _a.path) +\n ' stream closed with rstCode ' +\n this.stream.rstCode);\n if (this.callEventTracker && !this.streamEnded) {\n this.streamEnded = true;\n this.callEventTracker.onStreamEnd(false);\n this.callEventTracker.onCallEnd({\n code: constants_1.Status.CANCELLED,\n details: 'Stream closed before sending status',\n metadata: null,\n });\n }\n this.notifyOnCancel();\n });\n this.stream.on('data', (data) => {\n this.handleDataFrame(data);\n });\n this.stream.pause();\n this.stream.on('end', () => {\n this.handleEndEvent();\n });\n if ('grpc.max_send_message_length' in options) {\n this.maxSendMessageSize = options['grpc.max_send_message_length'];\n }\n if ('grpc.max_receive_message_length' in options) {\n this.maxReceiveMessageSize = options['grpc.max_receive_message_length'];\n }\n const metadata = metadata_1.Metadata.fromHttp2Headers(headers);\n if (logging.isTracerEnabled(TRACER_NAME)) {\n trace('Request to ' +\n this.handler.path +\n ' received headers ' +\n JSON.stringify(metadata.toJSON()));\n }\n const timeoutHeader = metadata.get(GRPC_TIMEOUT_HEADER);\n if (timeoutHeader.length > 0) {\n this.handleTimeoutHeader(timeoutHeader[0]);\n }\n const encodingHeader = metadata.get(GRPC_ENCODING_HEADER);\n if (encodingHeader.length > 0) {\n this.incomingEncoding = encodingHeader[0];\n }\n // Remove several headers that should not be propagated to the application\n metadata.remove(GRPC_TIMEOUT_HEADER);\n metadata.remove(GRPC_ENCODING_HEADER);\n metadata.remove(GRPC_ACCEPT_ENCODING_HEADER);\n metadata.remove(http2.constants.HTTP2_HEADER_ACCEPT_ENCODING);\n metadata.remove(http2.constants.HTTP2_HEADER_TE);\n metadata.remove(http2.constants.HTTP2_HEADER_CONTENT_TYPE);\n this.metadata = metadata;\n }\n handleTimeoutHeader(timeoutHeader) {\n const match = timeoutHeader.toString().match(DEADLINE_REGEX);\n if (match === null) {\n const status = {\n code: constants_1.Status.INTERNAL,\n details: `Invalid ${GRPC_TIMEOUT_HEADER} value \"${timeoutHeader}\"`,\n metadata: null,\n };\n // Wait for the constructor to complete before sending the error.\n process.nextTick(() => {\n this.sendStatus(status);\n });\n return;\n }\n const timeout = (+match[1] * deadlineUnitsToMs[match[2]]) | 0;\n const now = new Date();\n this.deadline = now.setMilliseconds(now.getMilliseconds() + timeout);\n this.deadlineTimer = setTimeout(() => {\n const status = {\n code: constants_1.Status.DEADLINE_EXCEEDED,\n details: 'Deadline exceeded',\n metadata: null,\n };\n this.sendStatus(status);\n }, timeout);\n }\n checkCancelled() {\n /* In some cases the stream can become destroyed before the close event\n * fires. That creates a race condition that this check works around */\n if (!this.cancelled && (this.stream.destroyed || this.stream.closed)) {\n this.notifyOnCancel();\n this.cancelled = true;\n }\n return this.cancelled;\n }\n notifyOnCancel() {\n if (this.cancelNotified) {\n return;\n }\n this.cancelNotified = true;\n this.cancelled = true;\n process.nextTick(() => {\n var _a;\n (_a = this.listener) === null || _a === void 0 ? void 0 : _a.onCancel();\n });\n if (this.deadlineTimer) {\n clearTimeout(this.deadlineTimer);\n }\n // Flush incoming data frames\n this.stream.resume();\n }\n /**\n * A server handler can start sending messages without explicitly sending\n * metadata. In that case, we need to send headers before sending any\n * messages. This function does that if necessary.\n */\n maybeSendMetadata() {\n if (!this.metadataSent) {\n this.sendMetadata(new metadata_1.Metadata());\n }\n }\n /**\n * Serialize a message to a length-delimited byte string.\n * @param value\n * @returns\n */\n serializeMessage(value) {\n const messageBuffer = this.handler.serialize(value);\n const byteLength = messageBuffer.byteLength;\n const output = Buffer.allocUnsafe(byteLength + 5);\n /* Note: response compression is currently not supported, so this\n * compressed bit is always 0. */\n output.writeUInt8(0, 0);\n output.writeUInt32BE(byteLength, 1);\n messageBuffer.copy(output, 5);\n return output;\n }\n decompressMessage(message, encoding) {\n switch (encoding) {\n case 'deflate':\n return inflate(message.subarray(5));\n case 'gzip':\n return unzip(message.subarray(5));\n case 'identity':\n return message.subarray(5);\n default:\n return Promise.reject({\n code: constants_1.Status.UNIMPLEMENTED,\n details: `Received message compressed with unsupported encoding \"${encoding}\"`,\n });\n }\n }\n async decompressAndMaybePush(queueEntry) {\n if (queueEntry.type !== 'COMPRESSED') {\n throw new Error(`Invalid queue entry type: ${queueEntry.type}`);\n }\n const compressed = queueEntry.compressedMessage.readUInt8(0) === 1;\n const compressedMessageEncoding = compressed\n ? this.incomingEncoding\n : 'identity';\n const decompressedMessage = await this.decompressMessage(queueEntry.compressedMessage, compressedMessageEncoding);\n try {\n queueEntry.parsedMessage = this.handler.deserialize(decompressedMessage);\n }\n catch (err) {\n this.sendStatus({\n code: constants_1.Status.INTERNAL,\n details: `Error deserializing request: ${err.message}`,\n });\n return;\n }\n queueEntry.type = 'READABLE';\n this.maybePushNextMessage();\n }\n maybePushNextMessage() {\n if (this.listener &&\n this.isReadPending &&\n this.readQueue.length > 0 &&\n this.readQueue[0].type !== 'COMPRESSED') {\n this.isReadPending = false;\n const nextQueueEntry = this.readQueue.shift();\n if (nextQueueEntry.type === 'READABLE') {\n this.listener.onReceiveMessage(nextQueueEntry.parsedMessage);\n }\n else {\n // nextQueueEntry.type === 'HALF_CLOSE'\n this.listener.onReceiveHalfClose();\n }\n }\n }\n handleDataFrame(data) {\n var _a;\n if (this.checkCancelled()) {\n return;\n }\n trace('Request to ' +\n this.handler.path +\n ' received data frame of size ' +\n data.length);\n const rawMessages = this.decoder.write(data);\n for (const messageBytes of rawMessages) {\n this.stream.pause();\n if (this.maxReceiveMessageSize !== -1 &&\n messageBytes.length - 5 > this.maxReceiveMessageSize) {\n this.sendStatus({\n code: constants_1.Status.RESOURCE_EXHAUSTED,\n details: `Received message larger than max (${messageBytes.length - 5} vs. ${this.maxReceiveMessageSize})`,\n metadata: null,\n });\n return;\n }\n const queueEntry = {\n type: 'COMPRESSED',\n compressedMessage: messageBytes,\n parsedMessage: null,\n };\n this.readQueue.push(queueEntry);\n this.decompressAndMaybePush(queueEntry);\n (_a = this.callEventTracker) === null || _a === void 0 ? void 0 : _a.addMessageReceived();\n }\n }\n handleEndEvent() {\n this.readQueue.push({\n type: 'HALF_CLOSE',\n compressedMessage: null,\n parsedMessage: null,\n });\n this.receivedHalfClose = true;\n this.maybePushNextMessage();\n }\n start(listener) {\n trace('Request to ' + this.handler.path + ' start called');\n if (this.checkCancelled()) {\n return;\n }\n this.listener = listener;\n listener.onReceiveMetadata(this.metadata);\n }\n sendMetadata(metadata) {\n if (this.checkCancelled()) {\n return;\n }\n if (this.metadataSent) {\n return;\n }\n this.metadataSent = true;\n const custom = metadata ? metadata.toHttp2Headers() : null;\n const headers = Object.assign(Object.assign(Object.assign({}, defaultResponseHeaders), defaultCompressionHeaders), custom);\n this.stream.respond(headers, defaultResponseOptions);\n }\n sendMessage(message, callback) {\n if (this.checkCancelled()) {\n return;\n }\n let response;\n try {\n response = this.serializeMessage(message);\n }\n catch (e) {\n this.sendStatus({\n code: constants_1.Status.INTERNAL,\n details: `Error serializing response: ${(0, error_1.getErrorMessage)(e)}`,\n metadata: null,\n });\n return;\n }\n if (this.maxSendMessageSize !== -1 &&\n response.length - 5 > this.maxSendMessageSize) {\n this.sendStatus({\n code: constants_1.Status.RESOURCE_EXHAUSTED,\n details: `Sent message larger than max (${response.length} vs. ${this.maxSendMessageSize})`,\n metadata: null,\n });\n return;\n }\n this.maybeSendMetadata();\n trace('Request to ' +\n this.handler.path +\n ' sent data frame of size ' +\n response.length);\n this.stream.write(response, error => {\n var _a;\n if (error) {\n this.sendStatus({\n code: constants_1.Status.INTERNAL,\n details: `Error writing message: ${(0, error_1.getErrorMessage)(error)}`,\n metadata: null,\n });\n return;\n }\n (_a = this.callEventTracker) === null || _a === void 0 ? void 0 : _a.addMessageSent();\n callback();\n });\n }\n sendStatus(status) {\n var _a, _b;\n if (this.checkCancelled()) {\n return;\n }\n trace('Request to method ' +\n ((_a = this.handler) === null || _a === void 0 ? void 0 : _a.path) +\n ' ended with status code: ' +\n constants_1.Status[status.code] +\n ' details: ' +\n status.details);\n if (this.metadataSent) {\n if (!this.wantTrailers) {\n this.wantTrailers = true;\n this.stream.once('wantTrailers', () => {\n var _a;\n if (this.callEventTracker && !this.streamEnded) {\n this.streamEnded = true;\n this.callEventTracker.onStreamEnd(true);\n this.callEventTracker.onCallEnd(status);\n }\n const trailersToSend = Object.assign({ [GRPC_STATUS_HEADER]: status.code, [GRPC_MESSAGE_HEADER]: encodeURI(status.details) }, (_a = status.metadata) === null || _a === void 0 ? void 0 : _a.toHttp2Headers());\n this.stream.sendTrailers(trailersToSend);\n this.notifyOnCancel();\n });\n this.stream.end();\n }\n else {\n this.notifyOnCancel();\n }\n }\n else {\n if (this.callEventTracker && !this.streamEnded) {\n this.streamEnded = true;\n this.callEventTracker.onStreamEnd(true);\n this.callEventTracker.onCallEnd(status);\n }\n // Trailers-only response\n const trailersToSend = Object.assign(Object.assign({ [GRPC_STATUS_HEADER]: status.code, [GRPC_MESSAGE_HEADER]: encodeURI(status.details) }, defaultResponseHeaders), (_b = status.metadata) === null || _b === void 0 ? void 0 : _b.toHttp2Headers());\n this.stream.respond(trailersToSend, { endStream: true });\n this.notifyOnCancel();\n }\n }\n startRead() {\n trace('Request to ' + this.handler.path + ' startRead called');\n if (this.checkCancelled()) {\n return;\n }\n this.isReadPending = true;\n if (this.readQueue.length === 0) {\n if (!this.receivedHalfClose) {\n this.stream.resume();\n }\n }\n else {\n this.maybePushNextMessage();\n }\n }\n getPeer() {\n var _a;\n const socket = (_a = this.stream.session) === null || _a === void 0 ? void 0 : _a.socket;\n if (socket === null || socket === void 0 ? void 0 : socket.remoteAddress) {\n if (socket.remotePort) {\n return `${socket.remoteAddress}:${socket.remotePort}`;\n }\n else {\n return socket.remoteAddress;\n }\n }\n else {\n return 'unknown';\n }\n }\n getDeadline() {\n return this.deadline;\n }\n}\nexports.BaseServerInterceptingCall = BaseServerInterceptingCall;\nfunction getServerInterceptingCall(interceptors, stream, headers, callEventTracker, handler, options) {\n const methodDefinition = {\n path: handler.path,\n requestStream: handler.type === 'clientStream' || handler.type === 'bidi',\n responseStream: handler.type === 'serverStream' || handler.type === 'bidi',\n requestDeserialize: handler.deserialize,\n responseSerialize: handler.serialize,\n };\n const baseCall = new BaseServerInterceptingCall(stream, headers, callEventTracker, handler, options);\n return interceptors.reduce((call, interceptor) => {\n return interceptor(methodDefinition, call);\n }, baseCall);\n}\nexports.getServerInterceptingCall = getServerInterceptingCall;\n//# sourceMappingURL=server-interceptors.js.map","\"use strict\";\n/*\n * Copyright 2019 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nvar __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\nvar __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Server = void 0;\nconst http2 = require(\"http2\");\nconst util = require(\"util\");\nconst constants_1 = require(\"./constants\");\nconst server_call_1 = require(\"./server-call\");\nconst server_credentials_1 = require(\"./server-credentials\");\nconst resolver_1 = require(\"./resolver\");\nconst logging = require(\"./logging\");\nconst subchannel_address_1 = require(\"./subchannel-address\");\nconst uri_parser_1 = require(\"./uri-parser\");\nconst channelz_1 = require(\"./channelz\");\nconst server_interceptors_1 = require(\"./server-interceptors\");\nconst UNLIMITED_CONNECTION_AGE_MS = ~(1 << 31);\nconst KEEPALIVE_MAX_TIME_MS = ~(1 << 31);\nconst KEEPALIVE_TIMEOUT_MS = 20000;\nconst MAX_CONNECTION_IDLE_MS = ~(1 << 31);\nconst { HTTP2_HEADER_PATH } = http2.constants;\nconst TRACER_NAME = 'server';\nconst kMaxAge = Buffer.from('max_age');\nfunction noop() { }\n/**\n * Decorator to wrap a class method with util.deprecate\n * @param message The message to output if the deprecated method is called\n * @returns\n */\nfunction deprecate(message) {\n return function (target, context) {\n return util.deprecate(target, message);\n };\n}\nfunction getUnimplementedStatusResponse(methodName) {\n return {\n code: constants_1.Status.UNIMPLEMENTED,\n details: `The server does not implement the method ${methodName}`,\n };\n}\nfunction getDefaultHandler(handlerType, methodName) {\n const unimplementedStatusResponse = getUnimplementedStatusResponse(methodName);\n switch (handlerType) {\n case 'unary':\n return (call, callback) => {\n callback(unimplementedStatusResponse, null);\n };\n case 'clientStream':\n return (call, callback) => {\n callback(unimplementedStatusResponse, null);\n };\n case 'serverStream':\n return (call) => {\n call.emit('error', unimplementedStatusResponse);\n };\n case 'bidi':\n return (call) => {\n call.emit('error', unimplementedStatusResponse);\n };\n default:\n throw new Error(`Invalid handlerType ${handlerType}`);\n }\n}\nlet Server = (() => {\n var _a;\n let _instanceExtraInitializers = [];\n let _start_decorators;\n return _a = class Server {\n constructor(options) {\n var _b, _c, _d, _e, _f, _g;\n this.boundPorts = (__runInitializers(this, _instanceExtraInitializers), new Map());\n this.http2Servers = new Map();\n this.sessionIdleTimeouts = new Map();\n this.handlers = new Map();\n this.sessions = new Map();\n /**\n * This field only exists to ensure that the start method throws an error if\n * it is called twice, as it did previously.\n */\n this.started = false;\n this.shutdown = false;\n this.serverAddressString = 'null';\n // Channelz Info\n this.channelzEnabled = true;\n this.options = options !== null && options !== void 0 ? options : {};\n if (this.options['grpc.enable_channelz'] === 0) {\n this.channelzEnabled = false;\n this.channelzTrace = new channelz_1.ChannelzTraceStub();\n this.callTracker = new channelz_1.ChannelzCallTrackerStub();\n this.listenerChildrenTracker = new channelz_1.ChannelzChildrenTrackerStub();\n this.sessionChildrenTracker = new channelz_1.ChannelzChildrenTrackerStub();\n }\n else {\n this.channelzTrace = new channelz_1.ChannelzTrace();\n this.callTracker = new channelz_1.ChannelzCallTracker();\n this.listenerChildrenTracker = new channelz_1.ChannelzChildrenTracker();\n this.sessionChildrenTracker = new channelz_1.ChannelzChildrenTracker();\n }\n this.channelzRef = (0, channelz_1.registerChannelzServer)('server', () => this.getChannelzInfo(), this.channelzEnabled);\n this.channelzTrace.addTrace('CT_INFO', 'Server created');\n this.maxConnectionAgeMs =\n (_b = this.options['grpc.max_connection_age_ms']) !== null && _b !== void 0 ? _b : UNLIMITED_CONNECTION_AGE_MS;\n this.maxConnectionAgeGraceMs =\n (_c = this.options['grpc.max_connection_age_grace_ms']) !== null && _c !== void 0 ? _c : UNLIMITED_CONNECTION_AGE_MS;\n this.keepaliveTimeMs =\n (_d = this.options['grpc.keepalive_time_ms']) !== null && _d !== void 0 ? _d : KEEPALIVE_MAX_TIME_MS;\n this.keepaliveTimeoutMs =\n (_e = this.options['grpc.keepalive_timeout_ms']) !== null && _e !== void 0 ? _e : KEEPALIVE_TIMEOUT_MS;\n this.sessionIdleTimeout =\n (_f = this.options['grpc.max_connection_idle_ms']) !== null && _f !== void 0 ? _f : MAX_CONNECTION_IDLE_MS;\n this.commonServerOptions = {\n maxSendHeaderBlockLength: Number.MAX_SAFE_INTEGER,\n };\n if ('grpc-node.max_session_memory' in this.options) {\n this.commonServerOptions.maxSessionMemory =\n this.options['grpc-node.max_session_memory'];\n }\n else {\n /* By default, set a very large max session memory limit, to effectively\n * disable enforcement of the limit. Some testing indicates that Node's\n * behavior degrades badly when this limit is reached, so we solve that\n * by disabling the check entirely. */\n this.commonServerOptions.maxSessionMemory = Number.MAX_SAFE_INTEGER;\n }\n if ('grpc.max_concurrent_streams' in this.options) {\n this.commonServerOptions.settings = {\n maxConcurrentStreams: this.options['grpc.max_concurrent_streams'],\n };\n }\n this.interceptors = (_g = this.options.interceptors) !== null && _g !== void 0 ? _g : [];\n this.trace('Server constructed');\n }\n getChannelzInfo() {\n return {\n trace: this.channelzTrace,\n callTracker: this.callTracker,\n listenerChildren: this.listenerChildrenTracker.getChildLists(),\n sessionChildren: this.sessionChildrenTracker.getChildLists(),\n };\n }\n getChannelzSessionInfo(session) {\n var _b, _c, _d;\n const sessionInfo = this.sessions.get(session);\n const sessionSocket = session.socket;\n const remoteAddress = sessionSocket.remoteAddress\n ? (0, subchannel_address_1.stringToSubchannelAddress)(sessionSocket.remoteAddress, sessionSocket.remotePort)\n : null;\n const localAddress = sessionSocket.localAddress\n ? (0, subchannel_address_1.stringToSubchannelAddress)(sessionSocket.localAddress, sessionSocket.localPort)\n : null;\n let tlsInfo;\n if (session.encrypted) {\n const tlsSocket = sessionSocket;\n const cipherInfo = tlsSocket.getCipher();\n const certificate = tlsSocket.getCertificate();\n const peerCertificate = tlsSocket.getPeerCertificate();\n tlsInfo = {\n cipherSuiteStandardName: (_b = cipherInfo.standardName) !== null && _b !== void 0 ? _b : null,\n cipherSuiteOtherName: cipherInfo.standardName ? null : cipherInfo.name,\n localCertificate: certificate && 'raw' in certificate ? certificate.raw : null,\n remoteCertificate: peerCertificate && 'raw' in peerCertificate\n ? peerCertificate.raw\n : null,\n };\n }\n else {\n tlsInfo = null;\n }\n const socketInfo = {\n remoteAddress: remoteAddress,\n localAddress: localAddress,\n security: tlsInfo,\n remoteName: null,\n streamsStarted: sessionInfo.streamTracker.callsStarted,\n streamsSucceeded: sessionInfo.streamTracker.callsSucceeded,\n streamsFailed: sessionInfo.streamTracker.callsFailed,\n messagesSent: sessionInfo.messagesSent,\n messagesReceived: sessionInfo.messagesReceived,\n keepAlivesSent: sessionInfo.keepAlivesSent,\n lastLocalStreamCreatedTimestamp: null,\n lastRemoteStreamCreatedTimestamp: sessionInfo.streamTracker.lastCallStartedTimestamp,\n lastMessageSentTimestamp: sessionInfo.lastMessageSentTimestamp,\n lastMessageReceivedTimestamp: sessionInfo.lastMessageReceivedTimestamp,\n localFlowControlWindow: (_c = session.state.localWindowSize) !== null && _c !== void 0 ? _c : null,\n remoteFlowControlWindow: (_d = session.state.remoteWindowSize) !== null && _d !== void 0 ? _d : null,\n };\n return socketInfo;\n }\n trace(text) {\n logging.trace(constants_1.LogVerbosity.DEBUG, TRACER_NAME, '(' + this.channelzRef.id + ') ' + text);\n }\n addProtoService() {\n throw new Error('Not implemented. Use addService() instead');\n }\n addService(service, implementation) {\n if (service === null ||\n typeof service !== 'object' ||\n implementation === null ||\n typeof implementation !== 'object') {\n throw new Error('addService() requires two objects as arguments');\n }\n const serviceKeys = Object.keys(service);\n if (serviceKeys.length === 0) {\n throw new Error('Cannot add an empty service to a server');\n }\n serviceKeys.forEach(name => {\n const attrs = service[name];\n let methodType;\n if (attrs.requestStream) {\n if (attrs.responseStream) {\n methodType = 'bidi';\n }\n else {\n methodType = 'clientStream';\n }\n }\n else {\n if (attrs.responseStream) {\n methodType = 'serverStream';\n }\n else {\n methodType = 'unary';\n }\n }\n let implFn = implementation[name];\n let impl;\n if (implFn === undefined && typeof attrs.originalName === 'string') {\n implFn = implementation[attrs.originalName];\n }\n if (implFn !== undefined) {\n impl = implFn.bind(implementation);\n }\n else {\n impl = getDefaultHandler(methodType, name);\n }\n const success = this.register(attrs.path, impl, attrs.responseSerialize, attrs.requestDeserialize, methodType);\n if (success === false) {\n throw new Error(`Method handler for ${attrs.path} already provided.`);\n }\n });\n }\n removeService(service) {\n if (service === null || typeof service !== 'object') {\n throw new Error('removeService() requires object as argument');\n }\n const serviceKeys = Object.keys(service);\n serviceKeys.forEach(name => {\n const attrs = service[name];\n this.unregister(attrs.path);\n });\n }\n bind(port, creds) {\n throw new Error('Not implemented. Use bindAsync() instead');\n }\n registerListenerToChannelz(boundAddress) {\n return (0, channelz_1.registerChannelzSocket)((0, subchannel_address_1.subchannelAddressToString)(boundAddress), () => {\n return {\n localAddress: boundAddress,\n remoteAddress: null,\n security: null,\n remoteName: null,\n streamsStarted: 0,\n streamsSucceeded: 0,\n streamsFailed: 0,\n messagesSent: 0,\n messagesReceived: 0,\n keepAlivesSent: 0,\n lastLocalStreamCreatedTimestamp: null,\n lastRemoteStreamCreatedTimestamp: null,\n lastMessageSentTimestamp: null,\n lastMessageReceivedTimestamp: null,\n localFlowControlWindow: null,\n remoteFlowControlWindow: null,\n };\n }, this.channelzEnabled);\n }\n createHttp2Server(credentials) {\n let http2Server;\n if (credentials._isSecure()) {\n const secureServerOptions = Object.assign(this.commonServerOptions, credentials._getSettings());\n secureServerOptions.enableTrace =\n this.options['grpc-node.tls_enable_trace'] === 1;\n http2Server = http2.createSecureServer(secureServerOptions);\n http2Server.on('secureConnection', (socket) => {\n /* These errors need to be handled by the user of Http2SecureServer,\n * according to https://github.com/nodejs/node/issues/35824 */\n socket.on('error', (e) => {\n this.trace('An incoming TLS connection closed with error: ' + e.message);\n });\n });\n }\n else {\n http2Server = http2.createServer(this.commonServerOptions);\n }\n http2Server.setTimeout(0, noop);\n this._setupHandlers(http2Server);\n return http2Server;\n }\n bindOneAddress(address, boundPortObject) {\n this.trace('Attempting to bind ' + (0, subchannel_address_1.subchannelAddressToString)(address));\n const http2Server = this.createHttp2Server(boundPortObject.credentials);\n return new Promise((resolve, reject) => {\n const onError = (err) => {\n this.trace('Failed to bind ' +\n (0, subchannel_address_1.subchannelAddressToString)(address) +\n ' with error ' +\n err.message);\n resolve({\n port: 'port' in address ? address.port : 1,\n error: err.message,\n });\n };\n http2Server.once('error', onError);\n http2Server.listen(address, () => {\n const boundAddress = http2Server.address();\n let boundSubchannelAddress;\n if (typeof boundAddress === 'string') {\n boundSubchannelAddress = {\n path: boundAddress,\n };\n }\n else {\n boundSubchannelAddress = {\n host: boundAddress.address,\n port: boundAddress.port,\n };\n }\n const channelzRef = this.registerListenerToChannelz(boundSubchannelAddress);\n this.listenerChildrenTracker.refChild(channelzRef);\n this.http2Servers.set(http2Server, {\n channelzRef: channelzRef,\n sessions: new Set(),\n });\n boundPortObject.listeningServers.add(http2Server);\n this.trace('Successfully bound ' +\n (0, subchannel_address_1.subchannelAddressToString)(boundSubchannelAddress));\n resolve({\n port: 'port' in boundSubchannelAddress ? boundSubchannelAddress.port : 1,\n });\n http2Server.removeListener('error', onError);\n });\n });\n }\n async bindManyPorts(addressList, boundPortObject) {\n if (addressList.length === 0) {\n return {\n count: 0,\n port: 0,\n errors: [],\n };\n }\n if ((0, subchannel_address_1.isTcpSubchannelAddress)(addressList[0]) && addressList[0].port === 0) {\n /* If binding to port 0, first try to bind the first address, then bind\n * the rest of the address list to the specific port that it binds. */\n const firstAddressResult = await this.bindOneAddress(addressList[0], boundPortObject);\n if (firstAddressResult.error) {\n /* If the first address fails to bind, try the same operation starting\n * from the second item in the list. */\n const restAddressResult = await this.bindManyPorts(addressList.slice(1), boundPortObject);\n return Object.assign(Object.assign({}, restAddressResult), { errors: [firstAddressResult.error, ...restAddressResult.errors] });\n }\n else {\n const restAddresses = addressList\n .slice(1)\n .map(address => (0, subchannel_address_1.isTcpSubchannelAddress)(address)\n ? { host: address.host, port: firstAddressResult.port }\n : address);\n const restAddressResult = await Promise.all(restAddresses.map(address => this.bindOneAddress(address, boundPortObject)));\n const allResults = [firstAddressResult, ...restAddressResult];\n return {\n count: allResults.filter(result => result.error === undefined).length,\n port: firstAddressResult.port,\n errors: allResults\n .filter(result => result.error)\n .map(result => result.error),\n };\n }\n }\n else {\n const allResults = await Promise.all(addressList.map(address => this.bindOneAddress(address, boundPortObject)));\n return {\n count: allResults.filter(result => result.error === undefined).length,\n port: allResults[0].port,\n errors: allResults\n .filter(result => result.error)\n .map(result => result.error),\n };\n }\n }\n async bindAddressList(addressList, boundPortObject) {\n const bindResult = await this.bindManyPorts(addressList, boundPortObject);\n if (bindResult.count > 0) {\n if (bindResult.count < addressList.length) {\n logging.log(constants_1.LogVerbosity.INFO, `WARNING Only ${bindResult.count} addresses added out of total ${addressList.length} resolved`);\n }\n return bindResult.port;\n }\n else {\n const errorString = `No address added out of total ${addressList.length} resolved`;\n logging.log(constants_1.LogVerbosity.ERROR, errorString);\n throw new Error(`${errorString} errors: [${bindResult.errors.join(',')}]`);\n }\n }\n resolvePort(port) {\n return new Promise((resolve, reject) => {\n const resolverListener = {\n onSuccessfulResolution: (endpointList, serviceConfig, serviceConfigError) => {\n // We only want one resolution result. Discard all future results\n resolverListener.onSuccessfulResolution = () => { };\n const addressList = [].concat(...endpointList.map(endpoint => endpoint.addresses));\n if (addressList.length === 0) {\n reject(new Error(`No addresses resolved for port ${port}`));\n return;\n }\n resolve(addressList);\n },\n onError: error => {\n reject(new Error(error.details));\n },\n };\n const resolver = (0, resolver_1.createResolver)(port, resolverListener, this.options);\n resolver.updateResolution();\n });\n }\n async bindPort(port, boundPortObject) {\n const addressList = await this.resolvePort(port);\n if (boundPortObject.cancelled) {\n this.completeUnbind(boundPortObject);\n throw new Error('bindAsync operation cancelled by unbind call');\n }\n const portNumber = await this.bindAddressList(addressList, boundPortObject);\n if (boundPortObject.cancelled) {\n this.completeUnbind(boundPortObject);\n throw new Error('bindAsync operation cancelled by unbind call');\n }\n return portNumber;\n }\n normalizePort(port) {\n const initialPortUri = (0, uri_parser_1.parseUri)(port);\n if (initialPortUri === null) {\n throw new Error(`Could not parse port \"${port}\"`);\n }\n const portUri = (0, resolver_1.mapUriDefaultScheme)(initialPortUri);\n if (portUri === null) {\n throw new Error(`Could not get a default scheme for port \"${port}\"`);\n }\n return portUri;\n }\n bindAsync(port, creds, callback) {\n if (this.shutdown) {\n throw new Error('bindAsync called after shutdown');\n }\n if (typeof port !== 'string') {\n throw new TypeError('port must be a string');\n }\n if (creds === null || !(creds instanceof server_credentials_1.ServerCredentials)) {\n throw new TypeError('creds must be a ServerCredentials object');\n }\n if (typeof callback !== 'function') {\n throw new TypeError('callback must be a function');\n }\n this.trace('bindAsync port=' + port);\n const portUri = this.normalizePort(port);\n const deferredCallback = (error, port) => {\n process.nextTick(() => callback(error, port));\n };\n /* First, if this port is already bound or that bind operation is in\n * progress, use that result. */\n let boundPortObject = this.boundPorts.get((0, uri_parser_1.uriToString)(portUri));\n if (boundPortObject) {\n if (!creds._equals(boundPortObject.credentials)) {\n deferredCallback(new Error(`${port} already bound with incompatible credentials`), 0);\n return;\n }\n /* If that operation has previously been cancelled by an unbind call,\n * uncancel it. */\n boundPortObject.cancelled = false;\n if (boundPortObject.completionPromise) {\n boundPortObject.completionPromise.then(portNum => callback(null, portNum), error => callback(error, 0));\n }\n else {\n deferredCallback(null, boundPortObject.portNumber);\n }\n return;\n }\n boundPortObject = {\n mapKey: (0, uri_parser_1.uriToString)(portUri),\n originalUri: portUri,\n completionPromise: null,\n cancelled: false,\n portNumber: 0,\n credentials: creds,\n listeningServers: new Set(),\n };\n const splitPort = (0, uri_parser_1.splitHostPort)(portUri.path);\n const completionPromise = this.bindPort(portUri, boundPortObject);\n boundPortObject.completionPromise = completionPromise;\n /* If the port number is 0, defer populating the map entry until after the\n * bind operation completes and we have a specific port number. Otherwise,\n * populate it immediately. */\n if ((splitPort === null || splitPort === void 0 ? void 0 : splitPort.port) === 0) {\n completionPromise.then(portNum => {\n const finalUri = {\n scheme: portUri.scheme,\n authority: portUri.authority,\n path: (0, uri_parser_1.combineHostPort)({ host: splitPort.host, port: portNum }),\n };\n boundPortObject.mapKey = (0, uri_parser_1.uriToString)(finalUri);\n boundPortObject.completionPromise = null;\n boundPortObject.portNumber = portNum;\n this.boundPorts.set(boundPortObject.mapKey, boundPortObject);\n callback(null, portNum);\n }, error => {\n callback(error, 0);\n });\n }\n else {\n this.boundPorts.set(boundPortObject.mapKey, boundPortObject);\n completionPromise.then(portNum => {\n boundPortObject.completionPromise = null;\n boundPortObject.portNumber = portNum;\n callback(null, portNum);\n }, error => {\n callback(error, 0);\n });\n }\n }\n closeServer(server, callback) {\n this.trace('Closing server with address ' + JSON.stringify(server.address()));\n const serverInfo = this.http2Servers.get(server);\n server.close(() => {\n if (serverInfo) {\n this.listenerChildrenTracker.unrefChild(serverInfo.channelzRef);\n (0, channelz_1.unregisterChannelzRef)(serverInfo.channelzRef);\n }\n this.http2Servers.delete(server);\n callback === null || callback === void 0 ? void 0 : callback();\n });\n }\n closeSession(session, callback) {\n var _b;\n this.trace('Closing session initiated by ' + ((_b = session.socket) === null || _b === void 0 ? void 0 : _b.remoteAddress));\n const sessionInfo = this.sessions.get(session);\n const closeCallback = () => {\n if (sessionInfo) {\n this.sessionChildrenTracker.unrefChild(sessionInfo.ref);\n (0, channelz_1.unregisterChannelzRef)(sessionInfo.ref);\n }\n callback === null || callback === void 0 ? void 0 : callback();\n };\n if (session.closed) {\n queueMicrotask(closeCallback);\n }\n else {\n session.close(closeCallback);\n }\n }\n completeUnbind(boundPortObject) {\n for (const server of boundPortObject.listeningServers) {\n const serverInfo = this.http2Servers.get(server);\n this.closeServer(server, () => {\n boundPortObject.listeningServers.delete(server);\n });\n if (serverInfo) {\n for (const session of serverInfo.sessions) {\n this.closeSession(session);\n }\n }\n }\n this.boundPorts.delete(boundPortObject.mapKey);\n }\n /**\n * Unbind a previously bound port, or cancel an in-progress bindAsync\n * operation. If port 0 was bound, only the actual bound port can be\n * unbound. For example, if bindAsync was called with \"localhost:0\" and the\n * bound port result was 54321, it can be unbound as \"localhost:54321\".\n * @param port\n */\n unbind(port) {\n this.trace('unbind port=' + port);\n const portUri = this.normalizePort(port);\n const splitPort = (0, uri_parser_1.splitHostPort)(portUri.path);\n if ((splitPort === null || splitPort === void 0 ? void 0 : splitPort.port) === 0) {\n throw new Error('Cannot unbind port 0');\n }\n const boundPortObject = this.boundPorts.get((0, uri_parser_1.uriToString)(portUri));\n if (boundPortObject) {\n this.trace('unbinding ' +\n boundPortObject.mapKey +\n ' originally bound as ' +\n (0, uri_parser_1.uriToString)(boundPortObject.originalUri));\n /* If the bind operation is pending, the cancelled flag will trigger\n * the unbind operation later. */\n if (boundPortObject.completionPromise) {\n boundPortObject.cancelled = true;\n }\n else {\n this.completeUnbind(boundPortObject);\n }\n }\n }\n /**\n * Gracefully close all connections associated with a previously bound port.\n * After the grace time, forcefully close all remaining open connections.\n *\n * If port 0 was bound, only the actual bound port can be\n * drained. For example, if bindAsync was called with \"localhost:0\" and the\n * bound port result was 54321, it can be drained as \"localhost:54321\".\n * @param port\n * @param graceTimeMs\n * @returns\n */\n drain(port, graceTimeMs) {\n var _b, _c;\n this.trace('drain port=' + port + ' graceTimeMs=' + graceTimeMs);\n const portUri = this.normalizePort(port);\n const splitPort = (0, uri_parser_1.splitHostPort)(portUri.path);\n if ((splitPort === null || splitPort === void 0 ? void 0 : splitPort.port) === 0) {\n throw new Error('Cannot drain port 0');\n }\n const boundPortObject = this.boundPorts.get((0, uri_parser_1.uriToString)(portUri));\n if (!boundPortObject) {\n return;\n }\n const allSessions = new Set();\n for (const http2Server of boundPortObject.listeningServers) {\n const serverEntry = this.http2Servers.get(http2Server);\n if (serverEntry) {\n for (const session of serverEntry.sessions) {\n allSessions.add(session);\n this.closeSession(session, () => {\n allSessions.delete(session);\n });\n }\n }\n }\n /* After the grace time ends, send another goaway to all remaining sessions\n * with the CANCEL code. */\n (_c = (_b = setTimeout(() => {\n for (const session of allSessions) {\n session.destroy(http2.constants.NGHTTP2_CANCEL);\n }\n }, graceTimeMs)).unref) === null || _c === void 0 ? void 0 : _c.call(_b);\n }\n forceShutdown() {\n for (const boundPortObject of this.boundPorts.values()) {\n boundPortObject.cancelled = true;\n }\n this.boundPorts.clear();\n // Close the server if it is still running.\n for (const server of this.http2Servers.keys()) {\n this.closeServer(server);\n }\n // Always destroy any available sessions. It's possible that one or more\n // tryShutdown() calls are in progress. Don't wait on them to finish.\n this.sessions.forEach((channelzInfo, session) => {\n this.closeSession(session);\n // Cast NGHTTP2_CANCEL to any because TypeScript doesn't seem to\n // recognize destroy(code) as a valid signature.\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n session.destroy(http2.constants.NGHTTP2_CANCEL);\n });\n this.sessions.clear();\n (0, channelz_1.unregisterChannelzRef)(this.channelzRef);\n this.shutdown = true;\n }\n register(name, handler, serialize, deserialize, type) {\n if (this.handlers.has(name)) {\n return false;\n }\n this.handlers.set(name, {\n func: handler,\n serialize,\n deserialize,\n type,\n path: name,\n });\n return true;\n }\n unregister(name) {\n return this.handlers.delete(name);\n }\n /**\n * @deprecated No longer needed as of version 1.10.x\n */\n start() {\n if (this.http2Servers.size === 0 ||\n [...this.http2Servers.keys()].every(server => !server.listening)) {\n throw new Error('server must be bound in order to start');\n }\n if (this.started === true) {\n throw new Error('server is already started');\n }\n this.started = true;\n }\n tryShutdown(callback) {\n var _b;\n const wrappedCallback = (error) => {\n (0, channelz_1.unregisterChannelzRef)(this.channelzRef);\n callback(error);\n };\n let pendingChecks = 0;\n function maybeCallback() {\n pendingChecks--;\n if (pendingChecks === 0) {\n wrappedCallback();\n }\n }\n this.shutdown = true;\n for (const [serverKey, server] of this.http2Servers.entries()) {\n pendingChecks++;\n const serverString = server.channelzRef.name;\n this.trace('Waiting for server ' + serverString + ' to close');\n this.closeServer(serverKey, () => {\n this.trace('Server ' + serverString + ' finished closing');\n maybeCallback();\n });\n for (const session of server.sessions.keys()) {\n pendingChecks++;\n const sessionString = (_b = session.socket) === null || _b === void 0 ? void 0 : _b.remoteAddress;\n this.trace('Waiting for session ' + sessionString + ' to close');\n this.closeSession(session, () => {\n this.trace('Session ' + sessionString + ' finished closing');\n maybeCallback();\n });\n }\n }\n if (pendingChecks === 0) {\n wrappedCallback();\n }\n }\n addHttp2Port() {\n throw new Error('Not yet implemented');\n }\n /**\n * Get the channelz reference object for this server. The returned value is\n * garbage if channelz is disabled for this server.\n * @returns\n */\n getChannelzRef() {\n return this.channelzRef;\n }\n _verifyContentType(stream, headers) {\n const contentType = headers[http2.constants.HTTP2_HEADER_CONTENT_TYPE];\n if (typeof contentType !== 'string' ||\n !contentType.startsWith('application/grpc')) {\n stream.respond({\n [http2.constants.HTTP2_HEADER_STATUS]: http2.constants.HTTP_STATUS_UNSUPPORTED_MEDIA_TYPE,\n }, { endStream: true });\n return false;\n }\n return true;\n }\n _retrieveHandler(path) {\n this.trace('Received call to method ' +\n path +\n ' at address ' +\n this.serverAddressString);\n const handler = this.handlers.get(path);\n if (handler === undefined) {\n this.trace('No handler registered for method ' +\n path +\n '. Sending UNIMPLEMENTED status.');\n return null;\n }\n return handler;\n }\n _respondWithError(err, stream, channelzSessionInfo = null) {\n var _b, _c;\n const trailersToSend = Object.assign({ 'grpc-status': (_b = err.code) !== null && _b !== void 0 ? _b : constants_1.Status.INTERNAL, 'grpc-message': err.details, [http2.constants.HTTP2_HEADER_STATUS]: http2.constants.HTTP_STATUS_OK, [http2.constants.HTTP2_HEADER_CONTENT_TYPE]: 'application/grpc+proto' }, (_c = err.metadata) === null || _c === void 0 ? void 0 : _c.toHttp2Headers());\n stream.respond(trailersToSend, { endStream: true });\n this.callTracker.addCallFailed();\n channelzSessionInfo === null || channelzSessionInfo === void 0 ? void 0 : channelzSessionInfo.streamTracker.addCallFailed();\n }\n _channelzHandler(stream, headers) {\n // for handling idle timeout\n this.onStreamOpened(stream);\n const channelzSessionInfo = this.sessions.get(stream.session);\n this.callTracker.addCallStarted();\n channelzSessionInfo === null || channelzSessionInfo === void 0 ? void 0 : channelzSessionInfo.streamTracker.addCallStarted();\n if (!this._verifyContentType(stream, headers)) {\n this.callTracker.addCallFailed();\n channelzSessionInfo === null || channelzSessionInfo === void 0 ? void 0 : channelzSessionInfo.streamTracker.addCallFailed();\n return;\n }\n const path = headers[HTTP2_HEADER_PATH];\n const handler = this._retrieveHandler(path);\n if (!handler) {\n this._respondWithError(getUnimplementedStatusResponse(path), stream, channelzSessionInfo);\n return;\n }\n const callEventTracker = {\n addMessageSent: () => {\n if (channelzSessionInfo) {\n channelzSessionInfo.messagesSent += 1;\n channelzSessionInfo.lastMessageSentTimestamp = new Date();\n }\n },\n addMessageReceived: () => {\n if (channelzSessionInfo) {\n channelzSessionInfo.messagesReceived += 1;\n channelzSessionInfo.lastMessageReceivedTimestamp = new Date();\n }\n },\n onCallEnd: status => {\n if (status.code === constants_1.Status.OK) {\n this.callTracker.addCallSucceeded();\n }\n else {\n this.callTracker.addCallFailed();\n }\n },\n onStreamEnd: success => {\n if (channelzSessionInfo) {\n if (success) {\n channelzSessionInfo.streamTracker.addCallSucceeded();\n }\n else {\n channelzSessionInfo.streamTracker.addCallFailed();\n }\n }\n },\n };\n const call = (0, server_interceptors_1.getServerInterceptingCall)(this.interceptors, stream, headers, callEventTracker, handler, this.options);\n if (!this._runHandlerForCall(call, handler)) {\n this.callTracker.addCallFailed();\n channelzSessionInfo === null || channelzSessionInfo === void 0 ? void 0 : channelzSessionInfo.streamTracker.addCallFailed();\n call.sendStatus({\n code: constants_1.Status.INTERNAL,\n details: `Unknown handler type: ${handler.type}`,\n });\n }\n }\n _streamHandler(stream, headers) {\n // for handling idle timeout\n this.onStreamOpened(stream);\n if (this._verifyContentType(stream, headers) !== true) {\n return;\n }\n const path = headers[HTTP2_HEADER_PATH];\n const handler = this._retrieveHandler(path);\n if (!handler) {\n this._respondWithError(getUnimplementedStatusResponse(path), stream, null);\n return;\n }\n const call = (0, server_interceptors_1.getServerInterceptingCall)(this.interceptors, stream, headers, null, handler, this.options);\n if (!this._runHandlerForCall(call, handler)) {\n call.sendStatus({\n code: constants_1.Status.INTERNAL,\n details: `Unknown handler type: ${handler.type}`,\n });\n }\n }\n _runHandlerForCall(call, handler) {\n const { type } = handler;\n if (type === 'unary') {\n handleUnary(call, handler);\n }\n else if (type === 'clientStream') {\n handleClientStreaming(call, handler);\n }\n else if (type === 'serverStream') {\n handleServerStreaming(call, handler);\n }\n else if (type === 'bidi') {\n handleBidiStreaming(call, handler);\n }\n else {\n return false;\n }\n return true;\n }\n _setupHandlers(http2Server) {\n if (http2Server === null) {\n return;\n }\n const serverAddress = http2Server.address();\n let serverAddressString = 'null';\n if (serverAddress) {\n if (typeof serverAddress === 'string') {\n serverAddressString = serverAddress;\n }\n else {\n serverAddressString = serverAddress.address + ':' + serverAddress.port;\n }\n }\n this.serverAddressString = serverAddressString;\n const handler = this.channelzEnabled\n ? this._channelzHandler\n : this._streamHandler;\n const sessionHandler = this.channelzEnabled\n ? this._channelzSessionHandler(http2Server)\n : this._sessionHandler(http2Server);\n http2Server.on('stream', handler.bind(this));\n http2Server.on('session', sessionHandler);\n }\n _sessionHandler(http2Server) {\n return (session) => {\n var _b, _c, _d;\n (_b = this.http2Servers.get(http2Server)) === null || _b === void 0 ? void 0 : _b.sessions.add(session);\n let connectionAgeTimer = null;\n let connectionAgeGraceTimer = null;\n let keeapliveTimeTimer = null;\n let keepaliveTimeoutTimer = null;\n let sessionClosedByServer = false;\n const idleTimeoutObj = this.enableIdleTimeout(session);\n if (this.maxConnectionAgeMs !== UNLIMITED_CONNECTION_AGE_MS) {\n // Apply a random jitter within a +/-10% range\n const jitterMagnitude = this.maxConnectionAgeMs / 10;\n const jitter = Math.random() * jitterMagnitude * 2 - jitterMagnitude;\n connectionAgeTimer = setTimeout(() => {\n var _b, _c;\n sessionClosedByServer = true;\n this.trace('Connection dropped by max connection age: ' +\n ((_b = session.socket) === null || _b === void 0 ? void 0 : _b.remoteAddress));\n try {\n session.goaway(http2.constants.NGHTTP2_NO_ERROR, ~(1 << 31), kMaxAge);\n }\n catch (e) {\n // The goaway can't be sent because the session is already closed\n session.destroy();\n return;\n }\n session.close();\n /* Allow a grace period after sending the GOAWAY before forcibly\n * closing the connection. */\n if (this.maxConnectionAgeGraceMs !== UNLIMITED_CONNECTION_AGE_MS) {\n connectionAgeGraceTimer = setTimeout(() => {\n session.destroy();\n }, this.maxConnectionAgeGraceMs);\n (_c = connectionAgeGraceTimer.unref) === null || _c === void 0 ? void 0 : _c.call(connectionAgeGraceTimer);\n }\n }, this.maxConnectionAgeMs + jitter);\n (_c = connectionAgeTimer.unref) === null || _c === void 0 ? void 0 : _c.call(connectionAgeTimer);\n }\n if (this.keepaliveTimeMs < KEEPALIVE_MAX_TIME_MS) {\n keeapliveTimeTimer = setInterval(() => {\n var _b;\n keepaliveTimeoutTimer = setTimeout(() => {\n sessionClosedByServer = true;\n session.close();\n }, this.keepaliveTimeoutMs);\n (_b = keepaliveTimeoutTimer.unref) === null || _b === void 0 ? void 0 : _b.call(keepaliveTimeoutTimer);\n try {\n session.ping((err, duration, payload) => {\n if (keepaliveTimeoutTimer) {\n clearTimeout(keepaliveTimeoutTimer);\n }\n if (err) {\n sessionClosedByServer = true;\n this.trace('Connection dropped due to error of a ping frame ' +\n err.message +\n ' return in ' +\n duration);\n session.close();\n }\n });\n }\n catch (e) {\n clearTimeout(keepaliveTimeoutTimer);\n // The ping can't be sent because the session is already closed\n session.destroy();\n }\n }, this.keepaliveTimeMs);\n (_d = keeapliveTimeTimer.unref) === null || _d === void 0 ? void 0 : _d.call(keeapliveTimeTimer);\n }\n session.on('close', () => {\n var _b, _c;\n if (!sessionClosedByServer) {\n this.trace(`Connection dropped by client ${(_b = session.socket) === null || _b === void 0 ? void 0 : _b.remoteAddress}`);\n }\n if (connectionAgeTimer) {\n clearTimeout(connectionAgeTimer);\n }\n if (connectionAgeGraceTimer) {\n clearTimeout(connectionAgeGraceTimer);\n }\n if (keeapliveTimeTimer) {\n clearInterval(keeapliveTimeTimer);\n if (keepaliveTimeoutTimer) {\n clearTimeout(keepaliveTimeoutTimer);\n }\n }\n if (idleTimeoutObj !== null) {\n clearTimeout(idleTimeoutObj.timeout);\n this.sessionIdleTimeouts.delete(session);\n }\n (_c = this.http2Servers.get(http2Server)) === null || _c === void 0 ? void 0 : _c.sessions.delete(session);\n });\n };\n }\n _channelzSessionHandler(http2Server) {\n return (session) => {\n var _b, _c, _d, _e, _f;\n const channelzRef = (0, channelz_1.registerChannelzSocket)((_c = (_b = session.socket) === null || _b === void 0 ? void 0 : _b.remoteAddress) !== null && _c !== void 0 ? _c : 'unknown', this.getChannelzSessionInfo.bind(this, session), this.channelzEnabled);\n const channelzSessionInfo = {\n ref: channelzRef,\n streamTracker: new channelz_1.ChannelzCallTracker(),\n messagesSent: 0,\n messagesReceived: 0,\n keepAlivesSent: 0,\n lastMessageSentTimestamp: null,\n lastMessageReceivedTimestamp: null,\n };\n (_d = this.http2Servers.get(http2Server)) === null || _d === void 0 ? void 0 : _d.sessions.add(session);\n this.sessions.set(session, channelzSessionInfo);\n const clientAddress = `${session.socket.remoteAddress}:${session.socket.remotePort}`;\n this.channelzTrace.addTrace('CT_INFO', 'Connection established by client ' + clientAddress);\n this.trace('Connection established by client ' + clientAddress);\n this.sessionChildrenTracker.refChild(channelzRef);\n let connectionAgeTimer = null;\n let connectionAgeGraceTimer = null;\n let keeapliveTimeTimer = null;\n let keepaliveTimeoutTimer = null;\n let sessionClosedByServer = false;\n const idleTimeoutObj = this.enableIdleTimeout(session);\n if (this.maxConnectionAgeMs !== UNLIMITED_CONNECTION_AGE_MS) {\n // Apply a random jitter within a +/-10% range\n const jitterMagnitude = this.maxConnectionAgeMs / 10;\n const jitter = Math.random() * jitterMagnitude * 2 - jitterMagnitude;\n connectionAgeTimer = setTimeout(() => {\n var _b;\n sessionClosedByServer = true;\n this.channelzTrace.addTrace('CT_INFO', 'Connection dropped by max connection age from ' + clientAddress);\n try {\n session.goaway(http2.constants.NGHTTP2_NO_ERROR, ~(1 << 31), kMaxAge);\n }\n catch (e) {\n // The goaway can't be sent because the session is already closed\n session.destroy();\n return;\n }\n session.close();\n /* Allow a grace period after sending the GOAWAY before forcibly\n * closing the connection. */\n if (this.maxConnectionAgeGraceMs !== UNLIMITED_CONNECTION_AGE_MS) {\n connectionAgeGraceTimer = setTimeout(() => {\n session.destroy();\n }, this.maxConnectionAgeGraceMs);\n (_b = connectionAgeGraceTimer.unref) === null || _b === void 0 ? void 0 : _b.call(connectionAgeGraceTimer);\n }\n }, this.maxConnectionAgeMs + jitter);\n (_e = connectionAgeTimer.unref) === null || _e === void 0 ? void 0 : _e.call(connectionAgeTimer);\n }\n if (this.keepaliveTimeMs < KEEPALIVE_MAX_TIME_MS) {\n keeapliveTimeTimer = setInterval(() => {\n var _b;\n keepaliveTimeoutTimer = setTimeout(() => {\n sessionClosedByServer = true;\n this.channelzTrace.addTrace('CT_INFO', 'Connection dropped by keepalive timeout from ' + clientAddress);\n session.close();\n }, this.keepaliveTimeoutMs);\n (_b = keepaliveTimeoutTimer.unref) === null || _b === void 0 ? void 0 : _b.call(keepaliveTimeoutTimer);\n try {\n session.ping((err, duration, payload) => {\n if (keepaliveTimeoutTimer) {\n clearTimeout(keepaliveTimeoutTimer);\n }\n if (err) {\n sessionClosedByServer = true;\n this.channelzTrace.addTrace('CT_INFO', 'Connection dropped due to error of a ping frame ' +\n err.message +\n ' return in ' +\n duration);\n session.close();\n }\n });\n channelzSessionInfo.keepAlivesSent += 1;\n }\n catch (e) {\n clearTimeout(keepaliveTimeoutTimer);\n // The ping can't be sent because the session is already closed\n session.destroy();\n }\n }, this.keepaliveTimeMs);\n (_f = keeapliveTimeTimer.unref) === null || _f === void 0 ? void 0 : _f.call(keeapliveTimeTimer);\n }\n session.on('close', () => {\n var _b;\n if (!sessionClosedByServer) {\n this.channelzTrace.addTrace('CT_INFO', 'Connection dropped by client ' + clientAddress);\n }\n this.sessionChildrenTracker.unrefChild(channelzRef);\n (0, channelz_1.unregisterChannelzRef)(channelzRef);\n if (connectionAgeTimer) {\n clearTimeout(connectionAgeTimer);\n }\n if (connectionAgeGraceTimer) {\n clearTimeout(connectionAgeGraceTimer);\n }\n if (keeapliveTimeTimer) {\n clearInterval(keeapliveTimeTimer);\n if (keepaliveTimeoutTimer) {\n clearTimeout(keepaliveTimeoutTimer);\n }\n }\n if (idleTimeoutObj !== null) {\n clearTimeout(idleTimeoutObj.timeout);\n this.sessionIdleTimeouts.delete(session);\n }\n (_b = this.http2Servers.get(http2Server)) === null || _b === void 0 ? void 0 : _b.sessions.delete(session);\n this.sessions.delete(session);\n });\n };\n }\n enableIdleTimeout(session) {\n var _b, _c;\n if (this.sessionIdleTimeout >= MAX_CONNECTION_IDLE_MS) {\n return null;\n }\n const idleTimeoutObj = {\n activeStreams: 0,\n lastIdle: Date.now(),\n onClose: this.onStreamClose.bind(this, session),\n timeout: setTimeout(this.onIdleTimeout, this.sessionIdleTimeout, this, session),\n };\n (_c = (_b = idleTimeoutObj.timeout).unref) === null || _c === void 0 ? void 0 : _c.call(_b);\n this.sessionIdleTimeouts.set(session, idleTimeoutObj);\n const { socket } = session;\n this.trace('Enable idle timeout for ' +\n socket.remoteAddress +\n ':' +\n socket.remotePort);\n return idleTimeoutObj;\n }\n onIdleTimeout(ctx, session) {\n const { socket } = session;\n const sessionInfo = ctx.sessionIdleTimeouts.get(session);\n // if it is called while we have activeStreams - timer will not be rescheduled\n // until last active stream is closed, then it will call .refresh() on the timer\n // important part is to not clearTimeout(timer) or it becomes unusable\n // for future refreshes\n if (sessionInfo !== undefined &&\n sessionInfo.activeStreams === 0 &&\n Date.now() - sessionInfo.lastIdle >= ctx.sessionIdleTimeout) {\n ctx.trace('Session idle timeout triggered for ' +\n (socket === null || socket === void 0 ? void 0 : socket.remoteAddress) +\n ':' +\n (socket === null || socket === void 0 ? void 0 : socket.remotePort) +\n ' last idle at ' +\n sessionInfo.lastIdle);\n ctx.closeSession(session);\n }\n }\n onStreamOpened(stream) {\n const session = stream.session;\n const idleTimeoutObj = this.sessionIdleTimeouts.get(session);\n if (idleTimeoutObj) {\n idleTimeoutObj.activeStreams += 1;\n stream.once('close', idleTimeoutObj.onClose);\n }\n }\n onStreamClose(session) {\n var _b, _c;\n const idleTimeoutObj = this.sessionIdleTimeouts.get(session);\n if (idleTimeoutObj) {\n idleTimeoutObj.activeStreams -= 1;\n if (idleTimeoutObj.activeStreams === 0) {\n idleTimeoutObj.lastIdle = Date.now();\n idleTimeoutObj.timeout.refresh();\n this.trace('Session onStreamClose' +\n ((_b = session.socket) === null || _b === void 0 ? void 0 : _b.remoteAddress) +\n ':' +\n ((_c = session.socket) === null || _c === void 0 ? void 0 : _c.remotePort) +\n ' at ' +\n idleTimeoutObj.lastIdle);\n }\n }\n }\n },\n (() => {\n const _metadata = typeof Symbol === \"function\" && Symbol.metadata ? Object.create(null) : void 0;\n _start_decorators = [deprecate('Calling start() is no longer necessary. It can be safely omitted.')];\n __esDecorate(_a, null, _start_decorators, { kind: \"method\", name: \"start\", static: false, private: false, access: { has: obj => \"start\" in obj, get: obj => obj.start }, metadata: _metadata }, null, _instanceExtraInitializers);\n if (_metadata) Object.defineProperty(_a, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });\n })(),\n _a;\n})();\nexports.Server = Server;\nasync function handleUnary(call, handler) {\n let stream;\n function respond(err, value, trailer, flags) {\n if (err) {\n call.sendStatus((0, server_call_1.serverErrorToStatus)(err, trailer));\n return;\n }\n call.sendMessage(value, () => {\n call.sendStatus({\n code: constants_1.Status.OK,\n details: 'OK',\n metadata: trailer !== null && trailer !== void 0 ? trailer : null,\n });\n });\n }\n let requestMetadata;\n let requestMessage = null;\n call.start({\n onReceiveMetadata(metadata) {\n requestMetadata = metadata;\n call.startRead();\n },\n onReceiveMessage(message) {\n if (requestMessage) {\n call.sendStatus({\n code: constants_1.Status.UNIMPLEMENTED,\n details: `Received a second request message for server streaming method ${handler.path}`,\n metadata: null,\n });\n return;\n }\n requestMessage = message;\n call.startRead();\n },\n onReceiveHalfClose() {\n if (!requestMessage) {\n call.sendStatus({\n code: constants_1.Status.UNIMPLEMENTED,\n details: `Received no request message for server streaming method ${handler.path}`,\n metadata: null,\n });\n return;\n }\n stream = new server_call_1.ServerWritableStreamImpl(handler.path, call, requestMetadata, requestMessage);\n try {\n handler.func(stream, respond);\n }\n catch (err) {\n call.sendStatus({\n code: constants_1.Status.UNKNOWN,\n details: `Server method handler threw error ${err.message}`,\n metadata: null,\n });\n }\n },\n onCancel() {\n if (stream) {\n stream.cancelled = true;\n stream.emit('cancelled', 'cancelled');\n }\n },\n });\n}\nfunction handleClientStreaming(call, handler) {\n let stream;\n function respond(err, value, trailer, flags) {\n if (err) {\n call.sendStatus((0, server_call_1.serverErrorToStatus)(err, trailer));\n return;\n }\n call.sendMessage(value, () => {\n call.sendStatus({\n code: constants_1.Status.OK,\n details: 'OK',\n metadata: trailer !== null && trailer !== void 0 ? trailer : null,\n });\n });\n }\n call.start({\n onReceiveMetadata(metadata) {\n stream = new server_call_1.ServerDuplexStreamImpl(handler.path, call, metadata);\n try {\n handler.func(stream, respond);\n }\n catch (err) {\n call.sendStatus({\n code: constants_1.Status.UNKNOWN,\n details: `Server method handler threw error ${err.message}`,\n metadata: null,\n });\n }\n },\n onReceiveMessage(message) {\n stream.push(message);\n },\n onReceiveHalfClose() {\n stream.push(null);\n },\n onCancel() {\n if (stream) {\n stream.cancelled = true;\n stream.emit('cancelled', 'cancelled');\n stream.destroy();\n }\n },\n });\n}\nfunction handleServerStreaming(call, handler) {\n let stream;\n let requestMetadata;\n let requestMessage = null;\n call.start({\n onReceiveMetadata(metadata) {\n requestMetadata = metadata;\n call.startRead();\n },\n onReceiveMessage(message) {\n if (requestMessage) {\n call.sendStatus({\n code: constants_1.Status.UNIMPLEMENTED,\n details: `Received a second request message for server streaming method ${handler.path}`,\n metadata: null,\n });\n return;\n }\n requestMessage = message;\n call.startRead();\n },\n onReceiveHalfClose() {\n if (!requestMessage) {\n call.sendStatus({\n code: constants_1.Status.UNIMPLEMENTED,\n details: `Received no request message for server streaming method ${handler.path}`,\n metadata: null,\n });\n return;\n }\n stream = new server_call_1.ServerWritableStreamImpl(handler.path, call, requestMetadata, requestMessage);\n try {\n handler.func(stream);\n }\n catch (err) {\n call.sendStatus({\n code: constants_1.Status.UNKNOWN,\n details: `Server method handler threw error ${err.message}`,\n metadata: null,\n });\n }\n },\n onCancel() {\n if (stream) {\n stream.cancelled = true;\n stream.emit('cancelled', 'cancelled');\n stream.destroy();\n }\n },\n });\n}\nfunction handleBidiStreaming(call, handler) {\n let stream;\n call.start({\n onReceiveMetadata(metadata) {\n stream = new server_call_1.ServerDuplexStreamImpl(handler.path, call, metadata);\n try {\n handler.func(stream);\n }\n catch (err) {\n call.sendStatus({\n code: constants_1.Status.UNKNOWN,\n details: `Server method handler threw error ${err.message}`,\n metadata: null,\n });\n }\n },\n onReceiveMessage(message) {\n stream.push(message);\n },\n onReceiveHalfClose() {\n stream.push(null);\n },\n onCancel() {\n if (stream) {\n stream.cancelled = true;\n stream.emit('cancelled', 'cancelled');\n stream.destroy();\n }\n },\n });\n}\n//# sourceMappingURL=server.js.map","\"use strict\";\n/*\n * Copyright 2019 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.extractAndSelectServiceConfig = exports.validateServiceConfig = exports.validateRetryThrottling = void 0;\n/* This file implements gRFC A2 and the service config spec:\n * https://github.com/grpc/proposal/blob/master/A2-service-configs-in-dns.md\n * https://github.com/grpc/grpc/blob/master/doc/service_config.md. Each\n * function here takes an object with unknown structure and returns its\n * specific object type if the input has the right structure, and throws an\n * error otherwise. */\n/* The any type is purposely used here. All functions validate their input at\n * runtime */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nconst os = require(\"os\");\nconst constants_1 = require(\"./constants\");\n/**\n * Recognizes a number with up to 9 digits after the decimal point, followed by\n * an \"s\", representing a number of seconds.\n */\nconst DURATION_REGEX = /^\\d+(\\.\\d{1,9})?s$/;\n/**\n * Client language name used for determining whether this client matches a\n * `ServiceConfigCanaryConfig`'s `clientLanguage` list.\n */\nconst CLIENT_LANGUAGE_STRING = 'node';\nfunction validateName(obj) {\n // In this context, and unset field and '' are considered the same\n if ('service' in obj && obj.service !== '') {\n if (typeof obj.service !== 'string') {\n throw new Error(`Invalid method config name: invalid service: expected type string, got ${typeof obj.service}`);\n }\n if ('method' in obj && obj.method !== '') {\n if (typeof obj.method !== 'string') {\n throw new Error(`Invalid method config name: invalid method: expected type string, got ${typeof obj.service}`);\n }\n return {\n service: obj.service,\n method: obj.method,\n };\n }\n else {\n return {\n service: obj.service,\n };\n }\n }\n else {\n if ('method' in obj && obj.method !== undefined) {\n throw new Error(`Invalid method config name: method set with empty or unset service`);\n }\n return {};\n }\n}\nfunction validateRetryPolicy(obj) {\n if (!('maxAttempts' in obj) ||\n !Number.isInteger(obj.maxAttempts) ||\n obj.maxAttempts < 2) {\n throw new Error('Invalid method config retry policy: maxAttempts must be an integer at least 2');\n }\n if (!('initialBackoff' in obj) ||\n typeof obj.initialBackoff !== 'string' ||\n !DURATION_REGEX.test(obj.initialBackoff)) {\n throw new Error('Invalid method config retry policy: initialBackoff must be a string consisting of a positive integer followed by s');\n }\n if (!('maxBackoff' in obj) ||\n typeof obj.maxBackoff !== 'string' ||\n !DURATION_REGEX.test(obj.maxBackoff)) {\n throw new Error('Invalid method config retry policy: maxBackoff must be a string consisting of a positive integer followed by s');\n }\n if (!('backoffMultiplier' in obj) ||\n typeof obj.backoffMultiplier !== 'number' ||\n obj.backoffMultiplier <= 0) {\n throw new Error('Invalid method config retry policy: backoffMultiplier must be a number greater than 0');\n }\n if (!('retryableStatusCodes' in obj && Array.isArray(obj.retryableStatusCodes))) {\n throw new Error('Invalid method config retry policy: retryableStatusCodes is required');\n }\n if (obj.retryableStatusCodes.length === 0) {\n throw new Error('Invalid method config retry policy: retryableStatusCodes must be non-empty');\n }\n for (const value of obj.retryableStatusCodes) {\n if (typeof value === 'number') {\n if (!Object.values(constants_1.Status).includes(value)) {\n throw new Error('Invalid method config retry policy: retryableStatusCodes value not in status code range');\n }\n }\n else if (typeof value === 'string') {\n if (!Object.values(constants_1.Status).includes(value.toUpperCase())) {\n throw new Error('Invalid method config retry policy: retryableStatusCodes value not a status code name');\n }\n }\n else {\n throw new Error('Invalid method config retry policy: retryableStatusCodes value must be a string or number');\n }\n }\n return {\n maxAttempts: obj.maxAttempts,\n initialBackoff: obj.initialBackoff,\n maxBackoff: obj.maxBackoff,\n backoffMultiplier: obj.backoffMultiplier,\n retryableStatusCodes: obj.retryableStatusCodes,\n };\n}\nfunction validateHedgingPolicy(obj) {\n if (!('maxAttempts' in obj) ||\n !Number.isInteger(obj.maxAttempts) ||\n obj.maxAttempts < 2) {\n throw new Error('Invalid method config hedging policy: maxAttempts must be an integer at least 2');\n }\n if ('hedgingDelay' in obj &&\n (typeof obj.hedgingDelay !== 'string' ||\n !DURATION_REGEX.test(obj.hedgingDelay))) {\n throw new Error('Invalid method config hedging policy: hedgingDelay must be a string consisting of a positive integer followed by s');\n }\n if ('nonFatalStatusCodes' in obj && Array.isArray(obj.nonFatalStatusCodes)) {\n for (const value of obj.nonFatalStatusCodes) {\n if (typeof value === 'number') {\n if (!Object.values(constants_1.Status).includes(value)) {\n throw new Error('Invlid method config hedging policy: nonFatalStatusCodes value not in status code range');\n }\n }\n else if (typeof value === 'string') {\n if (!Object.values(constants_1.Status).includes(value.toUpperCase())) {\n throw new Error('Invlid method config hedging policy: nonFatalStatusCodes value not a status code name');\n }\n }\n else {\n throw new Error('Invlid method config hedging policy: nonFatalStatusCodes value must be a string or number');\n }\n }\n }\n const result = {\n maxAttempts: obj.maxAttempts,\n };\n if (obj.hedgingDelay) {\n result.hedgingDelay = obj.hedgingDelay;\n }\n if (obj.nonFatalStatusCodes) {\n result.nonFatalStatusCodes = obj.nonFatalStatusCodes;\n }\n return result;\n}\nfunction validateMethodConfig(obj) {\n var _a;\n const result = {\n name: [],\n };\n if (!('name' in obj) || !Array.isArray(obj.name)) {\n throw new Error('Invalid method config: invalid name array');\n }\n for (const name of obj.name) {\n result.name.push(validateName(name));\n }\n if ('waitForReady' in obj) {\n if (typeof obj.waitForReady !== 'boolean') {\n throw new Error('Invalid method config: invalid waitForReady');\n }\n result.waitForReady = obj.waitForReady;\n }\n if ('timeout' in obj) {\n if (typeof obj.timeout === 'object') {\n if (!('seconds' in obj.timeout) ||\n !(typeof obj.timeout.seconds === 'number')) {\n throw new Error('Invalid method config: invalid timeout.seconds');\n }\n if (!('nanos' in obj.timeout) ||\n !(typeof obj.timeout.nanos === 'number')) {\n throw new Error('Invalid method config: invalid timeout.nanos');\n }\n result.timeout = obj.timeout;\n }\n else if (typeof obj.timeout === 'string' &&\n DURATION_REGEX.test(obj.timeout)) {\n const timeoutParts = obj.timeout\n .substring(0, obj.timeout.length - 1)\n .split('.');\n result.timeout = {\n seconds: timeoutParts[0] | 0,\n nanos: ((_a = timeoutParts[1]) !== null && _a !== void 0 ? _a : 0) | 0,\n };\n }\n else {\n throw new Error('Invalid method config: invalid timeout');\n }\n }\n if ('maxRequestBytes' in obj) {\n if (typeof obj.maxRequestBytes !== 'number') {\n throw new Error('Invalid method config: invalid maxRequestBytes');\n }\n result.maxRequestBytes = obj.maxRequestBytes;\n }\n if ('maxResponseBytes' in obj) {\n if (typeof obj.maxResponseBytes !== 'number') {\n throw new Error('Invalid method config: invalid maxRequestBytes');\n }\n result.maxResponseBytes = obj.maxResponseBytes;\n }\n if ('retryPolicy' in obj) {\n if ('hedgingPolicy' in obj) {\n throw new Error('Invalid method config: retryPolicy and hedgingPolicy cannot both be specified');\n }\n else {\n result.retryPolicy = validateRetryPolicy(obj.retryPolicy);\n }\n }\n else if ('hedgingPolicy' in obj) {\n result.hedgingPolicy = validateHedgingPolicy(obj.hedgingPolicy);\n }\n return result;\n}\nfunction validateRetryThrottling(obj) {\n if (!('maxTokens' in obj) ||\n typeof obj.maxTokens !== 'number' ||\n obj.maxTokens <= 0 ||\n obj.maxTokens > 1000) {\n throw new Error('Invalid retryThrottling: maxTokens must be a number in (0, 1000]');\n }\n if (!('tokenRatio' in obj) ||\n typeof obj.tokenRatio !== 'number' ||\n obj.tokenRatio <= 0) {\n throw new Error('Invalid retryThrottling: tokenRatio must be a number greater than 0');\n }\n return {\n maxTokens: +obj.maxTokens.toFixed(3),\n tokenRatio: +obj.tokenRatio.toFixed(3),\n };\n}\nexports.validateRetryThrottling = validateRetryThrottling;\nfunction validateLoadBalancingConfig(obj) {\n if (!(typeof obj === 'object' && obj !== null)) {\n throw new Error(`Invalid loadBalancingConfig: unexpected type ${typeof obj}`);\n }\n const keys = Object.keys(obj);\n if (keys.length > 1) {\n throw new Error(`Invalid loadBalancingConfig: unexpected multiple keys ${keys}`);\n }\n if (keys.length === 0) {\n throw new Error('Invalid loadBalancingConfig: load balancing policy name required');\n }\n return {\n [keys[0]]: obj[keys[0]],\n };\n}\nfunction validateServiceConfig(obj) {\n const result = {\n loadBalancingConfig: [],\n methodConfig: [],\n };\n if ('loadBalancingPolicy' in obj) {\n if (typeof obj.loadBalancingPolicy === 'string') {\n result.loadBalancingPolicy = obj.loadBalancingPolicy;\n }\n else {\n throw new Error('Invalid service config: invalid loadBalancingPolicy');\n }\n }\n if ('loadBalancingConfig' in obj) {\n if (Array.isArray(obj.loadBalancingConfig)) {\n for (const config of obj.loadBalancingConfig) {\n result.loadBalancingConfig.push(validateLoadBalancingConfig(config));\n }\n }\n else {\n throw new Error('Invalid service config: invalid loadBalancingConfig');\n }\n }\n if ('methodConfig' in obj) {\n if (Array.isArray(obj.methodConfig)) {\n for (const methodConfig of obj.methodConfig) {\n result.methodConfig.push(validateMethodConfig(methodConfig));\n }\n }\n }\n if ('retryThrottling' in obj) {\n result.retryThrottling = validateRetryThrottling(obj.retryThrottling);\n }\n // Validate method name uniqueness\n const seenMethodNames = [];\n for (const methodConfig of result.methodConfig) {\n for (const name of methodConfig.name) {\n for (const seenName of seenMethodNames) {\n if (name.service === seenName.service &&\n name.method === seenName.method) {\n throw new Error(`Invalid service config: duplicate name ${name.service}/${name.method}`);\n }\n }\n seenMethodNames.push(name);\n }\n }\n return result;\n}\nexports.validateServiceConfig = validateServiceConfig;\nfunction validateCanaryConfig(obj) {\n if (!('serviceConfig' in obj)) {\n throw new Error('Invalid service config choice: missing service config');\n }\n const result = {\n serviceConfig: validateServiceConfig(obj.serviceConfig),\n };\n if ('clientLanguage' in obj) {\n if (Array.isArray(obj.clientLanguage)) {\n result.clientLanguage = [];\n for (const lang of obj.clientLanguage) {\n if (typeof lang === 'string') {\n result.clientLanguage.push(lang);\n }\n else {\n throw new Error('Invalid service config choice: invalid clientLanguage');\n }\n }\n }\n else {\n throw new Error('Invalid service config choice: invalid clientLanguage');\n }\n }\n if ('clientHostname' in obj) {\n if (Array.isArray(obj.clientHostname)) {\n result.clientHostname = [];\n for (const lang of obj.clientHostname) {\n if (typeof lang === 'string') {\n result.clientHostname.push(lang);\n }\n else {\n throw new Error('Invalid service config choice: invalid clientHostname');\n }\n }\n }\n else {\n throw new Error('Invalid service config choice: invalid clientHostname');\n }\n }\n if ('percentage' in obj) {\n if (typeof obj.percentage === 'number' &&\n 0 <= obj.percentage &&\n obj.percentage <= 100) {\n result.percentage = obj.percentage;\n }\n else {\n throw new Error('Invalid service config choice: invalid percentage');\n }\n }\n // Validate that no unexpected fields are present\n const allowedFields = [\n 'clientLanguage',\n 'percentage',\n 'clientHostname',\n 'serviceConfig',\n ];\n for (const field in obj) {\n if (!allowedFields.includes(field)) {\n throw new Error(`Invalid service config choice: unexpected field ${field}`);\n }\n }\n return result;\n}\nfunction validateAndSelectCanaryConfig(obj, percentage) {\n if (!Array.isArray(obj)) {\n throw new Error('Invalid service config list');\n }\n for (const config of obj) {\n const validatedConfig = validateCanaryConfig(config);\n /* For each field, we check if it is present, then only discard the\n * config if the field value does not match the current client */\n if (typeof validatedConfig.percentage === 'number' &&\n percentage > validatedConfig.percentage) {\n continue;\n }\n if (Array.isArray(validatedConfig.clientHostname)) {\n let hostnameMatched = false;\n for (const hostname of validatedConfig.clientHostname) {\n if (hostname === os.hostname()) {\n hostnameMatched = true;\n }\n }\n if (!hostnameMatched) {\n continue;\n }\n }\n if (Array.isArray(validatedConfig.clientLanguage)) {\n let languageMatched = false;\n for (const language of validatedConfig.clientLanguage) {\n if (language === CLIENT_LANGUAGE_STRING) {\n languageMatched = true;\n }\n }\n if (!languageMatched) {\n continue;\n }\n }\n return validatedConfig.serviceConfig;\n }\n throw new Error('No matching service config found');\n}\n/**\n * Find the \"grpc_config\" record among the TXT records, parse its value as JSON, validate its contents,\n * and select a service config with selection fields that all match this client. Most of these steps\n * can fail with an error; the caller must handle any errors thrown this way.\n * @param txtRecord The TXT record array that is output from a successful call to dns.resolveTxt\n * @param percentage A number chosen from the range [0, 100) that is used to select which config to use\n * @return The service configuration to use, given the percentage value, or null if the service config\n * data has a valid format but none of the options match the current client.\n */\nfunction extractAndSelectServiceConfig(txtRecord, percentage) {\n for (const record of txtRecord) {\n if (record.length > 0 && record[0].startsWith('grpc_config=')) {\n /* Treat the list of strings in this record as a single string and remove\n * \"grpc_config=\" from the beginning. The rest should be a JSON string */\n const recordString = record.join('').substring('grpc_config='.length);\n const recordJson = JSON.parse(recordString);\n return validateAndSelectCanaryConfig(recordJson, percentage);\n }\n }\n return null;\n}\nexports.extractAndSelectServiceConfig = extractAndSelectServiceConfig;\n//# sourceMappingURL=service-config.js.map","\"use strict\";\n/*\n * Copyright 2019 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.StatusBuilder = void 0;\n/**\n * A builder for gRPC status objects.\n */\nclass StatusBuilder {\n constructor() {\n this.code = null;\n this.details = null;\n this.metadata = null;\n }\n /**\n * Adds a status code to the builder.\n */\n withCode(code) {\n this.code = code;\n return this;\n }\n /**\n * Adds details to the builder.\n */\n withDetails(details) {\n this.details = details;\n return this;\n }\n /**\n * Adds metadata to the builder.\n */\n withMetadata(metadata) {\n this.metadata = metadata;\n return this;\n }\n /**\n * Builds the status object.\n */\n build() {\n const status = {};\n if (this.code !== null) {\n status.code = this.code;\n }\n if (this.details !== null) {\n status.details = this.details;\n }\n if (this.metadata !== null) {\n status.metadata = this.metadata;\n }\n return status;\n }\n}\nexports.StatusBuilder = StatusBuilder;\n//# sourceMappingURL=status-builder.js.map","\"use strict\";\n/*\n * Copyright 2019 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.StreamDecoder = void 0;\nvar ReadState;\n(function (ReadState) {\n ReadState[ReadState[\"NO_DATA\"] = 0] = \"NO_DATA\";\n ReadState[ReadState[\"READING_SIZE\"] = 1] = \"READING_SIZE\";\n ReadState[ReadState[\"READING_MESSAGE\"] = 2] = \"READING_MESSAGE\";\n})(ReadState || (ReadState = {}));\nclass StreamDecoder {\n constructor() {\n this.readState = ReadState.NO_DATA;\n this.readCompressFlag = Buffer.alloc(1);\n this.readPartialSize = Buffer.alloc(4);\n this.readSizeRemaining = 4;\n this.readMessageSize = 0;\n this.readPartialMessage = [];\n this.readMessageRemaining = 0;\n }\n write(data) {\n let readHead = 0;\n let toRead;\n const result = [];\n while (readHead < data.length) {\n switch (this.readState) {\n case ReadState.NO_DATA:\n this.readCompressFlag = data.slice(readHead, readHead + 1);\n readHead += 1;\n this.readState = ReadState.READING_SIZE;\n this.readPartialSize.fill(0);\n this.readSizeRemaining = 4;\n this.readMessageSize = 0;\n this.readMessageRemaining = 0;\n this.readPartialMessage = [];\n break;\n case ReadState.READING_SIZE:\n toRead = Math.min(data.length - readHead, this.readSizeRemaining);\n data.copy(this.readPartialSize, 4 - this.readSizeRemaining, readHead, readHead + toRead);\n this.readSizeRemaining -= toRead;\n readHead += toRead;\n // readSizeRemaining >=0 here\n if (this.readSizeRemaining === 0) {\n this.readMessageSize = this.readPartialSize.readUInt32BE(0);\n this.readMessageRemaining = this.readMessageSize;\n if (this.readMessageRemaining > 0) {\n this.readState = ReadState.READING_MESSAGE;\n }\n else {\n const message = Buffer.concat([this.readCompressFlag, this.readPartialSize], 5);\n this.readState = ReadState.NO_DATA;\n result.push(message);\n }\n }\n break;\n case ReadState.READING_MESSAGE:\n toRead = Math.min(data.length - readHead, this.readMessageRemaining);\n this.readPartialMessage.push(data.slice(readHead, readHead + toRead));\n this.readMessageRemaining -= toRead;\n readHead += toRead;\n // readMessageRemaining >=0 here\n if (this.readMessageRemaining === 0) {\n // At this point, we have read a full message\n const framedMessageBuffers = [\n this.readCompressFlag,\n this.readPartialSize,\n ].concat(this.readPartialMessage);\n const framedMessage = Buffer.concat(framedMessageBuffers, this.readMessageSize + 5);\n this.readState = ReadState.NO_DATA;\n result.push(framedMessage);\n }\n break;\n default:\n throw new Error('Unexpected read state');\n }\n }\n return result;\n }\n}\nexports.StreamDecoder = StreamDecoder;\n//# sourceMappingURL=stream-decoder.js.map","\"use strict\";\n/*\n * Copyright 2021 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.EndpointMap = exports.endpointHasAddress = exports.endpointToString = exports.endpointEqual = exports.stringToSubchannelAddress = exports.subchannelAddressToString = exports.subchannelAddressEqual = exports.isTcpSubchannelAddress = void 0;\nconst net_1 = require(\"net\");\nfunction isTcpSubchannelAddress(address) {\n return 'port' in address;\n}\nexports.isTcpSubchannelAddress = isTcpSubchannelAddress;\nfunction subchannelAddressEqual(address1, address2) {\n if (!address1 && !address2) {\n return true;\n }\n if (!address1 || !address2) {\n return false;\n }\n if (isTcpSubchannelAddress(address1)) {\n return (isTcpSubchannelAddress(address2) &&\n address1.host === address2.host &&\n address1.port === address2.port);\n }\n else {\n return !isTcpSubchannelAddress(address2) && address1.path === address2.path;\n }\n}\nexports.subchannelAddressEqual = subchannelAddressEqual;\nfunction subchannelAddressToString(address) {\n if (isTcpSubchannelAddress(address)) {\n if ((0, net_1.isIPv6)(address.host)) {\n return '[' + address.host + ']:' + address.port;\n }\n else {\n return address.host + ':' + address.port;\n }\n }\n else {\n return address.path;\n }\n}\nexports.subchannelAddressToString = subchannelAddressToString;\nconst DEFAULT_PORT = 443;\nfunction stringToSubchannelAddress(addressString, port) {\n if ((0, net_1.isIP)(addressString)) {\n return {\n host: addressString,\n port: port !== null && port !== void 0 ? port : DEFAULT_PORT,\n };\n }\n else {\n return {\n path: addressString,\n };\n }\n}\nexports.stringToSubchannelAddress = stringToSubchannelAddress;\nfunction endpointEqual(endpoint1, endpoint2) {\n if (endpoint1.addresses.length !== endpoint2.addresses.length) {\n return false;\n }\n for (let i = 0; i < endpoint1.addresses.length; i++) {\n if (!subchannelAddressEqual(endpoint1.addresses[i], endpoint2.addresses[i])) {\n return false;\n }\n }\n return true;\n}\nexports.endpointEqual = endpointEqual;\nfunction endpointToString(endpoint) {\n return ('[' + endpoint.addresses.map(subchannelAddressToString).join(', ') + ']');\n}\nexports.endpointToString = endpointToString;\nfunction endpointHasAddress(endpoint, expectedAddress) {\n for (const address of endpoint.addresses) {\n if (subchannelAddressEqual(address, expectedAddress)) {\n return true;\n }\n }\n return false;\n}\nexports.endpointHasAddress = endpointHasAddress;\nfunction endpointEqualUnordered(endpoint1, endpoint2) {\n if (endpoint1.addresses.length !== endpoint2.addresses.length) {\n return false;\n }\n for (const address1 of endpoint1.addresses) {\n let matchFound = false;\n for (const address2 of endpoint2.addresses) {\n if (subchannelAddressEqual(address1, address2)) {\n matchFound = true;\n break;\n }\n }\n if (!matchFound) {\n return false;\n }\n }\n return true;\n}\nclass EndpointMap {\n constructor() {\n this.map = new Set();\n }\n get size() {\n return this.map.size;\n }\n getForSubchannelAddress(address) {\n for (const entry of this.map) {\n if (endpointHasAddress(entry.key, address)) {\n return entry.value;\n }\n }\n return undefined;\n }\n /**\n * Delete any entries in this map with keys that are not in endpoints\n * @param endpoints\n */\n deleteMissing(endpoints) {\n const removedValues = [];\n for (const entry of this.map) {\n let foundEntry = false;\n for (const endpoint of endpoints) {\n if (endpointEqualUnordered(endpoint, entry.key)) {\n foundEntry = true;\n }\n }\n if (!foundEntry) {\n removedValues.push(entry.value);\n this.map.delete(entry);\n }\n }\n return removedValues;\n }\n get(endpoint) {\n for (const entry of this.map) {\n if (endpointEqualUnordered(endpoint, entry.key)) {\n return entry.value;\n }\n }\n return undefined;\n }\n set(endpoint, mapEntry) {\n for (const entry of this.map) {\n if (endpointEqualUnordered(endpoint, entry.key)) {\n entry.value = mapEntry;\n return;\n }\n }\n this.map.add({ key: endpoint, value: mapEntry });\n }\n delete(endpoint) {\n for (const entry of this.map) {\n if (endpointEqualUnordered(endpoint, entry.key)) {\n this.map.delete(entry);\n return;\n }\n }\n }\n has(endpoint) {\n for (const entry of this.map) {\n if (endpointEqualUnordered(endpoint, entry.key)) {\n return true;\n }\n }\n return false;\n }\n clear() {\n this.map.clear();\n }\n *keys() {\n for (const entry of this.map) {\n yield entry.key;\n }\n }\n *values() {\n for (const entry of this.map) {\n yield entry.value;\n }\n }\n *entries() {\n for (const entry of this.map) {\n yield [entry.key, entry.value];\n }\n }\n}\nexports.EndpointMap = EndpointMap;\n//# sourceMappingURL=subchannel-address.js.map","\"use strict\";\n/*\n * Copyright 2019 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Http2SubchannelCall = void 0;\nconst http2 = require(\"http2\");\nconst os = require(\"os\");\nconst constants_1 = require(\"./constants\");\nconst metadata_1 = require(\"./metadata\");\nconst stream_decoder_1 = require(\"./stream-decoder\");\nconst logging = require(\"./logging\");\nconst constants_2 = require(\"./constants\");\nconst TRACER_NAME = 'subchannel_call';\n/**\n * Should do approximately the same thing as util.getSystemErrorName but the\n * TypeScript types don't have that function for some reason so I just made my\n * own.\n * @param errno\n */\nfunction getSystemErrorName(errno) {\n for (const [name, num] of Object.entries(os.constants.errno)) {\n if (num === errno) {\n return name;\n }\n }\n return 'Unknown system error ' + errno;\n}\nfunction mapHttpStatusCode(code) {\n const details = `Received HTTP status code ${code}`;\n let mappedStatusCode;\n switch (code) {\n // TODO(murgatroid99): handle 100 and 101\n case 400:\n mappedStatusCode = constants_1.Status.INTERNAL;\n break;\n case 401:\n mappedStatusCode = constants_1.Status.UNAUTHENTICATED;\n break;\n case 403:\n mappedStatusCode = constants_1.Status.PERMISSION_DENIED;\n break;\n case 404:\n mappedStatusCode = constants_1.Status.UNIMPLEMENTED;\n break;\n case 429:\n case 502:\n case 503:\n case 504:\n mappedStatusCode = constants_1.Status.UNAVAILABLE;\n break;\n default:\n mappedStatusCode = constants_1.Status.UNKNOWN;\n }\n return {\n code: mappedStatusCode,\n details: details,\n metadata: new metadata_1.Metadata()\n };\n}\nclass Http2SubchannelCall {\n constructor(http2Stream, callEventTracker, listener, transport, callId) {\n this.http2Stream = http2Stream;\n this.callEventTracker = callEventTracker;\n this.listener = listener;\n this.transport = transport;\n this.callId = callId;\n this.decoder = new stream_decoder_1.StreamDecoder();\n this.isReadFilterPending = false;\n this.isPushPending = false;\n this.canPush = false;\n /**\n * Indicates that an 'end' event has come from the http2 stream, so there\n * will be no more data events.\n */\n this.readsClosed = false;\n this.statusOutput = false;\n this.unpushedReadMessages = [];\n // This is populated (non-null) if and only if the call has ended\n this.finalStatus = null;\n this.internalError = null;\n this.serverEndedCall = false;\n http2Stream.on('response', (headers, flags) => {\n let headersString = '';\n for (const header of Object.keys(headers)) {\n headersString += '\\t\\t' + header + ': ' + headers[header] + '\\n';\n }\n this.trace('Received server headers:\\n' + headersString);\n this.httpStatusCode = headers[':status'];\n if (flags & http2.constants.NGHTTP2_FLAG_END_STREAM) {\n this.handleTrailers(headers);\n }\n else {\n let metadata;\n try {\n metadata = metadata_1.Metadata.fromHttp2Headers(headers);\n }\n catch (error) {\n this.endCall({\n code: constants_1.Status.UNKNOWN,\n details: error.message,\n metadata: new metadata_1.Metadata(),\n });\n return;\n }\n this.listener.onReceiveMetadata(metadata);\n }\n });\n http2Stream.on('trailers', (headers) => {\n this.handleTrailers(headers);\n });\n http2Stream.on('data', (data) => {\n /* If the status has already been output, allow the http2 stream to\n * drain without processing the data. */\n if (this.statusOutput) {\n return;\n }\n this.trace('receive HTTP/2 data frame of length ' + data.length);\n const messages = this.decoder.write(data);\n for (const message of messages) {\n this.trace('parsed message of length ' + message.length);\n this.callEventTracker.addMessageReceived();\n this.tryPush(message);\n }\n });\n http2Stream.on('end', () => {\n this.readsClosed = true;\n this.maybeOutputStatus();\n });\n http2Stream.on('close', () => {\n this.serverEndedCall = true;\n /* Use process.next tick to ensure that this code happens after any\n * \"error\" event that may be emitted at about the same time, so that\n * we can bubble up the error message from that event. */\n process.nextTick(() => {\n var _a;\n this.trace('HTTP/2 stream closed with code ' + http2Stream.rstCode);\n /* If we have a final status with an OK status code, that means that\n * we have received all of the messages and we have processed the\n * trailers and the call completed successfully, so it doesn't matter\n * how the stream ends after that */\n if (((_a = this.finalStatus) === null || _a === void 0 ? void 0 : _a.code) === constants_1.Status.OK) {\n return;\n }\n let code;\n let details = '';\n switch (http2Stream.rstCode) {\n case http2.constants.NGHTTP2_NO_ERROR:\n /* If we get a NO_ERROR code and we already have a status, the\n * stream completed properly and we just haven't fully processed\n * it yet */\n if (this.finalStatus !== null) {\n return;\n }\n if (this.httpStatusCode && this.httpStatusCode !== 200) {\n const mappedStatus = mapHttpStatusCode(this.httpStatusCode);\n code = mappedStatus.code;\n details = mappedStatus.details;\n }\n else {\n code = constants_1.Status.INTERNAL;\n details = `Received RST_STREAM with code ${http2Stream.rstCode} (Call ended without gRPC status)`;\n }\n break;\n case http2.constants.NGHTTP2_REFUSED_STREAM:\n code = constants_1.Status.UNAVAILABLE;\n details = 'Stream refused by server';\n break;\n case http2.constants.NGHTTP2_CANCEL:\n code = constants_1.Status.CANCELLED;\n details = 'Call cancelled';\n break;\n case http2.constants.NGHTTP2_ENHANCE_YOUR_CALM:\n code = constants_1.Status.RESOURCE_EXHAUSTED;\n details = 'Bandwidth exhausted or memory limit exceeded';\n break;\n case http2.constants.NGHTTP2_INADEQUATE_SECURITY:\n code = constants_1.Status.PERMISSION_DENIED;\n details = 'Protocol not secure enough';\n break;\n case http2.constants.NGHTTP2_INTERNAL_ERROR:\n code = constants_1.Status.INTERNAL;\n if (this.internalError === null) {\n /* This error code was previously handled in the default case, and\n * there are several instances of it online, so I wanted to\n * preserve the original error message so that people find existing\n * information in searches, but also include the more recognizable\n * \"Internal server error\" message. */\n details = `Received RST_STREAM with code ${http2Stream.rstCode} (Internal server error)`;\n }\n else {\n if (this.internalError.code === 'ECONNRESET' ||\n this.internalError.code === 'ETIMEDOUT') {\n code = constants_1.Status.UNAVAILABLE;\n details = this.internalError.message;\n }\n else {\n /* The \"Received RST_STREAM with code ...\" error is preserved\n * here for continuity with errors reported online, but the\n * error message at the end will probably be more relevant in\n * most cases. */\n details = `Received RST_STREAM with code ${http2Stream.rstCode} triggered by internal client error: ${this.internalError.message}`;\n }\n }\n break;\n default:\n code = constants_1.Status.INTERNAL;\n details = `Received RST_STREAM with code ${http2Stream.rstCode}`;\n }\n // This is a no-op if trailers were received at all.\n // This is OK, because status codes emitted here correspond to more\n // catastrophic issues that prevent us from receiving trailers in the\n // first place.\n this.endCall({\n code,\n details,\n metadata: new metadata_1.Metadata(),\n rstCode: http2Stream.rstCode,\n });\n });\n });\n http2Stream.on('error', (err) => {\n /* We need an error handler here to stop \"Uncaught Error\" exceptions\n * from bubbling up. However, errors here should all correspond to\n * \"close\" events, where we will handle the error more granularly */\n /* Specifically looking for stream errors that were *not* constructed\n * from a RST_STREAM response here:\n * https://github.com/nodejs/node/blob/8b8620d580314050175983402dfddf2674e8e22a/lib/internal/http2/core.js#L2267\n */\n if (err.code !== 'ERR_HTTP2_STREAM_ERROR') {\n this.trace('Node error event: message=' +\n err.message +\n ' code=' +\n err.code +\n ' errno=' +\n getSystemErrorName(err.errno) +\n ' syscall=' +\n err.syscall);\n this.internalError = err;\n }\n this.callEventTracker.onStreamEnd(false);\n });\n }\n getDeadlineInfo() {\n return [`remote_addr=${this.getPeer()}`];\n }\n onDisconnect() {\n this.endCall({\n code: constants_1.Status.UNAVAILABLE,\n details: 'Connection dropped',\n metadata: new metadata_1.Metadata(),\n });\n }\n outputStatus() {\n /* Precondition: this.finalStatus !== null */\n if (!this.statusOutput) {\n this.statusOutput = true;\n this.trace('ended with status: code=' +\n this.finalStatus.code +\n ' details=\"' +\n this.finalStatus.details +\n '\"');\n this.callEventTracker.onCallEnd(this.finalStatus);\n /* We delay the actual action of bubbling up the status to insulate the\n * cleanup code in this class from any errors that may be thrown in the\n * upper layers as a result of bubbling up the status. In particular,\n * if the status is not OK, the \"error\" event may be emitted\n * synchronously at the top level, which will result in a thrown error if\n * the user does not handle that event. */\n process.nextTick(() => {\n this.listener.onReceiveStatus(this.finalStatus);\n });\n /* Leave the http2 stream in flowing state to drain incoming messages, to\n * ensure that the stream closure completes. The call stream already does\n * not push more messages after the status is output, so the messages go\n * nowhere either way. */\n this.http2Stream.resume();\n }\n }\n trace(text) {\n logging.trace(constants_2.LogVerbosity.DEBUG, TRACER_NAME, '[' + this.callId + '] ' + text);\n }\n /**\n * On first call, emits a 'status' event with the given StatusObject.\n * Subsequent calls are no-ops.\n * @param status The status of the call.\n */\n endCall(status) {\n /* If the status is OK and a new status comes in (e.g. from a\n * deserialization failure), that new status takes priority */\n if (this.finalStatus === null || this.finalStatus.code === constants_1.Status.OK) {\n this.finalStatus = status;\n this.maybeOutputStatus();\n }\n this.destroyHttp2Stream();\n }\n maybeOutputStatus() {\n if (this.finalStatus !== null) {\n /* The combination check of readsClosed and that the two message buffer\n * arrays are empty checks that there all incoming data has been fully\n * processed */\n if (this.finalStatus.code !== constants_1.Status.OK ||\n (this.readsClosed &&\n this.unpushedReadMessages.length === 0 &&\n !this.isReadFilterPending &&\n !this.isPushPending)) {\n this.outputStatus();\n }\n }\n }\n push(message) {\n this.trace('pushing to reader message of length ' +\n (message instanceof Buffer ? message.length : null));\n this.canPush = false;\n this.isPushPending = true;\n process.nextTick(() => {\n this.isPushPending = false;\n /* If we have already output the status any later messages should be\n * ignored, and can cause out-of-order operation errors higher up in the\n * stack. Checking as late as possible here to avoid any race conditions.\n */\n if (this.statusOutput) {\n return;\n }\n this.listener.onReceiveMessage(message);\n this.maybeOutputStatus();\n });\n }\n tryPush(messageBytes) {\n if (this.canPush) {\n this.http2Stream.pause();\n this.push(messageBytes);\n }\n else {\n this.trace('unpushedReadMessages.push message of length ' + messageBytes.length);\n this.unpushedReadMessages.push(messageBytes);\n }\n }\n handleTrailers(headers) {\n this.serverEndedCall = true;\n this.callEventTracker.onStreamEnd(true);\n let headersString = '';\n for (const header of Object.keys(headers)) {\n headersString += '\\t\\t' + header + ': ' + headers[header] + '\\n';\n }\n this.trace('Received server trailers:\\n' + headersString);\n let metadata;\n try {\n metadata = metadata_1.Metadata.fromHttp2Headers(headers);\n }\n catch (e) {\n metadata = new metadata_1.Metadata();\n }\n const metadataMap = metadata.getMap();\n let status;\n if (typeof metadataMap['grpc-status'] === 'string') {\n const receivedStatus = Number(metadataMap['grpc-status']);\n this.trace('received status code ' + receivedStatus + ' from server');\n metadata.remove('grpc-status');\n let details = '';\n if (typeof metadataMap['grpc-message'] === 'string') {\n try {\n details = decodeURI(metadataMap['grpc-message']);\n }\n catch (e) {\n details = metadataMap['grpc-message'];\n }\n metadata.remove('grpc-message');\n this.trace('received status details string \"' + details + '\" from server');\n }\n status = {\n code: receivedStatus,\n details: details,\n metadata: metadata\n };\n }\n else if (this.httpStatusCode) {\n status = mapHttpStatusCode(this.httpStatusCode);\n status.metadata = metadata;\n }\n else {\n status = {\n code: constants_1.Status.UNKNOWN,\n details: 'No status information received',\n metadata: metadata\n };\n }\n // This is a no-op if the call was already ended when handling headers.\n this.endCall(status);\n }\n destroyHttp2Stream() {\n var _a;\n // The http2 stream could already have been destroyed if cancelWithStatus\n // is called in response to an internal http2 error.\n if (this.http2Stream.destroyed) {\n return;\n }\n /* If the server ended the call, sending an RST_STREAM is redundant, so we\n * just half close on the client side instead to finish closing the stream.\n */\n if (this.serverEndedCall) {\n this.http2Stream.end();\n }\n else {\n /* If the call has ended with an OK status, communicate that when closing\n * the stream, partly to avoid a situation in which we detect an error\n * RST_STREAM as a result after we have the status */\n let code;\n if (((_a = this.finalStatus) === null || _a === void 0 ? void 0 : _a.code) === constants_1.Status.OK) {\n code = http2.constants.NGHTTP2_NO_ERROR;\n }\n else {\n code = http2.constants.NGHTTP2_CANCEL;\n }\n this.trace('close http2 stream with code ' + code);\n this.http2Stream.close(code);\n }\n }\n cancelWithStatus(status, details) {\n this.trace('cancelWithStatus code: ' + status + ' details: \"' + details + '\"');\n this.endCall({ code: status, details, metadata: new metadata_1.Metadata() });\n }\n getStatus() {\n return this.finalStatus;\n }\n getPeer() {\n return this.transport.getPeerName();\n }\n getCallNumber() {\n return this.callId;\n }\n startRead() {\n /* If the stream has ended with an error, we should not emit any more\n * messages and we should communicate that the stream has ended */\n if (this.finalStatus !== null && this.finalStatus.code !== constants_1.Status.OK) {\n this.readsClosed = true;\n this.maybeOutputStatus();\n return;\n }\n this.canPush = true;\n if (this.unpushedReadMessages.length > 0) {\n const nextMessage = this.unpushedReadMessages.shift();\n this.push(nextMessage);\n return;\n }\n /* Only resume reading from the http2Stream if we don't have any pending\n * messages to emit */\n this.http2Stream.resume();\n }\n sendMessageWithContext(context, message) {\n this.trace('write() called with message of length ' + message.length);\n const cb = (error) => {\n /* nextTick here ensures that no stream action can be taken in the call\n * stack of the write callback, in order to hopefully work around\n * https://github.com/nodejs/node/issues/49147 */\n process.nextTick(() => {\n var _a;\n let code = constants_1.Status.UNAVAILABLE;\n if ((error === null || error === void 0 ? void 0 : error.code) ===\n 'ERR_STREAM_WRITE_AFTER_END') {\n code = constants_1.Status.INTERNAL;\n }\n if (error) {\n this.cancelWithStatus(code, `Write error: ${error.message}`);\n }\n (_a = context.callback) === null || _a === void 0 ? void 0 : _a.call(context);\n });\n };\n this.trace('sending data chunk of length ' + message.length);\n this.callEventTracker.addMessageSent();\n try {\n this.http2Stream.write(message, cb);\n }\n catch (error) {\n this.endCall({\n code: constants_1.Status.UNAVAILABLE,\n details: `Write failed with error ${error.message}`,\n metadata: new metadata_1.Metadata(),\n });\n }\n }\n halfClose() {\n this.trace('end() called');\n this.trace('calling end() on HTTP/2 stream');\n this.http2Stream.end();\n }\n}\nexports.Http2SubchannelCall = Http2SubchannelCall;\n//# sourceMappingURL=subchannel-call.js.map","\"use strict\";\n/*\n * Copyright 2022 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BaseSubchannelWrapper = void 0;\nclass BaseSubchannelWrapper {\n constructor(child) {\n this.child = child;\n this.healthy = true;\n this.healthListeners = new Set();\n child.addHealthStateWatcher(childHealthy => {\n /* A change to the child health state only affects this wrapper's overall\n * health state if this wrapper is reporting healthy. */\n if (this.healthy) {\n this.updateHealthListeners();\n }\n });\n }\n updateHealthListeners() {\n for (const listener of this.healthListeners) {\n listener(this.isHealthy());\n }\n }\n getConnectivityState() {\n return this.child.getConnectivityState();\n }\n addConnectivityStateListener(listener) {\n this.child.addConnectivityStateListener(listener);\n }\n removeConnectivityStateListener(listener) {\n this.child.removeConnectivityStateListener(listener);\n }\n startConnecting() {\n this.child.startConnecting();\n }\n getAddress() {\n return this.child.getAddress();\n }\n throttleKeepalive(newKeepaliveTime) {\n this.child.throttleKeepalive(newKeepaliveTime);\n }\n ref() {\n this.child.ref();\n }\n unref() {\n this.child.unref();\n }\n getChannelzRef() {\n return this.child.getChannelzRef();\n }\n isHealthy() {\n return this.healthy && this.child.isHealthy();\n }\n addHealthStateWatcher(listener) {\n this.healthListeners.add(listener);\n }\n removeHealthStateWatcher(listener) {\n this.healthListeners.delete(listener);\n }\n setHealthy(healthy) {\n if (healthy !== this.healthy) {\n this.healthy = healthy;\n /* A change to this wrapper's health state only affects the overall\n * reported health state if the child is healthy. */\n if (this.child.isHealthy()) {\n this.updateHealthListeners();\n }\n }\n }\n getRealSubchannel() {\n return this.child.getRealSubchannel();\n }\n realSubchannelEquals(other) {\n return this.getRealSubchannel() === other.getRealSubchannel();\n }\n}\nexports.BaseSubchannelWrapper = BaseSubchannelWrapper;\n//# sourceMappingURL=subchannel-interface.js.map","\"use strict\";\n/*\n * Copyright 2019 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getSubchannelPool = exports.SubchannelPool = void 0;\nconst channel_options_1 = require(\"./channel-options\");\nconst subchannel_1 = require(\"./subchannel\");\nconst subchannel_address_1 = require(\"./subchannel-address\");\nconst uri_parser_1 = require(\"./uri-parser\");\nconst transport_1 = require(\"./transport\");\n// 10 seconds in milliseconds. This value is arbitrary.\n/**\n * The amount of time in between checks for dropping subchannels that have no\n * other references\n */\nconst REF_CHECK_INTERVAL = 10000;\nclass SubchannelPool {\n /**\n * A pool of subchannels use for making connections. Subchannels with the\n * exact same parameters will be reused.\n */\n constructor() {\n this.pool = Object.create(null);\n /**\n * A timer of a task performing a periodic subchannel cleanup.\n */\n this.cleanupTimer = null;\n }\n /**\n * Unrefs all unused subchannels and cancels the cleanup task if all\n * subchannels have been unrefed.\n */\n unrefUnusedSubchannels() {\n let allSubchannelsUnrefed = true;\n /* These objects are created with Object.create(null), so they do not\n * have a prototype, which means that for (... in ...) loops over them\n * do not need to be filtered */\n // eslint-disable-disable-next-line:forin\n for (const channelTarget in this.pool) {\n const subchannelObjArray = this.pool[channelTarget];\n const refedSubchannels = subchannelObjArray.filter(value => !value.subchannel.unrefIfOneRef());\n if (refedSubchannels.length > 0) {\n allSubchannelsUnrefed = false;\n }\n /* For each subchannel in the pool, try to unref it if it has\n * exactly one ref (which is the ref from the pool itself). If that\n * does happen, remove the subchannel from the pool */\n this.pool[channelTarget] = refedSubchannels;\n }\n /* Currently we do not delete keys with empty values. If that results\n * in significant memory usage we should change it. */\n // Cancel the cleanup task if all subchannels have been unrefed.\n if (allSubchannelsUnrefed && this.cleanupTimer !== null) {\n clearInterval(this.cleanupTimer);\n this.cleanupTimer = null;\n }\n }\n /**\n * Ensures that the cleanup task is spawned.\n */\n ensureCleanupTask() {\n var _a, _b;\n if (this.cleanupTimer === null) {\n this.cleanupTimer = setInterval(() => {\n this.unrefUnusedSubchannels();\n }, REF_CHECK_INTERVAL);\n // Unref because this timer should not keep the event loop running.\n // Call unref only if it exists to address electron/electron#21162\n (_b = (_a = this.cleanupTimer).unref) === null || _b === void 0 ? void 0 : _b.call(_a);\n }\n }\n /**\n * Get a subchannel if one already exists with exactly matching parameters.\n * Otherwise, create and save a subchannel with those parameters.\n * @param channelTarget\n * @param subchannelTarget\n * @param channelArguments\n * @param channelCredentials\n */\n getOrCreateSubchannel(channelTargetUri, subchannelTarget, channelArguments, channelCredentials) {\n this.ensureCleanupTask();\n const channelTarget = (0, uri_parser_1.uriToString)(channelTargetUri);\n if (channelTarget in this.pool) {\n const subchannelObjArray = this.pool[channelTarget];\n for (const subchannelObj of subchannelObjArray) {\n if ((0, subchannel_address_1.subchannelAddressEqual)(subchannelTarget, subchannelObj.subchannelAddress) &&\n (0, channel_options_1.channelOptionsEqual)(channelArguments, subchannelObj.channelArguments) &&\n channelCredentials._equals(subchannelObj.channelCredentials)) {\n return subchannelObj.subchannel;\n }\n }\n }\n // If we get here, no matching subchannel was found\n const subchannel = new subchannel_1.Subchannel(channelTargetUri, subchannelTarget, channelArguments, channelCredentials, new transport_1.Http2SubchannelConnector(channelTargetUri));\n if (!(channelTarget in this.pool)) {\n this.pool[channelTarget] = [];\n }\n this.pool[channelTarget].push({\n subchannelAddress: subchannelTarget,\n channelArguments,\n channelCredentials,\n subchannel,\n });\n subchannel.ref();\n return subchannel;\n }\n}\nexports.SubchannelPool = SubchannelPool;\nconst globalSubchannelPool = new SubchannelPool();\n/**\n * Get either the global subchannel pool, or a new subchannel pool.\n * @param global\n */\nfunction getSubchannelPool(global) {\n if (global) {\n return globalSubchannelPool;\n }\n else {\n return new SubchannelPool();\n }\n}\nexports.getSubchannelPool = getSubchannelPool;\n//# sourceMappingURL=subchannel-pool.js.map","\"use strict\";\n/*\n * Copyright 2019 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Subchannel = void 0;\nconst connectivity_state_1 = require(\"./connectivity-state\");\nconst backoff_timeout_1 = require(\"./backoff-timeout\");\nconst logging = require(\"./logging\");\nconst constants_1 = require(\"./constants\");\nconst uri_parser_1 = require(\"./uri-parser\");\nconst subchannel_address_1 = require(\"./subchannel-address\");\nconst channelz_1 = require(\"./channelz\");\nconst TRACER_NAME = 'subchannel';\n/* setInterval and setTimeout only accept signed 32 bit integers. JS doesn't\n * have a constant for the max signed 32 bit integer, so this is a simple way\n * to calculate it */\nconst KEEPALIVE_MAX_TIME_MS = ~(1 << 31);\nclass Subchannel {\n /**\n * A class representing a connection to a single backend.\n * @param channelTarget The target string for the channel as a whole\n * @param subchannelAddress The address for the backend that this subchannel\n * will connect to\n * @param options The channel options, plus any specific subchannel options\n * for this subchannel\n * @param credentials The channel credentials used to establish this\n * connection\n */\n constructor(channelTarget, subchannelAddress, options, credentials, connector) {\n var _a;\n this.channelTarget = channelTarget;\n this.subchannelAddress = subchannelAddress;\n this.options = options;\n this.credentials = credentials;\n this.connector = connector;\n /**\n * The subchannel's current connectivity state. Invariant: `session` === `null`\n * if and only if `connectivityState` is IDLE or TRANSIENT_FAILURE.\n */\n this.connectivityState = connectivity_state_1.ConnectivityState.IDLE;\n /**\n * The underlying http2 session used to make requests.\n */\n this.transport = null;\n /**\n * Indicates that the subchannel should transition from TRANSIENT_FAILURE to\n * CONNECTING instead of IDLE when the backoff timeout ends.\n */\n this.continueConnecting = false;\n /**\n * A list of listener functions that will be called whenever the connectivity\n * state changes. Will be modified by `addConnectivityStateListener` and\n * `removeConnectivityStateListener`\n */\n this.stateListeners = new Set();\n /**\n * Tracks channels and subchannel pools with references to this subchannel\n */\n this.refcount = 0;\n // Channelz info\n this.channelzEnabled = true;\n const backoffOptions = {\n initialDelay: options['grpc.initial_reconnect_backoff_ms'],\n maxDelay: options['grpc.max_reconnect_backoff_ms'],\n };\n this.backoffTimeout = new backoff_timeout_1.BackoffTimeout(() => {\n this.handleBackoffTimer();\n }, backoffOptions);\n this.backoffTimeout.unref();\n this.subchannelAddressString = (0, subchannel_address_1.subchannelAddressToString)(subchannelAddress);\n this.keepaliveTime = (_a = options['grpc.keepalive_time_ms']) !== null && _a !== void 0 ? _a : -1;\n if (options['grpc.enable_channelz'] === 0) {\n this.channelzEnabled = false;\n this.channelzTrace = new channelz_1.ChannelzTraceStub();\n this.callTracker = new channelz_1.ChannelzCallTrackerStub();\n this.childrenTracker = new channelz_1.ChannelzChildrenTrackerStub();\n this.streamTracker = new channelz_1.ChannelzCallTrackerStub();\n }\n else {\n this.channelzTrace = new channelz_1.ChannelzTrace();\n this.callTracker = new channelz_1.ChannelzCallTracker();\n this.childrenTracker = new channelz_1.ChannelzChildrenTracker();\n this.streamTracker = new channelz_1.ChannelzCallTracker();\n }\n this.channelzRef = (0, channelz_1.registerChannelzSubchannel)(this.subchannelAddressString, () => this.getChannelzInfo(), this.channelzEnabled);\n this.channelzTrace.addTrace('CT_INFO', 'Subchannel created');\n this.trace('Subchannel constructed with options ' +\n JSON.stringify(options, undefined, 2));\n }\n getChannelzInfo() {\n return {\n state: this.connectivityState,\n trace: this.channelzTrace,\n callTracker: this.callTracker,\n children: this.childrenTracker.getChildLists(),\n target: this.subchannelAddressString,\n };\n }\n trace(text) {\n logging.trace(constants_1.LogVerbosity.DEBUG, TRACER_NAME, '(' +\n this.channelzRef.id +\n ') ' +\n this.subchannelAddressString +\n ' ' +\n text);\n }\n refTrace(text) {\n logging.trace(constants_1.LogVerbosity.DEBUG, 'subchannel_refcount', '(' +\n this.channelzRef.id +\n ') ' +\n this.subchannelAddressString +\n ' ' +\n text);\n }\n handleBackoffTimer() {\n if (this.continueConnecting) {\n this.transitionToState([connectivity_state_1.ConnectivityState.TRANSIENT_FAILURE], connectivity_state_1.ConnectivityState.CONNECTING);\n }\n else {\n this.transitionToState([connectivity_state_1.ConnectivityState.TRANSIENT_FAILURE], connectivity_state_1.ConnectivityState.IDLE);\n }\n }\n /**\n * Start a backoff timer with the current nextBackoff timeout\n */\n startBackoff() {\n this.backoffTimeout.runOnce();\n }\n stopBackoff() {\n this.backoffTimeout.stop();\n this.backoffTimeout.reset();\n }\n startConnectingInternal() {\n let options = this.options;\n if (options['grpc.keepalive_time_ms']) {\n const adjustedKeepaliveTime = Math.min(this.keepaliveTime, KEEPALIVE_MAX_TIME_MS);\n options = Object.assign(Object.assign({}, options), { 'grpc.keepalive_time_ms': adjustedKeepaliveTime });\n }\n this.connector\n .connect(this.subchannelAddress, this.credentials, options)\n .then(transport => {\n if (this.transitionToState([connectivity_state_1.ConnectivityState.CONNECTING], connectivity_state_1.ConnectivityState.READY)) {\n this.transport = transport;\n if (this.channelzEnabled) {\n this.childrenTracker.refChild(transport.getChannelzRef());\n }\n transport.addDisconnectListener(tooManyPings => {\n this.transitionToState([connectivity_state_1.ConnectivityState.READY], connectivity_state_1.ConnectivityState.IDLE);\n if (tooManyPings && this.keepaliveTime > 0) {\n this.keepaliveTime *= 2;\n logging.log(constants_1.LogVerbosity.ERROR, `Connection to ${(0, uri_parser_1.uriToString)(this.channelTarget)} at ${this.subchannelAddressString} rejected by server because of excess pings. Increasing ping interval to ${this.keepaliveTime} ms`);\n }\n });\n }\n else {\n /* If we can't transition from CONNECTING to READY here, we will\n * not be using this transport, so release its resources. */\n transport.shutdown();\n }\n }, error => {\n this.transitionToState([connectivity_state_1.ConnectivityState.CONNECTING], connectivity_state_1.ConnectivityState.TRANSIENT_FAILURE, `${error}`);\n });\n }\n /**\n * Initiate a state transition from any element of oldStates to the new\n * state. If the current connectivityState is not in oldStates, do nothing.\n * @param oldStates The set of states to transition from\n * @param newState The state to transition to\n * @returns True if the state changed, false otherwise\n */\n transitionToState(oldStates, newState, errorMessage) {\n var _a, _b;\n if (oldStates.indexOf(this.connectivityState) === -1) {\n return false;\n }\n this.trace(connectivity_state_1.ConnectivityState[this.connectivityState] +\n ' -> ' +\n connectivity_state_1.ConnectivityState[newState]);\n if (this.channelzEnabled) {\n this.channelzTrace.addTrace('CT_INFO', 'Connectivity state change to ' + connectivity_state_1.ConnectivityState[newState]);\n }\n const previousState = this.connectivityState;\n this.connectivityState = newState;\n switch (newState) {\n case connectivity_state_1.ConnectivityState.READY:\n this.stopBackoff();\n break;\n case connectivity_state_1.ConnectivityState.CONNECTING:\n this.startBackoff();\n this.startConnectingInternal();\n this.continueConnecting = false;\n break;\n case connectivity_state_1.ConnectivityState.TRANSIENT_FAILURE:\n if (this.channelzEnabled && this.transport) {\n this.childrenTracker.unrefChild(this.transport.getChannelzRef());\n }\n (_a = this.transport) === null || _a === void 0 ? void 0 : _a.shutdown();\n this.transport = null;\n /* If the backoff timer has already ended by the time we get to the\n * TRANSIENT_FAILURE state, we want to immediately transition out of\n * TRANSIENT_FAILURE as though the backoff timer is ending right now */\n if (!this.backoffTimeout.isRunning()) {\n process.nextTick(() => {\n this.handleBackoffTimer();\n });\n }\n break;\n case connectivity_state_1.ConnectivityState.IDLE:\n if (this.channelzEnabled && this.transport) {\n this.childrenTracker.unrefChild(this.transport.getChannelzRef());\n }\n (_b = this.transport) === null || _b === void 0 ? void 0 : _b.shutdown();\n this.transport = null;\n break;\n default:\n throw new Error(`Invalid state: unknown ConnectivityState ${newState}`);\n }\n for (const listener of this.stateListeners) {\n listener(this, previousState, newState, this.keepaliveTime, errorMessage);\n }\n return true;\n }\n ref() {\n this.refTrace('refcount ' + this.refcount + ' -> ' + (this.refcount + 1));\n this.refcount += 1;\n }\n unref() {\n this.refTrace('refcount ' + this.refcount + ' -> ' + (this.refcount - 1));\n this.refcount -= 1;\n if (this.refcount === 0) {\n this.channelzTrace.addTrace('CT_INFO', 'Shutting down');\n (0, channelz_1.unregisterChannelzRef)(this.channelzRef);\n process.nextTick(() => {\n this.transitionToState([connectivity_state_1.ConnectivityState.CONNECTING, connectivity_state_1.ConnectivityState.READY], connectivity_state_1.ConnectivityState.IDLE);\n });\n }\n }\n unrefIfOneRef() {\n if (this.refcount === 1) {\n this.unref();\n return true;\n }\n return false;\n }\n createCall(metadata, host, method, listener) {\n if (!this.transport) {\n throw new Error('Cannot create call, subchannel not READY');\n }\n let statsTracker;\n if (this.channelzEnabled) {\n this.callTracker.addCallStarted();\n this.streamTracker.addCallStarted();\n statsTracker = {\n onCallEnd: status => {\n if (status.code === constants_1.Status.OK) {\n this.callTracker.addCallSucceeded();\n }\n else {\n this.callTracker.addCallFailed();\n }\n },\n };\n }\n else {\n statsTracker = {};\n }\n return this.transport.createCall(metadata, host, method, listener, statsTracker);\n }\n /**\n * If the subchannel is currently IDLE, start connecting and switch to the\n * CONNECTING state. If the subchannel is current in TRANSIENT_FAILURE,\n * the next time it would transition to IDLE, start connecting again instead.\n * Otherwise, do nothing.\n */\n startConnecting() {\n process.nextTick(() => {\n /* First, try to transition from IDLE to connecting. If that doesn't happen\n * because the state is not currently IDLE, check if it is\n * TRANSIENT_FAILURE, and if so indicate that it should go back to\n * connecting after the backoff timer ends. Otherwise do nothing */\n if (!this.transitionToState([connectivity_state_1.ConnectivityState.IDLE], connectivity_state_1.ConnectivityState.CONNECTING)) {\n if (this.connectivityState === connectivity_state_1.ConnectivityState.TRANSIENT_FAILURE) {\n this.continueConnecting = true;\n }\n }\n });\n }\n /**\n * Get the subchannel's current connectivity state.\n */\n getConnectivityState() {\n return this.connectivityState;\n }\n /**\n * Add a listener function to be called whenever the subchannel's\n * connectivity state changes.\n * @param listener\n */\n addConnectivityStateListener(listener) {\n this.stateListeners.add(listener);\n }\n /**\n * Remove a listener previously added with `addConnectivityStateListener`\n * @param listener A reference to a function previously passed to\n * `addConnectivityStateListener`\n */\n removeConnectivityStateListener(listener) {\n this.stateListeners.delete(listener);\n }\n /**\n * Reset the backoff timeout, and immediately start connecting if in backoff.\n */\n resetBackoff() {\n process.nextTick(() => {\n this.backoffTimeout.reset();\n this.transitionToState([connectivity_state_1.ConnectivityState.TRANSIENT_FAILURE], connectivity_state_1.ConnectivityState.CONNECTING);\n });\n }\n getAddress() {\n return this.subchannelAddressString;\n }\n getChannelzRef() {\n return this.channelzRef;\n }\n isHealthy() {\n return true;\n }\n addHealthStateWatcher(listener) {\n // Do nothing with the listener\n }\n removeHealthStateWatcher(listener) {\n // Do nothing with the listener\n }\n getRealSubchannel() {\n return this;\n }\n realSubchannelEquals(other) {\n return other.getRealSubchannel() === this;\n }\n throttleKeepalive(newKeepaliveTime) {\n if (newKeepaliveTime > this.keepaliveTime) {\n this.keepaliveTime = newKeepaliveTime;\n }\n }\n}\nexports.Subchannel = Subchannel;\n//# sourceMappingURL=subchannel.js.map","\"use strict\";\n/*\n * Copyright 2019 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getDefaultRootsData = exports.CIPHER_SUITES = void 0;\nconst fs = require(\"fs\");\nexports.CIPHER_SUITES = process.env.GRPC_SSL_CIPHER_SUITES;\nconst DEFAULT_ROOTS_FILE_PATH = process.env.GRPC_DEFAULT_SSL_ROOTS_FILE_PATH;\nlet defaultRootsData = null;\nfunction getDefaultRootsData() {\n if (DEFAULT_ROOTS_FILE_PATH) {\n if (defaultRootsData === null) {\n defaultRootsData = fs.readFileSync(DEFAULT_ROOTS_FILE_PATH);\n }\n return defaultRootsData;\n }\n return null;\n}\nexports.getDefaultRootsData = getDefaultRootsData;\n//# sourceMappingURL=tls-helpers.js.map","\"use strict\";\n/*\n * Copyright 2023 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Http2SubchannelConnector = void 0;\nconst http2 = require(\"http2\");\nconst tls_1 = require(\"tls\");\nconst channelz_1 = require(\"./channelz\");\nconst constants_1 = require(\"./constants\");\nconst http_proxy_1 = require(\"./http_proxy\");\nconst logging = require(\"./logging\");\nconst resolver_1 = require(\"./resolver\");\nconst subchannel_address_1 = require(\"./subchannel-address\");\nconst uri_parser_1 = require(\"./uri-parser\");\nconst net = require(\"net\");\nconst subchannel_call_1 = require(\"./subchannel-call\");\nconst call_number_1 = require(\"./call-number\");\nconst TRACER_NAME = 'transport';\nconst FLOW_CONTROL_TRACER_NAME = 'transport_flowctrl';\nconst clientVersion = require('../../package.json').version;\nconst { HTTP2_HEADER_AUTHORITY, HTTP2_HEADER_CONTENT_TYPE, HTTP2_HEADER_METHOD, HTTP2_HEADER_PATH, HTTP2_HEADER_TE, HTTP2_HEADER_USER_AGENT, } = http2.constants;\nconst KEEPALIVE_TIMEOUT_MS = 20000;\nconst tooManyPingsData = Buffer.from('too_many_pings', 'ascii');\nclass Http2Transport {\n constructor(session, subchannelAddress, options, \n /**\n * Name of the remote server, if it is not the same as the subchannel\n * address, i.e. if connecting through an HTTP CONNECT proxy.\n */\n remoteName) {\n this.session = session;\n this.remoteName = remoteName;\n /**\n * The amount of time in between sending pings\n */\n this.keepaliveTimeMs = -1;\n /**\n * The amount of time to wait for an acknowledgement after sending a ping\n */\n this.keepaliveTimeoutMs = KEEPALIVE_TIMEOUT_MS;\n /**\n * Timer reference for timeout that indicates when to send the next ping\n */\n this.keepaliveTimerId = null;\n /**\n * Indicates that the keepalive timer ran out while there were no active\n * calls, and a ping should be sent the next time a call starts.\n */\n this.pendingSendKeepalivePing = false;\n /**\n * Timer reference tracking when the most recent ping will be considered lost\n */\n this.keepaliveTimeoutId = null;\n /**\n * Indicates whether keepalive pings should be sent without any active calls\n */\n this.keepaliveWithoutCalls = false;\n this.activeCalls = new Set();\n this.disconnectListeners = [];\n this.disconnectHandled = false;\n this.channelzEnabled = true;\n this.keepalivesSent = 0;\n this.messagesSent = 0;\n this.messagesReceived = 0;\n this.lastMessageSentTimestamp = null;\n this.lastMessageReceivedTimestamp = null;\n /* Populate subchannelAddressString and channelzRef before doing anything\n * else, because they are used in the trace methods. */\n this.subchannelAddressString = (0, subchannel_address_1.subchannelAddressToString)(subchannelAddress);\n if (options['grpc.enable_channelz'] === 0) {\n this.channelzEnabled = false;\n this.streamTracker = new channelz_1.ChannelzCallTrackerStub();\n }\n else {\n this.streamTracker = new channelz_1.ChannelzCallTracker();\n }\n this.channelzRef = (0, channelz_1.registerChannelzSocket)(this.subchannelAddressString, () => this.getChannelzInfo(), this.channelzEnabled);\n // Build user-agent string.\n this.userAgent = [\n options['grpc.primary_user_agent'],\n `grpc-node-js/${clientVersion}`,\n options['grpc.secondary_user_agent'],\n ]\n .filter(e => e)\n .join(' '); // remove falsey values first\n if ('grpc.keepalive_time_ms' in options) {\n this.keepaliveTimeMs = options['grpc.keepalive_time_ms'];\n }\n if ('grpc.keepalive_timeout_ms' in options) {\n this.keepaliveTimeoutMs = options['grpc.keepalive_timeout_ms'];\n }\n if ('grpc.keepalive_permit_without_calls' in options) {\n this.keepaliveWithoutCalls =\n options['grpc.keepalive_permit_without_calls'] === 1;\n }\n else {\n this.keepaliveWithoutCalls = false;\n }\n session.once('close', () => {\n this.trace('session closed');\n this.stopKeepalivePings();\n this.handleDisconnect();\n });\n session.once('goaway', (errorCode, lastStreamID, opaqueData) => {\n let tooManyPings = false;\n /* See the last paragraph of\n * https://github.com/grpc/proposal/blob/master/A8-client-side-keepalive.md#basic-keepalive */\n if (errorCode === http2.constants.NGHTTP2_ENHANCE_YOUR_CALM &&\n opaqueData &&\n opaqueData.equals(tooManyPingsData)) {\n tooManyPings = true;\n }\n this.trace('connection closed by GOAWAY with code ' +\n errorCode +\n ' and data ' +\n (opaqueData === null || opaqueData === void 0 ? void 0 : opaqueData.toString()));\n this.reportDisconnectToOwner(tooManyPings);\n });\n session.once('error', error => {\n /* Do nothing here. Any error should also trigger a close event, which is\n * where we want to handle that. */\n this.trace('connection closed with error ' + error.message);\n });\n if (logging.isTracerEnabled(TRACER_NAME)) {\n session.on('remoteSettings', (settings) => {\n this.trace('new settings received' +\n (this.session !== session ? ' on the old connection' : '') +\n ': ' +\n JSON.stringify(settings));\n });\n session.on('localSettings', (settings) => {\n this.trace('local settings acknowledged by remote' +\n (this.session !== session ? ' on the old connection' : '') +\n ': ' +\n JSON.stringify(settings));\n });\n }\n /* Start the keepalive timer last, because this can trigger trace logs,\n * which should only happen after everything else is set up. */\n if (this.keepaliveWithoutCalls) {\n this.maybeStartKeepalivePingTimer();\n }\n }\n getChannelzInfo() {\n var _a, _b, _c;\n const sessionSocket = this.session.socket;\n const remoteAddress = sessionSocket.remoteAddress\n ? (0, subchannel_address_1.stringToSubchannelAddress)(sessionSocket.remoteAddress, sessionSocket.remotePort)\n : null;\n const localAddress = sessionSocket.localAddress\n ? (0, subchannel_address_1.stringToSubchannelAddress)(sessionSocket.localAddress, sessionSocket.localPort)\n : null;\n let tlsInfo;\n if (this.session.encrypted) {\n const tlsSocket = sessionSocket;\n const cipherInfo = tlsSocket.getCipher();\n const certificate = tlsSocket.getCertificate();\n const peerCertificate = tlsSocket.getPeerCertificate();\n tlsInfo = {\n cipherSuiteStandardName: (_a = cipherInfo.standardName) !== null && _a !== void 0 ? _a : null,\n cipherSuiteOtherName: cipherInfo.standardName ? null : cipherInfo.name,\n localCertificate: certificate && 'raw' in certificate ? certificate.raw : null,\n remoteCertificate: peerCertificate && 'raw' in peerCertificate\n ? peerCertificate.raw\n : null,\n };\n }\n else {\n tlsInfo = null;\n }\n const socketInfo = {\n remoteAddress: remoteAddress,\n localAddress: localAddress,\n security: tlsInfo,\n remoteName: this.remoteName,\n streamsStarted: this.streamTracker.callsStarted,\n streamsSucceeded: this.streamTracker.callsSucceeded,\n streamsFailed: this.streamTracker.callsFailed,\n messagesSent: this.messagesSent,\n messagesReceived: this.messagesReceived,\n keepAlivesSent: this.keepalivesSent,\n lastLocalStreamCreatedTimestamp: this.streamTracker.lastCallStartedTimestamp,\n lastRemoteStreamCreatedTimestamp: null,\n lastMessageSentTimestamp: this.lastMessageSentTimestamp,\n lastMessageReceivedTimestamp: this.lastMessageReceivedTimestamp,\n localFlowControlWindow: (_b = this.session.state.localWindowSize) !== null && _b !== void 0 ? _b : null,\n remoteFlowControlWindow: (_c = this.session.state.remoteWindowSize) !== null && _c !== void 0 ? _c : null,\n };\n return socketInfo;\n }\n trace(text) {\n logging.trace(constants_1.LogVerbosity.DEBUG, TRACER_NAME, '(' +\n this.channelzRef.id +\n ') ' +\n this.subchannelAddressString +\n ' ' +\n text);\n }\n keepaliveTrace(text) {\n logging.trace(constants_1.LogVerbosity.DEBUG, 'keepalive', '(' +\n this.channelzRef.id +\n ') ' +\n this.subchannelAddressString +\n ' ' +\n text);\n }\n flowControlTrace(text) {\n logging.trace(constants_1.LogVerbosity.DEBUG, FLOW_CONTROL_TRACER_NAME, '(' +\n this.channelzRef.id +\n ') ' +\n this.subchannelAddressString +\n ' ' +\n text);\n }\n internalsTrace(text) {\n logging.trace(constants_1.LogVerbosity.DEBUG, 'transport_internals', '(' +\n this.channelzRef.id +\n ') ' +\n this.subchannelAddressString +\n ' ' +\n text);\n }\n /**\n * Indicate to the owner of this object that this transport should no longer\n * be used. That happens if the connection drops, or if the server sends a\n * GOAWAY.\n * @param tooManyPings If true, this was triggered by a GOAWAY with data\n * indicating that the session was closed becaues the client sent too many\n * pings.\n * @returns\n */\n reportDisconnectToOwner(tooManyPings) {\n if (this.disconnectHandled) {\n return;\n }\n this.disconnectHandled = true;\n this.disconnectListeners.forEach(listener => listener(tooManyPings));\n }\n /**\n * Handle connection drops, but not GOAWAYs.\n */\n handleDisconnect() {\n this.reportDisconnectToOwner(false);\n /* Give calls an event loop cycle to finish naturally before reporting the\n * disconnnection to them. */\n setImmediate(() => {\n for (const call of this.activeCalls) {\n call.onDisconnect();\n }\n });\n }\n addDisconnectListener(listener) {\n this.disconnectListeners.push(listener);\n }\n clearKeepaliveTimer() {\n if (!this.keepaliveTimerId) {\n return;\n }\n clearTimeout(this.keepaliveTimerId);\n this.keepaliveTimerId = null;\n }\n clearKeepaliveTimeout() {\n if (!this.keepaliveTimeoutId) {\n return;\n }\n clearTimeout(this.keepaliveTimeoutId);\n this.keepaliveTimeoutId = null;\n }\n canSendPing() {\n return (this.keepaliveTimeMs > 0 &&\n (this.keepaliveWithoutCalls || this.activeCalls.size > 0));\n }\n maybeSendPing() {\n var _a, _b;\n this.clearKeepaliveTimer();\n if (!this.canSendPing()) {\n this.pendingSendKeepalivePing = true;\n return;\n }\n if (this.channelzEnabled) {\n this.keepalivesSent += 1;\n }\n this.keepaliveTrace('Sending ping with timeout ' + this.keepaliveTimeoutMs + 'ms');\n if (!this.keepaliveTimeoutId) {\n this.keepaliveTimeoutId = setTimeout(() => {\n this.keepaliveTrace('Ping timeout passed without response');\n this.handleDisconnect();\n }, this.keepaliveTimeoutMs);\n (_b = (_a = this.keepaliveTimeoutId).unref) === null || _b === void 0 ? void 0 : _b.call(_a);\n }\n try {\n this.session.ping((err, duration, payload) => {\n if (err) {\n this.keepaliveTrace('Ping failed with error ' + err.message);\n this.handleDisconnect();\n }\n this.keepaliveTrace('Received ping response');\n this.clearKeepaliveTimeout();\n this.maybeStartKeepalivePingTimer();\n });\n }\n catch (e) {\n /* If we fail to send a ping, the connection is no longer functional, so\n * we should discard it. */\n this.handleDisconnect();\n }\n }\n /**\n * Starts the keepalive ping timer if appropriate. If the timer already ran\n * out while there were no active requests, instead send a ping immediately.\n * If the ping timer is already running or a ping is currently in flight,\n * instead do nothing and wait for them to resolve.\n */\n maybeStartKeepalivePingTimer() {\n var _a, _b;\n if (!this.canSendPing()) {\n return;\n }\n if (this.pendingSendKeepalivePing) {\n this.pendingSendKeepalivePing = false;\n this.maybeSendPing();\n }\n else if (!this.keepaliveTimerId && !this.keepaliveTimeoutId) {\n this.keepaliveTrace('Starting keepalive timer for ' + this.keepaliveTimeMs + 'ms');\n this.keepaliveTimerId = setTimeout(() => {\n this.maybeSendPing();\n }, this.keepaliveTimeMs);\n (_b = (_a = this.keepaliveTimerId).unref) === null || _b === void 0 ? void 0 : _b.call(_a);\n }\n /* Otherwise, there is already either a keepalive timer or a ping pending,\n * wait for those to resolve. */\n }\n stopKeepalivePings() {\n if (this.keepaliveTimerId) {\n clearTimeout(this.keepaliveTimerId);\n this.keepaliveTimerId = null;\n }\n this.clearKeepaliveTimeout();\n }\n removeActiveCall(call) {\n this.activeCalls.delete(call);\n if (this.activeCalls.size === 0) {\n this.session.unref();\n }\n }\n addActiveCall(call) {\n this.activeCalls.add(call);\n if (this.activeCalls.size === 1) {\n this.session.ref();\n if (!this.keepaliveWithoutCalls) {\n this.maybeStartKeepalivePingTimer();\n }\n }\n }\n createCall(metadata, host, method, listener, subchannelCallStatsTracker) {\n const headers = metadata.toHttp2Headers();\n headers[HTTP2_HEADER_AUTHORITY] = host;\n headers[HTTP2_HEADER_USER_AGENT] = this.userAgent;\n headers[HTTP2_HEADER_CONTENT_TYPE] = 'application/grpc';\n headers[HTTP2_HEADER_METHOD] = 'POST';\n headers[HTTP2_HEADER_PATH] = method;\n headers[HTTP2_HEADER_TE] = 'trailers';\n let http2Stream;\n /* In theory, if an error is thrown by session.request because session has\n * become unusable (e.g. because it has received a goaway), this subchannel\n * should soon see the corresponding close or goaway event anyway and leave\n * READY. But we have seen reports that this does not happen\n * (https://github.com/googleapis/nodejs-firestore/issues/1023#issuecomment-653204096)\n * so for defense in depth, we just discard the session when we see an\n * error here.\n */\n try {\n http2Stream = this.session.request(headers);\n }\n catch (e) {\n this.handleDisconnect();\n throw e;\n }\n this.flowControlTrace('local window size: ' +\n this.session.state.localWindowSize +\n ' remote window size: ' +\n this.session.state.remoteWindowSize);\n this.internalsTrace('session.closed=' +\n this.session.closed +\n ' session.destroyed=' +\n this.session.destroyed +\n ' session.socket.destroyed=' +\n this.session.socket.destroyed);\n let eventTracker;\n // eslint-disable-next-line prefer-const\n let call;\n if (this.channelzEnabled) {\n this.streamTracker.addCallStarted();\n eventTracker = {\n addMessageSent: () => {\n var _a;\n this.messagesSent += 1;\n this.lastMessageSentTimestamp = new Date();\n (_a = subchannelCallStatsTracker.addMessageSent) === null || _a === void 0 ? void 0 : _a.call(subchannelCallStatsTracker);\n },\n addMessageReceived: () => {\n var _a;\n this.messagesReceived += 1;\n this.lastMessageReceivedTimestamp = new Date();\n (_a = subchannelCallStatsTracker.addMessageReceived) === null || _a === void 0 ? void 0 : _a.call(subchannelCallStatsTracker);\n },\n onCallEnd: status => {\n var _a;\n (_a = subchannelCallStatsTracker.onCallEnd) === null || _a === void 0 ? void 0 : _a.call(subchannelCallStatsTracker, status);\n this.removeActiveCall(call);\n },\n onStreamEnd: success => {\n var _a;\n if (success) {\n this.streamTracker.addCallSucceeded();\n }\n else {\n this.streamTracker.addCallFailed();\n }\n (_a = subchannelCallStatsTracker.onStreamEnd) === null || _a === void 0 ? void 0 : _a.call(subchannelCallStatsTracker, success);\n },\n };\n }\n else {\n eventTracker = {\n addMessageSent: () => {\n var _a;\n (_a = subchannelCallStatsTracker.addMessageSent) === null || _a === void 0 ? void 0 : _a.call(subchannelCallStatsTracker);\n },\n addMessageReceived: () => {\n var _a;\n (_a = subchannelCallStatsTracker.addMessageReceived) === null || _a === void 0 ? void 0 : _a.call(subchannelCallStatsTracker);\n },\n onCallEnd: status => {\n var _a;\n (_a = subchannelCallStatsTracker.onCallEnd) === null || _a === void 0 ? void 0 : _a.call(subchannelCallStatsTracker, status);\n this.removeActiveCall(call);\n },\n onStreamEnd: success => {\n var _a;\n (_a = subchannelCallStatsTracker.onStreamEnd) === null || _a === void 0 ? void 0 : _a.call(subchannelCallStatsTracker, success);\n },\n };\n }\n call = new subchannel_call_1.Http2SubchannelCall(http2Stream, eventTracker, listener, this, (0, call_number_1.getNextCallNumber)());\n this.addActiveCall(call);\n return call;\n }\n getChannelzRef() {\n return this.channelzRef;\n }\n getPeerName() {\n return this.subchannelAddressString;\n }\n shutdown() {\n this.session.close();\n (0, channelz_1.unregisterChannelzRef)(this.channelzRef);\n }\n}\nclass Http2SubchannelConnector {\n constructor(channelTarget) {\n this.channelTarget = channelTarget;\n this.session = null;\n this.isShutdown = false;\n }\n trace(text) {\n logging.trace(constants_1.LogVerbosity.DEBUG, TRACER_NAME, (0, uri_parser_1.uriToString)(this.channelTarget) + ' ' + text);\n }\n createSession(address, credentials, options, proxyConnectionResult) {\n if (this.isShutdown) {\n return Promise.reject();\n }\n return new Promise((resolve, reject) => {\n var _a, _b, _c, _d;\n let remoteName;\n if (proxyConnectionResult.realTarget) {\n remoteName = (0, uri_parser_1.uriToString)(proxyConnectionResult.realTarget);\n this.trace('creating HTTP/2 session through proxy to ' +\n (0, uri_parser_1.uriToString)(proxyConnectionResult.realTarget));\n }\n else {\n remoteName = null;\n this.trace('creating HTTP/2 session to ' + (0, subchannel_address_1.subchannelAddressToString)(address));\n }\n const targetAuthority = (0, resolver_1.getDefaultAuthority)((_a = proxyConnectionResult.realTarget) !== null && _a !== void 0 ? _a : this.channelTarget);\n let connectionOptions = credentials._getConnectionOptions() || {};\n connectionOptions.maxSendHeaderBlockLength = Number.MAX_SAFE_INTEGER;\n if ('grpc-node.max_session_memory' in options) {\n connectionOptions.maxSessionMemory =\n options['grpc-node.max_session_memory'];\n }\n else {\n /* By default, set a very large max session memory limit, to effectively\n * disable enforcement of the limit. Some testing indicates that Node's\n * behavior degrades badly when this limit is reached, so we solve that\n * by disabling the check entirely. */\n connectionOptions.maxSessionMemory = Number.MAX_SAFE_INTEGER;\n }\n let addressScheme = 'http://';\n if ('secureContext' in connectionOptions) {\n addressScheme = 'https://';\n // If provided, the value of grpc.ssl_target_name_override should be used\n // to override the target hostname when checking server identity.\n // This option is used for testing only.\n if (options['grpc.ssl_target_name_override']) {\n const sslTargetNameOverride = options['grpc.ssl_target_name_override'];\n const originalCheckServerIdentity = (_b = connectionOptions.checkServerIdentity) !== null && _b !== void 0 ? _b : tls_1.checkServerIdentity;\n connectionOptions.checkServerIdentity = (host, cert) => {\n return originalCheckServerIdentity(sslTargetNameOverride, cert);\n };\n connectionOptions.servername = sslTargetNameOverride;\n }\n else {\n const authorityHostname = (_d = (_c = (0, uri_parser_1.splitHostPort)(targetAuthority)) === null || _c === void 0 ? void 0 : _c.host) !== null && _d !== void 0 ? _d : 'localhost';\n // We want to always set servername to support SNI\n connectionOptions.servername = authorityHostname;\n }\n if (proxyConnectionResult.socket) {\n /* This is part of the workaround for\n * https://github.com/nodejs/node/issues/32922. Without that bug,\n * proxyConnectionResult.socket would always be a plaintext socket and\n * this would say\n * connectionOptions.socket = proxyConnectionResult.socket; */\n connectionOptions.createConnection = (authority, option) => {\n return proxyConnectionResult.socket;\n };\n }\n }\n else {\n /* In all but the most recent versions of Node, http2.connect does not use\n * the options when establishing plaintext connections, so we need to\n * establish that connection explicitly. */\n connectionOptions.createConnection = (authority, option) => {\n if (proxyConnectionResult.socket) {\n return proxyConnectionResult.socket;\n }\n else {\n /* net.NetConnectOpts is declared in a way that is more restrictive\n * than what net.connect will actually accept, so we use the type\n * assertion to work around that. */\n return net.connect(address);\n }\n };\n }\n connectionOptions = Object.assign(Object.assign(Object.assign({}, connectionOptions), address), { enableTrace: options['grpc-node.tls_enable_trace'] === 1 });\n /* http2.connect uses the options here:\n * https://github.com/nodejs/node/blob/70c32a6d190e2b5d7b9ff9d5b6a459d14e8b7d59/lib/internal/http2/core.js#L3028-L3036\n * The spread operator overides earlier values with later ones, so any port\n * or host values in the options will be used rather than any values extracted\n * from the first argument. In addition, the path overrides the host and port,\n * as documented for plaintext connections here:\n * https://nodejs.org/api/net.html#net_socket_connect_options_connectlistener\n * and for TLS connections here:\n * https://nodejs.org/api/tls.html#tls_tls_connect_options_callback. In\n * earlier versions of Node, http2.connect passes these options to\n * tls.connect but not net.connect, so in the insecure case we still need\n * to set the createConnection option above to create the connection\n * explicitly. We cannot do that in the TLS case because http2.connect\n * passes necessary additional options to tls.connect.\n * The first argument just needs to be parseable as a URL and the scheme\n * determines whether the connection will be established over TLS or not.\n */\n const session = http2.connect(addressScheme + targetAuthority, connectionOptions);\n this.session = session;\n let errorMessage = 'Failed to connect';\n session.unref();\n session.once('connect', () => {\n session.removeAllListeners();\n resolve(new Http2Transport(session, address, options, remoteName));\n this.session = null;\n });\n session.once('close', () => {\n this.session = null;\n // Leave time for error event to happen before rejecting\n setImmediate(() => {\n reject(`${errorMessage} (${new Date().toISOString()})`);\n });\n });\n session.once('error', error => {\n errorMessage = error.message;\n this.trace('connection failed with error ' + errorMessage);\n });\n });\n }\n connect(address, credentials, options) {\n var _a, _b, _c;\n if (this.isShutdown) {\n return Promise.reject();\n }\n /* Pass connection options through to the proxy so that it's able to\n * upgrade it's connection to support tls if needed.\n * This is a workaround for https://github.com/nodejs/node/issues/32922\n * See https://github.com/grpc/grpc-node/pull/1369 for more info. */\n const connectionOptions = credentials._getConnectionOptions() || {};\n if ('secureContext' in connectionOptions) {\n connectionOptions.ALPNProtocols = ['h2'];\n // If provided, the value of grpc.ssl_target_name_override should be used\n // to override the target hostname when checking server identity.\n // This option is used for testing only.\n if (options['grpc.ssl_target_name_override']) {\n const sslTargetNameOverride = options['grpc.ssl_target_name_override'];\n const originalCheckServerIdentity = (_a = connectionOptions.checkServerIdentity) !== null && _a !== void 0 ? _a : tls_1.checkServerIdentity;\n connectionOptions.checkServerIdentity = (host, cert) => {\n return originalCheckServerIdentity(sslTargetNameOverride, cert);\n };\n connectionOptions.servername = sslTargetNameOverride;\n }\n else {\n if ('grpc.http_connect_target' in options) {\n /* This is more or less how servername will be set in createSession\n * if a connection is successfully established through the proxy.\n * If the proxy is not used, these connectionOptions are discarded\n * anyway */\n const targetPath = (0, resolver_1.getDefaultAuthority)((_b = (0, uri_parser_1.parseUri)(options['grpc.http_connect_target'])) !== null && _b !== void 0 ? _b : {\n path: 'localhost',\n });\n const hostPort = (0, uri_parser_1.splitHostPort)(targetPath);\n connectionOptions.servername = (_c = hostPort === null || hostPort === void 0 ? void 0 : hostPort.host) !== null && _c !== void 0 ? _c : targetPath;\n }\n }\n if (options['grpc-node.tls_enable_trace']) {\n connectionOptions.enableTrace = true;\n }\n }\n return (0, http_proxy_1.getProxiedConnection)(address, options, connectionOptions).then(result => this.createSession(address, credentials, options, result));\n }\n shutdown() {\n var _a;\n this.isShutdown = true;\n (_a = this.session) === null || _a === void 0 ? void 0 : _a.close();\n this.session = null;\n }\n}\nexports.Http2SubchannelConnector = Http2SubchannelConnector;\n//# sourceMappingURL=transport.js.map","\"use strict\";\n/*\n * Copyright 2020 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.uriToString = exports.combineHostPort = exports.splitHostPort = exports.parseUri = void 0;\n/*\n * The groups correspond to URI parts as follows:\n * 1. scheme\n * 2. authority\n * 3. path\n */\nconst URI_REGEX = /^(?:([A-Za-z0-9+.-]+):)?(?:\\/\\/([^/]*)\\/)?(.+)$/;\nfunction parseUri(uriString) {\n const parsedUri = URI_REGEX.exec(uriString);\n if (parsedUri === null) {\n return null;\n }\n return {\n scheme: parsedUri[1],\n authority: parsedUri[2],\n path: parsedUri[3],\n };\n}\nexports.parseUri = parseUri;\nconst NUMBER_REGEX = /^\\d+$/;\nfunction splitHostPort(path) {\n if (path.startsWith('[')) {\n const hostEnd = path.indexOf(']');\n if (hostEnd === -1) {\n return null;\n }\n const host = path.substring(1, hostEnd);\n /* Only an IPv6 address should be in bracketed notation, and an IPv6\n * address should have at least one colon */\n if (host.indexOf(':') === -1) {\n return null;\n }\n if (path.length > hostEnd + 1) {\n if (path[hostEnd + 1] === ':') {\n const portString = path.substring(hostEnd + 2);\n if (NUMBER_REGEX.test(portString)) {\n return {\n host: host,\n port: +portString,\n };\n }\n else {\n return null;\n }\n }\n else {\n return null;\n }\n }\n else {\n return {\n host,\n };\n }\n }\n else {\n const splitPath = path.split(':');\n /* Exactly one colon means that this is host:port. Zero colons means that\n * there is no port. And multiple colons means that this is a bare IPv6\n * address with no port */\n if (splitPath.length === 2) {\n if (NUMBER_REGEX.test(splitPath[1])) {\n return {\n host: splitPath[0],\n port: +splitPath[1],\n };\n }\n else {\n return null;\n }\n }\n else {\n return {\n host: path,\n };\n }\n }\n}\nexports.splitHostPort = splitHostPort;\nfunction combineHostPort(hostPort) {\n if (hostPort.port === undefined) {\n return hostPort.host;\n }\n else {\n // Only an IPv6 host should include a colon\n if (hostPort.host.includes(':')) {\n return `[${hostPort.host}]:${hostPort.port}`;\n }\n else {\n return `${hostPort.host}:${hostPort.port}`;\n }\n }\n}\nexports.combineHostPort = combineHostPort;\nfunction uriToString(uri) {\n let result = '';\n if (uri.scheme !== undefined) {\n result += uri.scheme + ':';\n }\n if (uri.authority !== undefined) {\n result += '//' + uri.authority + '/';\n }\n result += uri.path;\n return result;\n}\nexports.uriToString = uriToString;\n//# sourceMappingURL=uri-parser.js.map","\"use strict\";\n/**\n * @license\n * Copyright 2018 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.loadFileDescriptorSetFromObject = exports.loadFileDescriptorSetFromBuffer = exports.fromJSON = exports.loadSync = exports.load = exports.IdempotencyLevel = exports.isAnyExtension = exports.Long = void 0;\nconst camelCase = require(\"lodash.camelcase\");\nconst Protobuf = require(\"protobufjs\");\nconst descriptor = require(\"protobufjs/ext/descriptor\");\nconst util_1 = require(\"./util\");\nconst Long = require(\"long\");\nexports.Long = Long;\nfunction isAnyExtension(obj) {\n return ('@type' in obj) && (typeof obj['@type'] === 'string');\n}\nexports.isAnyExtension = isAnyExtension;\nvar IdempotencyLevel;\n(function (IdempotencyLevel) {\n IdempotencyLevel[\"IDEMPOTENCY_UNKNOWN\"] = \"IDEMPOTENCY_UNKNOWN\";\n IdempotencyLevel[\"NO_SIDE_EFFECTS\"] = \"NO_SIDE_EFFECTS\";\n IdempotencyLevel[\"IDEMPOTENT\"] = \"IDEMPOTENT\";\n})(IdempotencyLevel = exports.IdempotencyLevel || (exports.IdempotencyLevel = {}));\nconst descriptorOptions = {\n longs: String,\n enums: String,\n bytes: String,\n defaults: true,\n oneofs: true,\n json: true,\n};\nfunction joinName(baseName, name) {\n if (baseName === '') {\n return name;\n }\n else {\n return baseName + '.' + name;\n }\n}\nfunction isHandledReflectionObject(obj) {\n return (obj instanceof Protobuf.Service ||\n obj instanceof Protobuf.Type ||\n obj instanceof Protobuf.Enum);\n}\nfunction isNamespaceBase(obj) {\n return obj instanceof Protobuf.Namespace || obj instanceof Protobuf.Root;\n}\nfunction getAllHandledReflectionObjects(obj, parentName) {\n const objName = joinName(parentName, obj.name);\n if (isHandledReflectionObject(obj)) {\n return [[objName, obj]];\n }\n else {\n if (isNamespaceBase(obj) && typeof obj.nested !== 'undefined') {\n return Object.keys(obj.nested)\n .map(name => {\n return getAllHandledReflectionObjects(obj.nested[name], objName);\n })\n .reduce((accumulator, currentValue) => accumulator.concat(currentValue), []);\n }\n }\n return [];\n}\nfunction createDeserializer(cls, options) {\n return function deserialize(argBuf) {\n return cls.toObject(cls.decode(argBuf), options);\n };\n}\nfunction createSerializer(cls) {\n return function serialize(arg) {\n if (Array.isArray(arg)) {\n throw new Error(`Failed to serialize message: expected object with ${cls.name} structure, got array instead`);\n }\n const message = cls.fromObject(arg);\n return cls.encode(message).finish();\n };\n}\nfunction mapMethodOptions(options) {\n return (options || []).reduce((obj, item) => {\n for (const [key, value] of Object.entries(item)) {\n switch (key) {\n case 'uninterpreted_option':\n obj.uninterpreted_option.push(item.uninterpreted_option);\n break;\n default:\n obj[key] = value;\n }\n }\n return obj;\n }, {\n deprecated: false,\n idempotency_level: IdempotencyLevel.IDEMPOTENCY_UNKNOWN,\n uninterpreted_option: [],\n });\n}\nfunction createMethodDefinition(method, serviceName, options, fileDescriptors) {\n /* This is only ever called after the corresponding root.resolveAll(), so we\n * can assume that the resolved request and response types are non-null */\n const requestType = method.resolvedRequestType;\n const responseType = method.resolvedResponseType;\n return {\n path: '/' + serviceName + '/' + method.name,\n requestStream: !!method.requestStream,\n responseStream: !!method.responseStream,\n requestSerialize: createSerializer(requestType),\n requestDeserialize: createDeserializer(requestType, options),\n responseSerialize: createSerializer(responseType),\n responseDeserialize: createDeserializer(responseType, options),\n // TODO(murgatroid99): Find a better way to handle this\n originalName: camelCase(method.name),\n requestType: createMessageDefinition(requestType, fileDescriptors),\n responseType: createMessageDefinition(responseType, fileDescriptors),\n options: mapMethodOptions(method.parsedOptions),\n };\n}\nfunction createServiceDefinition(service, name, options, fileDescriptors) {\n const def = {};\n for (const method of service.methodsArray) {\n def[method.name] = createMethodDefinition(method, name, options, fileDescriptors);\n }\n return def;\n}\nfunction createMessageDefinition(message, fileDescriptors) {\n const messageDescriptor = message.toDescriptor('proto3');\n return {\n format: 'Protocol Buffer 3 DescriptorProto',\n type: messageDescriptor.$type.toObject(messageDescriptor, descriptorOptions),\n fileDescriptorProtos: fileDescriptors,\n };\n}\nfunction createEnumDefinition(enumType, fileDescriptors) {\n const enumDescriptor = enumType.toDescriptor('proto3');\n return {\n format: 'Protocol Buffer 3 EnumDescriptorProto',\n type: enumDescriptor.$type.toObject(enumDescriptor, descriptorOptions),\n fileDescriptorProtos: fileDescriptors,\n };\n}\n/**\n * function createDefinition(obj: Protobuf.Service, name: string, options:\n * Options): ServiceDefinition; function createDefinition(obj: Protobuf.Type,\n * name: string, options: Options): MessageTypeDefinition; function\n * createDefinition(obj: Protobuf.Enum, name: string, options: Options):\n * EnumTypeDefinition;\n */\nfunction createDefinition(obj, name, options, fileDescriptors) {\n if (obj instanceof Protobuf.Service) {\n return createServiceDefinition(obj, name, options, fileDescriptors);\n }\n else if (obj instanceof Protobuf.Type) {\n return createMessageDefinition(obj, fileDescriptors);\n }\n else if (obj instanceof Protobuf.Enum) {\n return createEnumDefinition(obj, fileDescriptors);\n }\n else {\n throw new Error('Type mismatch in reflection object handling');\n }\n}\nfunction createPackageDefinition(root, options) {\n const def = {};\n root.resolveAll();\n const descriptorList = root.toDescriptor('proto3').file;\n const bufferList = descriptorList.map(value => Buffer.from(descriptor.FileDescriptorProto.encode(value).finish()));\n for (const [name, obj] of getAllHandledReflectionObjects(root, '')) {\n def[name] = createDefinition(obj, name, options, bufferList);\n }\n return def;\n}\nfunction createPackageDefinitionFromDescriptorSet(decodedDescriptorSet, options) {\n options = options || {};\n const root = Protobuf.Root.fromDescriptor(decodedDescriptorSet);\n root.resolveAll();\n return createPackageDefinition(root, options);\n}\n/**\n * Load a .proto file with the specified options.\n * @param filename One or multiple file paths to load. Can be an absolute path\n * or relative to an include path.\n * @param options.keepCase Preserve field names. The default is to change them\n * to camel case.\n * @param options.longs The type that should be used to represent `long` values.\n * Valid options are `Number` and `String`. Defaults to a `Long` object type\n * from a library.\n * @param options.enums The type that should be used to represent `enum` values.\n * The only valid option is `String`. Defaults to the numeric value.\n * @param options.bytes The type that should be used to represent `bytes`\n * values. Valid options are `Array` and `String`. The default is to use\n * `Buffer`.\n * @param options.defaults Set default values on output objects. Defaults to\n * `false`.\n * @param options.arrays Set empty arrays for missing array values even if\n * `defaults` is `false`. Defaults to `false`.\n * @param options.objects Set empty objects for missing object values even if\n * `defaults` is `false`. Defaults to `false`.\n * @param options.oneofs Set virtual oneof properties to the present field's\n * name\n * @param options.json Represent Infinity and NaN as strings in float fields,\n * and automatically decode google.protobuf.Any values.\n * @param options.includeDirs Paths to search for imported `.proto` files.\n */\nfunction load(filename, options) {\n return (0, util_1.loadProtosWithOptions)(filename, options).then(loadedRoot => {\n return createPackageDefinition(loadedRoot, options);\n });\n}\nexports.load = load;\nfunction loadSync(filename, options) {\n const loadedRoot = (0, util_1.loadProtosWithOptionsSync)(filename, options);\n return createPackageDefinition(loadedRoot, options);\n}\nexports.loadSync = loadSync;\nfunction fromJSON(json, options) {\n options = options || {};\n const loadedRoot = Protobuf.Root.fromJSON(json);\n loadedRoot.resolveAll();\n return createPackageDefinition(loadedRoot, options);\n}\nexports.fromJSON = fromJSON;\nfunction loadFileDescriptorSetFromBuffer(descriptorSet, options) {\n const decodedDescriptorSet = descriptor.FileDescriptorSet.decode(descriptorSet);\n return createPackageDefinitionFromDescriptorSet(decodedDescriptorSet, options);\n}\nexports.loadFileDescriptorSetFromBuffer = loadFileDescriptorSetFromBuffer;\nfunction loadFileDescriptorSetFromObject(descriptorSet, options) {\n const decodedDescriptorSet = descriptor.FileDescriptorSet.fromObject(descriptorSet);\n return createPackageDefinitionFromDescriptorSet(decodedDescriptorSet, options);\n}\nexports.loadFileDescriptorSetFromObject = loadFileDescriptorSetFromObject;\n(0, util_1.addCommonProtos)();\n//# sourceMappingURL=index.js.map","\"use strict\";\n/**\n * @license\n * Copyright 2018 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.addCommonProtos = exports.loadProtosWithOptionsSync = exports.loadProtosWithOptions = void 0;\nconst fs = require(\"fs\");\nconst path = require(\"path\");\nconst Protobuf = require(\"protobufjs\");\nfunction addIncludePathResolver(root, includePaths) {\n const originalResolvePath = root.resolvePath;\n root.resolvePath = (origin, target) => {\n if (path.isAbsolute(target)) {\n return target;\n }\n for (const directory of includePaths) {\n const fullPath = path.join(directory, target);\n try {\n fs.accessSync(fullPath, fs.constants.R_OK);\n return fullPath;\n }\n catch (err) {\n continue;\n }\n }\n process.emitWarning(`${target} not found in any of the include paths ${includePaths}`);\n return originalResolvePath(origin, target);\n };\n}\nasync function loadProtosWithOptions(filename, options) {\n const root = new Protobuf.Root();\n options = options || {};\n if (!!options.includeDirs) {\n if (!Array.isArray(options.includeDirs)) {\n return Promise.reject(new Error('The includeDirs option must be an array'));\n }\n addIncludePathResolver(root, options.includeDirs);\n }\n const loadedRoot = await root.load(filename, options);\n loadedRoot.resolveAll();\n return loadedRoot;\n}\nexports.loadProtosWithOptions = loadProtosWithOptions;\nfunction loadProtosWithOptionsSync(filename, options) {\n const root = new Protobuf.Root();\n options = options || {};\n if (!!options.includeDirs) {\n if (!Array.isArray(options.includeDirs)) {\n throw new Error('The includeDirs option must be an array');\n }\n addIncludePathResolver(root, options.includeDirs);\n }\n const loadedRoot = root.loadSync(filename, options);\n loadedRoot.resolveAll();\n return loadedRoot;\n}\nexports.loadProtosWithOptionsSync = loadProtosWithOptionsSync;\n/**\n * Load Google's well-known proto files that aren't exposed by Protobuf.js.\n */\nfunction addCommonProtos() {\n // Protobuf.js exposes: any, duration, empty, field_mask, struct, timestamp,\n // and wrappers. compiler/plugin is excluded in Protobuf.js and here.\n // Using constant strings for compatibility with tools like Webpack\n const apiDescriptor = require('protobufjs/google/protobuf/api.json');\n const descriptorDescriptor = require('protobufjs/google/protobuf/descriptor.json');\n const sourceContextDescriptor = require('protobufjs/google/protobuf/source_context.json');\n const typeDescriptor = require('protobufjs/google/protobuf/type.json');\n Protobuf.common('api', apiDescriptor.nested.google.nested.protobuf.nested);\n Protobuf.common('descriptor', descriptorDescriptor.nested.google.nested.protobuf.nested);\n Protobuf.common('source_context', sourceContextDescriptor.nested.google.nested.protobuf.nested);\n Protobuf.common('type', typeDescriptor.nested.google.nested.protobuf.nested);\n}\nexports.addCommonProtos = addCommonProtos;\n//# sourceMappingURL=util.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"t\", {\n value: true\n});\n\nclass TreeNode {\n constructor(t, e, s = 1) {\n this.i = undefined;\n this.h = undefined;\n this.o = undefined;\n this.u = t;\n this.l = e;\n this.p = s;\n }\n I() {\n let t = this;\n const e = t.o.o === t;\n if (e && t.p === 1) {\n t = t.h;\n } else if (t.i) {\n t = t.i;\n while (t.h) {\n t = t.h;\n }\n } else {\n if (e) {\n return t.o;\n }\n let s = t.o;\n while (s.i === t) {\n t = s;\n s = t.o;\n }\n t = s;\n }\n return t;\n }\n B() {\n let t = this;\n if (t.h) {\n t = t.h;\n while (t.i) {\n t = t.i;\n }\n return t;\n } else {\n let e = t.o;\n while (e.h === t) {\n t = e;\n e = t.o;\n }\n if (t.h !== e) {\n return e;\n } else return t;\n }\n }\n _() {\n const t = this.o;\n const e = this.h;\n const s = e.i;\n if (t.o === this) t.o = e; else if (t.i === this) t.i = e; else t.h = e;\n e.o = t;\n e.i = this;\n this.o = e;\n this.h = s;\n if (s) s.o = this;\n return e;\n }\n g() {\n const t = this.o;\n const e = this.i;\n const s = e.h;\n if (t.o === this) t.o = e; else if (t.i === this) t.i = e; else t.h = e;\n e.o = t;\n e.h = this;\n this.o = e;\n this.i = s;\n if (s) s.o = this;\n return e;\n }\n}\n\nclass TreeNodeEnableIndex extends TreeNode {\n constructor() {\n super(...arguments);\n this.M = 1;\n }\n _() {\n const t = super._();\n this.O();\n t.O();\n return t;\n }\n g() {\n const t = super.g();\n this.O();\n t.O();\n return t;\n }\n O() {\n this.M = 1;\n if (this.i) {\n this.M += this.i.M;\n }\n if (this.h) {\n this.M += this.h.M;\n }\n }\n}\n\nclass ContainerIterator {\n constructor(t = 0) {\n this.iteratorType = t;\n }\n equals(t) {\n return this.T === t.T;\n }\n}\n\nclass Base {\n constructor() {\n this.m = 0;\n }\n get length() {\n return this.m;\n }\n size() {\n return this.m;\n }\n empty() {\n return this.m === 0;\n }\n}\n\nclass Container extends Base {}\n\nfunction throwIteratorAccessError() {\n throw new RangeError(\"Iterator access denied!\");\n}\n\nclass TreeContainer extends Container {\n constructor(t = function(t, e) {\n if (t < e) return -1;\n if (t > e) return 1;\n return 0;\n }, e = false) {\n super();\n this.v = undefined;\n this.A = t;\n this.enableIndex = e;\n this.N = e ? TreeNodeEnableIndex : TreeNode;\n this.C = new this.N;\n }\n R(t, e) {\n let s = this.C;\n while (t) {\n const i = this.A(t.u, e);\n if (i < 0) {\n t = t.h;\n } else if (i > 0) {\n s = t;\n t = t.i;\n } else return t;\n }\n return s;\n }\n K(t, e) {\n let s = this.C;\n while (t) {\n const i = this.A(t.u, e);\n if (i <= 0) {\n t = t.h;\n } else {\n s = t;\n t = t.i;\n }\n }\n return s;\n }\n L(t, e) {\n let s = this.C;\n while (t) {\n const i = this.A(t.u, e);\n if (i < 0) {\n s = t;\n t = t.h;\n } else if (i > 0) {\n t = t.i;\n } else return t;\n }\n return s;\n }\n k(t, e) {\n let s = this.C;\n while (t) {\n const i = this.A(t.u, e);\n if (i < 0) {\n s = t;\n t = t.h;\n } else {\n t = t.i;\n }\n }\n return s;\n }\n P(t) {\n while (true) {\n const e = t.o;\n if (e === this.C) return;\n if (t.p === 1) {\n t.p = 0;\n return;\n }\n if (t === e.i) {\n const s = e.h;\n if (s.p === 1) {\n s.p = 0;\n e.p = 1;\n if (e === this.v) {\n this.v = e._();\n } else e._();\n } else {\n if (s.h && s.h.p === 1) {\n s.p = e.p;\n e.p = 0;\n s.h.p = 0;\n if (e === this.v) {\n this.v = e._();\n } else e._();\n return;\n } else if (s.i && s.i.p === 1) {\n s.p = 1;\n s.i.p = 0;\n s.g();\n } else {\n s.p = 1;\n t = e;\n }\n }\n } else {\n const s = e.i;\n if (s.p === 1) {\n s.p = 0;\n e.p = 1;\n if (e === this.v) {\n this.v = e.g();\n } else e.g();\n } else {\n if (s.i && s.i.p === 1) {\n s.p = e.p;\n e.p = 0;\n s.i.p = 0;\n if (e === this.v) {\n this.v = e.g();\n } else e.g();\n return;\n } else if (s.h && s.h.p === 1) {\n s.p = 1;\n s.h.p = 0;\n s._();\n } else {\n s.p = 1;\n t = e;\n }\n }\n }\n }\n }\n S(t) {\n if (this.m === 1) {\n this.clear();\n return;\n }\n let e = t;\n while (e.i || e.h) {\n if (e.h) {\n e = e.h;\n while (e.i) e = e.i;\n } else {\n e = e.i;\n }\n const s = t.u;\n t.u = e.u;\n e.u = s;\n const i = t.l;\n t.l = e.l;\n e.l = i;\n t = e;\n }\n if (this.C.i === e) {\n this.C.i = e.o;\n } else if (this.C.h === e) {\n this.C.h = e.o;\n }\n this.P(e);\n let s = e.o;\n if (e === s.i) {\n s.i = undefined;\n } else s.h = undefined;\n this.m -= 1;\n this.v.p = 0;\n if (this.enableIndex) {\n while (s !== this.C) {\n s.M -= 1;\n s = s.o;\n }\n }\n }\n U(t) {\n const e = typeof t === \"number\" ? t : undefined;\n const s = typeof t === \"function\" ? t : undefined;\n const i = typeof t === \"undefined\" ? [] : undefined;\n let r = 0;\n let n = this.v;\n const h = [];\n while (h.length || n) {\n if (n) {\n h.push(n);\n n = n.i;\n } else {\n n = h.pop();\n if (r === e) return n;\n i && i.push(n);\n s && s(n, r, this);\n r += 1;\n n = n.h;\n }\n }\n return i;\n }\n j(t) {\n while (true) {\n const e = t.o;\n if (e.p === 0) return;\n const s = e.o;\n if (e === s.i) {\n const i = s.h;\n if (i && i.p === 1) {\n i.p = e.p = 0;\n if (s === this.v) return;\n s.p = 1;\n t = s;\n continue;\n } else if (t === e.h) {\n t.p = 0;\n if (t.i) {\n t.i.o = e;\n }\n if (t.h) {\n t.h.o = s;\n }\n e.h = t.i;\n s.i = t.h;\n t.i = e;\n t.h = s;\n if (s === this.v) {\n this.v = t;\n this.C.o = t;\n } else {\n const e = s.o;\n if (e.i === s) {\n e.i = t;\n } else e.h = t;\n }\n t.o = s.o;\n e.o = t;\n s.o = t;\n s.p = 1;\n } else {\n e.p = 0;\n if (s === this.v) {\n this.v = s.g();\n } else s.g();\n s.p = 1;\n return;\n }\n } else {\n const i = s.i;\n if (i && i.p === 1) {\n i.p = e.p = 0;\n if (s === this.v) return;\n s.p = 1;\n t = s;\n continue;\n } else if (t === e.i) {\n t.p = 0;\n if (t.i) {\n t.i.o = s;\n }\n if (t.h) {\n t.h.o = e;\n }\n s.h = t.i;\n e.i = t.h;\n t.i = s;\n t.h = e;\n if (s === this.v) {\n this.v = t;\n this.C.o = t;\n } else {\n const e = s.o;\n if (e.i === s) {\n e.i = t;\n } else e.h = t;\n }\n t.o = s.o;\n e.o = t;\n s.o = t;\n s.p = 1;\n } else {\n e.p = 0;\n if (s === this.v) {\n this.v = s._();\n } else s._();\n s.p = 1;\n return;\n }\n }\n if (this.enableIndex) {\n e.O();\n s.O();\n t.O();\n }\n return;\n }\n }\n q(t, e, s) {\n if (this.v === undefined) {\n this.m += 1;\n this.v = new this.N(t, e, 0);\n this.v.o = this.C;\n this.C.o = this.C.i = this.C.h = this.v;\n return this.m;\n }\n let i;\n const r = this.C.i;\n const n = this.A(r.u, t);\n if (n === 0) {\n r.l = e;\n return this.m;\n } else if (n > 0) {\n r.i = new this.N(t, e);\n r.i.o = r;\n i = r.i;\n this.C.i = i;\n } else {\n const r = this.C.h;\n const n = this.A(r.u, t);\n if (n === 0) {\n r.l = e;\n return this.m;\n } else if (n < 0) {\n r.h = new this.N(t, e);\n r.h.o = r;\n i = r.h;\n this.C.h = i;\n } else {\n if (s !== undefined) {\n const r = s.T;\n if (r !== this.C) {\n const s = this.A(r.u, t);\n if (s === 0) {\n r.l = e;\n return this.m;\n } else if (s > 0) {\n const s = r.I();\n const n = this.A(s.u, t);\n if (n === 0) {\n s.l = e;\n return this.m;\n } else if (n < 0) {\n i = new this.N(t, e);\n if (s.h === undefined) {\n s.h = i;\n i.o = s;\n } else {\n r.i = i;\n i.o = r;\n }\n }\n }\n }\n }\n if (i === undefined) {\n i = this.v;\n while (true) {\n const s = this.A(i.u, t);\n if (s > 0) {\n if (i.i === undefined) {\n i.i = new this.N(t, e);\n i.i.o = i;\n i = i.i;\n break;\n }\n i = i.i;\n } else if (s < 0) {\n if (i.h === undefined) {\n i.h = new this.N(t, e);\n i.h.o = i;\n i = i.h;\n break;\n }\n i = i.h;\n } else {\n i.l = e;\n return this.m;\n }\n }\n }\n }\n }\n if (this.enableIndex) {\n let t = i.o;\n while (t !== this.C) {\n t.M += 1;\n t = t.o;\n }\n }\n this.j(i);\n this.m += 1;\n return this.m;\n }\n H(t, e) {\n while (t) {\n const s = this.A(t.u, e);\n if (s < 0) {\n t = t.h;\n } else if (s > 0) {\n t = t.i;\n } else return t;\n }\n return t || this.C;\n }\n clear() {\n this.m = 0;\n this.v = undefined;\n this.C.o = undefined;\n this.C.i = this.C.h = undefined;\n }\n updateKeyByIterator(t, e) {\n const s = t.T;\n if (s === this.C) {\n throwIteratorAccessError();\n }\n if (this.m === 1) {\n s.u = e;\n return true;\n }\n const i = s.B().u;\n if (s === this.C.i) {\n if (this.A(i, e) > 0) {\n s.u = e;\n return true;\n }\n return false;\n }\n const r = s.I().u;\n if (s === this.C.h) {\n if (this.A(r, e) < 0) {\n s.u = e;\n return true;\n }\n return false;\n }\n if (this.A(r, e) >= 0 || this.A(i, e) <= 0) return false;\n s.u = e;\n return true;\n }\n eraseElementByPos(t) {\n if (t < 0 || t > this.m - 1) {\n throw new RangeError;\n }\n const e = this.U(t);\n this.S(e);\n return this.m;\n }\n eraseElementByKey(t) {\n if (this.m === 0) return false;\n const e = this.H(this.v, t);\n if (e === this.C) return false;\n this.S(e);\n return true;\n }\n eraseElementByIterator(t) {\n const e = t.T;\n if (e === this.C) {\n throwIteratorAccessError();\n }\n const s = e.h === undefined;\n const i = t.iteratorType === 0;\n if (i) {\n if (s) t.next();\n } else {\n if (!s || e.i === undefined) t.next();\n }\n this.S(e);\n return t;\n }\n getHeight() {\n if (this.m === 0) return 0;\n function traversal(t) {\n if (!t) return 0;\n return Math.max(traversal(t.i), traversal(t.h)) + 1;\n }\n return traversal(this.v);\n }\n}\n\nclass TreeIterator extends ContainerIterator {\n constructor(t, e, s) {\n super(s);\n this.T = t;\n this.C = e;\n if (this.iteratorType === 0) {\n this.pre = function() {\n if (this.T === this.C.i) {\n throwIteratorAccessError();\n }\n this.T = this.T.I();\n return this;\n };\n this.next = function() {\n if (this.T === this.C) {\n throwIteratorAccessError();\n }\n this.T = this.T.B();\n return this;\n };\n } else {\n this.pre = function() {\n if (this.T === this.C.h) {\n throwIteratorAccessError();\n }\n this.T = this.T.B();\n return this;\n };\n this.next = function() {\n if (this.T === this.C) {\n throwIteratorAccessError();\n }\n this.T = this.T.I();\n return this;\n };\n }\n }\n get index() {\n let t = this.T;\n const e = this.C.o;\n if (t === this.C) {\n if (e) {\n return e.M - 1;\n }\n return 0;\n }\n let s = 0;\n if (t.i) {\n s += t.i.M;\n }\n while (t !== e) {\n const e = t.o;\n if (t === e.h) {\n s += 1;\n if (e.i) {\n s += e.i.M;\n }\n }\n t = e;\n }\n return s;\n }\n isAccessible() {\n return this.T !== this.C;\n }\n}\n\nclass OrderedMapIterator extends TreeIterator {\n constructor(t, e, s, i) {\n super(t, e, i);\n this.container = s;\n }\n get pointer() {\n if (this.T === this.C) {\n throwIteratorAccessError();\n }\n const t = this;\n return new Proxy([], {\n get(e, s) {\n if (s === \"0\") return t.T.u; else if (s === \"1\") return t.T.l;\n e[0] = t.T.u;\n e[1] = t.T.l;\n return e[s];\n },\n set(e, s, i) {\n if (s !== \"1\") {\n throw new TypeError(\"prop must be 1\");\n }\n t.T.l = i;\n return true;\n }\n });\n }\n copy() {\n return new OrderedMapIterator(this.T, this.C, this.container, this.iteratorType);\n }\n}\n\nclass OrderedMap extends TreeContainer {\n constructor(t = [], e, s) {\n super(e, s);\n const i = this;\n t.forEach((function(t) {\n i.setElement(t[0], t[1]);\n }));\n }\n begin() {\n return new OrderedMapIterator(this.C.i || this.C, this.C, this);\n }\n end() {\n return new OrderedMapIterator(this.C, this.C, this);\n }\n rBegin() {\n return new OrderedMapIterator(this.C.h || this.C, this.C, this, 1);\n }\n rEnd() {\n return new OrderedMapIterator(this.C, this.C, this, 1);\n }\n front() {\n if (this.m === 0) return;\n const t = this.C.i;\n return [ t.u, t.l ];\n }\n back() {\n if (this.m === 0) return;\n const t = this.C.h;\n return [ t.u, t.l ];\n }\n lowerBound(t) {\n const e = this.R(this.v, t);\n return new OrderedMapIterator(e, this.C, this);\n }\n upperBound(t) {\n const e = this.K(this.v, t);\n return new OrderedMapIterator(e, this.C, this);\n }\n reverseLowerBound(t) {\n const e = this.L(this.v, t);\n return new OrderedMapIterator(e, this.C, this);\n }\n reverseUpperBound(t) {\n const e = this.k(this.v, t);\n return new OrderedMapIterator(e, this.C, this);\n }\n forEach(t) {\n this.U((function(e, s, i) {\n t([ e.u, e.l ], s, i);\n }));\n }\n setElement(t, e, s) {\n return this.q(t, e, s);\n }\n getElementByPos(t) {\n if (t < 0 || t > this.m - 1) {\n throw new RangeError;\n }\n const e = this.U(t);\n return [ e.u, e.l ];\n }\n find(t) {\n const e = this.H(this.v, t);\n return new OrderedMapIterator(e, this.C, this);\n }\n getElementByKey(t) {\n const e = this.H(this.v, t);\n return e.l;\n }\n union(t) {\n const e = this;\n t.forEach((function(t) {\n e.setElement(t[0], t[1]);\n }));\n return this.m;\n }\n * [Symbol.iterator]() {\n const t = this.m;\n const e = this.U();\n for (let s = 0; s < t; ++s) {\n const t = e[s];\n yield [ t.u, t.l ];\n }\n }\n}\n\nexports.OrderedMap = OrderedMap;\n//# sourceMappingURL=index.js.map\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// pkg/dist-src/index.js\nvar dist_src_exports = {};\n__export(dist_src_exports, {\n createTokenAuth: () => createTokenAuth\n});\nmodule.exports = __toCommonJS(dist_src_exports);\n\n// pkg/dist-src/auth.js\nvar REGEX_IS_INSTALLATION_LEGACY = /^v1\\./;\nvar REGEX_IS_INSTALLATION = /^ghs_/;\nvar REGEX_IS_USER_TO_SERVER = /^ghu_/;\nasync function auth(token) {\n const isApp = token.split(/\\./).length === 3;\n const isInstallation = REGEX_IS_INSTALLATION_LEGACY.test(token) || REGEX_IS_INSTALLATION.test(token);\n const isUserToServer = REGEX_IS_USER_TO_SERVER.test(token);\n const tokenType = isApp ? \"app\" : isInstallation ? \"installation\" : isUserToServer ? \"user-to-server\" : \"oauth\";\n return {\n type: \"token\",\n token,\n tokenType\n };\n}\n\n// pkg/dist-src/with-authorization-prefix.js\nfunction withAuthorizationPrefix(token) {\n if (token.split(/\\./).length === 3) {\n return `bearer ${token}`;\n }\n return `token ${token}`;\n}\n\n// pkg/dist-src/hook.js\nasync function hook(token, request, route, parameters) {\n const endpoint = request.endpoint.merge(\n route,\n parameters\n );\n endpoint.headers.authorization = withAuthorizationPrefix(token);\n return request(endpoint);\n}\n\n// pkg/dist-src/index.js\nvar createTokenAuth = function createTokenAuth2(token) {\n if (!token) {\n throw new Error(\"[@octokit/auth-token] No token passed to createTokenAuth\");\n }\n if (typeof token !== \"string\") {\n throw new Error(\n \"[@octokit/auth-token] Token passed to createTokenAuth is not a string\"\n );\n }\n token = token.replace(/^(token|bearer) +/i, \"\");\n return Object.assign(auth.bind(null, token), {\n hook: hook.bind(null, token)\n });\n};\n// Annotate the CommonJS export names for ESM import in node:\n0 && (module.exports = {\n createTokenAuth\n});\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// pkg/dist-src/index.js\nvar dist_src_exports = {};\n__export(dist_src_exports, {\n Octokit: () => Octokit\n});\nmodule.exports = __toCommonJS(dist_src_exports);\nvar import_universal_user_agent = require(\"universal-user-agent\");\nvar import_before_after_hook = require(\"before-after-hook\");\nvar import_request = require(\"@octokit/request\");\nvar import_graphql = require(\"@octokit/graphql\");\nvar import_auth_token = require(\"@octokit/auth-token\");\n\n// pkg/dist-src/version.js\nvar VERSION = \"5.2.0\";\n\n// pkg/dist-src/index.js\nvar noop = () => {\n};\nvar consoleWarn = console.warn.bind(console);\nvar consoleError = console.error.bind(console);\nvar userAgentTrail = `octokit-core.js/${VERSION} ${(0, import_universal_user_agent.getUserAgent)()}`;\nvar Octokit = class {\n static {\n this.VERSION = VERSION;\n }\n static defaults(defaults) {\n const OctokitWithDefaults = class extends this {\n constructor(...args) {\n const options = args[0] || {};\n if (typeof defaults === \"function\") {\n super(defaults(options));\n return;\n }\n super(\n Object.assign(\n {},\n defaults,\n options,\n options.userAgent && defaults.userAgent ? {\n userAgent: `${options.userAgent} ${defaults.userAgent}`\n } : null\n )\n );\n }\n };\n return OctokitWithDefaults;\n }\n static {\n this.plugins = [];\n }\n /**\n * Attach a plugin (or many) to your Octokit instance.\n *\n * @example\n * const API = Octokit.plugin(plugin1, plugin2, plugin3, ...)\n */\n static plugin(...newPlugins) {\n const currentPlugins = this.plugins;\n const NewOctokit = class extends this {\n static {\n this.plugins = currentPlugins.concat(\n newPlugins.filter((plugin) => !currentPlugins.includes(plugin))\n );\n }\n };\n return NewOctokit;\n }\n constructor(options = {}) {\n const hook = new import_before_after_hook.Collection();\n const requestDefaults = {\n baseUrl: import_request.request.endpoint.DEFAULTS.baseUrl,\n headers: {},\n request: Object.assign({}, options.request, {\n // @ts-ignore internal usage only, no need to type\n hook: hook.bind(null, \"request\")\n }),\n mediaType: {\n previews: [],\n format: \"\"\n }\n };\n requestDefaults.headers[\"user-agent\"] = options.userAgent ? `${options.userAgent} ${userAgentTrail}` : userAgentTrail;\n if (options.baseUrl) {\n requestDefaults.baseUrl = options.baseUrl;\n }\n if (options.previews) {\n requestDefaults.mediaType.previews = options.previews;\n }\n if (options.timeZone) {\n requestDefaults.headers[\"time-zone\"] = options.timeZone;\n }\n this.request = import_request.request.defaults(requestDefaults);\n this.graphql = (0, import_graphql.withCustomRequest)(this.request).defaults(requestDefaults);\n this.log = Object.assign(\n {\n debug: noop,\n info: noop,\n warn: consoleWarn,\n error: consoleError\n },\n options.log\n );\n this.hook = hook;\n if (!options.authStrategy) {\n if (!options.auth) {\n this.auth = async () => ({\n type: \"unauthenticated\"\n });\n } else {\n const auth = (0, import_auth_token.createTokenAuth)(options.auth);\n hook.wrap(\"request\", auth.hook);\n this.auth = auth;\n }\n } else {\n const { authStrategy, ...otherOptions } = options;\n const auth = authStrategy(\n Object.assign(\n {\n request: this.request,\n log: this.log,\n // we pass the current octokit instance as well as its constructor options\n // to allow for authentication strategies that return a new octokit instance\n // that shares the same internal state as the current one. The original\n // requirement for this was the \"event-octokit\" authentication strategy\n // of https://github.com/probot/octokit-auth-probot.\n octokit: this,\n octokitOptions: otherOptions\n },\n options.auth\n )\n );\n hook.wrap(\"request\", auth.hook);\n this.auth = auth;\n }\n const classConstructor = this.constructor;\n for (let i = 0; i < classConstructor.plugins.length; ++i) {\n Object.assign(this, classConstructor.plugins[i](this, options));\n }\n }\n};\n// Annotate the CommonJS export names for ESM import in node:\n0 && (module.exports = {\n Octokit\n});\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// pkg/dist-src/index.js\nvar dist_src_exports = {};\n__export(dist_src_exports, {\n endpoint: () => endpoint\n});\nmodule.exports = __toCommonJS(dist_src_exports);\n\n// pkg/dist-src/defaults.js\nvar import_universal_user_agent = require(\"universal-user-agent\");\n\n// pkg/dist-src/version.js\nvar VERSION = \"9.0.5\";\n\n// pkg/dist-src/defaults.js\nvar userAgent = `octokit-endpoint.js/${VERSION} ${(0, import_universal_user_agent.getUserAgent)()}`;\nvar DEFAULTS = {\n method: \"GET\",\n baseUrl: \"https://api.github.com\",\n headers: {\n accept: \"application/vnd.github.v3+json\",\n \"user-agent\": userAgent\n },\n mediaType: {\n format: \"\"\n }\n};\n\n// pkg/dist-src/util/lowercase-keys.js\nfunction lowercaseKeys(object) {\n if (!object) {\n return {};\n }\n return Object.keys(object).reduce((newObj, key) => {\n newObj[key.toLowerCase()] = object[key];\n return newObj;\n }, {});\n}\n\n// pkg/dist-src/util/is-plain-object.js\nfunction isPlainObject(value) {\n if (typeof value !== \"object\" || value === null)\n return false;\n if (Object.prototype.toString.call(value) !== \"[object Object]\")\n return false;\n const proto = Object.getPrototypeOf(value);\n if (proto === null)\n return true;\n const Ctor = Object.prototype.hasOwnProperty.call(proto, \"constructor\") && proto.constructor;\n return typeof Ctor === \"function\" && Ctor instanceof Ctor && Function.prototype.call(Ctor) === Function.prototype.call(value);\n}\n\n// pkg/dist-src/util/merge-deep.js\nfunction mergeDeep(defaults, options) {\n const result = Object.assign({}, defaults);\n Object.keys(options).forEach((key) => {\n if (isPlainObject(options[key])) {\n if (!(key in defaults))\n Object.assign(result, { [key]: options[key] });\n else\n result[key] = mergeDeep(defaults[key], options[key]);\n } else {\n Object.assign(result, { [key]: options[key] });\n }\n });\n return result;\n}\n\n// pkg/dist-src/util/remove-undefined-properties.js\nfunction removeUndefinedProperties(obj) {\n for (const key in obj) {\n if (obj[key] === void 0) {\n delete obj[key];\n }\n }\n return obj;\n}\n\n// pkg/dist-src/merge.js\nfunction merge(defaults, route, options) {\n if (typeof route === \"string\") {\n let [method, url] = route.split(\" \");\n options = Object.assign(url ? { method, url } : { url: method }, options);\n } else {\n options = Object.assign({}, route);\n }\n options.headers = lowercaseKeys(options.headers);\n removeUndefinedProperties(options);\n removeUndefinedProperties(options.headers);\n const mergedOptions = mergeDeep(defaults || {}, options);\n if (options.url === \"/graphql\") {\n if (defaults && defaults.mediaType.previews?.length) {\n mergedOptions.mediaType.previews = defaults.mediaType.previews.filter(\n (preview) => !mergedOptions.mediaType.previews.includes(preview)\n ).concat(mergedOptions.mediaType.previews);\n }\n mergedOptions.mediaType.previews = (mergedOptions.mediaType.previews || []).map((preview) => preview.replace(/-preview/, \"\"));\n }\n return mergedOptions;\n}\n\n// pkg/dist-src/util/add-query-parameters.js\nfunction addQueryParameters(url, parameters) {\n const separator = /\\?/.test(url) ? \"&\" : \"?\";\n const names = Object.keys(parameters);\n if (names.length === 0) {\n return url;\n }\n return url + separator + names.map((name) => {\n if (name === \"q\") {\n return \"q=\" + parameters.q.split(\"+\").map(encodeURIComponent).join(\"+\");\n }\n return `${name}=${encodeURIComponent(parameters[name])}`;\n }).join(\"&\");\n}\n\n// pkg/dist-src/util/extract-url-variable-names.js\nvar urlVariableRegex = /\\{[^}]+\\}/g;\nfunction removeNonChars(variableName) {\n return variableName.replace(/^\\W+|\\W+$/g, \"\").split(/,/);\n}\nfunction extractUrlVariableNames(url) {\n const matches = url.match(urlVariableRegex);\n if (!matches) {\n return [];\n }\n return matches.map(removeNonChars).reduce((a, b) => a.concat(b), []);\n}\n\n// pkg/dist-src/util/omit.js\nfunction omit(object, keysToOmit) {\n const result = { __proto__: null };\n for (const key of Object.keys(object)) {\n if (keysToOmit.indexOf(key) === -1) {\n result[key] = object[key];\n }\n }\n return result;\n}\n\n// pkg/dist-src/util/url-template.js\nfunction encodeReserved(str) {\n return str.split(/(%[0-9A-Fa-f]{2})/g).map(function(part) {\n if (!/%[0-9A-Fa-f]/.test(part)) {\n part = encodeURI(part).replace(/%5B/g, \"[\").replace(/%5D/g, \"]\");\n }\n return part;\n }).join(\"\");\n}\nfunction encodeUnreserved(str) {\n return encodeURIComponent(str).replace(/[!'()*]/g, function(c) {\n return \"%\" + c.charCodeAt(0).toString(16).toUpperCase();\n });\n}\nfunction encodeValue(operator, value, key) {\n value = operator === \"+\" || operator === \"#\" ? encodeReserved(value) : encodeUnreserved(value);\n if (key) {\n return encodeUnreserved(key) + \"=\" + value;\n } else {\n return value;\n }\n}\nfunction isDefined(value) {\n return value !== void 0 && value !== null;\n}\nfunction isKeyOperator(operator) {\n return operator === \";\" || operator === \"&\" || operator === \"?\";\n}\nfunction getValues(context, operator, key, modifier) {\n var value = context[key], result = [];\n if (isDefined(value) && value !== \"\") {\n if (typeof value === \"string\" || typeof value === \"number\" || typeof value === \"boolean\") {\n value = value.toString();\n if (modifier && modifier !== \"*\") {\n value = value.substring(0, parseInt(modifier, 10));\n }\n result.push(\n encodeValue(operator, value, isKeyOperator(operator) ? key : \"\")\n );\n } else {\n if (modifier === \"*\") {\n if (Array.isArray(value)) {\n value.filter(isDefined).forEach(function(value2) {\n result.push(\n encodeValue(operator, value2, isKeyOperator(operator) ? key : \"\")\n );\n });\n } else {\n Object.keys(value).forEach(function(k) {\n if (isDefined(value[k])) {\n result.push(encodeValue(operator, value[k], k));\n }\n });\n }\n } else {\n const tmp = [];\n if (Array.isArray(value)) {\n value.filter(isDefined).forEach(function(value2) {\n tmp.push(encodeValue(operator, value2));\n });\n } else {\n Object.keys(value).forEach(function(k) {\n if (isDefined(value[k])) {\n tmp.push(encodeUnreserved(k));\n tmp.push(encodeValue(operator, value[k].toString()));\n }\n });\n }\n if (isKeyOperator(operator)) {\n result.push(encodeUnreserved(key) + \"=\" + tmp.join(\",\"));\n } else if (tmp.length !== 0) {\n result.push(tmp.join(\",\"));\n }\n }\n }\n } else {\n if (operator === \";\") {\n if (isDefined(value)) {\n result.push(encodeUnreserved(key));\n }\n } else if (value === \"\" && (operator === \"&\" || operator === \"?\")) {\n result.push(encodeUnreserved(key) + \"=\");\n } else if (value === \"\") {\n result.push(\"\");\n }\n }\n return result;\n}\nfunction parseUrl(template) {\n return {\n expand: expand.bind(null, template)\n };\n}\nfunction expand(template, context) {\n var operators = [\"+\", \"#\", \".\", \"/\", \";\", \"?\", \"&\"];\n template = template.replace(\n /\\{([^\\{\\}]+)\\}|([^\\{\\}]+)/g,\n function(_, expression, literal) {\n if (expression) {\n let operator = \"\";\n const values = [];\n if (operators.indexOf(expression.charAt(0)) !== -1) {\n operator = expression.charAt(0);\n expression = expression.substr(1);\n }\n expression.split(/,/g).forEach(function(variable) {\n var tmp = /([^:\\*]*)(?::(\\d+)|(\\*))?/.exec(variable);\n values.push(getValues(context, operator, tmp[1], tmp[2] || tmp[3]));\n });\n if (operator && operator !== \"+\") {\n var separator = \",\";\n if (operator === \"?\") {\n separator = \"&\";\n } else if (operator !== \"#\") {\n separator = operator;\n }\n return (values.length !== 0 ? operator : \"\") + values.join(separator);\n } else {\n return values.join(\",\");\n }\n } else {\n return encodeReserved(literal);\n }\n }\n );\n if (template === \"/\") {\n return template;\n } else {\n return template.replace(/\\/$/, \"\");\n }\n}\n\n// pkg/dist-src/parse.js\nfunction parse(options) {\n let method = options.method.toUpperCase();\n let url = (options.url || \"/\").replace(/:([a-z]\\w+)/g, \"{$1}\");\n let headers = Object.assign({}, options.headers);\n let body;\n let parameters = omit(options, [\n \"method\",\n \"baseUrl\",\n \"url\",\n \"headers\",\n \"request\",\n \"mediaType\"\n ]);\n const urlVariableNames = extractUrlVariableNames(url);\n url = parseUrl(url).expand(parameters);\n if (!/^http/.test(url)) {\n url = options.baseUrl + url;\n }\n const omittedParameters = Object.keys(options).filter((option) => urlVariableNames.includes(option)).concat(\"baseUrl\");\n const remainingParameters = omit(parameters, omittedParameters);\n const isBinaryRequest = /application\\/octet-stream/i.test(headers.accept);\n if (!isBinaryRequest) {\n if (options.mediaType.format) {\n headers.accept = headers.accept.split(/,/).map(\n (format) => format.replace(\n /application\\/vnd(\\.\\w+)(\\.v3)?(\\.\\w+)?(\\+json)?$/,\n `application/vnd$1$2.${options.mediaType.format}`\n )\n ).join(\",\");\n }\n if (url.endsWith(\"/graphql\")) {\n if (options.mediaType.previews?.length) {\n const previewsFromAcceptHeader = headers.accept.match(/[\\w-]+(?=-preview)/g) || [];\n headers.accept = previewsFromAcceptHeader.concat(options.mediaType.previews).map((preview) => {\n const format = options.mediaType.format ? `.${options.mediaType.format}` : \"+json\";\n return `application/vnd.github.${preview}-preview${format}`;\n }).join(\",\");\n }\n }\n }\n if ([\"GET\", \"HEAD\"].includes(method)) {\n url = addQueryParameters(url, remainingParameters);\n } else {\n if (\"data\" in remainingParameters) {\n body = remainingParameters.data;\n } else {\n if (Object.keys(remainingParameters).length) {\n body = remainingParameters;\n }\n }\n }\n if (!headers[\"content-type\"] && typeof body !== \"undefined\") {\n headers[\"content-type\"] = \"application/json; charset=utf-8\";\n }\n if ([\"PATCH\", \"PUT\"].includes(method) && typeof body === \"undefined\") {\n body = \"\";\n }\n return Object.assign(\n { method, url, headers },\n typeof body !== \"undefined\" ? { body } : null,\n options.request ? { request: options.request } : null\n );\n}\n\n// pkg/dist-src/endpoint-with-defaults.js\nfunction endpointWithDefaults(defaults, route, options) {\n return parse(merge(defaults, route, options));\n}\n\n// pkg/dist-src/with-defaults.js\nfunction withDefaults(oldDefaults, newDefaults) {\n const DEFAULTS2 = merge(oldDefaults, newDefaults);\n const endpoint2 = endpointWithDefaults.bind(null, DEFAULTS2);\n return Object.assign(endpoint2, {\n DEFAULTS: DEFAULTS2,\n defaults: withDefaults.bind(null, DEFAULTS2),\n merge: merge.bind(null, DEFAULTS2),\n parse\n });\n}\n\n// pkg/dist-src/index.js\nvar endpoint = withDefaults(null, DEFAULTS);\n// Annotate the CommonJS export names for ESM import in node:\n0 && (module.exports = {\n endpoint\n});\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// pkg/dist-src/index.js\nvar dist_src_exports = {};\n__export(dist_src_exports, {\n GraphqlResponseError: () => GraphqlResponseError,\n graphql: () => graphql2,\n withCustomRequest: () => withCustomRequest\n});\nmodule.exports = __toCommonJS(dist_src_exports);\nvar import_request3 = require(\"@octokit/request\");\nvar import_universal_user_agent = require(\"universal-user-agent\");\n\n// pkg/dist-src/version.js\nvar VERSION = \"7.1.0\";\n\n// pkg/dist-src/with-defaults.js\nvar import_request2 = require(\"@octokit/request\");\n\n// pkg/dist-src/graphql.js\nvar import_request = require(\"@octokit/request\");\n\n// pkg/dist-src/error.js\nfunction _buildMessageForResponseErrors(data) {\n return `Request failed due to following response errors:\n` + data.errors.map((e) => ` - ${e.message}`).join(\"\\n\");\n}\nvar GraphqlResponseError = class extends Error {\n constructor(request2, headers, response) {\n super(_buildMessageForResponseErrors(response));\n this.request = request2;\n this.headers = headers;\n this.response = response;\n this.name = \"GraphqlResponseError\";\n this.errors = response.errors;\n this.data = response.data;\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n }\n }\n};\n\n// pkg/dist-src/graphql.js\nvar NON_VARIABLE_OPTIONS = [\n \"method\",\n \"baseUrl\",\n \"url\",\n \"headers\",\n \"request\",\n \"query\",\n \"mediaType\"\n];\nvar FORBIDDEN_VARIABLE_OPTIONS = [\"query\", \"method\", \"url\"];\nvar GHES_V3_SUFFIX_REGEX = /\\/api\\/v3\\/?$/;\nfunction graphql(request2, query, options) {\n if (options) {\n if (typeof query === \"string\" && \"query\" in options) {\n return Promise.reject(\n new Error(`[@octokit/graphql] \"query\" cannot be used as variable name`)\n );\n }\n for (const key in options) {\n if (!FORBIDDEN_VARIABLE_OPTIONS.includes(key))\n continue;\n return Promise.reject(\n new Error(\n `[@octokit/graphql] \"${key}\" cannot be used as variable name`\n )\n );\n }\n }\n const parsedOptions = typeof query === \"string\" ? Object.assign({ query }, options) : query;\n const requestOptions = Object.keys(\n parsedOptions\n ).reduce((result, key) => {\n if (NON_VARIABLE_OPTIONS.includes(key)) {\n result[key] = parsedOptions[key];\n return result;\n }\n if (!result.variables) {\n result.variables = {};\n }\n result.variables[key] = parsedOptions[key];\n return result;\n }, {});\n const baseUrl = parsedOptions.baseUrl || request2.endpoint.DEFAULTS.baseUrl;\n if (GHES_V3_SUFFIX_REGEX.test(baseUrl)) {\n requestOptions.url = baseUrl.replace(GHES_V3_SUFFIX_REGEX, \"/api/graphql\");\n }\n return request2(requestOptions).then((response) => {\n if (response.data.errors) {\n const headers = {};\n for (const key of Object.keys(response.headers)) {\n headers[key] = response.headers[key];\n }\n throw new GraphqlResponseError(\n requestOptions,\n headers,\n response.data\n );\n }\n return response.data.data;\n });\n}\n\n// pkg/dist-src/with-defaults.js\nfunction withDefaults(request2, newDefaults) {\n const newRequest = request2.defaults(newDefaults);\n const newApi = (query, options) => {\n return graphql(newRequest, query, options);\n };\n return Object.assign(newApi, {\n defaults: withDefaults.bind(null, newRequest),\n endpoint: newRequest.endpoint\n });\n}\n\n// pkg/dist-src/index.js\nvar graphql2 = withDefaults(import_request3.request, {\n headers: {\n \"user-agent\": `octokit-graphql.js/${VERSION} ${(0, import_universal_user_agent.getUserAgent)()}`\n },\n method: \"POST\",\n url: \"/graphql\"\n});\nfunction withCustomRequest(customRequest) {\n return withDefaults(customRequest, {\n method: \"POST\",\n url: \"/graphql\"\n });\n}\n// Annotate the CommonJS export names for ESM import in node:\n0 && (module.exports = {\n GraphqlResponseError,\n graphql,\n withCustomRequest\n});\n","\"use strict\";\nvar __create = Object.create;\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __getProtoOf = Object.getPrototypeOf;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(\n // If the importer is in node compatibility mode or this is not an ESM\n // file that has been converted to a CommonJS file using a Babel-\n // compatible transform (i.e. \"__esModule\" has not been set), then set\n // \"default\" to the CommonJS \"module.exports\" for node compatibility.\n isNodeMode || !mod || !mod.__esModule ? __defProp(target, \"default\", { value: mod, enumerable: true }) : target,\n mod\n));\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// pkg/dist-src/index.js\nvar dist_src_exports = {};\n__export(dist_src_exports, {\n RequestError: () => RequestError\n});\nmodule.exports = __toCommonJS(dist_src_exports);\nvar import_deprecation = require(\"deprecation\");\nvar import_once = __toESM(require(\"once\"));\nvar logOnceCode = (0, import_once.default)((deprecation) => console.warn(deprecation));\nvar logOnceHeaders = (0, import_once.default)((deprecation) => console.warn(deprecation));\nvar RequestError = class extends Error {\n constructor(message, statusCode, options) {\n super(message);\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n }\n this.name = \"HttpError\";\n this.status = statusCode;\n let headers;\n if (\"headers\" in options && typeof options.headers !== \"undefined\") {\n headers = options.headers;\n }\n if (\"response\" in options) {\n this.response = options.response;\n headers = options.response.headers;\n }\n const requestCopy = Object.assign({}, options.request);\n if (options.request.headers.authorization) {\n requestCopy.headers = Object.assign({}, options.request.headers, {\n authorization: options.request.headers.authorization.replace(\n / .*$/,\n \" [REDACTED]\"\n )\n });\n }\n requestCopy.url = requestCopy.url.replace(/\\bclient_secret=\\w+/g, \"client_secret=[REDACTED]\").replace(/\\baccess_token=\\w+/g, \"access_token=[REDACTED]\");\n this.request = requestCopy;\n Object.defineProperty(this, \"code\", {\n get() {\n logOnceCode(\n new import_deprecation.Deprecation(\n \"[@octokit/request-error] `error.code` is deprecated, use `error.status`.\"\n )\n );\n return statusCode;\n }\n });\n Object.defineProperty(this, \"headers\", {\n get() {\n logOnceHeaders(\n new import_deprecation.Deprecation(\n \"[@octokit/request-error] `error.headers` is deprecated, use `error.response.headers`.\"\n )\n );\n return headers || {};\n }\n });\n }\n};\n// Annotate the CommonJS export names for ESM import in node:\n0 && (module.exports = {\n RequestError\n});\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// pkg/dist-src/index.js\nvar dist_src_exports = {};\n__export(dist_src_exports, {\n request: () => request\n});\nmodule.exports = __toCommonJS(dist_src_exports);\nvar import_endpoint = require(\"@octokit/endpoint\");\nvar import_universal_user_agent = require(\"universal-user-agent\");\n\n// pkg/dist-src/version.js\nvar VERSION = \"8.4.0\";\n\n// pkg/dist-src/is-plain-object.js\nfunction isPlainObject(value) {\n if (typeof value !== \"object\" || value === null)\n return false;\n if (Object.prototype.toString.call(value) !== \"[object Object]\")\n return false;\n const proto = Object.getPrototypeOf(value);\n if (proto === null)\n return true;\n const Ctor = Object.prototype.hasOwnProperty.call(proto, \"constructor\") && proto.constructor;\n return typeof Ctor === \"function\" && Ctor instanceof Ctor && Function.prototype.call(Ctor) === Function.prototype.call(value);\n}\n\n// pkg/dist-src/fetch-wrapper.js\nvar import_request_error = require(\"@octokit/request-error\");\n\n// pkg/dist-src/get-buffer-response.js\nfunction getBufferResponse(response) {\n return response.arrayBuffer();\n}\n\n// pkg/dist-src/fetch-wrapper.js\nfunction fetchWrapper(requestOptions) {\n var _a, _b, _c, _d;\n const log = requestOptions.request && requestOptions.request.log ? requestOptions.request.log : console;\n const parseSuccessResponseBody = ((_a = requestOptions.request) == null ? void 0 : _a.parseSuccessResponseBody) !== false;\n if (isPlainObject(requestOptions.body) || Array.isArray(requestOptions.body)) {\n requestOptions.body = JSON.stringify(requestOptions.body);\n }\n let headers = {};\n let status;\n let url;\n let { fetch } = globalThis;\n if ((_b = requestOptions.request) == null ? void 0 : _b.fetch) {\n fetch = requestOptions.request.fetch;\n }\n if (!fetch) {\n throw new Error(\n \"fetch is not set. Please pass a fetch implementation as new Octokit({ request: { fetch }}). Learn more at https://github.com/octokit/octokit.js/#fetch-missing\"\n );\n }\n return fetch(requestOptions.url, {\n method: requestOptions.method,\n body: requestOptions.body,\n redirect: (_c = requestOptions.request) == null ? void 0 : _c.redirect,\n headers: requestOptions.headers,\n signal: (_d = requestOptions.request) == null ? void 0 : _d.signal,\n // duplex must be set if request.body is ReadableStream or Async Iterables.\n // See https://fetch.spec.whatwg.org/#dom-requestinit-duplex.\n ...requestOptions.body && { duplex: \"half\" }\n }).then(async (response) => {\n url = response.url;\n status = response.status;\n for (const keyAndValue of response.headers) {\n headers[keyAndValue[0]] = keyAndValue[1];\n }\n if (\"deprecation\" in headers) {\n const matches = headers.link && headers.link.match(/<([^>]+)>; rel=\"deprecation\"/);\n const deprecationLink = matches && matches.pop();\n log.warn(\n `[@octokit/request] \"${requestOptions.method} ${requestOptions.url}\" is deprecated. It is scheduled to be removed on ${headers.sunset}${deprecationLink ? `. See ${deprecationLink}` : \"\"}`\n );\n }\n if (status === 204 || status === 205) {\n return;\n }\n if (requestOptions.method === \"HEAD\") {\n if (status < 400) {\n return;\n }\n throw new import_request_error.RequestError(response.statusText, status, {\n response: {\n url,\n status,\n headers,\n data: void 0\n },\n request: requestOptions\n });\n }\n if (status === 304) {\n throw new import_request_error.RequestError(\"Not modified\", status, {\n response: {\n url,\n status,\n headers,\n data: await getResponseData(response)\n },\n request: requestOptions\n });\n }\n if (status >= 400) {\n const data = await getResponseData(response);\n const error = new import_request_error.RequestError(toErrorMessage(data), status, {\n response: {\n url,\n status,\n headers,\n data\n },\n request: requestOptions\n });\n throw error;\n }\n return parseSuccessResponseBody ? await getResponseData(response) : response.body;\n }).then((data) => {\n return {\n status,\n url,\n headers,\n data\n };\n }).catch((error) => {\n if (error instanceof import_request_error.RequestError)\n throw error;\n else if (error.name === \"AbortError\")\n throw error;\n let message = error.message;\n if (error.name === \"TypeError\" && \"cause\" in error) {\n if (error.cause instanceof Error) {\n message = error.cause.message;\n } else if (typeof error.cause === \"string\") {\n message = error.cause;\n }\n }\n throw new import_request_error.RequestError(message, 500, {\n request: requestOptions\n });\n });\n}\nasync function getResponseData(response) {\n const contentType = response.headers.get(\"content-type\");\n if (/application\\/json/.test(contentType)) {\n return response.json().catch(() => response.text()).catch(() => \"\");\n }\n if (!contentType || /^text\\/|charset=utf-8$/.test(contentType)) {\n return response.text();\n }\n return getBufferResponse(response);\n}\nfunction toErrorMessage(data) {\n if (typeof data === \"string\")\n return data;\n let suffix;\n if (\"documentation_url\" in data) {\n suffix = ` - ${data.documentation_url}`;\n } else {\n suffix = \"\";\n }\n if (\"message\" in data) {\n if (Array.isArray(data.errors)) {\n return `${data.message}: ${data.errors.map(JSON.stringify).join(\", \")}${suffix}`;\n }\n return `${data.message}${suffix}`;\n }\n return `Unknown error: ${JSON.stringify(data)}`;\n}\n\n// pkg/dist-src/with-defaults.js\nfunction withDefaults(oldEndpoint, newDefaults) {\n const endpoint2 = oldEndpoint.defaults(newDefaults);\n const newApi = function(route, parameters) {\n const endpointOptions = endpoint2.merge(route, parameters);\n if (!endpointOptions.request || !endpointOptions.request.hook) {\n return fetchWrapper(endpoint2.parse(endpointOptions));\n }\n const request2 = (route2, parameters2) => {\n return fetchWrapper(\n endpoint2.parse(endpoint2.merge(route2, parameters2))\n );\n };\n Object.assign(request2, {\n endpoint: endpoint2,\n defaults: withDefaults.bind(null, endpoint2)\n });\n return endpointOptions.request.hook(request2, endpointOptions);\n };\n return Object.assign(newApi, {\n endpoint: endpoint2,\n defaults: withDefaults.bind(null, endpoint2)\n });\n}\n\n// pkg/dist-src/index.js\nvar request = withDefaults(import_endpoint.endpoint, {\n headers: {\n \"user-agent\": `octokit-request.js/${VERSION} ${(0, import_universal_user_agent.getUserAgent)()}`\n }\n});\n// Annotate the CommonJS export names for ESM import in node:\n0 && (module.exports = {\n request\n});\n","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ContextAPI = void 0;\nconst NoopContextManager_1 = require(\"../context/NoopContextManager\");\nconst global_utils_1 = require(\"../internal/global-utils\");\nconst diag_1 = require(\"./diag\");\nconst API_NAME = 'context';\nconst NOOP_CONTEXT_MANAGER = new NoopContextManager_1.NoopContextManager();\n/**\n * Singleton object which represents the entry point to the OpenTelemetry Context API\n */\nclass ContextAPI {\n /** Empty private constructor prevents end users from constructing a new instance of the API */\n constructor() { }\n /** Get the singleton instance of the Context API */\n static getInstance() {\n if (!this._instance) {\n this._instance = new ContextAPI();\n }\n return this._instance;\n }\n /**\n * Set the current context manager.\n *\n * @returns true if the context manager was successfully registered, else false\n */\n setGlobalContextManager(contextManager) {\n return (0, global_utils_1.registerGlobal)(API_NAME, contextManager, diag_1.DiagAPI.instance());\n }\n /**\n * Get the currently active context\n */\n active() {\n return this._getContextManager().active();\n }\n /**\n * Execute a function with an active context\n *\n * @param context context to be active during function execution\n * @param fn function to execute in a context\n * @param thisArg optional receiver to be used for calling fn\n * @param args optional arguments forwarded to fn\n */\n with(context, fn, thisArg, ...args) {\n return this._getContextManager().with(context, fn, thisArg, ...args);\n }\n /**\n * Bind a context to a target function or event emitter\n *\n * @param context context to bind to the event emitter or function. Defaults to the currently active context\n * @param target function or event emitter to bind\n */\n bind(context, target) {\n return this._getContextManager().bind(context, target);\n }\n _getContextManager() {\n return (0, global_utils_1.getGlobal)(API_NAME) || NOOP_CONTEXT_MANAGER;\n }\n /** Disable and remove the global context manager */\n disable() {\n this._getContextManager().disable();\n (0, global_utils_1.unregisterGlobal)(API_NAME, diag_1.DiagAPI.instance());\n }\n}\nexports.ContextAPI = ContextAPI;\n//# sourceMappingURL=context.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DiagAPI = void 0;\nconst ComponentLogger_1 = require(\"../diag/ComponentLogger\");\nconst logLevelLogger_1 = require(\"../diag/internal/logLevelLogger\");\nconst types_1 = require(\"../diag/types\");\nconst global_utils_1 = require(\"../internal/global-utils\");\nconst API_NAME = 'diag';\n/**\n * Singleton object which represents the entry point to the OpenTelemetry internal\n * diagnostic API\n */\nclass DiagAPI {\n /**\n * Private internal constructor\n * @private\n */\n constructor() {\n function _logProxy(funcName) {\n return function (...args) {\n const logger = (0, global_utils_1.getGlobal)('diag');\n // shortcut if logger not set\n if (!logger)\n return;\n return logger[funcName](...args);\n };\n }\n // Using self local variable for minification purposes as 'this' cannot be minified\n const self = this;\n // DiagAPI specific functions\n const setLogger = (logger, optionsOrLogLevel = { logLevel: types_1.DiagLogLevel.INFO }) => {\n var _a, _b, _c;\n if (logger === self) {\n // There isn't much we can do here.\n // Logging to the console might break the user application.\n // Try to log to self. If a logger was previously registered it will receive the log.\n const err = new Error('Cannot use diag as the logger for itself. Please use a DiagLogger implementation like ConsoleDiagLogger or a custom implementation');\n self.error((_a = err.stack) !== null && _a !== void 0 ? _a : err.message);\n return false;\n }\n if (typeof optionsOrLogLevel === 'number') {\n optionsOrLogLevel = {\n logLevel: optionsOrLogLevel,\n };\n }\n const oldLogger = (0, global_utils_1.getGlobal)('diag');\n const newLogger = (0, logLevelLogger_1.createLogLevelDiagLogger)((_b = optionsOrLogLevel.logLevel) !== null && _b !== void 0 ? _b : types_1.DiagLogLevel.INFO, logger);\n // There already is an logger registered. We'll let it know before overwriting it.\n if (oldLogger && !optionsOrLogLevel.suppressOverrideMessage) {\n const stack = (_c = new Error().stack) !== null && _c !== void 0 ? _c : '';\n oldLogger.warn(`Current logger will be overwritten from ${stack}`);\n newLogger.warn(`Current logger will overwrite one already registered from ${stack}`);\n }\n return (0, global_utils_1.registerGlobal)('diag', newLogger, self, true);\n };\n self.setLogger = setLogger;\n self.disable = () => {\n (0, global_utils_1.unregisterGlobal)(API_NAME, self);\n };\n self.createComponentLogger = (options) => {\n return new ComponentLogger_1.DiagComponentLogger(options);\n };\n self.verbose = _logProxy('verbose');\n self.debug = _logProxy('debug');\n self.info = _logProxy('info');\n self.warn = _logProxy('warn');\n self.error = _logProxy('error');\n }\n /** Get the singleton instance of the DiagAPI API */\n static instance() {\n if (!this._instance) {\n this._instance = new DiagAPI();\n }\n return this._instance;\n }\n}\nexports.DiagAPI = DiagAPI;\n//# sourceMappingURL=diag.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MetricsAPI = void 0;\nconst NoopMeterProvider_1 = require(\"../metrics/NoopMeterProvider\");\nconst global_utils_1 = require(\"../internal/global-utils\");\nconst diag_1 = require(\"./diag\");\nconst API_NAME = 'metrics';\n/**\n * Singleton object which represents the entry point to the OpenTelemetry Metrics API\n */\nclass MetricsAPI {\n /** Empty private constructor prevents end users from constructing a new instance of the API */\n constructor() { }\n /** Get the singleton instance of the Metrics API */\n static getInstance() {\n if (!this._instance) {\n this._instance = new MetricsAPI();\n }\n return this._instance;\n }\n /**\n * Set the current global meter provider.\n * Returns true if the meter provider was successfully registered, else false.\n */\n setGlobalMeterProvider(provider) {\n return (0, global_utils_1.registerGlobal)(API_NAME, provider, diag_1.DiagAPI.instance());\n }\n /**\n * Returns the global meter provider.\n */\n getMeterProvider() {\n return (0, global_utils_1.getGlobal)(API_NAME) || NoopMeterProvider_1.NOOP_METER_PROVIDER;\n }\n /**\n * Returns a meter from the global meter provider.\n */\n getMeter(name, version, options) {\n return this.getMeterProvider().getMeter(name, version, options);\n }\n /** Remove the global meter provider */\n disable() {\n (0, global_utils_1.unregisterGlobal)(API_NAME, diag_1.DiagAPI.instance());\n }\n}\nexports.MetricsAPI = MetricsAPI;\n//# sourceMappingURL=metrics.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PropagationAPI = void 0;\nconst global_utils_1 = require(\"../internal/global-utils\");\nconst NoopTextMapPropagator_1 = require(\"../propagation/NoopTextMapPropagator\");\nconst TextMapPropagator_1 = require(\"../propagation/TextMapPropagator\");\nconst context_helpers_1 = require(\"../baggage/context-helpers\");\nconst utils_1 = require(\"../baggage/utils\");\nconst diag_1 = require(\"./diag\");\nconst API_NAME = 'propagation';\nconst NOOP_TEXT_MAP_PROPAGATOR = new NoopTextMapPropagator_1.NoopTextMapPropagator();\n/**\n * Singleton object which represents the entry point to the OpenTelemetry Propagation API\n */\nclass PropagationAPI {\n /** Empty private constructor prevents end users from constructing a new instance of the API */\n constructor() {\n this.createBaggage = utils_1.createBaggage;\n this.getBaggage = context_helpers_1.getBaggage;\n this.getActiveBaggage = context_helpers_1.getActiveBaggage;\n this.setBaggage = context_helpers_1.setBaggage;\n this.deleteBaggage = context_helpers_1.deleteBaggage;\n }\n /** Get the singleton instance of the Propagator API */\n static getInstance() {\n if (!this._instance) {\n this._instance = new PropagationAPI();\n }\n return this._instance;\n }\n /**\n * Set the current propagator.\n *\n * @returns true if the propagator was successfully registered, else false\n */\n setGlobalPropagator(propagator) {\n return (0, global_utils_1.registerGlobal)(API_NAME, propagator, diag_1.DiagAPI.instance());\n }\n /**\n * Inject context into a carrier to be propagated inter-process\n *\n * @param context Context carrying tracing data to inject\n * @param carrier carrier to inject context into\n * @param setter Function used to set values on the carrier\n */\n inject(context, carrier, setter = TextMapPropagator_1.defaultTextMapSetter) {\n return this._getGlobalPropagator().inject(context, carrier, setter);\n }\n /**\n * Extract context from a carrier\n *\n * @param context Context which the newly created context will inherit from\n * @param carrier Carrier to extract context from\n * @param getter Function used to extract keys from a carrier\n */\n extract(context, carrier, getter = TextMapPropagator_1.defaultTextMapGetter) {\n return this._getGlobalPropagator().extract(context, carrier, getter);\n }\n /**\n * Return a list of all fields which may be used by the propagator.\n */\n fields() {\n return this._getGlobalPropagator().fields();\n }\n /** Remove the global propagator */\n disable() {\n (0, global_utils_1.unregisterGlobal)(API_NAME, diag_1.DiagAPI.instance());\n }\n _getGlobalPropagator() {\n return (0, global_utils_1.getGlobal)(API_NAME) || NOOP_TEXT_MAP_PROPAGATOR;\n }\n}\nexports.PropagationAPI = PropagationAPI;\n//# sourceMappingURL=propagation.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TraceAPI = void 0;\nconst global_utils_1 = require(\"../internal/global-utils\");\nconst ProxyTracerProvider_1 = require(\"../trace/ProxyTracerProvider\");\nconst spancontext_utils_1 = require(\"../trace/spancontext-utils\");\nconst context_utils_1 = require(\"../trace/context-utils\");\nconst diag_1 = require(\"./diag\");\nconst API_NAME = 'trace';\n/**\n * Singleton object which represents the entry point to the OpenTelemetry Tracing API\n */\nclass TraceAPI {\n /** Empty private constructor prevents end users from constructing a new instance of the API */\n constructor() {\n this._proxyTracerProvider = new ProxyTracerProvider_1.ProxyTracerProvider();\n this.wrapSpanContext = spancontext_utils_1.wrapSpanContext;\n this.isSpanContextValid = spancontext_utils_1.isSpanContextValid;\n this.deleteSpan = context_utils_1.deleteSpan;\n this.getSpan = context_utils_1.getSpan;\n this.getActiveSpan = context_utils_1.getActiveSpan;\n this.getSpanContext = context_utils_1.getSpanContext;\n this.setSpan = context_utils_1.setSpan;\n this.setSpanContext = context_utils_1.setSpanContext;\n }\n /** Get the singleton instance of the Trace API */\n static getInstance() {\n if (!this._instance) {\n this._instance = new TraceAPI();\n }\n return this._instance;\n }\n /**\n * Set the current global tracer.\n *\n * @returns true if the tracer provider was successfully registered, else false\n */\n setGlobalTracerProvider(provider) {\n const success = (0, global_utils_1.registerGlobal)(API_NAME, this._proxyTracerProvider, diag_1.DiagAPI.instance());\n if (success) {\n this._proxyTracerProvider.setDelegate(provider);\n }\n return success;\n }\n /**\n * Returns the global tracer provider.\n */\n getTracerProvider() {\n return (0, global_utils_1.getGlobal)(API_NAME) || this._proxyTracerProvider;\n }\n /**\n * Returns a tracer from the global tracer provider.\n */\n getTracer(name, version) {\n return this.getTracerProvider().getTracer(name, version);\n }\n /** Remove the global tracer provider */\n disable() {\n (0, global_utils_1.unregisterGlobal)(API_NAME, diag_1.DiagAPI.instance());\n this._proxyTracerProvider = new ProxyTracerProvider_1.ProxyTracerProvider();\n }\n}\nexports.TraceAPI = TraceAPI;\n//# sourceMappingURL=trace.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.deleteBaggage = exports.setBaggage = exports.getActiveBaggage = exports.getBaggage = void 0;\nconst context_1 = require(\"../api/context\");\nconst context_2 = require(\"../context/context\");\n/**\n * Baggage key\n */\nconst BAGGAGE_KEY = (0, context_2.createContextKey)('OpenTelemetry Baggage Key');\n/**\n * Retrieve the current baggage from the given context\n *\n * @param {Context} Context that manage all context values\n * @returns {Baggage} Extracted baggage from the context\n */\nfunction getBaggage(context) {\n return context.getValue(BAGGAGE_KEY) || undefined;\n}\nexports.getBaggage = getBaggage;\n/**\n * Retrieve the current baggage from the active/current context\n *\n * @returns {Baggage} Extracted baggage from the context\n */\nfunction getActiveBaggage() {\n return getBaggage(context_1.ContextAPI.getInstance().active());\n}\nexports.getActiveBaggage = getActiveBaggage;\n/**\n * Store a baggage in the given context\n *\n * @param {Context} Context that manage all context values\n * @param {Baggage} baggage that will be set in the actual context\n */\nfunction setBaggage(context, baggage) {\n return context.setValue(BAGGAGE_KEY, baggage);\n}\nexports.setBaggage = setBaggage;\n/**\n * Delete the baggage stored in the given context\n *\n * @param {Context} Context that manage all context values\n */\nfunction deleteBaggage(context) {\n return context.deleteValue(BAGGAGE_KEY);\n}\nexports.deleteBaggage = deleteBaggage;\n//# sourceMappingURL=context-helpers.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BaggageImpl = void 0;\nclass BaggageImpl {\n constructor(entries) {\n this._entries = entries ? new Map(entries) : new Map();\n }\n getEntry(key) {\n const entry = this._entries.get(key);\n if (!entry) {\n return undefined;\n }\n return Object.assign({}, entry);\n }\n getAllEntries() {\n return Array.from(this._entries.entries()).map(([k, v]) => [k, v]);\n }\n setEntry(key, entry) {\n const newBaggage = new BaggageImpl(this._entries);\n newBaggage._entries.set(key, entry);\n return newBaggage;\n }\n removeEntry(key) {\n const newBaggage = new BaggageImpl(this._entries);\n newBaggage._entries.delete(key);\n return newBaggage;\n }\n removeEntries(...keys) {\n const newBaggage = new BaggageImpl(this._entries);\n for (const key of keys) {\n newBaggage._entries.delete(key);\n }\n return newBaggage;\n }\n clear() {\n return new BaggageImpl();\n }\n}\nexports.BaggageImpl = BaggageImpl;\n//# sourceMappingURL=baggage-impl.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.baggageEntryMetadataSymbol = void 0;\n/**\n * Symbol used to make BaggageEntryMetadata an opaque type\n */\nexports.baggageEntryMetadataSymbol = Symbol('BaggageEntryMetadata');\n//# sourceMappingURL=symbol.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.baggageEntryMetadataFromString = exports.createBaggage = void 0;\nconst diag_1 = require(\"../api/diag\");\nconst baggage_impl_1 = require(\"./internal/baggage-impl\");\nconst symbol_1 = require(\"./internal/symbol\");\nconst diag = diag_1.DiagAPI.instance();\n/**\n * Create a new Baggage with optional entries\n *\n * @param entries An array of baggage entries the new baggage should contain\n */\nfunction createBaggage(entries = {}) {\n return new baggage_impl_1.BaggageImpl(new Map(Object.entries(entries)));\n}\nexports.createBaggage = createBaggage;\n/**\n * Create a serializable BaggageEntryMetadata object from a string.\n *\n * @param str string metadata. Format is currently not defined by the spec and has no special meaning.\n *\n */\nfunction baggageEntryMetadataFromString(str) {\n if (typeof str !== 'string') {\n diag.error(`Cannot create baggage metadata from unknown type: ${typeof str}`);\n str = '';\n }\n return {\n __TYPE__: symbol_1.baggageEntryMetadataSymbol,\n toString() {\n return str;\n },\n };\n}\nexports.baggageEntryMetadataFromString = baggageEntryMetadataFromString;\n//# sourceMappingURL=utils.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.context = void 0;\n// Split module-level variable definition into separate files to allow\n// tree-shaking on each api instance.\nconst context_1 = require(\"./api/context\");\n/** Entrypoint for context API */\nexports.context = context_1.ContextAPI.getInstance();\n//# sourceMappingURL=context-api.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NoopContextManager = void 0;\nconst context_1 = require(\"./context\");\nclass NoopContextManager {\n active() {\n return context_1.ROOT_CONTEXT;\n }\n with(_context, fn, thisArg, ...args) {\n return fn.call(thisArg, ...args);\n }\n bind(_context, target) {\n return target;\n }\n enable() {\n return this;\n }\n disable() {\n return this;\n }\n}\nexports.NoopContextManager = NoopContextManager;\n//# sourceMappingURL=NoopContextManager.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ROOT_CONTEXT = exports.createContextKey = void 0;\n/** Get a key to uniquely identify a context value */\nfunction createContextKey(description) {\n // The specification states that for the same input, multiple calls should\n // return different keys. Due to the nature of the JS dependency management\n // system, this creates problems where multiple versions of some package\n // could hold different keys for the same property.\n //\n // Therefore, we use Symbol.for which returns the same key for the same input.\n return Symbol.for(description);\n}\nexports.createContextKey = createContextKey;\nclass BaseContext {\n /**\n * Construct a new context which inherits values from an optional parent context.\n *\n * @param parentContext a context from which to inherit values\n */\n constructor(parentContext) {\n // for minification\n const self = this;\n self._currentContext = parentContext ? new Map(parentContext) : new Map();\n self.getValue = (key) => self._currentContext.get(key);\n self.setValue = (key, value) => {\n const context = new BaseContext(self._currentContext);\n context._currentContext.set(key, value);\n return context;\n };\n self.deleteValue = (key) => {\n const context = new BaseContext(self._currentContext);\n context._currentContext.delete(key);\n return context;\n };\n }\n}\n/** The root context is used as the default parent context when there is no active context */\nexports.ROOT_CONTEXT = new BaseContext();\n//# sourceMappingURL=context.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.diag = void 0;\n// Split module-level variable definition into separate files to allow\n// tree-shaking on each api instance.\nconst diag_1 = require(\"./api/diag\");\n/**\n * Entrypoint for Diag API.\n * Defines Diagnostic handler used for internal diagnostic logging operations.\n * The default provides a Noop DiagLogger implementation which may be changed via the\n * diag.setLogger(logger: DiagLogger) function.\n */\nexports.diag = diag_1.DiagAPI.instance();\n//# sourceMappingURL=diag-api.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DiagComponentLogger = void 0;\nconst global_utils_1 = require(\"../internal/global-utils\");\n/**\n * Component Logger which is meant to be used as part of any component which\n * will add automatically additional namespace in front of the log message.\n * It will then forward all message to global diag logger\n * @example\n * const cLogger = diag.createComponentLogger({ namespace: '@opentelemetry/instrumentation-http' });\n * cLogger.debug('test');\n * // @opentelemetry/instrumentation-http test\n */\nclass DiagComponentLogger {\n constructor(props) {\n this._namespace = props.namespace || 'DiagComponentLogger';\n }\n debug(...args) {\n return logProxy('debug', this._namespace, args);\n }\n error(...args) {\n return logProxy('error', this._namespace, args);\n }\n info(...args) {\n return logProxy('info', this._namespace, args);\n }\n warn(...args) {\n return logProxy('warn', this._namespace, args);\n }\n verbose(...args) {\n return logProxy('verbose', this._namespace, args);\n }\n}\nexports.DiagComponentLogger = DiagComponentLogger;\nfunction logProxy(funcName, namespace, args) {\n const logger = (0, global_utils_1.getGlobal)('diag');\n // shortcut if logger not set\n if (!logger) {\n return;\n }\n args.unshift(namespace);\n return logger[funcName](...args);\n}\n//# sourceMappingURL=ComponentLogger.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DiagConsoleLogger = void 0;\nconst consoleMap = [\n { n: 'error', c: 'error' },\n { n: 'warn', c: 'warn' },\n { n: 'info', c: 'info' },\n { n: 'debug', c: 'debug' },\n { n: 'verbose', c: 'trace' },\n];\n/**\n * A simple Immutable Console based diagnostic logger which will output any messages to the Console.\n * If you want to limit the amount of logging to a specific level or lower use the\n * {@link createLogLevelDiagLogger}\n */\nclass DiagConsoleLogger {\n constructor() {\n function _consoleFunc(funcName) {\n return function (...args) {\n if (console) {\n // Some environments only expose the console when the F12 developer console is open\n // eslint-disable-next-line no-console\n let theFunc = console[funcName];\n if (typeof theFunc !== 'function') {\n // Not all environments support all functions\n // eslint-disable-next-line no-console\n theFunc = console.log;\n }\n // One last final check\n if (typeof theFunc === 'function') {\n return theFunc.apply(console, args);\n }\n }\n };\n }\n for (let i = 0; i < consoleMap.length; i++) {\n this[consoleMap[i].n] = _consoleFunc(consoleMap[i].c);\n }\n }\n}\nexports.DiagConsoleLogger = DiagConsoleLogger;\n//# sourceMappingURL=consoleLogger.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createLogLevelDiagLogger = void 0;\nconst types_1 = require(\"../types\");\nfunction createLogLevelDiagLogger(maxLevel, logger) {\n if (maxLevel < types_1.DiagLogLevel.NONE) {\n maxLevel = types_1.DiagLogLevel.NONE;\n }\n else if (maxLevel > types_1.DiagLogLevel.ALL) {\n maxLevel = types_1.DiagLogLevel.ALL;\n }\n // In case the logger is null or undefined\n logger = logger || {};\n function _filterFunc(funcName, theLevel) {\n const theFunc = logger[funcName];\n if (typeof theFunc === 'function' && maxLevel >= theLevel) {\n return theFunc.bind(logger);\n }\n return function () { };\n }\n return {\n error: _filterFunc('error', types_1.DiagLogLevel.ERROR),\n warn: _filterFunc('warn', types_1.DiagLogLevel.WARN),\n info: _filterFunc('info', types_1.DiagLogLevel.INFO),\n debug: _filterFunc('debug', types_1.DiagLogLevel.DEBUG),\n verbose: _filterFunc('verbose', types_1.DiagLogLevel.VERBOSE),\n };\n}\nexports.createLogLevelDiagLogger = createLogLevelDiagLogger;\n//# sourceMappingURL=logLevelLogger.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DiagLogLevel = void 0;\n/**\n * Defines the available internal logging levels for the diagnostic logger, the numeric values\n * of the levels are defined to match the original values from the initial LogLevel to avoid\n * compatibility/migration issues for any implementation that assume the numeric ordering.\n */\nvar DiagLogLevel;\n(function (DiagLogLevel) {\n /** Diagnostic Logging level setting to disable all logging (except and forced logs) */\n DiagLogLevel[DiagLogLevel[\"NONE\"] = 0] = \"NONE\";\n /** Identifies an error scenario */\n DiagLogLevel[DiagLogLevel[\"ERROR\"] = 30] = \"ERROR\";\n /** Identifies a warning scenario */\n DiagLogLevel[DiagLogLevel[\"WARN\"] = 50] = \"WARN\";\n /** General informational log message */\n DiagLogLevel[DiagLogLevel[\"INFO\"] = 60] = \"INFO\";\n /** General debug log message */\n DiagLogLevel[DiagLogLevel[\"DEBUG\"] = 70] = \"DEBUG\";\n /**\n * Detailed trace level logging should only be used for development, should only be set\n * in a development environment.\n */\n DiagLogLevel[DiagLogLevel[\"VERBOSE\"] = 80] = \"VERBOSE\";\n /** Used to set the logging level to include all logging */\n DiagLogLevel[DiagLogLevel[\"ALL\"] = 9999] = \"ALL\";\n})(DiagLogLevel = exports.DiagLogLevel || (exports.DiagLogLevel = {}));\n//# sourceMappingURL=types.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.trace = exports.propagation = exports.metrics = exports.diag = exports.context = exports.INVALID_SPAN_CONTEXT = exports.INVALID_TRACEID = exports.INVALID_SPANID = exports.isValidSpanId = exports.isValidTraceId = exports.isSpanContextValid = exports.createTraceState = exports.TraceFlags = exports.SpanStatusCode = exports.SpanKind = exports.SamplingDecision = exports.ProxyTracerProvider = exports.ProxyTracer = exports.defaultTextMapSetter = exports.defaultTextMapGetter = exports.ValueType = exports.createNoopMeter = exports.DiagLogLevel = exports.DiagConsoleLogger = exports.ROOT_CONTEXT = exports.createContextKey = exports.baggageEntryMetadataFromString = void 0;\nvar utils_1 = require(\"./baggage/utils\");\nObject.defineProperty(exports, \"baggageEntryMetadataFromString\", { enumerable: true, get: function () { return utils_1.baggageEntryMetadataFromString; } });\n// Context APIs\nvar context_1 = require(\"./context/context\");\nObject.defineProperty(exports, \"createContextKey\", { enumerable: true, get: function () { return context_1.createContextKey; } });\nObject.defineProperty(exports, \"ROOT_CONTEXT\", { enumerable: true, get: function () { return context_1.ROOT_CONTEXT; } });\n// Diag APIs\nvar consoleLogger_1 = require(\"./diag/consoleLogger\");\nObject.defineProperty(exports, \"DiagConsoleLogger\", { enumerable: true, get: function () { return consoleLogger_1.DiagConsoleLogger; } });\nvar types_1 = require(\"./diag/types\");\nObject.defineProperty(exports, \"DiagLogLevel\", { enumerable: true, get: function () { return types_1.DiagLogLevel; } });\n// Metrics APIs\nvar NoopMeter_1 = require(\"./metrics/NoopMeter\");\nObject.defineProperty(exports, \"createNoopMeter\", { enumerable: true, get: function () { return NoopMeter_1.createNoopMeter; } });\nvar Metric_1 = require(\"./metrics/Metric\");\nObject.defineProperty(exports, \"ValueType\", { enumerable: true, get: function () { return Metric_1.ValueType; } });\n// Propagation APIs\nvar TextMapPropagator_1 = require(\"./propagation/TextMapPropagator\");\nObject.defineProperty(exports, \"defaultTextMapGetter\", { enumerable: true, get: function () { return TextMapPropagator_1.defaultTextMapGetter; } });\nObject.defineProperty(exports, \"defaultTextMapSetter\", { enumerable: true, get: function () { return TextMapPropagator_1.defaultTextMapSetter; } });\nvar ProxyTracer_1 = require(\"./trace/ProxyTracer\");\nObject.defineProperty(exports, \"ProxyTracer\", { enumerable: true, get: function () { return ProxyTracer_1.ProxyTracer; } });\nvar ProxyTracerProvider_1 = require(\"./trace/ProxyTracerProvider\");\nObject.defineProperty(exports, \"ProxyTracerProvider\", { enumerable: true, get: function () { return ProxyTracerProvider_1.ProxyTracerProvider; } });\nvar SamplingResult_1 = require(\"./trace/SamplingResult\");\nObject.defineProperty(exports, \"SamplingDecision\", { enumerable: true, get: function () { return SamplingResult_1.SamplingDecision; } });\nvar span_kind_1 = require(\"./trace/span_kind\");\nObject.defineProperty(exports, \"SpanKind\", { enumerable: true, get: function () { return span_kind_1.SpanKind; } });\nvar status_1 = require(\"./trace/status\");\nObject.defineProperty(exports, \"SpanStatusCode\", { enumerable: true, get: function () { return status_1.SpanStatusCode; } });\nvar trace_flags_1 = require(\"./trace/trace_flags\");\nObject.defineProperty(exports, \"TraceFlags\", { enumerable: true, get: function () { return trace_flags_1.TraceFlags; } });\nvar utils_2 = require(\"./trace/internal/utils\");\nObject.defineProperty(exports, \"createTraceState\", { enumerable: true, get: function () { return utils_2.createTraceState; } });\nvar spancontext_utils_1 = require(\"./trace/spancontext-utils\");\nObject.defineProperty(exports, \"isSpanContextValid\", { enumerable: true, get: function () { return spancontext_utils_1.isSpanContextValid; } });\nObject.defineProperty(exports, \"isValidTraceId\", { enumerable: true, get: function () { return spancontext_utils_1.isValidTraceId; } });\nObject.defineProperty(exports, \"isValidSpanId\", { enumerable: true, get: function () { return spancontext_utils_1.isValidSpanId; } });\nvar invalid_span_constants_1 = require(\"./trace/invalid-span-constants\");\nObject.defineProperty(exports, \"INVALID_SPANID\", { enumerable: true, get: function () { return invalid_span_constants_1.INVALID_SPANID; } });\nObject.defineProperty(exports, \"INVALID_TRACEID\", { enumerable: true, get: function () { return invalid_span_constants_1.INVALID_TRACEID; } });\nObject.defineProperty(exports, \"INVALID_SPAN_CONTEXT\", { enumerable: true, get: function () { return invalid_span_constants_1.INVALID_SPAN_CONTEXT; } });\n// Split module-level variable definition into separate files to allow\n// tree-shaking on each api instance.\nconst context_api_1 = require(\"./context-api\");\nObject.defineProperty(exports, \"context\", { enumerable: true, get: function () { return context_api_1.context; } });\nconst diag_api_1 = require(\"./diag-api\");\nObject.defineProperty(exports, \"diag\", { enumerable: true, get: function () { return diag_api_1.diag; } });\nconst metrics_api_1 = require(\"./metrics-api\");\nObject.defineProperty(exports, \"metrics\", { enumerable: true, get: function () { return metrics_api_1.metrics; } });\nconst propagation_api_1 = require(\"./propagation-api\");\nObject.defineProperty(exports, \"propagation\", { enumerable: true, get: function () { return propagation_api_1.propagation; } });\nconst trace_api_1 = require(\"./trace-api\");\nObject.defineProperty(exports, \"trace\", { enumerable: true, get: function () { return trace_api_1.trace; } });\n// Default export.\nexports.default = {\n context: context_api_1.context,\n diag: diag_api_1.diag,\n metrics: metrics_api_1.metrics,\n propagation: propagation_api_1.propagation,\n trace: trace_api_1.trace,\n};\n//# sourceMappingURL=index.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.unregisterGlobal = exports.getGlobal = exports.registerGlobal = void 0;\nconst platform_1 = require(\"../platform\");\nconst version_1 = require(\"../version\");\nconst semver_1 = require(\"./semver\");\nconst major = version_1.VERSION.split('.')[0];\nconst GLOBAL_OPENTELEMETRY_API_KEY = Symbol.for(`opentelemetry.js.api.${major}`);\nconst _global = platform_1._globalThis;\nfunction registerGlobal(type, instance, diag, allowOverride = false) {\n var _a;\n const api = (_global[GLOBAL_OPENTELEMETRY_API_KEY] = (_a = _global[GLOBAL_OPENTELEMETRY_API_KEY]) !== null && _a !== void 0 ? _a : {\n version: version_1.VERSION,\n });\n if (!allowOverride && api[type]) {\n // already registered an API of this type\n const err = new Error(`@opentelemetry/api: Attempted duplicate registration of API: ${type}`);\n diag.error(err.stack || err.message);\n return false;\n }\n if (api.version !== version_1.VERSION) {\n // All registered APIs must be of the same version exactly\n const err = new Error(`@opentelemetry/api: Registration of version v${api.version} for ${type} does not match previously registered API v${version_1.VERSION}`);\n diag.error(err.stack || err.message);\n return false;\n }\n api[type] = instance;\n diag.debug(`@opentelemetry/api: Registered a global for ${type} v${version_1.VERSION}.`);\n return true;\n}\nexports.registerGlobal = registerGlobal;\nfunction getGlobal(type) {\n var _a, _b;\n const globalVersion = (_a = _global[GLOBAL_OPENTELEMETRY_API_KEY]) === null || _a === void 0 ? void 0 : _a.version;\n if (!globalVersion || !(0, semver_1.isCompatible)(globalVersion)) {\n return;\n }\n return (_b = _global[GLOBAL_OPENTELEMETRY_API_KEY]) === null || _b === void 0 ? void 0 : _b[type];\n}\nexports.getGlobal = getGlobal;\nfunction unregisterGlobal(type, diag) {\n diag.debug(`@opentelemetry/api: Unregistering a global for ${type} v${version_1.VERSION}.`);\n const api = _global[GLOBAL_OPENTELEMETRY_API_KEY];\n if (api) {\n delete api[type];\n }\n}\nexports.unregisterGlobal = unregisterGlobal;\n//# sourceMappingURL=global-utils.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isCompatible = exports._makeCompatibilityCheck = void 0;\nconst version_1 = require(\"../version\");\nconst re = /^(\\d+)\\.(\\d+)\\.(\\d+)(-(.+))?$/;\n/**\n * Create a function to test an API version to see if it is compatible with the provided ownVersion.\n *\n * The returned function has the following semantics:\n * - Exact match is always compatible\n * - Major versions must match exactly\n * - 1.x package cannot use global 2.x package\n * - 2.x package cannot use global 1.x package\n * - The minor version of the API module requesting access to the global API must be less than or equal to the minor version of this API\n * - 1.3 package may use 1.4 global because the later global contains all functions 1.3 expects\n * - 1.4 package may NOT use 1.3 global because it may try to call functions which don't exist on 1.3\n * - If the major version is 0, the minor version is treated as the major and the patch is treated as the minor\n * - Patch and build tag differences are not considered at this time\n *\n * @param ownVersion version which should be checked against\n */\nfunction _makeCompatibilityCheck(ownVersion) {\n const acceptedVersions = new Set([ownVersion]);\n const rejectedVersions = new Set();\n const myVersionMatch = ownVersion.match(re);\n if (!myVersionMatch) {\n // we cannot guarantee compatibility so we always return noop\n return () => false;\n }\n const ownVersionParsed = {\n major: +myVersionMatch[1],\n minor: +myVersionMatch[2],\n patch: +myVersionMatch[3],\n prerelease: myVersionMatch[4],\n };\n // if ownVersion has a prerelease tag, versions must match exactly\n if (ownVersionParsed.prerelease != null) {\n return function isExactmatch(globalVersion) {\n return globalVersion === ownVersion;\n };\n }\n function _reject(v) {\n rejectedVersions.add(v);\n return false;\n }\n function _accept(v) {\n acceptedVersions.add(v);\n return true;\n }\n return function isCompatible(globalVersion) {\n if (acceptedVersions.has(globalVersion)) {\n return true;\n }\n if (rejectedVersions.has(globalVersion)) {\n return false;\n }\n const globalVersionMatch = globalVersion.match(re);\n if (!globalVersionMatch) {\n // cannot parse other version\n // we cannot guarantee compatibility so we always noop\n return _reject(globalVersion);\n }\n const globalVersionParsed = {\n major: +globalVersionMatch[1],\n minor: +globalVersionMatch[2],\n patch: +globalVersionMatch[3],\n prerelease: globalVersionMatch[4],\n };\n // if globalVersion has a prerelease tag, versions must match exactly\n if (globalVersionParsed.prerelease != null) {\n return _reject(globalVersion);\n }\n // major versions must match\n if (ownVersionParsed.major !== globalVersionParsed.major) {\n return _reject(globalVersion);\n }\n if (ownVersionParsed.major === 0) {\n if (ownVersionParsed.minor === globalVersionParsed.minor &&\n ownVersionParsed.patch <= globalVersionParsed.patch) {\n return _accept(globalVersion);\n }\n return _reject(globalVersion);\n }\n if (ownVersionParsed.minor <= globalVersionParsed.minor) {\n return _accept(globalVersion);\n }\n return _reject(globalVersion);\n };\n}\nexports._makeCompatibilityCheck = _makeCompatibilityCheck;\n/**\n * Test an API version to see if it is compatible with this API.\n *\n * - Exact match is always compatible\n * - Major versions must match exactly\n * - 1.x package cannot use global 2.x package\n * - 2.x package cannot use global 1.x package\n * - The minor version of the API module requesting access to the global API must be less than or equal to the minor version of this API\n * - 1.3 package may use 1.4 global because the later global contains all functions 1.3 expects\n * - 1.4 package may NOT use 1.3 global because it may try to call functions which don't exist on 1.3\n * - If the major version is 0, the minor version is treated as the major and the patch is treated as the minor\n * - Patch and build tag differences are not considered at this time\n *\n * @param version version of the API requesting an instance of the global API\n */\nexports.isCompatible = _makeCompatibilityCheck(version_1.VERSION);\n//# sourceMappingURL=semver.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.metrics = void 0;\n// Split module-level variable definition into separate files to allow\n// tree-shaking on each api instance.\nconst metrics_1 = require(\"./api/metrics\");\n/** Entrypoint for metrics API */\nexports.metrics = metrics_1.MetricsAPI.getInstance();\n//# sourceMappingURL=metrics-api.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ValueType = void 0;\n/** The Type of value. It describes how the data is reported. */\nvar ValueType;\n(function (ValueType) {\n ValueType[ValueType[\"INT\"] = 0] = \"INT\";\n ValueType[ValueType[\"DOUBLE\"] = 1] = \"DOUBLE\";\n})(ValueType = exports.ValueType || (exports.ValueType = {}));\n//# sourceMappingURL=Metric.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createNoopMeter = exports.NOOP_OBSERVABLE_UP_DOWN_COUNTER_METRIC = exports.NOOP_OBSERVABLE_GAUGE_METRIC = exports.NOOP_OBSERVABLE_COUNTER_METRIC = exports.NOOP_UP_DOWN_COUNTER_METRIC = exports.NOOP_HISTOGRAM_METRIC = exports.NOOP_COUNTER_METRIC = exports.NOOP_METER = exports.NoopObservableUpDownCounterMetric = exports.NoopObservableGaugeMetric = exports.NoopObservableCounterMetric = exports.NoopObservableMetric = exports.NoopHistogramMetric = exports.NoopUpDownCounterMetric = exports.NoopCounterMetric = exports.NoopMetric = exports.NoopMeter = void 0;\n/**\n * NoopMeter is a noop implementation of the {@link Meter} interface. It reuses\n * constant NoopMetrics for all of its methods.\n */\nclass NoopMeter {\n constructor() { }\n /**\n * @see {@link Meter.createHistogram}\n */\n createHistogram(_name, _options) {\n return exports.NOOP_HISTOGRAM_METRIC;\n }\n /**\n * @see {@link Meter.createCounter}\n */\n createCounter(_name, _options) {\n return exports.NOOP_COUNTER_METRIC;\n }\n /**\n * @see {@link Meter.createUpDownCounter}\n */\n createUpDownCounter(_name, _options) {\n return exports.NOOP_UP_DOWN_COUNTER_METRIC;\n }\n /**\n * @see {@link Meter.createObservableGauge}\n */\n createObservableGauge(_name, _options) {\n return exports.NOOP_OBSERVABLE_GAUGE_METRIC;\n }\n /**\n * @see {@link Meter.createObservableCounter}\n */\n createObservableCounter(_name, _options) {\n return exports.NOOP_OBSERVABLE_COUNTER_METRIC;\n }\n /**\n * @see {@link Meter.createObservableUpDownCounter}\n */\n createObservableUpDownCounter(_name, _options) {\n return exports.NOOP_OBSERVABLE_UP_DOWN_COUNTER_METRIC;\n }\n /**\n * @see {@link Meter.addBatchObservableCallback}\n */\n addBatchObservableCallback(_callback, _observables) { }\n /**\n * @see {@link Meter.removeBatchObservableCallback}\n */\n removeBatchObservableCallback(_callback) { }\n}\nexports.NoopMeter = NoopMeter;\nclass NoopMetric {\n}\nexports.NoopMetric = NoopMetric;\nclass NoopCounterMetric extends NoopMetric {\n add(_value, _attributes) { }\n}\nexports.NoopCounterMetric = NoopCounterMetric;\nclass NoopUpDownCounterMetric extends NoopMetric {\n add(_value, _attributes) { }\n}\nexports.NoopUpDownCounterMetric = NoopUpDownCounterMetric;\nclass NoopHistogramMetric extends NoopMetric {\n record(_value, _attributes) { }\n}\nexports.NoopHistogramMetric = NoopHistogramMetric;\nclass NoopObservableMetric {\n addCallback(_callback) { }\n removeCallback(_callback) { }\n}\nexports.NoopObservableMetric = NoopObservableMetric;\nclass NoopObservableCounterMetric extends NoopObservableMetric {\n}\nexports.NoopObservableCounterMetric = NoopObservableCounterMetric;\nclass NoopObservableGaugeMetric extends NoopObservableMetric {\n}\nexports.NoopObservableGaugeMetric = NoopObservableGaugeMetric;\nclass NoopObservableUpDownCounterMetric extends NoopObservableMetric {\n}\nexports.NoopObservableUpDownCounterMetric = NoopObservableUpDownCounterMetric;\nexports.NOOP_METER = new NoopMeter();\n// Synchronous instruments\nexports.NOOP_COUNTER_METRIC = new NoopCounterMetric();\nexports.NOOP_HISTOGRAM_METRIC = new NoopHistogramMetric();\nexports.NOOP_UP_DOWN_COUNTER_METRIC = new NoopUpDownCounterMetric();\n// Asynchronous instruments\nexports.NOOP_OBSERVABLE_COUNTER_METRIC = new NoopObservableCounterMetric();\nexports.NOOP_OBSERVABLE_GAUGE_METRIC = new NoopObservableGaugeMetric();\nexports.NOOP_OBSERVABLE_UP_DOWN_COUNTER_METRIC = new NoopObservableUpDownCounterMetric();\n/**\n * Create a no-op Meter\n */\nfunction createNoopMeter() {\n return exports.NOOP_METER;\n}\nexports.createNoopMeter = createNoopMeter;\n//# sourceMappingURL=NoopMeter.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NOOP_METER_PROVIDER = exports.NoopMeterProvider = void 0;\nconst NoopMeter_1 = require(\"./NoopMeter\");\n/**\n * An implementation of the {@link MeterProvider} which returns an impotent Meter\n * for all calls to `getMeter`\n */\nclass NoopMeterProvider {\n getMeter(_name, _version, _options) {\n return NoopMeter_1.NOOP_METER;\n }\n}\nexports.NoopMeterProvider = NoopMeterProvider;\nexports.NOOP_METER_PROVIDER = new NoopMeterProvider();\n//# sourceMappingURL=NoopMeterProvider.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./node\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports._globalThis = void 0;\n/** only globals that common to node and browsers are allowed */\n// eslint-disable-next-line node/no-unsupported-features/es-builtins\nexports._globalThis = typeof globalThis === 'object' ? globalThis : global;\n//# sourceMappingURL=globalThis.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./globalThis\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.propagation = void 0;\n// Split module-level variable definition into separate files to allow\n// tree-shaking on each api instance.\nconst propagation_1 = require(\"./api/propagation\");\n/** Entrypoint for propagation API */\nexports.propagation = propagation_1.PropagationAPI.getInstance();\n//# sourceMappingURL=propagation-api.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NoopTextMapPropagator = void 0;\n/**\n * No-op implementations of {@link TextMapPropagator}.\n */\nclass NoopTextMapPropagator {\n /** Noop inject function does nothing */\n inject(_context, _carrier) { }\n /** Noop extract function does nothing and returns the input context */\n extract(context, _carrier) {\n return context;\n }\n fields() {\n return [];\n }\n}\nexports.NoopTextMapPropagator = NoopTextMapPropagator;\n//# sourceMappingURL=NoopTextMapPropagator.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.defaultTextMapSetter = exports.defaultTextMapGetter = void 0;\nexports.defaultTextMapGetter = {\n get(carrier, key) {\n if (carrier == null) {\n return undefined;\n }\n return carrier[key];\n },\n keys(carrier) {\n if (carrier == null) {\n return [];\n }\n return Object.keys(carrier);\n },\n};\nexports.defaultTextMapSetter = {\n set(carrier, key, value) {\n if (carrier == null) {\n return;\n }\n carrier[key] = value;\n },\n};\n//# sourceMappingURL=TextMapPropagator.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.trace = void 0;\n// Split module-level variable definition into separate files to allow\n// tree-shaking on each api instance.\nconst trace_1 = require(\"./api/trace\");\n/** Entrypoint for trace API */\nexports.trace = trace_1.TraceAPI.getInstance();\n//# sourceMappingURL=trace-api.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NonRecordingSpan = void 0;\nconst invalid_span_constants_1 = require(\"./invalid-span-constants\");\n/**\n * The NonRecordingSpan is the default {@link Span} that is used when no Span\n * implementation is available. All operations are no-op including context\n * propagation.\n */\nclass NonRecordingSpan {\n constructor(_spanContext = invalid_span_constants_1.INVALID_SPAN_CONTEXT) {\n this._spanContext = _spanContext;\n }\n // Returns a SpanContext.\n spanContext() {\n return this._spanContext;\n }\n // By default does nothing\n setAttribute(_key, _value) {\n return this;\n }\n // By default does nothing\n setAttributes(_attributes) {\n return this;\n }\n // By default does nothing\n addEvent(_name, _attributes) {\n return this;\n }\n // By default does nothing\n setStatus(_status) {\n return this;\n }\n // By default does nothing\n updateName(_name) {\n return this;\n }\n // By default does nothing\n end(_endTime) { }\n // isRecording always returns false for NonRecordingSpan.\n isRecording() {\n return false;\n }\n // By default does nothing\n recordException(_exception, _time) { }\n}\nexports.NonRecordingSpan = NonRecordingSpan;\n//# sourceMappingURL=NonRecordingSpan.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NoopTracer = void 0;\nconst context_1 = require(\"../api/context\");\nconst context_utils_1 = require(\"../trace/context-utils\");\nconst NonRecordingSpan_1 = require(\"./NonRecordingSpan\");\nconst spancontext_utils_1 = require(\"./spancontext-utils\");\nconst contextApi = context_1.ContextAPI.getInstance();\n/**\n * No-op implementations of {@link Tracer}.\n */\nclass NoopTracer {\n // startSpan starts a noop span.\n startSpan(name, options, context = contextApi.active()) {\n const root = Boolean(options === null || options === void 0 ? void 0 : options.root);\n if (root) {\n return new NonRecordingSpan_1.NonRecordingSpan();\n }\n const parentFromContext = context && (0, context_utils_1.getSpanContext)(context);\n if (isSpanContext(parentFromContext) &&\n (0, spancontext_utils_1.isSpanContextValid)(parentFromContext)) {\n return new NonRecordingSpan_1.NonRecordingSpan(parentFromContext);\n }\n else {\n return new NonRecordingSpan_1.NonRecordingSpan();\n }\n }\n startActiveSpan(name, arg2, arg3, arg4) {\n let opts;\n let ctx;\n let fn;\n if (arguments.length < 2) {\n return;\n }\n else if (arguments.length === 2) {\n fn = arg2;\n }\n else if (arguments.length === 3) {\n opts = arg2;\n fn = arg3;\n }\n else {\n opts = arg2;\n ctx = arg3;\n fn = arg4;\n }\n const parentContext = ctx !== null && ctx !== void 0 ? ctx : contextApi.active();\n const span = this.startSpan(name, opts, parentContext);\n const contextWithSpanSet = (0, context_utils_1.setSpan)(parentContext, span);\n return contextApi.with(contextWithSpanSet, fn, undefined, span);\n }\n}\nexports.NoopTracer = NoopTracer;\nfunction isSpanContext(spanContext) {\n return (typeof spanContext === 'object' &&\n typeof spanContext['spanId'] === 'string' &&\n typeof spanContext['traceId'] === 'string' &&\n typeof spanContext['traceFlags'] === 'number');\n}\n//# sourceMappingURL=NoopTracer.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NoopTracerProvider = void 0;\nconst NoopTracer_1 = require(\"./NoopTracer\");\n/**\n * An implementation of the {@link TracerProvider} which returns an impotent\n * Tracer for all calls to `getTracer`.\n *\n * All operations are no-op.\n */\nclass NoopTracerProvider {\n getTracer(_name, _version, _options) {\n return new NoopTracer_1.NoopTracer();\n }\n}\nexports.NoopTracerProvider = NoopTracerProvider;\n//# sourceMappingURL=NoopTracerProvider.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ProxyTracer = void 0;\nconst NoopTracer_1 = require(\"./NoopTracer\");\nconst NOOP_TRACER = new NoopTracer_1.NoopTracer();\n/**\n * Proxy tracer provided by the proxy tracer provider\n */\nclass ProxyTracer {\n constructor(_provider, name, version, options) {\n this._provider = _provider;\n this.name = name;\n this.version = version;\n this.options = options;\n }\n startSpan(name, options, context) {\n return this._getTracer().startSpan(name, options, context);\n }\n startActiveSpan(_name, _options, _context, _fn) {\n const tracer = this._getTracer();\n return Reflect.apply(tracer.startActiveSpan, tracer, arguments);\n }\n /**\n * Try to get a tracer from the proxy tracer provider.\n * If the proxy tracer provider has no delegate, return a noop tracer.\n */\n _getTracer() {\n if (this._delegate) {\n return this._delegate;\n }\n const tracer = this._provider.getDelegateTracer(this.name, this.version, this.options);\n if (!tracer) {\n return NOOP_TRACER;\n }\n this._delegate = tracer;\n return this._delegate;\n }\n}\nexports.ProxyTracer = ProxyTracer;\n//# sourceMappingURL=ProxyTracer.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ProxyTracerProvider = void 0;\nconst ProxyTracer_1 = require(\"./ProxyTracer\");\nconst NoopTracerProvider_1 = require(\"./NoopTracerProvider\");\nconst NOOP_TRACER_PROVIDER = new NoopTracerProvider_1.NoopTracerProvider();\n/**\n * Tracer provider which provides {@link ProxyTracer}s.\n *\n * Before a delegate is set, tracers provided are NoOp.\n * When a delegate is set, traces are provided from the delegate.\n * When a delegate is set after tracers have already been provided,\n * all tracers already provided will use the provided delegate implementation.\n */\nclass ProxyTracerProvider {\n /**\n * Get a {@link ProxyTracer}\n */\n getTracer(name, version, options) {\n var _a;\n return ((_a = this.getDelegateTracer(name, version, options)) !== null && _a !== void 0 ? _a : new ProxyTracer_1.ProxyTracer(this, name, version, options));\n }\n getDelegate() {\n var _a;\n return (_a = this._delegate) !== null && _a !== void 0 ? _a : NOOP_TRACER_PROVIDER;\n }\n /**\n * Set the delegate tracer provider\n */\n setDelegate(delegate) {\n this._delegate = delegate;\n }\n getDelegateTracer(name, version, options) {\n var _a;\n return (_a = this._delegate) === null || _a === void 0 ? void 0 : _a.getTracer(name, version, options);\n }\n}\nexports.ProxyTracerProvider = ProxyTracerProvider;\n//# sourceMappingURL=ProxyTracerProvider.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SamplingDecision = void 0;\n/**\n * @deprecated use the one declared in @opentelemetry/sdk-trace-base instead.\n * A sampling decision that determines how a {@link Span} will be recorded\n * and collected.\n */\nvar SamplingDecision;\n(function (SamplingDecision) {\n /**\n * `Span.isRecording() === false`, span will not be recorded and all events\n * and attributes will be dropped.\n */\n SamplingDecision[SamplingDecision[\"NOT_RECORD\"] = 0] = \"NOT_RECORD\";\n /**\n * `Span.isRecording() === true`, but `Sampled` flag in {@link TraceFlags}\n * MUST NOT be set.\n */\n SamplingDecision[SamplingDecision[\"RECORD\"] = 1] = \"RECORD\";\n /**\n * `Span.isRecording() === true` AND `Sampled` flag in {@link TraceFlags}\n * MUST be set.\n */\n SamplingDecision[SamplingDecision[\"RECORD_AND_SAMPLED\"] = 2] = \"RECORD_AND_SAMPLED\";\n})(SamplingDecision = exports.SamplingDecision || (exports.SamplingDecision = {}));\n//# sourceMappingURL=SamplingResult.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getSpanContext = exports.setSpanContext = exports.deleteSpan = exports.setSpan = exports.getActiveSpan = exports.getSpan = void 0;\nconst context_1 = require(\"../context/context\");\nconst NonRecordingSpan_1 = require(\"./NonRecordingSpan\");\nconst context_2 = require(\"../api/context\");\n/**\n * span key\n */\nconst SPAN_KEY = (0, context_1.createContextKey)('OpenTelemetry Context Key SPAN');\n/**\n * Return the span if one exists\n *\n * @param context context to get span from\n */\nfunction getSpan(context) {\n return context.getValue(SPAN_KEY) || undefined;\n}\nexports.getSpan = getSpan;\n/**\n * Gets the span from the current context, if one exists.\n */\nfunction getActiveSpan() {\n return getSpan(context_2.ContextAPI.getInstance().active());\n}\nexports.getActiveSpan = getActiveSpan;\n/**\n * Set the span on a context\n *\n * @param context context to use as parent\n * @param span span to set active\n */\nfunction setSpan(context, span) {\n return context.setValue(SPAN_KEY, span);\n}\nexports.setSpan = setSpan;\n/**\n * Remove current span stored in the context\n *\n * @param context context to delete span from\n */\nfunction deleteSpan(context) {\n return context.deleteValue(SPAN_KEY);\n}\nexports.deleteSpan = deleteSpan;\n/**\n * Wrap span context in a NoopSpan and set as span in a new\n * context\n *\n * @param context context to set active span on\n * @param spanContext span context to be wrapped\n */\nfunction setSpanContext(context, spanContext) {\n return setSpan(context, new NonRecordingSpan_1.NonRecordingSpan(spanContext));\n}\nexports.setSpanContext = setSpanContext;\n/**\n * Get the span context of the span if it exists.\n *\n * @param context context to get values from\n */\nfunction getSpanContext(context) {\n var _a;\n return (_a = getSpan(context)) === null || _a === void 0 ? void 0 : _a.spanContext();\n}\nexports.getSpanContext = getSpanContext;\n//# sourceMappingURL=context-utils.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TraceStateImpl = void 0;\nconst tracestate_validators_1 = require(\"./tracestate-validators\");\nconst MAX_TRACE_STATE_ITEMS = 32;\nconst MAX_TRACE_STATE_LEN = 512;\nconst LIST_MEMBERS_SEPARATOR = ',';\nconst LIST_MEMBER_KEY_VALUE_SPLITTER = '=';\n/**\n * TraceState must be a class and not a simple object type because of the spec\n * requirement (https://www.w3.org/TR/trace-context/#tracestate-field).\n *\n * Here is the list of allowed mutations:\n * - New key-value pair should be added into the beginning of the list\n * - The value of any key can be updated. Modified keys MUST be moved to the\n * beginning of the list.\n */\nclass TraceStateImpl {\n constructor(rawTraceState) {\n this._internalState = new Map();\n if (rawTraceState)\n this._parse(rawTraceState);\n }\n set(key, value) {\n // TODO: Benchmark the different approaches(map vs list) and\n // use the faster one.\n const traceState = this._clone();\n if (traceState._internalState.has(key)) {\n traceState._internalState.delete(key);\n }\n traceState._internalState.set(key, value);\n return traceState;\n }\n unset(key) {\n const traceState = this._clone();\n traceState._internalState.delete(key);\n return traceState;\n }\n get(key) {\n return this._internalState.get(key);\n }\n serialize() {\n return this._keys()\n .reduce((agg, key) => {\n agg.push(key + LIST_MEMBER_KEY_VALUE_SPLITTER + this.get(key));\n return agg;\n }, [])\n .join(LIST_MEMBERS_SEPARATOR);\n }\n _parse(rawTraceState) {\n if (rawTraceState.length > MAX_TRACE_STATE_LEN)\n return;\n this._internalState = rawTraceState\n .split(LIST_MEMBERS_SEPARATOR)\n .reverse() // Store in reverse so new keys (.set(...)) will be placed at the beginning\n .reduce((agg, part) => {\n const listMember = part.trim(); // Optional Whitespace (OWS) handling\n const i = listMember.indexOf(LIST_MEMBER_KEY_VALUE_SPLITTER);\n if (i !== -1) {\n const key = listMember.slice(0, i);\n const value = listMember.slice(i + 1, part.length);\n if ((0, tracestate_validators_1.validateKey)(key) && (0, tracestate_validators_1.validateValue)(value)) {\n agg.set(key, value);\n }\n else {\n // TODO: Consider to add warning log\n }\n }\n return agg;\n }, new Map());\n // Because of the reverse() requirement, trunc must be done after map is created\n if (this._internalState.size > MAX_TRACE_STATE_ITEMS) {\n this._internalState = new Map(Array.from(this._internalState.entries())\n .reverse() // Use reverse same as original tracestate parse chain\n .slice(0, MAX_TRACE_STATE_ITEMS));\n }\n }\n _keys() {\n return Array.from(this._internalState.keys()).reverse();\n }\n _clone() {\n const traceState = new TraceStateImpl();\n traceState._internalState = new Map(this._internalState);\n return traceState;\n }\n}\nexports.TraceStateImpl = TraceStateImpl;\n//# sourceMappingURL=tracestate-impl.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.validateValue = exports.validateKey = void 0;\nconst VALID_KEY_CHAR_RANGE = '[_0-9a-z-*/]';\nconst VALID_KEY = `[a-z]${VALID_KEY_CHAR_RANGE}{0,255}`;\nconst VALID_VENDOR_KEY = `[a-z0-9]${VALID_KEY_CHAR_RANGE}{0,240}@[a-z]${VALID_KEY_CHAR_RANGE}{0,13}`;\nconst VALID_KEY_REGEX = new RegExp(`^(?:${VALID_KEY}|${VALID_VENDOR_KEY})$`);\nconst VALID_VALUE_BASE_REGEX = /^[ -~]{0,255}[!-~]$/;\nconst INVALID_VALUE_COMMA_EQUAL_REGEX = /,|=/;\n/**\n * Key is opaque string up to 256 characters printable. It MUST begin with a\n * lowercase letter, and can only contain lowercase letters a-z, digits 0-9,\n * underscores _, dashes -, asterisks *, and forward slashes /.\n * For multi-tenant vendor scenarios, an at sign (@) can be used to prefix the\n * vendor name. Vendors SHOULD set the tenant ID at the beginning of the key.\n * see https://www.w3.org/TR/trace-context/#key\n */\nfunction validateKey(key) {\n return VALID_KEY_REGEX.test(key);\n}\nexports.validateKey = validateKey;\n/**\n * Value is opaque string up to 256 characters printable ASCII RFC0020\n * characters (i.e., the range 0x20 to 0x7E) except comma , and =.\n */\nfunction validateValue(value) {\n return (VALID_VALUE_BASE_REGEX.test(value) &&\n !INVALID_VALUE_COMMA_EQUAL_REGEX.test(value));\n}\nexports.validateValue = validateValue;\n//# sourceMappingURL=tracestate-validators.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createTraceState = void 0;\nconst tracestate_impl_1 = require(\"./tracestate-impl\");\nfunction createTraceState(rawTraceState) {\n return new tracestate_impl_1.TraceStateImpl(rawTraceState);\n}\nexports.createTraceState = createTraceState;\n//# sourceMappingURL=utils.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.INVALID_SPAN_CONTEXT = exports.INVALID_TRACEID = exports.INVALID_SPANID = void 0;\nconst trace_flags_1 = require(\"./trace_flags\");\nexports.INVALID_SPANID = '0000000000000000';\nexports.INVALID_TRACEID = '00000000000000000000000000000000';\nexports.INVALID_SPAN_CONTEXT = {\n traceId: exports.INVALID_TRACEID,\n spanId: exports.INVALID_SPANID,\n traceFlags: trace_flags_1.TraceFlags.NONE,\n};\n//# sourceMappingURL=invalid-span-constants.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SpanKind = void 0;\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar SpanKind;\n(function (SpanKind) {\n /** Default value. Indicates that the span is used internally. */\n SpanKind[SpanKind[\"INTERNAL\"] = 0] = \"INTERNAL\";\n /**\n * Indicates that the span covers server-side handling of an RPC or other\n * remote request.\n */\n SpanKind[SpanKind[\"SERVER\"] = 1] = \"SERVER\";\n /**\n * Indicates that the span covers the client-side wrapper around an RPC or\n * other remote request.\n */\n SpanKind[SpanKind[\"CLIENT\"] = 2] = \"CLIENT\";\n /**\n * Indicates that the span describes producer sending a message to a\n * broker. Unlike client and server, there is no direct critical path latency\n * relationship between producer and consumer spans.\n */\n SpanKind[SpanKind[\"PRODUCER\"] = 3] = \"PRODUCER\";\n /**\n * Indicates that the span describes consumer receiving a message from a\n * broker. Unlike client and server, there is no direct critical path latency\n * relationship between producer and consumer spans.\n */\n SpanKind[SpanKind[\"CONSUMER\"] = 4] = \"CONSUMER\";\n})(SpanKind = exports.SpanKind || (exports.SpanKind = {}));\n//# sourceMappingURL=span_kind.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.wrapSpanContext = exports.isSpanContextValid = exports.isValidSpanId = exports.isValidTraceId = void 0;\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nconst invalid_span_constants_1 = require(\"./invalid-span-constants\");\nconst NonRecordingSpan_1 = require(\"./NonRecordingSpan\");\nconst VALID_TRACEID_REGEX = /^([0-9a-f]{32})$/i;\nconst VALID_SPANID_REGEX = /^[0-9a-f]{16}$/i;\nfunction isValidTraceId(traceId) {\n return VALID_TRACEID_REGEX.test(traceId) && traceId !== invalid_span_constants_1.INVALID_TRACEID;\n}\nexports.isValidTraceId = isValidTraceId;\nfunction isValidSpanId(spanId) {\n return VALID_SPANID_REGEX.test(spanId) && spanId !== invalid_span_constants_1.INVALID_SPANID;\n}\nexports.isValidSpanId = isValidSpanId;\n/**\n * Returns true if this {@link SpanContext} is valid.\n * @return true if this {@link SpanContext} is valid.\n */\nfunction isSpanContextValid(spanContext) {\n return (isValidTraceId(spanContext.traceId) && isValidSpanId(spanContext.spanId));\n}\nexports.isSpanContextValid = isSpanContextValid;\n/**\n * Wrap the given {@link SpanContext} in a new non-recording {@link Span}\n *\n * @param spanContext span context to be wrapped\n * @returns a new non-recording {@link Span} with the provided context\n */\nfunction wrapSpanContext(spanContext) {\n return new NonRecordingSpan_1.NonRecordingSpan(spanContext);\n}\nexports.wrapSpanContext = wrapSpanContext;\n//# sourceMappingURL=spancontext-utils.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SpanStatusCode = void 0;\n/**\n * An enumeration of status codes.\n */\nvar SpanStatusCode;\n(function (SpanStatusCode) {\n /**\n * The default status.\n */\n SpanStatusCode[SpanStatusCode[\"UNSET\"] = 0] = \"UNSET\";\n /**\n * The operation has been validated by an Application developer or\n * Operator to have completed successfully.\n */\n SpanStatusCode[SpanStatusCode[\"OK\"] = 1] = \"OK\";\n /**\n * The operation contains an error.\n */\n SpanStatusCode[SpanStatusCode[\"ERROR\"] = 2] = \"ERROR\";\n})(SpanStatusCode = exports.SpanStatusCode || (exports.SpanStatusCode = {}));\n//# sourceMappingURL=status.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TraceFlags = void 0;\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar TraceFlags;\n(function (TraceFlags) {\n /** Represents no flag set. */\n TraceFlags[TraceFlags[\"NONE\"] = 0] = \"NONE\";\n /** Bit to represent whether trace is sampled in trace flags. */\n TraceFlags[TraceFlags[\"SAMPLED\"] = 1] = \"SAMPLED\";\n})(TraceFlags = exports.TraceFlags || (exports.TraceFlags = {}));\n//# sourceMappingURL=trace_flags.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.VERSION = void 0;\n// this is autogenerated file, see scripts/version-update.js\nexports.VERSION = '1.8.0';\n//# sourceMappingURL=version.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ExportResultCode = void 0;\nvar ExportResultCode;\n(function (ExportResultCode) {\n ExportResultCode[ExportResultCode[\"SUCCESS\"] = 0] = \"SUCCESS\";\n ExportResultCode[ExportResultCode[\"FAILED\"] = 1] = \"FAILED\";\n})(ExportResultCode = exports.ExportResultCode || (exports.ExportResultCode = {}));\n//# sourceMappingURL=ExportResult.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BAGGAGE_MAX_TOTAL_LENGTH = exports.BAGGAGE_MAX_PER_NAME_VALUE_PAIRS = exports.BAGGAGE_MAX_NAME_VALUE_PAIRS = exports.BAGGAGE_HEADER = exports.BAGGAGE_ITEMS_SEPARATOR = exports.BAGGAGE_PROPERTIES_SEPARATOR = exports.BAGGAGE_KEY_PAIR_SEPARATOR = void 0;\nexports.BAGGAGE_KEY_PAIR_SEPARATOR = '=';\nexports.BAGGAGE_PROPERTIES_SEPARATOR = ';';\nexports.BAGGAGE_ITEMS_SEPARATOR = ',';\n// Name of the http header used to propagate the baggage\nexports.BAGGAGE_HEADER = 'baggage';\n// Maximum number of name-value pairs allowed by w3c spec\nexports.BAGGAGE_MAX_NAME_VALUE_PAIRS = 180;\n// Maximum number of bytes per a single name-value pair allowed by w3c spec\nexports.BAGGAGE_MAX_PER_NAME_VALUE_PAIRS = 4096;\n// Maximum total length of all name-value pairs allowed by w3c spec\nexports.BAGGAGE_MAX_TOTAL_LENGTH = 8192;\n//# sourceMappingURL=constants.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.W3CBaggagePropagator = void 0;\nconst api_1 = require(\"@opentelemetry/api\");\nconst suppress_tracing_1 = require(\"../../trace/suppress-tracing\");\nconst constants_1 = require(\"../constants\");\nconst utils_1 = require(\"../utils\");\n/**\n * Propagates {@link Baggage} through Context format propagation.\n *\n * Based on the Baggage specification:\n * https://w3c.github.io/baggage/\n */\nclass W3CBaggagePropagator {\n inject(context, carrier, setter) {\n const baggage = api_1.propagation.getBaggage(context);\n if (!baggage || (0, suppress_tracing_1.isTracingSuppressed)(context))\n return;\n const keyPairs = (0, utils_1.getKeyPairs)(baggage)\n .filter((pair) => {\n return pair.length <= constants_1.BAGGAGE_MAX_PER_NAME_VALUE_PAIRS;\n })\n .slice(0, constants_1.BAGGAGE_MAX_NAME_VALUE_PAIRS);\n const headerValue = (0, utils_1.serializeKeyPairs)(keyPairs);\n if (headerValue.length > 0) {\n setter.set(carrier, constants_1.BAGGAGE_HEADER, headerValue);\n }\n }\n extract(context, carrier, getter) {\n const headerValue = getter.get(carrier, constants_1.BAGGAGE_HEADER);\n const baggageString = Array.isArray(headerValue)\n ? headerValue.join(constants_1.BAGGAGE_ITEMS_SEPARATOR)\n : headerValue;\n if (!baggageString)\n return context;\n const baggage = {};\n if (baggageString.length === 0) {\n return context;\n }\n const pairs = baggageString.split(constants_1.BAGGAGE_ITEMS_SEPARATOR);\n pairs.forEach(entry => {\n const keyPair = (0, utils_1.parsePairKeyValue)(entry);\n if (keyPair) {\n const baggageEntry = { value: keyPair.value };\n if (keyPair.metadata) {\n baggageEntry.metadata = keyPair.metadata;\n }\n baggage[keyPair.key] = baggageEntry;\n }\n });\n if (Object.entries(baggage).length === 0) {\n return context;\n }\n return api_1.propagation.setBaggage(context, api_1.propagation.createBaggage(baggage));\n }\n fields() {\n return [constants_1.BAGGAGE_HEADER];\n }\n}\nexports.W3CBaggagePropagator = W3CBaggagePropagator;\n//# sourceMappingURL=W3CBaggagePropagator.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.parseKeyPairsIntoRecord = exports.parsePairKeyValue = exports.getKeyPairs = exports.serializeKeyPairs = void 0;\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nconst api_1 = require(\"@opentelemetry/api\");\nconst constants_1 = require(\"./constants\");\nfunction serializeKeyPairs(keyPairs) {\n return keyPairs.reduce((hValue, current) => {\n const value = `${hValue}${hValue !== '' ? constants_1.BAGGAGE_ITEMS_SEPARATOR : ''}${current}`;\n return value.length > constants_1.BAGGAGE_MAX_TOTAL_LENGTH ? hValue : value;\n }, '');\n}\nexports.serializeKeyPairs = serializeKeyPairs;\nfunction getKeyPairs(baggage) {\n return baggage.getAllEntries().map(([key, value]) => {\n let entry = `${encodeURIComponent(key)}=${encodeURIComponent(value.value)}`;\n // include opaque metadata if provided\n // NOTE: we intentionally don't URI-encode the metadata - that responsibility falls on the metadata implementation\n if (value.metadata !== undefined) {\n entry += constants_1.BAGGAGE_PROPERTIES_SEPARATOR + value.metadata.toString();\n }\n return entry;\n });\n}\nexports.getKeyPairs = getKeyPairs;\nfunction parsePairKeyValue(entry) {\n const valueProps = entry.split(constants_1.BAGGAGE_PROPERTIES_SEPARATOR);\n if (valueProps.length <= 0)\n return;\n const keyPairPart = valueProps.shift();\n if (!keyPairPart)\n return;\n const separatorIndex = keyPairPart.indexOf(constants_1.BAGGAGE_KEY_PAIR_SEPARATOR);\n if (separatorIndex <= 0)\n return;\n const key = decodeURIComponent(keyPairPart.substring(0, separatorIndex).trim());\n const value = decodeURIComponent(keyPairPart.substring(separatorIndex + 1).trim());\n let metadata;\n if (valueProps.length > 0) {\n metadata = (0, api_1.baggageEntryMetadataFromString)(valueProps.join(constants_1.BAGGAGE_PROPERTIES_SEPARATOR));\n }\n return { key, value, metadata };\n}\nexports.parsePairKeyValue = parsePairKeyValue;\n/**\n * Parse a string serialized in the baggage HTTP Format (without metadata):\n * https://github.com/w3c/baggage/blob/master/baggage/HTTP_HEADER_FORMAT.md\n */\nfunction parseKeyPairsIntoRecord(value) {\n if (typeof value !== 'string' || value.length === 0)\n return {};\n return value\n .split(constants_1.BAGGAGE_ITEMS_SEPARATOR)\n .map(entry => {\n return parsePairKeyValue(entry);\n })\n .filter(keyPair => keyPair !== undefined && keyPair.value.length > 0)\n .reduce((headers, keyPair) => {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n headers[keyPair.key] = keyPair.value;\n return headers;\n }, {});\n}\nexports.parseKeyPairsIntoRecord = parseKeyPairsIntoRecord;\n//# sourceMappingURL=utils.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AnchoredClock = void 0;\n/**\n * A utility for returning wall times anchored to a given point in time. Wall time measurements will\n * not be taken from the system, but instead are computed by adding a monotonic clock time\n * to the anchor point.\n *\n * This is needed because the system time can change and result in unexpected situations like\n * spans ending before they are started. Creating an anchored clock for each local root span\n * ensures that span timings and durations are accurate while preventing span times from drifting\n * too far from the system clock.\n *\n * Only creating an anchored clock once per local trace ensures span times are correct relative\n * to each other. For example, a child span will never have a start time before its parent even\n * if the system clock is corrected during the local trace.\n *\n * Heavily inspired by the OTel Java anchored clock\n * https://github.com/open-telemetry/opentelemetry-java/blob/main/sdk/trace/src/main/java/io/opentelemetry/sdk/trace/AnchoredClock.java\n */\nclass AnchoredClock {\n /**\n * Create a new AnchoredClock anchored to the current time returned by systemClock.\n *\n * @param systemClock should be a clock that returns the number of milliseconds since January 1 1970 such as Date\n * @param monotonicClock should be a clock that counts milliseconds monotonically such as window.performance or perf_hooks.performance\n */\n constructor(systemClock, monotonicClock) {\n this._monotonicClock = monotonicClock;\n this._epochMillis = systemClock.now();\n this._performanceMillis = monotonicClock.now();\n }\n /**\n * Returns the current time by adding the number of milliseconds since the\n * AnchoredClock was created to the creation epoch time\n */\n now() {\n const delta = this._monotonicClock.now() - this._performanceMillis;\n return this._epochMillis + delta;\n }\n}\nexports.AnchoredClock = AnchoredClock;\n//# sourceMappingURL=anchored-clock.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isAttributeValue = exports.isAttributeKey = exports.sanitizeAttributes = void 0;\nconst api_1 = require(\"@opentelemetry/api\");\nfunction sanitizeAttributes(attributes) {\n const out = {};\n if (typeof attributes !== 'object' || attributes == null) {\n return out;\n }\n for (const [key, val] of Object.entries(attributes)) {\n if (!isAttributeKey(key)) {\n api_1.diag.warn(`Invalid attribute key: ${key}`);\n continue;\n }\n if (!isAttributeValue(val)) {\n api_1.diag.warn(`Invalid attribute value set for key: ${key}`);\n continue;\n }\n if (Array.isArray(val)) {\n out[key] = val.slice();\n }\n else {\n out[key] = val;\n }\n }\n return out;\n}\nexports.sanitizeAttributes = sanitizeAttributes;\nfunction isAttributeKey(key) {\n return typeof key === 'string' && key.length > 0;\n}\nexports.isAttributeKey = isAttributeKey;\nfunction isAttributeValue(val) {\n if (val == null) {\n return true;\n }\n if (Array.isArray(val)) {\n return isHomogeneousAttributeValueArray(val);\n }\n return isValidPrimitiveAttributeValue(val);\n}\nexports.isAttributeValue = isAttributeValue;\nfunction isHomogeneousAttributeValueArray(arr) {\n let type;\n for (const element of arr) {\n // null/undefined elements are allowed\n if (element == null)\n continue;\n if (!type) {\n if (isValidPrimitiveAttributeValue(element)) {\n type = typeof element;\n continue;\n }\n // encountered an invalid primitive\n return false;\n }\n if (typeof element === type) {\n continue;\n }\n return false;\n }\n return true;\n}\nfunction isValidPrimitiveAttributeValue(val) {\n switch (typeof val) {\n case 'number':\n case 'boolean':\n case 'string':\n return true;\n }\n return false;\n}\n//# sourceMappingURL=attributes.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.globalErrorHandler = exports.setGlobalErrorHandler = void 0;\nconst logging_error_handler_1 = require(\"./logging-error-handler\");\n/** The global error handler delegate */\nlet delegateHandler = (0, logging_error_handler_1.loggingErrorHandler)();\n/**\n * Set the global error handler\n * @param {ErrorHandler} handler\n */\nfunction setGlobalErrorHandler(handler) {\n delegateHandler = handler;\n}\nexports.setGlobalErrorHandler = setGlobalErrorHandler;\n/**\n * Return the global error handler\n * @param {Exception} ex\n */\nfunction globalErrorHandler(ex) {\n try {\n delegateHandler(ex);\n }\n catch (_a) { } // eslint-disable-line no-empty\n}\nexports.globalErrorHandler = globalErrorHandler;\n//# sourceMappingURL=global-error-handler.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.hexToBinary = void 0;\nfunction intValue(charCode) {\n // 0-9\n if (charCode >= 48 && charCode <= 57) {\n return charCode - 48;\n }\n // a-f\n if (charCode >= 97 && charCode <= 102) {\n return charCode - 87;\n }\n // A-F\n return charCode - 55;\n}\nfunction hexToBinary(hexStr) {\n const buf = new Uint8Array(hexStr.length / 2);\n let offset = 0;\n for (let i = 0; i < hexStr.length; i += 2) {\n const hi = intValue(hexStr.charCodeAt(i));\n const lo = intValue(hexStr.charCodeAt(i + 1));\n buf[offset++] = (hi << 4) | lo;\n }\n return buf;\n}\nexports.hexToBinary = hexToBinary;\n//# sourceMappingURL=hex-to-binary.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.loggingErrorHandler = void 0;\nconst api_1 = require(\"@opentelemetry/api\");\n/**\n * Returns a function that logs an error using the provided logger, or a\n * console logger if one was not provided.\n */\nfunction loggingErrorHandler() {\n return (ex) => {\n api_1.diag.error(stringifyException(ex));\n };\n}\nexports.loggingErrorHandler = loggingErrorHandler;\n/**\n * Converts an exception into a string representation\n * @param {Exception} ex\n */\nfunction stringifyException(ex) {\n if (typeof ex === 'string') {\n return ex;\n }\n else {\n return JSON.stringify(flattenException(ex));\n }\n}\n/**\n * Flattens an exception into key-value pairs by traversing the prototype chain\n * and coercing values to strings. Duplicate properties will not be overwritten;\n * the first insert wins.\n */\nfunction flattenException(ex) {\n const result = {};\n let current = ex;\n while (current !== null) {\n Object.getOwnPropertyNames(current).forEach(propertyName => {\n if (result[propertyName])\n return;\n const value = current[propertyName];\n if (value) {\n result[propertyName] = String(value);\n }\n });\n current = Object.getPrototypeOf(current);\n }\n return result;\n}\n//# sourceMappingURL=logging-error-handler.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.addHrTimes = exports.isTimeInput = exports.isTimeInputHrTime = exports.hrTimeToMicroseconds = exports.hrTimeToMilliseconds = exports.hrTimeToNanoseconds = exports.hrTimeToTimeStamp = exports.hrTimeDuration = exports.timeInputToHrTime = exports.hrTime = exports.getTimeOrigin = exports.millisToHrTime = void 0;\nconst platform_1 = require(\"../platform\");\nconst NANOSECOND_DIGITS = 9;\nconst NANOSECOND_DIGITS_IN_MILLIS = 6;\nconst MILLISECONDS_TO_NANOSECONDS = Math.pow(10, NANOSECOND_DIGITS_IN_MILLIS);\nconst SECOND_TO_NANOSECONDS = Math.pow(10, NANOSECOND_DIGITS);\n/**\n * Converts a number of milliseconds from epoch to HrTime([seconds, remainder in nanoseconds]).\n * @param epochMillis\n */\nfunction millisToHrTime(epochMillis) {\n const epochSeconds = epochMillis / 1000;\n // Decimals only.\n const seconds = Math.trunc(epochSeconds);\n // Round sub-nanosecond accuracy to nanosecond.\n const nanos = Math.round((epochMillis % 1000) * MILLISECONDS_TO_NANOSECONDS);\n return [seconds, nanos];\n}\nexports.millisToHrTime = millisToHrTime;\nfunction getTimeOrigin() {\n let timeOrigin = platform_1.otperformance.timeOrigin;\n if (typeof timeOrigin !== 'number') {\n const perf = platform_1.otperformance;\n timeOrigin = perf.timing && perf.timing.fetchStart;\n }\n return timeOrigin;\n}\nexports.getTimeOrigin = getTimeOrigin;\n/**\n * Returns an hrtime calculated via performance component.\n * @param performanceNow\n */\nfunction hrTime(performanceNow) {\n const timeOrigin = millisToHrTime(getTimeOrigin());\n const now = millisToHrTime(typeof performanceNow === 'number' ? performanceNow : platform_1.otperformance.now());\n return addHrTimes(timeOrigin, now);\n}\nexports.hrTime = hrTime;\n/**\n *\n * Converts a TimeInput to an HrTime, defaults to _hrtime().\n * @param time\n */\nfunction timeInputToHrTime(time) {\n // process.hrtime\n if (isTimeInputHrTime(time)) {\n return time;\n }\n else if (typeof time === 'number') {\n // Must be a performance.now() if it's smaller than process start time.\n if (time < getTimeOrigin()) {\n return hrTime(time);\n }\n else {\n // epoch milliseconds or performance.timeOrigin\n return millisToHrTime(time);\n }\n }\n else if (time instanceof Date) {\n return millisToHrTime(time.getTime());\n }\n else {\n throw TypeError('Invalid input type');\n }\n}\nexports.timeInputToHrTime = timeInputToHrTime;\n/**\n * Returns a duration of two hrTime.\n * @param startTime\n * @param endTime\n */\nfunction hrTimeDuration(startTime, endTime) {\n let seconds = endTime[0] - startTime[0];\n let nanos = endTime[1] - startTime[1];\n // overflow\n if (nanos < 0) {\n seconds -= 1;\n // negate\n nanos += SECOND_TO_NANOSECONDS;\n }\n return [seconds, nanos];\n}\nexports.hrTimeDuration = hrTimeDuration;\n/**\n * Convert hrTime to timestamp, for example \"2019-05-14T17:00:00.000123456Z\"\n * @param time\n */\nfunction hrTimeToTimeStamp(time) {\n const precision = NANOSECOND_DIGITS;\n const tmp = `${'0'.repeat(precision)}${time[1]}Z`;\n const nanoString = tmp.substr(tmp.length - precision - 1);\n const date = new Date(time[0] * 1000).toISOString();\n return date.replace('000Z', nanoString);\n}\nexports.hrTimeToTimeStamp = hrTimeToTimeStamp;\n/**\n * Convert hrTime to nanoseconds.\n * @param time\n */\nfunction hrTimeToNanoseconds(time) {\n return time[0] * SECOND_TO_NANOSECONDS + time[1];\n}\nexports.hrTimeToNanoseconds = hrTimeToNanoseconds;\n/**\n * Convert hrTime to milliseconds.\n * @param time\n */\nfunction hrTimeToMilliseconds(time) {\n return time[0] * 1e3 + time[1] / 1e6;\n}\nexports.hrTimeToMilliseconds = hrTimeToMilliseconds;\n/**\n * Convert hrTime to microseconds.\n * @param time\n */\nfunction hrTimeToMicroseconds(time) {\n return time[0] * 1e6 + time[1] / 1e3;\n}\nexports.hrTimeToMicroseconds = hrTimeToMicroseconds;\n/**\n * check if time is HrTime\n * @param value\n */\nfunction isTimeInputHrTime(value) {\n return (Array.isArray(value) &&\n value.length === 2 &&\n typeof value[0] === 'number' &&\n typeof value[1] === 'number');\n}\nexports.isTimeInputHrTime = isTimeInputHrTime;\n/**\n * check if input value is a correct types.TimeInput\n * @param value\n */\nfunction isTimeInput(value) {\n return (isTimeInputHrTime(value) ||\n typeof value === 'number' ||\n value instanceof Date);\n}\nexports.isTimeInput = isTimeInput;\n/**\n * Given 2 HrTime formatted times, return their sum as an HrTime.\n */\nfunction addHrTimes(time1, time2) {\n const out = [time1[0] + time2[0], time1[1] + time2[1]];\n // Nanoseconds\n if (out[1] >= SECOND_TO_NANOSECONDS) {\n out[1] -= SECOND_TO_NANOSECONDS;\n out[0] += 1;\n }\n return out;\n}\nexports.addHrTimes = addHrTimes;\n//# sourceMappingURL=time.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=types.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.internal = exports.baggageUtils = void 0;\n__exportStar(require(\"./baggage/propagation/W3CBaggagePropagator\"), exports);\n__exportStar(require(\"./common/anchored-clock\"), exports);\n__exportStar(require(\"./common/attributes\"), exports);\n__exportStar(require(\"./common/global-error-handler\"), exports);\n__exportStar(require(\"./common/logging-error-handler\"), exports);\n__exportStar(require(\"./common/time\"), exports);\n__exportStar(require(\"./common/types\"), exports);\n__exportStar(require(\"./common/hex-to-binary\"), exports);\n__exportStar(require(\"./ExportResult\"), exports);\nexports.baggageUtils = require(\"./baggage/utils\");\n__exportStar(require(\"./platform\"), exports);\n__exportStar(require(\"./propagation/composite\"), exports);\n__exportStar(require(\"./trace/W3CTraceContextPropagator\"), exports);\n__exportStar(require(\"./trace/IdGenerator\"), exports);\n__exportStar(require(\"./trace/rpc-metadata\"), exports);\n__exportStar(require(\"./trace/sampler/AlwaysOffSampler\"), exports);\n__exportStar(require(\"./trace/sampler/AlwaysOnSampler\"), exports);\n__exportStar(require(\"./trace/sampler/ParentBasedSampler\"), exports);\n__exportStar(require(\"./trace/sampler/TraceIdRatioBasedSampler\"), exports);\n__exportStar(require(\"./trace/suppress-tracing\"), exports);\n__exportStar(require(\"./trace/TraceState\"), exports);\n__exportStar(require(\"./utils/environment\"), exports);\n__exportStar(require(\"./utils/merge\"), exports);\n__exportStar(require(\"./utils/sampling\"), exports);\n__exportStar(require(\"./utils/timeout\"), exports);\n__exportStar(require(\"./utils/url\"), exports);\n__exportStar(require(\"./utils/wrap\"), exports);\n__exportStar(require(\"./utils/callback\"), exports);\n__exportStar(require(\"./version\"), exports);\nconst exporter_1 = require(\"./internal/exporter\");\nexports.internal = {\n _export: exporter_1._export,\n};\n//# sourceMappingURL=index.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports._export = void 0;\nconst api_1 = require(\"@opentelemetry/api\");\nconst suppress_tracing_1 = require(\"../trace/suppress-tracing\");\n/**\n * @internal\n * Shared functionality used by Exporters while exporting data, including suppression of Traces.\n */\nfunction _export(exporter, arg) {\n return new Promise(resolve => {\n // prevent downstream exporter calls from generating spans\n api_1.context.with((0, suppress_tracing_1.suppressTracing)(api_1.context.active()), () => {\n exporter.export(arg, (result) => {\n resolve(result);\n });\n });\n });\n}\nexports._export = _export;\n//# sourceMappingURL=exporter.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.validateValue = exports.validateKey = void 0;\nconst VALID_KEY_CHAR_RANGE = '[_0-9a-z-*/]';\nconst VALID_KEY = `[a-z]${VALID_KEY_CHAR_RANGE}{0,255}`;\nconst VALID_VENDOR_KEY = `[a-z0-9]${VALID_KEY_CHAR_RANGE}{0,240}@[a-z]${VALID_KEY_CHAR_RANGE}{0,13}`;\nconst VALID_KEY_REGEX = new RegExp(`^(?:${VALID_KEY}|${VALID_VENDOR_KEY})$`);\nconst VALID_VALUE_BASE_REGEX = /^[ -~]{0,255}[!-~]$/;\nconst INVALID_VALUE_COMMA_EQUAL_REGEX = /,|=/;\n/**\n * Key is opaque string up to 256 characters printable. It MUST begin with a\n * lowercase letter, and can only contain lowercase letters a-z, digits 0-9,\n * underscores _, dashes -, asterisks *, and forward slashes /.\n * For multi-tenant vendor scenarios, an at sign (@) can be used to prefix the\n * vendor name. Vendors SHOULD set the tenant ID at the beginning of the key.\n * see https://www.w3.org/TR/trace-context/#key\n */\nfunction validateKey(key) {\n return VALID_KEY_REGEX.test(key);\n}\nexports.validateKey = validateKey;\n/**\n * Value is opaque string up to 256 characters printable ASCII RFC0020\n * characters (i.e., the range 0x20 to 0x7E) except comma , and =.\n */\nfunction validateValue(value) {\n return (VALID_VALUE_BASE_REGEX.test(value) &&\n !INVALID_VALUE_COMMA_EQUAL_REGEX.test(value));\n}\nexports.validateValue = validateValue;\n//# sourceMappingURL=validators.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n__exportStar(require(\"./node\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RandomIdGenerator = void 0;\nconst SPAN_ID_BYTES = 8;\nconst TRACE_ID_BYTES = 16;\n/**\n * @deprecated Use the one defined in @opentelemetry/sdk-trace-base instead.\n */\nclass RandomIdGenerator {\n constructor() {\n /**\n * Returns a random 16-byte trace ID formatted/encoded as a 32 lowercase hex\n * characters corresponding to 128 bits.\n */\n this.generateTraceId = getIdGenerator(TRACE_ID_BYTES);\n /**\n * Returns a random 8-byte span ID formatted/encoded as a 16 lowercase hex\n * characters corresponding to 64 bits.\n */\n this.generateSpanId = getIdGenerator(SPAN_ID_BYTES);\n }\n}\nexports.RandomIdGenerator = RandomIdGenerator;\nconst SHARED_BUFFER = Buffer.allocUnsafe(TRACE_ID_BYTES);\nfunction getIdGenerator(bytes) {\n return function generateId() {\n for (let i = 0; i < bytes / 4; i++) {\n // unsigned right shift drops decimal part of the number\n // it is required because if a number between 2**32 and 2**32 - 1 is generated, an out of range error is thrown by writeUInt32BE\n SHARED_BUFFER.writeUInt32BE((Math.random() * 2 ** 32) >>> 0, i * 4);\n }\n // If buffer is all 0, set the last byte to 1 to guarantee a valid w3c id is generated\n for (let i = 0; i < bytes; i++) {\n if (SHARED_BUFFER[i] > 0) {\n break;\n }\n else if (i === bytes - 1) {\n SHARED_BUFFER[bytes - 1] = 1;\n }\n }\n return SHARED_BUFFER.toString('hex', 0, bytes);\n };\n}\n//# sourceMappingURL=RandomIdGenerator.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getEnvWithoutDefaults = exports.getEnv = void 0;\nconst environment_1 = require(\"../../utils/environment\");\n/**\n * Gets the environment variables\n */\nfunction getEnv() {\n const processEnv = (0, environment_1.parseEnvironment)(process.env);\n return Object.assign({}, environment_1.DEFAULT_ENVIRONMENT, processEnv);\n}\nexports.getEnv = getEnv;\nfunction getEnvWithoutDefaults() {\n return (0, environment_1.parseEnvironment)(process.env);\n}\nexports.getEnvWithoutDefaults = getEnvWithoutDefaults;\n//# sourceMappingURL=environment.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports._globalThis = void 0;\n/** only globals that common to node and browsers are allowed */\n// eslint-disable-next-line node/no-unsupported-features/es-builtins\nexports._globalThis = typeof globalThis === 'object' ? globalThis : global;\n//# sourceMappingURL=globalThis.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.hexToBase64 = void 0;\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nconst hex_to_binary_1 = require(\"../../common/hex-to-binary\");\nfunction hexToBase64(hexStr) {\n return Buffer.from((0, hex_to_binary_1.hexToBinary)(hexStr)).toString('base64');\n}\nexports.hexToBase64 = hexToBase64;\n//# sourceMappingURL=hex-to-base64.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getEnv = exports.getEnvWithoutDefaults = void 0;\nvar environment_1 = require(\"./environment\");\nObject.defineProperty(exports, \"getEnvWithoutDefaults\", { enumerable: true, get: function () { return environment_1.getEnvWithoutDefaults; } });\nObject.defineProperty(exports, \"getEnv\", { enumerable: true, get: function () { return environment_1.getEnv; } });\n__exportStar(require(\"./globalThis\"), exports);\n__exportStar(require(\"./hex-to-base64\"), exports);\n__exportStar(require(\"./RandomIdGenerator\"), exports);\n__exportStar(require(\"./performance\"), exports);\n__exportStar(require(\"./sdk-info\"), exports);\n__exportStar(require(\"./timer-util\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.otperformance = void 0;\nconst perf_hooks_1 = require(\"perf_hooks\");\nexports.otperformance = perf_hooks_1.performance;\n//# sourceMappingURL=performance.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SDK_INFO = void 0;\nconst version_1 = require(\"../../version\");\nconst semantic_conventions_1 = require(\"@opentelemetry/semantic-conventions\");\n/** Constants describing the SDK in use */\nexports.SDK_INFO = {\n [semantic_conventions_1.SemanticResourceAttributes.TELEMETRY_SDK_NAME]: 'opentelemetry',\n [semantic_conventions_1.SemanticResourceAttributes.PROCESS_RUNTIME_NAME]: 'node',\n [semantic_conventions_1.SemanticResourceAttributes.TELEMETRY_SDK_LANGUAGE]: semantic_conventions_1.TelemetrySdkLanguageValues.NODEJS,\n [semantic_conventions_1.SemanticResourceAttributes.TELEMETRY_SDK_VERSION]: version_1.VERSION,\n};\n//# sourceMappingURL=sdk-info.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.unrefTimer = void 0;\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nfunction unrefTimer(timer) {\n timer.unref();\n}\nexports.unrefTimer = unrefTimer;\n//# sourceMappingURL=timer-util.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CompositePropagator = void 0;\nconst api_1 = require(\"@opentelemetry/api\");\n/** Combines multiple propagators into a single propagator. */\nclass CompositePropagator {\n /**\n * Construct a composite propagator from a list of propagators.\n *\n * @param [config] Configuration object for composite propagator\n */\n constructor(config = {}) {\n var _a;\n this._propagators = (_a = config.propagators) !== null && _a !== void 0 ? _a : [];\n this._fields = Array.from(new Set(this._propagators\n // older propagators may not have fields function, null check to be sure\n .map(p => (typeof p.fields === 'function' ? p.fields() : []))\n .reduce((x, y) => x.concat(y), [])));\n }\n /**\n * Run each of the configured propagators with the given context and carrier.\n * Propagators are run in the order they are configured, so if multiple\n * propagators write the same carrier key, the propagator later in the list\n * will \"win\".\n *\n * @param context Context to inject\n * @param carrier Carrier into which context will be injected\n */\n inject(context, carrier, setter) {\n for (const propagator of this._propagators) {\n try {\n propagator.inject(context, carrier, setter);\n }\n catch (err) {\n api_1.diag.warn(`Failed to inject with ${propagator.constructor.name}. Err: ${err.message}`);\n }\n }\n }\n /**\n * Run each of the configured propagators with the given context and carrier.\n * Propagators are run in the order they are configured, so if multiple\n * propagators write the same context key, the propagator later in the list\n * will \"win\".\n *\n * @param context Context to add values to\n * @param carrier Carrier from which to extract context\n */\n extract(context, carrier, getter) {\n return this._propagators.reduce((ctx, propagator) => {\n try {\n return propagator.extract(ctx, carrier, getter);\n }\n catch (err) {\n api_1.diag.warn(`Failed to inject with ${propagator.constructor.name}. Err: ${err.message}`);\n }\n return ctx;\n }, context);\n }\n fields() {\n // return a new array so our fields cannot be modified\n return this._fields.slice();\n }\n}\nexports.CompositePropagator = CompositePropagator;\n//# sourceMappingURL=composite.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=IdGenerator.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TraceState = void 0;\nconst validators_1 = require(\"../internal/validators\");\nconst MAX_TRACE_STATE_ITEMS = 32;\nconst MAX_TRACE_STATE_LEN = 512;\nconst LIST_MEMBERS_SEPARATOR = ',';\nconst LIST_MEMBER_KEY_VALUE_SPLITTER = '=';\n/**\n * TraceState must be a class and not a simple object type because of the spec\n * requirement (https://www.w3.org/TR/trace-context/#tracestate-field).\n *\n * Here is the list of allowed mutations:\n * - New key-value pair should be added into the beginning of the list\n * - The value of any key can be updated. Modified keys MUST be moved to the\n * beginning of the list.\n */\nclass TraceState {\n constructor(rawTraceState) {\n this._internalState = new Map();\n if (rawTraceState)\n this._parse(rawTraceState);\n }\n set(key, value) {\n // TODO: Benchmark the different approaches(map vs list) and\n // use the faster one.\n const traceState = this._clone();\n if (traceState._internalState.has(key)) {\n traceState._internalState.delete(key);\n }\n traceState._internalState.set(key, value);\n return traceState;\n }\n unset(key) {\n const traceState = this._clone();\n traceState._internalState.delete(key);\n return traceState;\n }\n get(key) {\n return this._internalState.get(key);\n }\n serialize() {\n return this._keys()\n .reduce((agg, key) => {\n agg.push(key + LIST_MEMBER_KEY_VALUE_SPLITTER + this.get(key));\n return agg;\n }, [])\n .join(LIST_MEMBERS_SEPARATOR);\n }\n _parse(rawTraceState) {\n if (rawTraceState.length > MAX_TRACE_STATE_LEN)\n return;\n this._internalState = rawTraceState\n .split(LIST_MEMBERS_SEPARATOR)\n .reverse() // Store in reverse so new keys (.set(...)) will be placed at the beginning\n .reduce((agg, part) => {\n const listMember = part.trim(); // Optional Whitespace (OWS) handling\n const i = listMember.indexOf(LIST_MEMBER_KEY_VALUE_SPLITTER);\n if (i !== -1) {\n const key = listMember.slice(0, i);\n const value = listMember.slice(i + 1, part.length);\n if ((0, validators_1.validateKey)(key) && (0, validators_1.validateValue)(value)) {\n agg.set(key, value);\n }\n else {\n // TODO: Consider to add warning log\n }\n }\n return agg;\n }, new Map());\n // Because of the reverse() requirement, trunc must be done after map is created\n if (this._internalState.size > MAX_TRACE_STATE_ITEMS) {\n this._internalState = new Map(Array.from(this._internalState.entries())\n .reverse() // Use reverse same as original tracestate parse chain\n .slice(0, MAX_TRACE_STATE_ITEMS));\n }\n }\n _keys() {\n return Array.from(this._internalState.keys()).reverse();\n }\n _clone() {\n const traceState = new TraceState();\n traceState._internalState = new Map(this._internalState);\n return traceState;\n }\n}\nexports.TraceState = TraceState;\n//# sourceMappingURL=TraceState.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.W3CTraceContextPropagator = exports.parseTraceParent = exports.TRACE_STATE_HEADER = exports.TRACE_PARENT_HEADER = void 0;\nconst api_1 = require(\"@opentelemetry/api\");\nconst suppress_tracing_1 = require(\"./suppress-tracing\");\nconst TraceState_1 = require(\"./TraceState\");\nexports.TRACE_PARENT_HEADER = 'traceparent';\nexports.TRACE_STATE_HEADER = 'tracestate';\nconst VERSION = '00';\nconst VERSION_PART = '(?!ff)[\\\\da-f]{2}';\nconst TRACE_ID_PART = '(?![0]{32})[\\\\da-f]{32}';\nconst PARENT_ID_PART = '(?![0]{16})[\\\\da-f]{16}';\nconst FLAGS_PART = '[\\\\da-f]{2}';\nconst TRACE_PARENT_REGEX = new RegExp(`^\\\\s?(${VERSION_PART})-(${TRACE_ID_PART})-(${PARENT_ID_PART})-(${FLAGS_PART})(-.*)?\\\\s?$`);\n/**\n * Parses information from the [traceparent] span tag and converts it into {@link SpanContext}\n * @param traceParent - A meta property that comes from server.\n * It should be dynamically generated server side to have the server's request trace Id,\n * a parent span Id that was set on the server's request span,\n * and the trace flags to indicate the server's sampling decision\n * (01 = sampled, 00 = not sampled).\n * for example: '{version}-{traceId}-{spanId}-{sampleDecision}'\n * For more information see {@link https://www.w3.org/TR/trace-context/}\n */\nfunction parseTraceParent(traceParent) {\n const match = TRACE_PARENT_REGEX.exec(traceParent);\n if (!match)\n return null;\n // According to the specification the implementation should be compatible\n // with future versions. If there are more parts, we only reject it if it's using version 00\n // See https://www.w3.org/TR/trace-context/#versioning-of-traceparent\n if (match[1] === '00' && match[5])\n return null;\n return {\n traceId: match[2],\n spanId: match[3],\n traceFlags: parseInt(match[4], 16),\n };\n}\nexports.parseTraceParent = parseTraceParent;\n/**\n * Propagates {@link SpanContext} through Trace Context format propagation.\n *\n * Based on the Trace Context specification:\n * https://www.w3.org/TR/trace-context/\n */\nclass W3CTraceContextPropagator {\n inject(context, carrier, setter) {\n const spanContext = api_1.trace.getSpanContext(context);\n if (!spanContext ||\n (0, suppress_tracing_1.isTracingSuppressed)(context) ||\n !(0, api_1.isSpanContextValid)(spanContext))\n return;\n const traceParent = `${VERSION}-${spanContext.traceId}-${spanContext.spanId}-0${Number(spanContext.traceFlags || api_1.TraceFlags.NONE).toString(16)}`;\n setter.set(carrier, exports.TRACE_PARENT_HEADER, traceParent);\n if (spanContext.traceState) {\n setter.set(carrier, exports.TRACE_STATE_HEADER, spanContext.traceState.serialize());\n }\n }\n extract(context, carrier, getter) {\n const traceParentHeader = getter.get(carrier, exports.TRACE_PARENT_HEADER);\n if (!traceParentHeader)\n return context;\n const traceParent = Array.isArray(traceParentHeader)\n ? traceParentHeader[0]\n : traceParentHeader;\n if (typeof traceParent !== 'string')\n return context;\n const spanContext = parseTraceParent(traceParent);\n if (!spanContext)\n return context;\n spanContext.isRemote = true;\n const traceStateHeader = getter.get(carrier, exports.TRACE_STATE_HEADER);\n if (traceStateHeader) {\n // If more than one `tracestate` header is found, we merge them into a\n // single header.\n const state = Array.isArray(traceStateHeader)\n ? traceStateHeader.join(',')\n : traceStateHeader;\n spanContext.traceState = new TraceState_1.TraceState(typeof state === 'string' ? state : undefined);\n }\n return api_1.trace.setSpanContext(context, spanContext);\n }\n fields() {\n return [exports.TRACE_PARENT_HEADER, exports.TRACE_STATE_HEADER];\n }\n}\nexports.W3CTraceContextPropagator = W3CTraceContextPropagator;\n//# sourceMappingURL=W3CTraceContextPropagator.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getRPCMetadata = exports.deleteRPCMetadata = exports.setRPCMetadata = exports.RPCType = void 0;\nconst api_1 = require(\"@opentelemetry/api\");\nconst RPC_METADATA_KEY = (0, api_1.createContextKey)('OpenTelemetry SDK Context Key RPC_METADATA');\nvar RPCType;\n(function (RPCType) {\n RPCType[\"HTTP\"] = \"http\";\n})(RPCType = exports.RPCType || (exports.RPCType = {}));\nfunction setRPCMetadata(context, meta) {\n return context.setValue(RPC_METADATA_KEY, meta);\n}\nexports.setRPCMetadata = setRPCMetadata;\nfunction deleteRPCMetadata(context) {\n return context.deleteValue(RPC_METADATA_KEY);\n}\nexports.deleteRPCMetadata = deleteRPCMetadata;\nfunction getRPCMetadata(context) {\n return context.getValue(RPC_METADATA_KEY);\n}\nexports.getRPCMetadata = getRPCMetadata;\n//# sourceMappingURL=rpc-metadata.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AlwaysOffSampler = void 0;\nconst api_1 = require(\"@opentelemetry/api\");\n/**\n * @deprecated Use the one defined in @opentelemetry/sdk-trace-base instead.\n * Sampler that samples no traces.\n */\nclass AlwaysOffSampler {\n shouldSample() {\n return {\n decision: api_1.SamplingDecision.NOT_RECORD,\n };\n }\n toString() {\n return 'AlwaysOffSampler';\n }\n}\nexports.AlwaysOffSampler = AlwaysOffSampler;\n//# sourceMappingURL=AlwaysOffSampler.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AlwaysOnSampler = void 0;\nconst api_1 = require(\"@opentelemetry/api\");\n/**\n * @deprecated Use the one defined in @opentelemetry/sdk-trace-base instead.\n * Sampler that samples all traces.\n */\nclass AlwaysOnSampler {\n shouldSample() {\n return {\n decision: api_1.SamplingDecision.RECORD_AND_SAMPLED,\n };\n }\n toString() {\n return 'AlwaysOnSampler';\n }\n}\nexports.AlwaysOnSampler = AlwaysOnSampler;\n//# sourceMappingURL=AlwaysOnSampler.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ParentBasedSampler = void 0;\nconst api_1 = require(\"@opentelemetry/api\");\nconst global_error_handler_1 = require(\"../../common/global-error-handler\");\nconst AlwaysOffSampler_1 = require(\"./AlwaysOffSampler\");\nconst AlwaysOnSampler_1 = require(\"./AlwaysOnSampler\");\n/**\n * @deprecated Use the one defined in @opentelemetry/sdk-trace-base instead.\n * A composite sampler that either respects the parent span's sampling decision\n * or delegates to `delegateSampler` for root spans.\n */\nclass ParentBasedSampler {\n constructor(config) {\n var _a, _b, _c, _d;\n this._root = config.root;\n if (!this._root) {\n (0, global_error_handler_1.globalErrorHandler)(new Error('ParentBasedSampler must have a root sampler configured'));\n this._root = new AlwaysOnSampler_1.AlwaysOnSampler();\n }\n this._remoteParentSampled =\n (_a = config.remoteParentSampled) !== null && _a !== void 0 ? _a : new AlwaysOnSampler_1.AlwaysOnSampler();\n this._remoteParentNotSampled =\n (_b = config.remoteParentNotSampled) !== null && _b !== void 0 ? _b : new AlwaysOffSampler_1.AlwaysOffSampler();\n this._localParentSampled =\n (_c = config.localParentSampled) !== null && _c !== void 0 ? _c : new AlwaysOnSampler_1.AlwaysOnSampler();\n this._localParentNotSampled =\n (_d = config.localParentNotSampled) !== null && _d !== void 0 ? _d : new AlwaysOffSampler_1.AlwaysOffSampler();\n }\n shouldSample(context, traceId, spanName, spanKind, attributes, links) {\n const parentContext = api_1.trace.getSpanContext(context);\n if (!parentContext || !(0, api_1.isSpanContextValid)(parentContext)) {\n return this._root.shouldSample(context, traceId, spanName, spanKind, attributes, links);\n }\n if (parentContext.isRemote) {\n if (parentContext.traceFlags & api_1.TraceFlags.SAMPLED) {\n return this._remoteParentSampled.shouldSample(context, traceId, spanName, spanKind, attributes, links);\n }\n return this._remoteParentNotSampled.shouldSample(context, traceId, spanName, spanKind, attributes, links);\n }\n if (parentContext.traceFlags & api_1.TraceFlags.SAMPLED) {\n return this._localParentSampled.shouldSample(context, traceId, spanName, spanKind, attributes, links);\n }\n return this._localParentNotSampled.shouldSample(context, traceId, spanName, spanKind, attributes, links);\n }\n toString() {\n return `ParentBased{root=${this._root.toString()}, remoteParentSampled=${this._remoteParentSampled.toString()}, remoteParentNotSampled=${this._remoteParentNotSampled.toString()}, localParentSampled=${this._localParentSampled.toString()}, localParentNotSampled=${this._localParentNotSampled.toString()}}`;\n }\n}\nexports.ParentBasedSampler = ParentBasedSampler;\n//# sourceMappingURL=ParentBasedSampler.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TraceIdRatioBasedSampler = void 0;\nconst api_1 = require(\"@opentelemetry/api\");\n/**\n * @deprecated Use the one defined in @opentelemetry/sdk-trace-base instead.\n * Sampler that samples a given fraction of traces based of trace id deterministically.\n */\nclass TraceIdRatioBasedSampler {\n constructor(_ratio = 0) {\n this._ratio = _ratio;\n this._ratio = this._normalize(_ratio);\n this._upperBound = Math.floor(this._ratio * 0xffffffff);\n }\n shouldSample(context, traceId) {\n return {\n decision: (0, api_1.isValidTraceId)(traceId) && this._accumulate(traceId) < this._upperBound\n ? api_1.SamplingDecision.RECORD_AND_SAMPLED\n : api_1.SamplingDecision.NOT_RECORD,\n };\n }\n toString() {\n return `TraceIdRatioBased{${this._ratio}}`;\n }\n _normalize(ratio) {\n if (typeof ratio !== 'number' || isNaN(ratio))\n return 0;\n return ratio >= 1 ? 1 : ratio <= 0 ? 0 : ratio;\n }\n _accumulate(traceId) {\n let accumulation = 0;\n for (let i = 0; i < traceId.length / 8; i++) {\n const pos = i * 8;\n const part = parseInt(traceId.slice(pos, pos + 8), 16);\n accumulation = (accumulation ^ part) >>> 0;\n }\n return accumulation;\n }\n}\nexports.TraceIdRatioBasedSampler = TraceIdRatioBasedSampler;\n//# sourceMappingURL=TraceIdRatioBasedSampler.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isTracingSuppressed = exports.unsuppressTracing = exports.suppressTracing = void 0;\nconst api_1 = require(\"@opentelemetry/api\");\nconst SUPPRESS_TRACING_KEY = (0, api_1.createContextKey)('OpenTelemetry SDK Context Key SUPPRESS_TRACING');\nfunction suppressTracing(context) {\n return context.setValue(SUPPRESS_TRACING_KEY, true);\n}\nexports.suppressTracing = suppressTracing;\nfunction unsuppressTracing(context) {\n return context.deleteValue(SUPPRESS_TRACING_KEY);\n}\nexports.unsuppressTracing = unsuppressTracing;\nfunction isTracingSuppressed(context) {\n return context.getValue(SUPPRESS_TRACING_KEY) === true;\n}\nexports.isTracingSuppressed = isTracingSuppressed;\n//# sourceMappingURL=suppress-tracing.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BindOnceFuture = void 0;\nconst promise_1 = require(\"./promise\");\n/**\n * Bind the callback and only invoke the callback once regardless how many times `BindOnceFuture.call` is invoked.\n */\nclass BindOnceFuture {\n constructor(_callback, _that) {\n this._callback = _callback;\n this._that = _that;\n this._isCalled = false;\n this._deferred = new promise_1.Deferred();\n }\n get isCalled() {\n return this._isCalled;\n }\n get promise() {\n return this._deferred.promise;\n }\n call(...args) {\n if (!this._isCalled) {\n this._isCalled = true;\n try {\n Promise.resolve(this._callback.call(this._that, ...args)).then(val => this._deferred.resolve(val), err => this._deferred.reject(err));\n }\n catch (err) {\n this._deferred.reject(err);\n }\n }\n return this._deferred.promise;\n }\n}\nexports.BindOnceFuture = BindOnceFuture;\n//# sourceMappingURL=callback.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.parseEnvironment = exports.DEFAULT_ENVIRONMENT = exports.DEFAULT_SPAN_ATTRIBUTE_PER_LINK_COUNT_LIMIT = exports.DEFAULT_SPAN_ATTRIBUTE_PER_EVENT_COUNT_LIMIT = exports.DEFAULT_ATTRIBUTE_COUNT_LIMIT = exports.DEFAULT_ATTRIBUTE_VALUE_LENGTH_LIMIT = void 0;\nconst api_1 = require(\"@opentelemetry/api\");\nconst sampling_1 = require(\"./sampling\");\nconst DEFAULT_LIST_SEPARATOR = ',';\n/**\n * Environment interface to define all names\n */\nconst ENVIRONMENT_BOOLEAN_KEYS = ['OTEL_SDK_DISABLED'];\nfunction isEnvVarABoolean(key) {\n return (ENVIRONMENT_BOOLEAN_KEYS.indexOf(key) > -1);\n}\nconst ENVIRONMENT_NUMBERS_KEYS = [\n 'OTEL_BSP_EXPORT_TIMEOUT',\n 'OTEL_BSP_MAX_EXPORT_BATCH_SIZE',\n 'OTEL_BSP_MAX_QUEUE_SIZE',\n 'OTEL_BSP_SCHEDULE_DELAY',\n 'OTEL_BLRP_EXPORT_TIMEOUT',\n 'OTEL_BLRP_MAX_EXPORT_BATCH_SIZE',\n 'OTEL_BLRP_MAX_QUEUE_SIZE',\n 'OTEL_BLRP_SCHEDULE_DELAY',\n 'OTEL_ATTRIBUTE_VALUE_LENGTH_LIMIT',\n 'OTEL_ATTRIBUTE_COUNT_LIMIT',\n 'OTEL_SPAN_ATTRIBUTE_VALUE_LENGTH_LIMIT',\n 'OTEL_SPAN_ATTRIBUTE_COUNT_LIMIT',\n 'OTEL_LOGRECORD_ATTRIBUTE_VALUE_LENGTH_LIMIT',\n 'OTEL_LOGRECORD_ATTRIBUTE_COUNT_LIMIT',\n 'OTEL_SPAN_EVENT_COUNT_LIMIT',\n 'OTEL_SPAN_LINK_COUNT_LIMIT',\n 'OTEL_SPAN_ATTRIBUTE_PER_EVENT_COUNT_LIMIT',\n 'OTEL_SPAN_ATTRIBUTE_PER_LINK_COUNT_LIMIT',\n 'OTEL_EXPORTER_OTLP_TIMEOUT',\n 'OTEL_EXPORTER_OTLP_TRACES_TIMEOUT',\n 'OTEL_EXPORTER_OTLP_METRICS_TIMEOUT',\n 'OTEL_EXPORTER_OTLP_LOGS_TIMEOUT',\n 'OTEL_EXPORTER_JAEGER_AGENT_PORT',\n];\nfunction isEnvVarANumber(key) {\n return (ENVIRONMENT_NUMBERS_KEYS.indexOf(key) > -1);\n}\nconst ENVIRONMENT_LISTS_KEYS = [\n 'OTEL_NO_PATCH_MODULES',\n 'OTEL_PROPAGATORS',\n];\nfunction isEnvVarAList(key) {\n return ENVIRONMENT_LISTS_KEYS.indexOf(key) > -1;\n}\nexports.DEFAULT_ATTRIBUTE_VALUE_LENGTH_LIMIT = Infinity;\nexports.DEFAULT_ATTRIBUTE_COUNT_LIMIT = 128;\nexports.DEFAULT_SPAN_ATTRIBUTE_PER_EVENT_COUNT_LIMIT = 128;\nexports.DEFAULT_SPAN_ATTRIBUTE_PER_LINK_COUNT_LIMIT = 128;\n/**\n * Default environment variables\n */\nexports.DEFAULT_ENVIRONMENT = {\n OTEL_SDK_DISABLED: false,\n CONTAINER_NAME: '',\n ECS_CONTAINER_METADATA_URI_V4: '',\n ECS_CONTAINER_METADATA_URI: '',\n HOSTNAME: '',\n KUBERNETES_SERVICE_HOST: '',\n NAMESPACE: '',\n OTEL_BSP_EXPORT_TIMEOUT: 30000,\n OTEL_BSP_MAX_EXPORT_BATCH_SIZE: 512,\n OTEL_BSP_MAX_QUEUE_SIZE: 2048,\n OTEL_BSP_SCHEDULE_DELAY: 5000,\n OTEL_BLRP_EXPORT_TIMEOUT: 30000,\n OTEL_BLRP_MAX_EXPORT_BATCH_SIZE: 512,\n OTEL_BLRP_MAX_QUEUE_SIZE: 2048,\n OTEL_BLRP_SCHEDULE_DELAY: 5000,\n OTEL_EXPORTER_JAEGER_AGENT_HOST: '',\n OTEL_EXPORTER_JAEGER_AGENT_PORT: 6832,\n OTEL_EXPORTER_JAEGER_ENDPOINT: '',\n OTEL_EXPORTER_JAEGER_PASSWORD: '',\n OTEL_EXPORTER_JAEGER_USER: '',\n OTEL_EXPORTER_OTLP_ENDPOINT: '',\n OTEL_EXPORTER_OTLP_TRACES_ENDPOINT: '',\n OTEL_EXPORTER_OTLP_METRICS_ENDPOINT: '',\n OTEL_EXPORTER_OTLP_LOGS_ENDPOINT: '',\n OTEL_EXPORTER_OTLP_HEADERS: '',\n OTEL_EXPORTER_OTLP_TRACES_HEADERS: '',\n OTEL_EXPORTER_OTLP_METRICS_HEADERS: '',\n OTEL_EXPORTER_OTLP_LOGS_HEADERS: '',\n OTEL_EXPORTER_OTLP_TIMEOUT: 10000,\n OTEL_EXPORTER_OTLP_TRACES_TIMEOUT: 10000,\n OTEL_EXPORTER_OTLP_METRICS_TIMEOUT: 10000,\n OTEL_EXPORTER_OTLP_LOGS_TIMEOUT: 10000,\n OTEL_EXPORTER_ZIPKIN_ENDPOINT: 'http://localhost:9411/api/v2/spans',\n OTEL_LOG_LEVEL: api_1.DiagLogLevel.INFO,\n OTEL_NO_PATCH_MODULES: [],\n OTEL_PROPAGATORS: ['tracecontext', 'baggage'],\n OTEL_RESOURCE_ATTRIBUTES: '',\n OTEL_SERVICE_NAME: '',\n OTEL_ATTRIBUTE_VALUE_LENGTH_LIMIT: exports.DEFAULT_ATTRIBUTE_VALUE_LENGTH_LIMIT,\n OTEL_ATTRIBUTE_COUNT_LIMIT: exports.DEFAULT_ATTRIBUTE_COUNT_LIMIT,\n OTEL_SPAN_ATTRIBUTE_VALUE_LENGTH_LIMIT: exports.DEFAULT_ATTRIBUTE_VALUE_LENGTH_LIMIT,\n OTEL_SPAN_ATTRIBUTE_COUNT_LIMIT: exports.DEFAULT_ATTRIBUTE_COUNT_LIMIT,\n OTEL_LOGRECORD_ATTRIBUTE_VALUE_LENGTH_LIMIT: exports.DEFAULT_ATTRIBUTE_VALUE_LENGTH_LIMIT,\n OTEL_LOGRECORD_ATTRIBUTE_COUNT_LIMIT: exports.DEFAULT_ATTRIBUTE_COUNT_LIMIT,\n OTEL_SPAN_EVENT_COUNT_LIMIT: 128,\n OTEL_SPAN_LINK_COUNT_LIMIT: 128,\n OTEL_SPAN_ATTRIBUTE_PER_EVENT_COUNT_LIMIT: exports.DEFAULT_SPAN_ATTRIBUTE_PER_EVENT_COUNT_LIMIT,\n OTEL_SPAN_ATTRIBUTE_PER_LINK_COUNT_LIMIT: exports.DEFAULT_SPAN_ATTRIBUTE_PER_LINK_COUNT_LIMIT,\n OTEL_TRACES_EXPORTER: '',\n OTEL_TRACES_SAMPLER: sampling_1.TracesSamplerValues.ParentBasedAlwaysOn,\n OTEL_TRACES_SAMPLER_ARG: '',\n OTEL_LOGS_EXPORTER: '',\n OTEL_EXPORTER_OTLP_INSECURE: '',\n OTEL_EXPORTER_OTLP_TRACES_INSECURE: '',\n OTEL_EXPORTER_OTLP_METRICS_INSECURE: '',\n OTEL_EXPORTER_OTLP_LOGS_INSECURE: '',\n OTEL_EXPORTER_OTLP_CERTIFICATE: '',\n OTEL_EXPORTER_OTLP_TRACES_CERTIFICATE: '',\n OTEL_EXPORTER_OTLP_METRICS_CERTIFICATE: '',\n OTEL_EXPORTER_OTLP_LOGS_CERTIFICATE: '',\n OTEL_EXPORTER_OTLP_COMPRESSION: '',\n OTEL_EXPORTER_OTLP_TRACES_COMPRESSION: '',\n OTEL_EXPORTER_OTLP_METRICS_COMPRESSION: '',\n OTEL_EXPORTER_OTLP_LOGS_COMPRESSION: '',\n OTEL_EXPORTER_OTLP_CLIENT_KEY: '',\n OTEL_EXPORTER_OTLP_TRACES_CLIENT_KEY: '',\n OTEL_EXPORTER_OTLP_METRICS_CLIENT_KEY: '',\n OTEL_EXPORTER_OTLP_LOGS_CLIENT_KEY: '',\n OTEL_EXPORTER_OTLP_CLIENT_CERTIFICATE: '',\n OTEL_EXPORTER_OTLP_TRACES_CLIENT_CERTIFICATE: '',\n OTEL_EXPORTER_OTLP_METRICS_CLIENT_CERTIFICATE: '',\n OTEL_EXPORTER_OTLP_LOGS_CLIENT_CERTIFICATE: '',\n OTEL_EXPORTER_OTLP_PROTOCOL: 'http/protobuf',\n OTEL_EXPORTER_OTLP_TRACES_PROTOCOL: 'http/protobuf',\n OTEL_EXPORTER_OTLP_METRICS_PROTOCOL: 'http/protobuf',\n OTEL_EXPORTER_OTLP_LOGS_PROTOCOL: 'http/protobuf',\n OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE: 'cumulative',\n};\n/**\n * @param key\n * @param environment\n * @param values\n */\nfunction parseBoolean(key, environment, values) {\n if (typeof values[key] === 'undefined') {\n return;\n }\n const value = String(values[key]);\n // support case-insensitive \"true\"\n environment[key] = value.toLowerCase() === 'true';\n}\n/**\n * Parses a variable as number with number validation\n * @param name\n * @param environment\n * @param values\n * @param min\n * @param max\n */\nfunction parseNumber(name, environment, values, min = -Infinity, max = Infinity) {\n if (typeof values[name] !== 'undefined') {\n const value = Number(values[name]);\n if (!isNaN(value)) {\n if (value < min) {\n environment[name] = min;\n }\n else if (value > max) {\n environment[name] = max;\n }\n else {\n environment[name] = value;\n }\n }\n }\n}\n/**\n * Parses list-like strings from input into output.\n * @param name\n * @param environment\n * @param values\n * @param separator\n */\nfunction parseStringList(name, output, input, separator = DEFAULT_LIST_SEPARATOR) {\n const givenValue = input[name];\n if (typeof givenValue === 'string') {\n output[name] = givenValue.split(separator).map(v => v.trim());\n }\n}\n// The support string -> DiagLogLevel mappings\nconst logLevelMap = {\n ALL: api_1.DiagLogLevel.ALL,\n VERBOSE: api_1.DiagLogLevel.VERBOSE,\n DEBUG: api_1.DiagLogLevel.DEBUG,\n INFO: api_1.DiagLogLevel.INFO,\n WARN: api_1.DiagLogLevel.WARN,\n ERROR: api_1.DiagLogLevel.ERROR,\n NONE: api_1.DiagLogLevel.NONE,\n};\n/**\n * Environmentally sets log level if valid log level string is provided\n * @param key\n * @param environment\n * @param values\n */\nfunction setLogLevelFromEnv(key, environment, values) {\n const value = values[key];\n if (typeof value === 'string') {\n const theLevel = logLevelMap[value.toUpperCase()];\n if (theLevel != null) {\n environment[key] = theLevel;\n }\n }\n}\n/**\n * Parses environment values\n * @param values\n */\nfunction parseEnvironment(values) {\n const environment = {};\n for (const env in exports.DEFAULT_ENVIRONMENT) {\n const key = env;\n switch (key) {\n case 'OTEL_LOG_LEVEL':\n setLogLevelFromEnv(key, environment, values);\n break;\n default:\n if (isEnvVarABoolean(key)) {\n parseBoolean(key, environment, values);\n }\n else if (isEnvVarANumber(key)) {\n parseNumber(key, environment, values);\n }\n else if (isEnvVarAList(key)) {\n parseStringList(key, environment, values);\n }\n else {\n const value = values[key];\n if (typeof value !== 'undefined' && value !== null) {\n environment[key] = String(value);\n }\n }\n }\n }\n return environment;\n}\nexports.parseEnvironment = parseEnvironment;\n//# sourceMappingURL=environment.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isPlainObject = void 0;\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/**\n * based on lodash in order to support esm builds without esModuleInterop.\n * lodash is using MIT License.\n **/\nconst objectTag = '[object Object]';\nconst nullTag = '[object Null]';\nconst undefinedTag = '[object Undefined]';\nconst funcProto = Function.prototype;\nconst funcToString = funcProto.toString;\nconst objectCtorString = funcToString.call(Object);\nconst getPrototype = overArg(Object.getPrototypeOf, Object);\nconst objectProto = Object.prototype;\nconst hasOwnProperty = objectProto.hasOwnProperty;\nconst symToStringTag = Symbol ? Symbol.toStringTag : undefined;\nconst nativeObjectToString = objectProto.toString;\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function (arg) {\n return func(transform(arg));\n };\n}\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) !== objectTag) {\n return false;\n }\n const proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n const Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return (typeof Ctor == 'function' &&\n Ctor instanceof Ctor &&\n funcToString.call(Ctor) === objectCtorString);\n}\nexports.isPlainObject = isPlainObject;\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return symToStringTag && symToStringTag in Object(value)\n ? getRawTag(value)\n : objectToString(value);\n}\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n const isOwn = hasOwnProperty.call(value, symToStringTag), tag = value[symToStringTag];\n let unmasked = false;\n try {\n value[symToStringTag] = undefined;\n unmasked = true;\n }\n catch (e) {\n // silence\n }\n const result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n }\n else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n//# sourceMappingURL=lodash.merge.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.merge = void 0;\n/* eslint-disable @typescript-eslint/no-explicit-any */\nconst lodash_merge_1 = require(\"./lodash.merge\");\nconst MAX_LEVEL = 20;\n/**\n * Merges objects together\n * @param args - objects / values to be merged\n */\nfunction merge(...args) {\n let result = args.shift();\n const objects = new WeakMap();\n while (args.length > 0) {\n result = mergeTwoObjects(result, args.shift(), 0, objects);\n }\n return result;\n}\nexports.merge = merge;\nfunction takeValue(value) {\n if (isArray(value)) {\n return value.slice();\n }\n return value;\n}\n/**\n * Merges two objects\n * @param one - first object\n * @param two - second object\n * @param level - current deep level\n * @param objects - objects holder that has been already referenced - to prevent\n * cyclic dependency\n */\nfunction mergeTwoObjects(one, two, level = 0, objects) {\n let result;\n if (level > MAX_LEVEL) {\n return undefined;\n }\n level++;\n if (isPrimitive(one) || isPrimitive(two) || isFunction(two)) {\n result = takeValue(two);\n }\n else if (isArray(one)) {\n result = one.slice();\n if (isArray(two)) {\n for (let i = 0, j = two.length; i < j; i++) {\n result.push(takeValue(two[i]));\n }\n }\n else if (isObject(two)) {\n const keys = Object.keys(two);\n for (let i = 0, j = keys.length; i < j; i++) {\n const key = keys[i];\n result[key] = takeValue(two[key]);\n }\n }\n }\n else if (isObject(one)) {\n if (isObject(two)) {\n if (!shouldMerge(one, two)) {\n return two;\n }\n result = Object.assign({}, one);\n const keys = Object.keys(two);\n for (let i = 0, j = keys.length; i < j; i++) {\n const key = keys[i];\n const twoValue = two[key];\n if (isPrimitive(twoValue)) {\n if (typeof twoValue === 'undefined') {\n delete result[key];\n }\n else {\n // result[key] = takeValue(twoValue);\n result[key] = twoValue;\n }\n }\n else {\n const obj1 = result[key];\n const obj2 = twoValue;\n if (wasObjectReferenced(one, key, objects) ||\n wasObjectReferenced(two, key, objects)) {\n delete result[key];\n }\n else {\n if (isObject(obj1) && isObject(obj2)) {\n const arr1 = objects.get(obj1) || [];\n const arr2 = objects.get(obj2) || [];\n arr1.push({ obj: one, key });\n arr2.push({ obj: two, key });\n objects.set(obj1, arr1);\n objects.set(obj2, arr2);\n }\n result[key] = mergeTwoObjects(result[key], twoValue, level, objects);\n }\n }\n }\n }\n else {\n result = two;\n }\n }\n return result;\n}\n/**\n * Function to check if object has been already reference\n * @param obj\n * @param key\n * @param objects\n */\nfunction wasObjectReferenced(obj, key, objects) {\n const arr = objects.get(obj[key]) || [];\n for (let i = 0, j = arr.length; i < j; i++) {\n const info = arr[i];\n if (info.key === key && info.obj === obj) {\n return true;\n }\n }\n return false;\n}\nfunction isArray(value) {\n return Array.isArray(value);\n}\nfunction isFunction(value) {\n return typeof value === 'function';\n}\nfunction isObject(value) {\n return (!isPrimitive(value) &&\n !isArray(value) &&\n !isFunction(value) &&\n typeof value === 'object');\n}\nfunction isPrimitive(value) {\n return (typeof value === 'string' ||\n typeof value === 'number' ||\n typeof value === 'boolean' ||\n typeof value === 'undefined' ||\n value instanceof Date ||\n value instanceof RegExp ||\n value === null);\n}\nfunction shouldMerge(one, two) {\n if (!(0, lodash_merge_1.isPlainObject)(one) || !(0, lodash_merge_1.isPlainObject)(two)) {\n return false;\n }\n return true;\n}\n//# sourceMappingURL=merge.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Deferred = void 0;\nclass Deferred {\n constructor() {\n this._promise = new Promise((resolve, reject) => {\n this._resolve = resolve;\n this._reject = reject;\n });\n }\n get promise() {\n return this._promise;\n }\n resolve(val) {\n this._resolve(val);\n }\n reject(err) {\n this._reject(err);\n }\n}\nexports.Deferred = Deferred;\n//# sourceMappingURL=promise.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TracesSamplerValues = void 0;\nvar TracesSamplerValues;\n(function (TracesSamplerValues) {\n TracesSamplerValues[\"AlwaysOff\"] = \"always_off\";\n TracesSamplerValues[\"AlwaysOn\"] = \"always_on\";\n TracesSamplerValues[\"ParentBasedAlwaysOff\"] = \"parentbased_always_off\";\n TracesSamplerValues[\"ParentBasedAlwaysOn\"] = \"parentbased_always_on\";\n TracesSamplerValues[\"ParentBasedTraceIdRatio\"] = \"parentbased_traceidratio\";\n TracesSamplerValues[\"TraceIdRatio\"] = \"traceidratio\";\n})(TracesSamplerValues = exports.TracesSamplerValues || (exports.TracesSamplerValues = {}));\n//# sourceMappingURL=sampling.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.callWithTimeout = exports.TimeoutError = void 0;\n/**\n * Error that is thrown on timeouts.\n */\nclass TimeoutError extends Error {\n constructor(message) {\n super(message);\n // manually adjust prototype to retain `instanceof` functionality when targeting ES5, see:\n // https://github.com/Microsoft/TypeScript-wiki/blob/main/Breaking-Changes.md#extending-built-ins-like-error-array-and-map-may-no-longer-work\n Object.setPrototypeOf(this, TimeoutError.prototype);\n }\n}\nexports.TimeoutError = TimeoutError;\n/**\n * Adds a timeout to a promise and rejects if the specified timeout has elapsed. Also rejects if the specified promise\n * rejects, and resolves if the specified promise resolves.\n *\n *

NOTE: this operation will continue even after it throws a {@link TimeoutError}.\n *\n * @param promise promise to use with timeout.\n * @param timeout the timeout in milliseconds until the returned promise is rejected.\n */\nfunction callWithTimeout(promise, timeout) {\n let timeoutHandle;\n const timeoutPromise = new Promise(function timeoutFunction(_resolve, reject) {\n timeoutHandle = setTimeout(function timeoutHandler() {\n reject(new TimeoutError('Operation timed out.'));\n }, timeout);\n });\n return Promise.race([promise, timeoutPromise]).then(result => {\n clearTimeout(timeoutHandle);\n return result;\n }, reason => {\n clearTimeout(timeoutHandle);\n throw reason;\n });\n}\nexports.callWithTimeout = callWithTimeout;\n//# sourceMappingURL=timeout.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isUrlIgnored = exports.urlMatches = void 0;\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nfunction urlMatches(url, urlToMatch) {\n if (typeof urlToMatch === 'string') {\n return url === urlToMatch;\n }\n else {\n return !!url.match(urlToMatch);\n }\n}\nexports.urlMatches = urlMatches;\n/**\n * Check if {@param url} should be ignored when comparing against {@param ignoredUrls}\n * @param url\n * @param ignoredUrls\n */\nfunction isUrlIgnored(url, ignoredUrls) {\n if (!ignoredUrls) {\n return false;\n }\n for (const ignoreUrl of ignoredUrls) {\n if (urlMatches(url, ignoreUrl)) {\n return true;\n }\n }\n return false;\n}\nexports.isUrlIgnored = isUrlIgnored;\n//# sourceMappingURL=url.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isWrapped = void 0;\n/**\n * Checks if certain function has been already wrapped\n * @param func\n */\nfunction isWrapped(func) {\n return (typeof func === 'function' &&\n typeof func.__original === 'function' &&\n typeof func.__unwrap === 'function' &&\n func.__wrapped === true);\n}\nexports.isWrapped = isWrapped;\n//# sourceMappingURL=wrap.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.VERSION = void 0;\n// this is autogenerated file, see scripts/version-update.js\nexports.VERSION = '1.24.1';\n//# sourceMappingURL=version.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.OTLPTraceExporter = void 0;\nconst core_1 = require(\"@opentelemetry/core\");\nconst otlp_grpc_exporter_base_1 = require(\"@opentelemetry/otlp-grpc-exporter-base\");\nconst otlp_transformer_1 = require(\"@opentelemetry/otlp-transformer\");\nconst version_1 = require(\"./version\");\nconst USER_AGENT = {\n 'User-Agent': `OTel-OTLP-Exporter-JavaScript/${version_1.VERSION}`,\n};\n/**\n * OTLP Trace Exporter for Node\n */\nclass OTLPTraceExporter extends otlp_grpc_exporter_base_1.OTLPGRPCExporterNodeBase {\n constructor(config = {}) {\n const signalSpecificMetadata = Object.assign(Object.assign({}, USER_AGENT), core_1.baggageUtils.parseKeyPairsIntoRecord((0, core_1.getEnv)().OTEL_EXPORTER_OTLP_TRACES_HEADERS));\n super(config, signalSpecificMetadata, 'TraceExportService', '/opentelemetry.proto.collector.trace.v1.TraceService/Export', otlp_grpc_exporter_base_1.TraceSerializer);\n }\n convert(spans) {\n return (0, otlp_transformer_1.createExportTraceServiceRequest)(spans);\n }\n getDefaultUrl(config) {\n return (0, otlp_grpc_exporter_base_1.validateAndNormalizeUrl)(this.getUrlFromConfig(config));\n }\n getUrlFromConfig(config) {\n if (typeof config.url === 'string') {\n return config.url;\n }\n return ((0, core_1.getEnv)().OTEL_EXPORTER_OTLP_TRACES_ENDPOINT ||\n (0, core_1.getEnv)().OTEL_EXPORTER_OTLP_ENDPOINT ||\n otlp_grpc_exporter_base_1.DEFAULT_COLLECTOR_URL);\n }\n}\nexports.OTLPTraceExporter = OTLPTraceExporter;\n//# sourceMappingURL=OTLPTraceExporter.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./OTLPTraceExporter\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.VERSION = void 0;\n// this is autogenerated file, see scripts/version-update.js\nexports.VERSION = '0.51.1';\n//# sourceMappingURL=version.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.OTLPTraceExporter = void 0;\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar platform_1 = require(\"./platform\");\nObject.defineProperty(exports, \"OTLPTraceExporter\", { enumerable: true, get: function () { return platform_1.OTLPTraceExporter; } });\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.OTLPTraceExporter = void 0;\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar node_1 = require(\"./node\");\nObject.defineProperty(exports, \"OTLPTraceExporter\", { enumerable: true, get: function () { return node_1.OTLPTraceExporter; } });\n//# sourceMappingURL=index.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.OTLPTraceExporter = void 0;\nconst core_1 = require(\"@opentelemetry/core\");\nconst otlp_exporter_base_1 = require(\"@opentelemetry/otlp-exporter-base\");\nconst otlp_proto_exporter_base_1 = require(\"@opentelemetry/otlp-proto-exporter-base\");\nconst otlp_transformer_1 = require(\"@opentelemetry/otlp-transformer\");\nconst version_1 = require(\"../../version\");\nconst DEFAULT_COLLECTOR_RESOURCE_PATH = 'v1/traces';\nconst DEFAULT_COLLECTOR_URL = `http://localhost:4318/${DEFAULT_COLLECTOR_RESOURCE_PATH}`;\nconst USER_AGENT = {\n 'User-Agent': `OTel-OTLP-Exporter-JavaScript/${version_1.VERSION}`,\n};\n/**\n * Collector Trace Exporter for Node with protobuf\n */\nclass OTLPTraceExporter extends otlp_proto_exporter_base_1.OTLPProtoExporterNodeBase {\n constructor(config = {}) {\n super(config);\n this.headers = Object.assign(Object.assign(Object.assign(Object.assign({}, this.headers), USER_AGENT), core_1.baggageUtils.parseKeyPairsIntoRecord((0, core_1.getEnv)().OTEL_EXPORTER_OTLP_TRACES_HEADERS)), (0, otlp_exporter_base_1.parseHeaders)(config === null || config === void 0 ? void 0 : config.headers));\n }\n convert(spans) {\n return (0, otlp_transformer_1.createExportTraceServiceRequest)(spans);\n }\n getDefaultUrl(config) {\n return typeof config.url === 'string'\n ? config.url\n : (0, core_1.getEnv)().OTEL_EXPORTER_OTLP_TRACES_ENDPOINT.length > 0\n ? (0, otlp_exporter_base_1.appendRootPathToUrlIfNeeded)((0, core_1.getEnv)().OTEL_EXPORTER_OTLP_TRACES_ENDPOINT)\n : (0, core_1.getEnv)().OTEL_EXPORTER_OTLP_ENDPOINT.length > 0\n ? (0, otlp_exporter_base_1.appendResourcePathToUrl)((0, core_1.getEnv)().OTEL_EXPORTER_OTLP_ENDPOINT, DEFAULT_COLLECTOR_RESOURCE_PATH)\n : DEFAULT_COLLECTOR_URL;\n }\n getServiceClientType() {\n return otlp_proto_exporter_base_1.ServiceClientType.SPANS;\n }\n}\nexports.OTLPTraceExporter = OTLPTraceExporter;\n//# sourceMappingURL=OTLPTraceExporter.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.OTLPTraceExporter = void 0;\nvar OTLPTraceExporter_1 = require(\"./OTLPTraceExporter\");\nObject.defineProperty(exports, \"OTLPTraceExporter\", { enumerable: true, get: function () { return OTLPTraceExporter_1.OTLPTraceExporter; } });\n//# sourceMappingURL=index.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.VERSION = void 0;\n// this is autogenerated file, see scripts/version-update.js\nexports.VERSION = '0.51.1';\n//# sourceMappingURL=version.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.OTLPExporterBase = void 0;\nconst api_1 = require(\"@opentelemetry/api\");\nconst core_1 = require(\"@opentelemetry/core\");\nconst util_1 = require(\"./util\");\n/**\n * Collector Exporter abstract base class\n */\nclass OTLPExporterBase {\n /**\n * @param config\n */\n constructor(config = {}) {\n this._sendingPromises = [];\n this.url = this.getDefaultUrl(config);\n if (typeof config.hostname === 'string') {\n this.hostname = config.hostname;\n }\n this.shutdown = this.shutdown.bind(this);\n this._shutdownOnce = new core_1.BindOnceFuture(this._shutdown, this);\n this._concurrencyLimit =\n typeof config.concurrencyLimit === 'number'\n ? config.concurrencyLimit\n : 30;\n this.timeoutMillis = (0, util_1.configureExporterTimeout)(config.timeoutMillis);\n // platform dependent\n this.onInit(config);\n }\n /**\n * Export items.\n * @param items\n * @param resultCallback\n */\n export(items, resultCallback) {\n if (this._shutdownOnce.isCalled) {\n resultCallback({\n code: core_1.ExportResultCode.FAILED,\n error: new Error('Exporter has been shutdown'),\n });\n return;\n }\n if (this._sendingPromises.length >= this._concurrencyLimit) {\n resultCallback({\n code: core_1.ExportResultCode.FAILED,\n error: new Error('Concurrent export limit reached'),\n });\n return;\n }\n this._export(items)\n .then(() => {\n resultCallback({ code: core_1.ExportResultCode.SUCCESS });\n })\n .catch((error) => {\n resultCallback({ code: core_1.ExportResultCode.FAILED, error });\n });\n }\n _export(items) {\n return new Promise((resolve, reject) => {\n try {\n api_1.diag.debug('items to be sent', items);\n this.send(items, resolve, reject);\n }\n catch (e) {\n reject(e);\n }\n });\n }\n /**\n * Shutdown the exporter.\n */\n shutdown() {\n return this._shutdownOnce.call();\n }\n /**\n * Exports any pending spans in the exporter\n */\n forceFlush() {\n return Promise.all(this._sendingPromises).then(() => {\n /** ignore resolved values */\n });\n }\n /**\n * Called by _shutdownOnce with BindOnceFuture\n */\n _shutdown() {\n api_1.diag.debug('shutdown started');\n this.onShutdown();\n return this.forceFlush();\n }\n}\nexports.OTLPExporterBase = OTLPExporterBase;\n//# sourceMappingURL=OTLPExporterBase.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.invalidTimeout = exports.configureExporterTimeout = exports.appendRootPathToUrlIfNeeded = exports.appendResourcePathToUrl = exports.parseHeaders = exports.OTLPExporterError = exports.OTLPExporterBase = void 0;\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n__exportStar(require(\"./platform\"), exports);\nvar OTLPExporterBase_1 = require(\"./OTLPExporterBase\");\nObject.defineProperty(exports, \"OTLPExporterBase\", { enumerable: true, get: function () { return OTLPExporterBase_1.OTLPExporterBase; } });\nvar types_1 = require(\"./types\");\nObject.defineProperty(exports, \"OTLPExporterError\", { enumerable: true, get: function () { return types_1.OTLPExporterError; } });\nvar util_1 = require(\"./util\");\nObject.defineProperty(exports, \"parseHeaders\", { enumerable: true, get: function () { return util_1.parseHeaders; } });\nObject.defineProperty(exports, \"appendResourcePathToUrl\", { enumerable: true, get: function () { return util_1.appendResourcePathToUrl; } });\nObject.defineProperty(exports, \"appendRootPathToUrlIfNeeded\", { enumerable: true, get: function () { return util_1.appendRootPathToUrlIfNeeded; } });\nObject.defineProperty(exports, \"configureExporterTimeout\", { enumerable: true, get: function () { return util_1.configureExporterTimeout; } });\nObject.defineProperty(exports, \"invalidTimeout\", { enumerable: true, get: function () { return util_1.invalidTimeout; } });\n//# sourceMappingURL=index.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.OTLPExporterBrowserBase = void 0;\nconst OTLPExporterBase_1 = require(\"../../OTLPExporterBase\");\nconst util_1 = require(\"../../util\");\nconst util_2 = require(\"./util\");\nconst api_1 = require(\"@opentelemetry/api\");\nconst core_1 = require(\"@opentelemetry/core\");\n/**\n * Collector Metric Exporter abstract base class\n */\nclass OTLPExporterBrowserBase extends OTLPExporterBase_1.OTLPExporterBase {\n /**\n * @param config\n */\n constructor(config = {}) {\n super(config);\n this._useXHR = false;\n this._useXHR =\n !!config.headers || typeof navigator.sendBeacon !== 'function';\n if (this._useXHR) {\n this._headers = Object.assign({}, (0, util_1.parseHeaders)(config.headers), core_1.baggageUtils.parseKeyPairsIntoRecord((0, core_1.getEnv)().OTEL_EXPORTER_OTLP_HEADERS));\n }\n else {\n this._headers = {};\n }\n }\n onInit() { }\n onShutdown() { }\n send(items, onSuccess, onError) {\n if (this._shutdownOnce.isCalled) {\n api_1.diag.debug('Shutdown already started. Cannot send objects');\n return;\n }\n const serviceRequest = this.convert(items);\n const body = JSON.stringify(serviceRequest);\n const promise = new Promise((resolve, reject) => {\n if (this._useXHR) {\n (0, util_2.sendWithXhr)(body, this.url, this._headers, this.timeoutMillis, resolve, reject);\n }\n else {\n (0, util_2.sendWithBeacon)(body, this.url, { type: 'application/json' }, resolve, reject);\n }\n }).then(onSuccess, onError);\n this._sendingPromises.push(promise);\n const popPromise = () => {\n const index = this._sendingPromises.indexOf(promise);\n this._sendingPromises.splice(index, 1);\n };\n promise.then(popPromise, popPromise);\n }\n}\nexports.OTLPExporterBrowserBase = OTLPExporterBrowserBase;\n//# sourceMappingURL=OTLPExporterBrowserBase.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.sendWithXhr = exports.OTLPExporterBrowserBase = void 0;\nvar OTLPExporterBrowserBase_1 = require(\"./OTLPExporterBrowserBase\");\nObject.defineProperty(exports, \"OTLPExporterBrowserBase\", { enumerable: true, get: function () { return OTLPExporterBrowserBase_1.OTLPExporterBrowserBase; } });\nvar util_1 = require(\"./util\");\nObject.defineProperty(exports, \"sendWithXhr\", { enumerable: true, get: function () { return util_1.sendWithXhr; } });\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.sendWithXhr = exports.sendWithBeacon = void 0;\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nconst api_1 = require(\"@opentelemetry/api\");\nconst types_1 = require(\"../../types\");\nconst util_1 = require(\"../../util\");\n/**\n * Send metrics/spans using browser navigator.sendBeacon\n * @param body\n * @param url\n * @param blobPropertyBag\n * @param onSuccess\n * @param onError\n */\nfunction sendWithBeacon(body, url, blobPropertyBag, onSuccess, onError) {\n if (navigator.sendBeacon(url, new Blob([body], blobPropertyBag))) {\n api_1.diag.debug('sendBeacon - can send', body);\n onSuccess();\n }\n else {\n const error = new types_1.OTLPExporterError(`sendBeacon - cannot send ${body}`);\n onError(error);\n }\n}\nexports.sendWithBeacon = sendWithBeacon;\n/**\n * function to send metrics/spans using browser XMLHttpRequest\n * used when navigator.sendBeacon is not available\n * @param body\n * @param url\n * @param headers\n * @param onSuccess\n * @param onError\n */\nfunction sendWithXhr(body, url, headers, exporterTimeout, onSuccess, onError) {\n let retryTimer;\n let xhr;\n let reqIsDestroyed = false;\n const exporterTimer = setTimeout(() => {\n clearTimeout(retryTimer);\n reqIsDestroyed = true;\n if (xhr.readyState === XMLHttpRequest.DONE) {\n const err = new types_1.OTLPExporterError('Request Timeout');\n onError(err);\n }\n else {\n xhr.abort();\n }\n }, exporterTimeout);\n const sendWithRetry = (retries = util_1.DEFAULT_EXPORT_MAX_ATTEMPTS, minDelay = util_1.DEFAULT_EXPORT_INITIAL_BACKOFF) => {\n xhr = new XMLHttpRequest();\n xhr.open('POST', url);\n const defaultHeaders = {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n };\n Object.entries(Object.assign(Object.assign({}, defaultHeaders), headers)).forEach(([k, v]) => {\n xhr.setRequestHeader(k, v);\n });\n xhr.send(body);\n xhr.onreadystatechange = () => {\n if (xhr.readyState === XMLHttpRequest.DONE && reqIsDestroyed === false) {\n if (xhr.status >= 200 && xhr.status <= 299) {\n api_1.diag.debug('xhr success', body);\n onSuccess();\n clearTimeout(exporterTimer);\n clearTimeout(retryTimer);\n }\n else if (xhr.status && (0, util_1.isExportRetryable)(xhr.status) && retries > 0) {\n let retryTime;\n minDelay = util_1.DEFAULT_EXPORT_BACKOFF_MULTIPLIER * minDelay;\n // retry after interval specified in Retry-After header\n if (xhr.getResponseHeader('Retry-After')) {\n retryTime = (0, util_1.parseRetryAfterToMills)(xhr.getResponseHeader('Retry-After'));\n }\n else {\n // exponential backoff with jitter\n retryTime = Math.round(Math.random() * (util_1.DEFAULT_EXPORT_MAX_BACKOFF - minDelay) + minDelay);\n }\n retryTimer = setTimeout(() => {\n sendWithRetry(retries - 1, minDelay);\n }, retryTime);\n }\n else {\n const error = new types_1.OTLPExporterError(`Failed to export with XHR (status: ${xhr.status})`, xhr.status);\n onError(error);\n clearTimeout(exporterTimer);\n clearTimeout(retryTimer);\n }\n }\n };\n xhr.onabort = () => {\n if (reqIsDestroyed) {\n const err = new types_1.OTLPExporterError('Request Timeout');\n onError(err);\n }\n clearTimeout(exporterTimer);\n clearTimeout(retryTimer);\n };\n xhr.onerror = () => {\n if (reqIsDestroyed) {\n const err = new types_1.OTLPExporterError('Request Timeout');\n onError(err);\n }\n clearTimeout(exporterTimer);\n clearTimeout(retryTimer);\n };\n };\n sendWithRetry();\n}\nexports.sendWithXhr = sendWithXhr;\n//# sourceMappingURL=util.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.sendWithXhr = exports.OTLPExporterBrowserBase = exports.CompressionAlgorithm = exports.configureCompression = exports.createHttpAgent = exports.sendWithHttp = exports.OTLPExporterNodeBase = void 0;\nvar node_1 = require(\"./node\");\nObject.defineProperty(exports, \"OTLPExporterNodeBase\", { enumerable: true, get: function () { return node_1.OTLPExporterNodeBase; } });\nObject.defineProperty(exports, \"sendWithHttp\", { enumerable: true, get: function () { return node_1.sendWithHttp; } });\nObject.defineProperty(exports, \"createHttpAgent\", { enumerable: true, get: function () { return node_1.createHttpAgent; } });\nObject.defineProperty(exports, \"configureCompression\", { enumerable: true, get: function () { return node_1.configureCompression; } });\nObject.defineProperty(exports, \"CompressionAlgorithm\", { enumerable: true, get: function () { return node_1.CompressionAlgorithm; } });\nvar browser_1 = require(\"./browser\");\nObject.defineProperty(exports, \"OTLPExporterBrowserBase\", { enumerable: true, get: function () { return browser_1.OTLPExporterBrowserBase; } });\nObject.defineProperty(exports, \"sendWithXhr\", { enumerable: true, get: function () { return browser_1.sendWithXhr; } });\n//# sourceMappingURL=index.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.OTLPExporterNodeBase = void 0;\nconst OTLPExporterBase_1 = require(\"../../OTLPExporterBase\");\nconst util_1 = require(\"../../util\");\nconst util_2 = require(\"./util\");\nconst api_1 = require(\"@opentelemetry/api\");\nconst core_1 = require(\"@opentelemetry/core\");\n/**\n * Collector Metric Exporter abstract base class\n */\nclass OTLPExporterNodeBase extends OTLPExporterBase_1.OTLPExporterBase {\n constructor(config = {}) {\n super(config);\n this.DEFAULT_HEADERS = {};\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (config.metadata) {\n api_1.diag.warn('Metadata cannot be set when using http');\n }\n this.headers = Object.assign(this.DEFAULT_HEADERS, (0, util_1.parseHeaders)(config.headers), core_1.baggageUtils.parseKeyPairsIntoRecord((0, core_1.getEnv)().OTEL_EXPORTER_OTLP_HEADERS));\n this.agent = (0, util_2.createHttpAgent)(config);\n this.compression = (0, util_2.configureCompression)(config.compression);\n }\n onInit(_config) { }\n send(objects, onSuccess, onError) {\n if (this._shutdownOnce.isCalled) {\n api_1.diag.debug('Shutdown already started. Cannot send objects');\n return;\n }\n const serviceRequest = this.convert(objects);\n const promise = new Promise((resolve, reject) => {\n (0, util_2.sendWithHttp)(this, JSON.stringify(serviceRequest), 'application/json', resolve, reject);\n }).then(onSuccess, onError);\n this._sendingPromises.push(promise);\n const popPromise = () => {\n const index = this._sendingPromises.indexOf(promise);\n this._sendingPromises.splice(index, 1);\n };\n promise.then(popPromise, popPromise);\n }\n onShutdown() { }\n}\nexports.OTLPExporterNodeBase = OTLPExporterNodeBase;\n//# sourceMappingURL=OTLPExporterNodeBase.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CompressionAlgorithm = exports.configureCompression = exports.createHttpAgent = exports.sendWithHttp = exports.OTLPExporterNodeBase = void 0;\nvar OTLPExporterNodeBase_1 = require(\"./OTLPExporterNodeBase\");\nObject.defineProperty(exports, \"OTLPExporterNodeBase\", { enumerable: true, get: function () { return OTLPExporterNodeBase_1.OTLPExporterNodeBase; } });\nvar util_1 = require(\"./util\");\nObject.defineProperty(exports, \"sendWithHttp\", { enumerable: true, get: function () { return util_1.sendWithHttp; } });\nObject.defineProperty(exports, \"createHttpAgent\", { enumerable: true, get: function () { return util_1.createHttpAgent; } });\nObject.defineProperty(exports, \"configureCompression\", { enumerable: true, get: function () { return util_1.configureCompression; } });\nvar types_1 = require(\"./types\");\nObject.defineProperty(exports, \"CompressionAlgorithm\", { enumerable: true, get: function () { return types_1.CompressionAlgorithm; } });\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CompressionAlgorithm = void 0;\nvar CompressionAlgorithm;\n(function (CompressionAlgorithm) {\n CompressionAlgorithm[\"NONE\"] = \"none\";\n CompressionAlgorithm[\"GZIP\"] = \"gzip\";\n})(CompressionAlgorithm = exports.CompressionAlgorithm || (exports.CompressionAlgorithm = {}));\n//# sourceMappingURL=types.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.configureCompression = exports.createHttpAgent = exports.sendWithHttp = void 0;\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nconst url = require(\"url\");\nconst http = require(\"http\");\nconst https = require(\"https\");\nconst zlib = require(\"zlib\");\nconst stream_1 = require(\"stream\");\nconst api_1 = require(\"@opentelemetry/api\");\nconst types_1 = require(\"./types\");\nconst core_1 = require(\"@opentelemetry/core\");\nconst types_2 = require(\"../../types\");\nconst util_1 = require(\"../../util\");\n/**\n * Sends data using http\n * @param collector\n * @param data\n * @param contentType\n * @param onSuccess\n * @param onError\n */\nfunction sendWithHttp(collector, data, contentType, onSuccess, onError) {\n const exporterTimeout = collector.timeoutMillis;\n const parsedUrl = new url.URL(collector.url);\n const nodeVersion = Number(process.versions.node.split('.')[0]);\n let retryTimer;\n let req;\n let reqIsDestroyed = false;\n const exporterTimer = setTimeout(() => {\n clearTimeout(retryTimer);\n reqIsDestroyed = true;\n if (req.destroyed) {\n const err = new types_2.OTLPExporterError('Request Timeout');\n onError(err);\n }\n else {\n // req.abort() was deprecated since v14\n nodeVersion >= 14 ? req.destroy() : req.abort();\n }\n }, exporterTimeout);\n const options = {\n hostname: parsedUrl.hostname,\n port: parsedUrl.port,\n path: parsedUrl.pathname,\n method: 'POST',\n headers: Object.assign({ 'Content-Type': contentType }, collector.headers),\n agent: collector.agent,\n };\n const request = parsedUrl.protocol === 'http:' ? http.request : https.request;\n const sendWithRetry = (retries = util_1.DEFAULT_EXPORT_MAX_ATTEMPTS, minDelay = util_1.DEFAULT_EXPORT_INITIAL_BACKOFF) => {\n req = request(options, (res) => {\n let responseData = '';\n res.on('data', chunk => (responseData += chunk));\n res.on('aborted', () => {\n if (reqIsDestroyed) {\n const err = new types_2.OTLPExporterError('Request Timeout');\n onError(err);\n }\n });\n res.on('end', () => {\n if (reqIsDestroyed === false) {\n if (res.statusCode && res.statusCode < 299) {\n api_1.diag.debug(`statusCode: ${res.statusCode}`, responseData);\n onSuccess();\n // clear all timers since request was completed and promise was resolved\n clearTimeout(exporterTimer);\n clearTimeout(retryTimer);\n }\n else if (res.statusCode &&\n (0, util_1.isExportRetryable)(res.statusCode) &&\n retries > 0) {\n let retryTime;\n minDelay = util_1.DEFAULT_EXPORT_BACKOFF_MULTIPLIER * minDelay;\n // retry after interval specified in Retry-After header\n if (res.headers['retry-after']) {\n retryTime = (0, util_1.parseRetryAfterToMills)(res.headers['retry-after']);\n }\n else {\n // exponential backoff with jitter\n retryTime = Math.round(Math.random() * (util_1.DEFAULT_EXPORT_MAX_BACKOFF - minDelay) +\n minDelay);\n }\n retryTimer = setTimeout(() => {\n sendWithRetry(retries - 1, minDelay);\n }, retryTime);\n }\n else {\n const error = new types_2.OTLPExporterError(res.statusMessage, res.statusCode, responseData);\n onError(error);\n // clear all timers since request was completed and promise was resolved\n clearTimeout(exporterTimer);\n clearTimeout(retryTimer);\n }\n }\n });\n });\n req.on('error', (error) => {\n if (reqIsDestroyed) {\n const err = new types_2.OTLPExporterError('Request Timeout', error.code);\n onError(err);\n }\n else {\n onError(error);\n }\n clearTimeout(exporterTimer);\n clearTimeout(retryTimer);\n });\n req.on('abort', () => {\n if (reqIsDestroyed) {\n const err = new types_2.OTLPExporterError('Request Timeout');\n onError(err);\n }\n clearTimeout(exporterTimer);\n clearTimeout(retryTimer);\n });\n switch (collector.compression) {\n case types_1.CompressionAlgorithm.GZIP: {\n req.setHeader('Content-Encoding', 'gzip');\n const dataStream = readableFromBuffer(data);\n dataStream\n .on('error', onError)\n .pipe(zlib.createGzip())\n .on('error', onError)\n .pipe(req);\n break;\n }\n default:\n req.end(data);\n break;\n }\n };\n sendWithRetry();\n}\nexports.sendWithHttp = sendWithHttp;\nfunction readableFromBuffer(buff) {\n const readable = new stream_1.Readable();\n readable.push(buff);\n readable.push(null);\n return readable;\n}\nfunction createHttpAgent(config) {\n if (config.httpAgentOptions && config.keepAlive === false) {\n api_1.diag.warn('httpAgentOptions is used only when keepAlive is true');\n return undefined;\n }\n if (config.keepAlive === false || !config.url)\n return undefined;\n try {\n const parsedUrl = new url.URL(config.url);\n const Agent = parsedUrl.protocol === 'http:' ? http.Agent : https.Agent;\n return new Agent(Object.assign({ keepAlive: true }, config.httpAgentOptions));\n }\n catch (err) {\n api_1.diag.error(`collector exporter failed to create http agent. err: ${err.message}`);\n return undefined;\n }\n}\nexports.createHttpAgent = createHttpAgent;\nfunction configureCompression(compression) {\n if (compression) {\n return compression;\n }\n else {\n const definedCompression = (0, core_1.getEnv)().OTEL_EXPORTER_OTLP_TRACES_COMPRESSION ||\n (0, core_1.getEnv)().OTEL_EXPORTER_OTLP_COMPRESSION;\n return definedCompression === types_1.CompressionAlgorithm.GZIP\n ? types_1.CompressionAlgorithm.GZIP\n : types_1.CompressionAlgorithm.NONE;\n }\n}\nexports.configureCompression = configureCompression;\n//# sourceMappingURL=util.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.OTLPExporterError = void 0;\n/**\n * Interface for handling error\n */\nclass OTLPExporterError extends Error {\n constructor(message, code, data) {\n super(message);\n this.name = 'OTLPExporterError';\n this.data = data;\n this.code = code;\n }\n}\nexports.OTLPExporterError = OTLPExporterError;\n//# sourceMappingURL=types.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.parseRetryAfterToMills = exports.isExportRetryable = exports.invalidTimeout = exports.configureExporterTimeout = exports.appendRootPathToUrlIfNeeded = exports.appendResourcePathToUrl = exports.parseHeaders = exports.DEFAULT_EXPORT_BACKOFF_MULTIPLIER = exports.DEFAULT_EXPORT_MAX_BACKOFF = exports.DEFAULT_EXPORT_INITIAL_BACKOFF = exports.DEFAULT_EXPORT_MAX_ATTEMPTS = void 0;\nconst api_1 = require(\"@opentelemetry/api\");\nconst core_1 = require(\"@opentelemetry/core\");\nconst DEFAULT_TRACE_TIMEOUT = 10000;\nexports.DEFAULT_EXPORT_MAX_ATTEMPTS = 5;\nexports.DEFAULT_EXPORT_INITIAL_BACKOFF = 1000;\nexports.DEFAULT_EXPORT_MAX_BACKOFF = 5000;\nexports.DEFAULT_EXPORT_BACKOFF_MULTIPLIER = 1.5;\n/**\n * Parses headers from config leaving only those that have defined values\n * @param partialHeaders\n */\nfunction parseHeaders(partialHeaders = {}) {\n const headers = {};\n Object.entries(partialHeaders).forEach(([key, value]) => {\n if (typeof value !== 'undefined') {\n headers[key] = String(value);\n }\n else {\n api_1.diag.warn(`Header \"${key}\" has invalid value (${value}) and will be ignored`);\n }\n });\n return headers;\n}\nexports.parseHeaders = parseHeaders;\n/**\n * Adds path (version + signal) to a no per-signal endpoint\n * @param url\n * @param path\n * @returns url + path\n */\nfunction appendResourcePathToUrl(url, path) {\n if (!url.endsWith('/')) {\n url = url + '/';\n }\n return url + path;\n}\nexports.appendResourcePathToUrl = appendResourcePathToUrl;\n/**\n * Adds root path to signal specific endpoint when endpoint contains no path part and no root path\n * @param url\n * @returns url\n */\nfunction appendRootPathToUrlIfNeeded(url) {\n try {\n const parsedUrl = new URL(url);\n if (parsedUrl.pathname === '') {\n parsedUrl.pathname = parsedUrl.pathname + '/';\n }\n return parsedUrl.toString();\n }\n catch (_a) {\n api_1.diag.warn(`Could not parse export URL: '${url}'`);\n return url;\n }\n}\nexports.appendRootPathToUrlIfNeeded = appendRootPathToUrlIfNeeded;\n/**\n * Configure exporter trace timeout value from passed in value or environment variables\n * @param timeoutMillis\n * @returns timeout value in milliseconds\n */\nfunction configureExporterTimeout(timeoutMillis) {\n if (typeof timeoutMillis === 'number') {\n if (timeoutMillis <= 0) {\n // OTLP exporter configured timeout - using default value of 10000ms\n return invalidTimeout(timeoutMillis, DEFAULT_TRACE_TIMEOUT);\n }\n return timeoutMillis;\n }\n else {\n return getExporterTimeoutFromEnv();\n }\n}\nexports.configureExporterTimeout = configureExporterTimeout;\nfunction getExporterTimeoutFromEnv() {\n var _a;\n const definedTimeout = Number((_a = (0, core_1.getEnv)().OTEL_EXPORTER_OTLP_TRACES_TIMEOUT) !== null && _a !== void 0 ? _a : (0, core_1.getEnv)().OTEL_EXPORTER_OTLP_TIMEOUT);\n if (definedTimeout <= 0) {\n // OTLP exporter configured timeout - using default value of 10000ms\n return invalidTimeout(definedTimeout, DEFAULT_TRACE_TIMEOUT);\n }\n else {\n return definedTimeout;\n }\n}\n// OTLP exporter configured timeout - using default value of 10000ms\nfunction invalidTimeout(timeout, defaultTimeout) {\n api_1.diag.warn('Timeout must be greater than 0', timeout);\n return defaultTimeout;\n}\nexports.invalidTimeout = invalidTimeout;\nfunction isExportRetryable(statusCode) {\n const retryCodes = [429, 502, 503, 504];\n return retryCodes.includes(statusCode);\n}\nexports.isExportRetryable = isExportRetryable;\nfunction parseRetryAfterToMills(retryAfter) {\n if (retryAfter == null) {\n return -1;\n }\n const seconds = Number.parseInt(retryAfter, 10);\n if (Number.isInteger(seconds)) {\n return seconds > 0 ? seconds * 1000 : -1;\n }\n // https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Retry-After#directives\n const delay = new Date(retryAfter).getTime() - Date.now();\n if (delay >= 0) {\n return delay;\n }\n return 0;\n}\nexports.parseRetryAfterToMills = parseRetryAfterToMills;\n//# sourceMappingURL=util.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.OTLPGRPCExporterNodeBase = void 0;\nconst api_1 = require(\"@opentelemetry/api\");\nconst core_1 = require(\"@opentelemetry/core\");\nconst otlp_exporter_base_1 = require(\"@opentelemetry/otlp-exporter-base\");\nconst grpc_exporter_transport_1 = require(\"./grpc-exporter-transport\");\nconst util_1 = require(\"./util\");\n/**\n * OTLP Exporter abstract base class\n */\nclass OTLPGRPCExporterNodeBase extends otlp_exporter_base_1.OTLPExporterBase {\n constructor(config = {}, signalSpecificMetadata, grpcName, grpcPath, serializer) {\n var _a;\n super(config);\n this.grpcQueue = [];\n this._serializer = serializer;\n if (config.headers) {\n api_1.diag.warn('Headers cannot be set when using grpc');\n }\n const nonSignalSpecificMetadata = core_1.baggageUtils.parseKeyPairsIntoRecord((0, core_1.getEnv)().OTEL_EXPORTER_OTLP_HEADERS);\n const rawMetadata = Object.assign({}, nonSignalSpecificMetadata, signalSpecificMetadata);\n let credentialProvider = () => {\n return (0, util_1.configureCredentials)(undefined, this.getUrlFromConfig(config));\n };\n if (config.credentials != null) {\n const credentials = config.credentials;\n credentialProvider = () => {\n return credentials;\n };\n }\n // Ensure we don't modify the original.\n const configMetadata = (_a = config.metadata) === null || _a === void 0 ? void 0 : _a.clone();\n const metadataProvider = () => {\n const metadata = configMetadata !== null && configMetadata !== void 0 ? configMetadata : (0, grpc_exporter_transport_1.createEmptyMetadata)();\n for (const [key, value] of Object.entries(rawMetadata)) {\n // only override with env var data if the key has no values.\n // not using Metadata.merge() as it will keep both values.\n if (metadata.get(key).length < 1) {\n metadata.set(key, value);\n }\n }\n return metadata;\n };\n this.compression = (0, util_1.configureCompression)(config.compression);\n this._transport = new grpc_exporter_transport_1.GrpcExporterTransport({\n address: this.getDefaultUrl(config),\n compression: this.compression,\n credentials: credentialProvider,\n grpcName: grpcName,\n grpcPath: grpcPath,\n metadata: metadataProvider,\n timeoutMillis: this.timeoutMillis,\n });\n }\n onInit() {\n // Intentionally left empty; nothing to do.\n }\n onShutdown() {\n this._transport.shutdown();\n }\n send(objects, onSuccess, onError) {\n if (this._shutdownOnce.isCalled) {\n api_1.diag.debug('Shutdown already started. Cannot send objects');\n return;\n }\n const converted = this.convert(objects);\n const data = this._serializer.serializeRequest(converted);\n if (data == null) {\n onError(new Error('Could not serialize message'));\n return;\n }\n const promise = this._transport.send(data).then(response => {\n if (response.status === 'success') {\n onSuccess();\n return;\n }\n if (response.status === 'failure' && response.error) {\n onError(response.error);\n }\n onError(new otlp_exporter_base_1.OTLPExporterError('Export failed with unknown error'));\n }, onError);\n this._sendingPromises.push(promise);\n const popPromise = () => {\n const index = this._sendingPromises.indexOf(promise);\n this._sendingPromises.splice(index, 1);\n };\n promise.then(popPromise, popPromise);\n }\n}\nexports.OTLPGRPCExporterNodeBase = OTLPGRPCExporterNodeBase;\n//# sourceMappingURL=OTLPGRPCExporterNodeBase.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createServiceClientConstructor = void 0;\nconst grpc = require(\"@grpc/grpc-js\");\n/**\n * Creates a unary service client constructor that, when instantiated, does not serialize/deserialize anything.\n * Allows for passing in {@link Buffer} directly, serialization can be handled via protobufjs or custom implementations.\n *\n * @param path service path\n * @param name service name\n */\nfunction createServiceClientConstructor(path, name) {\n const serviceDefinition = {\n export: {\n path: path,\n requestStream: false,\n responseStream: false,\n requestSerialize: (arg) => {\n return arg;\n },\n requestDeserialize: (arg) => {\n return arg;\n },\n responseSerialize: (arg) => {\n return arg;\n },\n responseDeserialize: (arg) => {\n return arg;\n },\n },\n };\n return grpc.makeGenericClientConstructor(serviceDefinition, name);\n}\nexports.createServiceClientConstructor = createServiceClientConstructor;\n//# sourceMappingURL=create-service-client-constructor.js.map","/*eslint-disable block-scoped-var, id-length, no-control-regex, no-magic-numbers, no-prototype-builtins, no-redeclare, no-shadow, no-var, sort-vars*/\n\"use strict\";\nvar $protobuf = require(\"protobufjs/minimal\");\n// Common aliases\nvar $Reader = $protobuf.Reader, $Writer = $protobuf.Writer, $util = $protobuf.util;\n// Exported root namespace\nvar $root = $protobuf.roots[\"default\"] || ($protobuf.roots[\"default\"] = {});\n$root.opentelemetry = (function () {\n /**\n * Namespace opentelemetry.\n * @exports opentelemetry\n * @namespace\n */\n var opentelemetry = {};\n opentelemetry.proto = (function () {\n /**\n * Namespace proto.\n * @memberof opentelemetry\n * @namespace\n */\n var proto = {};\n proto.common = (function () {\n /**\n * Namespace common.\n * @memberof opentelemetry.proto\n * @namespace\n */\n var common = {};\n common.v1 = (function () {\n /**\n * Namespace v1.\n * @memberof opentelemetry.proto.common\n * @namespace\n */\n var v1 = {};\n v1.AnyValue = (function () {\n /**\n * Properties of an AnyValue.\n * @memberof opentelemetry.proto.common.v1\n * @interface IAnyValue\n * @property {string|null} [stringValue] AnyValue stringValue\n * @property {boolean|null} [boolValue] AnyValue boolValue\n * @property {number|Long|null} [intValue] AnyValue intValue\n * @property {number|null} [doubleValue] AnyValue doubleValue\n * @property {opentelemetry.proto.common.v1.IArrayValue|null} [arrayValue] AnyValue arrayValue\n * @property {opentelemetry.proto.common.v1.IKeyValueList|null} [kvlistValue] AnyValue kvlistValue\n * @property {Uint8Array|null} [bytesValue] AnyValue bytesValue\n */\n /**\n * Constructs a new AnyValue.\n * @memberof opentelemetry.proto.common.v1\n * @classdesc Represents an AnyValue.\n * @implements IAnyValue\n * @constructor\n * @param {opentelemetry.proto.common.v1.IAnyValue=} [properties] Properties to set\n */\n function AnyValue(properties) {\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n /**\n * AnyValue stringValue.\n * @member {string|null|undefined} stringValue\n * @memberof opentelemetry.proto.common.v1.AnyValue\n * @instance\n */\n AnyValue.prototype.stringValue = null;\n /**\n * AnyValue boolValue.\n * @member {boolean|null|undefined} boolValue\n * @memberof opentelemetry.proto.common.v1.AnyValue\n * @instance\n */\n AnyValue.prototype.boolValue = null;\n /**\n * AnyValue intValue.\n * @member {number|Long|null|undefined} intValue\n * @memberof opentelemetry.proto.common.v1.AnyValue\n * @instance\n */\n AnyValue.prototype.intValue = null;\n /**\n * AnyValue doubleValue.\n * @member {number|null|undefined} doubleValue\n * @memberof opentelemetry.proto.common.v1.AnyValue\n * @instance\n */\n AnyValue.prototype.doubleValue = null;\n /**\n * AnyValue arrayValue.\n * @member {opentelemetry.proto.common.v1.IArrayValue|null|undefined} arrayValue\n * @memberof opentelemetry.proto.common.v1.AnyValue\n * @instance\n */\n AnyValue.prototype.arrayValue = null;\n /**\n * AnyValue kvlistValue.\n * @member {opentelemetry.proto.common.v1.IKeyValueList|null|undefined} kvlistValue\n * @memberof opentelemetry.proto.common.v1.AnyValue\n * @instance\n */\n AnyValue.prototype.kvlistValue = null;\n /**\n * AnyValue bytesValue.\n * @member {Uint8Array|null|undefined} bytesValue\n * @memberof opentelemetry.proto.common.v1.AnyValue\n * @instance\n */\n AnyValue.prototype.bytesValue = null;\n // OneOf field names bound to virtual getters and setters\n var $oneOfFields;\n /**\n * AnyValue value.\n * @member {\"stringValue\"|\"boolValue\"|\"intValue\"|\"doubleValue\"|\"arrayValue\"|\"kvlistValue\"|\"bytesValue\"|undefined} value\n * @memberof opentelemetry.proto.common.v1.AnyValue\n * @instance\n */\n Object.defineProperty(AnyValue.prototype, \"value\", {\n get: $util.oneOfGetter($oneOfFields = [\"stringValue\", \"boolValue\", \"intValue\", \"doubleValue\", \"arrayValue\", \"kvlistValue\", \"bytesValue\"]),\n set: $util.oneOfSetter($oneOfFields)\n });\n /**\n * Creates a new AnyValue instance using the specified properties.\n * @function create\n * @memberof opentelemetry.proto.common.v1.AnyValue\n * @static\n * @param {opentelemetry.proto.common.v1.IAnyValue=} [properties] Properties to set\n * @returns {opentelemetry.proto.common.v1.AnyValue} AnyValue instance\n */\n AnyValue.create = function create(properties) {\n return new AnyValue(properties);\n };\n /**\n * Encodes the specified AnyValue message. Does not implicitly {@link opentelemetry.proto.common.v1.AnyValue.verify|verify} messages.\n * @function encode\n * @memberof opentelemetry.proto.common.v1.AnyValue\n * @static\n * @param {opentelemetry.proto.common.v1.IAnyValue} message AnyValue message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n AnyValue.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.stringValue != null && Object.hasOwnProperty.call(message, \"stringValue\"))\n writer.uint32(/* id 1, wireType 2 =*/ 10).string(message.stringValue);\n if (message.boolValue != null && Object.hasOwnProperty.call(message, \"boolValue\"))\n writer.uint32(/* id 2, wireType 0 =*/ 16).bool(message.boolValue);\n if (message.intValue != null && Object.hasOwnProperty.call(message, \"intValue\"))\n writer.uint32(/* id 3, wireType 0 =*/ 24).int64(message.intValue);\n if (message.doubleValue != null && Object.hasOwnProperty.call(message, \"doubleValue\"))\n writer.uint32(/* id 4, wireType 1 =*/ 33).double(message.doubleValue);\n if (message.arrayValue != null && Object.hasOwnProperty.call(message, \"arrayValue\"))\n $root.opentelemetry.proto.common.v1.ArrayValue.encode(message.arrayValue, writer.uint32(/* id 5, wireType 2 =*/ 42).fork()).ldelim();\n if (message.kvlistValue != null && Object.hasOwnProperty.call(message, \"kvlistValue\"))\n $root.opentelemetry.proto.common.v1.KeyValueList.encode(message.kvlistValue, writer.uint32(/* id 6, wireType 2 =*/ 50).fork()).ldelim();\n if (message.bytesValue != null && Object.hasOwnProperty.call(message, \"bytesValue\"))\n writer.uint32(/* id 7, wireType 2 =*/ 58).bytes(message.bytesValue);\n return writer;\n };\n /**\n * Encodes the specified AnyValue message, length delimited. Does not implicitly {@link opentelemetry.proto.common.v1.AnyValue.verify|verify} messages.\n * @function encodeDelimited\n * @memberof opentelemetry.proto.common.v1.AnyValue\n * @static\n * @param {opentelemetry.proto.common.v1.IAnyValue} message AnyValue message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n AnyValue.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n /**\n * Decodes an AnyValue message from the specified reader or buffer.\n * @function decode\n * @memberof opentelemetry.proto.common.v1.AnyValue\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {opentelemetry.proto.common.v1.AnyValue} AnyValue\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n AnyValue.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.opentelemetry.proto.common.v1.AnyValue();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n message.stringValue = reader.string();\n break;\n }\n case 2: {\n message.boolValue = reader.bool();\n break;\n }\n case 3: {\n message.intValue = reader.int64();\n break;\n }\n case 4: {\n message.doubleValue = reader.double();\n break;\n }\n case 5: {\n message.arrayValue = $root.opentelemetry.proto.common.v1.ArrayValue.decode(reader, reader.uint32());\n break;\n }\n case 6: {\n message.kvlistValue = $root.opentelemetry.proto.common.v1.KeyValueList.decode(reader, reader.uint32());\n break;\n }\n case 7: {\n message.bytesValue = reader.bytes();\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n /**\n * Decodes an AnyValue message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof opentelemetry.proto.common.v1.AnyValue\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {opentelemetry.proto.common.v1.AnyValue} AnyValue\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n AnyValue.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n /**\n * Verifies an AnyValue message.\n * @function verify\n * @memberof opentelemetry.proto.common.v1.AnyValue\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n AnyValue.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n var properties = {};\n if (message.stringValue != null && message.hasOwnProperty(\"stringValue\")) {\n properties.value = 1;\n if (!$util.isString(message.stringValue))\n return \"stringValue: string expected\";\n }\n if (message.boolValue != null && message.hasOwnProperty(\"boolValue\")) {\n if (properties.value === 1)\n return \"value: multiple values\";\n properties.value = 1;\n if (typeof message.boolValue !== \"boolean\")\n return \"boolValue: boolean expected\";\n }\n if (message.intValue != null && message.hasOwnProperty(\"intValue\")) {\n if (properties.value === 1)\n return \"value: multiple values\";\n properties.value = 1;\n if (!$util.isInteger(message.intValue) && !(message.intValue && $util.isInteger(message.intValue.low) && $util.isInteger(message.intValue.high)))\n return \"intValue: integer|Long expected\";\n }\n if (message.doubleValue != null && message.hasOwnProperty(\"doubleValue\")) {\n if (properties.value === 1)\n return \"value: multiple values\";\n properties.value = 1;\n if (typeof message.doubleValue !== \"number\")\n return \"doubleValue: number expected\";\n }\n if (message.arrayValue != null && message.hasOwnProperty(\"arrayValue\")) {\n if (properties.value === 1)\n return \"value: multiple values\";\n properties.value = 1;\n {\n var error = $root.opentelemetry.proto.common.v1.ArrayValue.verify(message.arrayValue);\n if (error)\n return \"arrayValue.\" + error;\n }\n }\n if (message.kvlistValue != null && message.hasOwnProperty(\"kvlistValue\")) {\n if (properties.value === 1)\n return \"value: multiple values\";\n properties.value = 1;\n {\n var error = $root.opentelemetry.proto.common.v1.KeyValueList.verify(message.kvlistValue);\n if (error)\n return \"kvlistValue.\" + error;\n }\n }\n if (message.bytesValue != null && message.hasOwnProperty(\"bytesValue\")) {\n if (properties.value === 1)\n return \"value: multiple values\";\n properties.value = 1;\n if (!(message.bytesValue && typeof message.bytesValue.length === \"number\" || $util.isString(message.bytesValue)))\n return \"bytesValue: buffer expected\";\n }\n return null;\n };\n /**\n * Creates an AnyValue message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof opentelemetry.proto.common.v1.AnyValue\n * @static\n * @param {Object.} object Plain object\n * @returns {opentelemetry.proto.common.v1.AnyValue} AnyValue\n */\n AnyValue.fromObject = function fromObject(object) {\n if (object instanceof $root.opentelemetry.proto.common.v1.AnyValue)\n return object;\n var message = new $root.opentelemetry.proto.common.v1.AnyValue();\n if (object.stringValue != null)\n message.stringValue = String(object.stringValue);\n if (object.boolValue != null)\n message.boolValue = Boolean(object.boolValue);\n if (object.intValue != null)\n if ($util.Long)\n (message.intValue = $util.Long.fromValue(object.intValue)).unsigned = false;\n else if (typeof object.intValue === \"string\")\n message.intValue = parseInt(object.intValue, 10);\n else if (typeof object.intValue === \"number\")\n message.intValue = object.intValue;\n else if (typeof object.intValue === \"object\")\n message.intValue = new $util.LongBits(object.intValue.low >>> 0, object.intValue.high >>> 0).toNumber();\n if (object.doubleValue != null)\n message.doubleValue = Number(object.doubleValue);\n if (object.arrayValue != null) {\n if (typeof object.arrayValue !== \"object\")\n throw TypeError(\".opentelemetry.proto.common.v1.AnyValue.arrayValue: object expected\");\n message.arrayValue = $root.opentelemetry.proto.common.v1.ArrayValue.fromObject(object.arrayValue);\n }\n if (object.kvlistValue != null) {\n if (typeof object.kvlistValue !== \"object\")\n throw TypeError(\".opentelemetry.proto.common.v1.AnyValue.kvlistValue: object expected\");\n message.kvlistValue = $root.opentelemetry.proto.common.v1.KeyValueList.fromObject(object.kvlistValue);\n }\n if (object.bytesValue != null)\n if (typeof object.bytesValue === \"string\")\n $util.base64.decode(object.bytesValue, message.bytesValue = $util.newBuffer($util.base64.length(object.bytesValue)), 0);\n else if (object.bytesValue.length >= 0)\n message.bytesValue = object.bytesValue;\n return message;\n };\n /**\n * Creates a plain object from an AnyValue message. Also converts values to other types if specified.\n * @function toObject\n * @memberof opentelemetry.proto.common.v1.AnyValue\n * @static\n * @param {opentelemetry.proto.common.v1.AnyValue} message AnyValue\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n AnyValue.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n var object = {};\n if (message.stringValue != null && message.hasOwnProperty(\"stringValue\")) {\n object.stringValue = message.stringValue;\n if (options.oneofs)\n object.value = \"stringValue\";\n }\n if (message.boolValue != null && message.hasOwnProperty(\"boolValue\")) {\n object.boolValue = message.boolValue;\n if (options.oneofs)\n object.value = \"boolValue\";\n }\n if (message.intValue != null && message.hasOwnProperty(\"intValue\")) {\n if (typeof message.intValue === \"number\")\n object.intValue = options.longs === String ? String(message.intValue) : message.intValue;\n else\n object.intValue = options.longs === String ? $util.Long.prototype.toString.call(message.intValue) : options.longs === Number ? new $util.LongBits(message.intValue.low >>> 0, message.intValue.high >>> 0).toNumber() : message.intValue;\n if (options.oneofs)\n object.value = \"intValue\";\n }\n if (message.doubleValue != null && message.hasOwnProperty(\"doubleValue\")) {\n object.doubleValue = options.json && !isFinite(message.doubleValue) ? String(message.doubleValue) : message.doubleValue;\n if (options.oneofs)\n object.value = \"doubleValue\";\n }\n if (message.arrayValue != null && message.hasOwnProperty(\"arrayValue\")) {\n object.arrayValue = $root.opentelemetry.proto.common.v1.ArrayValue.toObject(message.arrayValue, options);\n if (options.oneofs)\n object.value = \"arrayValue\";\n }\n if (message.kvlistValue != null && message.hasOwnProperty(\"kvlistValue\")) {\n object.kvlistValue = $root.opentelemetry.proto.common.v1.KeyValueList.toObject(message.kvlistValue, options);\n if (options.oneofs)\n object.value = \"kvlistValue\";\n }\n if (message.bytesValue != null && message.hasOwnProperty(\"bytesValue\")) {\n object.bytesValue = options.bytes === String ? $util.base64.encode(message.bytesValue, 0, message.bytesValue.length) : options.bytes === Array ? Array.prototype.slice.call(message.bytesValue) : message.bytesValue;\n if (options.oneofs)\n object.value = \"bytesValue\";\n }\n return object;\n };\n /**\n * Converts this AnyValue to JSON.\n * @function toJSON\n * @memberof opentelemetry.proto.common.v1.AnyValue\n * @instance\n * @returns {Object.} JSON object\n */\n AnyValue.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n /**\n * Gets the default type url for AnyValue\n * @function getTypeUrl\n * @memberof opentelemetry.proto.common.v1.AnyValue\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n AnyValue.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = \"type.googleapis.com\";\n }\n return typeUrlPrefix + \"/opentelemetry.proto.common.v1.AnyValue\";\n };\n return AnyValue;\n })();\n v1.ArrayValue = (function () {\n /**\n * Properties of an ArrayValue.\n * @memberof opentelemetry.proto.common.v1\n * @interface IArrayValue\n * @property {Array.|null} [values] ArrayValue values\n */\n /**\n * Constructs a new ArrayValue.\n * @memberof opentelemetry.proto.common.v1\n * @classdesc Represents an ArrayValue.\n * @implements IArrayValue\n * @constructor\n * @param {opentelemetry.proto.common.v1.IArrayValue=} [properties] Properties to set\n */\n function ArrayValue(properties) {\n this.values = [];\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n /**\n * ArrayValue values.\n * @member {Array.} values\n * @memberof opentelemetry.proto.common.v1.ArrayValue\n * @instance\n */\n ArrayValue.prototype.values = $util.emptyArray;\n /**\n * Creates a new ArrayValue instance using the specified properties.\n * @function create\n * @memberof opentelemetry.proto.common.v1.ArrayValue\n * @static\n * @param {opentelemetry.proto.common.v1.IArrayValue=} [properties] Properties to set\n * @returns {opentelemetry.proto.common.v1.ArrayValue} ArrayValue instance\n */\n ArrayValue.create = function create(properties) {\n return new ArrayValue(properties);\n };\n /**\n * Encodes the specified ArrayValue message. Does not implicitly {@link opentelemetry.proto.common.v1.ArrayValue.verify|verify} messages.\n * @function encode\n * @memberof opentelemetry.proto.common.v1.ArrayValue\n * @static\n * @param {opentelemetry.proto.common.v1.IArrayValue} message ArrayValue message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ArrayValue.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.values != null && message.values.length)\n for (var i = 0; i < message.values.length; ++i)\n $root.opentelemetry.proto.common.v1.AnyValue.encode(message.values[i], writer.uint32(/* id 1, wireType 2 =*/ 10).fork()).ldelim();\n return writer;\n };\n /**\n * Encodes the specified ArrayValue message, length delimited. Does not implicitly {@link opentelemetry.proto.common.v1.ArrayValue.verify|verify} messages.\n * @function encodeDelimited\n * @memberof opentelemetry.proto.common.v1.ArrayValue\n * @static\n * @param {opentelemetry.proto.common.v1.IArrayValue} message ArrayValue message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ArrayValue.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n /**\n * Decodes an ArrayValue message from the specified reader or buffer.\n * @function decode\n * @memberof opentelemetry.proto.common.v1.ArrayValue\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {opentelemetry.proto.common.v1.ArrayValue} ArrayValue\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ArrayValue.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.opentelemetry.proto.common.v1.ArrayValue();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (!(message.values && message.values.length))\n message.values = [];\n message.values.push($root.opentelemetry.proto.common.v1.AnyValue.decode(reader, reader.uint32()));\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n /**\n * Decodes an ArrayValue message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof opentelemetry.proto.common.v1.ArrayValue\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {opentelemetry.proto.common.v1.ArrayValue} ArrayValue\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ArrayValue.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n /**\n * Verifies an ArrayValue message.\n * @function verify\n * @memberof opentelemetry.proto.common.v1.ArrayValue\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n ArrayValue.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.values != null && message.hasOwnProperty(\"values\")) {\n if (!Array.isArray(message.values))\n return \"values: array expected\";\n for (var i = 0; i < message.values.length; ++i) {\n var error = $root.opentelemetry.proto.common.v1.AnyValue.verify(message.values[i]);\n if (error)\n return \"values.\" + error;\n }\n }\n return null;\n };\n /**\n * Creates an ArrayValue message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof opentelemetry.proto.common.v1.ArrayValue\n * @static\n * @param {Object.} object Plain object\n * @returns {opentelemetry.proto.common.v1.ArrayValue} ArrayValue\n */\n ArrayValue.fromObject = function fromObject(object) {\n if (object instanceof $root.opentelemetry.proto.common.v1.ArrayValue)\n return object;\n var message = new $root.opentelemetry.proto.common.v1.ArrayValue();\n if (object.values) {\n if (!Array.isArray(object.values))\n throw TypeError(\".opentelemetry.proto.common.v1.ArrayValue.values: array expected\");\n message.values = [];\n for (var i = 0; i < object.values.length; ++i) {\n if (typeof object.values[i] !== \"object\")\n throw TypeError(\".opentelemetry.proto.common.v1.ArrayValue.values: object expected\");\n message.values[i] = $root.opentelemetry.proto.common.v1.AnyValue.fromObject(object.values[i]);\n }\n }\n return message;\n };\n /**\n * Creates a plain object from an ArrayValue message. Also converts values to other types if specified.\n * @function toObject\n * @memberof opentelemetry.proto.common.v1.ArrayValue\n * @static\n * @param {opentelemetry.proto.common.v1.ArrayValue} message ArrayValue\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n ArrayValue.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n var object = {};\n if (options.arrays || options.defaults)\n object.values = [];\n if (message.values && message.values.length) {\n object.values = [];\n for (var j = 0; j < message.values.length; ++j)\n object.values[j] = $root.opentelemetry.proto.common.v1.AnyValue.toObject(message.values[j], options);\n }\n return object;\n };\n /**\n * Converts this ArrayValue to JSON.\n * @function toJSON\n * @memberof opentelemetry.proto.common.v1.ArrayValue\n * @instance\n * @returns {Object.} JSON object\n */\n ArrayValue.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n /**\n * Gets the default type url for ArrayValue\n * @function getTypeUrl\n * @memberof opentelemetry.proto.common.v1.ArrayValue\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n ArrayValue.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = \"type.googleapis.com\";\n }\n return typeUrlPrefix + \"/opentelemetry.proto.common.v1.ArrayValue\";\n };\n return ArrayValue;\n })();\n v1.KeyValueList = (function () {\n /**\n * Properties of a KeyValueList.\n * @memberof opentelemetry.proto.common.v1\n * @interface IKeyValueList\n * @property {Array.|null} [values] KeyValueList values\n */\n /**\n * Constructs a new KeyValueList.\n * @memberof opentelemetry.proto.common.v1\n * @classdesc Represents a KeyValueList.\n * @implements IKeyValueList\n * @constructor\n * @param {opentelemetry.proto.common.v1.IKeyValueList=} [properties] Properties to set\n */\n function KeyValueList(properties) {\n this.values = [];\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n /**\n * KeyValueList values.\n * @member {Array.} values\n * @memberof opentelemetry.proto.common.v1.KeyValueList\n * @instance\n */\n KeyValueList.prototype.values = $util.emptyArray;\n /**\n * Creates a new KeyValueList instance using the specified properties.\n * @function create\n * @memberof opentelemetry.proto.common.v1.KeyValueList\n * @static\n * @param {opentelemetry.proto.common.v1.IKeyValueList=} [properties] Properties to set\n * @returns {opentelemetry.proto.common.v1.KeyValueList} KeyValueList instance\n */\n KeyValueList.create = function create(properties) {\n return new KeyValueList(properties);\n };\n /**\n * Encodes the specified KeyValueList message. Does not implicitly {@link opentelemetry.proto.common.v1.KeyValueList.verify|verify} messages.\n * @function encode\n * @memberof opentelemetry.proto.common.v1.KeyValueList\n * @static\n * @param {opentelemetry.proto.common.v1.IKeyValueList} message KeyValueList message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n KeyValueList.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.values != null && message.values.length)\n for (var i = 0; i < message.values.length; ++i)\n $root.opentelemetry.proto.common.v1.KeyValue.encode(message.values[i], writer.uint32(/* id 1, wireType 2 =*/ 10).fork()).ldelim();\n return writer;\n };\n /**\n * Encodes the specified KeyValueList message, length delimited. Does not implicitly {@link opentelemetry.proto.common.v1.KeyValueList.verify|verify} messages.\n * @function encodeDelimited\n * @memberof opentelemetry.proto.common.v1.KeyValueList\n * @static\n * @param {opentelemetry.proto.common.v1.IKeyValueList} message KeyValueList message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n KeyValueList.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n /**\n * Decodes a KeyValueList message from the specified reader or buffer.\n * @function decode\n * @memberof opentelemetry.proto.common.v1.KeyValueList\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {opentelemetry.proto.common.v1.KeyValueList} KeyValueList\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n KeyValueList.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.opentelemetry.proto.common.v1.KeyValueList();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (!(message.values && message.values.length))\n message.values = [];\n message.values.push($root.opentelemetry.proto.common.v1.KeyValue.decode(reader, reader.uint32()));\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n /**\n * Decodes a KeyValueList message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof opentelemetry.proto.common.v1.KeyValueList\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {opentelemetry.proto.common.v1.KeyValueList} KeyValueList\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n KeyValueList.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n /**\n * Verifies a KeyValueList message.\n * @function verify\n * @memberof opentelemetry.proto.common.v1.KeyValueList\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n KeyValueList.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.values != null && message.hasOwnProperty(\"values\")) {\n if (!Array.isArray(message.values))\n return \"values: array expected\";\n for (var i = 0; i < message.values.length; ++i) {\n var error = $root.opentelemetry.proto.common.v1.KeyValue.verify(message.values[i]);\n if (error)\n return \"values.\" + error;\n }\n }\n return null;\n };\n /**\n * Creates a KeyValueList message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof opentelemetry.proto.common.v1.KeyValueList\n * @static\n * @param {Object.} object Plain object\n * @returns {opentelemetry.proto.common.v1.KeyValueList} KeyValueList\n */\n KeyValueList.fromObject = function fromObject(object) {\n if (object instanceof $root.opentelemetry.proto.common.v1.KeyValueList)\n return object;\n var message = new $root.opentelemetry.proto.common.v1.KeyValueList();\n if (object.values) {\n if (!Array.isArray(object.values))\n throw TypeError(\".opentelemetry.proto.common.v1.KeyValueList.values: array expected\");\n message.values = [];\n for (var i = 0; i < object.values.length; ++i) {\n if (typeof object.values[i] !== \"object\")\n throw TypeError(\".opentelemetry.proto.common.v1.KeyValueList.values: object expected\");\n message.values[i] = $root.opentelemetry.proto.common.v1.KeyValue.fromObject(object.values[i]);\n }\n }\n return message;\n };\n /**\n * Creates a plain object from a KeyValueList message. Also converts values to other types if specified.\n * @function toObject\n * @memberof opentelemetry.proto.common.v1.KeyValueList\n * @static\n * @param {opentelemetry.proto.common.v1.KeyValueList} message KeyValueList\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n KeyValueList.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n var object = {};\n if (options.arrays || options.defaults)\n object.values = [];\n if (message.values && message.values.length) {\n object.values = [];\n for (var j = 0; j < message.values.length; ++j)\n object.values[j] = $root.opentelemetry.proto.common.v1.KeyValue.toObject(message.values[j], options);\n }\n return object;\n };\n /**\n * Converts this KeyValueList to JSON.\n * @function toJSON\n * @memberof opentelemetry.proto.common.v1.KeyValueList\n * @instance\n * @returns {Object.} JSON object\n */\n KeyValueList.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n /**\n * Gets the default type url for KeyValueList\n * @function getTypeUrl\n * @memberof opentelemetry.proto.common.v1.KeyValueList\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n KeyValueList.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = \"type.googleapis.com\";\n }\n return typeUrlPrefix + \"/opentelemetry.proto.common.v1.KeyValueList\";\n };\n return KeyValueList;\n })();\n v1.KeyValue = (function () {\n /**\n * Properties of a KeyValue.\n * @memberof opentelemetry.proto.common.v1\n * @interface IKeyValue\n * @property {string|null} [key] KeyValue key\n * @property {opentelemetry.proto.common.v1.IAnyValue|null} [value] KeyValue value\n */\n /**\n * Constructs a new KeyValue.\n * @memberof opentelemetry.proto.common.v1\n * @classdesc Represents a KeyValue.\n * @implements IKeyValue\n * @constructor\n * @param {opentelemetry.proto.common.v1.IKeyValue=} [properties] Properties to set\n */\n function KeyValue(properties) {\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n /**\n * KeyValue key.\n * @member {string|null|undefined} key\n * @memberof opentelemetry.proto.common.v1.KeyValue\n * @instance\n */\n KeyValue.prototype.key = null;\n /**\n * KeyValue value.\n * @member {opentelemetry.proto.common.v1.IAnyValue|null|undefined} value\n * @memberof opentelemetry.proto.common.v1.KeyValue\n * @instance\n */\n KeyValue.prototype.value = null;\n /**\n * Creates a new KeyValue instance using the specified properties.\n * @function create\n * @memberof opentelemetry.proto.common.v1.KeyValue\n * @static\n * @param {opentelemetry.proto.common.v1.IKeyValue=} [properties] Properties to set\n * @returns {opentelemetry.proto.common.v1.KeyValue} KeyValue instance\n */\n KeyValue.create = function create(properties) {\n return new KeyValue(properties);\n };\n /**\n * Encodes the specified KeyValue message. Does not implicitly {@link opentelemetry.proto.common.v1.KeyValue.verify|verify} messages.\n * @function encode\n * @memberof opentelemetry.proto.common.v1.KeyValue\n * @static\n * @param {opentelemetry.proto.common.v1.IKeyValue} message KeyValue message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n KeyValue.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.key != null && Object.hasOwnProperty.call(message, \"key\"))\n writer.uint32(/* id 1, wireType 2 =*/ 10).string(message.key);\n if (message.value != null && Object.hasOwnProperty.call(message, \"value\"))\n $root.opentelemetry.proto.common.v1.AnyValue.encode(message.value, writer.uint32(/* id 2, wireType 2 =*/ 18).fork()).ldelim();\n return writer;\n };\n /**\n * Encodes the specified KeyValue message, length delimited. Does not implicitly {@link opentelemetry.proto.common.v1.KeyValue.verify|verify} messages.\n * @function encodeDelimited\n * @memberof opentelemetry.proto.common.v1.KeyValue\n * @static\n * @param {opentelemetry.proto.common.v1.IKeyValue} message KeyValue message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n KeyValue.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n /**\n * Decodes a KeyValue message from the specified reader or buffer.\n * @function decode\n * @memberof opentelemetry.proto.common.v1.KeyValue\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {opentelemetry.proto.common.v1.KeyValue} KeyValue\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n KeyValue.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.opentelemetry.proto.common.v1.KeyValue();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n message.key = reader.string();\n break;\n }\n case 2: {\n message.value = $root.opentelemetry.proto.common.v1.AnyValue.decode(reader, reader.uint32());\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n /**\n * Decodes a KeyValue message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof opentelemetry.proto.common.v1.KeyValue\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {opentelemetry.proto.common.v1.KeyValue} KeyValue\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n KeyValue.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n /**\n * Verifies a KeyValue message.\n * @function verify\n * @memberof opentelemetry.proto.common.v1.KeyValue\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n KeyValue.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.key != null && message.hasOwnProperty(\"key\"))\n if (!$util.isString(message.key))\n return \"key: string expected\";\n if (message.value != null && message.hasOwnProperty(\"value\")) {\n var error = $root.opentelemetry.proto.common.v1.AnyValue.verify(message.value);\n if (error)\n return \"value.\" + error;\n }\n return null;\n };\n /**\n * Creates a KeyValue message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof opentelemetry.proto.common.v1.KeyValue\n * @static\n * @param {Object.} object Plain object\n * @returns {opentelemetry.proto.common.v1.KeyValue} KeyValue\n */\n KeyValue.fromObject = function fromObject(object) {\n if (object instanceof $root.opentelemetry.proto.common.v1.KeyValue)\n return object;\n var message = new $root.opentelemetry.proto.common.v1.KeyValue();\n if (object.key != null)\n message.key = String(object.key);\n if (object.value != null) {\n if (typeof object.value !== \"object\")\n throw TypeError(\".opentelemetry.proto.common.v1.KeyValue.value: object expected\");\n message.value = $root.opentelemetry.proto.common.v1.AnyValue.fromObject(object.value);\n }\n return message;\n };\n /**\n * Creates a plain object from a KeyValue message. Also converts values to other types if specified.\n * @function toObject\n * @memberof opentelemetry.proto.common.v1.KeyValue\n * @static\n * @param {opentelemetry.proto.common.v1.KeyValue} message KeyValue\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n KeyValue.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n var object = {};\n if (options.defaults) {\n object.key = \"\";\n object.value = null;\n }\n if (message.key != null && message.hasOwnProperty(\"key\"))\n object.key = message.key;\n if (message.value != null && message.hasOwnProperty(\"value\"))\n object.value = $root.opentelemetry.proto.common.v1.AnyValue.toObject(message.value, options);\n return object;\n };\n /**\n * Converts this KeyValue to JSON.\n * @function toJSON\n * @memberof opentelemetry.proto.common.v1.KeyValue\n * @instance\n * @returns {Object.} JSON object\n */\n KeyValue.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n /**\n * Gets the default type url for KeyValue\n * @function getTypeUrl\n * @memberof opentelemetry.proto.common.v1.KeyValue\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n KeyValue.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = \"type.googleapis.com\";\n }\n return typeUrlPrefix + \"/opentelemetry.proto.common.v1.KeyValue\";\n };\n return KeyValue;\n })();\n v1.InstrumentationScope = (function () {\n /**\n * Properties of an InstrumentationScope.\n * @memberof opentelemetry.proto.common.v1\n * @interface IInstrumentationScope\n * @property {string|null} [name] InstrumentationScope name\n * @property {string|null} [version] InstrumentationScope version\n * @property {Array.|null} [attributes] InstrumentationScope attributes\n * @property {number|null} [droppedAttributesCount] InstrumentationScope droppedAttributesCount\n */\n /**\n * Constructs a new InstrumentationScope.\n * @memberof opentelemetry.proto.common.v1\n * @classdesc Represents an InstrumentationScope.\n * @implements IInstrumentationScope\n * @constructor\n * @param {opentelemetry.proto.common.v1.IInstrumentationScope=} [properties] Properties to set\n */\n function InstrumentationScope(properties) {\n this.attributes = [];\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n /**\n * InstrumentationScope name.\n * @member {string|null|undefined} name\n * @memberof opentelemetry.proto.common.v1.InstrumentationScope\n * @instance\n */\n InstrumentationScope.prototype.name = null;\n /**\n * InstrumentationScope version.\n * @member {string|null|undefined} version\n * @memberof opentelemetry.proto.common.v1.InstrumentationScope\n * @instance\n */\n InstrumentationScope.prototype.version = null;\n /**\n * InstrumentationScope attributes.\n * @member {Array.} attributes\n * @memberof opentelemetry.proto.common.v1.InstrumentationScope\n * @instance\n */\n InstrumentationScope.prototype.attributes = $util.emptyArray;\n /**\n * InstrumentationScope droppedAttributesCount.\n * @member {number|null|undefined} droppedAttributesCount\n * @memberof opentelemetry.proto.common.v1.InstrumentationScope\n * @instance\n */\n InstrumentationScope.prototype.droppedAttributesCount = null;\n /**\n * Creates a new InstrumentationScope instance using the specified properties.\n * @function create\n * @memberof opentelemetry.proto.common.v1.InstrumentationScope\n * @static\n * @param {opentelemetry.proto.common.v1.IInstrumentationScope=} [properties] Properties to set\n * @returns {opentelemetry.proto.common.v1.InstrumentationScope} InstrumentationScope instance\n */\n InstrumentationScope.create = function create(properties) {\n return new InstrumentationScope(properties);\n };\n /**\n * Encodes the specified InstrumentationScope message. Does not implicitly {@link opentelemetry.proto.common.v1.InstrumentationScope.verify|verify} messages.\n * @function encode\n * @memberof opentelemetry.proto.common.v1.InstrumentationScope\n * @static\n * @param {opentelemetry.proto.common.v1.IInstrumentationScope} message InstrumentationScope message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n InstrumentationScope.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.name != null && Object.hasOwnProperty.call(message, \"name\"))\n writer.uint32(/* id 1, wireType 2 =*/ 10).string(message.name);\n if (message.version != null && Object.hasOwnProperty.call(message, \"version\"))\n writer.uint32(/* id 2, wireType 2 =*/ 18).string(message.version);\n if (message.attributes != null && message.attributes.length)\n for (var i = 0; i < message.attributes.length; ++i)\n $root.opentelemetry.proto.common.v1.KeyValue.encode(message.attributes[i], writer.uint32(/* id 3, wireType 2 =*/ 26).fork()).ldelim();\n if (message.droppedAttributesCount != null && Object.hasOwnProperty.call(message, \"droppedAttributesCount\"))\n writer.uint32(/* id 4, wireType 0 =*/ 32).uint32(message.droppedAttributesCount);\n return writer;\n };\n /**\n * Encodes the specified InstrumentationScope message, length delimited. Does not implicitly {@link opentelemetry.proto.common.v1.InstrumentationScope.verify|verify} messages.\n * @function encodeDelimited\n * @memberof opentelemetry.proto.common.v1.InstrumentationScope\n * @static\n * @param {opentelemetry.proto.common.v1.IInstrumentationScope} message InstrumentationScope message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n InstrumentationScope.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n /**\n * Decodes an InstrumentationScope message from the specified reader or buffer.\n * @function decode\n * @memberof opentelemetry.proto.common.v1.InstrumentationScope\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {opentelemetry.proto.common.v1.InstrumentationScope} InstrumentationScope\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n InstrumentationScope.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.opentelemetry.proto.common.v1.InstrumentationScope();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n message.name = reader.string();\n break;\n }\n case 2: {\n message.version = reader.string();\n break;\n }\n case 3: {\n if (!(message.attributes && message.attributes.length))\n message.attributes = [];\n message.attributes.push($root.opentelemetry.proto.common.v1.KeyValue.decode(reader, reader.uint32()));\n break;\n }\n case 4: {\n message.droppedAttributesCount = reader.uint32();\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n /**\n * Decodes an InstrumentationScope message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof opentelemetry.proto.common.v1.InstrumentationScope\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {opentelemetry.proto.common.v1.InstrumentationScope} InstrumentationScope\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n InstrumentationScope.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n /**\n * Verifies an InstrumentationScope message.\n * @function verify\n * @memberof opentelemetry.proto.common.v1.InstrumentationScope\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n InstrumentationScope.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.name != null && message.hasOwnProperty(\"name\"))\n if (!$util.isString(message.name))\n return \"name: string expected\";\n if (message.version != null && message.hasOwnProperty(\"version\"))\n if (!$util.isString(message.version))\n return \"version: string expected\";\n if (message.attributes != null && message.hasOwnProperty(\"attributes\")) {\n if (!Array.isArray(message.attributes))\n return \"attributes: array expected\";\n for (var i = 0; i < message.attributes.length; ++i) {\n var error = $root.opentelemetry.proto.common.v1.KeyValue.verify(message.attributes[i]);\n if (error)\n return \"attributes.\" + error;\n }\n }\n if (message.droppedAttributesCount != null && message.hasOwnProperty(\"droppedAttributesCount\"))\n if (!$util.isInteger(message.droppedAttributesCount))\n return \"droppedAttributesCount: integer expected\";\n return null;\n };\n /**\n * Creates an InstrumentationScope message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof opentelemetry.proto.common.v1.InstrumentationScope\n * @static\n * @param {Object.} object Plain object\n * @returns {opentelemetry.proto.common.v1.InstrumentationScope} InstrumentationScope\n */\n InstrumentationScope.fromObject = function fromObject(object) {\n if (object instanceof $root.opentelemetry.proto.common.v1.InstrumentationScope)\n return object;\n var message = new $root.opentelemetry.proto.common.v1.InstrumentationScope();\n if (object.name != null)\n message.name = String(object.name);\n if (object.version != null)\n message.version = String(object.version);\n if (object.attributes) {\n if (!Array.isArray(object.attributes))\n throw TypeError(\".opentelemetry.proto.common.v1.InstrumentationScope.attributes: array expected\");\n message.attributes = [];\n for (var i = 0; i < object.attributes.length; ++i) {\n if (typeof object.attributes[i] !== \"object\")\n throw TypeError(\".opentelemetry.proto.common.v1.InstrumentationScope.attributes: object expected\");\n message.attributes[i] = $root.opentelemetry.proto.common.v1.KeyValue.fromObject(object.attributes[i]);\n }\n }\n if (object.droppedAttributesCount != null)\n message.droppedAttributesCount = object.droppedAttributesCount >>> 0;\n return message;\n };\n /**\n * Creates a plain object from an InstrumentationScope message. Also converts values to other types if specified.\n * @function toObject\n * @memberof opentelemetry.proto.common.v1.InstrumentationScope\n * @static\n * @param {opentelemetry.proto.common.v1.InstrumentationScope} message InstrumentationScope\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n InstrumentationScope.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n var object = {};\n if (options.arrays || options.defaults)\n object.attributes = [];\n if (options.defaults) {\n object.name = \"\";\n object.version = \"\";\n object.droppedAttributesCount = 0;\n }\n if (message.name != null && message.hasOwnProperty(\"name\"))\n object.name = message.name;\n if (message.version != null && message.hasOwnProperty(\"version\"))\n object.version = message.version;\n if (message.attributes && message.attributes.length) {\n object.attributes = [];\n for (var j = 0; j < message.attributes.length; ++j)\n object.attributes[j] = $root.opentelemetry.proto.common.v1.KeyValue.toObject(message.attributes[j], options);\n }\n if (message.droppedAttributesCount != null && message.hasOwnProperty(\"droppedAttributesCount\"))\n object.droppedAttributesCount = message.droppedAttributesCount;\n return object;\n };\n /**\n * Converts this InstrumentationScope to JSON.\n * @function toJSON\n * @memberof opentelemetry.proto.common.v1.InstrumentationScope\n * @instance\n * @returns {Object.} JSON object\n */\n InstrumentationScope.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n /**\n * Gets the default type url for InstrumentationScope\n * @function getTypeUrl\n * @memberof opentelemetry.proto.common.v1.InstrumentationScope\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n InstrumentationScope.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = \"type.googleapis.com\";\n }\n return typeUrlPrefix + \"/opentelemetry.proto.common.v1.InstrumentationScope\";\n };\n return InstrumentationScope;\n })();\n return v1;\n })();\n return common;\n })();\n proto.resource = (function () {\n /**\n * Namespace resource.\n * @memberof opentelemetry.proto\n * @namespace\n */\n var resource = {};\n resource.v1 = (function () {\n /**\n * Namespace v1.\n * @memberof opentelemetry.proto.resource\n * @namespace\n */\n var v1 = {};\n v1.Resource = (function () {\n /**\n * Properties of a Resource.\n * @memberof opentelemetry.proto.resource.v1\n * @interface IResource\n * @property {Array.|null} [attributes] Resource attributes\n * @property {number|null} [droppedAttributesCount] Resource droppedAttributesCount\n */\n /**\n * Constructs a new Resource.\n * @memberof opentelemetry.proto.resource.v1\n * @classdesc Represents a Resource.\n * @implements IResource\n * @constructor\n * @param {opentelemetry.proto.resource.v1.IResource=} [properties] Properties to set\n */\n function Resource(properties) {\n this.attributes = [];\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n /**\n * Resource attributes.\n * @member {Array.} attributes\n * @memberof opentelemetry.proto.resource.v1.Resource\n * @instance\n */\n Resource.prototype.attributes = $util.emptyArray;\n /**\n * Resource droppedAttributesCount.\n * @member {number|null|undefined} droppedAttributesCount\n * @memberof opentelemetry.proto.resource.v1.Resource\n * @instance\n */\n Resource.prototype.droppedAttributesCount = null;\n /**\n * Creates a new Resource instance using the specified properties.\n * @function create\n * @memberof opentelemetry.proto.resource.v1.Resource\n * @static\n * @param {opentelemetry.proto.resource.v1.IResource=} [properties] Properties to set\n * @returns {opentelemetry.proto.resource.v1.Resource} Resource instance\n */\n Resource.create = function create(properties) {\n return new Resource(properties);\n };\n /**\n * Encodes the specified Resource message. Does not implicitly {@link opentelemetry.proto.resource.v1.Resource.verify|verify} messages.\n * @function encode\n * @memberof opentelemetry.proto.resource.v1.Resource\n * @static\n * @param {opentelemetry.proto.resource.v1.IResource} message Resource message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Resource.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.attributes != null && message.attributes.length)\n for (var i = 0; i < message.attributes.length; ++i)\n $root.opentelemetry.proto.common.v1.KeyValue.encode(message.attributes[i], writer.uint32(/* id 1, wireType 2 =*/ 10).fork()).ldelim();\n if (message.droppedAttributesCount != null && Object.hasOwnProperty.call(message, \"droppedAttributesCount\"))\n writer.uint32(/* id 2, wireType 0 =*/ 16).uint32(message.droppedAttributesCount);\n return writer;\n };\n /**\n * Encodes the specified Resource message, length delimited. Does not implicitly {@link opentelemetry.proto.resource.v1.Resource.verify|verify} messages.\n * @function encodeDelimited\n * @memberof opentelemetry.proto.resource.v1.Resource\n * @static\n * @param {opentelemetry.proto.resource.v1.IResource} message Resource message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Resource.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n /**\n * Decodes a Resource message from the specified reader or buffer.\n * @function decode\n * @memberof opentelemetry.proto.resource.v1.Resource\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {opentelemetry.proto.resource.v1.Resource} Resource\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Resource.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.opentelemetry.proto.resource.v1.Resource();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (!(message.attributes && message.attributes.length))\n message.attributes = [];\n message.attributes.push($root.opentelemetry.proto.common.v1.KeyValue.decode(reader, reader.uint32()));\n break;\n }\n case 2: {\n message.droppedAttributesCount = reader.uint32();\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n /**\n * Decodes a Resource message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof opentelemetry.proto.resource.v1.Resource\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {opentelemetry.proto.resource.v1.Resource} Resource\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Resource.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n /**\n * Verifies a Resource message.\n * @function verify\n * @memberof opentelemetry.proto.resource.v1.Resource\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n Resource.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.attributes != null && message.hasOwnProperty(\"attributes\")) {\n if (!Array.isArray(message.attributes))\n return \"attributes: array expected\";\n for (var i = 0; i < message.attributes.length; ++i) {\n var error = $root.opentelemetry.proto.common.v1.KeyValue.verify(message.attributes[i]);\n if (error)\n return \"attributes.\" + error;\n }\n }\n if (message.droppedAttributesCount != null && message.hasOwnProperty(\"droppedAttributesCount\"))\n if (!$util.isInteger(message.droppedAttributesCount))\n return \"droppedAttributesCount: integer expected\";\n return null;\n };\n /**\n * Creates a Resource message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof opentelemetry.proto.resource.v1.Resource\n * @static\n * @param {Object.} object Plain object\n * @returns {opentelemetry.proto.resource.v1.Resource} Resource\n */\n Resource.fromObject = function fromObject(object) {\n if (object instanceof $root.opentelemetry.proto.resource.v1.Resource)\n return object;\n var message = new $root.opentelemetry.proto.resource.v1.Resource();\n if (object.attributes) {\n if (!Array.isArray(object.attributes))\n throw TypeError(\".opentelemetry.proto.resource.v1.Resource.attributes: array expected\");\n message.attributes = [];\n for (var i = 0; i < object.attributes.length; ++i) {\n if (typeof object.attributes[i] !== \"object\")\n throw TypeError(\".opentelemetry.proto.resource.v1.Resource.attributes: object expected\");\n message.attributes[i] = $root.opentelemetry.proto.common.v1.KeyValue.fromObject(object.attributes[i]);\n }\n }\n if (object.droppedAttributesCount != null)\n message.droppedAttributesCount = object.droppedAttributesCount >>> 0;\n return message;\n };\n /**\n * Creates a plain object from a Resource message. Also converts values to other types if specified.\n * @function toObject\n * @memberof opentelemetry.proto.resource.v1.Resource\n * @static\n * @param {opentelemetry.proto.resource.v1.Resource} message Resource\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n Resource.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n var object = {};\n if (options.arrays || options.defaults)\n object.attributes = [];\n if (options.defaults)\n object.droppedAttributesCount = 0;\n if (message.attributes && message.attributes.length) {\n object.attributes = [];\n for (var j = 0; j < message.attributes.length; ++j)\n object.attributes[j] = $root.opentelemetry.proto.common.v1.KeyValue.toObject(message.attributes[j], options);\n }\n if (message.droppedAttributesCount != null && message.hasOwnProperty(\"droppedAttributesCount\"))\n object.droppedAttributesCount = message.droppedAttributesCount;\n return object;\n };\n /**\n * Converts this Resource to JSON.\n * @function toJSON\n * @memberof opentelemetry.proto.resource.v1.Resource\n * @instance\n * @returns {Object.} JSON object\n */\n Resource.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n /**\n * Gets the default type url for Resource\n * @function getTypeUrl\n * @memberof opentelemetry.proto.resource.v1.Resource\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n Resource.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = \"type.googleapis.com\";\n }\n return typeUrlPrefix + \"/opentelemetry.proto.resource.v1.Resource\";\n };\n return Resource;\n })();\n return v1;\n })();\n return resource;\n })();\n proto.trace = (function () {\n /**\n * Namespace trace.\n * @memberof opentelemetry.proto\n * @namespace\n */\n var trace = {};\n trace.v1 = (function () {\n /**\n * Namespace v1.\n * @memberof opentelemetry.proto.trace\n * @namespace\n */\n var v1 = {};\n v1.TracesData = (function () {\n /**\n * Properties of a TracesData.\n * @memberof opentelemetry.proto.trace.v1\n * @interface ITracesData\n * @property {Array.|null} [resourceSpans] TracesData resourceSpans\n */\n /**\n * Constructs a new TracesData.\n * @memberof opentelemetry.proto.trace.v1\n * @classdesc Represents a TracesData.\n * @implements ITracesData\n * @constructor\n * @param {opentelemetry.proto.trace.v1.ITracesData=} [properties] Properties to set\n */\n function TracesData(properties) {\n this.resourceSpans = [];\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n /**\n * TracesData resourceSpans.\n * @member {Array.} resourceSpans\n * @memberof opentelemetry.proto.trace.v1.TracesData\n * @instance\n */\n TracesData.prototype.resourceSpans = $util.emptyArray;\n /**\n * Creates a new TracesData instance using the specified properties.\n * @function create\n * @memberof opentelemetry.proto.trace.v1.TracesData\n * @static\n * @param {opentelemetry.proto.trace.v1.ITracesData=} [properties] Properties to set\n * @returns {opentelemetry.proto.trace.v1.TracesData} TracesData instance\n */\n TracesData.create = function create(properties) {\n return new TracesData(properties);\n };\n /**\n * Encodes the specified TracesData message. Does not implicitly {@link opentelemetry.proto.trace.v1.TracesData.verify|verify} messages.\n * @function encode\n * @memberof opentelemetry.proto.trace.v1.TracesData\n * @static\n * @param {opentelemetry.proto.trace.v1.ITracesData} message TracesData message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n TracesData.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.resourceSpans != null && message.resourceSpans.length)\n for (var i = 0; i < message.resourceSpans.length; ++i)\n $root.opentelemetry.proto.trace.v1.ResourceSpans.encode(message.resourceSpans[i], writer.uint32(/* id 1, wireType 2 =*/ 10).fork()).ldelim();\n return writer;\n };\n /**\n * Encodes the specified TracesData message, length delimited. Does not implicitly {@link opentelemetry.proto.trace.v1.TracesData.verify|verify} messages.\n * @function encodeDelimited\n * @memberof opentelemetry.proto.trace.v1.TracesData\n * @static\n * @param {opentelemetry.proto.trace.v1.ITracesData} message TracesData message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n TracesData.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n /**\n * Decodes a TracesData message from the specified reader or buffer.\n * @function decode\n * @memberof opentelemetry.proto.trace.v1.TracesData\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {opentelemetry.proto.trace.v1.TracesData} TracesData\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n TracesData.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.opentelemetry.proto.trace.v1.TracesData();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (!(message.resourceSpans && message.resourceSpans.length))\n message.resourceSpans = [];\n message.resourceSpans.push($root.opentelemetry.proto.trace.v1.ResourceSpans.decode(reader, reader.uint32()));\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n /**\n * Decodes a TracesData message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof opentelemetry.proto.trace.v1.TracesData\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {opentelemetry.proto.trace.v1.TracesData} TracesData\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n TracesData.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n /**\n * Verifies a TracesData message.\n * @function verify\n * @memberof opentelemetry.proto.trace.v1.TracesData\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n TracesData.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.resourceSpans != null && message.hasOwnProperty(\"resourceSpans\")) {\n if (!Array.isArray(message.resourceSpans))\n return \"resourceSpans: array expected\";\n for (var i = 0; i < message.resourceSpans.length; ++i) {\n var error = $root.opentelemetry.proto.trace.v1.ResourceSpans.verify(message.resourceSpans[i]);\n if (error)\n return \"resourceSpans.\" + error;\n }\n }\n return null;\n };\n /**\n * Creates a TracesData message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof opentelemetry.proto.trace.v1.TracesData\n * @static\n * @param {Object.} object Plain object\n * @returns {opentelemetry.proto.trace.v1.TracesData} TracesData\n */\n TracesData.fromObject = function fromObject(object) {\n if (object instanceof $root.opentelemetry.proto.trace.v1.TracesData)\n return object;\n var message = new $root.opentelemetry.proto.trace.v1.TracesData();\n if (object.resourceSpans) {\n if (!Array.isArray(object.resourceSpans))\n throw TypeError(\".opentelemetry.proto.trace.v1.TracesData.resourceSpans: array expected\");\n message.resourceSpans = [];\n for (var i = 0; i < object.resourceSpans.length; ++i) {\n if (typeof object.resourceSpans[i] !== \"object\")\n throw TypeError(\".opentelemetry.proto.trace.v1.TracesData.resourceSpans: object expected\");\n message.resourceSpans[i] = $root.opentelemetry.proto.trace.v1.ResourceSpans.fromObject(object.resourceSpans[i]);\n }\n }\n return message;\n };\n /**\n * Creates a plain object from a TracesData message. Also converts values to other types if specified.\n * @function toObject\n * @memberof opentelemetry.proto.trace.v1.TracesData\n * @static\n * @param {opentelemetry.proto.trace.v1.TracesData} message TracesData\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n TracesData.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n var object = {};\n if (options.arrays || options.defaults)\n object.resourceSpans = [];\n if (message.resourceSpans && message.resourceSpans.length) {\n object.resourceSpans = [];\n for (var j = 0; j < message.resourceSpans.length; ++j)\n object.resourceSpans[j] = $root.opentelemetry.proto.trace.v1.ResourceSpans.toObject(message.resourceSpans[j], options);\n }\n return object;\n };\n /**\n * Converts this TracesData to JSON.\n * @function toJSON\n * @memberof opentelemetry.proto.trace.v1.TracesData\n * @instance\n * @returns {Object.} JSON object\n */\n TracesData.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n /**\n * Gets the default type url for TracesData\n * @function getTypeUrl\n * @memberof opentelemetry.proto.trace.v1.TracesData\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n TracesData.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = \"type.googleapis.com\";\n }\n return typeUrlPrefix + \"/opentelemetry.proto.trace.v1.TracesData\";\n };\n return TracesData;\n })();\n v1.ResourceSpans = (function () {\n /**\n * Properties of a ResourceSpans.\n * @memberof opentelemetry.proto.trace.v1\n * @interface IResourceSpans\n * @property {opentelemetry.proto.resource.v1.IResource|null} [resource] ResourceSpans resource\n * @property {Array.|null} [scopeSpans] ResourceSpans scopeSpans\n * @property {string|null} [schemaUrl] ResourceSpans schemaUrl\n */\n /**\n * Constructs a new ResourceSpans.\n * @memberof opentelemetry.proto.trace.v1\n * @classdesc Represents a ResourceSpans.\n * @implements IResourceSpans\n * @constructor\n * @param {opentelemetry.proto.trace.v1.IResourceSpans=} [properties] Properties to set\n */\n function ResourceSpans(properties) {\n this.scopeSpans = [];\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n /**\n * ResourceSpans resource.\n * @member {opentelemetry.proto.resource.v1.IResource|null|undefined} resource\n * @memberof opentelemetry.proto.trace.v1.ResourceSpans\n * @instance\n */\n ResourceSpans.prototype.resource = null;\n /**\n * ResourceSpans scopeSpans.\n * @member {Array.} scopeSpans\n * @memberof opentelemetry.proto.trace.v1.ResourceSpans\n * @instance\n */\n ResourceSpans.prototype.scopeSpans = $util.emptyArray;\n /**\n * ResourceSpans schemaUrl.\n * @member {string|null|undefined} schemaUrl\n * @memberof opentelemetry.proto.trace.v1.ResourceSpans\n * @instance\n */\n ResourceSpans.prototype.schemaUrl = null;\n /**\n * Creates a new ResourceSpans instance using the specified properties.\n * @function create\n * @memberof opentelemetry.proto.trace.v1.ResourceSpans\n * @static\n * @param {opentelemetry.proto.trace.v1.IResourceSpans=} [properties] Properties to set\n * @returns {opentelemetry.proto.trace.v1.ResourceSpans} ResourceSpans instance\n */\n ResourceSpans.create = function create(properties) {\n return new ResourceSpans(properties);\n };\n /**\n * Encodes the specified ResourceSpans message. Does not implicitly {@link opentelemetry.proto.trace.v1.ResourceSpans.verify|verify} messages.\n * @function encode\n * @memberof opentelemetry.proto.trace.v1.ResourceSpans\n * @static\n * @param {opentelemetry.proto.trace.v1.IResourceSpans} message ResourceSpans message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ResourceSpans.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.resource != null && Object.hasOwnProperty.call(message, \"resource\"))\n $root.opentelemetry.proto.resource.v1.Resource.encode(message.resource, writer.uint32(/* id 1, wireType 2 =*/ 10).fork()).ldelim();\n if (message.scopeSpans != null && message.scopeSpans.length)\n for (var i = 0; i < message.scopeSpans.length; ++i)\n $root.opentelemetry.proto.trace.v1.ScopeSpans.encode(message.scopeSpans[i], writer.uint32(/* id 2, wireType 2 =*/ 18).fork()).ldelim();\n if (message.schemaUrl != null && Object.hasOwnProperty.call(message, \"schemaUrl\"))\n writer.uint32(/* id 3, wireType 2 =*/ 26).string(message.schemaUrl);\n return writer;\n };\n /**\n * Encodes the specified ResourceSpans message, length delimited. Does not implicitly {@link opentelemetry.proto.trace.v1.ResourceSpans.verify|verify} messages.\n * @function encodeDelimited\n * @memberof opentelemetry.proto.trace.v1.ResourceSpans\n * @static\n * @param {opentelemetry.proto.trace.v1.IResourceSpans} message ResourceSpans message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ResourceSpans.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n /**\n * Decodes a ResourceSpans message from the specified reader or buffer.\n * @function decode\n * @memberof opentelemetry.proto.trace.v1.ResourceSpans\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {opentelemetry.proto.trace.v1.ResourceSpans} ResourceSpans\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ResourceSpans.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.opentelemetry.proto.trace.v1.ResourceSpans();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n message.resource = $root.opentelemetry.proto.resource.v1.Resource.decode(reader, reader.uint32());\n break;\n }\n case 2: {\n if (!(message.scopeSpans && message.scopeSpans.length))\n message.scopeSpans = [];\n message.scopeSpans.push($root.opentelemetry.proto.trace.v1.ScopeSpans.decode(reader, reader.uint32()));\n break;\n }\n case 3: {\n message.schemaUrl = reader.string();\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n /**\n * Decodes a ResourceSpans message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof opentelemetry.proto.trace.v1.ResourceSpans\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {opentelemetry.proto.trace.v1.ResourceSpans} ResourceSpans\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ResourceSpans.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n /**\n * Verifies a ResourceSpans message.\n * @function verify\n * @memberof opentelemetry.proto.trace.v1.ResourceSpans\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n ResourceSpans.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.resource != null && message.hasOwnProperty(\"resource\")) {\n var error = $root.opentelemetry.proto.resource.v1.Resource.verify(message.resource);\n if (error)\n return \"resource.\" + error;\n }\n if (message.scopeSpans != null && message.hasOwnProperty(\"scopeSpans\")) {\n if (!Array.isArray(message.scopeSpans))\n return \"scopeSpans: array expected\";\n for (var i = 0; i < message.scopeSpans.length; ++i) {\n var error = $root.opentelemetry.proto.trace.v1.ScopeSpans.verify(message.scopeSpans[i]);\n if (error)\n return \"scopeSpans.\" + error;\n }\n }\n if (message.schemaUrl != null && message.hasOwnProperty(\"schemaUrl\"))\n if (!$util.isString(message.schemaUrl))\n return \"schemaUrl: string expected\";\n return null;\n };\n /**\n * Creates a ResourceSpans message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof opentelemetry.proto.trace.v1.ResourceSpans\n * @static\n * @param {Object.} object Plain object\n * @returns {opentelemetry.proto.trace.v1.ResourceSpans} ResourceSpans\n */\n ResourceSpans.fromObject = function fromObject(object) {\n if (object instanceof $root.opentelemetry.proto.trace.v1.ResourceSpans)\n return object;\n var message = new $root.opentelemetry.proto.trace.v1.ResourceSpans();\n if (object.resource != null) {\n if (typeof object.resource !== \"object\")\n throw TypeError(\".opentelemetry.proto.trace.v1.ResourceSpans.resource: object expected\");\n message.resource = $root.opentelemetry.proto.resource.v1.Resource.fromObject(object.resource);\n }\n if (object.scopeSpans) {\n if (!Array.isArray(object.scopeSpans))\n throw TypeError(\".opentelemetry.proto.trace.v1.ResourceSpans.scopeSpans: array expected\");\n message.scopeSpans = [];\n for (var i = 0; i < object.scopeSpans.length; ++i) {\n if (typeof object.scopeSpans[i] !== \"object\")\n throw TypeError(\".opentelemetry.proto.trace.v1.ResourceSpans.scopeSpans: object expected\");\n message.scopeSpans[i] = $root.opentelemetry.proto.trace.v1.ScopeSpans.fromObject(object.scopeSpans[i]);\n }\n }\n if (object.schemaUrl != null)\n message.schemaUrl = String(object.schemaUrl);\n return message;\n };\n /**\n * Creates a plain object from a ResourceSpans message. Also converts values to other types if specified.\n * @function toObject\n * @memberof opentelemetry.proto.trace.v1.ResourceSpans\n * @static\n * @param {opentelemetry.proto.trace.v1.ResourceSpans} message ResourceSpans\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n ResourceSpans.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n var object = {};\n if (options.arrays || options.defaults)\n object.scopeSpans = [];\n if (options.defaults) {\n object.resource = null;\n object.schemaUrl = \"\";\n }\n if (message.resource != null && message.hasOwnProperty(\"resource\"))\n object.resource = $root.opentelemetry.proto.resource.v1.Resource.toObject(message.resource, options);\n if (message.scopeSpans && message.scopeSpans.length) {\n object.scopeSpans = [];\n for (var j = 0; j < message.scopeSpans.length; ++j)\n object.scopeSpans[j] = $root.opentelemetry.proto.trace.v1.ScopeSpans.toObject(message.scopeSpans[j], options);\n }\n if (message.schemaUrl != null && message.hasOwnProperty(\"schemaUrl\"))\n object.schemaUrl = message.schemaUrl;\n return object;\n };\n /**\n * Converts this ResourceSpans to JSON.\n * @function toJSON\n * @memberof opentelemetry.proto.trace.v1.ResourceSpans\n * @instance\n * @returns {Object.} JSON object\n */\n ResourceSpans.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n /**\n * Gets the default type url for ResourceSpans\n * @function getTypeUrl\n * @memberof opentelemetry.proto.trace.v1.ResourceSpans\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n ResourceSpans.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = \"type.googleapis.com\";\n }\n return typeUrlPrefix + \"/opentelemetry.proto.trace.v1.ResourceSpans\";\n };\n return ResourceSpans;\n })();\n v1.ScopeSpans = (function () {\n /**\n * Properties of a ScopeSpans.\n * @memberof opentelemetry.proto.trace.v1\n * @interface IScopeSpans\n * @property {opentelemetry.proto.common.v1.IInstrumentationScope|null} [scope] ScopeSpans scope\n * @property {Array.|null} [spans] ScopeSpans spans\n * @property {string|null} [schemaUrl] ScopeSpans schemaUrl\n */\n /**\n * Constructs a new ScopeSpans.\n * @memberof opentelemetry.proto.trace.v1\n * @classdesc Represents a ScopeSpans.\n * @implements IScopeSpans\n * @constructor\n * @param {opentelemetry.proto.trace.v1.IScopeSpans=} [properties] Properties to set\n */\n function ScopeSpans(properties) {\n this.spans = [];\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n /**\n * ScopeSpans scope.\n * @member {opentelemetry.proto.common.v1.IInstrumentationScope|null|undefined} scope\n * @memberof opentelemetry.proto.trace.v1.ScopeSpans\n * @instance\n */\n ScopeSpans.prototype.scope = null;\n /**\n * ScopeSpans spans.\n * @member {Array.} spans\n * @memberof opentelemetry.proto.trace.v1.ScopeSpans\n * @instance\n */\n ScopeSpans.prototype.spans = $util.emptyArray;\n /**\n * ScopeSpans schemaUrl.\n * @member {string|null|undefined} schemaUrl\n * @memberof opentelemetry.proto.trace.v1.ScopeSpans\n * @instance\n */\n ScopeSpans.prototype.schemaUrl = null;\n /**\n * Creates a new ScopeSpans instance using the specified properties.\n * @function create\n * @memberof opentelemetry.proto.trace.v1.ScopeSpans\n * @static\n * @param {opentelemetry.proto.trace.v1.IScopeSpans=} [properties] Properties to set\n * @returns {opentelemetry.proto.trace.v1.ScopeSpans} ScopeSpans instance\n */\n ScopeSpans.create = function create(properties) {\n return new ScopeSpans(properties);\n };\n /**\n * Encodes the specified ScopeSpans message. Does not implicitly {@link opentelemetry.proto.trace.v1.ScopeSpans.verify|verify} messages.\n * @function encode\n * @memberof opentelemetry.proto.trace.v1.ScopeSpans\n * @static\n * @param {opentelemetry.proto.trace.v1.IScopeSpans} message ScopeSpans message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ScopeSpans.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.scope != null && Object.hasOwnProperty.call(message, \"scope\"))\n $root.opentelemetry.proto.common.v1.InstrumentationScope.encode(message.scope, writer.uint32(/* id 1, wireType 2 =*/ 10).fork()).ldelim();\n if (message.spans != null && message.spans.length)\n for (var i = 0; i < message.spans.length; ++i)\n $root.opentelemetry.proto.trace.v1.Span.encode(message.spans[i], writer.uint32(/* id 2, wireType 2 =*/ 18).fork()).ldelim();\n if (message.schemaUrl != null && Object.hasOwnProperty.call(message, \"schemaUrl\"))\n writer.uint32(/* id 3, wireType 2 =*/ 26).string(message.schemaUrl);\n return writer;\n };\n /**\n * Encodes the specified ScopeSpans message, length delimited. Does not implicitly {@link opentelemetry.proto.trace.v1.ScopeSpans.verify|verify} messages.\n * @function encodeDelimited\n * @memberof opentelemetry.proto.trace.v1.ScopeSpans\n * @static\n * @param {opentelemetry.proto.trace.v1.IScopeSpans} message ScopeSpans message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ScopeSpans.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n /**\n * Decodes a ScopeSpans message from the specified reader or buffer.\n * @function decode\n * @memberof opentelemetry.proto.trace.v1.ScopeSpans\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {opentelemetry.proto.trace.v1.ScopeSpans} ScopeSpans\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ScopeSpans.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.opentelemetry.proto.trace.v1.ScopeSpans();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n message.scope = $root.opentelemetry.proto.common.v1.InstrumentationScope.decode(reader, reader.uint32());\n break;\n }\n case 2: {\n if (!(message.spans && message.spans.length))\n message.spans = [];\n message.spans.push($root.opentelemetry.proto.trace.v1.Span.decode(reader, reader.uint32()));\n break;\n }\n case 3: {\n message.schemaUrl = reader.string();\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n /**\n * Decodes a ScopeSpans message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof opentelemetry.proto.trace.v1.ScopeSpans\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {opentelemetry.proto.trace.v1.ScopeSpans} ScopeSpans\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ScopeSpans.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n /**\n * Verifies a ScopeSpans message.\n * @function verify\n * @memberof opentelemetry.proto.trace.v1.ScopeSpans\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n ScopeSpans.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.scope != null && message.hasOwnProperty(\"scope\")) {\n var error = $root.opentelemetry.proto.common.v1.InstrumentationScope.verify(message.scope);\n if (error)\n return \"scope.\" + error;\n }\n if (message.spans != null && message.hasOwnProperty(\"spans\")) {\n if (!Array.isArray(message.spans))\n return \"spans: array expected\";\n for (var i = 0; i < message.spans.length; ++i) {\n var error = $root.opentelemetry.proto.trace.v1.Span.verify(message.spans[i]);\n if (error)\n return \"spans.\" + error;\n }\n }\n if (message.schemaUrl != null && message.hasOwnProperty(\"schemaUrl\"))\n if (!$util.isString(message.schemaUrl))\n return \"schemaUrl: string expected\";\n return null;\n };\n /**\n * Creates a ScopeSpans message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof opentelemetry.proto.trace.v1.ScopeSpans\n * @static\n * @param {Object.} object Plain object\n * @returns {opentelemetry.proto.trace.v1.ScopeSpans} ScopeSpans\n */\n ScopeSpans.fromObject = function fromObject(object) {\n if (object instanceof $root.opentelemetry.proto.trace.v1.ScopeSpans)\n return object;\n var message = new $root.opentelemetry.proto.trace.v1.ScopeSpans();\n if (object.scope != null) {\n if (typeof object.scope !== \"object\")\n throw TypeError(\".opentelemetry.proto.trace.v1.ScopeSpans.scope: object expected\");\n message.scope = $root.opentelemetry.proto.common.v1.InstrumentationScope.fromObject(object.scope);\n }\n if (object.spans) {\n if (!Array.isArray(object.spans))\n throw TypeError(\".opentelemetry.proto.trace.v1.ScopeSpans.spans: array expected\");\n message.spans = [];\n for (var i = 0; i < object.spans.length; ++i) {\n if (typeof object.spans[i] !== \"object\")\n throw TypeError(\".opentelemetry.proto.trace.v1.ScopeSpans.spans: object expected\");\n message.spans[i] = $root.opentelemetry.proto.trace.v1.Span.fromObject(object.spans[i]);\n }\n }\n if (object.schemaUrl != null)\n message.schemaUrl = String(object.schemaUrl);\n return message;\n };\n /**\n * Creates a plain object from a ScopeSpans message. Also converts values to other types if specified.\n * @function toObject\n * @memberof opentelemetry.proto.trace.v1.ScopeSpans\n * @static\n * @param {opentelemetry.proto.trace.v1.ScopeSpans} message ScopeSpans\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n ScopeSpans.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n var object = {};\n if (options.arrays || options.defaults)\n object.spans = [];\n if (options.defaults) {\n object.scope = null;\n object.schemaUrl = \"\";\n }\n if (message.scope != null && message.hasOwnProperty(\"scope\"))\n object.scope = $root.opentelemetry.proto.common.v1.InstrumentationScope.toObject(message.scope, options);\n if (message.spans && message.spans.length) {\n object.spans = [];\n for (var j = 0; j < message.spans.length; ++j)\n object.spans[j] = $root.opentelemetry.proto.trace.v1.Span.toObject(message.spans[j], options);\n }\n if (message.schemaUrl != null && message.hasOwnProperty(\"schemaUrl\"))\n object.schemaUrl = message.schemaUrl;\n return object;\n };\n /**\n * Converts this ScopeSpans to JSON.\n * @function toJSON\n * @memberof opentelemetry.proto.trace.v1.ScopeSpans\n * @instance\n * @returns {Object.} JSON object\n */\n ScopeSpans.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n /**\n * Gets the default type url for ScopeSpans\n * @function getTypeUrl\n * @memberof opentelemetry.proto.trace.v1.ScopeSpans\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n ScopeSpans.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = \"type.googleapis.com\";\n }\n return typeUrlPrefix + \"/opentelemetry.proto.trace.v1.ScopeSpans\";\n };\n return ScopeSpans;\n })();\n v1.Span = (function () {\n /**\n * Properties of a Span.\n * @memberof opentelemetry.proto.trace.v1\n * @interface ISpan\n * @property {Uint8Array|null} [traceId] Span traceId\n * @property {Uint8Array|null} [spanId] Span spanId\n * @property {string|null} [traceState] Span traceState\n * @property {Uint8Array|null} [parentSpanId] Span parentSpanId\n * @property {string|null} [name] Span name\n * @property {opentelemetry.proto.trace.v1.Span.SpanKind|null} [kind] Span kind\n * @property {number|Long|null} [startTimeUnixNano] Span startTimeUnixNano\n * @property {number|Long|null} [endTimeUnixNano] Span endTimeUnixNano\n * @property {Array.|null} [attributes] Span attributes\n * @property {number|null} [droppedAttributesCount] Span droppedAttributesCount\n * @property {Array.|null} [events] Span events\n * @property {number|null} [droppedEventsCount] Span droppedEventsCount\n * @property {Array.|null} [links] Span links\n * @property {number|null} [droppedLinksCount] Span droppedLinksCount\n * @property {opentelemetry.proto.trace.v1.IStatus|null} [status] Span status\n */\n /**\n * Constructs a new Span.\n * @memberof opentelemetry.proto.trace.v1\n * @classdesc Represents a Span.\n * @implements ISpan\n * @constructor\n * @param {opentelemetry.proto.trace.v1.ISpan=} [properties] Properties to set\n */\n function Span(properties) {\n this.attributes = [];\n this.events = [];\n this.links = [];\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n /**\n * Span traceId.\n * @member {Uint8Array|null|undefined} traceId\n * @memberof opentelemetry.proto.trace.v1.Span\n * @instance\n */\n Span.prototype.traceId = null;\n /**\n * Span spanId.\n * @member {Uint8Array|null|undefined} spanId\n * @memberof opentelemetry.proto.trace.v1.Span\n * @instance\n */\n Span.prototype.spanId = null;\n /**\n * Span traceState.\n * @member {string|null|undefined} traceState\n * @memberof opentelemetry.proto.trace.v1.Span\n * @instance\n */\n Span.prototype.traceState = null;\n /**\n * Span parentSpanId.\n * @member {Uint8Array|null|undefined} parentSpanId\n * @memberof opentelemetry.proto.trace.v1.Span\n * @instance\n */\n Span.prototype.parentSpanId = null;\n /**\n * Span name.\n * @member {string|null|undefined} name\n * @memberof opentelemetry.proto.trace.v1.Span\n * @instance\n */\n Span.prototype.name = null;\n /**\n * Span kind.\n * @member {opentelemetry.proto.trace.v1.Span.SpanKind|null|undefined} kind\n * @memberof opentelemetry.proto.trace.v1.Span\n * @instance\n */\n Span.prototype.kind = null;\n /**\n * Span startTimeUnixNano.\n * @member {number|Long|null|undefined} startTimeUnixNano\n * @memberof opentelemetry.proto.trace.v1.Span\n * @instance\n */\n Span.prototype.startTimeUnixNano = null;\n /**\n * Span endTimeUnixNano.\n * @member {number|Long|null|undefined} endTimeUnixNano\n * @memberof opentelemetry.proto.trace.v1.Span\n * @instance\n */\n Span.prototype.endTimeUnixNano = null;\n /**\n * Span attributes.\n * @member {Array.} attributes\n * @memberof opentelemetry.proto.trace.v1.Span\n * @instance\n */\n Span.prototype.attributes = $util.emptyArray;\n /**\n * Span droppedAttributesCount.\n * @member {number|null|undefined} droppedAttributesCount\n * @memberof opentelemetry.proto.trace.v1.Span\n * @instance\n */\n Span.prototype.droppedAttributesCount = null;\n /**\n * Span events.\n * @member {Array.} events\n * @memberof opentelemetry.proto.trace.v1.Span\n * @instance\n */\n Span.prototype.events = $util.emptyArray;\n /**\n * Span droppedEventsCount.\n * @member {number|null|undefined} droppedEventsCount\n * @memberof opentelemetry.proto.trace.v1.Span\n * @instance\n */\n Span.prototype.droppedEventsCount = null;\n /**\n * Span links.\n * @member {Array.} links\n * @memberof opentelemetry.proto.trace.v1.Span\n * @instance\n */\n Span.prototype.links = $util.emptyArray;\n /**\n * Span droppedLinksCount.\n * @member {number|null|undefined} droppedLinksCount\n * @memberof opentelemetry.proto.trace.v1.Span\n * @instance\n */\n Span.prototype.droppedLinksCount = null;\n /**\n * Span status.\n * @member {opentelemetry.proto.trace.v1.IStatus|null|undefined} status\n * @memberof opentelemetry.proto.trace.v1.Span\n * @instance\n */\n Span.prototype.status = null;\n /**\n * Creates a new Span instance using the specified properties.\n * @function create\n * @memberof opentelemetry.proto.trace.v1.Span\n * @static\n * @param {opentelemetry.proto.trace.v1.ISpan=} [properties] Properties to set\n * @returns {opentelemetry.proto.trace.v1.Span} Span instance\n */\n Span.create = function create(properties) {\n return new Span(properties);\n };\n /**\n * Encodes the specified Span message. Does not implicitly {@link opentelemetry.proto.trace.v1.Span.verify|verify} messages.\n * @function encode\n * @memberof opentelemetry.proto.trace.v1.Span\n * @static\n * @param {opentelemetry.proto.trace.v1.ISpan} message Span message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Span.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.traceId != null && Object.hasOwnProperty.call(message, \"traceId\"))\n writer.uint32(/* id 1, wireType 2 =*/ 10).bytes(message.traceId);\n if (message.spanId != null && Object.hasOwnProperty.call(message, \"spanId\"))\n writer.uint32(/* id 2, wireType 2 =*/ 18).bytes(message.spanId);\n if (message.traceState != null && Object.hasOwnProperty.call(message, \"traceState\"))\n writer.uint32(/* id 3, wireType 2 =*/ 26).string(message.traceState);\n if (message.parentSpanId != null && Object.hasOwnProperty.call(message, \"parentSpanId\"))\n writer.uint32(/* id 4, wireType 2 =*/ 34).bytes(message.parentSpanId);\n if (message.name != null && Object.hasOwnProperty.call(message, \"name\"))\n writer.uint32(/* id 5, wireType 2 =*/ 42).string(message.name);\n if (message.kind != null && Object.hasOwnProperty.call(message, \"kind\"))\n writer.uint32(/* id 6, wireType 0 =*/ 48).int32(message.kind);\n if (message.startTimeUnixNano != null && Object.hasOwnProperty.call(message, \"startTimeUnixNano\"))\n writer.uint32(/* id 7, wireType 1 =*/ 57).fixed64(message.startTimeUnixNano);\n if (message.endTimeUnixNano != null && Object.hasOwnProperty.call(message, \"endTimeUnixNano\"))\n writer.uint32(/* id 8, wireType 1 =*/ 65).fixed64(message.endTimeUnixNano);\n if (message.attributes != null && message.attributes.length)\n for (var i = 0; i < message.attributes.length; ++i)\n $root.opentelemetry.proto.common.v1.KeyValue.encode(message.attributes[i], writer.uint32(/* id 9, wireType 2 =*/ 74).fork()).ldelim();\n if (message.droppedAttributesCount != null && Object.hasOwnProperty.call(message, \"droppedAttributesCount\"))\n writer.uint32(/* id 10, wireType 0 =*/ 80).uint32(message.droppedAttributesCount);\n if (message.events != null && message.events.length)\n for (var i = 0; i < message.events.length; ++i)\n $root.opentelemetry.proto.trace.v1.Span.Event.encode(message.events[i], writer.uint32(/* id 11, wireType 2 =*/ 90).fork()).ldelim();\n if (message.droppedEventsCount != null && Object.hasOwnProperty.call(message, \"droppedEventsCount\"))\n writer.uint32(/* id 12, wireType 0 =*/ 96).uint32(message.droppedEventsCount);\n if (message.links != null && message.links.length)\n for (var i = 0; i < message.links.length; ++i)\n $root.opentelemetry.proto.trace.v1.Span.Link.encode(message.links[i], writer.uint32(/* id 13, wireType 2 =*/ 106).fork()).ldelim();\n if (message.droppedLinksCount != null && Object.hasOwnProperty.call(message, \"droppedLinksCount\"))\n writer.uint32(/* id 14, wireType 0 =*/ 112).uint32(message.droppedLinksCount);\n if (message.status != null && Object.hasOwnProperty.call(message, \"status\"))\n $root.opentelemetry.proto.trace.v1.Status.encode(message.status, writer.uint32(/* id 15, wireType 2 =*/ 122).fork()).ldelim();\n return writer;\n };\n /**\n * Encodes the specified Span message, length delimited. Does not implicitly {@link opentelemetry.proto.trace.v1.Span.verify|verify} messages.\n * @function encodeDelimited\n * @memberof opentelemetry.proto.trace.v1.Span\n * @static\n * @param {opentelemetry.proto.trace.v1.ISpan} message Span message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Span.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n /**\n * Decodes a Span message from the specified reader or buffer.\n * @function decode\n * @memberof opentelemetry.proto.trace.v1.Span\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {opentelemetry.proto.trace.v1.Span} Span\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Span.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.opentelemetry.proto.trace.v1.Span();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n message.traceId = reader.bytes();\n break;\n }\n case 2: {\n message.spanId = reader.bytes();\n break;\n }\n case 3: {\n message.traceState = reader.string();\n break;\n }\n case 4: {\n message.parentSpanId = reader.bytes();\n break;\n }\n case 5: {\n message.name = reader.string();\n break;\n }\n case 6: {\n message.kind = reader.int32();\n break;\n }\n case 7: {\n message.startTimeUnixNano = reader.fixed64();\n break;\n }\n case 8: {\n message.endTimeUnixNano = reader.fixed64();\n break;\n }\n case 9: {\n if (!(message.attributes && message.attributes.length))\n message.attributes = [];\n message.attributes.push($root.opentelemetry.proto.common.v1.KeyValue.decode(reader, reader.uint32()));\n break;\n }\n case 10: {\n message.droppedAttributesCount = reader.uint32();\n break;\n }\n case 11: {\n if (!(message.events && message.events.length))\n message.events = [];\n message.events.push($root.opentelemetry.proto.trace.v1.Span.Event.decode(reader, reader.uint32()));\n break;\n }\n case 12: {\n message.droppedEventsCount = reader.uint32();\n break;\n }\n case 13: {\n if (!(message.links && message.links.length))\n message.links = [];\n message.links.push($root.opentelemetry.proto.trace.v1.Span.Link.decode(reader, reader.uint32()));\n break;\n }\n case 14: {\n message.droppedLinksCount = reader.uint32();\n break;\n }\n case 15: {\n message.status = $root.opentelemetry.proto.trace.v1.Status.decode(reader, reader.uint32());\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n /**\n * Decodes a Span message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof opentelemetry.proto.trace.v1.Span\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {opentelemetry.proto.trace.v1.Span} Span\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Span.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n /**\n * Verifies a Span message.\n * @function verify\n * @memberof opentelemetry.proto.trace.v1.Span\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n Span.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.traceId != null && message.hasOwnProperty(\"traceId\"))\n if (!(message.traceId && typeof message.traceId.length === \"number\" || $util.isString(message.traceId)))\n return \"traceId: buffer expected\";\n if (message.spanId != null && message.hasOwnProperty(\"spanId\"))\n if (!(message.spanId && typeof message.spanId.length === \"number\" || $util.isString(message.spanId)))\n return \"spanId: buffer expected\";\n if (message.traceState != null && message.hasOwnProperty(\"traceState\"))\n if (!$util.isString(message.traceState))\n return \"traceState: string expected\";\n if (message.parentSpanId != null && message.hasOwnProperty(\"parentSpanId\"))\n if (!(message.parentSpanId && typeof message.parentSpanId.length === \"number\" || $util.isString(message.parentSpanId)))\n return \"parentSpanId: buffer expected\";\n if (message.name != null && message.hasOwnProperty(\"name\"))\n if (!$util.isString(message.name))\n return \"name: string expected\";\n if (message.kind != null && message.hasOwnProperty(\"kind\"))\n switch (message.kind) {\n default:\n return \"kind: enum value expected\";\n case 0:\n case 1:\n case 2:\n case 3:\n case 4:\n case 5:\n break;\n }\n if (message.startTimeUnixNano != null && message.hasOwnProperty(\"startTimeUnixNano\"))\n if (!$util.isInteger(message.startTimeUnixNano) && !(message.startTimeUnixNano && $util.isInteger(message.startTimeUnixNano.low) && $util.isInteger(message.startTimeUnixNano.high)))\n return \"startTimeUnixNano: integer|Long expected\";\n if (message.endTimeUnixNano != null && message.hasOwnProperty(\"endTimeUnixNano\"))\n if (!$util.isInteger(message.endTimeUnixNano) && !(message.endTimeUnixNano && $util.isInteger(message.endTimeUnixNano.low) && $util.isInteger(message.endTimeUnixNano.high)))\n return \"endTimeUnixNano: integer|Long expected\";\n if (message.attributes != null && message.hasOwnProperty(\"attributes\")) {\n if (!Array.isArray(message.attributes))\n return \"attributes: array expected\";\n for (var i = 0; i < message.attributes.length; ++i) {\n var error = $root.opentelemetry.proto.common.v1.KeyValue.verify(message.attributes[i]);\n if (error)\n return \"attributes.\" + error;\n }\n }\n if (message.droppedAttributesCount != null && message.hasOwnProperty(\"droppedAttributesCount\"))\n if (!$util.isInteger(message.droppedAttributesCount))\n return \"droppedAttributesCount: integer expected\";\n if (message.events != null && message.hasOwnProperty(\"events\")) {\n if (!Array.isArray(message.events))\n return \"events: array expected\";\n for (var i = 0; i < message.events.length; ++i) {\n var error = $root.opentelemetry.proto.trace.v1.Span.Event.verify(message.events[i]);\n if (error)\n return \"events.\" + error;\n }\n }\n if (message.droppedEventsCount != null && message.hasOwnProperty(\"droppedEventsCount\"))\n if (!$util.isInteger(message.droppedEventsCount))\n return \"droppedEventsCount: integer expected\";\n if (message.links != null && message.hasOwnProperty(\"links\")) {\n if (!Array.isArray(message.links))\n return \"links: array expected\";\n for (var i = 0; i < message.links.length; ++i) {\n var error = $root.opentelemetry.proto.trace.v1.Span.Link.verify(message.links[i]);\n if (error)\n return \"links.\" + error;\n }\n }\n if (message.droppedLinksCount != null && message.hasOwnProperty(\"droppedLinksCount\"))\n if (!$util.isInteger(message.droppedLinksCount))\n return \"droppedLinksCount: integer expected\";\n if (message.status != null && message.hasOwnProperty(\"status\")) {\n var error = $root.opentelemetry.proto.trace.v1.Status.verify(message.status);\n if (error)\n return \"status.\" + error;\n }\n return null;\n };\n /**\n * Creates a Span message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof opentelemetry.proto.trace.v1.Span\n * @static\n * @param {Object.} object Plain object\n * @returns {opentelemetry.proto.trace.v1.Span} Span\n */\n Span.fromObject = function fromObject(object) {\n if (object instanceof $root.opentelemetry.proto.trace.v1.Span)\n return object;\n var message = new $root.opentelemetry.proto.trace.v1.Span();\n if (object.traceId != null)\n if (typeof object.traceId === \"string\")\n $util.base64.decode(object.traceId, message.traceId = $util.newBuffer($util.base64.length(object.traceId)), 0);\n else if (object.traceId.length >= 0)\n message.traceId = object.traceId;\n if (object.spanId != null)\n if (typeof object.spanId === \"string\")\n $util.base64.decode(object.spanId, message.spanId = $util.newBuffer($util.base64.length(object.spanId)), 0);\n else if (object.spanId.length >= 0)\n message.spanId = object.spanId;\n if (object.traceState != null)\n message.traceState = String(object.traceState);\n if (object.parentSpanId != null)\n if (typeof object.parentSpanId === \"string\")\n $util.base64.decode(object.parentSpanId, message.parentSpanId = $util.newBuffer($util.base64.length(object.parentSpanId)), 0);\n else if (object.parentSpanId.length >= 0)\n message.parentSpanId = object.parentSpanId;\n if (object.name != null)\n message.name = String(object.name);\n switch (object.kind) {\n default:\n if (typeof object.kind === \"number\") {\n message.kind = object.kind;\n break;\n }\n break;\n case \"SPAN_KIND_UNSPECIFIED\":\n case 0:\n message.kind = 0;\n break;\n case \"SPAN_KIND_INTERNAL\":\n case 1:\n message.kind = 1;\n break;\n case \"SPAN_KIND_SERVER\":\n case 2:\n message.kind = 2;\n break;\n case \"SPAN_KIND_CLIENT\":\n case 3:\n message.kind = 3;\n break;\n case \"SPAN_KIND_PRODUCER\":\n case 4:\n message.kind = 4;\n break;\n case \"SPAN_KIND_CONSUMER\":\n case 5:\n message.kind = 5;\n break;\n }\n if (object.startTimeUnixNano != null)\n if ($util.Long)\n (message.startTimeUnixNano = $util.Long.fromValue(object.startTimeUnixNano)).unsigned = false;\n else if (typeof object.startTimeUnixNano === \"string\")\n message.startTimeUnixNano = parseInt(object.startTimeUnixNano, 10);\n else if (typeof object.startTimeUnixNano === \"number\")\n message.startTimeUnixNano = object.startTimeUnixNano;\n else if (typeof object.startTimeUnixNano === \"object\")\n message.startTimeUnixNano = new $util.LongBits(object.startTimeUnixNano.low >>> 0, object.startTimeUnixNano.high >>> 0).toNumber();\n if (object.endTimeUnixNano != null)\n if ($util.Long)\n (message.endTimeUnixNano = $util.Long.fromValue(object.endTimeUnixNano)).unsigned = false;\n else if (typeof object.endTimeUnixNano === \"string\")\n message.endTimeUnixNano = parseInt(object.endTimeUnixNano, 10);\n else if (typeof object.endTimeUnixNano === \"number\")\n message.endTimeUnixNano = object.endTimeUnixNano;\n else if (typeof object.endTimeUnixNano === \"object\")\n message.endTimeUnixNano = new $util.LongBits(object.endTimeUnixNano.low >>> 0, object.endTimeUnixNano.high >>> 0).toNumber();\n if (object.attributes) {\n if (!Array.isArray(object.attributes))\n throw TypeError(\".opentelemetry.proto.trace.v1.Span.attributes: array expected\");\n message.attributes = [];\n for (var i = 0; i < object.attributes.length; ++i) {\n if (typeof object.attributes[i] !== \"object\")\n throw TypeError(\".opentelemetry.proto.trace.v1.Span.attributes: object expected\");\n message.attributes[i] = $root.opentelemetry.proto.common.v1.KeyValue.fromObject(object.attributes[i]);\n }\n }\n if (object.droppedAttributesCount != null)\n message.droppedAttributesCount = object.droppedAttributesCount >>> 0;\n if (object.events) {\n if (!Array.isArray(object.events))\n throw TypeError(\".opentelemetry.proto.trace.v1.Span.events: array expected\");\n message.events = [];\n for (var i = 0; i < object.events.length; ++i) {\n if (typeof object.events[i] !== \"object\")\n throw TypeError(\".opentelemetry.proto.trace.v1.Span.events: object expected\");\n message.events[i] = $root.opentelemetry.proto.trace.v1.Span.Event.fromObject(object.events[i]);\n }\n }\n if (object.droppedEventsCount != null)\n message.droppedEventsCount = object.droppedEventsCount >>> 0;\n if (object.links) {\n if (!Array.isArray(object.links))\n throw TypeError(\".opentelemetry.proto.trace.v1.Span.links: array expected\");\n message.links = [];\n for (var i = 0; i < object.links.length; ++i) {\n if (typeof object.links[i] !== \"object\")\n throw TypeError(\".opentelemetry.proto.trace.v1.Span.links: object expected\");\n message.links[i] = $root.opentelemetry.proto.trace.v1.Span.Link.fromObject(object.links[i]);\n }\n }\n if (object.droppedLinksCount != null)\n message.droppedLinksCount = object.droppedLinksCount >>> 0;\n if (object.status != null) {\n if (typeof object.status !== \"object\")\n throw TypeError(\".opentelemetry.proto.trace.v1.Span.status: object expected\");\n message.status = $root.opentelemetry.proto.trace.v1.Status.fromObject(object.status);\n }\n return message;\n };\n /**\n * Creates a plain object from a Span message. Also converts values to other types if specified.\n * @function toObject\n * @memberof opentelemetry.proto.trace.v1.Span\n * @static\n * @param {opentelemetry.proto.trace.v1.Span} message Span\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n Span.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n var object = {};\n if (options.arrays || options.defaults) {\n object.attributes = [];\n object.events = [];\n object.links = [];\n }\n if (options.defaults) {\n if (options.bytes === String)\n object.traceId = \"\";\n else {\n object.traceId = [];\n if (options.bytes !== Array)\n object.traceId = $util.newBuffer(object.traceId);\n }\n if (options.bytes === String)\n object.spanId = \"\";\n else {\n object.spanId = [];\n if (options.bytes !== Array)\n object.spanId = $util.newBuffer(object.spanId);\n }\n object.traceState = \"\";\n if (options.bytes === String)\n object.parentSpanId = \"\";\n else {\n object.parentSpanId = [];\n if (options.bytes !== Array)\n object.parentSpanId = $util.newBuffer(object.parentSpanId);\n }\n object.name = \"\";\n object.kind = options.enums === String ? \"SPAN_KIND_UNSPECIFIED\" : 0;\n if ($util.Long) {\n var long = new $util.Long(0, 0, false);\n object.startTimeUnixNano = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n }\n else\n object.startTimeUnixNano = options.longs === String ? \"0\" : 0;\n if ($util.Long) {\n var long = new $util.Long(0, 0, false);\n object.endTimeUnixNano = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n }\n else\n object.endTimeUnixNano = options.longs === String ? \"0\" : 0;\n object.droppedAttributesCount = 0;\n object.droppedEventsCount = 0;\n object.droppedLinksCount = 0;\n object.status = null;\n }\n if (message.traceId != null && message.hasOwnProperty(\"traceId\"))\n object.traceId = options.bytes === String ? $util.base64.encode(message.traceId, 0, message.traceId.length) : options.bytes === Array ? Array.prototype.slice.call(message.traceId) : message.traceId;\n if (message.spanId != null && message.hasOwnProperty(\"spanId\"))\n object.spanId = options.bytes === String ? $util.base64.encode(message.spanId, 0, message.spanId.length) : options.bytes === Array ? Array.prototype.slice.call(message.spanId) : message.spanId;\n if (message.traceState != null && message.hasOwnProperty(\"traceState\"))\n object.traceState = message.traceState;\n if (message.parentSpanId != null && message.hasOwnProperty(\"parentSpanId\"))\n object.parentSpanId = options.bytes === String ? $util.base64.encode(message.parentSpanId, 0, message.parentSpanId.length) : options.bytes === Array ? Array.prototype.slice.call(message.parentSpanId) : message.parentSpanId;\n if (message.name != null && message.hasOwnProperty(\"name\"))\n object.name = message.name;\n if (message.kind != null && message.hasOwnProperty(\"kind\"))\n object.kind = options.enums === String ? $root.opentelemetry.proto.trace.v1.Span.SpanKind[message.kind] === undefined ? message.kind : $root.opentelemetry.proto.trace.v1.Span.SpanKind[message.kind] : message.kind;\n if (message.startTimeUnixNano != null && message.hasOwnProperty(\"startTimeUnixNano\"))\n if (typeof message.startTimeUnixNano === \"number\")\n object.startTimeUnixNano = options.longs === String ? String(message.startTimeUnixNano) : message.startTimeUnixNano;\n else\n object.startTimeUnixNano = options.longs === String ? $util.Long.prototype.toString.call(message.startTimeUnixNano) : options.longs === Number ? new $util.LongBits(message.startTimeUnixNano.low >>> 0, message.startTimeUnixNano.high >>> 0).toNumber() : message.startTimeUnixNano;\n if (message.endTimeUnixNano != null && message.hasOwnProperty(\"endTimeUnixNano\"))\n if (typeof message.endTimeUnixNano === \"number\")\n object.endTimeUnixNano = options.longs === String ? String(message.endTimeUnixNano) : message.endTimeUnixNano;\n else\n object.endTimeUnixNano = options.longs === String ? $util.Long.prototype.toString.call(message.endTimeUnixNano) : options.longs === Number ? new $util.LongBits(message.endTimeUnixNano.low >>> 0, message.endTimeUnixNano.high >>> 0).toNumber() : message.endTimeUnixNano;\n if (message.attributes && message.attributes.length) {\n object.attributes = [];\n for (var j = 0; j < message.attributes.length; ++j)\n object.attributes[j] = $root.opentelemetry.proto.common.v1.KeyValue.toObject(message.attributes[j], options);\n }\n if (message.droppedAttributesCount != null && message.hasOwnProperty(\"droppedAttributesCount\"))\n object.droppedAttributesCount = message.droppedAttributesCount;\n if (message.events && message.events.length) {\n object.events = [];\n for (var j = 0; j < message.events.length; ++j)\n object.events[j] = $root.opentelemetry.proto.trace.v1.Span.Event.toObject(message.events[j], options);\n }\n if (message.droppedEventsCount != null && message.hasOwnProperty(\"droppedEventsCount\"))\n object.droppedEventsCount = message.droppedEventsCount;\n if (message.links && message.links.length) {\n object.links = [];\n for (var j = 0; j < message.links.length; ++j)\n object.links[j] = $root.opentelemetry.proto.trace.v1.Span.Link.toObject(message.links[j], options);\n }\n if (message.droppedLinksCount != null && message.hasOwnProperty(\"droppedLinksCount\"))\n object.droppedLinksCount = message.droppedLinksCount;\n if (message.status != null && message.hasOwnProperty(\"status\"))\n object.status = $root.opentelemetry.proto.trace.v1.Status.toObject(message.status, options);\n return object;\n };\n /**\n * Converts this Span to JSON.\n * @function toJSON\n * @memberof opentelemetry.proto.trace.v1.Span\n * @instance\n * @returns {Object.} JSON object\n */\n Span.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n /**\n * Gets the default type url for Span\n * @function getTypeUrl\n * @memberof opentelemetry.proto.trace.v1.Span\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n Span.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = \"type.googleapis.com\";\n }\n return typeUrlPrefix + \"/opentelemetry.proto.trace.v1.Span\";\n };\n /**\n * SpanKind enum.\n * @name opentelemetry.proto.trace.v1.Span.SpanKind\n * @enum {number}\n * @property {number} SPAN_KIND_UNSPECIFIED=0 SPAN_KIND_UNSPECIFIED value\n * @property {number} SPAN_KIND_INTERNAL=1 SPAN_KIND_INTERNAL value\n * @property {number} SPAN_KIND_SERVER=2 SPAN_KIND_SERVER value\n * @property {number} SPAN_KIND_CLIENT=3 SPAN_KIND_CLIENT value\n * @property {number} SPAN_KIND_PRODUCER=4 SPAN_KIND_PRODUCER value\n * @property {number} SPAN_KIND_CONSUMER=5 SPAN_KIND_CONSUMER value\n */\n Span.SpanKind = (function () {\n var valuesById = {}, values = Object.create(valuesById);\n values[valuesById[0] = \"SPAN_KIND_UNSPECIFIED\"] = 0;\n values[valuesById[1] = \"SPAN_KIND_INTERNAL\"] = 1;\n values[valuesById[2] = \"SPAN_KIND_SERVER\"] = 2;\n values[valuesById[3] = \"SPAN_KIND_CLIENT\"] = 3;\n values[valuesById[4] = \"SPAN_KIND_PRODUCER\"] = 4;\n values[valuesById[5] = \"SPAN_KIND_CONSUMER\"] = 5;\n return values;\n })();\n Span.Event = (function () {\n /**\n * Properties of an Event.\n * @memberof opentelemetry.proto.trace.v1.Span\n * @interface IEvent\n * @property {number|Long|null} [timeUnixNano] Event timeUnixNano\n * @property {string|null} [name] Event name\n * @property {Array.|null} [attributes] Event attributes\n * @property {number|null} [droppedAttributesCount] Event droppedAttributesCount\n */\n /**\n * Constructs a new Event.\n * @memberof opentelemetry.proto.trace.v1.Span\n * @classdesc Represents an Event.\n * @implements IEvent\n * @constructor\n * @param {opentelemetry.proto.trace.v1.Span.IEvent=} [properties] Properties to set\n */\n function Event(properties) {\n this.attributes = [];\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n /**\n * Event timeUnixNano.\n * @member {number|Long|null|undefined} timeUnixNano\n * @memberof opentelemetry.proto.trace.v1.Span.Event\n * @instance\n */\n Event.prototype.timeUnixNano = null;\n /**\n * Event name.\n * @member {string|null|undefined} name\n * @memberof opentelemetry.proto.trace.v1.Span.Event\n * @instance\n */\n Event.prototype.name = null;\n /**\n * Event attributes.\n * @member {Array.} attributes\n * @memberof opentelemetry.proto.trace.v1.Span.Event\n * @instance\n */\n Event.prototype.attributes = $util.emptyArray;\n /**\n * Event droppedAttributesCount.\n * @member {number|null|undefined} droppedAttributesCount\n * @memberof opentelemetry.proto.trace.v1.Span.Event\n * @instance\n */\n Event.prototype.droppedAttributesCount = null;\n /**\n * Creates a new Event instance using the specified properties.\n * @function create\n * @memberof opentelemetry.proto.trace.v1.Span.Event\n * @static\n * @param {opentelemetry.proto.trace.v1.Span.IEvent=} [properties] Properties to set\n * @returns {opentelemetry.proto.trace.v1.Span.Event} Event instance\n */\n Event.create = function create(properties) {\n return new Event(properties);\n };\n /**\n * Encodes the specified Event message. Does not implicitly {@link opentelemetry.proto.trace.v1.Span.Event.verify|verify} messages.\n * @function encode\n * @memberof opentelemetry.proto.trace.v1.Span.Event\n * @static\n * @param {opentelemetry.proto.trace.v1.Span.IEvent} message Event message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Event.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.timeUnixNano != null && Object.hasOwnProperty.call(message, \"timeUnixNano\"))\n writer.uint32(/* id 1, wireType 1 =*/ 9).fixed64(message.timeUnixNano);\n if (message.name != null && Object.hasOwnProperty.call(message, \"name\"))\n writer.uint32(/* id 2, wireType 2 =*/ 18).string(message.name);\n if (message.attributes != null && message.attributes.length)\n for (var i = 0; i < message.attributes.length; ++i)\n $root.opentelemetry.proto.common.v1.KeyValue.encode(message.attributes[i], writer.uint32(/* id 3, wireType 2 =*/ 26).fork()).ldelim();\n if (message.droppedAttributesCount != null && Object.hasOwnProperty.call(message, \"droppedAttributesCount\"))\n writer.uint32(/* id 4, wireType 0 =*/ 32).uint32(message.droppedAttributesCount);\n return writer;\n };\n /**\n * Encodes the specified Event message, length delimited. Does not implicitly {@link opentelemetry.proto.trace.v1.Span.Event.verify|verify} messages.\n * @function encodeDelimited\n * @memberof opentelemetry.proto.trace.v1.Span.Event\n * @static\n * @param {opentelemetry.proto.trace.v1.Span.IEvent} message Event message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Event.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n /**\n * Decodes an Event message from the specified reader or buffer.\n * @function decode\n * @memberof opentelemetry.proto.trace.v1.Span.Event\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {opentelemetry.proto.trace.v1.Span.Event} Event\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Event.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.opentelemetry.proto.trace.v1.Span.Event();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n message.timeUnixNano = reader.fixed64();\n break;\n }\n case 2: {\n message.name = reader.string();\n break;\n }\n case 3: {\n if (!(message.attributes && message.attributes.length))\n message.attributes = [];\n message.attributes.push($root.opentelemetry.proto.common.v1.KeyValue.decode(reader, reader.uint32()));\n break;\n }\n case 4: {\n message.droppedAttributesCount = reader.uint32();\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n /**\n * Decodes an Event message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof opentelemetry.proto.trace.v1.Span.Event\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {opentelemetry.proto.trace.v1.Span.Event} Event\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Event.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n /**\n * Verifies an Event message.\n * @function verify\n * @memberof opentelemetry.proto.trace.v1.Span.Event\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n Event.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.timeUnixNano != null && message.hasOwnProperty(\"timeUnixNano\"))\n if (!$util.isInteger(message.timeUnixNano) && !(message.timeUnixNano && $util.isInteger(message.timeUnixNano.low) && $util.isInteger(message.timeUnixNano.high)))\n return \"timeUnixNano: integer|Long expected\";\n if (message.name != null && message.hasOwnProperty(\"name\"))\n if (!$util.isString(message.name))\n return \"name: string expected\";\n if (message.attributes != null && message.hasOwnProperty(\"attributes\")) {\n if (!Array.isArray(message.attributes))\n return \"attributes: array expected\";\n for (var i = 0; i < message.attributes.length; ++i) {\n var error = $root.opentelemetry.proto.common.v1.KeyValue.verify(message.attributes[i]);\n if (error)\n return \"attributes.\" + error;\n }\n }\n if (message.droppedAttributesCount != null && message.hasOwnProperty(\"droppedAttributesCount\"))\n if (!$util.isInteger(message.droppedAttributesCount))\n return \"droppedAttributesCount: integer expected\";\n return null;\n };\n /**\n * Creates an Event message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof opentelemetry.proto.trace.v1.Span.Event\n * @static\n * @param {Object.} object Plain object\n * @returns {opentelemetry.proto.trace.v1.Span.Event} Event\n */\n Event.fromObject = function fromObject(object) {\n if (object instanceof $root.opentelemetry.proto.trace.v1.Span.Event)\n return object;\n var message = new $root.opentelemetry.proto.trace.v1.Span.Event();\n if (object.timeUnixNano != null)\n if ($util.Long)\n (message.timeUnixNano = $util.Long.fromValue(object.timeUnixNano)).unsigned = false;\n else if (typeof object.timeUnixNano === \"string\")\n message.timeUnixNano = parseInt(object.timeUnixNano, 10);\n else if (typeof object.timeUnixNano === \"number\")\n message.timeUnixNano = object.timeUnixNano;\n else if (typeof object.timeUnixNano === \"object\")\n message.timeUnixNano = new $util.LongBits(object.timeUnixNano.low >>> 0, object.timeUnixNano.high >>> 0).toNumber();\n if (object.name != null)\n message.name = String(object.name);\n if (object.attributes) {\n if (!Array.isArray(object.attributes))\n throw TypeError(\".opentelemetry.proto.trace.v1.Span.Event.attributes: array expected\");\n message.attributes = [];\n for (var i = 0; i < object.attributes.length; ++i) {\n if (typeof object.attributes[i] !== \"object\")\n throw TypeError(\".opentelemetry.proto.trace.v1.Span.Event.attributes: object expected\");\n message.attributes[i] = $root.opentelemetry.proto.common.v1.KeyValue.fromObject(object.attributes[i]);\n }\n }\n if (object.droppedAttributesCount != null)\n message.droppedAttributesCount = object.droppedAttributesCount >>> 0;\n return message;\n };\n /**\n * Creates a plain object from an Event message. Also converts values to other types if specified.\n * @function toObject\n * @memberof opentelemetry.proto.trace.v1.Span.Event\n * @static\n * @param {opentelemetry.proto.trace.v1.Span.Event} message Event\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n Event.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n var object = {};\n if (options.arrays || options.defaults)\n object.attributes = [];\n if (options.defaults) {\n if ($util.Long) {\n var long = new $util.Long(0, 0, false);\n object.timeUnixNano = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n }\n else\n object.timeUnixNano = options.longs === String ? \"0\" : 0;\n object.name = \"\";\n object.droppedAttributesCount = 0;\n }\n if (message.timeUnixNano != null && message.hasOwnProperty(\"timeUnixNano\"))\n if (typeof message.timeUnixNano === \"number\")\n object.timeUnixNano = options.longs === String ? String(message.timeUnixNano) : message.timeUnixNano;\n else\n object.timeUnixNano = options.longs === String ? $util.Long.prototype.toString.call(message.timeUnixNano) : options.longs === Number ? new $util.LongBits(message.timeUnixNano.low >>> 0, message.timeUnixNano.high >>> 0).toNumber() : message.timeUnixNano;\n if (message.name != null && message.hasOwnProperty(\"name\"))\n object.name = message.name;\n if (message.attributes && message.attributes.length) {\n object.attributes = [];\n for (var j = 0; j < message.attributes.length; ++j)\n object.attributes[j] = $root.opentelemetry.proto.common.v1.KeyValue.toObject(message.attributes[j], options);\n }\n if (message.droppedAttributesCount != null && message.hasOwnProperty(\"droppedAttributesCount\"))\n object.droppedAttributesCount = message.droppedAttributesCount;\n return object;\n };\n /**\n * Converts this Event to JSON.\n * @function toJSON\n * @memberof opentelemetry.proto.trace.v1.Span.Event\n * @instance\n * @returns {Object.} JSON object\n */\n Event.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n /**\n * Gets the default type url for Event\n * @function getTypeUrl\n * @memberof opentelemetry.proto.trace.v1.Span.Event\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n Event.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = \"type.googleapis.com\";\n }\n return typeUrlPrefix + \"/opentelemetry.proto.trace.v1.Span.Event\";\n };\n return Event;\n })();\n Span.Link = (function () {\n /**\n * Properties of a Link.\n * @memberof opentelemetry.proto.trace.v1.Span\n * @interface ILink\n * @property {Uint8Array|null} [traceId] Link traceId\n * @property {Uint8Array|null} [spanId] Link spanId\n * @property {string|null} [traceState] Link traceState\n * @property {Array.|null} [attributes] Link attributes\n * @property {number|null} [droppedAttributesCount] Link droppedAttributesCount\n */\n /**\n * Constructs a new Link.\n * @memberof opentelemetry.proto.trace.v1.Span\n * @classdesc Represents a Link.\n * @implements ILink\n * @constructor\n * @param {opentelemetry.proto.trace.v1.Span.ILink=} [properties] Properties to set\n */\n function Link(properties) {\n this.attributes = [];\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n /**\n * Link traceId.\n * @member {Uint8Array|null|undefined} traceId\n * @memberof opentelemetry.proto.trace.v1.Span.Link\n * @instance\n */\n Link.prototype.traceId = null;\n /**\n * Link spanId.\n * @member {Uint8Array|null|undefined} spanId\n * @memberof opentelemetry.proto.trace.v1.Span.Link\n * @instance\n */\n Link.prototype.spanId = null;\n /**\n * Link traceState.\n * @member {string|null|undefined} traceState\n * @memberof opentelemetry.proto.trace.v1.Span.Link\n * @instance\n */\n Link.prototype.traceState = null;\n /**\n * Link attributes.\n * @member {Array.} attributes\n * @memberof opentelemetry.proto.trace.v1.Span.Link\n * @instance\n */\n Link.prototype.attributes = $util.emptyArray;\n /**\n * Link droppedAttributesCount.\n * @member {number|null|undefined} droppedAttributesCount\n * @memberof opentelemetry.proto.trace.v1.Span.Link\n * @instance\n */\n Link.prototype.droppedAttributesCount = null;\n /**\n * Creates a new Link instance using the specified properties.\n * @function create\n * @memberof opentelemetry.proto.trace.v1.Span.Link\n * @static\n * @param {opentelemetry.proto.trace.v1.Span.ILink=} [properties] Properties to set\n * @returns {opentelemetry.proto.trace.v1.Span.Link} Link instance\n */\n Link.create = function create(properties) {\n return new Link(properties);\n };\n /**\n * Encodes the specified Link message. Does not implicitly {@link opentelemetry.proto.trace.v1.Span.Link.verify|verify} messages.\n * @function encode\n * @memberof opentelemetry.proto.trace.v1.Span.Link\n * @static\n * @param {opentelemetry.proto.trace.v1.Span.ILink} message Link message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Link.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.traceId != null && Object.hasOwnProperty.call(message, \"traceId\"))\n writer.uint32(/* id 1, wireType 2 =*/ 10).bytes(message.traceId);\n if (message.spanId != null && Object.hasOwnProperty.call(message, \"spanId\"))\n writer.uint32(/* id 2, wireType 2 =*/ 18).bytes(message.spanId);\n if (message.traceState != null && Object.hasOwnProperty.call(message, \"traceState\"))\n writer.uint32(/* id 3, wireType 2 =*/ 26).string(message.traceState);\n if (message.attributes != null && message.attributes.length)\n for (var i = 0; i < message.attributes.length; ++i)\n $root.opentelemetry.proto.common.v1.KeyValue.encode(message.attributes[i], writer.uint32(/* id 4, wireType 2 =*/ 34).fork()).ldelim();\n if (message.droppedAttributesCount != null && Object.hasOwnProperty.call(message, \"droppedAttributesCount\"))\n writer.uint32(/* id 5, wireType 0 =*/ 40).uint32(message.droppedAttributesCount);\n return writer;\n };\n /**\n * Encodes the specified Link message, length delimited. Does not implicitly {@link opentelemetry.proto.trace.v1.Span.Link.verify|verify} messages.\n * @function encodeDelimited\n * @memberof opentelemetry.proto.trace.v1.Span.Link\n * @static\n * @param {opentelemetry.proto.trace.v1.Span.ILink} message Link message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Link.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n /**\n * Decodes a Link message from the specified reader or buffer.\n * @function decode\n * @memberof opentelemetry.proto.trace.v1.Span.Link\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {opentelemetry.proto.trace.v1.Span.Link} Link\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Link.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.opentelemetry.proto.trace.v1.Span.Link();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n message.traceId = reader.bytes();\n break;\n }\n case 2: {\n message.spanId = reader.bytes();\n break;\n }\n case 3: {\n message.traceState = reader.string();\n break;\n }\n case 4: {\n if (!(message.attributes && message.attributes.length))\n message.attributes = [];\n message.attributes.push($root.opentelemetry.proto.common.v1.KeyValue.decode(reader, reader.uint32()));\n break;\n }\n case 5: {\n message.droppedAttributesCount = reader.uint32();\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n /**\n * Decodes a Link message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof opentelemetry.proto.trace.v1.Span.Link\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {opentelemetry.proto.trace.v1.Span.Link} Link\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Link.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n /**\n * Verifies a Link message.\n * @function verify\n * @memberof opentelemetry.proto.trace.v1.Span.Link\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n Link.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.traceId != null && message.hasOwnProperty(\"traceId\"))\n if (!(message.traceId && typeof message.traceId.length === \"number\" || $util.isString(message.traceId)))\n return \"traceId: buffer expected\";\n if (message.spanId != null && message.hasOwnProperty(\"spanId\"))\n if (!(message.spanId && typeof message.spanId.length === \"number\" || $util.isString(message.spanId)))\n return \"spanId: buffer expected\";\n if (message.traceState != null && message.hasOwnProperty(\"traceState\"))\n if (!$util.isString(message.traceState))\n return \"traceState: string expected\";\n if (message.attributes != null && message.hasOwnProperty(\"attributes\")) {\n if (!Array.isArray(message.attributes))\n return \"attributes: array expected\";\n for (var i = 0; i < message.attributes.length; ++i) {\n var error = $root.opentelemetry.proto.common.v1.KeyValue.verify(message.attributes[i]);\n if (error)\n return \"attributes.\" + error;\n }\n }\n if (message.droppedAttributesCount != null && message.hasOwnProperty(\"droppedAttributesCount\"))\n if (!$util.isInteger(message.droppedAttributesCount))\n return \"droppedAttributesCount: integer expected\";\n return null;\n };\n /**\n * Creates a Link message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof opentelemetry.proto.trace.v1.Span.Link\n * @static\n * @param {Object.} object Plain object\n * @returns {opentelemetry.proto.trace.v1.Span.Link} Link\n */\n Link.fromObject = function fromObject(object) {\n if (object instanceof $root.opentelemetry.proto.trace.v1.Span.Link)\n return object;\n var message = new $root.opentelemetry.proto.trace.v1.Span.Link();\n if (object.traceId != null)\n if (typeof object.traceId === \"string\")\n $util.base64.decode(object.traceId, message.traceId = $util.newBuffer($util.base64.length(object.traceId)), 0);\n else if (object.traceId.length >= 0)\n message.traceId = object.traceId;\n if (object.spanId != null)\n if (typeof object.spanId === \"string\")\n $util.base64.decode(object.spanId, message.spanId = $util.newBuffer($util.base64.length(object.spanId)), 0);\n else if (object.spanId.length >= 0)\n message.spanId = object.spanId;\n if (object.traceState != null)\n message.traceState = String(object.traceState);\n if (object.attributes) {\n if (!Array.isArray(object.attributes))\n throw TypeError(\".opentelemetry.proto.trace.v1.Span.Link.attributes: array expected\");\n message.attributes = [];\n for (var i = 0; i < object.attributes.length; ++i) {\n if (typeof object.attributes[i] !== \"object\")\n throw TypeError(\".opentelemetry.proto.trace.v1.Span.Link.attributes: object expected\");\n message.attributes[i] = $root.opentelemetry.proto.common.v1.KeyValue.fromObject(object.attributes[i]);\n }\n }\n if (object.droppedAttributesCount != null)\n message.droppedAttributesCount = object.droppedAttributesCount >>> 0;\n return message;\n };\n /**\n * Creates a plain object from a Link message. Also converts values to other types if specified.\n * @function toObject\n * @memberof opentelemetry.proto.trace.v1.Span.Link\n * @static\n * @param {opentelemetry.proto.trace.v1.Span.Link} message Link\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n Link.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n var object = {};\n if (options.arrays || options.defaults)\n object.attributes = [];\n if (options.defaults) {\n if (options.bytes === String)\n object.traceId = \"\";\n else {\n object.traceId = [];\n if (options.bytes !== Array)\n object.traceId = $util.newBuffer(object.traceId);\n }\n if (options.bytes === String)\n object.spanId = \"\";\n else {\n object.spanId = [];\n if (options.bytes !== Array)\n object.spanId = $util.newBuffer(object.spanId);\n }\n object.traceState = \"\";\n object.droppedAttributesCount = 0;\n }\n if (message.traceId != null && message.hasOwnProperty(\"traceId\"))\n object.traceId = options.bytes === String ? $util.base64.encode(message.traceId, 0, message.traceId.length) : options.bytes === Array ? Array.prototype.slice.call(message.traceId) : message.traceId;\n if (message.spanId != null && message.hasOwnProperty(\"spanId\"))\n object.spanId = options.bytes === String ? $util.base64.encode(message.spanId, 0, message.spanId.length) : options.bytes === Array ? Array.prototype.slice.call(message.spanId) : message.spanId;\n if (message.traceState != null && message.hasOwnProperty(\"traceState\"))\n object.traceState = message.traceState;\n if (message.attributes && message.attributes.length) {\n object.attributes = [];\n for (var j = 0; j < message.attributes.length; ++j)\n object.attributes[j] = $root.opentelemetry.proto.common.v1.KeyValue.toObject(message.attributes[j], options);\n }\n if (message.droppedAttributesCount != null && message.hasOwnProperty(\"droppedAttributesCount\"))\n object.droppedAttributesCount = message.droppedAttributesCount;\n return object;\n };\n /**\n * Converts this Link to JSON.\n * @function toJSON\n * @memberof opentelemetry.proto.trace.v1.Span.Link\n * @instance\n * @returns {Object.} JSON object\n */\n Link.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n /**\n * Gets the default type url for Link\n * @function getTypeUrl\n * @memberof opentelemetry.proto.trace.v1.Span.Link\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n Link.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = \"type.googleapis.com\";\n }\n return typeUrlPrefix + \"/opentelemetry.proto.trace.v1.Span.Link\";\n };\n return Link;\n })();\n return Span;\n })();\n v1.Status = (function () {\n /**\n * Properties of a Status.\n * @memberof opentelemetry.proto.trace.v1\n * @interface IStatus\n * @property {string|null} [message] Status message\n * @property {opentelemetry.proto.trace.v1.Status.StatusCode|null} [code] Status code\n */\n /**\n * Constructs a new Status.\n * @memberof opentelemetry.proto.trace.v1\n * @classdesc Represents a Status.\n * @implements IStatus\n * @constructor\n * @param {opentelemetry.proto.trace.v1.IStatus=} [properties] Properties to set\n */\n function Status(properties) {\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n /**\n * Status message.\n * @member {string|null|undefined} message\n * @memberof opentelemetry.proto.trace.v1.Status\n * @instance\n */\n Status.prototype.message = null;\n /**\n * Status code.\n * @member {opentelemetry.proto.trace.v1.Status.StatusCode|null|undefined} code\n * @memberof opentelemetry.proto.trace.v1.Status\n * @instance\n */\n Status.prototype.code = null;\n /**\n * Creates a new Status instance using the specified properties.\n * @function create\n * @memberof opentelemetry.proto.trace.v1.Status\n * @static\n * @param {opentelemetry.proto.trace.v1.IStatus=} [properties] Properties to set\n * @returns {opentelemetry.proto.trace.v1.Status} Status instance\n */\n Status.create = function create(properties) {\n return new Status(properties);\n };\n /**\n * Encodes the specified Status message. Does not implicitly {@link opentelemetry.proto.trace.v1.Status.verify|verify} messages.\n * @function encode\n * @memberof opentelemetry.proto.trace.v1.Status\n * @static\n * @param {opentelemetry.proto.trace.v1.IStatus} message Status message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Status.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.message != null && Object.hasOwnProperty.call(message, \"message\"))\n writer.uint32(/* id 2, wireType 2 =*/ 18).string(message.message);\n if (message.code != null && Object.hasOwnProperty.call(message, \"code\"))\n writer.uint32(/* id 3, wireType 0 =*/ 24).int32(message.code);\n return writer;\n };\n /**\n * Encodes the specified Status message, length delimited. Does not implicitly {@link opentelemetry.proto.trace.v1.Status.verify|verify} messages.\n * @function encodeDelimited\n * @memberof opentelemetry.proto.trace.v1.Status\n * @static\n * @param {opentelemetry.proto.trace.v1.IStatus} message Status message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Status.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n /**\n * Decodes a Status message from the specified reader or buffer.\n * @function decode\n * @memberof opentelemetry.proto.trace.v1.Status\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {opentelemetry.proto.trace.v1.Status} Status\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Status.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.opentelemetry.proto.trace.v1.Status();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 2: {\n message.message = reader.string();\n break;\n }\n case 3: {\n message.code = reader.int32();\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n /**\n * Decodes a Status message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof opentelemetry.proto.trace.v1.Status\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {opentelemetry.proto.trace.v1.Status} Status\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Status.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n /**\n * Verifies a Status message.\n * @function verify\n * @memberof opentelemetry.proto.trace.v1.Status\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n Status.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.message != null && message.hasOwnProperty(\"message\"))\n if (!$util.isString(message.message))\n return \"message: string expected\";\n if (message.code != null && message.hasOwnProperty(\"code\"))\n switch (message.code) {\n default:\n return \"code: enum value expected\";\n case 0:\n case 1:\n case 2:\n break;\n }\n return null;\n };\n /**\n * Creates a Status message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof opentelemetry.proto.trace.v1.Status\n * @static\n * @param {Object.} object Plain object\n * @returns {opentelemetry.proto.trace.v1.Status} Status\n */\n Status.fromObject = function fromObject(object) {\n if (object instanceof $root.opentelemetry.proto.trace.v1.Status)\n return object;\n var message = new $root.opentelemetry.proto.trace.v1.Status();\n if (object.message != null)\n message.message = String(object.message);\n switch (object.code) {\n default:\n if (typeof object.code === \"number\") {\n message.code = object.code;\n break;\n }\n break;\n case \"STATUS_CODE_UNSET\":\n case 0:\n message.code = 0;\n break;\n case \"STATUS_CODE_OK\":\n case 1:\n message.code = 1;\n break;\n case \"STATUS_CODE_ERROR\":\n case 2:\n message.code = 2;\n break;\n }\n return message;\n };\n /**\n * Creates a plain object from a Status message. Also converts values to other types if specified.\n * @function toObject\n * @memberof opentelemetry.proto.trace.v1.Status\n * @static\n * @param {opentelemetry.proto.trace.v1.Status} message Status\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n Status.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n var object = {};\n if (options.defaults) {\n object.message = \"\";\n object.code = options.enums === String ? \"STATUS_CODE_UNSET\" : 0;\n }\n if (message.message != null && message.hasOwnProperty(\"message\"))\n object.message = message.message;\n if (message.code != null && message.hasOwnProperty(\"code\"))\n object.code = options.enums === String ? $root.opentelemetry.proto.trace.v1.Status.StatusCode[message.code] === undefined ? message.code : $root.opentelemetry.proto.trace.v1.Status.StatusCode[message.code] : message.code;\n return object;\n };\n /**\n * Converts this Status to JSON.\n * @function toJSON\n * @memberof opentelemetry.proto.trace.v1.Status\n * @instance\n * @returns {Object.} JSON object\n */\n Status.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n /**\n * Gets the default type url for Status\n * @function getTypeUrl\n * @memberof opentelemetry.proto.trace.v1.Status\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n Status.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = \"type.googleapis.com\";\n }\n return typeUrlPrefix + \"/opentelemetry.proto.trace.v1.Status\";\n };\n /**\n * StatusCode enum.\n * @name opentelemetry.proto.trace.v1.Status.StatusCode\n * @enum {number}\n * @property {number} STATUS_CODE_UNSET=0 STATUS_CODE_UNSET value\n * @property {number} STATUS_CODE_OK=1 STATUS_CODE_OK value\n * @property {number} STATUS_CODE_ERROR=2 STATUS_CODE_ERROR value\n */\n Status.StatusCode = (function () {\n var valuesById = {}, values = Object.create(valuesById);\n values[valuesById[0] = \"STATUS_CODE_UNSET\"] = 0;\n values[valuesById[1] = \"STATUS_CODE_OK\"] = 1;\n values[valuesById[2] = \"STATUS_CODE_ERROR\"] = 2;\n return values;\n })();\n return Status;\n })();\n return v1;\n })();\n return trace;\n })();\n proto.collector = (function () {\n /**\n * Namespace collector.\n * @memberof opentelemetry.proto\n * @namespace\n */\n var collector = {};\n collector.trace = (function () {\n /**\n * Namespace trace.\n * @memberof opentelemetry.proto.collector\n * @namespace\n */\n var trace = {};\n trace.v1 = (function () {\n /**\n * Namespace v1.\n * @memberof opentelemetry.proto.collector.trace\n * @namespace\n */\n var v1 = {};\n v1.TraceService = (function () {\n /**\n * Constructs a new TraceService service.\n * @memberof opentelemetry.proto.collector.trace.v1\n * @classdesc Represents a TraceService\n * @extends $protobuf.rpc.Service\n * @constructor\n * @param {$protobuf.RPCImpl} rpcImpl RPC implementation\n * @param {boolean} [requestDelimited=false] Whether requests are length-delimited\n * @param {boolean} [responseDelimited=false] Whether responses are length-delimited\n */\n function TraceService(rpcImpl, requestDelimited, responseDelimited) {\n $protobuf.rpc.Service.call(this, rpcImpl, requestDelimited, responseDelimited);\n }\n (TraceService.prototype = Object.create($protobuf.rpc.Service.prototype)).constructor = TraceService;\n /**\n * Creates new TraceService service using the specified rpc implementation.\n * @function create\n * @memberof opentelemetry.proto.collector.trace.v1.TraceService\n * @static\n * @param {$protobuf.RPCImpl} rpcImpl RPC implementation\n * @param {boolean} [requestDelimited=false] Whether requests are length-delimited\n * @param {boolean} [responseDelimited=false] Whether responses are length-delimited\n * @returns {TraceService} RPC service. Useful where requests and/or responses are streamed.\n */\n TraceService.create = function create(rpcImpl, requestDelimited, responseDelimited) {\n return new this(rpcImpl, requestDelimited, responseDelimited);\n };\n /**\n * Callback as used by {@link opentelemetry.proto.collector.trace.v1.TraceService#export_}.\n * @memberof opentelemetry.proto.collector.trace.v1.TraceService\n * @typedef ExportCallback\n * @type {function}\n * @param {Error|null} error Error, if any\n * @param {opentelemetry.proto.collector.trace.v1.ExportTraceServiceResponse} [response] ExportTraceServiceResponse\n */\n /**\n * Calls Export.\n * @function export\n * @memberof opentelemetry.proto.collector.trace.v1.TraceService\n * @instance\n * @param {opentelemetry.proto.collector.trace.v1.IExportTraceServiceRequest} request ExportTraceServiceRequest message or plain object\n * @param {opentelemetry.proto.collector.trace.v1.TraceService.ExportCallback} callback Node-style callback called with the error, if any, and ExportTraceServiceResponse\n * @returns {undefined}\n * @variation 1\n */\n Object.defineProperty(TraceService.prototype[\"export\"] = function export_(request, callback) {\n return this.rpcCall(export_, $root.opentelemetry.proto.collector.trace.v1.ExportTraceServiceRequest, $root.opentelemetry.proto.collector.trace.v1.ExportTraceServiceResponse, request, callback);\n }, \"name\", { value: \"Export\" });\n /**\n * Calls Export.\n * @function export\n * @memberof opentelemetry.proto.collector.trace.v1.TraceService\n * @instance\n * @param {opentelemetry.proto.collector.trace.v1.IExportTraceServiceRequest} request ExportTraceServiceRequest message or plain object\n * @returns {Promise} Promise\n * @variation 2\n */\n return TraceService;\n })();\n v1.ExportTraceServiceRequest = (function () {\n /**\n * Properties of an ExportTraceServiceRequest.\n * @memberof opentelemetry.proto.collector.trace.v1\n * @interface IExportTraceServiceRequest\n * @property {Array.|null} [resourceSpans] ExportTraceServiceRequest resourceSpans\n */\n /**\n * Constructs a new ExportTraceServiceRequest.\n * @memberof opentelemetry.proto.collector.trace.v1\n * @classdesc Represents an ExportTraceServiceRequest.\n * @implements IExportTraceServiceRequest\n * @constructor\n * @param {opentelemetry.proto.collector.trace.v1.IExportTraceServiceRequest=} [properties] Properties to set\n */\n function ExportTraceServiceRequest(properties) {\n this.resourceSpans = [];\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n /**\n * ExportTraceServiceRequest resourceSpans.\n * @member {Array.} resourceSpans\n * @memberof opentelemetry.proto.collector.trace.v1.ExportTraceServiceRequest\n * @instance\n */\n ExportTraceServiceRequest.prototype.resourceSpans = $util.emptyArray;\n /**\n * Creates a new ExportTraceServiceRequest instance using the specified properties.\n * @function create\n * @memberof opentelemetry.proto.collector.trace.v1.ExportTraceServiceRequest\n * @static\n * @param {opentelemetry.proto.collector.trace.v1.IExportTraceServiceRequest=} [properties] Properties to set\n * @returns {opentelemetry.proto.collector.trace.v1.ExportTraceServiceRequest} ExportTraceServiceRequest instance\n */\n ExportTraceServiceRequest.create = function create(properties) {\n return new ExportTraceServiceRequest(properties);\n };\n /**\n * Encodes the specified ExportTraceServiceRequest message. Does not implicitly {@link opentelemetry.proto.collector.trace.v1.ExportTraceServiceRequest.verify|verify} messages.\n * @function encode\n * @memberof opentelemetry.proto.collector.trace.v1.ExportTraceServiceRequest\n * @static\n * @param {opentelemetry.proto.collector.trace.v1.IExportTraceServiceRequest} message ExportTraceServiceRequest message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ExportTraceServiceRequest.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.resourceSpans != null && message.resourceSpans.length)\n for (var i = 0; i < message.resourceSpans.length; ++i)\n $root.opentelemetry.proto.trace.v1.ResourceSpans.encode(message.resourceSpans[i], writer.uint32(/* id 1, wireType 2 =*/ 10).fork()).ldelim();\n return writer;\n };\n /**\n * Encodes the specified ExportTraceServiceRequest message, length delimited. Does not implicitly {@link opentelemetry.proto.collector.trace.v1.ExportTraceServiceRequest.verify|verify} messages.\n * @function encodeDelimited\n * @memberof opentelemetry.proto.collector.trace.v1.ExportTraceServiceRequest\n * @static\n * @param {opentelemetry.proto.collector.trace.v1.IExportTraceServiceRequest} message ExportTraceServiceRequest message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ExportTraceServiceRequest.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n /**\n * Decodes an ExportTraceServiceRequest message from the specified reader or buffer.\n * @function decode\n * @memberof opentelemetry.proto.collector.trace.v1.ExportTraceServiceRequest\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {opentelemetry.proto.collector.trace.v1.ExportTraceServiceRequest} ExportTraceServiceRequest\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ExportTraceServiceRequest.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.opentelemetry.proto.collector.trace.v1.ExportTraceServiceRequest();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (!(message.resourceSpans && message.resourceSpans.length))\n message.resourceSpans = [];\n message.resourceSpans.push($root.opentelemetry.proto.trace.v1.ResourceSpans.decode(reader, reader.uint32()));\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n /**\n * Decodes an ExportTraceServiceRequest message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof opentelemetry.proto.collector.trace.v1.ExportTraceServiceRequest\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {opentelemetry.proto.collector.trace.v1.ExportTraceServiceRequest} ExportTraceServiceRequest\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ExportTraceServiceRequest.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n /**\n * Verifies an ExportTraceServiceRequest message.\n * @function verify\n * @memberof opentelemetry.proto.collector.trace.v1.ExportTraceServiceRequest\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n ExportTraceServiceRequest.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.resourceSpans != null && message.hasOwnProperty(\"resourceSpans\")) {\n if (!Array.isArray(message.resourceSpans))\n return \"resourceSpans: array expected\";\n for (var i = 0; i < message.resourceSpans.length; ++i) {\n var error = $root.opentelemetry.proto.trace.v1.ResourceSpans.verify(message.resourceSpans[i]);\n if (error)\n return \"resourceSpans.\" + error;\n }\n }\n return null;\n };\n /**\n * Creates an ExportTraceServiceRequest message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof opentelemetry.proto.collector.trace.v1.ExportTraceServiceRequest\n * @static\n * @param {Object.} object Plain object\n * @returns {opentelemetry.proto.collector.trace.v1.ExportTraceServiceRequest} ExportTraceServiceRequest\n */\n ExportTraceServiceRequest.fromObject = function fromObject(object) {\n if (object instanceof $root.opentelemetry.proto.collector.trace.v1.ExportTraceServiceRequest)\n return object;\n var message = new $root.opentelemetry.proto.collector.trace.v1.ExportTraceServiceRequest();\n if (object.resourceSpans) {\n if (!Array.isArray(object.resourceSpans))\n throw TypeError(\".opentelemetry.proto.collector.trace.v1.ExportTraceServiceRequest.resourceSpans: array expected\");\n message.resourceSpans = [];\n for (var i = 0; i < object.resourceSpans.length; ++i) {\n if (typeof object.resourceSpans[i] !== \"object\")\n throw TypeError(\".opentelemetry.proto.collector.trace.v1.ExportTraceServiceRequest.resourceSpans: object expected\");\n message.resourceSpans[i] = $root.opentelemetry.proto.trace.v1.ResourceSpans.fromObject(object.resourceSpans[i]);\n }\n }\n return message;\n };\n /**\n * Creates a plain object from an ExportTraceServiceRequest message. Also converts values to other types if specified.\n * @function toObject\n * @memberof opentelemetry.proto.collector.trace.v1.ExportTraceServiceRequest\n * @static\n * @param {opentelemetry.proto.collector.trace.v1.ExportTraceServiceRequest} message ExportTraceServiceRequest\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n ExportTraceServiceRequest.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n var object = {};\n if (options.arrays || options.defaults)\n object.resourceSpans = [];\n if (message.resourceSpans && message.resourceSpans.length) {\n object.resourceSpans = [];\n for (var j = 0; j < message.resourceSpans.length; ++j)\n object.resourceSpans[j] = $root.opentelemetry.proto.trace.v1.ResourceSpans.toObject(message.resourceSpans[j], options);\n }\n return object;\n };\n /**\n * Converts this ExportTraceServiceRequest to JSON.\n * @function toJSON\n * @memberof opentelemetry.proto.collector.trace.v1.ExportTraceServiceRequest\n * @instance\n * @returns {Object.} JSON object\n */\n ExportTraceServiceRequest.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n /**\n * Gets the default type url for ExportTraceServiceRequest\n * @function getTypeUrl\n * @memberof opentelemetry.proto.collector.trace.v1.ExportTraceServiceRequest\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n ExportTraceServiceRequest.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = \"type.googleapis.com\";\n }\n return typeUrlPrefix + \"/opentelemetry.proto.collector.trace.v1.ExportTraceServiceRequest\";\n };\n return ExportTraceServiceRequest;\n })();\n v1.ExportTraceServiceResponse = (function () {\n /**\n * Properties of an ExportTraceServiceResponse.\n * @memberof opentelemetry.proto.collector.trace.v1\n * @interface IExportTraceServiceResponse\n * @property {opentelemetry.proto.collector.trace.v1.IExportTracePartialSuccess|null} [partialSuccess] ExportTraceServiceResponse partialSuccess\n */\n /**\n * Constructs a new ExportTraceServiceResponse.\n * @memberof opentelemetry.proto.collector.trace.v1\n * @classdesc Represents an ExportTraceServiceResponse.\n * @implements IExportTraceServiceResponse\n * @constructor\n * @param {opentelemetry.proto.collector.trace.v1.IExportTraceServiceResponse=} [properties] Properties to set\n */\n function ExportTraceServiceResponse(properties) {\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n /**\n * ExportTraceServiceResponse partialSuccess.\n * @member {opentelemetry.proto.collector.trace.v1.IExportTracePartialSuccess|null|undefined} partialSuccess\n * @memberof opentelemetry.proto.collector.trace.v1.ExportTraceServiceResponse\n * @instance\n */\n ExportTraceServiceResponse.prototype.partialSuccess = null;\n /**\n * Creates a new ExportTraceServiceResponse instance using the specified properties.\n * @function create\n * @memberof opentelemetry.proto.collector.trace.v1.ExportTraceServiceResponse\n * @static\n * @param {opentelemetry.proto.collector.trace.v1.IExportTraceServiceResponse=} [properties] Properties to set\n * @returns {opentelemetry.proto.collector.trace.v1.ExportTraceServiceResponse} ExportTraceServiceResponse instance\n */\n ExportTraceServiceResponse.create = function create(properties) {\n return new ExportTraceServiceResponse(properties);\n };\n /**\n * Encodes the specified ExportTraceServiceResponse message. Does not implicitly {@link opentelemetry.proto.collector.trace.v1.ExportTraceServiceResponse.verify|verify} messages.\n * @function encode\n * @memberof opentelemetry.proto.collector.trace.v1.ExportTraceServiceResponse\n * @static\n * @param {opentelemetry.proto.collector.trace.v1.IExportTraceServiceResponse} message ExportTraceServiceResponse message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ExportTraceServiceResponse.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.partialSuccess != null && Object.hasOwnProperty.call(message, \"partialSuccess\"))\n $root.opentelemetry.proto.collector.trace.v1.ExportTracePartialSuccess.encode(message.partialSuccess, writer.uint32(/* id 1, wireType 2 =*/ 10).fork()).ldelim();\n return writer;\n };\n /**\n * Encodes the specified ExportTraceServiceResponse message, length delimited. Does not implicitly {@link opentelemetry.proto.collector.trace.v1.ExportTraceServiceResponse.verify|verify} messages.\n * @function encodeDelimited\n * @memberof opentelemetry.proto.collector.trace.v1.ExportTraceServiceResponse\n * @static\n * @param {opentelemetry.proto.collector.trace.v1.IExportTraceServiceResponse} message ExportTraceServiceResponse message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ExportTraceServiceResponse.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n /**\n * Decodes an ExportTraceServiceResponse message from the specified reader or buffer.\n * @function decode\n * @memberof opentelemetry.proto.collector.trace.v1.ExportTraceServiceResponse\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {opentelemetry.proto.collector.trace.v1.ExportTraceServiceResponse} ExportTraceServiceResponse\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ExportTraceServiceResponse.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.opentelemetry.proto.collector.trace.v1.ExportTraceServiceResponse();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n message.partialSuccess = $root.opentelemetry.proto.collector.trace.v1.ExportTracePartialSuccess.decode(reader, reader.uint32());\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n /**\n * Decodes an ExportTraceServiceResponse message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof opentelemetry.proto.collector.trace.v1.ExportTraceServiceResponse\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {opentelemetry.proto.collector.trace.v1.ExportTraceServiceResponse} ExportTraceServiceResponse\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ExportTraceServiceResponse.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n /**\n * Verifies an ExportTraceServiceResponse message.\n * @function verify\n * @memberof opentelemetry.proto.collector.trace.v1.ExportTraceServiceResponse\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n ExportTraceServiceResponse.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.partialSuccess != null && message.hasOwnProperty(\"partialSuccess\")) {\n var error = $root.opentelemetry.proto.collector.trace.v1.ExportTracePartialSuccess.verify(message.partialSuccess);\n if (error)\n return \"partialSuccess.\" + error;\n }\n return null;\n };\n /**\n * Creates an ExportTraceServiceResponse message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof opentelemetry.proto.collector.trace.v1.ExportTraceServiceResponse\n * @static\n * @param {Object.} object Plain object\n * @returns {opentelemetry.proto.collector.trace.v1.ExportTraceServiceResponse} ExportTraceServiceResponse\n */\n ExportTraceServiceResponse.fromObject = function fromObject(object) {\n if (object instanceof $root.opentelemetry.proto.collector.trace.v1.ExportTraceServiceResponse)\n return object;\n var message = new $root.opentelemetry.proto.collector.trace.v1.ExportTraceServiceResponse();\n if (object.partialSuccess != null) {\n if (typeof object.partialSuccess !== \"object\")\n throw TypeError(\".opentelemetry.proto.collector.trace.v1.ExportTraceServiceResponse.partialSuccess: object expected\");\n message.partialSuccess = $root.opentelemetry.proto.collector.trace.v1.ExportTracePartialSuccess.fromObject(object.partialSuccess);\n }\n return message;\n };\n /**\n * Creates a plain object from an ExportTraceServiceResponse message. Also converts values to other types if specified.\n * @function toObject\n * @memberof opentelemetry.proto.collector.trace.v1.ExportTraceServiceResponse\n * @static\n * @param {opentelemetry.proto.collector.trace.v1.ExportTraceServiceResponse} message ExportTraceServiceResponse\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n ExportTraceServiceResponse.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n var object = {};\n if (options.defaults)\n object.partialSuccess = null;\n if (message.partialSuccess != null && message.hasOwnProperty(\"partialSuccess\"))\n object.partialSuccess = $root.opentelemetry.proto.collector.trace.v1.ExportTracePartialSuccess.toObject(message.partialSuccess, options);\n return object;\n };\n /**\n * Converts this ExportTraceServiceResponse to JSON.\n * @function toJSON\n * @memberof opentelemetry.proto.collector.trace.v1.ExportTraceServiceResponse\n * @instance\n * @returns {Object.} JSON object\n */\n ExportTraceServiceResponse.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n /**\n * Gets the default type url for ExportTraceServiceResponse\n * @function getTypeUrl\n * @memberof opentelemetry.proto.collector.trace.v1.ExportTraceServiceResponse\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n ExportTraceServiceResponse.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = \"type.googleapis.com\";\n }\n return typeUrlPrefix + \"/opentelemetry.proto.collector.trace.v1.ExportTraceServiceResponse\";\n };\n return ExportTraceServiceResponse;\n })();\n v1.ExportTracePartialSuccess = (function () {\n /**\n * Properties of an ExportTracePartialSuccess.\n * @memberof opentelemetry.proto.collector.trace.v1\n * @interface IExportTracePartialSuccess\n * @property {number|Long|null} [rejectedSpans] ExportTracePartialSuccess rejectedSpans\n * @property {string|null} [errorMessage] ExportTracePartialSuccess errorMessage\n */\n /**\n * Constructs a new ExportTracePartialSuccess.\n * @memberof opentelemetry.proto.collector.trace.v1\n * @classdesc Represents an ExportTracePartialSuccess.\n * @implements IExportTracePartialSuccess\n * @constructor\n * @param {opentelemetry.proto.collector.trace.v1.IExportTracePartialSuccess=} [properties] Properties to set\n */\n function ExportTracePartialSuccess(properties) {\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n /**\n * ExportTracePartialSuccess rejectedSpans.\n * @member {number|Long|null|undefined} rejectedSpans\n * @memberof opentelemetry.proto.collector.trace.v1.ExportTracePartialSuccess\n * @instance\n */\n ExportTracePartialSuccess.prototype.rejectedSpans = null;\n /**\n * ExportTracePartialSuccess errorMessage.\n * @member {string|null|undefined} errorMessage\n * @memberof opentelemetry.proto.collector.trace.v1.ExportTracePartialSuccess\n * @instance\n */\n ExportTracePartialSuccess.prototype.errorMessage = null;\n /**\n * Creates a new ExportTracePartialSuccess instance using the specified properties.\n * @function create\n * @memberof opentelemetry.proto.collector.trace.v1.ExportTracePartialSuccess\n * @static\n * @param {opentelemetry.proto.collector.trace.v1.IExportTracePartialSuccess=} [properties] Properties to set\n * @returns {opentelemetry.proto.collector.trace.v1.ExportTracePartialSuccess} ExportTracePartialSuccess instance\n */\n ExportTracePartialSuccess.create = function create(properties) {\n return new ExportTracePartialSuccess(properties);\n };\n /**\n * Encodes the specified ExportTracePartialSuccess message. Does not implicitly {@link opentelemetry.proto.collector.trace.v1.ExportTracePartialSuccess.verify|verify} messages.\n * @function encode\n * @memberof opentelemetry.proto.collector.trace.v1.ExportTracePartialSuccess\n * @static\n * @param {opentelemetry.proto.collector.trace.v1.IExportTracePartialSuccess} message ExportTracePartialSuccess message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ExportTracePartialSuccess.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.rejectedSpans != null && Object.hasOwnProperty.call(message, \"rejectedSpans\"))\n writer.uint32(/* id 1, wireType 0 =*/ 8).int64(message.rejectedSpans);\n if (message.errorMessage != null && Object.hasOwnProperty.call(message, \"errorMessage\"))\n writer.uint32(/* id 2, wireType 2 =*/ 18).string(message.errorMessage);\n return writer;\n };\n /**\n * Encodes the specified ExportTracePartialSuccess message, length delimited. Does not implicitly {@link opentelemetry.proto.collector.trace.v1.ExportTracePartialSuccess.verify|verify} messages.\n * @function encodeDelimited\n * @memberof opentelemetry.proto.collector.trace.v1.ExportTracePartialSuccess\n * @static\n * @param {opentelemetry.proto.collector.trace.v1.IExportTracePartialSuccess} message ExportTracePartialSuccess message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ExportTracePartialSuccess.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n /**\n * Decodes an ExportTracePartialSuccess message from the specified reader or buffer.\n * @function decode\n * @memberof opentelemetry.proto.collector.trace.v1.ExportTracePartialSuccess\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {opentelemetry.proto.collector.trace.v1.ExportTracePartialSuccess} ExportTracePartialSuccess\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ExportTracePartialSuccess.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.opentelemetry.proto.collector.trace.v1.ExportTracePartialSuccess();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n message.rejectedSpans = reader.int64();\n break;\n }\n case 2: {\n message.errorMessage = reader.string();\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n /**\n * Decodes an ExportTracePartialSuccess message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof opentelemetry.proto.collector.trace.v1.ExportTracePartialSuccess\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {opentelemetry.proto.collector.trace.v1.ExportTracePartialSuccess} ExportTracePartialSuccess\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ExportTracePartialSuccess.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n /**\n * Verifies an ExportTracePartialSuccess message.\n * @function verify\n * @memberof opentelemetry.proto.collector.trace.v1.ExportTracePartialSuccess\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n ExportTracePartialSuccess.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.rejectedSpans != null && message.hasOwnProperty(\"rejectedSpans\"))\n if (!$util.isInteger(message.rejectedSpans) && !(message.rejectedSpans && $util.isInteger(message.rejectedSpans.low) && $util.isInteger(message.rejectedSpans.high)))\n return \"rejectedSpans: integer|Long expected\";\n if (message.errorMessage != null && message.hasOwnProperty(\"errorMessage\"))\n if (!$util.isString(message.errorMessage))\n return \"errorMessage: string expected\";\n return null;\n };\n /**\n * Creates an ExportTracePartialSuccess message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof opentelemetry.proto.collector.trace.v1.ExportTracePartialSuccess\n * @static\n * @param {Object.} object Plain object\n * @returns {opentelemetry.proto.collector.trace.v1.ExportTracePartialSuccess} ExportTracePartialSuccess\n */\n ExportTracePartialSuccess.fromObject = function fromObject(object) {\n if (object instanceof $root.opentelemetry.proto.collector.trace.v1.ExportTracePartialSuccess)\n return object;\n var message = new $root.opentelemetry.proto.collector.trace.v1.ExportTracePartialSuccess();\n if (object.rejectedSpans != null)\n if ($util.Long)\n (message.rejectedSpans = $util.Long.fromValue(object.rejectedSpans)).unsigned = false;\n else if (typeof object.rejectedSpans === \"string\")\n message.rejectedSpans = parseInt(object.rejectedSpans, 10);\n else if (typeof object.rejectedSpans === \"number\")\n message.rejectedSpans = object.rejectedSpans;\n else if (typeof object.rejectedSpans === \"object\")\n message.rejectedSpans = new $util.LongBits(object.rejectedSpans.low >>> 0, object.rejectedSpans.high >>> 0).toNumber();\n if (object.errorMessage != null)\n message.errorMessage = String(object.errorMessage);\n return message;\n };\n /**\n * Creates a plain object from an ExportTracePartialSuccess message. Also converts values to other types if specified.\n * @function toObject\n * @memberof opentelemetry.proto.collector.trace.v1.ExportTracePartialSuccess\n * @static\n * @param {opentelemetry.proto.collector.trace.v1.ExportTracePartialSuccess} message ExportTracePartialSuccess\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n ExportTracePartialSuccess.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n var object = {};\n if (options.defaults) {\n if ($util.Long) {\n var long = new $util.Long(0, 0, false);\n object.rejectedSpans = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n }\n else\n object.rejectedSpans = options.longs === String ? \"0\" : 0;\n object.errorMessage = \"\";\n }\n if (message.rejectedSpans != null && message.hasOwnProperty(\"rejectedSpans\"))\n if (typeof message.rejectedSpans === \"number\")\n object.rejectedSpans = options.longs === String ? String(message.rejectedSpans) : message.rejectedSpans;\n else\n object.rejectedSpans = options.longs === String ? $util.Long.prototype.toString.call(message.rejectedSpans) : options.longs === Number ? new $util.LongBits(message.rejectedSpans.low >>> 0, message.rejectedSpans.high >>> 0).toNumber() : message.rejectedSpans;\n if (message.errorMessage != null && message.hasOwnProperty(\"errorMessage\"))\n object.errorMessage = message.errorMessage;\n return object;\n };\n /**\n * Converts this ExportTracePartialSuccess to JSON.\n * @function toJSON\n * @memberof opentelemetry.proto.collector.trace.v1.ExportTracePartialSuccess\n * @instance\n * @returns {Object.} JSON object\n */\n ExportTracePartialSuccess.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n /**\n * Gets the default type url for ExportTracePartialSuccess\n * @function getTypeUrl\n * @memberof opentelemetry.proto.collector.trace.v1.ExportTracePartialSuccess\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n ExportTracePartialSuccess.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = \"type.googleapis.com\";\n }\n return typeUrlPrefix + \"/opentelemetry.proto.collector.trace.v1.ExportTracePartialSuccess\";\n };\n return ExportTracePartialSuccess;\n })();\n return v1;\n })();\n return trace;\n })();\n collector.metrics = (function () {\n /**\n * Namespace metrics.\n * @memberof opentelemetry.proto.collector\n * @namespace\n */\n var metrics = {};\n metrics.v1 = (function () {\n /**\n * Namespace v1.\n * @memberof opentelemetry.proto.collector.metrics\n * @namespace\n */\n var v1 = {};\n v1.MetricsService = (function () {\n /**\n * Constructs a new MetricsService service.\n * @memberof opentelemetry.proto.collector.metrics.v1\n * @classdesc Represents a MetricsService\n * @extends $protobuf.rpc.Service\n * @constructor\n * @param {$protobuf.RPCImpl} rpcImpl RPC implementation\n * @param {boolean} [requestDelimited=false] Whether requests are length-delimited\n * @param {boolean} [responseDelimited=false] Whether responses are length-delimited\n */\n function MetricsService(rpcImpl, requestDelimited, responseDelimited) {\n $protobuf.rpc.Service.call(this, rpcImpl, requestDelimited, responseDelimited);\n }\n (MetricsService.prototype = Object.create($protobuf.rpc.Service.prototype)).constructor = MetricsService;\n /**\n * Creates new MetricsService service using the specified rpc implementation.\n * @function create\n * @memberof opentelemetry.proto.collector.metrics.v1.MetricsService\n * @static\n * @param {$protobuf.RPCImpl} rpcImpl RPC implementation\n * @param {boolean} [requestDelimited=false] Whether requests are length-delimited\n * @param {boolean} [responseDelimited=false] Whether responses are length-delimited\n * @returns {MetricsService} RPC service. Useful where requests and/or responses are streamed.\n */\n MetricsService.create = function create(rpcImpl, requestDelimited, responseDelimited) {\n return new this(rpcImpl, requestDelimited, responseDelimited);\n };\n /**\n * Callback as used by {@link opentelemetry.proto.collector.metrics.v1.MetricsService#export_}.\n * @memberof opentelemetry.proto.collector.metrics.v1.MetricsService\n * @typedef ExportCallback\n * @type {function}\n * @param {Error|null} error Error, if any\n * @param {opentelemetry.proto.collector.metrics.v1.ExportMetricsServiceResponse} [response] ExportMetricsServiceResponse\n */\n /**\n * Calls Export.\n * @function export\n * @memberof opentelemetry.proto.collector.metrics.v1.MetricsService\n * @instance\n * @param {opentelemetry.proto.collector.metrics.v1.IExportMetricsServiceRequest} request ExportMetricsServiceRequest message or plain object\n * @param {opentelemetry.proto.collector.metrics.v1.MetricsService.ExportCallback} callback Node-style callback called with the error, if any, and ExportMetricsServiceResponse\n * @returns {undefined}\n * @variation 1\n */\n Object.defineProperty(MetricsService.prototype[\"export\"] = function export_(request, callback) {\n return this.rpcCall(export_, $root.opentelemetry.proto.collector.metrics.v1.ExportMetricsServiceRequest, $root.opentelemetry.proto.collector.metrics.v1.ExportMetricsServiceResponse, request, callback);\n }, \"name\", { value: \"Export\" });\n /**\n * Calls Export.\n * @function export\n * @memberof opentelemetry.proto.collector.metrics.v1.MetricsService\n * @instance\n * @param {opentelemetry.proto.collector.metrics.v1.IExportMetricsServiceRequest} request ExportMetricsServiceRequest message or plain object\n * @returns {Promise} Promise\n * @variation 2\n */\n return MetricsService;\n })();\n v1.ExportMetricsServiceRequest = (function () {\n /**\n * Properties of an ExportMetricsServiceRequest.\n * @memberof opentelemetry.proto.collector.metrics.v1\n * @interface IExportMetricsServiceRequest\n * @property {Array.|null} [resourceMetrics] ExportMetricsServiceRequest resourceMetrics\n */\n /**\n * Constructs a new ExportMetricsServiceRequest.\n * @memberof opentelemetry.proto.collector.metrics.v1\n * @classdesc Represents an ExportMetricsServiceRequest.\n * @implements IExportMetricsServiceRequest\n * @constructor\n * @param {opentelemetry.proto.collector.metrics.v1.IExportMetricsServiceRequest=} [properties] Properties to set\n */\n function ExportMetricsServiceRequest(properties) {\n this.resourceMetrics = [];\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n /**\n * ExportMetricsServiceRequest resourceMetrics.\n * @member {Array.} resourceMetrics\n * @memberof opentelemetry.proto.collector.metrics.v1.ExportMetricsServiceRequest\n * @instance\n */\n ExportMetricsServiceRequest.prototype.resourceMetrics = $util.emptyArray;\n /**\n * Creates a new ExportMetricsServiceRequest instance using the specified properties.\n * @function create\n * @memberof opentelemetry.proto.collector.metrics.v1.ExportMetricsServiceRequest\n * @static\n * @param {opentelemetry.proto.collector.metrics.v1.IExportMetricsServiceRequest=} [properties] Properties to set\n * @returns {opentelemetry.proto.collector.metrics.v1.ExportMetricsServiceRequest} ExportMetricsServiceRequest instance\n */\n ExportMetricsServiceRequest.create = function create(properties) {\n return new ExportMetricsServiceRequest(properties);\n };\n /**\n * Encodes the specified ExportMetricsServiceRequest message. Does not implicitly {@link opentelemetry.proto.collector.metrics.v1.ExportMetricsServiceRequest.verify|verify} messages.\n * @function encode\n * @memberof opentelemetry.proto.collector.metrics.v1.ExportMetricsServiceRequest\n * @static\n * @param {opentelemetry.proto.collector.metrics.v1.IExportMetricsServiceRequest} message ExportMetricsServiceRequest message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ExportMetricsServiceRequest.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.resourceMetrics != null && message.resourceMetrics.length)\n for (var i = 0; i < message.resourceMetrics.length; ++i)\n $root.opentelemetry.proto.metrics.v1.ResourceMetrics.encode(message.resourceMetrics[i], writer.uint32(/* id 1, wireType 2 =*/ 10).fork()).ldelim();\n return writer;\n };\n /**\n * Encodes the specified ExportMetricsServiceRequest message, length delimited. Does not implicitly {@link opentelemetry.proto.collector.metrics.v1.ExportMetricsServiceRequest.verify|verify} messages.\n * @function encodeDelimited\n * @memberof opentelemetry.proto.collector.metrics.v1.ExportMetricsServiceRequest\n * @static\n * @param {opentelemetry.proto.collector.metrics.v1.IExportMetricsServiceRequest} message ExportMetricsServiceRequest message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ExportMetricsServiceRequest.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n /**\n * Decodes an ExportMetricsServiceRequest message from the specified reader or buffer.\n * @function decode\n * @memberof opentelemetry.proto.collector.metrics.v1.ExportMetricsServiceRequest\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {opentelemetry.proto.collector.metrics.v1.ExportMetricsServiceRequest} ExportMetricsServiceRequest\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ExportMetricsServiceRequest.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.opentelemetry.proto.collector.metrics.v1.ExportMetricsServiceRequest();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (!(message.resourceMetrics && message.resourceMetrics.length))\n message.resourceMetrics = [];\n message.resourceMetrics.push($root.opentelemetry.proto.metrics.v1.ResourceMetrics.decode(reader, reader.uint32()));\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n /**\n * Decodes an ExportMetricsServiceRequest message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof opentelemetry.proto.collector.metrics.v1.ExportMetricsServiceRequest\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {opentelemetry.proto.collector.metrics.v1.ExportMetricsServiceRequest} ExportMetricsServiceRequest\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ExportMetricsServiceRequest.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n /**\n * Verifies an ExportMetricsServiceRequest message.\n * @function verify\n * @memberof opentelemetry.proto.collector.metrics.v1.ExportMetricsServiceRequest\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n ExportMetricsServiceRequest.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.resourceMetrics != null && message.hasOwnProperty(\"resourceMetrics\")) {\n if (!Array.isArray(message.resourceMetrics))\n return \"resourceMetrics: array expected\";\n for (var i = 0; i < message.resourceMetrics.length; ++i) {\n var error = $root.opentelemetry.proto.metrics.v1.ResourceMetrics.verify(message.resourceMetrics[i]);\n if (error)\n return \"resourceMetrics.\" + error;\n }\n }\n return null;\n };\n /**\n * Creates an ExportMetricsServiceRequest message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof opentelemetry.proto.collector.metrics.v1.ExportMetricsServiceRequest\n * @static\n * @param {Object.} object Plain object\n * @returns {opentelemetry.proto.collector.metrics.v1.ExportMetricsServiceRequest} ExportMetricsServiceRequest\n */\n ExportMetricsServiceRequest.fromObject = function fromObject(object) {\n if (object instanceof $root.opentelemetry.proto.collector.metrics.v1.ExportMetricsServiceRequest)\n return object;\n var message = new $root.opentelemetry.proto.collector.metrics.v1.ExportMetricsServiceRequest();\n if (object.resourceMetrics) {\n if (!Array.isArray(object.resourceMetrics))\n throw TypeError(\".opentelemetry.proto.collector.metrics.v1.ExportMetricsServiceRequest.resourceMetrics: array expected\");\n message.resourceMetrics = [];\n for (var i = 0; i < object.resourceMetrics.length; ++i) {\n if (typeof object.resourceMetrics[i] !== \"object\")\n throw TypeError(\".opentelemetry.proto.collector.metrics.v1.ExportMetricsServiceRequest.resourceMetrics: object expected\");\n message.resourceMetrics[i] = $root.opentelemetry.proto.metrics.v1.ResourceMetrics.fromObject(object.resourceMetrics[i]);\n }\n }\n return message;\n };\n /**\n * Creates a plain object from an ExportMetricsServiceRequest message. Also converts values to other types if specified.\n * @function toObject\n * @memberof opentelemetry.proto.collector.metrics.v1.ExportMetricsServiceRequest\n * @static\n * @param {opentelemetry.proto.collector.metrics.v1.ExportMetricsServiceRequest} message ExportMetricsServiceRequest\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n ExportMetricsServiceRequest.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n var object = {};\n if (options.arrays || options.defaults)\n object.resourceMetrics = [];\n if (message.resourceMetrics && message.resourceMetrics.length) {\n object.resourceMetrics = [];\n for (var j = 0; j < message.resourceMetrics.length; ++j)\n object.resourceMetrics[j] = $root.opentelemetry.proto.metrics.v1.ResourceMetrics.toObject(message.resourceMetrics[j], options);\n }\n return object;\n };\n /**\n * Converts this ExportMetricsServiceRequest to JSON.\n * @function toJSON\n * @memberof opentelemetry.proto.collector.metrics.v1.ExportMetricsServiceRequest\n * @instance\n * @returns {Object.} JSON object\n */\n ExportMetricsServiceRequest.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n /**\n * Gets the default type url for ExportMetricsServiceRequest\n * @function getTypeUrl\n * @memberof opentelemetry.proto.collector.metrics.v1.ExportMetricsServiceRequest\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n ExportMetricsServiceRequest.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = \"type.googleapis.com\";\n }\n return typeUrlPrefix + \"/opentelemetry.proto.collector.metrics.v1.ExportMetricsServiceRequest\";\n };\n return ExportMetricsServiceRequest;\n })();\n v1.ExportMetricsServiceResponse = (function () {\n /**\n * Properties of an ExportMetricsServiceResponse.\n * @memberof opentelemetry.proto.collector.metrics.v1\n * @interface IExportMetricsServiceResponse\n * @property {opentelemetry.proto.collector.metrics.v1.IExportMetricsPartialSuccess|null} [partialSuccess] ExportMetricsServiceResponse partialSuccess\n */\n /**\n * Constructs a new ExportMetricsServiceResponse.\n * @memberof opentelemetry.proto.collector.metrics.v1\n * @classdesc Represents an ExportMetricsServiceResponse.\n * @implements IExportMetricsServiceResponse\n * @constructor\n * @param {opentelemetry.proto.collector.metrics.v1.IExportMetricsServiceResponse=} [properties] Properties to set\n */\n function ExportMetricsServiceResponse(properties) {\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n /**\n * ExportMetricsServiceResponse partialSuccess.\n * @member {opentelemetry.proto.collector.metrics.v1.IExportMetricsPartialSuccess|null|undefined} partialSuccess\n * @memberof opentelemetry.proto.collector.metrics.v1.ExportMetricsServiceResponse\n * @instance\n */\n ExportMetricsServiceResponse.prototype.partialSuccess = null;\n /**\n * Creates a new ExportMetricsServiceResponse instance using the specified properties.\n * @function create\n * @memberof opentelemetry.proto.collector.metrics.v1.ExportMetricsServiceResponse\n * @static\n * @param {opentelemetry.proto.collector.metrics.v1.IExportMetricsServiceResponse=} [properties] Properties to set\n * @returns {opentelemetry.proto.collector.metrics.v1.ExportMetricsServiceResponse} ExportMetricsServiceResponse instance\n */\n ExportMetricsServiceResponse.create = function create(properties) {\n return new ExportMetricsServiceResponse(properties);\n };\n /**\n * Encodes the specified ExportMetricsServiceResponse message. Does not implicitly {@link opentelemetry.proto.collector.metrics.v1.ExportMetricsServiceResponse.verify|verify} messages.\n * @function encode\n * @memberof opentelemetry.proto.collector.metrics.v1.ExportMetricsServiceResponse\n * @static\n * @param {opentelemetry.proto.collector.metrics.v1.IExportMetricsServiceResponse} message ExportMetricsServiceResponse message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ExportMetricsServiceResponse.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.partialSuccess != null && Object.hasOwnProperty.call(message, \"partialSuccess\"))\n $root.opentelemetry.proto.collector.metrics.v1.ExportMetricsPartialSuccess.encode(message.partialSuccess, writer.uint32(/* id 1, wireType 2 =*/ 10).fork()).ldelim();\n return writer;\n };\n /**\n * Encodes the specified ExportMetricsServiceResponse message, length delimited. Does not implicitly {@link opentelemetry.proto.collector.metrics.v1.ExportMetricsServiceResponse.verify|verify} messages.\n * @function encodeDelimited\n * @memberof opentelemetry.proto.collector.metrics.v1.ExportMetricsServiceResponse\n * @static\n * @param {opentelemetry.proto.collector.metrics.v1.IExportMetricsServiceResponse} message ExportMetricsServiceResponse message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ExportMetricsServiceResponse.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n /**\n * Decodes an ExportMetricsServiceResponse message from the specified reader or buffer.\n * @function decode\n * @memberof opentelemetry.proto.collector.metrics.v1.ExportMetricsServiceResponse\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {opentelemetry.proto.collector.metrics.v1.ExportMetricsServiceResponse} ExportMetricsServiceResponse\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ExportMetricsServiceResponse.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.opentelemetry.proto.collector.metrics.v1.ExportMetricsServiceResponse();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n message.partialSuccess = $root.opentelemetry.proto.collector.metrics.v1.ExportMetricsPartialSuccess.decode(reader, reader.uint32());\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n /**\n * Decodes an ExportMetricsServiceResponse message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof opentelemetry.proto.collector.metrics.v1.ExportMetricsServiceResponse\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {opentelemetry.proto.collector.metrics.v1.ExportMetricsServiceResponse} ExportMetricsServiceResponse\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ExportMetricsServiceResponse.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n /**\n * Verifies an ExportMetricsServiceResponse message.\n * @function verify\n * @memberof opentelemetry.proto.collector.metrics.v1.ExportMetricsServiceResponse\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n ExportMetricsServiceResponse.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.partialSuccess != null && message.hasOwnProperty(\"partialSuccess\")) {\n var error = $root.opentelemetry.proto.collector.metrics.v1.ExportMetricsPartialSuccess.verify(message.partialSuccess);\n if (error)\n return \"partialSuccess.\" + error;\n }\n return null;\n };\n /**\n * Creates an ExportMetricsServiceResponse message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof opentelemetry.proto.collector.metrics.v1.ExportMetricsServiceResponse\n * @static\n * @param {Object.} object Plain object\n * @returns {opentelemetry.proto.collector.metrics.v1.ExportMetricsServiceResponse} ExportMetricsServiceResponse\n */\n ExportMetricsServiceResponse.fromObject = function fromObject(object) {\n if (object instanceof $root.opentelemetry.proto.collector.metrics.v1.ExportMetricsServiceResponse)\n return object;\n var message = new $root.opentelemetry.proto.collector.metrics.v1.ExportMetricsServiceResponse();\n if (object.partialSuccess != null) {\n if (typeof object.partialSuccess !== \"object\")\n throw TypeError(\".opentelemetry.proto.collector.metrics.v1.ExportMetricsServiceResponse.partialSuccess: object expected\");\n message.partialSuccess = $root.opentelemetry.proto.collector.metrics.v1.ExportMetricsPartialSuccess.fromObject(object.partialSuccess);\n }\n return message;\n };\n /**\n * Creates a plain object from an ExportMetricsServiceResponse message. Also converts values to other types if specified.\n * @function toObject\n * @memberof opentelemetry.proto.collector.metrics.v1.ExportMetricsServiceResponse\n * @static\n * @param {opentelemetry.proto.collector.metrics.v1.ExportMetricsServiceResponse} message ExportMetricsServiceResponse\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n ExportMetricsServiceResponse.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n var object = {};\n if (options.defaults)\n object.partialSuccess = null;\n if (message.partialSuccess != null && message.hasOwnProperty(\"partialSuccess\"))\n object.partialSuccess = $root.opentelemetry.proto.collector.metrics.v1.ExportMetricsPartialSuccess.toObject(message.partialSuccess, options);\n return object;\n };\n /**\n * Converts this ExportMetricsServiceResponse to JSON.\n * @function toJSON\n * @memberof opentelemetry.proto.collector.metrics.v1.ExportMetricsServiceResponse\n * @instance\n * @returns {Object.} JSON object\n */\n ExportMetricsServiceResponse.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n /**\n * Gets the default type url for ExportMetricsServiceResponse\n * @function getTypeUrl\n * @memberof opentelemetry.proto.collector.metrics.v1.ExportMetricsServiceResponse\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n ExportMetricsServiceResponse.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = \"type.googleapis.com\";\n }\n return typeUrlPrefix + \"/opentelemetry.proto.collector.metrics.v1.ExportMetricsServiceResponse\";\n };\n return ExportMetricsServiceResponse;\n })();\n v1.ExportMetricsPartialSuccess = (function () {\n /**\n * Properties of an ExportMetricsPartialSuccess.\n * @memberof opentelemetry.proto.collector.metrics.v1\n * @interface IExportMetricsPartialSuccess\n * @property {number|Long|null} [rejectedDataPoints] ExportMetricsPartialSuccess rejectedDataPoints\n * @property {string|null} [errorMessage] ExportMetricsPartialSuccess errorMessage\n */\n /**\n * Constructs a new ExportMetricsPartialSuccess.\n * @memberof opentelemetry.proto.collector.metrics.v1\n * @classdesc Represents an ExportMetricsPartialSuccess.\n * @implements IExportMetricsPartialSuccess\n * @constructor\n * @param {opentelemetry.proto.collector.metrics.v1.IExportMetricsPartialSuccess=} [properties] Properties to set\n */\n function ExportMetricsPartialSuccess(properties) {\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n /**\n * ExportMetricsPartialSuccess rejectedDataPoints.\n * @member {number|Long|null|undefined} rejectedDataPoints\n * @memberof opentelemetry.proto.collector.metrics.v1.ExportMetricsPartialSuccess\n * @instance\n */\n ExportMetricsPartialSuccess.prototype.rejectedDataPoints = null;\n /**\n * ExportMetricsPartialSuccess errorMessage.\n * @member {string|null|undefined} errorMessage\n * @memberof opentelemetry.proto.collector.metrics.v1.ExportMetricsPartialSuccess\n * @instance\n */\n ExportMetricsPartialSuccess.prototype.errorMessage = null;\n /**\n * Creates a new ExportMetricsPartialSuccess instance using the specified properties.\n * @function create\n * @memberof opentelemetry.proto.collector.metrics.v1.ExportMetricsPartialSuccess\n * @static\n * @param {opentelemetry.proto.collector.metrics.v1.IExportMetricsPartialSuccess=} [properties] Properties to set\n * @returns {opentelemetry.proto.collector.metrics.v1.ExportMetricsPartialSuccess} ExportMetricsPartialSuccess instance\n */\n ExportMetricsPartialSuccess.create = function create(properties) {\n return new ExportMetricsPartialSuccess(properties);\n };\n /**\n * Encodes the specified ExportMetricsPartialSuccess message. Does not implicitly {@link opentelemetry.proto.collector.metrics.v1.ExportMetricsPartialSuccess.verify|verify} messages.\n * @function encode\n * @memberof opentelemetry.proto.collector.metrics.v1.ExportMetricsPartialSuccess\n * @static\n * @param {opentelemetry.proto.collector.metrics.v1.IExportMetricsPartialSuccess} message ExportMetricsPartialSuccess message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ExportMetricsPartialSuccess.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.rejectedDataPoints != null && Object.hasOwnProperty.call(message, \"rejectedDataPoints\"))\n writer.uint32(/* id 1, wireType 0 =*/ 8).int64(message.rejectedDataPoints);\n if (message.errorMessage != null && Object.hasOwnProperty.call(message, \"errorMessage\"))\n writer.uint32(/* id 2, wireType 2 =*/ 18).string(message.errorMessage);\n return writer;\n };\n /**\n * Encodes the specified ExportMetricsPartialSuccess message, length delimited. Does not implicitly {@link opentelemetry.proto.collector.metrics.v1.ExportMetricsPartialSuccess.verify|verify} messages.\n * @function encodeDelimited\n * @memberof opentelemetry.proto.collector.metrics.v1.ExportMetricsPartialSuccess\n * @static\n * @param {opentelemetry.proto.collector.metrics.v1.IExportMetricsPartialSuccess} message ExportMetricsPartialSuccess message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ExportMetricsPartialSuccess.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n /**\n * Decodes an ExportMetricsPartialSuccess message from the specified reader or buffer.\n * @function decode\n * @memberof opentelemetry.proto.collector.metrics.v1.ExportMetricsPartialSuccess\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {opentelemetry.proto.collector.metrics.v1.ExportMetricsPartialSuccess} ExportMetricsPartialSuccess\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ExportMetricsPartialSuccess.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.opentelemetry.proto.collector.metrics.v1.ExportMetricsPartialSuccess();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n message.rejectedDataPoints = reader.int64();\n break;\n }\n case 2: {\n message.errorMessage = reader.string();\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n /**\n * Decodes an ExportMetricsPartialSuccess message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof opentelemetry.proto.collector.metrics.v1.ExportMetricsPartialSuccess\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {opentelemetry.proto.collector.metrics.v1.ExportMetricsPartialSuccess} ExportMetricsPartialSuccess\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ExportMetricsPartialSuccess.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n /**\n * Verifies an ExportMetricsPartialSuccess message.\n * @function verify\n * @memberof opentelemetry.proto.collector.metrics.v1.ExportMetricsPartialSuccess\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n ExportMetricsPartialSuccess.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.rejectedDataPoints != null && message.hasOwnProperty(\"rejectedDataPoints\"))\n if (!$util.isInteger(message.rejectedDataPoints) && !(message.rejectedDataPoints && $util.isInteger(message.rejectedDataPoints.low) && $util.isInteger(message.rejectedDataPoints.high)))\n return \"rejectedDataPoints: integer|Long expected\";\n if (message.errorMessage != null && message.hasOwnProperty(\"errorMessage\"))\n if (!$util.isString(message.errorMessage))\n return \"errorMessage: string expected\";\n return null;\n };\n /**\n * Creates an ExportMetricsPartialSuccess message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof opentelemetry.proto.collector.metrics.v1.ExportMetricsPartialSuccess\n * @static\n * @param {Object.} object Plain object\n * @returns {opentelemetry.proto.collector.metrics.v1.ExportMetricsPartialSuccess} ExportMetricsPartialSuccess\n */\n ExportMetricsPartialSuccess.fromObject = function fromObject(object) {\n if (object instanceof $root.opentelemetry.proto.collector.metrics.v1.ExportMetricsPartialSuccess)\n return object;\n var message = new $root.opentelemetry.proto.collector.metrics.v1.ExportMetricsPartialSuccess();\n if (object.rejectedDataPoints != null)\n if ($util.Long)\n (message.rejectedDataPoints = $util.Long.fromValue(object.rejectedDataPoints)).unsigned = false;\n else if (typeof object.rejectedDataPoints === \"string\")\n message.rejectedDataPoints = parseInt(object.rejectedDataPoints, 10);\n else if (typeof object.rejectedDataPoints === \"number\")\n message.rejectedDataPoints = object.rejectedDataPoints;\n else if (typeof object.rejectedDataPoints === \"object\")\n message.rejectedDataPoints = new $util.LongBits(object.rejectedDataPoints.low >>> 0, object.rejectedDataPoints.high >>> 0).toNumber();\n if (object.errorMessage != null)\n message.errorMessage = String(object.errorMessage);\n return message;\n };\n /**\n * Creates a plain object from an ExportMetricsPartialSuccess message. Also converts values to other types if specified.\n * @function toObject\n * @memberof opentelemetry.proto.collector.metrics.v1.ExportMetricsPartialSuccess\n * @static\n * @param {opentelemetry.proto.collector.metrics.v1.ExportMetricsPartialSuccess} message ExportMetricsPartialSuccess\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n ExportMetricsPartialSuccess.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n var object = {};\n if (options.defaults) {\n if ($util.Long) {\n var long = new $util.Long(0, 0, false);\n object.rejectedDataPoints = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n }\n else\n object.rejectedDataPoints = options.longs === String ? \"0\" : 0;\n object.errorMessage = \"\";\n }\n if (message.rejectedDataPoints != null && message.hasOwnProperty(\"rejectedDataPoints\"))\n if (typeof message.rejectedDataPoints === \"number\")\n object.rejectedDataPoints = options.longs === String ? String(message.rejectedDataPoints) : message.rejectedDataPoints;\n else\n object.rejectedDataPoints = options.longs === String ? $util.Long.prototype.toString.call(message.rejectedDataPoints) : options.longs === Number ? new $util.LongBits(message.rejectedDataPoints.low >>> 0, message.rejectedDataPoints.high >>> 0).toNumber() : message.rejectedDataPoints;\n if (message.errorMessage != null && message.hasOwnProperty(\"errorMessage\"))\n object.errorMessage = message.errorMessage;\n return object;\n };\n /**\n * Converts this ExportMetricsPartialSuccess to JSON.\n * @function toJSON\n * @memberof opentelemetry.proto.collector.metrics.v1.ExportMetricsPartialSuccess\n * @instance\n * @returns {Object.} JSON object\n */\n ExportMetricsPartialSuccess.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n /**\n * Gets the default type url for ExportMetricsPartialSuccess\n * @function getTypeUrl\n * @memberof opentelemetry.proto.collector.metrics.v1.ExportMetricsPartialSuccess\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n ExportMetricsPartialSuccess.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = \"type.googleapis.com\";\n }\n return typeUrlPrefix + \"/opentelemetry.proto.collector.metrics.v1.ExportMetricsPartialSuccess\";\n };\n return ExportMetricsPartialSuccess;\n })();\n return v1;\n })();\n return metrics;\n })();\n collector.logs = (function () {\n /**\n * Namespace logs.\n * @memberof opentelemetry.proto.collector\n * @namespace\n */\n var logs = {};\n logs.v1 = (function () {\n /**\n * Namespace v1.\n * @memberof opentelemetry.proto.collector.logs\n * @namespace\n */\n var v1 = {};\n v1.LogsService = (function () {\n /**\n * Constructs a new LogsService service.\n * @memberof opentelemetry.proto.collector.logs.v1\n * @classdesc Represents a LogsService\n * @extends $protobuf.rpc.Service\n * @constructor\n * @param {$protobuf.RPCImpl} rpcImpl RPC implementation\n * @param {boolean} [requestDelimited=false] Whether requests are length-delimited\n * @param {boolean} [responseDelimited=false] Whether responses are length-delimited\n */\n function LogsService(rpcImpl, requestDelimited, responseDelimited) {\n $protobuf.rpc.Service.call(this, rpcImpl, requestDelimited, responseDelimited);\n }\n (LogsService.prototype = Object.create($protobuf.rpc.Service.prototype)).constructor = LogsService;\n /**\n * Creates new LogsService service using the specified rpc implementation.\n * @function create\n * @memberof opentelemetry.proto.collector.logs.v1.LogsService\n * @static\n * @param {$protobuf.RPCImpl} rpcImpl RPC implementation\n * @param {boolean} [requestDelimited=false] Whether requests are length-delimited\n * @param {boolean} [responseDelimited=false] Whether responses are length-delimited\n * @returns {LogsService} RPC service. Useful where requests and/or responses are streamed.\n */\n LogsService.create = function create(rpcImpl, requestDelimited, responseDelimited) {\n return new this(rpcImpl, requestDelimited, responseDelimited);\n };\n /**\n * Callback as used by {@link opentelemetry.proto.collector.logs.v1.LogsService#export_}.\n * @memberof opentelemetry.proto.collector.logs.v1.LogsService\n * @typedef ExportCallback\n * @type {function}\n * @param {Error|null} error Error, if any\n * @param {opentelemetry.proto.collector.logs.v1.ExportLogsServiceResponse} [response] ExportLogsServiceResponse\n */\n /**\n * Calls Export.\n * @function export\n * @memberof opentelemetry.proto.collector.logs.v1.LogsService\n * @instance\n * @param {opentelemetry.proto.collector.logs.v1.IExportLogsServiceRequest} request ExportLogsServiceRequest message or plain object\n * @param {opentelemetry.proto.collector.logs.v1.LogsService.ExportCallback} callback Node-style callback called with the error, if any, and ExportLogsServiceResponse\n * @returns {undefined}\n * @variation 1\n */\n Object.defineProperty(LogsService.prototype[\"export\"] = function export_(request, callback) {\n return this.rpcCall(export_, $root.opentelemetry.proto.collector.logs.v1.ExportLogsServiceRequest, $root.opentelemetry.proto.collector.logs.v1.ExportLogsServiceResponse, request, callback);\n }, \"name\", { value: \"Export\" });\n /**\n * Calls Export.\n * @function export\n * @memberof opentelemetry.proto.collector.logs.v1.LogsService\n * @instance\n * @param {opentelemetry.proto.collector.logs.v1.IExportLogsServiceRequest} request ExportLogsServiceRequest message or plain object\n * @returns {Promise} Promise\n * @variation 2\n */\n return LogsService;\n })();\n v1.ExportLogsServiceRequest = (function () {\n /**\n * Properties of an ExportLogsServiceRequest.\n * @memberof opentelemetry.proto.collector.logs.v1\n * @interface IExportLogsServiceRequest\n * @property {Array.|null} [resourceLogs] ExportLogsServiceRequest resourceLogs\n */\n /**\n * Constructs a new ExportLogsServiceRequest.\n * @memberof opentelemetry.proto.collector.logs.v1\n * @classdesc Represents an ExportLogsServiceRequest.\n * @implements IExportLogsServiceRequest\n * @constructor\n * @param {opentelemetry.proto.collector.logs.v1.IExportLogsServiceRequest=} [properties] Properties to set\n */\n function ExportLogsServiceRequest(properties) {\n this.resourceLogs = [];\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n /**\n * ExportLogsServiceRequest resourceLogs.\n * @member {Array.} resourceLogs\n * @memberof opentelemetry.proto.collector.logs.v1.ExportLogsServiceRequest\n * @instance\n */\n ExportLogsServiceRequest.prototype.resourceLogs = $util.emptyArray;\n /**\n * Creates a new ExportLogsServiceRequest instance using the specified properties.\n * @function create\n * @memberof opentelemetry.proto.collector.logs.v1.ExportLogsServiceRequest\n * @static\n * @param {opentelemetry.proto.collector.logs.v1.IExportLogsServiceRequest=} [properties] Properties to set\n * @returns {opentelemetry.proto.collector.logs.v1.ExportLogsServiceRequest} ExportLogsServiceRequest instance\n */\n ExportLogsServiceRequest.create = function create(properties) {\n return new ExportLogsServiceRequest(properties);\n };\n /**\n * Encodes the specified ExportLogsServiceRequest message. Does not implicitly {@link opentelemetry.proto.collector.logs.v1.ExportLogsServiceRequest.verify|verify} messages.\n * @function encode\n * @memberof opentelemetry.proto.collector.logs.v1.ExportLogsServiceRequest\n * @static\n * @param {opentelemetry.proto.collector.logs.v1.IExportLogsServiceRequest} message ExportLogsServiceRequest message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ExportLogsServiceRequest.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.resourceLogs != null && message.resourceLogs.length)\n for (var i = 0; i < message.resourceLogs.length; ++i)\n $root.opentelemetry.proto.logs.v1.ResourceLogs.encode(message.resourceLogs[i], writer.uint32(/* id 1, wireType 2 =*/ 10).fork()).ldelim();\n return writer;\n };\n /**\n * Encodes the specified ExportLogsServiceRequest message, length delimited. Does not implicitly {@link opentelemetry.proto.collector.logs.v1.ExportLogsServiceRequest.verify|verify} messages.\n * @function encodeDelimited\n * @memberof opentelemetry.proto.collector.logs.v1.ExportLogsServiceRequest\n * @static\n * @param {opentelemetry.proto.collector.logs.v1.IExportLogsServiceRequest} message ExportLogsServiceRequest message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ExportLogsServiceRequest.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n /**\n * Decodes an ExportLogsServiceRequest message from the specified reader or buffer.\n * @function decode\n * @memberof opentelemetry.proto.collector.logs.v1.ExportLogsServiceRequest\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {opentelemetry.proto.collector.logs.v1.ExportLogsServiceRequest} ExportLogsServiceRequest\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ExportLogsServiceRequest.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.opentelemetry.proto.collector.logs.v1.ExportLogsServiceRequest();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (!(message.resourceLogs && message.resourceLogs.length))\n message.resourceLogs = [];\n message.resourceLogs.push($root.opentelemetry.proto.logs.v1.ResourceLogs.decode(reader, reader.uint32()));\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n /**\n * Decodes an ExportLogsServiceRequest message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof opentelemetry.proto.collector.logs.v1.ExportLogsServiceRequest\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {opentelemetry.proto.collector.logs.v1.ExportLogsServiceRequest} ExportLogsServiceRequest\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ExportLogsServiceRequest.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n /**\n * Verifies an ExportLogsServiceRequest message.\n * @function verify\n * @memberof opentelemetry.proto.collector.logs.v1.ExportLogsServiceRequest\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n ExportLogsServiceRequest.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.resourceLogs != null && message.hasOwnProperty(\"resourceLogs\")) {\n if (!Array.isArray(message.resourceLogs))\n return \"resourceLogs: array expected\";\n for (var i = 0; i < message.resourceLogs.length; ++i) {\n var error = $root.opentelemetry.proto.logs.v1.ResourceLogs.verify(message.resourceLogs[i]);\n if (error)\n return \"resourceLogs.\" + error;\n }\n }\n return null;\n };\n /**\n * Creates an ExportLogsServiceRequest message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof opentelemetry.proto.collector.logs.v1.ExportLogsServiceRequest\n * @static\n * @param {Object.} object Plain object\n * @returns {opentelemetry.proto.collector.logs.v1.ExportLogsServiceRequest} ExportLogsServiceRequest\n */\n ExportLogsServiceRequest.fromObject = function fromObject(object) {\n if (object instanceof $root.opentelemetry.proto.collector.logs.v1.ExportLogsServiceRequest)\n return object;\n var message = new $root.opentelemetry.proto.collector.logs.v1.ExportLogsServiceRequest();\n if (object.resourceLogs) {\n if (!Array.isArray(object.resourceLogs))\n throw TypeError(\".opentelemetry.proto.collector.logs.v1.ExportLogsServiceRequest.resourceLogs: array expected\");\n message.resourceLogs = [];\n for (var i = 0; i < object.resourceLogs.length; ++i) {\n if (typeof object.resourceLogs[i] !== \"object\")\n throw TypeError(\".opentelemetry.proto.collector.logs.v1.ExportLogsServiceRequest.resourceLogs: object expected\");\n message.resourceLogs[i] = $root.opentelemetry.proto.logs.v1.ResourceLogs.fromObject(object.resourceLogs[i]);\n }\n }\n return message;\n };\n /**\n * Creates a plain object from an ExportLogsServiceRequest message. Also converts values to other types if specified.\n * @function toObject\n * @memberof opentelemetry.proto.collector.logs.v1.ExportLogsServiceRequest\n * @static\n * @param {opentelemetry.proto.collector.logs.v1.ExportLogsServiceRequest} message ExportLogsServiceRequest\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n ExportLogsServiceRequest.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n var object = {};\n if (options.arrays || options.defaults)\n object.resourceLogs = [];\n if (message.resourceLogs && message.resourceLogs.length) {\n object.resourceLogs = [];\n for (var j = 0; j < message.resourceLogs.length; ++j)\n object.resourceLogs[j] = $root.opentelemetry.proto.logs.v1.ResourceLogs.toObject(message.resourceLogs[j], options);\n }\n return object;\n };\n /**\n * Converts this ExportLogsServiceRequest to JSON.\n * @function toJSON\n * @memberof opentelemetry.proto.collector.logs.v1.ExportLogsServiceRequest\n * @instance\n * @returns {Object.} JSON object\n */\n ExportLogsServiceRequest.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n /**\n * Gets the default type url for ExportLogsServiceRequest\n * @function getTypeUrl\n * @memberof opentelemetry.proto.collector.logs.v1.ExportLogsServiceRequest\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n ExportLogsServiceRequest.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = \"type.googleapis.com\";\n }\n return typeUrlPrefix + \"/opentelemetry.proto.collector.logs.v1.ExportLogsServiceRequest\";\n };\n return ExportLogsServiceRequest;\n })();\n v1.ExportLogsServiceResponse = (function () {\n /**\n * Properties of an ExportLogsServiceResponse.\n * @memberof opentelemetry.proto.collector.logs.v1\n * @interface IExportLogsServiceResponse\n * @property {opentelemetry.proto.collector.logs.v1.IExportLogsPartialSuccess|null} [partialSuccess] ExportLogsServiceResponse partialSuccess\n */\n /**\n * Constructs a new ExportLogsServiceResponse.\n * @memberof opentelemetry.proto.collector.logs.v1\n * @classdesc Represents an ExportLogsServiceResponse.\n * @implements IExportLogsServiceResponse\n * @constructor\n * @param {opentelemetry.proto.collector.logs.v1.IExportLogsServiceResponse=} [properties] Properties to set\n */\n function ExportLogsServiceResponse(properties) {\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n /**\n * ExportLogsServiceResponse partialSuccess.\n * @member {opentelemetry.proto.collector.logs.v1.IExportLogsPartialSuccess|null|undefined} partialSuccess\n * @memberof opentelemetry.proto.collector.logs.v1.ExportLogsServiceResponse\n * @instance\n */\n ExportLogsServiceResponse.prototype.partialSuccess = null;\n /**\n * Creates a new ExportLogsServiceResponse instance using the specified properties.\n * @function create\n * @memberof opentelemetry.proto.collector.logs.v1.ExportLogsServiceResponse\n * @static\n * @param {opentelemetry.proto.collector.logs.v1.IExportLogsServiceResponse=} [properties] Properties to set\n * @returns {opentelemetry.proto.collector.logs.v1.ExportLogsServiceResponse} ExportLogsServiceResponse instance\n */\n ExportLogsServiceResponse.create = function create(properties) {\n return new ExportLogsServiceResponse(properties);\n };\n /**\n * Encodes the specified ExportLogsServiceResponse message. Does not implicitly {@link opentelemetry.proto.collector.logs.v1.ExportLogsServiceResponse.verify|verify} messages.\n * @function encode\n * @memberof opentelemetry.proto.collector.logs.v1.ExportLogsServiceResponse\n * @static\n * @param {opentelemetry.proto.collector.logs.v1.IExportLogsServiceResponse} message ExportLogsServiceResponse message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ExportLogsServiceResponse.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.partialSuccess != null && Object.hasOwnProperty.call(message, \"partialSuccess\"))\n $root.opentelemetry.proto.collector.logs.v1.ExportLogsPartialSuccess.encode(message.partialSuccess, writer.uint32(/* id 1, wireType 2 =*/ 10).fork()).ldelim();\n return writer;\n };\n /**\n * Encodes the specified ExportLogsServiceResponse message, length delimited. Does not implicitly {@link opentelemetry.proto.collector.logs.v1.ExportLogsServiceResponse.verify|verify} messages.\n * @function encodeDelimited\n * @memberof opentelemetry.proto.collector.logs.v1.ExportLogsServiceResponse\n * @static\n * @param {opentelemetry.proto.collector.logs.v1.IExportLogsServiceResponse} message ExportLogsServiceResponse message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ExportLogsServiceResponse.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n /**\n * Decodes an ExportLogsServiceResponse message from the specified reader or buffer.\n * @function decode\n * @memberof opentelemetry.proto.collector.logs.v1.ExportLogsServiceResponse\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {opentelemetry.proto.collector.logs.v1.ExportLogsServiceResponse} ExportLogsServiceResponse\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ExportLogsServiceResponse.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.opentelemetry.proto.collector.logs.v1.ExportLogsServiceResponse();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n message.partialSuccess = $root.opentelemetry.proto.collector.logs.v1.ExportLogsPartialSuccess.decode(reader, reader.uint32());\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n /**\n * Decodes an ExportLogsServiceResponse message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof opentelemetry.proto.collector.logs.v1.ExportLogsServiceResponse\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {opentelemetry.proto.collector.logs.v1.ExportLogsServiceResponse} ExportLogsServiceResponse\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ExportLogsServiceResponse.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n /**\n * Verifies an ExportLogsServiceResponse message.\n * @function verify\n * @memberof opentelemetry.proto.collector.logs.v1.ExportLogsServiceResponse\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n ExportLogsServiceResponse.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.partialSuccess != null && message.hasOwnProperty(\"partialSuccess\")) {\n var error = $root.opentelemetry.proto.collector.logs.v1.ExportLogsPartialSuccess.verify(message.partialSuccess);\n if (error)\n return \"partialSuccess.\" + error;\n }\n return null;\n };\n /**\n * Creates an ExportLogsServiceResponse message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof opentelemetry.proto.collector.logs.v1.ExportLogsServiceResponse\n * @static\n * @param {Object.} object Plain object\n * @returns {opentelemetry.proto.collector.logs.v1.ExportLogsServiceResponse} ExportLogsServiceResponse\n */\n ExportLogsServiceResponse.fromObject = function fromObject(object) {\n if (object instanceof $root.opentelemetry.proto.collector.logs.v1.ExportLogsServiceResponse)\n return object;\n var message = new $root.opentelemetry.proto.collector.logs.v1.ExportLogsServiceResponse();\n if (object.partialSuccess != null) {\n if (typeof object.partialSuccess !== \"object\")\n throw TypeError(\".opentelemetry.proto.collector.logs.v1.ExportLogsServiceResponse.partialSuccess: object expected\");\n message.partialSuccess = $root.opentelemetry.proto.collector.logs.v1.ExportLogsPartialSuccess.fromObject(object.partialSuccess);\n }\n return message;\n };\n /**\n * Creates a plain object from an ExportLogsServiceResponse message. Also converts values to other types if specified.\n * @function toObject\n * @memberof opentelemetry.proto.collector.logs.v1.ExportLogsServiceResponse\n * @static\n * @param {opentelemetry.proto.collector.logs.v1.ExportLogsServiceResponse} message ExportLogsServiceResponse\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n ExportLogsServiceResponse.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n var object = {};\n if (options.defaults)\n object.partialSuccess = null;\n if (message.partialSuccess != null && message.hasOwnProperty(\"partialSuccess\"))\n object.partialSuccess = $root.opentelemetry.proto.collector.logs.v1.ExportLogsPartialSuccess.toObject(message.partialSuccess, options);\n return object;\n };\n /**\n * Converts this ExportLogsServiceResponse to JSON.\n * @function toJSON\n * @memberof opentelemetry.proto.collector.logs.v1.ExportLogsServiceResponse\n * @instance\n * @returns {Object.} JSON object\n */\n ExportLogsServiceResponse.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n /**\n * Gets the default type url for ExportLogsServiceResponse\n * @function getTypeUrl\n * @memberof opentelemetry.proto.collector.logs.v1.ExportLogsServiceResponse\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n ExportLogsServiceResponse.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = \"type.googleapis.com\";\n }\n return typeUrlPrefix + \"/opentelemetry.proto.collector.logs.v1.ExportLogsServiceResponse\";\n };\n return ExportLogsServiceResponse;\n })();\n v1.ExportLogsPartialSuccess = (function () {\n /**\n * Properties of an ExportLogsPartialSuccess.\n * @memberof opentelemetry.proto.collector.logs.v1\n * @interface IExportLogsPartialSuccess\n * @property {number|Long|null} [rejectedLogRecords] ExportLogsPartialSuccess rejectedLogRecords\n * @property {string|null} [errorMessage] ExportLogsPartialSuccess errorMessage\n */\n /**\n * Constructs a new ExportLogsPartialSuccess.\n * @memberof opentelemetry.proto.collector.logs.v1\n * @classdesc Represents an ExportLogsPartialSuccess.\n * @implements IExportLogsPartialSuccess\n * @constructor\n * @param {opentelemetry.proto.collector.logs.v1.IExportLogsPartialSuccess=} [properties] Properties to set\n */\n function ExportLogsPartialSuccess(properties) {\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n /**\n * ExportLogsPartialSuccess rejectedLogRecords.\n * @member {number|Long|null|undefined} rejectedLogRecords\n * @memberof opentelemetry.proto.collector.logs.v1.ExportLogsPartialSuccess\n * @instance\n */\n ExportLogsPartialSuccess.prototype.rejectedLogRecords = null;\n /**\n * ExportLogsPartialSuccess errorMessage.\n * @member {string|null|undefined} errorMessage\n * @memberof opentelemetry.proto.collector.logs.v1.ExportLogsPartialSuccess\n * @instance\n */\n ExportLogsPartialSuccess.prototype.errorMessage = null;\n /**\n * Creates a new ExportLogsPartialSuccess instance using the specified properties.\n * @function create\n * @memberof opentelemetry.proto.collector.logs.v1.ExportLogsPartialSuccess\n * @static\n * @param {opentelemetry.proto.collector.logs.v1.IExportLogsPartialSuccess=} [properties] Properties to set\n * @returns {opentelemetry.proto.collector.logs.v1.ExportLogsPartialSuccess} ExportLogsPartialSuccess instance\n */\n ExportLogsPartialSuccess.create = function create(properties) {\n return new ExportLogsPartialSuccess(properties);\n };\n /**\n * Encodes the specified ExportLogsPartialSuccess message. Does not implicitly {@link opentelemetry.proto.collector.logs.v1.ExportLogsPartialSuccess.verify|verify} messages.\n * @function encode\n * @memberof opentelemetry.proto.collector.logs.v1.ExportLogsPartialSuccess\n * @static\n * @param {opentelemetry.proto.collector.logs.v1.IExportLogsPartialSuccess} message ExportLogsPartialSuccess message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ExportLogsPartialSuccess.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.rejectedLogRecords != null && Object.hasOwnProperty.call(message, \"rejectedLogRecords\"))\n writer.uint32(/* id 1, wireType 0 =*/ 8).int64(message.rejectedLogRecords);\n if (message.errorMessage != null && Object.hasOwnProperty.call(message, \"errorMessage\"))\n writer.uint32(/* id 2, wireType 2 =*/ 18).string(message.errorMessage);\n return writer;\n };\n /**\n * Encodes the specified ExportLogsPartialSuccess message, length delimited. Does not implicitly {@link opentelemetry.proto.collector.logs.v1.ExportLogsPartialSuccess.verify|verify} messages.\n * @function encodeDelimited\n * @memberof opentelemetry.proto.collector.logs.v1.ExportLogsPartialSuccess\n * @static\n * @param {opentelemetry.proto.collector.logs.v1.IExportLogsPartialSuccess} message ExportLogsPartialSuccess message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ExportLogsPartialSuccess.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n /**\n * Decodes an ExportLogsPartialSuccess message from the specified reader or buffer.\n * @function decode\n * @memberof opentelemetry.proto.collector.logs.v1.ExportLogsPartialSuccess\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {opentelemetry.proto.collector.logs.v1.ExportLogsPartialSuccess} ExportLogsPartialSuccess\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ExportLogsPartialSuccess.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.opentelemetry.proto.collector.logs.v1.ExportLogsPartialSuccess();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n message.rejectedLogRecords = reader.int64();\n break;\n }\n case 2: {\n message.errorMessage = reader.string();\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n /**\n * Decodes an ExportLogsPartialSuccess message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof opentelemetry.proto.collector.logs.v1.ExportLogsPartialSuccess\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {opentelemetry.proto.collector.logs.v1.ExportLogsPartialSuccess} ExportLogsPartialSuccess\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ExportLogsPartialSuccess.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n /**\n * Verifies an ExportLogsPartialSuccess message.\n * @function verify\n * @memberof opentelemetry.proto.collector.logs.v1.ExportLogsPartialSuccess\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n ExportLogsPartialSuccess.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.rejectedLogRecords != null && message.hasOwnProperty(\"rejectedLogRecords\"))\n if (!$util.isInteger(message.rejectedLogRecords) && !(message.rejectedLogRecords && $util.isInteger(message.rejectedLogRecords.low) && $util.isInteger(message.rejectedLogRecords.high)))\n return \"rejectedLogRecords: integer|Long expected\";\n if (message.errorMessage != null && message.hasOwnProperty(\"errorMessage\"))\n if (!$util.isString(message.errorMessage))\n return \"errorMessage: string expected\";\n return null;\n };\n /**\n * Creates an ExportLogsPartialSuccess message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof opentelemetry.proto.collector.logs.v1.ExportLogsPartialSuccess\n * @static\n * @param {Object.} object Plain object\n * @returns {opentelemetry.proto.collector.logs.v1.ExportLogsPartialSuccess} ExportLogsPartialSuccess\n */\n ExportLogsPartialSuccess.fromObject = function fromObject(object) {\n if (object instanceof $root.opentelemetry.proto.collector.logs.v1.ExportLogsPartialSuccess)\n return object;\n var message = new $root.opentelemetry.proto.collector.logs.v1.ExportLogsPartialSuccess();\n if (object.rejectedLogRecords != null)\n if ($util.Long)\n (message.rejectedLogRecords = $util.Long.fromValue(object.rejectedLogRecords)).unsigned = false;\n else if (typeof object.rejectedLogRecords === \"string\")\n message.rejectedLogRecords = parseInt(object.rejectedLogRecords, 10);\n else if (typeof object.rejectedLogRecords === \"number\")\n message.rejectedLogRecords = object.rejectedLogRecords;\n else if (typeof object.rejectedLogRecords === \"object\")\n message.rejectedLogRecords = new $util.LongBits(object.rejectedLogRecords.low >>> 0, object.rejectedLogRecords.high >>> 0).toNumber();\n if (object.errorMessage != null)\n message.errorMessage = String(object.errorMessage);\n return message;\n };\n /**\n * Creates a plain object from an ExportLogsPartialSuccess message. Also converts values to other types if specified.\n * @function toObject\n * @memberof opentelemetry.proto.collector.logs.v1.ExportLogsPartialSuccess\n * @static\n * @param {opentelemetry.proto.collector.logs.v1.ExportLogsPartialSuccess} message ExportLogsPartialSuccess\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n ExportLogsPartialSuccess.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n var object = {};\n if (options.defaults) {\n if ($util.Long) {\n var long = new $util.Long(0, 0, false);\n object.rejectedLogRecords = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n }\n else\n object.rejectedLogRecords = options.longs === String ? \"0\" : 0;\n object.errorMessage = \"\";\n }\n if (message.rejectedLogRecords != null && message.hasOwnProperty(\"rejectedLogRecords\"))\n if (typeof message.rejectedLogRecords === \"number\")\n object.rejectedLogRecords = options.longs === String ? String(message.rejectedLogRecords) : message.rejectedLogRecords;\n else\n object.rejectedLogRecords = options.longs === String ? $util.Long.prototype.toString.call(message.rejectedLogRecords) : options.longs === Number ? new $util.LongBits(message.rejectedLogRecords.low >>> 0, message.rejectedLogRecords.high >>> 0).toNumber() : message.rejectedLogRecords;\n if (message.errorMessage != null && message.hasOwnProperty(\"errorMessage\"))\n object.errorMessage = message.errorMessage;\n return object;\n };\n /**\n * Converts this ExportLogsPartialSuccess to JSON.\n * @function toJSON\n * @memberof opentelemetry.proto.collector.logs.v1.ExportLogsPartialSuccess\n * @instance\n * @returns {Object.} JSON object\n */\n ExportLogsPartialSuccess.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n /**\n * Gets the default type url for ExportLogsPartialSuccess\n * @function getTypeUrl\n * @memberof opentelemetry.proto.collector.logs.v1.ExportLogsPartialSuccess\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n ExportLogsPartialSuccess.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = \"type.googleapis.com\";\n }\n return typeUrlPrefix + \"/opentelemetry.proto.collector.logs.v1.ExportLogsPartialSuccess\";\n };\n return ExportLogsPartialSuccess;\n })();\n return v1;\n })();\n return logs;\n })();\n return collector;\n })();\n proto.metrics = (function () {\n /**\n * Namespace metrics.\n * @memberof opentelemetry.proto\n * @namespace\n */\n var metrics = {};\n metrics.v1 = (function () {\n /**\n * Namespace v1.\n * @memberof opentelemetry.proto.metrics\n * @namespace\n */\n var v1 = {};\n v1.MetricsData = (function () {\n /**\n * Properties of a MetricsData.\n * @memberof opentelemetry.proto.metrics.v1\n * @interface IMetricsData\n * @property {Array.|null} [resourceMetrics] MetricsData resourceMetrics\n */\n /**\n * Constructs a new MetricsData.\n * @memberof opentelemetry.proto.metrics.v1\n * @classdesc Represents a MetricsData.\n * @implements IMetricsData\n * @constructor\n * @param {opentelemetry.proto.metrics.v1.IMetricsData=} [properties] Properties to set\n */\n function MetricsData(properties) {\n this.resourceMetrics = [];\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n /**\n * MetricsData resourceMetrics.\n * @member {Array.} resourceMetrics\n * @memberof opentelemetry.proto.metrics.v1.MetricsData\n * @instance\n */\n MetricsData.prototype.resourceMetrics = $util.emptyArray;\n /**\n * Creates a new MetricsData instance using the specified properties.\n * @function create\n * @memberof opentelemetry.proto.metrics.v1.MetricsData\n * @static\n * @param {opentelemetry.proto.metrics.v1.IMetricsData=} [properties] Properties to set\n * @returns {opentelemetry.proto.metrics.v1.MetricsData} MetricsData instance\n */\n MetricsData.create = function create(properties) {\n return new MetricsData(properties);\n };\n /**\n * Encodes the specified MetricsData message. Does not implicitly {@link opentelemetry.proto.metrics.v1.MetricsData.verify|verify} messages.\n * @function encode\n * @memberof opentelemetry.proto.metrics.v1.MetricsData\n * @static\n * @param {opentelemetry.proto.metrics.v1.IMetricsData} message MetricsData message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n MetricsData.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.resourceMetrics != null && message.resourceMetrics.length)\n for (var i = 0; i < message.resourceMetrics.length; ++i)\n $root.opentelemetry.proto.metrics.v1.ResourceMetrics.encode(message.resourceMetrics[i], writer.uint32(/* id 1, wireType 2 =*/ 10).fork()).ldelim();\n return writer;\n };\n /**\n * Encodes the specified MetricsData message, length delimited. Does not implicitly {@link opentelemetry.proto.metrics.v1.MetricsData.verify|verify} messages.\n * @function encodeDelimited\n * @memberof opentelemetry.proto.metrics.v1.MetricsData\n * @static\n * @param {opentelemetry.proto.metrics.v1.IMetricsData} message MetricsData message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n MetricsData.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n /**\n * Decodes a MetricsData message from the specified reader or buffer.\n * @function decode\n * @memberof opentelemetry.proto.metrics.v1.MetricsData\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {opentelemetry.proto.metrics.v1.MetricsData} MetricsData\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n MetricsData.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.opentelemetry.proto.metrics.v1.MetricsData();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (!(message.resourceMetrics && message.resourceMetrics.length))\n message.resourceMetrics = [];\n message.resourceMetrics.push($root.opentelemetry.proto.metrics.v1.ResourceMetrics.decode(reader, reader.uint32()));\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n /**\n * Decodes a MetricsData message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof opentelemetry.proto.metrics.v1.MetricsData\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {opentelemetry.proto.metrics.v1.MetricsData} MetricsData\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n MetricsData.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n /**\n * Verifies a MetricsData message.\n * @function verify\n * @memberof opentelemetry.proto.metrics.v1.MetricsData\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n MetricsData.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.resourceMetrics != null && message.hasOwnProperty(\"resourceMetrics\")) {\n if (!Array.isArray(message.resourceMetrics))\n return \"resourceMetrics: array expected\";\n for (var i = 0; i < message.resourceMetrics.length; ++i) {\n var error = $root.opentelemetry.proto.metrics.v1.ResourceMetrics.verify(message.resourceMetrics[i]);\n if (error)\n return \"resourceMetrics.\" + error;\n }\n }\n return null;\n };\n /**\n * Creates a MetricsData message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof opentelemetry.proto.metrics.v1.MetricsData\n * @static\n * @param {Object.} object Plain object\n * @returns {opentelemetry.proto.metrics.v1.MetricsData} MetricsData\n */\n MetricsData.fromObject = function fromObject(object) {\n if (object instanceof $root.opentelemetry.proto.metrics.v1.MetricsData)\n return object;\n var message = new $root.opentelemetry.proto.metrics.v1.MetricsData();\n if (object.resourceMetrics) {\n if (!Array.isArray(object.resourceMetrics))\n throw TypeError(\".opentelemetry.proto.metrics.v1.MetricsData.resourceMetrics: array expected\");\n message.resourceMetrics = [];\n for (var i = 0; i < object.resourceMetrics.length; ++i) {\n if (typeof object.resourceMetrics[i] !== \"object\")\n throw TypeError(\".opentelemetry.proto.metrics.v1.MetricsData.resourceMetrics: object expected\");\n message.resourceMetrics[i] = $root.opentelemetry.proto.metrics.v1.ResourceMetrics.fromObject(object.resourceMetrics[i]);\n }\n }\n return message;\n };\n /**\n * Creates a plain object from a MetricsData message. Also converts values to other types if specified.\n * @function toObject\n * @memberof opentelemetry.proto.metrics.v1.MetricsData\n * @static\n * @param {opentelemetry.proto.metrics.v1.MetricsData} message MetricsData\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n MetricsData.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n var object = {};\n if (options.arrays || options.defaults)\n object.resourceMetrics = [];\n if (message.resourceMetrics && message.resourceMetrics.length) {\n object.resourceMetrics = [];\n for (var j = 0; j < message.resourceMetrics.length; ++j)\n object.resourceMetrics[j] = $root.opentelemetry.proto.metrics.v1.ResourceMetrics.toObject(message.resourceMetrics[j], options);\n }\n return object;\n };\n /**\n * Converts this MetricsData to JSON.\n * @function toJSON\n * @memberof opentelemetry.proto.metrics.v1.MetricsData\n * @instance\n * @returns {Object.} JSON object\n */\n MetricsData.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n /**\n * Gets the default type url for MetricsData\n * @function getTypeUrl\n * @memberof opentelemetry.proto.metrics.v1.MetricsData\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n MetricsData.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = \"type.googleapis.com\";\n }\n return typeUrlPrefix + \"/opentelemetry.proto.metrics.v1.MetricsData\";\n };\n return MetricsData;\n })();\n v1.ResourceMetrics = (function () {\n /**\n * Properties of a ResourceMetrics.\n * @memberof opentelemetry.proto.metrics.v1\n * @interface IResourceMetrics\n * @property {opentelemetry.proto.resource.v1.IResource|null} [resource] ResourceMetrics resource\n * @property {Array.|null} [scopeMetrics] ResourceMetrics scopeMetrics\n * @property {string|null} [schemaUrl] ResourceMetrics schemaUrl\n */\n /**\n * Constructs a new ResourceMetrics.\n * @memberof opentelemetry.proto.metrics.v1\n * @classdesc Represents a ResourceMetrics.\n * @implements IResourceMetrics\n * @constructor\n * @param {opentelemetry.proto.metrics.v1.IResourceMetrics=} [properties] Properties to set\n */\n function ResourceMetrics(properties) {\n this.scopeMetrics = [];\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n /**\n * ResourceMetrics resource.\n * @member {opentelemetry.proto.resource.v1.IResource|null|undefined} resource\n * @memberof opentelemetry.proto.metrics.v1.ResourceMetrics\n * @instance\n */\n ResourceMetrics.prototype.resource = null;\n /**\n * ResourceMetrics scopeMetrics.\n * @member {Array.} scopeMetrics\n * @memberof opentelemetry.proto.metrics.v1.ResourceMetrics\n * @instance\n */\n ResourceMetrics.prototype.scopeMetrics = $util.emptyArray;\n /**\n * ResourceMetrics schemaUrl.\n * @member {string|null|undefined} schemaUrl\n * @memberof opentelemetry.proto.metrics.v1.ResourceMetrics\n * @instance\n */\n ResourceMetrics.prototype.schemaUrl = null;\n /**\n * Creates a new ResourceMetrics instance using the specified properties.\n * @function create\n * @memberof opentelemetry.proto.metrics.v1.ResourceMetrics\n * @static\n * @param {opentelemetry.proto.metrics.v1.IResourceMetrics=} [properties] Properties to set\n * @returns {opentelemetry.proto.metrics.v1.ResourceMetrics} ResourceMetrics instance\n */\n ResourceMetrics.create = function create(properties) {\n return new ResourceMetrics(properties);\n };\n /**\n * Encodes the specified ResourceMetrics message. Does not implicitly {@link opentelemetry.proto.metrics.v1.ResourceMetrics.verify|verify} messages.\n * @function encode\n * @memberof opentelemetry.proto.metrics.v1.ResourceMetrics\n * @static\n * @param {opentelemetry.proto.metrics.v1.IResourceMetrics} message ResourceMetrics message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ResourceMetrics.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.resource != null && Object.hasOwnProperty.call(message, \"resource\"))\n $root.opentelemetry.proto.resource.v1.Resource.encode(message.resource, writer.uint32(/* id 1, wireType 2 =*/ 10).fork()).ldelim();\n if (message.scopeMetrics != null && message.scopeMetrics.length)\n for (var i = 0; i < message.scopeMetrics.length; ++i)\n $root.opentelemetry.proto.metrics.v1.ScopeMetrics.encode(message.scopeMetrics[i], writer.uint32(/* id 2, wireType 2 =*/ 18).fork()).ldelim();\n if (message.schemaUrl != null && Object.hasOwnProperty.call(message, \"schemaUrl\"))\n writer.uint32(/* id 3, wireType 2 =*/ 26).string(message.schemaUrl);\n return writer;\n };\n /**\n * Encodes the specified ResourceMetrics message, length delimited. Does not implicitly {@link opentelemetry.proto.metrics.v1.ResourceMetrics.verify|verify} messages.\n * @function encodeDelimited\n * @memberof opentelemetry.proto.metrics.v1.ResourceMetrics\n * @static\n * @param {opentelemetry.proto.metrics.v1.IResourceMetrics} message ResourceMetrics message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ResourceMetrics.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n /**\n * Decodes a ResourceMetrics message from the specified reader or buffer.\n * @function decode\n * @memberof opentelemetry.proto.metrics.v1.ResourceMetrics\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {opentelemetry.proto.metrics.v1.ResourceMetrics} ResourceMetrics\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ResourceMetrics.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.opentelemetry.proto.metrics.v1.ResourceMetrics();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n message.resource = $root.opentelemetry.proto.resource.v1.Resource.decode(reader, reader.uint32());\n break;\n }\n case 2: {\n if (!(message.scopeMetrics && message.scopeMetrics.length))\n message.scopeMetrics = [];\n message.scopeMetrics.push($root.opentelemetry.proto.metrics.v1.ScopeMetrics.decode(reader, reader.uint32()));\n break;\n }\n case 3: {\n message.schemaUrl = reader.string();\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n /**\n * Decodes a ResourceMetrics message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof opentelemetry.proto.metrics.v1.ResourceMetrics\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {opentelemetry.proto.metrics.v1.ResourceMetrics} ResourceMetrics\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ResourceMetrics.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n /**\n * Verifies a ResourceMetrics message.\n * @function verify\n * @memberof opentelemetry.proto.metrics.v1.ResourceMetrics\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n ResourceMetrics.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.resource != null && message.hasOwnProperty(\"resource\")) {\n var error = $root.opentelemetry.proto.resource.v1.Resource.verify(message.resource);\n if (error)\n return \"resource.\" + error;\n }\n if (message.scopeMetrics != null && message.hasOwnProperty(\"scopeMetrics\")) {\n if (!Array.isArray(message.scopeMetrics))\n return \"scopeMetrics: array expected\";\n for (var i = 0; i < message.scopeMetrics.length; ++i) {\n var error = $root.opentelemetry.proto.metrics.v1.ScopeMetrics.verify(message.scopeMetrics[i]);\n if (error)\n return \"scopeMetrics.\" + error;\n }\n }\n if (message.schemaUrl != null && message.hasOwnProperty(\"schemaUrl\"))\n if (!$util.isString(message.schemaUrl))\n return \"schemaUrl: string expected\";\n return null;\n };\n /**\n * Creates a ResourceMetrics message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof opentelemetry.proto.metrics.v1.ResourceMetrics\n * @static\n * @param {Object.} object Plain object\n * @returns {opentelemetry.proto.metrics.v1.ResourceMetrics} ResourceMetrics\n */\n ResourceMetrics.fromObject = function fromObject(object) {\n if (object instanceof $root.opentelemetry.proto.metrics.v1.ResourceMetrics)\n return object;\n var message = new $root.opentelemetry.proto.metrics.v1.ResourceMetrics();\n if (object.resource != null) {\n if (typeof object.resource !== \"object\")\n throw TypeError(\".opentelemetry.proto.metrics.v1.ResourceMetrics.resource: object expected\");\n message.resource = $root.opentelemetry.proto.resource.v1.Resource.fromObject(object.resource);\n }\n if (object.scopeMetrics) {\n if (!Array.isArray(object.scopeMetrics))\n throw TypeError(\".opentelemetry.proto.metrics.v1.ResourceMetrics.scopeMetrics: array expected\");\n message.scopeMetrics = [];\n for (var i = 0; i < object.scopeMetrics.length; ++i) {\n if (typeof object.scopeMetrics[i] !== \"object\")\n throw TypeError(\".opentelemetry.proto.metrics.v1.ResourceMetrics.scopeMetrics: object expected\");\n message.scopeMetrics[i] = $root.opentelemetry.proto.metrics.v1.ScopeMetrics.fromObject(object.scopeMetrics[i]);\n }\n }\n if (object.schemaUrl != null)\n message.schemaUrl = String(object.schemaUrl);\n return message;\n };\n /**\n * Creates a plain object from a ResourceMetrics message. Also converts values to other types if specified.\n * @function toObject\n * @memberof opentelemetry.proto.metrics.v1.ResourceMetrics\n * @static\n * @param {opentelemetry.proto.metrics.v1.ResourceMetrics} message ResourceMetrics\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n ResourceMetrics.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n var object = {};\n if (options.arrays || options.defaults)\n object.scopeMetrics = [];\n if (options.defaults) {\n object.resource = null;\n object.schemaUrl = \"\";\n }\n if (message.resource != null && message.hasOwnProperty(\"resource\"))\n object.resource = $root.opentelemetry.proto.resource.v1.Resource.toObject(message.resource, options);\n if (message.scopeMetrics && message.scopeMetrics.length) {\n object.scopeMetrics = [];\n for (var j = 0; j < message.scopeMetrics.length; ++j)\n object.scopeMetrics[j] = $root.opentelemetry.proto.metrics.v1.ScopeMetrics.toObject(message.scopeMetrics[j], options);\n }\n if (message.schemaUrl != null && message.hasOwnProperty(\"schemaUrl\"))\n object.schemaUrl = message.schemaUrl;\n return object;\n };\n /**\n * Converts this ResourceMetrics to JSON.\n * @function toJSON\n * @memberof opentelemetry.proto.metrics.v1.ResourceMetrics\n * @instance\n * @returns {Object.} JSON object\n */\n ResourceMetrics.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n /**\n * Gets the default type url for ResourceMetrics\n * @function getTypeUrl\n * @memberof opentelemetry.proto.metrics.v1.ResourceMetrics\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n ResourceMetrics.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = \"type.googleapis.com\";\n }\n return typeUrlPrefix + \"/opentelemetry.proto.metrics.v1.ResourceMetrics\";\n };\n return ResourceMetrics;\n })();\n v1.ScopeMetrics = (function () {\n /**\n * Properties of a ScopeMetrics.\n * @memberof opentelemetry.proto.metrics.v1\n * @interface IScopeMetrics\n * @property {opentelemetry.proto.common.v1.IInstrumentationScope|null} [scope] ScopeMetrics scope\n * @property {Array.|null} [metrics] ScopeMetrics metrics\n * @property {string|null} [schemaUrl] ScopeMetrics schemaUrl\n */\n /**\n * Constructs a new ScopeMetrics.\n * @memberof opentelemetry.proto.metrics.v1\n * @classdesc Represents a ScopeMetrics.\n * @implements IScopeMetrics\n * @constructor\n * @param {opentelemetry.proto.metrics.v1.IScopeMetrics=} [properties] Properties to set\n */\n function ScopeMetrics(properties) {\n this.metrics = [];\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n /**\n * ScopeMetrics scope.\n * @member {opentelemetry.proto.common.v1.IInstrumentationScope|null|undefined} scope\n * @memberof opentelemetry.proto.metrics.v1.ScopeMetrics\n * @instance\n */\n ScopeMetrics.prototype.scope = null;\n /**\n * ScopeMetrics metrics.\n * @member {Array.} metrics\n * @memberof opentelemetry.proto.metrics.v1.ScopeMetrics\n * @instance\n */\n ScopeMetrics.prototype.metrics = $util.emptyArray;\n /**\n * ScopeMetrics schemaUrl.\n * @member {string|null|undefined} schemaUrl\n * @memberof opentelemetry.proto.metrics.v1.ScopeMetrics\n * @instance\n */\n ScopeMetrics.prototype.schemaUrl = null;\n /**\n * Creates a new ScopeMetrics instance using the specified properties.\n * @function create\n * @memberof opentelemetry.proto.metrics.v1.ScopeMetrics\n * @static\n * @param {opentelemetry.proto.metrics.v1.IScopeMetrics=} [properties] Properties to set\n * @returns {opentelemetry.proto.metrics.v1.ScopeMetrics} ScopeMetrics instance\n */\n ScopeMetrics.create = function create(properties) {\n return new ScopeMetrics(properties);\n };\n /**\n * Encodes the specified ScopeMetrics message. Does not implicitly {@link opentelemetry.proto.metrics.v1.ScopeMetrics.verify|verify} messages.\n * @function encode\n * @memberof opentelemetry.proto.metrics.v1.ScopeMetrics\n * @static\n * @param {opentelemetry.proto.metrics.v1.IScopeMetrics} message ScopeMetrics message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ScopeMetrics.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.scope != null && Object.hasOwnProperty.call(message, \"scope\"))\n $root.opentelemetry.proto.common.v1.InstrumentationScope.encode(message.scope, writer.uint32(/* id 1, wireType 2 =*/ 10).fork()).ldelim();\n if (message.metrics != null && message.metrics.length)\n for (var i = 0; i < message.metrics.length; ++i)\n $root.opentelemetry.proto.metrics.v1.Metric.encode(message.metrics[i], writer.uint32(/* id 2, wireType 2 =*/ 18).fork()).ldelim();\n if (message.schemaUrl != null && Object.hasOwnProperty.call(message, \"schemaUrl\"))\n writer.uint32(/* id 3, wireType 2 =*/ 26).string(message.schemaUrl);\n return writer;\n };\n /**\n * Encodes the specified ScopeMetrics message, length delimited. Does not implicitly {@link opentelemetry.proto.metrics.v1.ScopeMetrics.verify|verify} messages.\n * @function encodeDelimited\n * @memberof opentelemetry.proto.metrics.v1.ScopeMetrics\n * @static\n * @param {opentelemetry.proto.metrics.v1.IScopeMetrics} message ScopeMetrics message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ScopeMetrics.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n /**\n * Decodes a ScopeMetrics message from the specified reader or buffer.\n * @function decode\n * @memberof opentelemetry.proto.metrics.v1.ScopeMetrics\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {opentelemetry.proto.metrics.v1.ScopeMetrics} ScopeMetrics\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ScopeMetrics.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.opentelemetry.proto.metrics.v1.ScopeMetrics();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n message.scope = $root.opentelemetry.proto.common.v1.InstrumentationScope.decode(reader, reader.uint32());\n break;\n }\n case 2: {\n if (!(message.metrics && message.metrics.length))\n message.metrics = [];\n message.metrics.push($root.opentelemetry.proto.metrics.v1.Metric.decode(reader, reader.uint32()));\n break;\n }\n case 3: {\n message.schemaUrl = reader.string();\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n /**\n * Decodes a ScopeMetrics message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof opentelemetry.proto.metrics.v1.ScopeMetrics\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {opentelemetry.proto.metrics.v1.ScopeMetrics} ScopeMetrics\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ScopeMetrics.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n /**\n * Verifies a ScopeMetrics message.\n * @function verify\n * @memberof opentelemetry.proto.metrics.v1.ScopeMetrics\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n ScopeMetrics.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.scope != null && message.hasOwnProperty(\"scope\")) {\n var error = $root.opentelemetry.proto.common.v1.InstrumentationScope.verify(message.scope);\n if (error)\n return \"scope.\" + error;\n }\n if (message.metrics != null && message.hasOwnProperty(\"metrics\")) {\n if (!Array.isArray(message.metrics))\n return \"metrics: array expected\";\n for (var i = 0; i < message.metrics.length; ++i) {\n var error = $root.opentelemetry.proto.metrics.v1.Metric.verify(message.metrics[i]);\n if (error)\n return \"metrics.\" + error;\n }\n }\n if (message.schemaUrl != null && message.hasOwnProperty(\"schemaUrl\"))\n if (!$util.isString(message.schemaUrl))\n return \"schemaUrl: string expected\";\n return null;\n };\n /**\n * Creates a ScopeMetrics message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof opentelemetry.proto.metrics.v1.ScopeMetrics\n * @static\n * @param {Object.} object Plain object\n * @returns {opentelemetry.proto.metrics.v1.ScopeMetrics} ScopeMetrics\n */\n ScopeMetrics.fromObject = function fromObject(object) {\n if (object instanceof $root.opentelemetry.proto.metrics.v1.ScopeMetrics)\n return object;\n var message = new $root.opentelemetry.proto.metrics.v1.ScopeMetrics();\n if (object.scope != null) {\n if (typeof object.scope !== \"object\")\n throw TypeError(\".opentelemetry.proto.metrics.v1.ScopeMetrics.scope: object expected\");\n message.scope = $root.opentelemetry.proto.common.v1.InstrumentationScope.fromObject(object.scope);\n }\n if (object.metrics) {\n if (!Array.isArray(object.metrics))\n throw TypeError(\".opentelemetry.proto.metrics.v1.ScopeMetrics.metrics: array expected\");\n message.metrics = [];\n for (var i = 0; i < object.metrics.length; ++i) {\n if (typeof object.metrics[i] !== \"object\")\n throw TypeError(\".opentelemetry.proto.metrics.v1.ScopeMetrics.metrics: object expected\");\n message.metrics[i] = $root.opentelemetry.proto.metrics.v1.Metric.fromObject(object.metrics[i]);\n }\n }\n if (object.schemaUrl != null)\n message.schemaUrl = String(object.schemaUrl);\n return message;\n };\n /**\n * Creates a plain object from a ScopeMetrics message. Also converts values to other types if specified.\n * @function toObject\n * @memberof opentelemetry.proto.metrics.v1.ScopeMetrics\n * @static\n * @param {opentelemetry.proto.metrics.v1.ScopeMetrics} message ScopeMetrics\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n ScopeMetrics.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n var object = {};\n if (options.arrays || options.defaults)\n object.metrics = [];\n if (options.defaults) {\n object.scope = null;\n object.schemaUrl = \"\";\n }\n if (message.scope != null && message.hasOwnProperty(\"scope\"))\n object.scope = $root.opentelemetry.proto.common.v1.InstrumentationScope.toObject(message.scope, options);\n if (message.metrics && message.metrics.length) {\n object.metrics = [];\n for (var j = 0; j < message.metrics.length; ++j)\n object.metrics[j] = $root.opentelemetry.proto.metrics.v1.Metric.toObject(message.metrics[j], options);\n }\n if (message.schemaUrl != null && message.hasOwnProperty(\"schemaUrl\"))\n object.schemaUrl = message.schemaUrl;\n return object;\n };\n /**\n * Converts this ScopeMetrics to JSON.\n * @function toJSON\n * @memberof opentelemetry.proto.metrics.v1.ScopeMetrics\n * @instance\n * @returns {Object.} JSON object\n */\n ScopeMetrics.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n /**\n * Gets the default type url for ScopeMetrics\n * @function getTypeUrl\n * @memberof opentelemetry.proto.metrics.v1.ScopeMetrics\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n ScopeMetrics.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = \"type.googleapis.com\";\n }\n return typeUrlPrefix + \"/opentelemetry.proto.metrics.v1.ScopeMetrics\";\n };\n return ScopeMetrics;\n })();\n v1.Metric = (function () {\n /**\n * Properties of a Metric.\n * @memberof opentelemetry.proto.metrics.v1\n * @interface IMetric\n * @property {string|null} [name] Metric name\n * @property {string|null} [description] Metric description\n * @property {string|null} [unit] Metric unit\n * @property {opentelemetry.proto.metrics.v1.IGauge|null} [gauge] Metric gauge\n * @property {opentelemetry.proto.metrics.v1.ISum|null} [sum] Metric sum\n * @property {opentelemetry.proto.metrics.v1.IHistogram|null} [histogram] Metric histogram\n * @property {opentelemetry.proto.metrics.v1.IExponentialHistogram|null} [exponentialHistogram] Metric exponentialHistogram\n * @property {opentelemetry.proto.metrics.v1.ISummary|null} [summary] Metric summary\n */\n /**\n * Constructs a new Metric.\n * @memberof opentelemetry.proto.metrics.v1\n * @classdesc Represents a Metric.\n * @implements IMetric\n * @constructor\n * @param {opentelemetry.proto.metrics.v1.IMetric=} [properties] Properties to set\n */\n function Metric(properties) {\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n /**\n * Metric name.\n * @member {string|null|undefined} name\n * @memberof opentelemetry.proto.metrics.v1.Metric\n * @instance\n */\n Metric.prototype.name = null;\n /**\n * Metric description.\n * @member {string|null|undefined} description\n * @memberof opentelemetry.proto.metrics.v1.Metric\n * @instance\n */\n Metric.prototype.description = null;\n /**\n * Metric unit.\n * @member {string|null|undefined} unit\n * @memberof opentelemetry.proto.metrics.v1.Metric\n * @instance\n */\n Metric.prototype.unit = null;\n /**\n * Metric gauge.\n * @member {opentelemetry.proto.metrics.v1.IGauge|null|undefined} gauge\n * @memberof opentelemetry.proto.metrics.v1.Metric\n * @instance\n */\n Metric.prototype.gauge = null;\n /**\n * Metric sum.\n * @member {opentelemetry.proto.metrics.v1.ISum|null|undefined} sum\n * @memberof opentelemetry.proto.metrics.v1.Metric\n * @instance\n */\n Metric.prototype.sum = null;\n /**\n * Metric histogram.\n * @member {opentelemetry.proto.metrics.v1.IHistogram|null|undefined} histogram\n * @memberof opentelemetry.proto.metrics.v1.Metric\n * @instance\n */\n Metric.prototype.histogram = null;\n /**\n * Metric exponentialHistogram.\n * @member {opentelemetry.proto.metrics.v1.IExponentialHistogram|null|undefined} exponentialHistogram\n * @memberof opentelemetry.proto.metrics.v1.Metric\n * @instance\n */\n Metric.prototype.exponentialHistogram = null;\n /**\n * Metric summary.\n * @member {opentelemetry.proto.metrics.v1.ISummary|null|undefined} summary\n * @memberof opentelemetry.proto.metrics.v1.Metric\n * @instance\n */\n Metric.prototype.summary = null;\n // OneOf field names bound to virtual getters and setters\n var $oneOfFields;\n /**\n * Metric data.\n * @member {\"gauge\"|\"sum\"|\"histogram\"|\"exponentialHistogram\"|\"summary\"|undefined} data\n * @memberof opentelemetry.proto.metrics.v1.Metric\n * @instance\n */\n Object.defineProperty(Metric.prototype, \"data\", {\n get: $util.oneOfGetter($oneOfFields = [\"gauge\", \"sum\", \"histogram\", \"exponentialHistogram\", \"summary\"]),\n set: $util.oneOfSetter($oneOfFields)\n });\n /**\n * Creates a new Metric instance using the specified properties.\n * @function create\n * @memberof opentelemetry.proto.metrics.v1.Metric\n * @static\n * @param {opentelemetry.proto.metrics.v1.IMetric=} [properties] Properties to set\n * @returns {opentelemetry.proto.metrics.v1.Metric} Metric instance\n */\n Metric.create = function create(properties) {\n return new Metric(properties);\n };\n /**\n * Encodes the specified Metric message. Does not implicitly {@link opentelemetry.proto.metrics.v1.Metric.verify|verify} messages.\n * @function encode\n * @memberof opentelemetry.proto.metrics.v1.Metric\n * @static\n * @param {opentelemetry.proto.metrics.v1.IMetric} message Metric message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Metric.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.name != null && Object.hasOwnProperty.call(message, \"name\"))\n writer.uint32(/* id 1, wireType 2 =*/ 10).string(message.name);\n if (message.description != null && Object.hasOwnProperty.call(message, \"description\"))\n writer.uint32(/* id 2, wireType 2 =*/ 18).string(message.description);\n if (message.unit != null && Object.hasOwnProperty.call(message, \"unit\"))\n writer.uint32(/* id 3, wireType 2 =*/ 26).string(message.unit);\n if (message.gauge != null && Object.hasOwnProperty.call(message, \"gauge\"))\n $root.opentelemetry.proto.metrics.v1.Gauge.encode(message.gauge, writer.uint32(/* id 5, wireType 2 =*/ 42).fork()).ldelim();\n if (message.sum != null && Object.hasOwnProperty.call(message, \"sum\"))\n $root.opentelemetry.proto.metrics.v1.Sum.encode(message.sum, writer.uint32(/* id 7, wireType 2 =*/ 58).fork()).ldelim();\n if (message.histogram != null && Object.hasOwnProperty.call(message, \"histogram\"))\n $root.opentelemetry.proto.metrics.v1.Histogram.encode(message.histogram, writer.uint32(/* id 9, wireType 2 =*/ 74).fork()).ldelim();\n if (message.exponentialHistogram != null && Object.hasOwnProperty.call(message, \"exponentialHistogram\"))\n $root.opentelemetry.proto.metrics.v1.ExponentialHistogram.encode(message.exponentialHistogram, writer.uint32(/* id 10, wireType 2 =*/ 82).fork()).ldelim();\n if (message.summary != null && Object.hasOwnProperty.call(message, \"summary\"))\n $root.opentelemetry.proto.metrics.v1.Summary.encode(message.summary, writer.uint32(/* id 11, wireType 2 =*/ 90).fork()).ldelim();\n return writer;\n };\n /**\n * Encodes the specified Metric message, length delimited. Does not implicitly {@link opentelemetry.proto.metrics.v1.Metric.verify|verify} messages.\n * @function encodeDelimited\n * @memberof opentelemetry.proto.metrics.v1.Metric\n * @static\n * @param {opentelemetry.proto.metrics.v1.IMetric} message Metric message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Metric.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n /**\n * Decodes a Metric message from the specified reader or buffer.\n * @function decode\n * @memberof opentelemetry.proto.metrics.v1.Metric\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {opentelemetry.proto.metrics.v1.Metric} Metric\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Metric.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.opentelemetry.proto.metrics.v1.Metric();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n message.name = reader.string();\n break;\n }\n case 2: {\n message.description = reader.string();\n break;\n }\n case 3: {\n message.unit = reader.string();\n break;\n }\n case 5: {\n message.gauge = $root.opentelemetry.proto.metrics.v1.Gauge.decode(reader, reader.uint32());\n break;\n }\n case 7: {\n message.sum = $root.opentelemetry.proto.metrics.v1.Sum.decode(reader, reader.uint32());\n break;\n }\n case 9: {\n message.histogram = $root.opentelemetry.proto.metrics.v1.Histogram.decode(reader, reader.uint32());\n break;\n }\n case 10: {\n message.exponentialHistogram = $root.opentelemetry.proto.metrics.v1.ExponentialHistogram.decode(reader, reader.uint32());\n break;\n }\n case 11: {\n message.summary = $root.opentelemetry.proto.metrics.v1.Summary.decode(reader, reader.uint32());\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n /**\n * Decodes a Metric message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof opentelemetry.proto.metrics.v1.Metric\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {opentelemetry.proto.metrics.v1.Metric} Metric\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Metric.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n /**\n * Verifies a Metric message.\n * @function verify\n * @memberof opentelemetry.proto.metrics.v1.Metric\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n Metric.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n var properties = {};\n if (message.name != null && message.hasOwnProperty(\"name\"))\n if (!$util.isString(message.name))\n return \"name: string expected\";\n if (message.description != null && message.hasOwnProperty(\"description\"))\n if (!$util.isString(message.description))\n return \"description: string expected\";\n if (message.unit != null && message.hasOwnProperty(\"unit\"))\n if (!$util.isString(message.unit))\n return \"unit: string expected\";\n if (message.gauge != null && message.hasOwnProperty(\"gauge\")) {\n properties.data = 1;\n {\n var error = $root.opentelemetry.proto.metrics.v1.Gauge.verify(message.gauge);\n if (error)\n return \"gauge.\" + error;\n }\n }\n if (message.sum != null && message.hasOwnProperty(\"sum\")) {\n if (properties.data === 1)\n return \"data: multiple values\";\n properties.data = 1;\n {\n var error = $root.opentelemetry.proto.metrics.v1.Sum.verify(message.sum);\n if (error)\n return \"sum.\" + error;\n }\n }\n if (message.histogram != null && message.hasOwnProperty(\"histogram\")) {\n if (properties.data === 1)\n return \"data: multiple values\";\n properties.data = 1;\n {\n var error = $root.opentelemetry.proto.metrics.v1.Histogram.verify(message.histogram);\n if (error)\n return \"histogram.\" + error;\n }\n }\n if (message.exponentialHistogram != null && message.hasOwnProperty(\"exponentialHistogram\")) {\n if (properties.data === 1)\n return \"data: multiple values\";\n properties.data = 1;\n {\n var error = $root.opentelemetry.proto.metrics.v1.ExponentialHistogram.verify(message.exponentialHistogram);\n if (error)\n return \"exponentialHistogram.\" + error;\n }\n }\n if (message.summary != null && message.hasOwnProperty(\"summary\")) {\n if (properties.data === 1)\n return \"data: multiple values\";\n properties.data = 1;\n {\n var error = $root.opentelemetry.proto.metrics.v1.Summary.verify(message.summary);\n if (error)\n return \"summary.\" + error;\n }\n }\n return null;\n };\n /**\n * Creates a Metric message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof opentelemetry.proto.metrics.v1.Metric\n * @static\n * @param {Object.} object Plain object\n * @returns {opentelemetry.proto.metrics.v1.Metric} Metric\n */\n Metric.fromObject = function fromObject(object) {\n if (object instanceof $root.opentelemetry.proto.metrics.v1.Metric)\n return object;\n var message = new $root.opentelemetry.proto.metrics.v1.Metric();\n if (object.name != null)\n message.name = String(object.name);\n if (object.description != null)\n message.description = String(object.description);\n if (object.unit != null)\n message.unit = String(object.unit);\n if (object.gauge != null) {\n if (typeof object.gauge !== \"object\")\n throw TypeError(\".opentelemetry.proto.metrics.v1.Metric.gauge: object expected\");\n message.gauge = $root.opentelemetry.proto.metrics.v1.Gauge.fromObject(object.gauge);\n }\n if (object.sum != null) {\n if (typeof object.sum !== \"object\")\n throw TypeError(\".opentelemetry.proto.metrics.v1.Metric.sum: object expected\");\n message.sum = $root.opentelemetry.proto.metrics.v1.Sum.fromObject(object.sum);\n }\n if (object.histogram != null) {\n if (typeof object.histogram !== \"object\")\n throw TypeError(\".opentelemetry.proto.metrics.v1.Metric.histogram: object expected\");\n message.histogram = $root.opentelemetry.proto.metrics.v1.Histogram.fromObject(object.histogram);\n }\n if (object.exponentialHistogram != null) {\n if (typeof object.exponentialHistogram !== \"object\")\n throw TypeError(\".opentelemetry.proto.metrics.v1.Metric.exponentialHistogram: object expected\");\n message.exponentialHistogram = $root.opentelemetry.proto.metrics.v1.ExponentialHistogram.fromObject(object.exponentialHistogram);\n }\n if (object.summary != null) {\n if (typeof object.summary !== \"object\")\n throw TypeError(\".opentelemetry.proto.metrics.v1.Metric.summary: object expected\");\n message.summary = $root.opentelemetry.proto.metrics.v1.Summary.fromObject(object.summary);\n }\n return message;\n };\n /**\n * Creates a plain object from a Metric message. Also converts values to other types if specified.\n * @function toObject\n * @memberof opentelemetry.proto.metrics.v1.Metric\n * @static\n * @param {opentelemetry.proto.metrics.v1.Metric} message Metric\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n Metric.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n var object = {};\n if (options.defaults) {\n object.name = \"\";\n object.description = \"\";\n object.unit = \"\";\n }\n if (message.name != null && message.hasOwnProperty(\"name\"))\n object.name = message.name;\n if (message.description != null && message.hasOwnProperty(\"description\"))\n object.description = message.description;\n if (message.unit != null && message.hasOwnProperty(\"unit\"))\n object.unit = message.unit;\n if (message.gauge != null && message.hasOwnProperty(\"gauge\")) {\n object.gauge = $root.opentelemetry.proto.metrics.v1.Gauge.toObject(message.gauge, options);\n if (options.oneofs)\n object.data = \"gauge\";\n }\n if (message.sum != null && message.hasOwnProperty(\"sum\")) {\n object.sum = $root.opentelemetry.proto.metrics.v1.Sum.toObject(message.sum, options);\n if (options.oneofs)\n object.data = \"sum\";\n }\n if (message.histogram != null && message.hasOwnProperty(\"histogram\")) {\n object.histogram = $root.opentelemetry.proto.metrics.v1.Histogram.toObject(message.histogram, options);\n if (options.oneofs)\n object.data = \"histogram\";\n }\n if (message.exponentialHistogram != null && message.hasOwnProperty(\"exponentialHistogram\")) {\n object.exponentialHistogram = $root.opentelemetry.proto.metrics.v1.ExponentialHistogram.toObject(message.exponentialHistogram, options);\n if (options.oneofs)\n object.data = \"exponentialHistogram\";\n }\n if (message.summary != null && message.hasOwnProperty(\"summary\")) {\n object.summary = $root.opentelemetry.proto.metrics.v1.Summary.toObject(message.summary, options);\n if (options.oneofs)\n object.data = \"summary\";\n }\n return object;\n };\n /**\n * Converts this Metric to JSON.\n * @function toJSON\n * @memberof opentelemetry.proto.metrics.v1.Metric\n * @instance\n * @returns {Object.} JSON object\n */\n Metric.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n /**\n * Gets the default type url for Metric\n * @function getTypeUrl\n * @memberof opentelemetry.proto.metrics.v1.Metric\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n Metric.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = \"type.googleapis.com\";\n }\n return typeUrlPrefix + \"/opentelemetry.proto.metrics.v1.Metric\";\n };\n return Metric;\n })();\n v1.Gauge = (function () {\n /**\n * Properties of a Gauge.\n * @memberof opentelemetry.proto.metrics.v1\n * @interface IGauge\n * @property {Array.|null} [dataPoints] Gauge dataPoints\n */\n /**\n * Constructs a new Gauge.\n * @memberof opentelemetry.proto.metrics.v1\n * @classdesc Represents a Gauge.\n * @implements IGauge\n * @constructor\n * @param {opentelemetry.proto.metrics.v1.IGauge=} [properties] Properties to set\n */\n function Gauge(properties) {\n this.dataPoints = [];\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n /**\n * Gauge dataPoints.\n * @member {Array.} dataPoints\n * @memberof opentelemetry.proto.metrics.v1.Gauge\n * @instance\n */\n Gauge.prototype.dataPoints = $util.emptyArray;\n /**\n * Creates a new Gauge instance using the specified properties.\n * @function create\n * @memberof opentelemetry.proto.metrics.v1.Gauge\n * @static\n * @param {opentelemetry.proto.metrics.v1.IGauge=} [properties] Properties to set\n * @returns {opentelemetry.proto.metrics.v1.Gauge} Gauge instance\n */\n Gauge.create = function create(properties) {\n return new Gauge(properties);\n };\n /**\n * Encodes the specified Gauge message. Does not implicitly {@link opentelemetry.proto.metrics.v1.Gauge.verify|verify} messages.\n * @function encode\n * @memberof opentelemetry.proto.metrics.v1.Gauge\n * @static\n * @param {opentelemetry.proto.metrics.v1.IGauge} message Gauge message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Gauge.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.dataPoints != null && message.dataPoints.length)\n for (var i = 0; i < message.dataPoints.length; ++i)\n $root.opentelemetry.proto.metrics.v1.NumberDataPoint.encode(message.dataPoints[i], writer.uint32(/* id 1, wireType 2 =*/ 10).fork()).ldelim();\n return writer;\n };\n /**\n * Encodes the specified Gauge message, length delimited. Does not implicitly {@link opentelemetry.proto.metrics.v1.Gauge.verify|verify} messages.\n * @function encodeDelimited\n * @memberof opentelemetry.proto.metrics.v1.Gauge\n * @static\n * @param {opentelemetry.proto.metrics.v1.IGauge} message Gauge message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Gauge.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n /**\n * Decodes a Gauge message from the specified reader or buffer.\n * @function decode\n * @memberof opentelemetry.proto.metrics.v1.Gauge\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {opentelemetry.proto.metrics.v1.Gauge} Gauge\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Gauge.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.opentelemetry.proto.metrics.v1.Gauge();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (!(message.dataPoints && message.dataPoints.length))\n message.dataPoints = [];\n message.dataPoints.push($root.opentelemetry.proto.metrics.v1.NumberDataPoint.decode(reader, reader.uint32()));\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n /**\n * Decodes a Gauge message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof opentelemetry.proto.metrics.v1.Gauge\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {opentelemetry.proto.metrics.v1.Gauge} Gauge\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Gauge.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n /**\n * Verifies a Gauge message.\n * @function verify\n * @memberof opentelemetry.proto.metrics.v1.Gauge\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n Gauge.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.dataPoints != null && message.hasOwnProperty(\"dataPoints\")) {\n if (!Array.isArray(message.dataPoints))\n return \"dataPoints: array expected\";\n for (var i = 0; i < message.dataPoints.length; ++i) {\n var error = $root.opentelemetry.proto.metrics.v1.NumberDataPoint.verify(message.dataPoints[i]);\n if (error)\n return \"dataPoints.\" + error;\n }\n }\n return null;\n };\n /**\n * Creates a Gauge message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof opentelemetry.proto.metrics.v1.Gauge\n * @static\n * @param {Object.} object Plain object\n * @returns {opentelemetry.proto.metrics.v1.Gauge} Gauge\n */\n Gauge.fromObject = function fromObject(object) {\n if (object instanceof $root.opentelemetry.proto.metrics.v1.Gauge)\n return object;\n var message = new $root.opentelemetry.proto.metrics.v1.Gauge();\n if (object.dataPoints) {\n if (!Array.isArray(object.dataPoints))\n throw TypeError(\".opentelemetry.proto.metrics.v1.Gauge.dataPoints: array expected\");\n message.dataPoints = [];\n for (var i = 0; i < object.dataPoints.length; ++i) {\n if (typeof object.dataPoints[i] !== \"object\")\n throw TypeError(\".opentelemetry.proto.metrics.v1.Gauge.dataPoints: object expected\");\n message.dataPoints[i] = $root.opentelemetry.proto.metrics.v1.NumberDataPoint.fromObject(object.dataPoints[i]);\n }\n }\n return message;\n };\n /**\n * Creates a plain object from a Gauge message. Also converts values to other types if specified.\n * @function toObject\n * @memberof opentelemetry.proto.metrics.v1.Gauge\n * @static\n * @param {opentelemetry.proto.metrics.v1.Gauge} message Gauge\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n Gauge.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n var object = {};\n if (options.arrays || options.defaults)\n object.dataPoints = [];\n if (message.dataPoints && message.dataPoints.length) {\n object.dataPoints = [];\n for (var j = 0; j < message.dataPoints.length; ++j)\n object.dataPoints[j] = $root.opentelemetry.proto.metrics.v1.NumberDataPoint.toObject(message.dataPoints[j], options);\n }\n return object;\n };\n /**\n * Converts this Gauge to JSON.\n * @function toJSON\n * @memberof opentelemetry.proto.metrics.v1.Gauge\n * @instance\n * @returns {Object.} JSON object\n */\n Gauge.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n /**\n * Gets the default type url for Gauge\n * @function getTypeUrl\n * @memberof opentelemetry.proto.metrics.v1.Gauge\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n Gauge.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = \"type.googleapis.com\";\n }\n return typeUrlPrefix + \"/opentelemetry.proto.metrics.v1.Gauge\";\n };\n return Gauge;\n })();\n v1.Sum = (function () {\n /**\n * Properties of a Sum.\n * @memberof opentelemetry.proto.metrics.v1\n * @interface ISum\n * @property {Array.|null} [dataPoints] Sum dataPoints\n * @property {opentelemetry.proto.metrics.v1.AggregationTemporality|null} [aggregationTemporality] Sum aggregationTemporality\n * @property {boolean|null} [isMonotonic] Sum isMonotonic\n */\n /**\n * Constructs a new Sum.\n * @memberof opentelemetry.proto.metrics.v1\n * @classdesc Represents a Sum.\n * @implements ISum\n * @constructor\n * @param {opentelemetry.proto.metrics.v1.ISum=} [properties] Properties to set\n */\n function Sum(properties) {\n this.dataPoints = [];\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n /**\n * Sum dataPoints.\n * @member {Array.} dataPoints\n * @memberof opentelemetry.proto.metrics.v1.Sum\n * @instance\n */\n Sum.prototype.dataPoints = $util.emptyArray;\n /**\n * Sum aggregationTemporality.\n * @member {opentelemetry.proto.metrics.v1.AggregationTemporality|null|undefined} aggregationTemporality\n * @memberof opentelemetry.proto.metrics.v1.Sum\n * @instance\n */\n Sum.prototype.aggregationTemporality = null;\n /**\n * Sum isMonotonic.\n * @member {boolean|null|undefined} isMonotonic\n * @memberof opentelemetry.proto.metrics.v1.Sum\n * @instance\n */\n Sum.prototype.isMonotonic = null;\n /**\n * Creates a new Sum instance using the specified properties.\n * @function create\n * @memberof opentelemetry.proto.metrics.v1.Sum\n * @static\n * @param {opentelemetry.proto.metrics.v1.ISum=} [properties] Properties to set\n * @returns {opentelemetry.proto.metrics.v1.Sum} Sum instance\n */\n Sum.create = function create(properties) {\n return new Sum(properties);\n };\n /**\n * Encodes the specified Sum message. Does not implicitly {@link opentelemetry.proto.metrics.v1.Sum.verify|verify} messages.\n * @function encode\n * @memberof opentelemetry.proto.metrics.v1.Sum\n * @static\n * @param {opentelemetry.proto.metrics.v1.ISum} message Sum message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Sum.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.dataPoints != null && message.dataPoints.length)\n for (var i = 0; i < message.dataPoints.length; ++i)\n $root.opentelemetry.proto.metrics.v1.NumberDataPoint.encode(message.dataPoints[i], writer.uint32(/* id 1, wireType 2 =*/ 10).fork()).ldelim();\n if (message.aggregationTemporality != null && Object.hasOwnProperty.call(message, \"aggregationTemporality\"))\n writer.uint32(/* id 2, wireType 0 =*/ 16).int32(message.aggregationTemporality);\n if (message.isMonotonic != null && Object.hasOwnProperty.call(message, \"isMonotonic\"))\n writer.uint32(/* id 3, wireType 0 =*/ 24).bool(message.isMonotonic);\n return writer;\n };\n /**\n * Encodes the specified Sum message, length delimited. Does not implicitly {@link opentelemetry.proto.metrics.v1.Sum.verify|verify} messages.\n * @function encodeDelimited\n * @memberof opentelemetry.proto.metrics.v1.Sum\n * @static\n * @param {opentelemetry.proto.metrics.v1.ISum} message Sum message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Sum.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n /**\n * Decodes a Sum message from the specified reader or buffer.\n * @function decode\n * @memberof opentelemetry.proto.metrics.v1.Sum\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {opentelemetry.proto.metrics.v1.Sum} Sum\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Sum.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.opentelemetry.proto.metrics.v1.Sum();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (!(message.dataPoints && message.dataPoints.length))\n message.dataPoints = [];\n message.dataPoints.push($root.opentelemetry.proto.metrics.v1.NumberDataPoint.decode(reader, reader.uint32()));\n break;\n }\n case 2: {\n message.aggregationTemporality = reader.int32();\n break;\n }\n case 3: {\n message.isMonotonic = reader.bool();\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n /**\n * Decodes a Sum message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof opentelemetry.proto.metrics.v1.Sum\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {opentelemetry.proto.metrics.v1.Sum} Sum\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Sum.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n /**\n * Verifies a Sum message.\n * @function verify\n * @memberof opentelemetry.proto.metrics.v1.Sum\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n Sum.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.dataPoints != null && message.hasOwnProperty(\"dataPoints\")) {\n if (!Array.isArray(message.dataPoints))\n return \"dataPoints: array expected\";\n for (var i = 0; i < message.dataPoints.length; ++i) {\n var error = $root.opentelemetry.proto.metrics.v1.NumberDataPoint.verify(message.dataPoints[i]);\n if (error)\n return \"dataPoints.\" + error;\n }\n }\n if (message.aggregationTemporality != null && message.hasOwnProperty(\"aggregationTemporality\"))\n switch (message.aggregationTemporality) {\n default:\n return \"aggregationTemporality: enum value expected\";\n case 0:\n case 1:\n case 2:\n break;\n }\n if (message.isMonotonic != null && message.hasOwnProperty(\"isMonotonic\"))\n if (typeof message.isMonotonic !== \"boolean\")\n return \"isMonotonic: boolean expected\";\n return null;\n };\n /**\n * Creates a Sum message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof opentelemetry.proto.metrics.v1.Sum\n * @static\n * @param {Object.} object Plain object\n * @returns {opentelemetry.proto.metrics.v1.Sum} Sum\n */\n Sum.fromObject = function fromObject(object) {\n if (object instanceof $root.opentelemetry.proto.metrics.v1.Sum)\n return object;\n var message = new $root.opentelemetry.proto.metrics.v1.Sum();\n if (object.dataPoints) {\n if (!Array.isArray(object.dataPoints))\n throw TypeError(\".opentelemetry.proto.metrics.v1.Sum.dataPoints: array expected\");\n message.dataPoints = [];\n for (var i = 0; i < object.dataPoints.length; ++i) {\n if (typeof object.dataPoints[i] !== \"object\")\n throw TypeError(\".opentelemetry.proto.metrics.v1.Sum.dataPoints: object expected\");\n message.dataPoints[i] = $root.opentelemetry.proto.metrics.v1.NumberDataPoint.fromObject(object.dataPoints[i]);\n }\n }\n switch (object.aggregationTemporality) {\n default:\n if (typeof object.aggregationTemporality === \"number\") {\n message.aggregationTemporality = object.aggregationTemporality;\n break;\n }\n break;\n case \"AGGREGATION_TEMPORALITY_UNSPECIFIED\":\n case 0:\n message.aggregationTemporality = 0;\n break;\n case \"AGGREGATION_TEMPORALITY_DELTA\":\n case 1:\n message.aggregationTemporality = 1;\n break;\n case \"AGGREGATION_TEMPORALITY_CUMULATIVE\":\n case 2:\n message.aggregationTemporality = 2;\n break;\n }\n if (object.isMonotonic != null)\n message.isMonotonic = Boolean(object.isMonotonic);\n return message;\n };\n /**\n * Creates a plain object from a Sum message. Also converts values to other types if specified.\n * @function toObject\n * @memberof opentelemetry.proto.metrics.v1.Sum\n * @static\n * @param {opentelemetry.proto.metrics.v1.Sum} message Sum\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n Sum.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n var object = {};\n if (options.arrays || options.defaults)\n object.dataPoints = [];\n if (options.defaults) {\n object.aggregationTemporality = options.enums === String ? \"AGGREGATION_TEMPORALITY_UNSPECIFIED\" : 0;\n object.isMonotonic = false;\n }\n if (message.dataPoints && message.dataPoints.length) {\n object.dataPoints = [];\n for (var j = 0; j < message.dataPoints.length; ++j)\n object.dataPoints[j] = $root.opentelemetry.proto.metrics.v1.NumberDataPoint.toObject(message.dataPoints[j], options);\n }\n if (message.aggregationTemporality != null && message.hasOwnProperty(\"aggregationTemporality\"))\n object.aggregationTemporality = options.enums === String ? $root.opentelemetry.proto.metrics.v1.AggregationTemporality[message.aggregationTemporality] === undefined ? message.aggregationTemporality : $root.opentelemetry.proto.metrics.v1.AggregationTemporality[message.aggregationTemporality] : message.aggregationTemporality;\n if (message.isMonotonic != null && message.hasOwnProperty(\"isMonotonic\"))\n object.isMonotonic = message.isMonotonic;\n return object;\n };\n /**\n * Converts this Sum to JSON.\n * @function toJSON\n * @memberof opentelemetry.proto.metrics.v1.Sum\n * @instance\n * @returns {Object.} JSON object\n */\n Sum.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n /**\n * Gets the default type url for Sum\n * @function getTypeUrl\n * @memberof opentelemetry.proto.metrics.v1.Sum\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n Sum.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = \"type.googleapis.com\";\n }\n return typeUrlPrefix + \"/opentelemetry.proto.metrics.v1.Sum\";\n };\n return Sum;\n })();\n v1.Histogram = (function () {\n /**\n * Properties of a Histogram.\n * @memberof opentelemetry.proto.metrics.v1\n * @interface IHistogram\n * @property {Array.|null} [dataPoints] Histogram dataPoints\n * @property {opentelemetry.proto.metrics.v1.AggregationTemporality|null} [aggregationTemporality] Histogram aggregationTemporality\n */\n /**\n * Constructs a new Histogram.\n * @memberof opentelemetry.proto.metrics.v1\n * @classdesc Represents a Histogram.\n * @implements IHistogram\n * @constructor\n * @param {opentelemetry.proto.metrics.v1.IHistogram=} [properties] Properties to set\n */\n function Histogram(properties) {\n this.dataPoints = [];\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n /**\n * Histogram dataPoints.\n * @member {Array.} dataPoints\n * @memberof opentelemetry.proto.metrics.v1.Histogram\n * @instance\n */\n Histogram.prototype.dataPoints = $util.emptyArray;\n /**\n * Histogram aggregationTemporality.\n * @member {opentelemetry.proto.metrics.v1.AggregationTemporality|null|undefined} aggregationTemporality\n * @memberof opentelemetry.proto.metrics.v1.Histogram\n * @instance\n */\n Histogram.prototype.aggregationTemporality = null;\n /**\n * Creates a new Histogram instance using the specified properties.\n * @function create\n * @memberof opentelemetry.proto.metrics.v1.Histogram\n * @static\n * @param {opentelemetry.proto.metrics.v1.IHistogram=} [properties] Properties to set\n * @returns {opentelemetry.proto.metrics.v1.Histogram} Histogram instance\n */\n Histogram.create = function create(properties) {\n return new Histogram(properties);\n };\n /**\n * Encodes the specified Histogram message. Does not implicitly {@link opentelemetry.proto.metrics.v1.Histogram.verify|verify} messages.\n * @function encode\n * @memberof opentelemetry.proto.metrics.v1.Histogram\n * @static\n * @param {opentelemetry.proto.metrics.v1.IHistogram} message Histogram message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Histogram.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.dataPoints != null && message.dataPoints.length)\n for (var i = 0; i < message.dataPoints.length; ++i)\n $root.opentelemetry.proto.metrics.v1.HistogramDataPoint.encode(message.dataPoints[i], writer.uint32(/* id 1, wireType 2 =*/ 10).fork()).ldelim();\n if (message.aggregationTemporality != null && Object.hasOwnProperty.call(message, \"aggregationTemporality\"))\n writer.uint32(/* id 2, wireType 0 =*/ 16).int32(message.aggregationTemporality);\n return writer;\n };\n /**\n * Encodes the specified Histogram message, length delimited. Does not implicitly {@link opentelemetry.proto.metrics.v1.Histogram.verify|verify} messages.\n * @function encodeDelimited\n * @memberof opentelemetry.proto.metrics.v1.Histogram\n * @static\n * @param {opentelemetry.proto.metrics.v1.IHistogram} message Histogram message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Histogram.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n /**\n * Decodes a Histogram message from the specified reader or buffer.\n * @function decode\n * @memberof opentelemetry.proto.metrics.v1.Histogram\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {opentelemetry.proto.metrics.v1.Histogram} Histogram\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Histogram.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.opentelemetry.proto.metrics.v1.Histogram();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (!(message.dataPoints && message.dataPoints.length))\n message.dataPoints = [];\n message.dataPoints.push($root.opentelemetry.proto.metrics.v1.HistogramDataPoint.decode(reader, reader.uint32()));\n break;\n }\n case 2: {\n message.aggregationTemporality = reader.int32();\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n /**\n * Decodes a Histogram message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof opentelemetry.proto.metrics.v1.Histogram\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {opentelemetry.proto.metrics.v1.Histogram} Histogram\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Histogram.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n /**\n * Verifies a Histogram message.\n * @function verify\n * @memberof opentelemetry.proto.metrics.v1.Histogram\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n Histogram.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.dataPoints != null && message.hasOwnProperty(\"dataPoints\")) {\n if (!Array.isArray(message.dataPoints))\n return \"dataPoints: array expected\";\n for (var i = 0; i < message.dataPoints.length; ++i) {\n var error = $root.opentelemetry.proto.metrics.v1.HistogramDataPoint.verify(message.dataPoints[i]);\n if (error)\n return \"dataPoints.\" + error;\n }\n }\n if (message.aggregationTemporality != null && message.hasOwnProperty(\"aggregationTemporality\"))\n switch (message.aggregationTemporality) {\n default:\n return \"aggregationTemporality: enum value expected\";\n case 0:\n case 1:\n case 2:\n break;\n }\n return null;\n };\n /**\n * Creates a Histogram message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof opentelemetry.proto.metrics.v1.Histogram\n * @static\n * @param {Object.} object Plain object\n * @returns {opentelemetry.proto.metrics.v1.Histogram} Histogram\n */\n Histogram.fromObject = function fromObject(object) {\n if (object instanceof $root.opentelemetry.proto.metrics.v1.Histogram)\n return object;\n var message = new $root.opentelemetry.proto.metrics.v1.Histogram();\n if (object.dataPoints) {\n if (!Array.isArray(object.dataPoints))\n throw TypeError(\".opentelemetry.proto.metrics.v1.Histogram.dataPoints: array expected\");\n message.dataPoints = [];\n for (var i = 0; i < object.dataPoints.length; ++i) {\n if (typeof object.dataPoints[i] !== \"object\")\n throw TypeError(\".opentelemetry.proto.metrics.v1.Histogram.dataPoints: object expected\");\n message.dataPoints[i] = $root.opentelemetry.proto.metrics.v1.HistogramDataPoint.fromObject(object.dataPoints[i]);\n }\n }\n switch (object.aggregationTemporality) {\n default:\n if (typeof object.aggregationTemporality === \"number\") {\n message.aggregationTemporality = object.aggregationTemporality;\n break;\n }\n break;\n case \"AGGREGATION_TEMPORALITY_UNSPECIFIED\":\n case 0:\n message.aggregationTemporality = 0;\n break;\n case \"AGGREGATION_TEMPORALITY_DELTA\":\n case 1:\n message.aggregationTemporality = 1;\n break;\n case \"AGGREGATION_TEMPORALITY_CUMULATIVE\":\n case 2:\n message.aggregationTemporality = 2;\n break;\n }\n return message;\n };\n /**\n * Creates a plain object from a Histogram message. Also converts values to other types if specified.\n * @function toObject\n * @memberof opentelemetry.proto.metrics.v1.Histogram\n * @static\n * @param {opentelemetry.proto.metrics.v1.Histogram} message Histogram\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n Histogram.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n var object = {};\n if (options.arrays || options.defaults)\n object.dataPoints = [];\n if (options.defaults)\n object.aggregationTemporality = options.enums === String ? \"AGGREGATION_TEMPORALITY_UNSPECIFIED\" : 0;\n if (message.dataPoints && message.dataPoints.length) {\n object.dataPoints = [];\n for (var j = 0; j < message.dataPoints.length; ++j)\n object.dataPoints[j] = $root.opentelemetry.proto.metrics.v1.HistogramDataPoint.toObject(message.dataPoints[j], options);\n }\n if (message.aggregationTemporality != null && message.hasOwnProperty(\"aggregationTemporality\"))\n object.aggregationTemporality = options.enums === String ? $root.opentelemetry.proto.metrics.v1.AggregationTemporality[message.aggregationTemporality] === undefined ? message.aggregationTemporality : $root.opentelemetry.proto.metrics.v1.AggregationTemporality[message.aggregationTemporality] : message.aggregationTemporality;\n return object;\n };\n /**\n * Converts this Histogram to JSON.\n * @function toJSON\n * @memberof opentelemetry.proto.metrics.v1.Histogram\n * @instance\n * @returns {Object.} JSON object\n */\n Histogram.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n /**\n * Gets the default type url for Histogram\n * @function getTypeUrl\n * @memberof opentelemetry.proto.metrics.v1.Histogram\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n Histogram.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = \"type.googleapis.com\";\n }\n return typeUrlPrefix + \"/opentelemetry.proto.metrics.v1.Histogram\";\n };\n return Histogram;\n })();\n v1.ExponentialHistogram = (function () {\n /**\n * Properties of an ExponentialHistogram.\n * @memberof opentelemetry.proto.metrics.v1\n * @interface IExponentialHistogram\n * @property {Array.|null} [dataPoints] ExponentialHistogram dataPoints\n * @property {opentelemetry.proto.metrics.v1.AggregationTemporality|null} [aggregationTemporality] ExponentialHistogram aggregationTemporality\n */\n /**\n * Constructs a new ExponentialHistogram.\n * @memberof opentelemetry.proto.metrics.v1\n * @classdesc Represents an ExponentialHistogram.\n * @implements IExponentialHistogram\n * @constructor\n * @param {opentelemetry.proto.metrics.v1.IExponentialHistogram=} [properties] Properties to set\n */\n function ExponentialHistogram(properties) {\n this.dataPoints = [];\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n /**\n * ExponentialHistogram dataPoints.\n * @member {Array.} dataPoints\n * @memberof opentelemetry.proto.metrics.v1.ExponentialHistogram\n * @instance\n */\n ExponentialHistogram.prototype.dataPoints = $util.emptyArray;\n /**\n * ExponentialHistogram aggregationTemporality.\n * @member {opentelemetry.proto.metrics.v1.AggregationTemporality|null|undefined} aggregationTemporality\n * @memberof opentelemetry.proto.metrics.v1.ExponentialHistogram\n * @instance\n */\n ExponentialHistogram.prototype.aggregationTemporality = null;\n /**\n * Creates a new ExponentialHistogram instance using the specified properties.\n * @function create\n * @memberof opentelemetry.proto.metrics.v1.ExponentialHistogram\n * @static\n * @param {opentelemetry.proto.metrics.v1.IExponentialHistogram=} [properties] Properties to set\n * @returns {opentelemetry.proto.metrics.v1.ExponentialHistogram} ExponentialHistogram instance\n */\n ExponentialHistogram.create = function create(properties) {\n return new ExponentialHistogram(properties);\n };\n /**\n * Encodes the specified ExponentialHistogram message. Does not implicitly {@link opentelemetry.proto.metrics.v1.ExponentialHistogram.verify|verify} messages.\n * @function encode\n * @memberof opentelemetry.proto.metrics.v1.ExponentialHistogram\n * @static\n * @param {opentelemetry.proto.metrics.v1.IExponentialHistogram} message ExponentialHistogram message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ExponentialHistogram.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.dataPoints != null && message.dataPoints.length)\n for (var i = 0; i < message.dataPoints.length; ++i)\n $root.opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint.encode(message.dataPoints[i], writer.uint32(/* id 1, wireType 2 =*/ 10).fork()).ldelim();\n if (message.aggregationTemporality != null && Object.hasOwnProperty.call(message, \"aggregationTemporality\"))\n writer.uint32(/* id 2, wireType 0 =*/ 16).int32(message.aggregationTemporality);\n return writer;\n };\n /**\n * Encodes the specified ExponentialHistogram message, length delimited. Does not implicitly {@link opentelemetry.proto.metrics.v1.ExponentialHistogram.verify|verify} messages.\n * @function encodeDelimited\n * @memberof opentelemetry.proto.metrics.v1.ExponentialHistogram\n * @static\n * @param {opentelemetry.proto.metrics.v1.IExponentialHistogram} message ExponentialHistogram message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ExponentialHistogram.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n /**\n * Decodes an ExponentialHistogram message from the specified reader or buffer.\n * @function decode\n * @memberof opentelemetry.proto.metrics.v1.ExponentialHistogram\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {opentelemetry.proto.metrics.v1.ExponentialHistogram} ExponentialHistogram\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ExponentialHistogram.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.opentelemetry.proto.metrics.v1.ExponentialHistogram();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (!(message.dataPoints && message.dataPoints.length))\n message.dataPoints = [];\n message.dataPoints.push($root.opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint.decode(reader, reader.uint32()));\n break;\n }\n case 2: {\n message.aggregationTemporality = reader.int32();\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n /**\n * Decodes an ExponentialHistogram message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof opentelemetry.proto.metrics.v1.ExponentialHistogram\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {opentelemetry.proto.metrics.v1.ExponentialHistogram} ExponentialHistogram\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ExponentialHistogram.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n /**\n * Verifies an ExponentialHistogram message.\n * @function verify\n * @memberof opentelemetry.proto.metrics.v1.ExponentialHistogram\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n ExponentialHistogram.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.dataPoints != null && message.hasOwnProperty(\"dataPoints\")) {\n if (!Array.isArray(message.dataPoints))\n return \"dataPoints: array expected\";\n for (var i = 0; i < message.dataPoints.length; ++i) {\n var error = $root.opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint.verify(message.dataPoints[i]);\n if (error)\n return \"dataPoints.\" + error;\n }\n }\n if (message.aggregationTemporality != null && message.hasOwnProperty(\"aggregationTemporality\"))\n switch (message.aggregationTemporality) {\n default:\n return \"aggregationTemporality: enum value expected\";\n case 0:\n case 1:\n case 2:\n break;\n }\n return null;\n };\n /**\n * Creates an ExponentialHistogram message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof opentelemetry.proto.metrics.v1.ExponentialHistogram\n * @static\n * @param {Object.} object Plain object\n * @returns {opentelemetry.proto.metrics.v1.ExponentialHistogram} ExponentialHistogram\n */\n ExponentialHistogram.fromObject = function fromObject(object) {\n if (object instanceof $root.opentelemetry.proto.metrics.v1.ExponentialHistogram)\n return object;\n var message = new $root.opentelemetry.proto.metrics.v1.ExponentialHistogram();\n if (object.dataPoints) {\n if (!Array.isArray(object.dataPoints))\n throw TypeError(\".opentelemetry.proto.metrics.v1.ExponentialHistogram.dataPoints: array expected\");\n message.dataPoints = [];\n for (var i = 0; i < object.dataPoints.length; ++i) {\n if (typeof object.dataPoints[i] !== \"object\")\n throw TypeError(\".opentelemetry.proto.metrics.v1.ExponentialHistogram.dataPoints: object expected\");\n message.dataPoints[i] = $root.opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint.fromObject(object.dataPoints[i]);\n }\n }\n switch (object.aggregationTemporality) {\n default:\n if (typeof object.aggregationTemporality === \"number\") {\n message.aggregationTemporality = object.aggregationTemporality;\n break;\n }\n break;\n case \"AGGREGATION_TEMPORALITY_UNSPECIFIED\":\n case 0:\n message.aggregationTemporality = 0;\n break;\n case \"AGGREGATION_TEMPORALITY_DELTA\":\n case 1:\n message.aggregationTemporality = 1;\n break;\n case \"AGGREGATION_TEMPORALITY_CUMULATIVE\":\n case 2:\n message.aggregationTemporality = 2;\n break;\n }\n return message;\n };\n /**\n * Creates a plain object from an ExponentialHistogram message. Also converts values to other types if specified.\n * @function toObject\n * @memberof opentelemetry.proto.metrics.v1.ExponentialHistogram\n * @static\n * @param {opentelemetry.proto.metrics.v1.ExponentialHistogram} message ExponentialHistogram\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n ExponentialHistogram.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n var object = {};\n if (options.arrays || options.defaults)\n object.dataPoints = [];\n if (options.defaults)\n object.aggregationTemporality = options.enums === String ? \"AGGREGATION_TEMPORALITY_UNSPECIFIED\" : 0;\n if (message.dataPoints && message.dataPoints.length) {\n object.dataPoints = [];\n for (var j = 0; j < message.dataPoints.length; ++j)\n object.dataPoints[j] = $root.opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint.toObject(message.dataPoints[j], options);\n }\n if (message.aggregationTemporality != null && message.hasOwnProperty(\"aggregationTemporality\"))\n object.aggregationTemporality = options.enums === String ? $root.opentelemetry.proto.metrics.v1.AggregationTemporality[message.aggregationTemporality] === undefined ? message.aggregationTemporality : $root.opentelemetry.proto.metrics.v1.AggregationTemporality[message.aggregationTemporality] : message.aggregationTemporality;\n return object;\n };\n /**\n * Converts this ExponentialHistogram to JSON.\n * @function toJSON\n * @memberof opentelemetry.proto.metrics.v1.ExponentialHistogram\n * @instance\n * @returns {Object.} JSON object\n */\n ExponentialHistogram.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n /**\n * Gets the default type url for ExponentialHistogram\n * @function getTypeUrl\n * @memberof opentelemetry.proto.metrics.v1.ExponentialHistogram\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n ExponentialHistogram.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = \"type.googleapis.com\";\n }\n return typeUrlPrefix + \"/opentelemetry.proto.metrics.v1.ExponentialHistogram\";\n };\n return ExponentialHistogram;\n })();\n v1.Summary = (function () {\n /**\n * Properties of a Summary.\n * @memberof opentelemetry.proto.metrics.v1\n * @interface ISummary\n * @property {Array.|null} [dataPoints] Summary dataPoints\n */\n /**\n * Constructs a new Summary.\n * @memberof opentelemetry.proto.metrics.v1\n * @classdesc Represents a Summary.\n * @implements ISummary\n * @constructor\n * @param {opentelemetry.proto.metrics.v1.ISummary=} [properties] Properties to set\n */\n function Summary(properties) {\n this.dataPoints = [];\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n /**\n * Summary dataPoints.\n * @member {Array.} dataPoints\n * @memberof opentelemetry.proto.metrics.v1.Summary\n * @instance\n */\n Summary.prototype.dataPoints = $util.emptyArray;\n /**\n * Creates a new Summary instance using the specified properties.\n * @function create\n * @memberof opentelemetry.proto.metrics.v1.Summary\n * @static\n * @param {opentelemetry.proto.metrics.v1.ISummary=} [properties] Properties to set\n * @returns {opentelemetry.proto.metrics.v1.Summary} Summary instance\n */\n Summary.create = function create(properties) {\n return new Summary(properties);\n };\n /**\n * Encodes the specified Summary message. Does not implicitly {@link opentelemetry.proto.metrics.v1.Summary.verify|verify} messages.\n * @function encode\n * @memberof opentelemetry.proto.metrics.v1.Summary\n * @static\n * @param {opentelemetry.proto.metrics.v1.ISummary} message Summary message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Summary.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.dataPoints != null && message.dataPoints.length)\n for (var i = 0; i < message.dataPoints.length; ++i)\n $root.opentelemetry.proto.metrics.v1.SummaryDataPoint.encode(message.dataPoints[i], writer.uint32(/* id 1, wireType 2 =*/ 10).fork()).ldelim();\n return writer;\n };\n /**\n * Encodes the specified Summary message, length delimited. Does not implicitly {@link opentelemetry.proto.metrics.v1.Summary.verify|verify} messages.\n * @function encodeDelimited\n * @memberof opentelemetry.proto.metrics.v1.Summary\n * @static\n * @param {opentelemetry.proto.metrics.v1.ISummary} message Summary message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Summary.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n /**\n * Decodes a Summary message from the specified reader or buffer.\n * @function decode\n * @memberof opentelemetry.proto.metrics.v1.Summary\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {opentelemetry.proto.metrics.v1.Summary} Summary\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Summary.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.opentelemetry.proto.metrics.v1.Summary();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (!(message.dataPoints && message.dataPoints.length))\n message.dataPoints = [];\n message.dataPoints.push($root.opentelemetry.proto.metrics.v1.SummaryDataPoint.decode(reader, reader.uint32()));\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n /**\n * Decodes a Summary message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof opentelemetry.proto.metrics.v1.Summary\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {opentelemetry.proto.metrics.v1.Summary} Summary\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Summary.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n /**\n * Verifies a Summary message.\n * @function verify\n * @memberof opentelemetry.proto.metrics.v1.Summary\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n Summary.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.dataPoints != null && message.hasOwnProperty(\"dataPoints\")) {\n if (!Array.isArray(message.dataPoints))\n return \"dataPoints: array expected\";\n for (var i = 0; i < message.dataPoints.length; ++i) {\n var error = $root.opentelemetry.proto.metrics.v1.SummaryDataPoint.verify(message.dataPoints[i]);\n if (error)\n return \"dataPoints.\" + error;\n }\n }\n return null;\n };\n /**\n * Creates a Summary message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof opentelemetry.proto.metrics.v1.Summary\n * @static\n * @param {Object.} object Plain object\n * @returns {opentelemetry.proto.metrics.v1.Summary} Summary\n */\n Summary.fromObject = function fromObject(object) {\n if (object instanceof $root.opentelemetry.proto.metrics.v1.Summary)\n return object;\n var message = new $root.opentelemetry.proto.metrics.v1.Summary();\n if (object.dataPoints) {\n if (!Array.isArray(object.dataPoints))\n throw TypeError(\".opentelemetry.proto.metrics.v1.Summary.dataPoints: array expected\");\n message.dataPoints = [];\n for (var i = 0; i < object.dataPoints.length; ++i) {\n if (typeof object.dataPoints[i] !== \"object\")\n throw TypeError(\".opentelemetry.proto.metrics.v1.Summary.dataPoints: object expected\");\n message.dataPoints[i] = $root.opentelemetry.proto.metrics.v1.SummaryDataPoint.fromObject(object.dataPoints[i]);\n }\n }\n return message;\n };\n /**\n * Creates a plain object from a Summary message. Also converts values to other types if specified.\n * @function toObject\n * @memberof opentelemetry.proto.metrics.v1.Summary\n * @static\n * @param {opentelemetry.proto.metrics.v1.Summary} message Summary\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n Summary.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n var object = {};\n if (options.arrays || options.defaults)\n object.dataPoints = [];\n if (message.dataPoints && message.dataPoints.length) {\n object.dataPoints = [];\n for (var j = 0; j < message.dataPoints.length; ++j)\n object.dataPoints[j] = $root.opentelemetry.proto.metrics.v1.SummaryDataPoint.toObject(message.dataPoints[j], options);\n }\n return object;\n };\n /**\n * Converts this Summary to JSON.\n * @function toJSON\n * @memberof opentelemetry.proto.metrics.v1.Summary\n * @instance\n * @returns {Object.} JSON object\n */\n Summary.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n /**\n * Gets the default type url for Summary\n * @function getTypeUrl\n * @memberof opentelemetry.proto.metrics.v1.Summary\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n Summary.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = \"type.googleapis.com\";\n }\n return typeUrlPrefix + \"/opentelemetry.proto.metrics.v1.Summary\";\n };\n return Summary;\n })();\n /**\n * AggregationTemporality enum.\n * @name opentelemetry.proto.metrics.v1.AggregationTemporality\n * @enum {number}\n * @property {number} AGGREGATION_TEMPORALITY_UNSPECIFIED=0 AGGREGATION_TEMPORALITY_UNSPECIFIED value\n * @property {number} AGGREGATION_TEMPORALITY_DELTA=1 AGGREGATION_TEMPORALITY_DELTA value\n * @property {number} AGGREGATION_TEMPORALITY_CUMULATIVE=2 AGGREGATION_TEMPORALITY_CUMULATIVE value\n */\n v1.AggregationTemporality = (function () {\n var valuesById = {}, values = Object.create(valuesById);\n values[valuesById[0] = \"AGGREGATION_TEMPORALITY_UNSPECIFIED\"] = 0;\n values[valuesById[1] = \"AGGREGATION_TEMPORALITY_DELTA\"] = 1;\n values[valuesById[2] = \"AGGREGATION_TEMPORALITY_CUMULATIVE\"] = 2;\n return values;\n })();\n /**\n * DataPointFlags enum.\n * @name opentelemetry.proto.metrics.v1.DataPointFlags\n * @enum {number}\n * @property {number} DATA_POINT_FLAGS_DO_NOT_USE=0 DATA_POINT_FLAGS_DO_NOT_USE value\n * @property {number} DATA_POINT_FLAGS_NO_RECORDED_VALUE_MASK=1 DATA_POINT_FLAGS_NO_RECORDED_VALUE_MASK value\n */\n v1.DataPointFlags = (function () {\n var valuesById = {}, values = Object.create(valuesById);\n values[valuesById[0] = \"DATA_POINT_FLAGS_DO_NOT_USE\"] = 0;\n values[valuesById[1] = \"DATA_POINT_FLAGS_NO_RECORDED_VALUE_MASK\"] = 1;\n return values;\n })();\n v1.NumberDataPoint = (function () {\n /**\n * Properties of a NumberDataPoint.\n * @memberof opentelemetry.proto.metrics.v1\n * @interface INumberDataPoint\n * @property {Array.|null} [attributes] NumberDataPoint attributes\n * @property {number|Long|null} [startTimeUnixNano] NumberDataPoint startTimeUnixNano\n * @property {number|Long|null} [timeUnixNano] NumberDataPoint timeUnixNano\n * @property {number|null} [asDouble] NumberDataPoint asDouble\n * @property {number|Long|null} [asInt] NumberDataPoint asInt\n * @property {Array.|null} [exemplars] NumberDataPoint exemplars\n * @property {number|null} [flags] NumberDataPoint flags\n */\n /**\n * Constructs a new NumberDataPoint.\n * @memberof opentelemetry.proto.metrics.v1\n * @classdesc Represents a NumberDataPoint.\n * @implements INumberDataPoint\n * @constructor\n * @param {opentelemetry.proto.metrics.v1.INumberDataPoint=} [properties] Properties to set\n */\n function NumberDataPoint(properties) {\n this.attributes = [];\n this.exemplars = [];\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n /**\n * NumberDataPoint attributes.\n * @member {Array.} attributes\n * @memberof opentelemetry.proto.metrics.v1.NumberDataPoint\n * @instance\n */\n NumberDataPoint.prototype.attributes = $util.emptyArray;\n /**\n * NumberDataPoint startTimeUnixNano.\n * @member {number|Long|null|undefined} startTimeUnixNano\n * @memberof opentelemetry.proto.metrics.v1.NumberDataPoint\n * @instance\n */\n NumberDataPoint.prototype.startTimeUnixNano = null;\n /**\n * NumberDataPoint timeUnixNano.\n * @member {number|Long|null|undefined} timeUnixNano\n * @memberof opentelemetry.proto.metrics.v1.NumberDataPoint\n * @instance\n */\n NumberDataPoint.prototype.timeUnixNano = null;\n /**\n * NumberDataPoint asDouble.\n * @member {number|null|undefined} asDouble\n * @memberof opentelemetry.proto.metrics.v1.NumberDataPoint\n * @instance\n */\n NumberDataPoint.prototype.asDouble = null;\n /**\n * NumberDataPoint asInt.\n * @member {number|Long|null|undefined} asInt\n * @memberof opentelemetry.proto.metrics.v1.NumberDataPoint\n * @instance\n */\n NumberDataPoint.prototype.asInt = null;\n /**\n * NumberDataPoint exemplars.\n * @member {Array.} exemplars\n * @memberof opentelemetry.proto.metrics.v1.NumberDataPoint\n * @instance\n */\n NumberDataPoint.prototype.exemplars = $util.emptyArray;\n /**\n * NumberDataPoint flags.\n * @member {number|null|undefined} flags\n * @memberof opentelemetry.proto.metrics.v1.NumberDataPoint\n * @instance\n */\n NumberDataPoint.prototype.flags = null;\n // OneOf field names bound to virtual getters and setters\n var $oneOfFields;\n /**\n * NumberDataPoint value.\n * @member {\"asDouble\"|\"asInt\"|undefined} value\n * @memberof opentelemetry.proto.metrics.v1.NumberDataPoint\n * @instance\n */\n Object.defineProperty(NumberDataPoint.prototype, \"value\", {\n get: $util.oneOfGetter($oneOfFields = [\"asDouble\", \"asInt\"]),\n set: $util.oneOfSetter($oneOfFields)\n });\n /**\n * Creates a new NumberDataPoint instance using the specified properties.\n * @function create\n * @memberof opentelemetry.proto.metrics.v1.NumberDataPoint\n * @static\n * @param {opentelemetry.proto.metrics.v1.INumberDataPoint=} [properties] Properties to set\n * @returns {opentelemetry.proto.metrics.v1.NumberDataPoint} NumberDataPoint instance\n */\n NumberDataPoint.create = function create(properties) {\n return new NumberDataPoint(properties);\n };\n /**\n * Encodes the specified NumberDataPoint message. Does not implicitly {@link opentelemetry.proto.metrics.v1.NumberDataPoint.verify|verify} messages.\n * @function encode\n * @memberof opentelemetry.proto.metrics.v1.NumberDataPoint\n * @static\n * @param {opentelemetry.proto.metrics.v1.INumberDataPoint} message NumberDataPoint message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n NumberDataPoint.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.startTimeUnixNano != null && Object.hasOwnProperty.call(message, \"startTimeUnixNano\"))\n writer.uint32(/* id 2, wireType 1 =*/ 17).fixed64(message.startTimeUnixNano);\n if (message.timeUnixNano != null && Object.hasOwnProperty.call(message, \"timeUnixNano\"))\n writer.uint32(/* id 3, wireType 1 =*/ 25).fixed64(message.timeUnixNano);\n if (message.asDouble != null && Object.hasOwnProperty.call(message, \"asDouble\"))\n writer.uint32(/* id 4, wireType 1 =*/ 33).double(message.asDouble);\n if (message.exemplars != null && message.exemplars.length)\n for (var i = 0; i < message.exemplars.length; ++i)\n $root.opentelemetry.proto.metrics.v1.Exemplar.encode(message.exemplars[i], writer.uint32(/* id 5, wireType 2 =*/ 42).fork()).ldelim();\n if (message.asInt != null && Object.hasOwnProperty.call(message, \"asInt\"))\n writer.uint32(/* id 6, wireType 1 =*/ 49).sfixed64(message.asInt);\n if (message.attributes != null && message.attributes.length)\n for (var i = 0; i < message.attributes.length; ++i)\n $root.opentelemetry.proto.common.v1.KeyValue.encode(message.attributes[i], writer.uint32(/* id 7, wireType 2 =*/ 58).fork()).ldelim();\n if (message.flags != null && Object.hasOwnProperty.call(message, \"flags\"))\n writer.uint32(/* id 8, wireType 0 =*/ 64).uint32(message.flags);\n return writer;\n };\n /**\n * Encodes the specified NumberDataPoint message, length delimited. Does not implicitly {@link opentelemetry.proto.metrics.v1.NumberDataPoint.verify|verify} messages.\n * @function encodeDelimited\n * @memberof opentelemetry.proto.metrics.v1.NumberDataPoint\n * @static\n * @param {opentelemetry.proto.metrics.v1.INumberDataPoint} message NumberDataPoint message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n NumberDataPoint.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n /**\n * Decodes a NumberDataPoint message from the specified reader or buffer.\n * @function decode\n * @memberof opentelemetry.proto.metrics.v1.NumberDataPoint\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {opentelemetry.proto.metrics.v1.NumberDataPoint} NumberDataPoint\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n NumberDataPoint.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.opentelemetry.proto.metrics.v1.NumberDataPoint();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 7: {\n if (!(message.attributes && message.attributes.length))\n message.attributes = [];\n message.attributes.push($root.opentelemetry.proto.common.v1.KeyValue.decode(reader, reader.uint32()));\n break;\n }\n case 2: {\n message.startTimeUnixNano = reader.fixed64();\n break;\n }\n case 3: {\n message.timeUnixNano = reader.fixed64();\n break;\n }\n case 4: {\n message.asDouble = reader.double();\n break;\n }\n case 6: {\n message.asInt = reader.sfixed64();\n break;\n }\n case 5: {\n if (!(message.exemplars && message.exemplars.length))\n message.exemplars = [];\n message.exemplars.push($root.opentelemetry.proto.metrics.v1.Exemplar.decode(reader, reader.uint32()));\n break;\n }\n case 8: {\n message.flags = reader.uint32();\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n /**\n * Decodes a NumberDataPoint message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof opentelemetry.proto.metrics.v1.NumberDataPoint\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {opentelemetry.proto.metrics.v1.NumberDataPoint} NumberDataPoint\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n NumberDataPoint.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n /**\n * Verifies a NumberDataPoint message.\n * @function verify\n * @memberof opentelemetry.proto.metrics.v1.NumberDataPoint\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n NumberDataPoint.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n var properties = {};\n if (message.attributes != null && message.hasOwnProperty(\"attributes\")) {\n if (!Array.isArray(message.attributes))\n return \"attributes: array expected\";\n for (var i = 0; i < message.attributes.length; ++i) {\n var error = $root.opentelemetry.proto.common.v1.KeyValue.verify(message.attributes[i]);\n if (error)\n return \"attributes.\" + error;\n }\n }\n if (message.startTimeUnixNano != null && message.hasOwnProperty(\"startTimeUnixNano\"))\n if (!$util.isInteger(message.startTimeUnixNano) && !(message.startTimeUnixNano && $util.isInteger(message.startTimeUnixNano.low) && $util.isInteger(message.startTimeUnixNano.high)))\n return \"startTimeUnixNano: integer|Long expected\";\n if (message.timeUnixNano != null && message.hasOwnProperty(\"timeUnixNano\"))\n if (!$util.isInteger(message.timeUnixNano) && !(message.timeUnixNano && $util.isInteger(message.timeUnixNano.low) && $util.isInteger(message.timeUnixNano.high)))\n return \"timeUnixNano: integer|Long expected\";\n if (message.asDouble != null && message.hasOwnProperty(\"asDouble\")) {\n properties.value = 1;\n if (typeof message.asDouble !== \"number\")\n return \"asDouble: number expected\";\n }\n if (message.asInt != null && message.hasOwnProperty(\"asInt\")) {\n if (properties.value === 1)\n return \"value: multiple values\";\n properties.value = 1;\n if (!$util.isInteger(message.asInt) && !(message.asInt && $util.isInteger(message.asInt.low) && $util.isInteger(message.asInt.high)))\n return \"asInt: integer|Long expected\";\n }\n if (message.exemplars != null && message.hasOwnProperty(\"exemplars\")) {\n if (!Array.isArray(message.exemplars))\n return \"exemplars: array expected\";\n for (var i = 0; i < message.exemplars.length; ++i) {\n var error = $root.opentelemetry.proto.metrics.v1.Exemplar.verify(message.exemplars[i]);\n if (error)\n return \"exemplars.\" + error;\n }\n }\n if (message.flags != null && message.hasOwnProperty(\"flags\"))\n if (!$util.isInteger(message.flags))\n return \"flags: integer expected\";\n return null;\n };\n /**\n * Creates a NumberDataPoint message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof opentelemetry.proto.metrics.v1.NumberDataPoint\n * @static\n * @param {Object.} object Plain object\n * @returns {opentelemetry.proto.metrics.v1.NumberDataPoint} NumberDataPoint\n */\n NumberDataPoint.fromObject = function fromObject(object) {\n if (object instanceof $root.opentelemetry.proto.metrics.v1.NumberDataPoint)\n return object;\n var message = new $root.opentelemetry.proto.metrics.v1.NumberDataPoint();\n if (object.attributes) {\n if (!Array.isArray(object.attributes))\n throw TypeError(\".opentelemetry.proto.metrics.v1.NumberDataPoint.attributes: array expected\");\n message.attributes = [];\n for (var i = 0; i < object.attributes.length; ++i) {\n if (typeof object.attributes[i] !== \"object\")\n throw TypeError(\".opentelemetry.proto.metrics.v1.NumberDataPoint.attributes: object expected\");\n message.attributes[i] = $root.opentelemetry.proto.common.v1.KeyValue.fromObject(object.attributes[i]);\n }\n }\n if (object.startTimeUnixNano != null)\n if ($util.Long)\n (message.startTimeUnixNano = $util.Long.fromValue(object.startTimeUnixNano)).unsigned = false;\n else if (typeof object.startTimeUnixNano === \"string\")\n message.startTimeUnixNano = parseInt(object.startTimeUnixNano, 10);\n else if (typeof object.startTimeUnixNano === \"number\")\n message.startTimeUnixNano = object.startTimeUnixNano;\n else if (typeof object.startTimeUnixNano === \"object\")\n message.startTimeUnixNano = new $util.LongBits(object.startTimeUnixNano.low >>> 0, object.startTimeUnixNano.high >>> 0).toNumber();\n if (object.timeUnixNano != null)\n if ($util.Long)\n (message.timeUnixNano = $util.Long.fromValue(object.timeUnixNano)).unsigned = false;\n else if (typeof object.timeUnixNano === \"string\")\n message.timeUnixNano = parseInt(object.timeUnixNano, 10);\n else if (typeof object.timeUnixNano === \"number\")\n message.timeUnixNano = object.timeUnixNano;\n else if (typeof object.timeUnixNano === \"object\")\n message.timeUnixNano = new $util.LongBits(object.timeUnixNano.low >>> 0, object.timeUnixNano.high >>> 0).toNumber();\n if (object.asDouble != null)\n message.asDouble = Number(object.asDouble);\n if (object.asInt != null)\n if ($util.Long)\n (message.asInt = $util.Long.fromValue(object.asInt)).unsigned = false;\n else if (typeof object.asInt === \"string\")\n message.asInt = parseInt(object.asInt, 10);\n else if (typeof object.asInt === \"number\")\n message.asInt = object.asInt;\n else if (typeof object.asInt === \"object\")\n message.asInt = new $util.LongBits(object.asInt.low >>> 0, object.asInt.high >>> 0).toNumber();\n if (object.exemplars) {\n if (!Array.isArray(object.exemplars))\n throw TypeError(\".opentelemetry.proto.metrics.v1.NumberDataPoint.exemplars: array expected\");\n message.exemplars = [];\n for (var i = 0; i < object.exemplars.length; ++i) {\n if (typeof object.exemplars[i] !== \"object\")\n throw TypeError(\".opentelemetry.proto.metrics.v1.NumberDataPoint.exemplars: object expected\");\n message.exemplars[i] = $root.opentelemetry.proto.metrics.v1.Exemplar.fromObject(object.exemplars[i]);\n }\n }\n if (object.flags != null)\n message.flags = object.flags >>> 0;\n return message;\n };\n /**\n * Creates a plain object from a NumberDataPoint message. Also converts values to other types if specified.\n * @function toObject\n * @memberof opentelemetry.proto.metrics.v1.NumberDataPoint\n * @static\n * @param {opentelemetry.proto.metrics.v1.NumberDataPoint} message NumberDataPoint\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n NumberDataPoint.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n var object = {};\n if (options.arrays || options.defaults) {\n object.exemplars = [];\n object.attributes = [];\n }\n if (options.defaults) {\n if ($util.Long) {\n var long = new $util.Long(0, 0, false);\n object.startTimeUnixNano = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n }\n else\n object.startTimeUnixNano = options.longs === String ? \"0\" : 0;\n if ($util.Long) {\n var long = new $util.Long(0, 0, false);\n object.timeUnixNano = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n }\n else\n object.timeUnixNano = options.longs === String ? \"0\" : 0;\n object.flags = 0;\n }\n if (message.startTimeUnixNano != null && message.hasOwnProperty(\"startTimeUnixNano\"))\n if (typeof message.startTimeUnixNano === \"number\")\n object.startTimeUnixNano = options.longs === String ? String(message.startTimeUnixNano) : message.startTimeUnixNano;\n else\n object.startTimeUnixNano = options.longs === String ? $util.Long.prototype.toString.call(message.startTimeUnixNano) : options.longs === Number ? new $util.LongBits(message.startTimeUnixNano.low >>> 0, message.startTimeUnixNano.high >>> 0).toNumber() : message.startTimeUnixNano;\n if (message.timeUnixNano != null && message.hasOwnProperty(\"timeUnixNano\"))\n if (typeof message.timeUnixNano === \"number\")\n object.timeUnixNano = options.longs === String ? String(message.timeUnixNano) : message.timeUnixNano;\n else\n object.timeUnixNano = options.longs === String ? $util.Long.prototype.toString.call(message.timeUnixNano) : options.longs === Number ? new $util.LongBits(message.timeUnixNano.low >>> 0, message.timeUnixNano.high >>> 0).toNumber() : message.timeUnixNano;\n if (message.asDouble != null && message.hasOwnProperty(\"asDouble\")) {\n object.asDouble = options.json && !isFinite(message.asDouble) ? String(message.asDouble) : message.asDouble;\n if (options.oneofs)\n object.value = \"asDouble\";\n }\n if (message.exemplars && message.exemplars.length) {\n object.exemplars = [];\n for (var j = 0; j < message.exemplars.length; ++j)\n object.exemplars[j] = $root.opentelemetry.proto.metrics.v1.Exemplar.toObject(message.exemplars[j], options);\n }\n if (message.asInt != null && message.hasOwnProperty(\"asInt\")) {\n if (typeof message.asInt === \"number\")\n object.asInt = options.longs === String ? String(message.asInt) : message.asInt;\n else\n object.asInt = options.longs === String ? $util.Long.prototype.toString.call(message.asInt) : options.longs === Number ? new $util.LongBits(message.asInt.low >>> 0, message.asInt.high >>> 0).toNumber() : message.asInt;\n if (options.oneofs)\n object.value = \"asInt\";\n }\n if (message.attributes && message.attributes.length) {\n object.attributes = [];\n for (var j = 0; j < message.attributes.length; ++j)\n object.attributes[j] = $root.opentelemetry.proto.common.v1.KeyValue.toObject(message.attributes[j], options);\n }\n if (message.flags != null && message.hasOwnProperty(\"flags\"))\n object.flags = message.flags;\n return object;\n };\n /**\n * Converts this NumberDataPoint to JSON.\n * @function toJSON\n * @memberof opentelemetry.proto.metrics.v1.NumberDataPoint\n * @instance\n * @returns {Object.} JSON object\n */\n NumberDataPoint.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n /**\n * Gets the default type url for NumberDataPoint\n * @function getTypeUrl\n * @memberof opentelemetry.proto.metrics.v1.NumberDataPoint\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n NumberDataPoint.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = \"type.googleapis.com\";\n }\n return typeUrlPrefix + \"/opentelemetry.proto.metrics.v1.NumberDataPoint\";\n };\n return NumberDataPoint;\n })();\n v1.HistogramDataPoint = (function () {\n /**\n * Properties of a HistogramDataPoint.\n * @memberof opentelemetry.proto.metrics.v1\n * @interface IHistogramDataPoint\n * @property {Array.|null} [attributes] HistogramDataPoint attributes\n * @property {number|Long|null} [startTimeUnixNano] HistogramDataPoint startTimeUnixNano\n * @property {number|Long|null} [timeUnixNano] HistogramDataPoint timeUnixNano\n * @property {number|Long|null} [count] HistogramDataPoint count\n * @property {number|null} [sum] HistogramDataPoint sum\n * @property {Array.|null} [bucketCounts] HistogramDataPoint bucketCounts\n * @property {Array.|null} [explicitBounds] HistogramDataPoint explicitBounds\n * @property {Array.|null} [exemplars] HistogramDataPoint exemplars\n * @property {number|null} [flags] HistogramDataPoint flags\n * @property {number|null} [min] HistogramDataPoint min\n * @property {number|null} [max] HistogramDataPoint max\n */\n /**\n * Constructs a new HistogramDataPoint.\n * @memberof opentelemetry.proto.metrics.v1\n * @classdesc Represents a HistogramDataPoint.\n * @implements IHistogramDataPoint\n * @constructor\n * @param {opentelemetry.proto.metrics.v1.IHistogramDataPoint=} [properties] Properties to set\n */\n function HistogramDataPoint(properties) {\n this.attributes = [];\n this.bucketCounts = [];\n this.explicitBounds = [];\n this.exemplars = [];\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n /**\n * HistogramDataPoint attributes.\n * @member {Array.} attributes\n * @memberof opentelemetry.proto.metrics.v1.HistogramDataPoint\n * @instance\n */\n HistogramDataPoint.prototype.attributes = $util.emptyArray;\n /**\n * HistogramDataPoint startTimeUnixNano.\n * @member {number|Long|null|undefined} startTimeUnixNano\n * @memberof opentelemetry.proto.metrics.v1.HistogramDataPoint\n * @instance\n */\n HistogramDataPoint.prototype.startTimeUnixNano = null;\n /**\n * HistogramDataPoint timeUnixNano.\n * @member {number|Long|null|undefined} timeUnixNano\n * @memberof opentelemetry.proto.metrics.v1.HistogramDataPoint\n * @instance\n */\n HistogramDataPoint.prototype.timeUnixNano = null;\n /**\n * HistogramDataPoint count.\n * @member {number|Long|null|undefined} count\n * @memberof opentelemetry.proto.metrics.v1.HistogramDataPoint\n * @instance\n */\n HistogramDataPoint.prototype.count = null;\n /**\n * HistogramDataPoint sum.\n * @member {number|null|undefined} sum\n * @memberof opentelemetry.proto.metrics.v1.HistogramDataPoint\n * @instance\n */\n HistogramDataPoint.prototype.sum = null;\n /**\n * HistogramDataPoint bucketCounts.\n * @member {Array.} bucketCounts\n * @memberof opentelemetry.proto.metrics.v1.HistogramDataPoint\n * @instance\n */\n HistogramDataPoint.prototype.bucketCounts = $util.emptyArray;\n /**\n * HistogramDataPoint explicitBounds.\n * @member {Array.} explicitBounds\n * @memberof opentelemetry.proto.metrics.v1.HistogramDataPoint\n * @instance\n */\n HistogramDataPoint.prototype.explicitBounds = $util.emptyArray;\n /**\n * HistogramDataPoint exemplars.\n * @member {Array.} exemplars\n * @memberof opentelemetry.proto.metrics.v1.HistogramDataPoint\n * @instance\n */\n HistogramDataPoint.prototype.exemplars = $util.emptyArray;\n /**\n * HistogramDataPoint flags.\n * @member {number|null|undefined} flags\n * @memberof opentelemetry.proto.metrics.v1.HistogramDataPoint\n * @instance\n */\n HistogramDataPoint.prototype.flags = null;\n /**\n * HistogramDataPoint min.\n * @member {number|null|undefined} min\n * @memberof opentelemetry.proto.metrics.v1.HistogramDataPoint\n * @instance\n */\n HistogramDataPoint.prototype.min = null;\n /**\n * HistogramDataPoint max.\n * @member {number|null|undefined} max\n * @memberof opentelemetry.proto.metrics.v1.HistogramDataPoint\n * @instance\n */\n HistogramDataPoint.prototype.max = null;\n // OneOf field names bound to virtual getters and setters\n var $oneOfFields;\n /**\n * HistogramDataPoint _sum.\n * @member {\"sum\"|undefined} _sum\n * @memberof opentelemetry.proto.metrics.v1.HistogramDataPoint\n * @instance\n */\n Object.defineProperty(HistogramDataPoint.prototype, \"_sum\", {\n get: $util.oneOfGetter($oneOfFields = [\"sum\"]),\n set: $util.oneOfSetter($oneOfFields)\n });\n /**\n * HistogramDataPoint _min.\n * @member {\"min\"|undefined} _min\n * @memberof opentelemetry.proto.metrics.v1.HistogramDataPoint\n * @instance\n */\n Object.defineProperty(HistogramDataPoint.prototype, \"_min\", {\n get: $util.oneOfGetter($oneOfFields = [\"min\"]),\n set: $util.oneOfSetter($oneOfFields)\n });\n /**\n * HistogramDataPoint _max.\n * @member {\"max\"|undefined} _max\n * @memberof opentelemetry.proto.metrics.v1.HistogramDataPoint\n * @instance\n */\n Object.defineProperty(HistogramDataPoint.prototype, \"_max\", {\n get: $util.oneOfGetter($oneOfFields = [\"max\"]),\n set: $util.oneOfSetter($oneOfFields)\n });\n /**\n * Creates a new HistogramDataPoint instance using the specified properties.\n * @function create\n * @memberof opentelemetry.proto.metrics.v1.HistogramDataPoint\n * @static\n * @param {opentelemetry.proto.metrics.v1.IHistogramDataPoint=} [properties] Properties to set\n * @returns {opentelemetry.proto.metrics.v1.HistogramDataPoint} HistogramDataPoint instance\n */\n HistogramDataPoint.create = function create(properties) {\n return new HistogramDataPoint(properties);\n };\n /**\n * Encodes the specified HistogramDataPoint message. Does not implicitly {@link opentelemetry.proto.metrics.v1.HistogramDataPoint.verify|verify} messages.\n * @function encode\n * @memberof opentelemetry.proto.metrics.v1.HistogramDataPoint\n * @static\n * @param {opentelemetry.proto.metrics.v1.IHistogramDataPoint} message HistogramDataPoint message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n HistogramDataPoint.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.startTimeUnixNano != null && Object.hasOwnProperty.call(message, \"startTimeUnixNano\"))\n writer.uint32(/* id 2, wireType 1 =*/ 17).fixed64(message.startTimeUnixNano);\n if (message.timeUnixNano != null && Object.hasOwnProperty.call(message, \"timeUnixNano\"))\n writer.uint32(/* id 3, wireType 1 =*/ 25).fixed64(message.timeUnixNano);\n if (message.count != null && Object.hasOwnProperty.call(message, \"count\"))\n writer.uint32(/* id 4, wireType 1 =*/ 33).fixed64(message.count);\n if (message.sum != null && Object.hasOwnProperty.call(message, \"sum\"))\n writer.uint32(/* id 5, wireType 1 =*/ 41).double(message.sum);\n if (message.bucketCounts != null && message.bucketCounts.length) {\n writer.uint32(/* id 6, wireType 2 =*/ 50).fork();\n for (var i = 0; i < message.bucketCounts.length; ++i)\n writer.fixed64(message.bucketCounts[i]);\n writer.ldelim();\n }\n if (message.explicitBounds != null && message.explicitBounds.length) {\n writer.uint32(/* id 7, wireType 2 =*/ 58).fork();\n for (var i = 0; i < message.explicitBounds.length; ++i)\n writer.double(message.explicitBounds[i]);\n writer.ldelim();\n }\n if (message.exemplars != null && message.exemplars.length)\n for (var i = 0; i < message.exemplars.length; ++i)\n $root.opentelemetry.proto.metrics.v1.Exemplar.encode(message.exemplars[i], writer.uint32(/* id 8, wireType 2 =*/ 66).fork()).ldelim();\n if (message.attributes != null && message.attributes.length)\n for (var i = 0; i < message.attributes.length; ++i)\n $root.opentelemetry.proto.common.v1.KeyValue.encode(message.attributes[i], writer.uint32(/* id 9, wireType 2 =*/ 74).fork()).ldelim();\n if (message.flags != null && Object.hasOwnProperty.call(message, \"flags\"))\n writer.uint32(/* id 10, wireType 0 =*/ 80).uint32(message.flags);\n if (message.min != null && Object.hasOwnProperty.call(message, \"min\"))\n writer.uint32(/* id 11, wireType 1 =*/ 89).double(message.min);\n if (message.max != null && Object.hasOwnProperty.call(message, \"max\"))\n writer.uint32(/* id 12, wireType 1 =*/ 97).double(message.max);\n return writer;\n };\n /**\n * Encodes the specified HistogramDataPoint message, length delimited. Does not implicitly {@link opentelemetry.proto.metrics.v1.HistogramDataPoint.verify|verify} messages.\n * @function encodeDelimited\n * @memberof opentelemetry.proto.metrics.v1.HistogramDataPoint\n * @static\n * @param {opentelemetry.proto.metrics.v1.IHistogramDataPoint} message HistogramDataPoint message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n HistogramDataPoint.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n /**\n * Decodes a HistogramDataPoint message from the specified reader or buffer.\n * @function decode\n * @memberof opentelemetry.proto.metrics.v1.HistogramDataPoint\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {opentelemetry.proto.metrics.v1.HistogramDataPoint} HistogramDataPoint\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n HistogramDataPoint.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.opentelemetry.proto.metrics.v1.HistogramDataPoint();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 9: {\n if (!(message.attributes && message.attributes.length))\n message.attributes = [];\n message.attributes.push($root.opentelemetry.proto.common.v1.KeyValue.decode(reader, reader.uint32()));\n break;\n }\n case 2: {\n message.startTimeUnixNano = reader.fixed64();\n break;\n }\n case 3: {\n message.timeUnixNano = reader.fixed64();\n break;\n }\n case 4: {\n message.count = reader.fixed64();\n break;\n }\n case 5: {\n message.sum = reader.double();\n break;\n }\n case 6: {\n if (!(message.bucketCounts && message.bucketCounts.length))\n message.bucketCounts = [];\n if ((tag & 7) === 2) {\n var end2 = reader.uint32() + reader.pos;\n while (reader.pos < end2)\n message.bucketCounts.push(reader.fixed64());\n }\n else\n message.bucketCounts.push(reader.fixed64());\n break;\n }\n case 7: {\n if (!(message.explicitBounds && message.explicitBounds.length))\n message.explicitBounds = [];\n if ((tag & 7) === 2) {\n var end2 = reader.uint32() + reader.pos;\n while (reader.pos < end2)\n message.explicitBounds.push(reader.double());\n }\n else\n message.explicitBounds.push(reader.double());\n break;\n }\n case 8: {\n if (!(message.exemplars && message.exemplars.length))\n message.exemplars = [];\n message.exemplars.push($root.opentelemetry.proto.metrics.v1.Exemplar.decode(reader, reader.uint32()));\n break;\n }\n case 10: {\n message.flags = reader.uint32();\n break;\n }\n case 11: {\n message.min = reader.double();\n break;\n }\n case 12: {\n message.max = reader.double();\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n /**\n * Decodes a HistogramDataPoint message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof opentelemetry.proto.metrics.v1.HistogramDataPoint\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {opentelemetry.proto.metrics.v1.HistogramDataPoint} HistogramDataPoint\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n HistogramDataPoint.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n /**\n * Verifies a HistogramDataPoint message.\n * @function verify\n * @memberof opentelemetry.proto.metrics.v1.HistogramDataPoint\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n HistogramDataPoint.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n var properties = {};\n if (message.attributes != null && message.hasOwnProperty(\"attributes\")) {\n if (!Array.isArray(message.attributes))\n return \"attributes: array expected\";\n for (var i = 0; i < message.attributes.length; ++i) {\n var error = $root.opentelemetry.proto.common.v1.KeyValue.verify(message.attributes[i]);\n if (error)\n return \"attributes.\" + error;\n }\n }\n if (message.startTimeUnixNano != null && message.hasOwnProperty(\"startTimeUnixNano\"))\n if (!$util.isInteger(message.startTimeUnixNano) && !(message.startTimeUnixNano && $util.isInteger(message.startTimeUnixNano.low) && $util.isInteger(message.startTimeUnixNano.high)))\n return \"startTimeUnixNano: integer|Long expected\";\n if (message.timeUnixNano != null && message.hasOwnProperty(\"timeUnixNano\"))\n if (!$util.isInteger(message.timeUnixNano) && !(message.timeUnixNano && $util.isInteger(message.timeUnixNano.low) && $util.isInteger(message.timeUnixNano.high)))\n return \"timeUnixNano: integer|Long expected\";\n if (message.count != null && message.hasOwnProperty(\"count\"))\n if (!$util.isInteger(message.count) && !(message.count && $util.isInteger(message.count.low) && $util.isInteger(message.count.high)))\n return \"count: integer|Long expected\";\n if (message.sum != null && message.hasOwnProperty(\"sum\")) {\n properties._sum = 1;\n if (typeof message.sum !== \"number\")\n return \"sum: number expected\";\n }\n if (message.bucketCounts != null && message.hasOwnProperty(\"bucketCounts\")) {\n if (!Array.isArray(message.bucketCounts))\n return \"bucketCounts: array expected\";\n for (var i = 0; i < message.bucketCounts.length; ++i)\n if (!$util.isInteger(message.bucketCounts[i]) && !(message.bucketCounts[i] && $util.isInteger(message.bucketCounts[i].low) && $util.isInteger(message.bucketCounts[i].high)))\n return \"bucketCounts: integer|Long[] expected\";\n }\n if (message.explicitBounds != null && message.hasOwnProperty(\"explicitBounds\")) {\n if (!Array.isArray(message.explicitBounds))\n return \"explicitBounds: array expected\";\n for (var i = 0; i < message.explicitBounds.length; ++i)\n if (typeof message.explicitBounds[i] !== \"number\")\n return \"explicitBounds: number[] expected\";\n }\n if (message.exemplars != null && message.hasOwnProperty(\"exemplars\")) {\n if (!Array.isArray(message.exemplars))\n return \"exemplars: array expected\";\n for (var i = 0; i < message.exemplars.length; ++i) {\n var error = $root.opentelemetry.proto.metrics.v1.Exemplar.verify(message.exemplars[i]);\n if (error)\n return \"exemplars.\" + error;\n }\n }\n if (message.flags != null && message.hasOwnProperty(\"flags\"))\n if (!$util.isInteger(message.flags))\n return \"flags: integer expected\";\n if (message.min != null && message.hasOwnProperty(\"min\")) {\n properties._min = 1;\n if (typeof message.min !== \"number\")\n return \"min: number expected\";\n }\n if (message.max != null && message.hasOwnProperty(\"max\")) {\n properties._max = 1;\n if (typeof message.max !== \"number\")\n return \"max: number expected\";\n }\n return null;\n };\n /**\n * Creates a HistogramDataPoint message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof opentelemetry.proto.metrics.v1.HistogramDataPoint\n * @static\n * @param {Object.} object Plain object\n * @returns {opentelemetry.proto.metrics.v1.HistogramDataPoint} HistogramDataPoint\n */\n HistogramDataPoint.fromObject = function fromObject(object) {\n if (object instanceof $root.opentelemetry.proto.metrics.v1.HistogramDataPoint)\n return object;\n var message = new $root.opentelemetry.proto.metrics.v1.HistogramDataPoint();\n if (object.attributes) {\n if (!Array.isArray(object.attributes))\n throw TypeError(\".opentelemetry.proto.metrics.v1.HistogramDataPoint.attributes: array expected\");\n message.attributes = [];\n for (var i = 0; i < object.attributes.length; ++i) {\n if (typeof object.attributes[i] !== \"object\")\n throw TypeError(\".opentelemetry.proto.metrics.v1.HistogramDataPoint.attributes: object expected\");\n message.attributes[i] = $root.opentelemetry.proto.common.v1.KeyValue.fromObject(object.attributes[i]);\n }\n }\n if (object.startTimeUnixNano != null)\n if ($util.Long)\n (message.startTimeUnixNano = $util.Long.fromValue(object.startTimeUnixNano)).unsigned = false;\n else if (typeof object.startTimeUnixNano === \"string\")\n message.startTimeUnixNano = parseInt(object.startTimeUnixNano, 10);\n else if (typeof object.startTimeUnixNano === \"number\")\n message.startTimeUnixNano = object.startTimeUnixNano;\n else if (typeof object.startTimeUnixNano === \"object\")\n message.startTimeUnixNano = new $util.LongBits(object.startTimeUnixNano.low >>> 0, object.startTimeUnixNano.high >>> 0).toNumber();\n if (object.timeUnixNano != null)\n if ($util.Long)\n (message.timeUnixNano = $util.Long.fromValue(object.timeUnixNano)).unsigned = false;\n else if (typeof object.timeUnixNano === \"string\")\n message.timeUnixNano = parseInt(object.timeUnixNano, 10);\n else if (typeof object.timeUnixNano === \"number\")\n message.timeUnixNano = object.timeUnixNano;\n else if (typeof object.timeUnixNano === \"object\")\n message.timeUnixNano = new $util.LongBits(object.timeUnixNano.low >>> 0, object.timeUnixNano.high >>> 0).toNumber();\n if (object.count != null)\n if ($util.Long)\n (message.count = $util.Long.fromValue(object.count)).unsigned = false;\n else if (typeof object.count === \"string\")\n message.count = parseInt(object.count, 10);\n else if (typeof object.count === \"number\")\n message.count = object.count;\n else if (typeof object.count === \"object\")\n message.count = new $util.LongBits(object.count.low >>> 0, object.count.high >>> 0).toNumber();\n if (object.sum != null)\n message.sum = Number(object.sum);\n if (object.bucketCounts) {\n if (!Array.isArray(object.bucketCounts))\n throw TypeError(\".opentelemetry.proto.metrics.v1.HistogramDataPoint.bucketCounts: array expected\");\n message.bucketCounts = [];\n for (var i = 0; i < object.bucketCounts.length; ++i)\n if ($util.Long)\n (message.bucketCounts[i] = $util.Long.fromValue(object.bucketCounts[i])).unsigned = false;\n else if (typeof object.bucketCounts[i] === \"string\")\n message.bucketCounts[i] = parseInt(object.bucketCounts[i], 10);\n else if (typeof object.bucketCounts[i] === \"number\")\n message.bucketCounts[i] = object.bucketCounts[i];\n else if (typeof object.bucketCounts[i] === \"object\")\n message.bucketCounts[i] = new $util.LongBits(object.bucketCounts[i].low >>> 0, object.bucketCounts[i].high >>> 0).toNumber();\n }\n if (object.explicitBounds) {\n if (!Array.isArray(object.explicitBounds))\n throw TypeError(\".opentelemetry.proto.metrics.v1.HistogramDataPoint.explicitBounds: array expected\");\n message.explicitBounds = [];\n for (var i = 0; i < object.explicitBounds.length; ++i)\n message.explicitBounds[i] = Number(object.explicitBounds[i]);\n }\n if (object.exemplars) {\n if (!Array.isArray(object.exemplars))\n throw TypeError(\".opentelemetry.proto.metrics.v1.HistogramDataPoint.exemplars: array expected\");\n message.exemplars = [];\n for (var i = 0; i < object.exemplars.length; ++i) {\n if (typeof object.exemplars[i] !== \"object\")\n throw TypeError(\".opentelemetry.proto.metrics.v1.HistogramDataPoint.exemplars: object expected\");\n message.exemplars[i] = $root.opentelemetry.proto.metrics.v1.Exemplar.fromObject(object.exemplars[i]);\n }\n }\n if (object.flags != null)\n message.flags = object.flags >>> 0;\n if (object.min != null)\n message.min = Number(object.min);\n if (object.max != null)\n message.max = Number(object.max);\n return message;\n };\n /**\n * Creates a plain object from a HistogramDataPoint message. Also converts values to other types if specified.\n * @function toObject\n * @memberof opentelemetry.proto.metrics.v1.HistogramDataPoint\n * @static\n * @param {opentelemetry.proto.metrics.v1.HistogramDataPoint} message HistogramDataPoint\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n HistogramDataPoint.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n var object = {};\n if (options.arrays || options.defaults) {\n object.bucketCounts = [];\n object.explicitBounds = [];\n object.exemplars = [];\n object.attributes = [];\n }\n if (options.defaults) {\n if ($util.Long) {\n var long = new $util.Long(0, 0, false);\n object.startTimeUnixNano = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n }\n else\n object.startTimeUnixNano = options.longs === String ? \"0\" : 0;\n if ($util.Long) {\n var long = new $util.Long(0, 0, false);\n object.timeUnixNano = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n }\n else\n object.timeUnixNano = options.longs === String ? \"0\" : 0;\n if ($util.Long) {\n var long = new $util.Long(0, 0, false);\n object.count = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n }\n else\n object.count = options.longs === String ? \"0\" : 0;\n object.flags = 0;\n }\n if (message.startTimeUnixNano != null && message.hasOwnProperty(\"startTimeUnixNano\"))\n if (typeof message.startTimeUnixNano === \"number\")\n object.startTimeUnixNano = options.longs === String ? String(message.startTimeUnixNano) : message.startTimeUnixNano;\n else\n object.startTimeUnixNano = options.longs === String ? $util.Long.prototype.toString.call(message.startTimeUnixNano) : options.longs === Number ? new $util.LongBits(message.startTimeUnixNano.low >>> 0, message.startTimeUnixNano.high >>> 0).toNumber() : message.startTimeUnixNano;\n if (message.timeUnixNano != null && message.hasOwnProperty(\"timeUnixNano\"))\n if (typeof message.timeUnixNano === \"number\")\n object.timeUnixNano = options.longs === String ? String(message.timeUnixNano) : message.timeUnixNano;\n else\n object.timeUnixNano = options.longs === String ? $util.Long.prototype.toString.call(message.timeUnixNano) : options.longs === Number ? new $util.LongBits(message.timeUnixNano.low >>> 0, message.timeUnixNano.high >>> 0).toNumber() : message.timeUnixNano;\n if (message.count != null && message.hasOwnProperty(\"count\"))\n if (typeof message.count === \"number\")\n object.count = options.longs === String ? String(message.count) : message.count;\n else\n object.count = options.longs === String ? $util.Long.prototype.toString.call(message.count) : options.longs === Number ? new $util.LongBits(message.count.low >>> 0, message.count.high >>> 0).toNumber() : message.count;\n if (message.sum != null && message.hasOwnProperty(\"sum\")) {\n object.sum = options.json && !isFinite(message.sum) ? String(message.sum) : message.sum;\n if (options.oneofs)\n object._sum = \"sum\";\n }\n if (message.bucketCounts && message.bucketCounts.length) {\n object.bucketCounts = [];\n for (var j = 0; j < message.bucketCounts.length; ++j)\n if (typeof message.bucketCounts[j] === \"number\")\n object.bucketCounts[j] = options.longs === String ? String(message.bucketCounts[j]) : message.bucketCounts[j];\n else\n object.bucketCounts[j] = options.longs === String ? $util.Long.prototype.toString.call(message.bucketCounts[j]) : options.longs === Number ? new $util.LongBits(message.bucketCounts[j].low >>> 0, message.bucketCounts[j].high >>> 0).toNumber() : message.bucketCounts[j];\n }\n if (message.explicitBounds && message.explicitBounds.length) {\n object.explicitBounds = [];\n for (var j = 0; j < message.explicitBounds.length; ++j)\n object.explicitBounds[j] = options.json && !isFinite(message.explicitBounds[j]) ? String(message.explicitBounds[j]) : message.explicitBounds[j];\n }\n if (message.exemplars && message.exemplars.length) {\n object.exemplars = [];\n for (var j = 0; j < message.exemplars.length; ++j)\n object.exemplars[j] = $root.opentelemetry.proto.metrics.v1.Exemplar.toObject(message.exemplars[j], options);\n }\n if (message.attributes && message.attributes.length) {\n object.attributes = [];\n for (var j = 0; j < message.attributes.length; ++j)\n object.attributes[j] = $root.opentelemetry.proto.common.v1.KeyValue.toObject(message.attributes[j], options);\n }\n if (message.flags != null && message.hasOwnProperty(\"flags\"))\n object.flags = message.flags;\n if (message.min != null && message.hasOwnProperty(\"min\")) {\n object.min = options.json && !isFinite(message.min) ? String(message.min) : message.min;\n if (options.oneofs)\n object._min = \"min\";\n }\n if (message.max != null && message.hasOwnProperty(\"max\")) {\n object.max = options.json && !isFinite(message.max) ? String(message.max) : message.max;\n if (options.oneofs)\n object._max = \"max\";\n }\n return object;\n };\n /**\n * Converts this HistogramDataPoint to JSON.\n * @function toJSON\n * @memberof opentelemetry.proto.metrics.v1.HistogramDataPoint\n * @instance\n * @returns {Object.} JSON object\n */\n HistogramDataPoint.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n /**\n * Gets the default type url for HistogramDataPoint\n * @function getTypeUrl\n * @memberof opentelemetry.proto.metrics.v1.HistogramDataPoint\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n HistogramDataPoint.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = \"type.googleapis.com\";\n }\n return typeUrlPrefix + \"/opentelemetry.proto.metrics.v1.HistogramDataPoint\";\n };\n return HistogramDataPoint;\n })();\n v1.ExponentialHistogramDataPoint = (function () {\n /**\n * Properties of an ExponentialHistogramDataPoint.\n * @memberof opentelemetry.proto.metrics.v1\n * @interface IExponentialHistogramDataPoint\n * @property {Array.|null} [attributes] ExponentialHistogramDataPoint attributes\n * @property {number|Long|null} [startTimeUnixNano] ExponentialHistogramDataPoint startTimeUnixNano\n * @property {number|Long|null} [timeUnixNano] ExponentialHistogramDataPoint timeUnixNano\n * @property {number|Long|null} [count] ExponentialHistogramDataPoint count\n * @property {number|null} [sum] ExponentialHistogramDataPoint sum\n * @property {number|null} [scale] ExponentialHistogramDataPoint scale\n * @property {number|Long|null} [zeroCount] ExponentialHistogramDataPoint zeroCount\n * @property {opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint.IBuckets|null} [positive] ExponentialHistogramDataPoint positive\n * @property {opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint.IBuckets|null} [negative] ExponentialHistogramDataPoint negative\n * @property {number|null} [flags] ExponentialHistogramDataPoint flags\n * @property {Array.|null} [exemplars] ExponentialHistogramDataPoint exemplars\n * @property {number|null} [min] ExponentialHistogramDataPoint min\n * @property {number|null} [max] ExponentialHistogramDataPoint max\n * @property {number|null} [zeroThreshold] ExponentialHistogramDataPoint zeroThreshold\n */\n /**\n * Constructs a new ExponentialHistogramDataPoint.\n * @memberof opentelemetry.proto.metrics.v1\n * @classdesc Represents an ExponentialHistogramDataPoint.\n * @implements IExponentialHistogramDataPoint\n * @constructor\n * @param {opentelemetry.proto.metrics.v1.IExponentialHistogramDataPoint=} [properties] Properties to set\n */\n function ExponentialHistogramDataPoint(properties) {\n this.attributes = [];\n this.exemplars = [];\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n /**\n * ExponentialHistogramDataPoint attributes.\n * @member {Array.} attributes\n * @memberof opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint\n * @instance\n */\n ExponentialHistogramDataPoint.prototype.attributes = $util.emptyArray;\n /**\n * ExponentialHistogramDataPoint startTimeUnixNano.\n * @member {number|Long|null|undefined} startTimeUnixNano\n * @memberof opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint\n * @instance\n */\n ExponentialHistogramDataPoint.prototype.startTimeUnixNano = null;\n /**\n * ExponentialHistogramDataPoint timeUnixNano.\n * @member {number|Long|null|undefined} timeUnixNano\n * @memberof opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint\n * @instance\n */\n ExponentialHistogramDataPoint.prototype.timeUnixNano = null;\n /**\n * ExponentialHistogramDataPoint count.\n * @member {number|Long|null|undefined} count\n * @memberof opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint\n * @instance\n */\n ExponentialHistogramDataPoint.prototype.count = null;\n /**\n * ExponentialHistogramDataPoint sum.\n * @member {number|null|undefined} sum\n * @memberof opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint\n * @instance\n */\n ExponentialHistogramDataPoint.prototype.sum = null;\n /**\n * ExponentialHistogramDataPoint scale.\n * @member {number|null|undefined} scale\n * @memberof opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint\n * @instance\n */\n ExponentialHistogramDataPoint.prototype.scale = null;\n /**\n * ExponentialHistogramDataPoint zeroCount.\n * @member {number|Long|null|undefined} zeroCount\n * @memberof opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint\n * @instance\n */\n ExponentialHistogramDataPoint.prototype.zeroCount = null;\n /**\n * ExponentialHistogramDataPoint positive.\n * @member {opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint.IBuckets|null|undefined} positive\n * @memberof opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint\n * @instance\n */\n ExponentialHistogramDataPoint.prototype.positive = null;\n /**\n * ExponentialHistogramDataPoint negative.\n * @member {opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint.IBuckets|null|undefined} negative\n * @memberof opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint\n * @instance\n */\n ExponentialHistogramDataPoint.prototype.negative = null;\n /**\n * ExponentialHistogramDataPoint flags.\n * @member {number|null|undefined} flags\n * @memberof opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint\n * @instance\n */\n ExponentialHistogramDataPoint.prototype.flags = null;\n /**\n * ExponentialHistogramDataPoint exemplars.\n * @member {Array.} exemplars\n * @memberof opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint\n * @instance\n */\n ExponentialHistogramDataPoint.prototype.exemplars = $util.emptyArray;\n /**\n * ExponentialHistogramDataPoint min.\n * @member {number|null|undefined} min\n * @memberof opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint\n * @instance\n */\n ExponentialHistogramDataPoint.prototype.min = null;\n /**\n * ExponentialHistogramDataPoint max.\n * @member {number|null|undefined} max\n * @memberof opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint\n * @instance\n */\n ExponentialHistogramDataPoint.prototype.max = null;\n /**\n * ExponentialHistogramDataPoint zeroThreshold.\n * @member {number|null|undefined} zeroThreshold\n * @memberof opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint\n * @instance\n */\n ExponentialHistogramDataPoint.prototype.zeroThreshold = null;\n // OneOf field names bound to virtual getters and setters\n var $oneOfFields;\n /**\n * ExponentialHistogramDataPoint _sum.\n * @member {\"sum\"|undefined} _sum\n * @memberof opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint\n * @instance\n */\n Object.defineProperty(ExponentialHistogramDataPoint.prototype, \"_sum\", {\n get: $util.oneOfGetter($oneOfFields = [\"sum\"]),\n set: $util.oneOfSetter($oneOfFields)\n });\n /**\n * ExponentialHistogramDataPoint _min.\n * @member {\"min\"|undefined} _min\n * @memberof opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint\n * @instance\n */\n Object.defineProperty(ExponentialHistogramDataPoint.prototype, \"_min\", {\n get: $util.oneOfGetter($oneOfFields = [\"min\"]),\n set: $util.oneOfSetter($oneOfFields)\n });\n /**\n * ExponentialHistogramDataPoint _max.\n * @member {\"max\"|undefined} _max\n * @memberof opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint\n * @instance\n */\n Object.defineProperty(ExponentialHistogramDataPoint.prototype, \"_max\", {\n get: $util.oneOfGetter($oneOfFields = [\"max\"]),\n set: $util.oneOfSetter($oneOfFields)\n });\n /**\n * Creates a new ExponentialHistogramDataPoint instance using the specified properties.\n * @function create\n * @memberof opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint\n * @static\n * @param {opentelemetry.proto.metrics.v1.IExponentialHistogramDataPoint=} [properties] Properties to set\n * @returns {opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint} ExponentialHistogramDataPoint instance\n */\n ExponentialHistogramDataPoint.create = function create(properties) {\n return new ExponentialHistogramDataPoint(properties);\n };\n /**\n * Encodes the specified ExponentialHistogramDataPoint message. Does not implicitly {@link opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint.verify|verify} messages.\n * @function encode\n * @memberof opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint\n * @static\n * @param {opentelemetry.proto.metrics.v1.IExponentialHistogramDataPoint} message ExponentialHistogramDataPoint message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ExponentialHistogramDataPoint.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.attributes != null && message.attributes.length)\n for (var i = 0; i < message.attributes.length; ++i)\n $root.opentelemetry.proto.common.v1.KeyValue.encode(message.attributes[i], writer.uint32(/* id 1, wireType 2 =*/ 10).fork()).ldelim();\n if (message.startTimeUnixNano != null && Object.hasOwnProperty.call(message, \"startTimeUnixNano\"))\n writer.uint32(/* id 2, wireType 1 =*/ 17).fixed64(message.startTimeUnixNano);\n if (message.timeUnixNano != null && Object.hasOwnProperty.call(message, \"timeUnixNano\"))\n writer.uint32(/* id 3, wireType 1 =*/ 25).fixed64(message.timeUnixNano);\n if (message.count != null && Object.hasOwnProperty.call(message, \"count\"))\n writer.uint32(/* id 4, wireType 1 =*/ 33).fixed64(message.count);\n if (message.sum != null && Object.hasOwnProperty.call(message, \"sum\"))\n writer.uint32(/* id 5, wireType 1 =*/ 41).double(message.sum);\n if (message.scale != null && Object.hasOwnProperty.call(message, \"scale\"))\n writer.uint32(/* id 6, wireType 0 =*/ 48).sint32(message.scale);\n if (message.zeroCount != null && Object.hasOwnProperty.call(message, \"zeroCount\"))\n writer.uint32(/* id 7, wireType 1 =*/ 57).fixed64(message.zeroCount);\n if (message.positive != null && Object.hasOwnProperty.call(message, \"positive\"))\n $root.opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint.Buckets.encode(message.positive, writer.uint32(/* id 8, wireType 2 =*/ 66).fork()).ldelim();\n if (message.negative != null && Object.hasOwnProperty.call(message, \"negative\"))\n $root.opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint.Buckets.encode(message.negative, writer.uint32(/* id 9, wireType 2 =*/ 74).fork()).ldelim();\n if (message.flags != null && Object.hasOwnProperty.call(message, \"flags\"))\n writer.uint32(/* id 10, wireType 0 =*/ 80).uint32(message.flags);\n if (message.exemplars != null && message.exemplars.length)\n for (var i = 0; i < message.exemplars.length; ++i)\n $root.opentelemetry.proto.metrics.v1.Exemplar.encode(message.exemplars[i], writer.uint32(/* id 11, wireType 2 =*/ 90).fork()).ldelim();\n if (message.min != null && Object.hasOwnProperty.call(message, \"min\"))\n writer.uint32(/* id 12, wireType 1 =*/ 97).double(message.min);\n if (message.max != null && Object.hasOwnProperty.call(message, \"max\"))\n writer.uint32(/* id 13, wireType 1 =*/ 105).double(message.max);\n if (message.zeroThreshold != null && Object.hasOwnProperty.call(message, \"zeroThreshold\"))\n writer.uint32(/* id 14, wireType 1 =*/ 113).double(message.zeroThreshold);\n return writer;\n };\n /**\n * Encodes the specified ExponentialHistogramDataPoint message, length delimited. Does not implicitly {@link opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint.verify|verify} messages.\n * @function encodeDelimited\n * @memberof opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint\n * @static\n * @param {opentelemetry.proto.metrics.v1.IExponentialHistogramDataPoint} message ExponentialHistogramDataPoint message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ExponentialHistogramDataPoint.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n /**\n * Decodes an ExponentialHistogramDataPoint message from the specified reader or buffer.\n * @function decode\n * @memberof opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint} ExponentialHistogramDataPoint\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ExponentialHistogramDataPoint.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (!(message.attributes && message.attributes.length))\n message.attributes = [];\n message.attributes.push($root.opentelemetry.proto.common.v1.KeyValue.decode(reader, reader.uint32()));\n break;\n }\n case 2: {\n message.startTimeUnixNano = reader.fixed64();\n break;\n }\n case 3: {\n message.timeUnixNano = reader.fixed64();\n break;\n }\n case 4: {\n message.count = reader.fixed64();\n break;\n }\n case 5: {\n message.sum = reader.double();\n break;\n }\n case 6: {\n message.scale = reader.sint32();\n break;\n }\n case 7: {\n message.zeroCount = reader.fixed64();\n break;\n }\n case 8: {\n message.positive = $root.opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint.Buckets.decode(reader, reader.uint32());\n break;\n }\n case 9: {\n message.negative = $root.opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint.Buckets.decode(reader, reader.uint32());\n break;\n }\n case 10: {\n message.flags = reader.uint32();\n break;\n }\n case 11: {\n if (!(message.exemplars && message.exemplars.length))\n message.exemplars = [];\n message.exemplars.push($root.opentelemetry.proto.metrics.v1.Exemplar.decode(reader, reader.uint32()));\n break;\n }\n case 12: {\n message.min = reader.double();\n break;\n }\n case 13: {\n message.max = reader.double();\n break;\n }\n case 14: {\n message.zeroThreshold = reader.double();\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n /**\n * Decodes an ExponentialHistogramDataPoint message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint} ExponentialHistogramDataPoint\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ExponentialHistogramDataPoint.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n /**\n * Verifies an ExponentialHistogramDataPoint message.\n * @function verify\n * @memberof opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n ExponentialHistogramDataPoint.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n var properties = {};\n if (message.attributes != null && message.hasOwnProperty(\"attributes\")) {\n if (!Array.isArray(message.attributes))\n return \"attributes: array expected\";\n for (var i = 0; i < message.attributes.length; ++i) {\n var error = $root.opentelemetry.proto.common.v1.KeyValue.verify(message.attributes[i]);\n if (error)\n return \"attributes.\" + error;\n }\n }\n if (message.startTimeUnixNano != null && message.hasOwnProperty(\"startTimeUnixNano\"))\n if (!$util.isInteger(message.startTimeUnixNano) && !(message.startTimeUnixNano && $util.isInteger(message.startTimeUnixNano.low) && $util.isInteger(message.startTimeUnixNano.high)))\n return \"startTimeUnixNano: integer|Long expected\";\n if (message.timeUnixNano != null && message.hasOwnProperty(\"timeUnixNano\"))\n if (!$util.isInteger(message.timeUnixNano) && !(message.timeUnixNano && $util.isInteger(message.timeUnixNano.low) && $util.isInteger(message.timeUnixNano.high)))\n return \"timeUnixNano: integer|Long expected\";\n if (message.count != null && message.hasOwnProperty(\"count\"))\n if (!$util.isInteger(message.count) && !(message.count && $util.isInteger(message.count.low) && $util.isInteger(message.count.high)))\n return \"count: integer|Long expected\";\n if (message.sum != null && message.hasOwnProperty(\"sum\")) {\n properties._sum = 1;\n if (typeof message.sum !== \"number\")\n return \"sum: number expected\";\n }\n if (message.scale != null && message.hasOwnProperty(\"scale\"))\n if (!$util.isInteger(message.scale))\n return \"scale: integer expected\";\n if (message.zeroCount != null && message.hasOwnProperty(\"zeroCount\"))\n if (!$util.isInteger(message.zeroCount) && !(message.zeroCount && $util.isInteger(message.zeroCount.low) && $util.isInteger(message.zeroCount.high)))\n return \"zeroCount: integer|Long expected\";\n if (message.positive != null && message.hasOwnProperty(\"positive\")) {\n var error = $root.opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint.Buckets.verify(message.positive);\n if (error)\n return \"positive.\" + error;\n }\n if (message.negative != null && message.hasOwnProperty(\"negative\")) {\n var error = $root.opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint.Buckets.verify(message.negative);\n if (error)\n return \"negative.\" + error;\n }\n if (message.flags != null && message.hasOwnProperty(\"flags\"))\n if (!$util.isInteger(message.flags))\n return \"flags: integer expected\";\n if (message.exemplars != null && message.hasOwnProperty(\"exemplars\")) {\n if (!Array.isArray(message.exemplars))\n return \"exemplars: array expected\";\n for (var i = 0; i < message.exemplars.length; ++i) {\n var error = $root.opentelemetry.proto.metrics.v1.Exemplar.verify(message.exemplars[i]);\n if (error)\n return \"exemplars.\" + error;\n }\n }\n if (message.min != null && message.hasOwnProperty(\"min\")) {\n properties._min = 1;\n if (typeof message.min !== \"number\")\n return \"min: number expected\";\n }\n if (message.max != null && message.hasOwnProperty(\"max\")) {\n properties._max = 1;\n if (typeof message.max !== \"number\")\n return \"max: number expected\";\n }\n if (message.zeroThreshold != null && message.hasOwnProperty(\"zeroThreshold\"))\n if (typeof message.zeroThreshold !== \"number\")\n return \"zeroThreshold: number expected\";\n return null;\n };\n /**\n * Creates an ExponentialHistogramDataPoint message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint\n * @static\n * @param {Object.} object Plain object\n * @returns {opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint} ExponentialHistogramDataPoint\n */\n ExponentialHistogramDataPoint.fromObject = function fromObject(object) {\n if (object instanceof $root.opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint)\n return object;\n var message = new $root.opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint();\n if (object.attributes) {\n if (!Array.isArray(object.attributes))\n throw TypeError(\".opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint.attributes: array expected\");\n message.attributes = [];\n for (var i = 0; i < object.attributes.length; ++i) {\n if (typeof object.attributes[i] !== \"object\")\n throw TypeError(\".opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint.attributes: object expected\");\n message.attributes[i] = $root.opentelemetry.proto.common.v1.KeyValue.fromObject(object.attributes[i]);\n }\n }\n if (object.startTimeUnixNano != null)\n if ($util.Long)\n (message.startTimeUnixNano = $util.Long.fromValue(object.startTimeUnixNano)).unsigned = false;\n else if (typeof object.startTimeUnixNano === \"string\")\n message.startTimeUnixNano = parseInt(object.startTimeUnixNano, 10);\n else if (typeof object.startTimeUnixNano === \"number\")\n message.startTimeUnixNano = object.startTimeUnixNano;\n else if (typeof object.startTimeUnixNano === \"object\")\n message.startTimeUnixNano = new $util.LongBits(object.startTimeUnixNano.low >>> 0, object.startTimeUnixNano.high >>> 0).toNumber();\n if (object.timeUnixNano != null)\n if ($util.Long)\n (message.timeUnixNano = $util.Long.fromValue(object.timeUnixNano)).unsigned = false;\n else if (typeof object.timeUnixNano === \"string\")\n message.timeUnixNano = parseInt(object.timeUnixNano, 10);\n else if (typeof object.timeUnixNano === \"number\")\n message.timeUnixNano = object.timeUnixNano;\n else if (typeof object.timeUnixNano === \"object\")\n message.timeUnixNano = new $util.LongBits(object.timeUnixNano.low >>> 0, object.timeUnixNano.high >>> 0).toNumber();\n if (object.count != null)\n if ($util.Long)\n (message.count = $util.Long.fromValue(object.count)).unsigned = false;\n else if (typeof object.count === \"string\")\n message.count = parseInt(object.count, 10);\n else if (typeof object.count === \"number\")\n message.count = object.count;\n else if (typeof object.count === \"object\")\n message.count = new $util.LongBits(object.count.low >>> 0, object.count.high >>> 0).toNumber();\n if (object.sum != null)\n message.sum = Number(object.sum);\n if (object.scale != null)\n message.scale = object.scale | 0;\n if (object.zeroCount != null)\n if ($util.Long)\n (message.zeroCount = $util.Long.fromValue(object.zeroCount)).unsigned = false;\n else if (typeof object.zeroCount === \"string\")\n message.zeroCount = parseInt(object.zeroCount, 10);\n else if (typeof object.zeroCount === \"number\")\n message.zeroCount = object.zeroCount;\n else if (typeof object.zeroCount === \"object\")\n message.zeroCount = new $util.LongBits(object.zeroCount.low >>> 0, object.zeroCount.high >>> 0).toNumber();\n if (object.positive != null) {\n if (typeof object.positive !== \"object\")\n throw TypeError(\".opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint.positive: object expected\");\n message.positive = $root.opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint.Buckets.fromObject(object.positive);\n }\n if (object.negative != null) {\n if (typeof object.negative !== \"object\")\n throw TypeError(\".opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint.negative: object expected\");\n message.negative = $root.opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint.Buckets.fromObject(object.negative);\n }\n if (object.flags != null)\n message.flags = object.flags >>> 0;\n if (object.exemplars) {\n if (!Array.isArray(object.exemplars))\n throw TypeError(\".opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint.exemplars: array expected\");\n message.exemplars = [];\n for (var i = 0; i < object.exemplars.length; ++i) {\n if (typeof object.exemplars[i] !== \"object\")\n throw TypeError(\".opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint.exemplars: object expected\");\n message.exemplars[i] = $root.opentelemetry.proto.metrics.v1.Exemplar.fromObject(object.exemplars[i]);\n }\n }\n if (object.min != null)\n message.min = Number(object.min);\n if (object.max != null)\n message.max = Number(object.max);\n if (object.zeroThreshold != null)\n message.zeroThreshold = Number(object.zeroThreshold);\n return message;\n };\n /**\n * Creates a plain object from an ExponentialHistogramDataPoint message. Also converts values to other types if specified.\n * @function toObject\n * @memberof opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint\n * @static\n * @param {opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint} message ExponentialHistogramDataPoint\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n ExponentialHistogramDataPoint.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n var object = {};\n if (options.arrays || options.defaults) {\n object.attributes = [];\n object.exemplars = [];\n }\n if (options.defaults) {\n if ($util.Long) {\n var long = new $util.Long(0, 0, false);\n object.startTimeUnixNano = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n }\n else\n object.startTimeUnixNano = options.longs === String ? \"0\" : 0;\n if ($util.Long) {\n var long = new $util.Long(0, 0, false);\n object.timeUnixNano = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n }\n else\n object.timeUnixNano = options.longs === String ? \"0\" : 0;\n if ($util.Long) {\n var long = new $util.Long(0, 0, false);\n object.count = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n }\n else\n object.count = options.longs === String ? \"0\" : 0;\n object.scale = 0;\n if ($util.Long) {\n var long = new $util.Long(0, 0, false);\n object.zeroCount = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n }\n else\n object.zeroCount = options.longs === String ? \"0\" : 0;\n object.positive = null;\n object.negative = null;\n object.flags = 0;\n object.zeroThreshold = 0;\n }\n if (message.attributes && message.attributes.length) {\n object.attributes = [];\n for (var j = 0; j < message.attributes.length; ++j)\n object.attributes[j] = $root.opentelemetry.proto.common.v1.KeyValue.toObject(message.attributes[j], options);\n }\n if (message.startTimeUnixNano != null && message.hasOwnProperty(\"startTimeUnixNano\"))\n if (typeof message.startTimeUnixNano === \"number\")\n object.startTimeUnixNano = options.longs === String ? String(message.startTimeUnixNano) : message.startTimeUnixNano;\n else\n object.startTimeUnixNano = options.longs === String ? $util.Long.prototype.toString.call(message.startTimeUnixNano) : options.longs === Number ? new $util.LongBits(message.startTimeUnixNano.low >>> 0, message.startTimeUnixNano.high >>> 0).toNumber() : message.startTimeUnixNano;\n if (message.timeUnixNano != null && message.hasOwnProperty(\"timeUnixNano\"))\n if (typeof message.timeUnixNano === \"number\")\n object.timeUnixNano = options.longs === String ? String(message.timeUnixNano) : message.timeUnixNano;\n else\n object.timeUnixNano = options.longs === String ? $util.Long.prototype.toString.call(message.timeUnixNano) : options.longs === Number ? new $util.LongBits(message.timeUnixNano.low >>> 0, message.timeUnixNano.high >>> 0).toNumber() : message.timeUnixNano;\n if (message.count != null && message.hasOwnProperty(\"count\"))\n if (typeof message.count === \"number\")\n object.count = options.longs === String ? String(message.count) : message.count;\n else\n object.count = options.longs === String ? $util.Long.prototype.toString.call(message.count) : options.longs === Number ? new $util.LongBits(message.count.low >>> 0, message.count.high >>> 0).toNumber() : message.count;\n if (message.sum != null && message.hasOwnProperty(\"sum\")) {\n object.sum = options.json && !isFinite(message.sum) ? String(message.sum) : message.sum;\n if (options.oneofs)\n object._sum = \"sum\";\n }\n if (message.scale != null && message.hasOwnProperty(\"scale\"))\n object.scale = message.scale;\n if (message.zeroCount != null && message.hasOwnProperty(\"zeroCount\"))\n if (typeof message.zeroCount === \"number\")\n object.zeroCount = options.longs === String ? String(message.zeroCount) : message.zeroCount;\n else\n object.zeroCount = options.longs === String ? $util.Long.prototype.toString.call(message.zeroCount) : options.longs === Number ? new $util.LongBits(message.zeroCount.low >>> 0, message.zeroCount.high >>> 0).toNumber() : message.zeroCount;\n if (message.positive != null && message.hasOwnProperty(\"positive\"))\n object.positive = $root.opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint.Buckets.toObject(message.positive, options);\n if (message.negative != null && message.hasOwnProperty(\"negative\"))\n object.negative = $root.opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint.Buckets.toObject(message.negative, options);\n if (message.flags != null && message.hasOwnProperty(\"flags\"))\n object.flags = message.flags;\n if (message.exemplars && message.exemplars.length) {\n object.exemplars = [];\n for (var j = 0; j < message.exemplars.length; ++j)\n object.exemplars[j] = $root.opentelemetry.proto.metrics.v1.Exemplar.toObject(message.exemplars[j], options);\n }\n if (message.min != null && message.hasOwnProperty(\"min\")) {\n object.min = options.json && !isFinite(message.min) ? String(message.min) : message.min;\n if (options.oneofs)\n object._min = \"min\";\n }\n if (message.max != null && message.hasOwnProperty(\"max\")) {\n object.max = options.json && !isFinite(message.max) ? String(message.max) : message.max;\n if (options.oneofs)\n object._max = \"max\";\n }\n if (message.zeroThreshold != null && message.hasOwnProperty(\"zeroThreshold\"))\n object.zeroThreshold = options.json && !isFinite(message.zeroThreshold) ? String(message.zeroThreshold) : message.zeroThreshold;\n return object;\n };\n /**\n * Converts this ExponentialHistogramDataPoint to JSON.\n * @function toJSON\n * @memberof opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint\n * @instance\n * @returns {Object.} JSON object\n */\n ExponentialHistogramDataPoint.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n /**\n * Gets the default type url for ExponentialHistogramDataPoint\n * @function getTypeUrl\n * @memberof opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n ExponentialHistogramDataPoint.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = \"type.googleapis.com\";\n }\n return typeUrlPrefix + \"/opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint\";\n };\n ExponentialHistogramDataPoint.Buckets = (function () {\n /**\n * Properties of a Buckets.\n * @memberof opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint\n * @interface IBuckets\n * @property {number|null} [offset] Buckets offset\n * @property {Array.|null} [bucketCounts] Buckets bucketCounts\n */\n /**\n * Constructs a new Buckets.\n * @memberof opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint\n * @classdesc Represents a Buckets.\n * @implements IBuckets\n * @constructor\n * @param {opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint.IBuckets=} [properties] Properties to set\n */\n function Buckets(properties) {\n this.bucketCounts = [];\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n /**\n * Buckets offset.\n * @member {number|null|undefined} offset\n * @memberof opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint.Buckets\n * @instance\n */\n Buckets.prototype.offset = null;\n /**\n * Buckets bucketCounts.\n * @member {Array.} bucketCounts\n * @memberof opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint.Buckets\n * @instance\n */\n Buckets.prototype.bucketCounts = $util.emptyArray;\n /**\n * Creates a new Buckets instance using the specified properties.\n * @function create\n * @memberof opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint.Buckets\n * @static\n * @param {opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint.IBuckets=} [properties] Properties to set\n * @returns {opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint.Buckets} Buckets instance\n */\n Buckets.create = function create(properties) {\n return new Buckets(properties);\n };\n /**\n * Encodes the specified Buckets message. Does not implicitly {@link opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint.Buckets.verify|verify} messages.\n * @function encode\n * @memberof opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint.Buckets\n * @static\n * @param {opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint.IBuckets} message Buckets message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Buckets.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.offset != null && Object.hasOwnProperty.call(message, \"offset\"))\n writer.uint32(/* id 1, wireType 0 =*/ 8).sint32(message.offset);\n if (message.bucketCounts != null && message.bucketCounts.length) {\n writer.uint32(/* id 2, wireType 2 =*/ 18).fork();\n for (var i = 0; i < message.bucketCounts.length; ++i)\n writer.uint64(message.bucketCounts[i]);\n writer.ldelim();\n }\n return writer;\n };\n /**\n * Encodes the specified Buckets message, length delimited. Does not implicitly {@link opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint.Buckets.verify|verify} messages.\n * @function encodeDelimited\n * @memberof opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint.Buckets\n * @static\n * @param {opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint.IBuckets} message Buckets message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Buckets.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n /**\n * Decodes a Buckets message from the specified reader or buffer.\n * @function decode\n * @memberof opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint.Buckets\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint.Buckets} Buckets\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Buckets.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint.Buckets();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n message.offset = reader.sint32();\n break;\n }\n case 2: {\n if (!(message.bucketCounts && message.bucketCounts.length))\n message.bucketCounts = [];\n if ((tag & 7) === 2) {\n var end2 = reader.uint32() + reader.pos;\n while (reader.pos < end2)\n message.bucketCounts.push(reader.uint64());\n }\n else\n message.bucketCounts.push(reader.uint64());\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n /**\n * Decodes a Buckets message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint.Buckets\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint.Buckets} Buckets\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Buckets.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n /**\n * Verifies a Buckets message.\n * @function verify\n * @memberof opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint.Buckets\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n Buckets.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.offset != null && message.hasOwnProperty(\"offset\"))\n if (!$util.isInteger(message.offset))\n return \"offset: integer expected\";\n if (message.bucketCounts != null && message.hasOwnProperty(\"bucketCounts\")) {\n if (!Array.isArray(message.bucketCounts))\n return \"bucketCounts: array expected\";\n for (var i = 0; i < message.bucketCounts.length; ++i)\n if (!$util.isInteger(message.bucketCounts[i]) && !(message.bucketCounts[i] && $util.isInteger(message.bucketCounts[i].low) && $util.isInteger(message.bucketCounts[i].high)))\n return \"bucketCounts: integer|Long[] expected\";\n }\n return null;\n };\n /**\n * Creates a Buckets message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint.Buckets\n * @static\n * @param {Object.} object Plain object\n * @returns {opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint.Buckets} Buckets\n */\n Buckets.fromObject = function fromObject(object) {\n if (object instanceof $root.opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint.Buckets)\n return object;\n var message = new $root.opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint.Buckets();\n if (object.offset != null)\n message.offset = object.offset | 0;\n if (object.bucketCounts) {\n if (!Array.isArray(object.bucketCounts))\n throw TypeError(\".opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint.Buckets.bucketCounts: array expected\");\n message.bucketCounts = [];\n for (var i = 0; i < object.bucketCounts.length; ++i)\n if ($util.Long)\n (message.bucketCounts[i] = $util.Long.fromValue(object.bucketCounts[i])).unsigned = true;\n else if (typeof object.bucketCounts[i] === \"string\")\n message.bucketCounts[i] = parseInt(object.bucketCounts[i], 10);\n else if (typeof object.bucketCounts[i] === \"number\")\n message.bucketCounts[i] = object.bucketCounts[i];\n else if (typeof object.bucketCounts[i] === \"object\")\n message.bucketCounts[i] = new $util.LongBits(object.bucketCounts[i].low >>> 0, object.bucketCounts[i].high >>> 0).toNumber(true);\n }\n return message;\n };\n /**\n * Creates a plain object from a Buckets message. Also converts values to other types if specified.\n * @function toObject\n * @memberof opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint.Buckets\n * @static\n * @param {opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint.Buckets} message Buckets\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n Buckets.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n var object = {};\n if (options.arrays || options.defaults)\n object.bucketCounts = [];\n if (options.defaults)\n object.offset = 0;\n if (message.offset != null && message.hasOwnProperty(\"offset\"))\n object.offset = message.offset;\n if (message.bucketCounts && message.bucketCounts.length) {\n object.bucketCounts = [];\n for (var j = 0; j < message.bucketCounts.length; ++j)\n if (typeof message.bucketCounts[j] === \"number\")\n object.bucketCounts[j] = options.longs === String ? String(message.bucketCounts[j]) : message.bucketCounts[j];\n else\n object.bucketCounts[j] = options.longs === String ? $util.Long.prototype.toString.call(message.bucketCounts[j]) : options.longs === Number ? new $util.LongBits(message.bucketCounts[j].low >>> 0, message.bucketCounts[j].high >>> 0).toNumber(true) : message.bucketCounts[j];\n }\n return object;\n };\n /**\n * Converts this Buckets to JSON.\n * @function toJSON\n * @memberof opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint.Buckets\n * @instance\n * @returns {Object.} JSON object\n */\n Buckets.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n /**\n * Gets the default type url for Buckets\n * @function getTypeUrl\n * @memberof opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint.Buckets\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n Buckets.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = \"type.googleapis.com\";\n }\n return typeUrlPrefix + \"/opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint.Buckets\";\n };\n return Buckets;\n })();\n return ExponentialHistogramDataPoint;\n })();\n v1.SummaryDataPoint = (function () {\n /**\n * Properties of a SummaryDataPoint.\n * @memberof opentelemetry.proto.metrics.v1\n * @interface ISummaryDataPoint\n * @property {Array.|null} [attributes] SummaryDataPoint attributes\n * @property {number|Long|null} [startTimeUnixNano] SummaryDataPoint startTimeUnixNano\n * @property {number|Long|null} [timeUnixNano] SummaryDataPoint timeUnixNano\n * @property {number|Long|null} [count] SummaryDataPoint count\n * @property {number|null} [sum] SummaryDataPoint sum\n * @property {Array.|null} [quantileValues] SummaryDataPoint quantileValues\n * @property {number|null} [flags] SummaryDataPoint flags\n */\n /**\n * Constructs a new SummaryDataPoint.\n * @memberof opentelemetry.proto.metrics.v1\n * @classdesc Represents a SummaryDataPoint.\n * @implements ISummaryDataPoint\n * @constructor\n * @param {opentelemetry.proto.metrics.v1.ISummaryDataPoint=} [properties] Properties to set\n */\n function SummaryDataPoint(properties) {\n this.attributes = [];\n this.quantileValues = [];\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n /**\n * SummaryDataPoint attributes.\n * @member {Array.} attributes\n * @memberof opentelemetry.proto.metrics.v1.SummaryDataPoint\n * @instance\n */\n SummaryDataPoint.prototype.attributes = $util.emptyArray;\n /**\n * SummaryDataPoint startTimeUnixNano.\n * @member {number|Long|null|undefined} startTimeUnixNano\n * @memberof opentelemetry.proto.metrics.v1.SummaryDataPoint\n * @instance\n */\n SummaryDataPoint.prototype.startTimeUnixNano = null;\n /**\n * SummaryDataPoint timeUnixNano.\n * @member {number|Long|null|undefined} timeUnixNano\n * @memberof opentelemetry.proto.metrics.v1.SummaryDataPoint\n * @instance\n */\n SummaryDataPoint.prototype.timeUnixNano = null;\n /**\n * SummaryDataPoint count.\n * @member {number|Long|null|undefined} count\n * @memberof opentelemetry.proto.metrics.v1.SummaryDataPoint\n * @instance\n */\n SummaryDataPoint.prototype.count = null;\n /**\n * SummaryDataPoint sum.\n * @member {number|null|undefined} sum\n * @memberof opentelemetry.proto.metrics.v1.SummaryDataPoint\n * @instance\n */\n SummaryDataPoint.prototype.sum = null;\n /**\n * SummaryDataPoint quantileValues.\n * @member {Array.} quantileValues\n * @memberof opentelemetry.proto.metrics.v1.SummaryDataPoint\n * @instance\n */\n SummaryDataPoint.prototype.quantileValues = $util.emptyArray;\n /**\n * SummaryDataPoint flags.\n * @member {number|null|undefined} flags\n * @memberof opentelemetry.proto.metrics.v1.SummaryDataPoint\n * @instance\n */\n SummaryDataPoint.prototype.flags = null;\n /**\n * Creates a new SummaryDataPoint instance using the specified properties.\n * @function create\n * @memberof opentelemetry.proto.metrics.v1.SummaryDataPoint\n * @static\n * @param {opentelemetry.proto.metrics.v1.ISummaryDataPoint=} [properties] Properties to set\n * @returns {opentelemetry.proto.metrics.v1.SummaryDataPoint} SummaryDataPoint instance\n */\n SummaryDataPoint.create = function create(properties) {\n return new SummaryDataPoint(properties);\n };\n /**\n * Encodes the specified SummaryDataPoint message. Does not implicitly {@link opentelemetry.proto.metrics.v1.SummaryDataPoint.verify|verify} messages.\n * @function encode\n * @memberof opentelemetry.proto.metrics.v1.SummaryDataPoint\n * @static\n * @param {opentelemetry.proto.metrics.v1.ISummaryDataPoint} message SummaryDataPoint message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n SummaryDataPoint.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.startTimeUnixNano != null && Object.hasOwnProperty.call(message, \"startTimeUnixNano\"))\n writer.uint32(/* id 2, wireType 1 =*/ 17).fixed64(message.startTimeUnixNano);\n if (message.timeUnixNano != null && Object.hasOwnProperty.call(message, \"timeUnixNano\"))\n writer.uint32(/* id 3, wireType 1 =*/ 25).fixed64(message.timeUnixNano);\n if (message.count != null && Object.hasOwnProperty.call(message, \"count\"))\n writer.uint32(/* id 4, wireType 1 =*/ 33).fixed64(message.count);\n if (message.sum != null && Object.hasOwnProperty.call(message, \"sum\"))\n writer.uint32(/* id 5, wireType 1 =*/ 41).double(message.sum);\n if (message.quantileValues != null && message.quantileValues.length)\n for (var i = 0; i < message.quantileValues.length; ++i)\n $root.opentelemetry.proto.metrics.v1.SummaryDataPoint.ValueAtQuantile.encode(message.quantileValues[i], writer.uint32(/* id 6, wireType 2 =*/ 50).fork()).ldelim();\n if (message.attributes != null && message.attributes.length)\n for (var i = 0; i < message.attributes.length; ++i)\n $root.opentelemetry.proto.common.v1.KeyValue.encode(message.attributes[i], writer.uint32(/* id 7, wireType 2 =*/ 58).fork()).ldelim();\n if (message.flags != null && Object.hasOwnProperty.call(message, \"flags\"))\n writer.uint32(/* id 8, wireType 0 =*/ 64).uint32(message.flags);\n return writer;\n };\n /**\n * Encodes the specified SummaryDataPoint message, length delimited. Does not implicitly {@link opentelemetry.proto.metrics.v1.SummaryDataPoint.verify|verify} messages.\n * @function encodeDelimited\n * @memberof opentelemetry.proto.metrics.v1.SummaryDataPoint\n * @static\n * @param {opentelemetry.proto.metrics.v1.ISummaryDataPoint} message SummaryDataPoint message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n SummaryDataPoint.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n /**\n * Decodes a SummaryDataPoint message from the specified reader or buffer.\n * @function decode\n * @memberof opentelemetry.proto.metrics.v1.SummaryDataPoint\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {opentelemetry.proto.metrics.v1.SummaryDataPoint} SummaryDataPoint\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n SummaryDataPoint.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.opentelemetry.proto.metrics.v1.SummaryDataPoint();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 7: {\n if (!(message.attributes && message.attributes.length))\n message.attributes = [];\n message.attributes.push($root.opentelemetry.proto.common.v1.KeyValue.decode(reader, reader.uint32()));\n break;\n }\n case 2: {\n message.startTimeUnixNano = reader.fixed64();\n break;\n }\n case 3: {\n message.timeUnixNano = reader.fixed64();\n break;\n }\n case 4: {\n message.count = reader.fixed64();\n break;\n }\n case 5: {\n message.sum = reader.double();\n break;\n }\n case 6: {\n if (!(message.quantileValues && message.quantileValues.length))\n message.quantileValues = [];\n message.quantileValues.push($root.opentelemetry.proto.metrics.v1.SummaryDataPoint.ValueAtQuantile.decode(reader, reader.uint32()));\n break;\n }\n case 8: {\n message.flags = reader.uint32();\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n /**\n * Decodes a SummaryDataPoint message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof opentelemetry.proto.metrics.v1.SummaryDataPoint\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {opentelemetry.proto.metrics.v1.SummaryDataPoint} SummaryDataPoint\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n SummaryDataPoint.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n /**\n * Verifies a SummaryDataPoint message.\n * @function verify\n * @memberof opentelemetry.proto.metrics.v1.SummaryDataPoint\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n SummaryDataPoint.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.attributes != null && message.hasOwnProperty(\"attributes\")) {\n if (!Array.isArray(message.attributes))\n return \"attributes: array expected\";\n for (var i = 0; i < message.attributes.length; ++i) {\n var error = $root.opentelemetry.proto.common.v1.KeyValue.verify(message.attributes[i]);\n if (error)\n return \"attributes.\" + error;\n }\n }\n if (message.startTimeUnixNano != null && message.hasOwnProperty(\"startTimeUnixNano\"))\n if (!$util.isInteger(message.startTimeUnixNano) && !(message.startTimeUnixNano && $util.isInteger(message.startTimeUnixNano.low) && $util.isInteger(message.startTimeUnixNano.high)))\n return \"startTimeUnixNano: integer|Long expected\";\n if (message.timeUnixNano != null && message.hasOwnProperty(\"timeUnixNano\"))\n if (!$util.isInteger(message.timeUnixNano) && !(message.timeUnixNano && $util.isInteger(message.timeUnixNano.low) && $util.isInteger(message.timeUnixNano.high)))\n return \"timeUnixNano: integer|Long expected\";\n if (message.count != null && message.hasOwnProperty(\"count\"))\n if (!$util.isInteger(message.count) && !(message.count && $util.isInteger(message.count.low) && $util.isInteger(message.count.high)))\n return \"count: integer|Long expected\";\n if (message.sum != null && message.hasOwnProperty(\"sum\"))\n if (typeof message.sum !== \"number\")\n return \"sum: number expected\";\n if (message.quantileValues != null && message.hasOwnProperty(\"quantileValues\")) {\n if (!Array.isArray(message.quantileValues))\n return \"quantileValues: array expected\";\n for (var i = 0; i < message.quantileValues.length; ++i) {\n var error = $root.opentelemetry.proto.metrics.v1.SummaryDataPoint.ValueAtQuantile.verify(message.quantileValues[i]);\n if (error)\n return \"quantileValues.\" + error;\n }\n }\n if (message.flags != null && message.hasOwnProperty(\"flags\"))\n if (!$util.isInteger(message.flags))\n return \"flags: integer expected\";\n return null;\n };\n /**\n * Creates a SummaryDataPoint message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof opentelemetry.proto.metrics.v1.SummaryDataPoint\n * @static\n * @param {Object.} object Plain object\n * @returns {opentelemetry.proto.metrics.v1.SummaryDataPoint} SummaryDataPoint\n */\n SummaryDataPoint.fromObject = function fromObject(object) {\n if (object instanceof $root.opentelemetry.proto.metrics.v1.SummaryDataPoint)\n return object;\n var message = new $root.opentelemetry.proto.metrics.v1.SummaryDataPoint();\n if (object.attributes) {\n if (!Array.isArray(object.attributes))\n throw TypeError(\".opentelemetry.proto.metrics.v1.SummaryDataPoint.attributes: array expected\");\n message.attributes = [];\n for (var i = 0; i < object.attributes.length; ++i) {\n if (typeof object.attributes[i] !== \"object\")\n throw TypeError(\".opentelemetry.proto.metrics.v1.SummaryDataPoint.attributes: object expected\");\n message.attributes[i] = $root.opentelemetry.proto.common.v1.KeyValue.fromObject(object.attributes[i]);\n }\n }\n if (object.startTimeUnixNano != null)\n if ($util.Long)\n (message.startTimeUnixNano = $util.Long.fromValue(object.startTimeUnixNano)).unsigned = false;\n else if (typeof object.startTimeUnixNano === \"string\")\n message.startTimeUnixNano = parseInt(object.startTimeUnixNano, 10);\n else if (typeof object.startTimeUnixNano === \"number\")\n message.startTimeUnixNano = object.startTimeUnixNano;\n else if (typeof object.startTimeUnixNano === \"object\")\n message.startTimeUnixNano = new $util.LongBits(object.startTimeUnixNano.low >>> 0, object.startTimeUnixNano.high >>> 0).toNumber();\n if (object.timeUnixNano != null)\n if ($util.Long)\n (message.timeUnixNano = $util.Long.fromValue(object.timeUnixNano)).unsigned = false;\n else if (typeof object.timeUnixNano === \"string\")\n message.timeUnixNano = parseInt(object.timeUnixNano, 10);\n else if (typeof object.timeUnixNano === \"number\")\n message.timeUnixNano = object.timeUnixNano;\n else if (typeof object.timeUnixNano === \"object\")\n message.timeUnixNano = new $util.LongBits(object.timeUnixNano.low >>> 0, object.timeUnixNano.high >>> 0).toNumber();\n if (object.count != null)\n if ($util.Long)\n (message.count = $util.Long.fromValue(object.count)).unsigned = false;\n else if (typeof object.count === \"string\")\n message.count = parseInt(object.count, 10);\n else if (typeof object.count === \"number\")\n message.count = object.count;\n else if (typeof object.count === \"object\")\n message.count = new $util.LongBits(object.count.low >>> 0, object.count.high >>> 0).toNumber();\n if (object.sum != null)\n message.sum = Number(object.sum);\n if (object.quantileValues) {\n if (!Array.isArray(object.quantileValues))\n throw TypeError(\".opentelemetry.proto.metrics.v1.SummaryDataPoint.quantileValues: array expected\");\n message.quantileValues = [];\n for (var i = 0; i < object.quantileValues.length; ++i) {\n if (typeof object.quantileValues[i] !== \"object\")\n throw TypeError(\".opentelemetry.proto.metrics.v1.SummaryDataPoint.quantileValues: object expected\");\n message.quantileValues[i] = $root.opentelemetry.proto.metrics.v1.SummaryDataPoint.ValueAtQuantile.fromObject(object.quantileValues[i]);\n }\n }\n if (object.flags != null)\n message.flags = object.flags >>> 0;\n return message;\n };\n /**\n * Creates a plain object from a SummaryDataPoint message. Also converts values to other types if specified.\n * @function toObject\n * @memberof opentelemetry.proto.metrics.v1.SummaryDataPoint\n * @static\n * @param {opentelemetry.proto.metrics.v1.SummaryDataPoint} message SummaryDataPoint\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n SummaryDataPoint.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n var object = {};\n if (options.arrays || options.defaults) {\n object.quantileValues = [];\n object.attributes = [];\n }\n if (options.defaults) {\n if ($util.Long) {\n var long = new $util.Long(0, 0, false);\n object.startTimeUnixNano = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n }\n else\n object.startTimeUnixNano = options.longs === String ? \"0\" : 0;\n if ($util.Long) {\n var long = new $util.Long(0, 0, false);\n object.timeUnixNano = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n }\n else\n object.timeUnixNano = options.longs === String ? \"0\" : 0;\n if ($util.Long) {\n var long = new $util.Long(0, 0, false);\n object.count = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n }\n else\n object.count = options.longs === String ? \"0\" : 0;\n object.sum = 0;\n object.flags = 0;\n }\n if (message.startTimeUnixNano != null && message.hasOwnProperty(\"startTimeUnixNano\"))\n if (typeof message.startTimeUnixNano === \"number\")\n object.startTimeUnixNano = options.longs === String ? String(message.startTimeUnixNano) : message.startTimeUnixNano;\n else\n object.startTimeUnixNano = options.longs === String ? $util.Long.prototype.toString.call(message.startTimeUnixNano) : options.longs === Number ? new $util.LongBits(message.startTimeUnixNano.low >>> 0, message.startTimeUnixNano.high >>> 0).toNumber() : message.startTimeUnixNano;\n if (message.timeUnixNano != null && message.hasOwnProperty(\"timeUnixNano\"))\n if (typeof message.timeUnixNano === \"number\")\n object.timeUnixNano = options.longs === String ? String(message.timeUnixNano) : message.timeUnixNano;\n else\n object.timeUnixNano = options.longs === String ? $util.Long.prototype.toString.call(message.timeUnixNano) : options.longs === Number ? new $util.LongBits(message.timeUnixNano.low >>> 0, message.timeUnixNano.high >>> 0).toNumber() : message.timeUnixNano;\n if (message.count != null && message.hasOwnProperty(\"count\"))\n if (typeof message.count === \"number\")\n object.count = options.longs === String ? String(message.count) : message.count;\n else\n object.count = options.longs === String ? $util.Long.prototype.toString.call(message.count) : options.longs === Number ? new $util.LongBits(message.count.low >>> 0, message.count.high >>> 0).toNumber() : message.count;\n if (message.sum != null && message.hasOwnProperty(\"sum\"))\n object.sum = options.json && !isFinite(message.sum) ? String(message.sum) : message.sum;\n if (message.quantileValues && message.quantileValues.length) {\n object.quantileValues = [];\n for (var j = 0; j < message.quantileValues.length; ++j)\n object.quantileValues[j] = $root.opentelemetry.proto.metrics.v1.SummaryDataPoint.ValueAtQuantile.toObject(message.quantileValues[j], options);\n }\n if (message.attributes && message.attributes.length) {\n object.attributes = [];\n for (var j = 0; j < message.attributes.length; ++j)\n object.attributes[j] = $root.opentelemetry.proto.common.v1.KeyValue.toObject(message.attributes[j], options);\n }\n if (message.flags != null && message.hasOwnProperty(\"flags\"))\n object.flags = message.flags;\n return object;\n };\n /**\n * Converts this SummaryDataPoint to JSON.\n * @function toJSON\n * @memberof opentelemetry.proto.metrics.v1.SummaryDataPoint\n * @instance\n * @returns {Object.} JSON object\n */\n SummaryDataPoint.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n /**\n * Gets the default type url for SummaryDataPoint\n * @function getTypeUrl\n * @memberof opentelemetry.proto.metrics.v1.SummaryDataPoint\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n SummaryDataPoint.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = \"type.googleapis.com\";\n }\n return typeUrlPrefix + \"/opentelemetry.proto.metrics.v1.SummaryDataPoint\";\n };\n SummaryDataPoint.ValueAtQuantile = (function () {\n /**\n * Properties of a ValueAtQuantile.\n * @memberof opentelemetry.proto.metrics.v1.SummaryDataPoint\n * @interface IValueAtQuantile\n * @property {number|null} [quantile] ValueAtQuantile quantile\n * @property {number|null} [value] ValueAtQuantile value\n */\n /**\n * Constructs a new ValueAtQuantile.\n * @memberof opentelemetry.proto.metrics.v1.SummaryDataPoint\n * @classdesc Represents a ValueAtQuantile.\n * @implements IValueAtQuantile\n * @constructor\n * @param {opentelemetry.proto.metrics.v1.SummaryDataPoint.IValueAtQuantile=} [properties] Properties to set\n */\n function ValueAtQuantile(properties) {\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n /**\n * ValueAtQuantile quantile.\n * @member {number|null|undefined} quantile\n * @memberof opentelemetry.proto.metrics.v1.SummaryDataPoint.ValueAtQuantile\n * @instance\n */\n ValueAtQuantile.prototype.quantile = null;\n /**\n * ValueAtQuantile value.\n * @member {number|null|undefined} value\n * @memberof opentelemetry.proto.metrics.v1.SummaryDataPoint.ValueAtQuantile\n * @instance\n */\n ValueAtQuantile.prototype.value = null;\n /**\n * Creates a new ValueAtQuantile instance using the specified properties.\n * @function create\n * @memberof opentelemetry.proto.metrics.v1.SummaryDataPoint.ValueAtQuantile\n * @static\n * @param {opentelemetry.proto.metrics.v1.SummaryDataPoint.IValueAtQuantile=} [properties] Properties to set\n * @returns {opentelemetry.proto.metrics.v1.SummaryDataPoint.ValueAtQuantile} ValueAtQuantile instance\n */\n ValueAtQuantile.create = function create(properties) {\n return new ValueAtQuantile(properties);\n };\n /**\n * Encodes the specified ValueAtQuantile message. Does not implicitly {@link opentelemetry.proto.metrics.v1.SummaryDataPoint.ValueAtQuantile.verify|verify} messages.\n * @function encode\n * @memberof opentelemetry.proto.metrics.v1.SummaryDataPoint.ValueAtQuantile\n * @static\n * @param {opentelemetry.proto.metrics.v1.SummaryDataPoint.IValueAtQuantile} message ValueAtQuantile message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ValueAtQuantile.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.quantile != null && Object.hasOwnProperty.call(message, \"quantile\"))\n writer.uint32(/* id 1, wireType 1 =*/ 9).double(message.quantile);\n if (message.value != null && Object.hasOwnProperty.call(message, \"value\"))\n writer.uint32(/* id 2, wireType 1 =*/ 17).double(message.value);\n return writer;\n };\n /**\n * Encodes the specified ValueAtQuantile message, length delimited. Does not implicitly {@link opentelemetry.proto.metrics.v1.SummaryDataPoint.ValueAtQuantile.verify|verify} messages.\n * @function encodeDelimited\n * @memberof opentelemetry.proto.metrics.v1.SummaryDataPoint.ValueAtQuantile\n * @static\n * @param {opentelemetry.proto.metrics.v1.SummaryDataPoint.IValueAtQuantile} message ValueAtQuantile message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ValueAtQuantile.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n /**\n * Decodes a ValueAtQuantile message from the specified reader or buffer.\n * @function decode\n * @memberof opentelemetry.proto.metrics.v1.SummaryDataPoint.ValueAtQuantile\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {opentelemetry.proto.metrics.v1.SummaryDataPoint.ValueAtQuantile} ValueAtQuantile\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ValueAtQuantile.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.opentelemetry.proto.metrics.v1.SummaryDataPoint.ValueAtQuantile();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n message.quantile = reader.double();\n break;\n }\n case 2: {\n message.value = reader.double();\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n /**\n * Decodes a ValueAtQuantile message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof opentelemetry.proto.metrics.v1.SummaryDataPoint.ValueAtQuantile\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {opentelemetry.proto.metrics.v1.SummaryDataPoint.ValueAtQuantile} ValueAtQuantile\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ValueAtQuantile.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n /**\n * Verifies a ValueAtQuantile message.\n * @function verify\n * @memberof opentelemetry.proto.metrics.v1.SummaryDataPoint.ValueAtQuantile\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n ValueAtQuantile.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.quantile != null && message.hasOwnProperty(\"quantile\"))\n if (typeof message.quantile !== \"number\")\n return \"quantile: number expected\";\n if (message.value != null && message.hasOwnProperty(\"value\"))\n if (typeof message.value !== \"number\")\n return \"value: number expected\";\n return null;\n };\n /**\n * Creates a ValueAtQuantile message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof opentelemetry.proto.metrics.v1.SummaryDataPoint.ValueAtQuantile\n * @static\n * @param {Object.} object Plain object\n * @returns {opentelemetry.proto.metrics.v1.SummaryDataPoint.ValueAtQuantile} ValueAtQuantile\n */\n ValueAtQuantile.fromObject = function fromObject(object) {\n if (object instanceof $root.opentelemetry.proto.metrics.v1.SummaryDataPoint.ValueAtQuantile)\n return object;\n var message = new $root.opentelemetry.proto.metrics.v1.SummaryDataPoint.ValueAtQuantile();\n if (object.quantile != null)\n message.quantile = Number(object.quantile);\n if (object.value != null)\n message.value = Number(object.value);\n return message;\n };\n /**\n * Creates a plain object from a ValueAtQuantile message. Also converts values to other types if specified.\n * @function toObject\n * @memberof opentelemetry.proto.metrics.v1.SummaryDataPoint.ValueAtQuantile\n * @static\n * @param {opentelemetry.proto.metrics.v1.SummaryDataPoint.ValueAtQuantile} message ValueAtQuantile\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n ValueAtQuantile.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n var object = {};\n if (options.defaults) {\n object.quantile = 0;\n object.value = 0;\n }\n if (message.quantile != null && message.hasOwnProperty(\"quantile\"))\n object.quantile = options.json && !isFinite(message.quantile) ? String(message.quantile) : message.quantile;\n if (message.value != null && message.hasOwnProperty(\"value\"))\n object.value = options.json && !isFinite(message.value) ? String(message.value) : message.value;\n return object;\n };\n /**\n * Converts this ValueAtQuantile to JSON.\n * @function toJSON\n * @memberof opentelemetry.proto.metrics.v1.SummaryDataPoint.ValueAtQuantile\n * @instance\n * @returns {Object.} JSON object\n */\n ValueAtQuantile.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n /**\n * Gets the default type url for ValueAtQuantile\n * @function getTypeUrl\n * @memberof opentelemetry.proto.metrics.v1.SummaryDataPoint.ValueAtQuantile\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n ValueAtQuantile.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = \"type.googleapis.com\";\n }\n return typeUrlPrefix + \"/opentelemetry.proto.metrics.v1.SummaryDataPoint.ValueAtQuantile\";\n };\n return ValueAtQuantile;\n })();\n return SummaryDataPoint;\n })();\n v1.Exemplar = (function () {\n /**\n * Properties of an Exemplar.\n * @memberof opentelemetry.proto.metrics.v1\n * @interface IExemplar\n * @property {Array.|null} [filteredAttributes] Exemplar filteredAttributes\n * @property {number|Long|null} [timeUnixNano] Exemplar timeUnixNano\n * @property {number|null} [asDouble] Exemplar asDouble\n * @property {number|Long|null} [asInt] Exemplar asInt\n * @property {Uint8Array|null} [spanId] Exemplar spanId\n * @property {Uint8Array|null} [traceId] Exemplar traceId\n */\n /**\n * Constructs a new Exemplar.\n * @memberof opentelemetry.proto.metrics.v1\n * @classdesc Represents an Exemplar.\n * @implements IExemplar\n * @constructor\n * @param {opentelemetry.proto.metrics.v1.IExemplar=} [properties] Properties to set\n */\n function Exemplar(properties) {\n this.filteredAttributes = [];\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n /**\n * Exemplar filteredAttributes.\n * @member {Array.} filteredAttributes\n * @memberof opentelemetry.proto.metrics.v1.Exemplar\n * @instance\n */\n Exemplar.prototype.filteredAttributes = $util.emptyArray;\n /**\n * Exemplar timeUnixNano.\n * @member {number|Long|null|undefined} timeUnixNano\n * @memberof opentelemetry.proto.metrics.v1.Exemplar\n * @instance\n */\n Exemplar.prototype.timeUnixNano = null;\n /**\n * Exemplar asDouble.\n * @member {number|null|undefined} asDouble\n * @memberof opentelemetry.proto.metrics.v1.Exemplar\n * @instance\n */\n Exemplar.prototype.asDouble = null;\n /**\n * Exemplar asInt.\n * @member {number|Long|null|undefined} asInt\n * @memberof opentelemetry.proto.metrics.v1.Exemplar\n * @instance\n */\n Exemplar.prototype.asInt = null;\n /**\n * Exemplar spanId.\n * @member {Uint8Array|null|undefined} spanId\n * @memberof opentelemetry.proto.metrics.v1.Exemplar\n * @instance\n */\n Exemplar.prototype.spanId = null;\n /**\n * Exemplar traceId.\n * @member {Uint8Array|null|undefined} traceId\n * @memberof opentelemetry.proto.metrics.v1.Exemplar\n * @instance\n */\n Exemplar.prototype.traceId = null;\n // OneOf field names bound to virtual getters and setters\n var $oneOfFields;\n /**\n * Exemplar value.\n * @member {\"asDouble\"|\"asInt\"|undefined} value\n * @memberof opentelemetry.proto.metrics.v1.Exemplar\n * @instance\n */\n Object.defineProperty(Exemplar.prototype, \"value\", {\n get: $util.oneOfGetter($oneOfFields = [\"asDouble\", \"asInt\"]),\n set: $util.oneOfSetter($oneOfFields)\n });\n /**\n * Creates a new Exemplar instance using the specified properties.\n * @function create\n * @memberof opentelemetry.proto.metrics.v1.Exemplar\n * @static\n * @param {opentelemetry.proto.metrics.v1.IExemplar=} [properties] Properties to set\n * @returns {opentelemetry.proto.metrics.v1.Exemplar} Exemplar instance\n */\n Exemplar.create = function create(properties) {\n return new Exemplar(properties);\n };\n /**\n * Encodes the specified Exemplar message. Does not implicitly {@link opentelemetry.proto.metrics.v1.Exemplar.verify|verify} messages.\n * @function encode\n * @memberof opentelemetry.proto.metrics.v1.Exemplar\n * @static\n * @param {opentelemetry.proto.metrics.v1.IExemplar} message Exemplar message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Exemplar.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.timeUnixNano != null && Object.hasOwnProperty.call(message, \"timeUnixNano\"))\n writer.uint32(/* id 2, wireType 1 =*/ 17).fixed64(message.timeUnixNano);\n if (message.asDouble != null && Object.hasOwnProperty.call(message, \"asDouble\"))\n writer.uint32(/* id 3, wireType 1 =*/ 25).double(message.asDouble);\n if (message.spanId != null && Object.hasOwnProperty.call(message, \"spanId\"))\n writer.uint32(/* id 4, wireType 2 =*/ 34).bytes(message.spanId);\n if (message.traceId != null && Object.hasOwnProperty.call(message, \"traceId\"))\n writer.uint32(/* id 5, wireType 2 =*/ 42).bytes(message.traceId);\n if (message.asInt != null && Object.hasOwnProperty.call(message, \"asInt\"))\n writer.uint32(/* id 6, wireType 1 =*/ 49).sfixed64(message.asInt);\n if (message.filteredAttributes != null && message.filteredAttributes.length)\n for (var i = 0; i < message.filteredAttributes.length; ++i)\n $root.opentelemetry.proto.common.v1.KeyValue.encode(message.filteredAttributes[i], writer.uint32(/* id 7, wireType 2 =*/ 58).fork()).ldelim();\n return writer;\n };\n /**\n * Encodes the specified Exemplar message, length delimited. Does not implicitly {@link opentelemetry.proto.metrics.v1.Exemplar.verify|verify} messages.\n * @function encodeDelimited\n * @memberof opentelemetry.proto.metrics.v1.Exemplar\n * @static\n * @param {opentelemetry.proto.metrics.v1.IExemplar} message Exemplar message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Exemplar.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n /**\n * Decodes an Exemplar message from the specified reader or buffer.\n * @function decode\n * @memberof opentelemetry.proto.metrics.v1.Exemplar\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {opentelemetry.proto.metrics.v1.Exemplar} Exemplar\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Exemplar.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.opentelemetry.proto.metrics.v1.Exemplar();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 7: {\n if (!(message.filteredAttributes && message.filteredAttributes.length))\n message.filteredAttributes = [];\n message.filteredAttributes.push($root.opentelemetry.proto.common.v1.KeyValue.decode(reader, reader.uint32()));\n break;\n }\n case 2: {\n message.timeUnixNano = reader.fixed64();\n break;\n }\n case 3: {\n message.asDouble = reader.double();\n break;\n }\n case 6: {\n message.asInt = reader.sfixed64();\n break;\n }\n case 4: {\n message.spanId = reader.bytes();\n break;\n }\n case 5: {\n message.traceId = reader.bytes();\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n /**\n * Decodes an Exemplar message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof opentelemetry.proto.metrics.v1.Exemplar\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {opentelemetry.proto.metrics.v1.Exemplar} Exemplar\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Exemplar.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n /**\n * Verifies an Exemplar message.\n * @function verify\n * @memberof opentelemetry.proto.metrics.v1.Exemplar\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n Exemplar.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n var properties = {};\n if (message.filteredAttributes != null && message.hasOwnProperty(\"filteredAttributes\")) {\n if (!Array.isArray(message.filteredAttributes))\n return \"filteredAttributes: array expected\";\n for (var i = 0; i < message.filteredAttributes.length; ++i) {\n var error = $root.opentelemetry.proto.common.v1.KeyValue.verify(message.filteredAttributes[i]);\n if (error)\n return \"filteredAttributes.\" + error;\n }\n }\n if (message.timeUnixNano != null && message.hasOwnProperty(\"timeUnixNano\"))\n if (!$util.isInteger(message.timeUnixNano) && !(message.timeUnixNano && $util.isInteger(message.timeUnixNano.low) && $util.isInteger(message.timeUnixNano.high)))\n return \"timeUnixNano: integer|Long expected\";\n if (message.asDouble != null && message.hasOwnProperty(\"asDouble\")) {\n properties.value = 1;\n if (typeof message.asDouble !== \"number\")\n return \"asDouble: number expected\";\n }\n if (message.asInt != null && message.hasOwnProperty(\"asInt\")) {\n if (properties.value === 1)\n return \"value: multiple values\";\n properties.value = 1;\n if (!$util.isInteger(message.asInt) && !(message.asInt && $util.isInteger(message.asInt.low) && $util.isInteger(message.asInt.high)))\n return \"asInt: integer|Long expected\";\n }\n if (message.spanId != null && message.hasOwnProperty(\"spanId\"))\n if (!(message.spanId && typeof message.spanId.length === \"number\" || $util.isString(message.spanId)))\n return \"spanId: buffer expected\";\n if (message.traceId != null && message.hasOwnProperty(\"traceId\"))\n if (!(message.traceId && typeof message.traceId.length === \"number\" || $util.isString(message.traceId)))\n return \"traceId: buffer expected\";\n return null;\n };\n /**\n * Creates an Exemplar message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof opentelemetry.proto.metrics.v1.Exemplar\n * @static\n * @param {Object.} object Plain object\n * @returns {opentelemetry.proto.metrics.v1.Exemplar} Exemplar\n */\n Exemplar.fromObject = function fromObject(object) {\n if (object instanceof $root.opentelemetry.proto.metrics.v1.Exemplar)\n return object;\n var message = new $root.opentelemetry.proto.metrics.v1.Exemplar();\n if (object.filteredAttributes) {\n if (!Array.isArray(object.filteredAttributes))\n throw TypeError(\".opentelemetry.proto.metrics.v1.Exemplar.filteredAttributes: array expected\");\n message.filteredAttributes = [];\n for (var i = 0; i < object.filteredAttributes.length; ++i) {\n if (typeof object.filteredAttributes[i] !== \"object\")\n throw TypeError(\".opentelemetry.proto.metrics.v1.Exemplar.filteredAttributes: object expected\");\n message.filteredAttributes[i] = $root.opentelemetry.proto.common.v1.KeyValue.fromObject(object.filteredAttributes[i]);\n }\n }\n if (object.timeUnixNano != null)\n if ($util.Long)\n (message.timeUnixNano = $util.Long.fromValue(object.timeUnixNano)).unsigned = false;\n else if (typeof object.timeUnixNano === \"string\")\n message.timeUnixNano = parseInt(object.timeUnixNano, 10);\n else if (typeof object.timeUnixNano === \"number\")\n message.timeUnixNano = object.timeUnixNano;\n else if (typeof object.timeUnixNano === \"object\")\n message.timeUnixNano = new $util.LongBits(object.timeUnixNano.low >>> 0, object.timeUnixNano.high >>> 0).toNumber();\n if (object.asDouble != null)\n message.asDouble = Number(object.asDouble);\n if (object.asInt != null)\n if ($util.Long)\n (message.asInt = $util.Long.fromValue(object.asInt)).unsigned = false;\n else if (typeof object.asInt === \"string\")\n message.asInt = parseInt(object.asInt, 10);\n else if (typeof object.asInt === \"number\")\n message.asInt = object.asInt;\n else if (typeof object.asInt === \"object\")\n message.asInt = new $util.LongBits(object.asInt.low >>> 0, object.asInt.high >>> 0).toNumber();\n if (object.spanId != null)\n if (typeof object.spanId === \"string\")\n $util.base64.decode(object.spanId, message.spanId = $util.newBuffer($util.base64.length(object.spanId)), 0);\n else if (object.spanId.length >= 0)\n message.spanId = object.spanId;\n if (object.traceId != null)\n if (typeof object.traceId === \"string\")\n $util.base64.decode(object.traceId, message.traceId = $util.newBuffer($util.base64.length(object.traceId)), 0);\n else if (object.traceId.length >= 0)\n message.traceId = object.traceId;\n return message;\n };\n /**\n * Creates a plain object from an Exemplar message. Also converts values to other types if specified.\n * @function toObject\n * @memberof opentelemetry.proto.metrics.v1.Exemplar\n * @static\n * @param {opentelemetry.proto.metrics.v1.Exemplar} message Exemplar\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n Exemplar.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n var object = {};\n if (options.arrays || options.defaults)\n object.filteredAttributes = [];\n if (options.defaults) {\n if ($util.Long) {\n var long = new $util.Long(0, 0, false);\n object.timeUnixNano = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n }\n else\n object.timeUnixNano = options.longs === String ? \"0\" : 0;\n if (options.bytes === String)\n object.spanId = \"\";\n else {\n object.spanId = [];\n if (options.bytes !== Array)\n object.spanId = $util.newBuffer(object.spanId);\n }\n if (options.bytes === String)\n object.traceId = \"\";\n else {\n object.traceId = [];\n if (options.bytes !== Array)\n object.traceId = $util.newBuffer(object.traceId);\n }\n }\n if (message.timeUnixNano != null && message.hasOwnProperty(\"timeUnixNano\"))\n if (typeof message.timeUnixNano === \"number\")\n object.timeUnixNano = options.longs === String ? String(message.timeUnixNano) : message.timeUnixNano;\n else\n object.timeUnixNano = options.longs === String ? $util.Long.prototype.toString.call(message.timeUnixNano) : options.longs === Number ? new $util.LongBits(message.timeUnixNano.low >>> 0, message.timeUnixNano.high >>> 0).toNumber() : message.timeUnixNano;\n if (message.asDouble != null && message.hasOwnProperty(\"asDouble\")) {\n object.asDouble = options.json && !isFinite(message.asDouble) ? String(message.asDouble) : message.asDouble;\n if (options.oneofs)\n object.value = \"asDouble\";\n }\n if (message.spanId != null && message.hasOwnProperty(\"spanId\"))\n object.spanId = options.bytes === String ? $util.base64.encode(message.spanId, 0, message.spanId.length) : options.bytes === Array ? Array.prototype.slice.call(message.spanId) : message.spanId;\n if (message.traceId != null && message.hasOwnProperty(\"traceId\"))\n object.traceId = options.bytes === String ? $util.base64.encode(message.traceId, 0, message.traceId.length) : options.bytes === Array ? Array.prototype.slice.call(message.traceId) : message.traceId;\n if (message.asInt != null && message.hasOwnProperty(\"asInt\")) {\n if (typeof message.asInt === \"number\")\n object.asInt = options.longs === String ? String(message.asInt) : message.asInt;\n else\n object.asInt = options.longs === String ? $util.Long.prototype.toString.call(message.asInt) : options.longs === Number ? new $util.LongBits(message.asInt.low >>> 0, message.asInt.high >>> 0).toNumber() : message.asInt;\n if (options.oneofs)\n object.value = \"asInt\";\n }\n if (message.filteredAttributes && message.filteredAttributes.length) {\n object.filteredAttributes = [];\n for (var j = 0; j < message.filteredAttributes.length; ++j)\n object.filteredAttributes[j] = $root.opentelemetry.proto.common.v1.KeyValue.toObject(message.filteredAttributes[j], options);\n }\n return object;\n };\n /**\n * Converts this Exemplar to JSON.\n * @function toJSON\n * @memberof opentelemetry.proto.metrics.v1.Exemplar\n * @instance\n * @returns {Object.} JSON object\n */\n Exemplar.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n /**\n * Gets the default type url for Exemplar\n * @function getTypeUrl\n * @memberof opentelemetry.proto.metrics.v1.Exemplar\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n Exemplar.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = \"type.googleapis.com\";\n }\n return typeUrlPrefix + \"/opentelemetry.proto.metrics.v1.Exemplar\";\n };\n return Exemplar;\n })();\n return v1;\n })();\n return metrics;\n })();\n proto.logs = (function () {\n /**\n * Namespace logs.\n * @memberof opentelemetry.proto\n * @namespace\n */\n var logs = {};\n logs.v1 = (function () {\n /**\n * Namespace v1.\n * @memberof opentelemetry.proto.logs\n * @namespace\n */\n var v1 = {};\n v1.LogsData = (function () {\n /**\n * Properties of a LogsData.\n * @memberof opentelemetry.proto.logs.v1\n * @interface ILogsData\n * @property {Array.|null} [resourceLogs] LogsData resourceLogs\n */\n /**\n * Constructs a new LogsData.\n * @memberof opentelemetry.proto.logs.v1\n * @classdesc Represents a LogsData.\n * @implements ILogsData\n * @constructor\n * @param {opentelemetry.proto.logs.v1.ILogsData=} [properties] Properties to set\n */\n function LogsData(properties) {\n this.resourceLogs = [];\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n /**\n * LogsData resourceLogs.\n * @member {Array.} resourceLogs\n * @memberof opentelemetry.proto.logs.v1.LogsData\n * @instance\n */\n LogsData.prototype.resourceLogs = $util.emptyArray;\n /**\n * Creates a new LogsData instance using the specified properties.\n * @function create\n * @memberof opentelemetry.proto.logs.v1.LogsData\n * @static\n * @param {opentelemetry.proto.logs.v1.ILogsData=} [properties] Properties to set\n * @returns {opentelemetry.proto.logs.v1.LogsData} LogsData instance\n */\n LogsData.create = function create(properties) {\n return new LogsData(properties);\n };\n /**\n * Encodes the specified LogsData message. Does not implicitly {@link opentelemetry.proto.logs.v1.LogsData.verify|verify} messages.\n * @function encode\n * @memberof opentelemetry.proto.logs.v1.LogsData\n * @static\n * @param {opentelemetry.proto.logs.v1.ILogsData} message LogsData message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n LogsData.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.resourceLogs != null && message.resourceLogs.length)\n for (var i = 0; i < message.resourceLogs.length; ++i)\n $root.opentelemetry.proto.logs.v1.ResourceLogs.encode(message.resourceLogs[i], writer.uint32(/* id 1, wireType 2 =*/ 10).fork()).ldelim();\n return writer;\n };\n /**\n * Encodes the specified LogsData message, length delimited. Does not implicitly {@link opentelemetry.proto.logs.v1.LogsData.verify|verify} messages.\n * @function encodeDelimited\n * @memberof opentelemetry.proto.logs.v1.LogsData\n * @static\n * @param {opentelemetry.proto.logs.v1.ILogsData} message LogsData message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n LogsData.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n /**\n * Decodes a LogsData message from the specified reader or buffer.\n * @function decode\n * @memberof opentelemetry.proto.logs.v1.LogsData\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {opentelemetry.proto.logs.v1.LogsData} LogsData\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n LogsData.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.opentelemetry.proto.logs.v1.LogsData();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (!(message.resourceLogs && message.resourceLogs.length))\n message.resourceLogs = [];\n message.resourceLogs.push($root.opentelemetry.proto.logs.v1.ResourceLogs.decode(reader, reader.uint32()));\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n /**\n * Decodes a LogsData message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof opentelemetry.proto.logs.v1.LogsData\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {opentelemetry.proto.logs.v1.LogsData} LogsData\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n LogsData.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n /**\n * Verifies a LogsData message.\n * @function verify\n * @memberof opentelemetry.proto.logs.v1.LogsData\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n LogsData.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.resourceLogs != null && message.hasOwnProperty(\"resourceLogs\")) {\n if (!Array.isArray(message.resourceLogs))\n return \"resourceLogs: array expected\";\n for (var i = 0; i < message.resourceLogs.length; ++i) {\n var error = $root.opentelemetry.proto.logs.v1.ResourceLogs.verify(message.resourceLogs[i]);\n if (error)\n return \"resourceLogs.\" + error;\n }\n }\n return null;\n };\n /**\n * Creates a LogsData message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof opentelemetry.proto.logs.v1.LogsData\n * @static\n * @param {Object.} object Plain object\n * @returns {opentelemetry.proto.logs.v1.LogsData} LogsData\n */\n LogsData.fromObject = function fromObject(object) {\n if (object instanceof $root.opentelemetry.proto.logs.v1.LogsData)\n return object;\n var message = new $root.opentelemetry.proto.logs.v1.LogsData();\n if (object.resourceLogs) {\n if (!Array.isArray(object.resourceLogs))\n throw TypeError(\".opentelemetry.proto.logs.v1.LogsData.resourceLogs: array expected\");\n message.resourceLogs = [];\n for (var i = 0; i < object.resourceLogs.length; ++i) {\n if (typeof object.resourceLogs[i] !== \"object\")\n throw TypeError(\".opentelemetry.proto.logs.v1.LogsData.resourceLogs: object expected\");\n message.resourceLogs[i] = $root.opentelemetry.proto.logs.v1.ResourceLogs.fromObject(object.resourceLogs[i]);\n }\n }\n return message;\n };\n /**\n * Creates a plain object from a LogsData message. Also converts values to other types if specified.\n * @function toObject\n * @memberof opentelemetry.proto.logs.v1.LogsData\n * @static\n * @param {opentelemetry.proto.logs.v1.LogsData} message LogsData\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n LogsData.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n var object = {};\n if (options.arrays || options.defaults)\n object.resourceLogs = [];\n if (message.resourceLogs && message.resourceLogs.length) {\n object.resourceLogs = [];\n for (var j = 0; j < message.resourceLogs.length; ++j)\n object.resourceLogs[j] = $root.opentelemetry.proto.logs.v1.ResourceLogs.toObject(message.resourceLogs[j], options);\n }\n return object;\n };\n /**\n * Converts this LogsData to JSON.\n * @function toJSON\n * @memberof opentelemetry.proto.logs.v1.LogsData\n * @instance\n * @returns {Object.} JSON object\n */\n LogsData.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n /**\n * Gets the default type url for LogsData\n * @function getTypeUrl\n * @memberof opentelemetry.proto.logs.v1.LogsData\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n LogsData.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = \"type.googleapis.com\";\n }\n return typeUrlPrefix + \"/opentelemetry.proto.logs.v1.LogsData\";\n };\n return LogsData;\n })();\n v1.ResourceLogs = (function () {\n /**\n * Properties of a ResourceLogs.\n * @memberof opentelemetry.proto.logs.v1\n * @interface IResourceLogs\n * @property {opentelemetry.proto.resource.v1.IResource|null} [resource] ResourceLogs resource\n * @property {Array.|null} [scopeLogs] ResourceLogs scopeLogs\n * @property {string|null} [schemaUrl] ResourceLogs schemaUrl\n */\n /**\n * Constructs a new ResourceLogs.\n * @memberof opentelemetry.proto.logs.v1\n * @classdesc Represents a ResourceLogs.\n * @implements IResourceLogs\n * @constructor\n * @param {opentelemetry.proto.logs.v1.IResourceLogs=} [properties] Properties to set\n */\n function ResourceLogs(properties) {\n this.scopeLogs = [];\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n /**\n * ResourceLogs resource.\n * @member {opentelemetry.proto.resource.v1.IResource|null|undefined} resource\n * @memberof opentelemetry.proto.logs.v1.ResourceLogs\n * @instance\n */\n ResourceLogs.prototype.resource = null;\n /**\n * ResourceLogs scopeLogs.\n * @member {Array.} scopeLogs\n * @memberof opentelemetry.proto.logs.v1.ResourceLogs\n * @instance\n */\n ResourceLogs.prototype.scopeLogs = $util.emptyArray;\n /**\n * ResourceLogs schemaUrl.\n * @member {string|null|undefined} schemaUrl\n * @memberof opentelemetry.proto.logs.v1.ResourceLogs\n * @instance\n */\n ResourceLogs.prototype.schemaUrl = null;\n /**\n * Creates a new ResourceLogs instance using the specified properties.\n * @function create\n * @memberof opentelemetry.proto.logs.v1.ResourceLogs\n * @static\n * @param {opentelemetry.proto.logs.v1.IResourceLogs=} [properties] Properties to set\n * @returns {opentelemetry.proto.logs.v1.ResourceLogs} ResourceLogs instance\n */\n ResourceLogs.create = function create(properties) {\n return new ResourceLogs(properties);\n };\n /**\n * Encodes the specified ResourceLogs message. Does not implicitly {@link opentelemetry.proto.logs.v1.ResourceLogs.verify|verify} messages.\n * @function encode\n * @memberof opentelemetry.proto.logs.v1.ResourceLogs\n * @static\n * @param {opentelemetry.proto.logs.v1.IResourceLogs} message ResourceLogs message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ResourceLogs.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.resource != null && Object.hasOwnProperty.call(message, \"resource\"))\n $root.opentelemetry.proto.resource.v1.Resource.encode(message.resource, writer.uint32(/* id 1, wireType 2 =*/ 10).fork()).ldelim();\n if (message.scopeLogs != null && message.scopeLogs.length)\n for (var i = 0; i < message.scopeLogs.length; ++i)\n $root.opentelemetry.proto.logs.v1.ScopeLogs.encode(message.scopeLogs[i], writer.uint32(/* id 2, wireType 2 =*/ 18).fork()).ldelim();\n if (message.schemaUrl != null && Object.hasOwnProperty.call(message, \"schemaUrl\"))\n writer.uint32(/* id 3, wireType 2 =*/ 26).string(message.schemaUrl);\n return writer;\n };\n /**\n * Encodes the specified ResourceLogs message, length delimited. Does not implicitly {@link opentelemetry.proto.logs.v1.ResourceLogs.verify|verify} messages.\n * @function encodeDelimited\n * @memberof opentelemetry.proto.logs.v1.ResourceLogs\n * @static\n * @param {opentelemetry.proto.logs.v1.IResourceLogs} message ResourceLogs message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ResourceLogs.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n /**\n * Decodes a ResourceLogs message from the specified reader or buffer.\n * @function decode\n * @memberof opentelemetry.proto.logs.v1.ResourceLogs\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {opentelemetry.proto.logs.v1.ResourceLogs} ResourceLogs\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ResourceLogs.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.opentelemetry.proto.logs.v1.ResourceLogs();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n message.resource = $root.opentelemetry.proto.resource.v1.Resource.decode(reader, reader.uint32());\n break;\n }\n case 2: {\n if (!(message.scopeLogs && message.scopeLogs.length))\n message.scopeLogs = [];\n message.scopeLogs.push($root.opentelemetry.proto.logs.v1.ScopeLogs.decode(reader, reader.uint32()));\n break;\n }\n case 3: {\n message.schemaUrl = reader.string();\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n /**\n * Decodes a ResourceLogs message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof opentelemetry.proto.logs.v1.ResourceLogs\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {opentelemetry.proto.logs.v1.ResourceLogs} ResourceLogs\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ResourceLogs.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n /**\n * Verifies a ResourceLogs message.\n * @function verify\n * @memberof opentelemetry.proto.logs.v1.ResourceLogs\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n ResourceLogs.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.resource != null && message.hasOwnProperty(\"resource\")) {\n var error = $root.opentelemetry.proto.resource.v1.Resource.verify(message.resource);\n if (error)\n return \"resource.\" + error;\n }\n if (message.scopeLogs != null && message.hasOwnProperty(\"scopeLogs\")) {\n if (!Array.isArray(message.scopeLogs))\n return \"scopeLogs: array expected\";\n for (var i = 0; i < message.scopeLogs.length; ++i) {\n var error = $root.opentelemetry.proto.logs.v1.ScopeLogs.verify(message.scopeLogs[i]);\n if (error)\n return \"scopeLogs.\" + error;\n }\n }\n if (message.schemaUrl != null && message.hasOwnProperty(\"schemaUrl\"))\n if (!$util.isString(message.schemaUrl))\n return \"schemaUrl: string expected\";\n return null;\n };\n /**\n * Creates a ResourceLogs message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof opentelemetry.proto.logs.v1.ResourceLogs\n * @static\n * @param {Object.} object Plain object\n * @returns {opentelemetry.proto.logs.v1.ResourceLogs} ResourceLogs\n */\n ResourceLogs.fromObject = function fromObject(object) {\n if (object instanceof $root.opentelemetry.proto.logs.v1.ResourceLogs)\n return object;\n var message = new $root.opentelemetry.proto.logs.v1.ResourceLogs();\n if (object.resource != null) {\n if (typeof object.resource !== \"object\")\n throw TypeError(\".opentelemetry.proto.logs.v1.ResourceLogs.resource: object expected\");\n message.resource = $root.opentelemetry.proto.resource.v1.Resource.fromObject(object.resource);\n }\n if (object.scopeLogs) {\n if (!Array.isArray(object.scopeLogs))\n throw TypeError(\".opentelemetry.proto.logs.v1.ResourceLogs.scopeLogs: array expected\");\n message.scopeLogs = [];\n for (var i = 0; i < object.scopeLogs.length; ++i) {\n if (typeof object.scopeLogs[i] !== \"object\")\n throw TypeError(\".opentelemetry.proto.logs.v1.ResourceLogs.scopeLogs: object expected\");\n message.scopeLogs[i] = $root.opentelemetry.proto.logs.v1.ScopeLogs.fromObject(object.scopeLogs[i]);\n }\n }\n if (object.schemaUrl != null)\n message.schemaUrl = String(object.schemaUrl);\n return message;\n };\n /**\n * Creates a plain object from a ResourceLogs message. Also converts values to other types if specified.\n * @function toObject\n * @memberof opentelemetry.proto.logs.v1.ResourceLogs\n * @static\n * @param {opentelemetry.proto.logs.v1.ResourceLogs} message ResourceLogs\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n ResourceLogs.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n var object = {};\n if (options.arrays || options.defaults)\n object.scopeLogs = [];\n if (options.defaults) {\n object.resource = null;\n object.schemaUrl = \"\";\n }\n if (message.resource != null && message.hasOwnProperty(\"resource\"))\n object.resource = $root.opentelemetry.proto.resource.v1.Resource.toObject(message.resource, options);\n if (message.scopeLogs && message.scopeLogs.length) {\n object.scopeLogs = [];\n for (var j = 0; j < message.scopeLogs.length; ++j)\n object.scopeLogs[j] = $root.opentelemetry.proto.logs.v1.ScopeLogs.toObject(message.scopeLogs[j], options);\n }\n if (message.schemaUrl != null && message.hasOwnProperty(\"schemaUrl\"))\n object.schemaUrl = message.schemaUrl;\n return object;\n };\n /**\n * Converts this ResourceLogs to JSON.\n * @function toJSON\n * @memberof opentelemetry.proto.logs.v1.ResourceLogs\n * @instance\n * @returns {Object.} JSON object\n */\n ResourceLogs.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n /**\n * Gets the default type url for ResourceLogs\n * @function getTypeUrl\n * @memberof opentelemetry.proto.logs.v1.ResourceLogs\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n ResourceLogs.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = \"type.googleapis.com\";\n }\n return typeUrlPrefix + \"/opentelemetry.proto.logs.v1.ResourceLogs\";\n };\n return ResourceLogs;\n })();\n v1.ScopeLogs = (function () {\n /**\n * Properties of a ScopeLogs.\n * @memberof opentelemetry.proto.logs.v1\n * @interface IScopeLogs\n * @property {opentelemetry.proto.common.v1.IInstrumentationScope|null} [scope] ScopeLogs scope\n * @property {Array.|null} [logRecords] ScopeLogs logRecords\n * @property {string|null} [schemaUrl] ScopeLogs schemaUrl\n */\n /**\n * Constructs a new ScopeLogs.\n * @memberof opentelemetry.proto.logs.v1\n * @classdesc Represents a ScopeLogs.\n * @implements IScopeLogs\n * @constructor\n * @param {opentelemetry.proto.logs.v1.IScopeLogs=} [properties] Properties to set\n */\n function ScopeLogs(properties) {\n this.logRecords = [];\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n /**\n * ScopeLogs scope.\n * @member {opentelemetry.proto.common.v1.IInstrumentationScope|null|undefined} scope\n * @memberof opentelemetry.proto.logs.v1.ScopeLogs\n * @instance\n */\n ScopeLogs.prototype.scope = null;\n /**\n * ScopeLogs logRecords.\n * @member {Array.} logRecords\n * @memberof opentelemetry.proto.logs.v1.ScopeLogs\n * @instance\n */\n ScopeLogs.prototype.logRecords = $util.emptyArray;\n /**\n * ScopeLogs schemaUrl.\n * @member {string|null|undefined} schemaUrl\n * @memberof opentelemetry.proto.logs.v1.ScopeLogs\n * @instance\n */\n ScopeLogs.prototype.schemaUrl = null;\n /**\n * Creates a new ScopeLogs instance using the specified properties.\n * @function create\n * @memberof opentelemetry.proto.logs.v1.ScopeLogs\n * @static\n * @param {opentelemetry.proto.logs.v1.IScopeLogs=} [properties] Properties to set\n * @returns {opentelemetry.proto.logs.v1.ScopeLogs} ScopeLogs instance\n */\n ScopeLogs.create = function create(properties) {\n return new ScopeLogs(properties);\n };\n /**\n * Encodes the specified ScopeLogs message. Does not implicitly {@link opentelemetry.proto.logs.v1.ScopeLogs.verify|verify} messages.\n * @function encode\n * @memberof opentelemetry.proto.logs.v1.ScopeLogs\n * @static\n * @param {opentelemetry.proto.logs.v1.IScopeLogs} message ScopeLogs message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ScopeLogs.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.scope != null && Object.hasOwnProperty.call(message, \"scope\"))\n $root.opentelemetry.proto.common.v1.InstrumentationScope.encode(message.scope, writer.uint32(/* id 1, wireType 2 =*/ 10).fork()).ldelim();\n if (message.logRecords != null && message.logRecords.length)\n for (var i = 0; i < message.logRecords.length; ++i)\n $root.opentelemetry.proto.logs.v1.LogRecord.encode(message.logRecords[i], writer.uint32(/* id 2, wireType 2 =*/ 18).fork()).ldelim();\n if (message.schemaUrl != null && Object.hasOwnProperty.call(message, \"schemaUrl\"))\n writer.uint32(/* id 3, wireType 2 =*/ 26).string(message.schemaUrl);\n return writer;\n };\n /**\n * Encodes the specified ScopeLogs message, length delimited. Does not implicitly {@link opentelemetry.proto.logs.v1.ScopeLogs.verify|verify} messages.\n * @function encodeDelimited\n * @memberof opentelemetry.proto.logs.v1.ScopeLogs\n * @static\n * @param {opentelemetry.proto.logs.v1.IScopeLogs} message ScopeLogs message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ScopeLogs.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n /**\n * Decodes a ScopeLogs message from the specified reader or buffer.\n * @function decode\n * @memberof opentelemetry.proto.logs.v1.ScopeLogs\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {opentelemetry.proto.logs.v1.ScopeLogs} ScopeLogs\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ScopeLogs.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.opentelemetry.proto.logs.v1.ScopeLogs();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n message.scope = $root.opentelemetry.proto.common.v1.InstrumentationScope.decode(reader, reader.uint32());\n break;\n }\n case 2: {\n if (!(message.logRecords && message.logRecords.length))\n message.logRecords = [];\n message.logRecords.push($root.opentelemetry.proto.logs.v1.LogRecord.decode(reader, reader.uint32()));\n break;\n }\n case 3: {\n message.schemaUrl = reader.string();\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n /**\n * Decodes a ScopeLogs message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof opentelemetry.proto.logs.v1.ScopeLogs\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {opentelemetry.proto.logs.v1.ScopeLogs} ScopeLogs\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ScopeLogs.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n /**\n * Verifies a ScopeLogs message.\n * @function verify\n * @memberof opentelemetry.proto.logs.v1.ScopeLogs\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n ScopeLogs.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.scope != null && message.hasOwnProperty(\"scope\")) {\n var error = $root.opentelemetry.proto.common.v1.InstrumentationScope.verify(message.scope);\n if (error)\n return \"scope.\" + error;\n }\n if (message.logRecords != null && message.hasOwnProperty(\"logRecords\")) {\n if (!Array.isArray(message.logRecords))\n return \"logRecords: array expected\";\n for (var i = 0; i < message.logRecords.length; ++i) {\n var error = $root.opentelemetry.proto.logs.v1.LogRecord.verify(message.logRecords[i]);\n if (error)\n return \"logRecords.\" + error;\n }\n }\n if (message.schemaUrl != null && message.hasOwnProperty(\"schemaUrl\"))\n if (!$util.isString(message.schemaUrl))\n return \"schemaUrl: string expected\";\n return null;\n };\n /**\n * Creates a ScopeLogs message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof opentelemetry.proto.logs.v1.ScopeLogs\n * @static\n * @param {Object.} object Plain object\n * @returns {opentelemetry.proto.logs.v1.ScopeLogs} ScopeLogs\n */\n ScopeLogs.fromObject = function fromObject(object) {\n if (object instanceof $root.opentelemetry.proto.logs.v1.ScopeLogs)\n return object;\n var message = new $root.opentelemetry.proto.logs.v1.ScopeLogs();\n if (object.scope != null) {\n if (typeof object.scope !== \"object\")\n throw TypeError(\".opentelemetry.proto.logs.v1.ScopeLogs.scope: object expected\");\n message.scope = $root.opentelemetry.proto.common.v1.InstrumentationScope.fromObject(object.scope);\n }\n if (object.logRecords) {\n if (!Array.isArray(object.logRecords))\n throw TypeError(\".opentelemetry.proto.logs.v1.ScopeLogs.logRecords: array expected\");\n message.logRecords = [];\n for (var i = 0; i < object.logRecords.length; ++i) {\n if (typeof object.logRecords[i] !== \"object\")\n throw TypeError(\".opentelemetry.proto.logs.v1.ScopeLogs.logRecords: object expected\");\n message.logRecords[i] = $root.opentelemetry.proto.logs.v1.LogRecord.fromObject(object.logRecords[i]);\n }\n }\n if (object.schemaUrl != null)\n message.schemaUrl = String(object.schemaUrl);\n return message;\n };\n /**\n * Creates a plain object from a ScopeLogs message. Also converts values to other types if specified.\n * @function toObject\n * @memberof opentelemetry.proto.logs.v1.ScopeLogs\n * @static\n * @param {opentelemetry.proto.logs.v1.ScopeLogs} message ScopeLogs\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n ScopeLogs.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n var object = {};\n if (options.arrays || options.defaults)\n object.logRecords = [];\n if (options.defaults) {\n object.scope = null;\n object.schemaUrl = \"\";\n }\n if (message.scope != null && message.hasOwnProperty(\"scope\"))\n object.scope = $root.opentelemetry.proto.common.v1.InstrumentationScope.toObject(message.scope, options);\n if (message.logRecords && message.logRecords.length) {\n object.logRecords = [];\n for (var j = 0; j < message.logRecords.length; ++j)\n object.logRecords[j] = $root.opentelemetry.proto.logs.v1.LogRecord.toObject(message.logRecords[j], options);\n }\n if (message.schemaUrl != null && message.hasOwnProperty(\"schemaUrl\"))\n object.schemaUrl = message.schemaUrl;\n return object;\n };\n /**\n * Converts this ScopeLogs to JSON.\n * @function toJSON\n * @memberof opentelemetry.proto.logs.v1.ScopeLogs\n * @instance\n * @returns {Object.} JSON object\n */\n ScopeLogs.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n /**\n * Gets the default type url for ScopeLogs\n * @function getTypeUrl\n * @memberof opentelemetry.proto.logs.v1.ScopeLogs\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n ScopeLogs.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = \"type.googleapis.com\";\n }\n return typeUrlPrefix + \"/opentelemetry.proto.logs.v1.ScopeLogs\";\n };\n return ScopeLogs;\n })();\n /**\n * SeverityNumber enum.\n * @name opentelemetry.proto.logs.v1.SeverityNumber\n * @enum {number}\n * @property {number} SEVERITY_NUMBER_UNSPECIFIED=0 SEVERITY_NUMBER_UNSPECIFIED value\n * @property {number} SEVERITY_NUMBER_TRACE=1 SEVERITY_NUMBER_TRACE value\n * @property {number} SEVERITY_NUMBER_TRACE2=2 SEVERITY_NUMBER_TRACE2 value\n * @property {number} SEVERITY_NUMBER_TRACE3=3 SEVERITY_NUMBER_TRACE3 value\n * @property {number} SEVERITY_NUMBER_TRACE4=4 SEVERITY_NUMBER_TRACE4 value\n * @property {number} SEVERITY_NUMBER_DEBUG=5 SEVERITY_NUMBER_DEBUG value\n * @property {number} SEVERITY_NUMBER_DEBUG2=6 SEVERITY_NUMBER_DEBUG2 value\n * @property {number} SEVERITY_NUMBER_DEBUG3=7 SEVERITY_NUMBER_DEBUG3 value\n * @property {number} SEVERITY_NUMBER_DEBUG4=8 SEVERITY_NUMBER_DEBUG4 value\n * @property {number} SEVERITY_NUMBER_INFO=9 SEVERITY_NUMBER_INFO value\n * @property {number} SEVERITY_NUMBER_INFO2=10 SEVERITY_NUMBER_INFO2 value\n * @property {number} SEVERITY_NUMBER_INFO3=11 SEVERITY_NUMBER_INFO3 value\n * @property {number} SEVERITY_NUMBER_INFO4=12 SEVERITY_NUMBER_INFO4 value\n * @property {number} SEVERITY_NUMBER_WARN=13 SEVERITY_NUMBER_WARN value\n * @property {number} SEVERITY_NUMBER_WARN2=14 SEVERITY_NUMBER_WARN2 value\n * @property {number} SEVERITY_NUMBER_WARN3=15 SEVERITY_NUMBER_WARN3 value\n * @property {number} SEVERITY_NUMBER_WARN4=16 SEVERITY_NUMBER_WARN4 value\n * @property {number} SEVERITY_NUMBER_ERROR=17 SEVERITY_NUMBER_ERROR value\n * @property {number} SEVERITY_NUMBER_ERROR2=18 SEVERITY_NUMBER_ERROR2 value\n * @property {number} SEVERITY_NUMBER_ERROR3=19 SEVERITY_NUMBER_ERROR3 value\n * @property {number} SEVERITY_NUMBER_ERROR4=20 SEVERITY_NUMBER_ERROR4 value\n * @property {number} SEVERITY_NUMBER_FATAL=21 SEVERITY_NUMBER_FATAL value\n * @property {number} SEVERITY_NUMBER_FATAL2=22 SEVERITY_NUMBER_FATAL2 value\n * @property {number} SEVERITY_NUMBER_FATAL3=23 SEVERITY_NUMBER_FATAL3 value\n * @property {number} SEVERITY_NUMBER_FATAL4=24 SEVERITY_NUMBER_FATAL4 value\n */\n v1.SeverityNumber = (function () {\n var valuesById = {}, values = Object.create(valuesById);\n values[valuesById[0] = \"SEVERITY_NUMBER_UNSPECIFIED\"] = 0;\n values[valuesById[1] = \"SEVERITY_NUMBER_TRACE\"] = 1;\n values[valuesById[2] = \"SEVERITY_NUMBER_TRACE2\"] = 2;\n values[valuesById[3] = \"SEVERITY_NUMBER_TRACE3\"] = 3;\n values[valuesById[4] = \"SEVERITY_NUMBER_TRACE4\"] = 4;\n values[valuesById[5] = \"SEVERITY_NUMBER_DEBUG\"] = 5;\n values[valuesById[6] = \"SEVERITY_NUMBER_DEBUG2\"] = 6;\n values[valuesById[7] = \"SEVERITY_NUMBER_DEBUG3\"] = 7;\n values[valuesById[8] = \"SEVERITY_NUMBER_DEBUG4\"] = 8;\n values[valuesById[9] = \"SEVERITY_NUMBER_INFO\"] = 9;\n values[valuesById[10] = \"SEVERITY_NUMBER_INFO2\"] = 10;\n values[valuesById[11] = \"SEVERITY_NUMBER_INFO3\"] = 11;\n values[valuesById[12] = \"SEVERITY_NUMBER_INFO4\"] = 12;\n values[valuesById[13] = \"SEVERITY_NUMBER_WARN\"] = 13;\n values[valuesById[14] = \"SEVERITY_NUMBER_WARN2\"] = 14;\n values[valuesById[15] = \"SEVERITY_NUMBER_WARN3\"] = 15;\n values[valuesById[16] = \"SEVERITY_NUMBER_WARN4\"] = 16;\n values[valuesById[17] = \"SEVERITY_NUMBER_ERROR\"] = 17;\n values[valuesById[18] = \"SEVERITY_NUMBER_ERROR2\"] = 18;\n values[valuesById[19] = \"SEVERITY_NUMBER_ERROR3\"] = 19;\n values[valuesById[20] = \"SEVERITY_NUMBER_ERROR4\"] = 20;\n values[valuesById[21] = \"SEVERITY_NUMBER_FATAL\"] = 21;\n values[valuesById[22] = \"SEVERITY_NUMBER_FATAL2\"] = 22;\n values[valuesById[23] = \"SEVERITY_NUMBER_FATAL3\"] = 23;\n values[valuesById[24] = \"SEVERITY_NUMBER_FATAL4\"] = 24;\n return values;\n })();\n /**\n * LogRecordFlags enum.\n * @name opentelemetry.proto.logs.v1.LogRecordFlags\n * @enum {number}\n * @property {number} LOG_RECORD_FLAGS_DO_NOT_USE=0 LOG_RECORD_FLAGS_DO_NOT_USE value\n * @property {number} LOG_RECORD_FLAGS_TRACE_FLAGS_MASK=255 LOG_RECORD_FLAGS_TRACE_FLAGS_MASK value\n */\n v1.LogRecordFlags = (function () {\n var valuesById = {}, values = Object.create(valuesById);\n values[valuesById[0] = \"LOG_RECORD_FLAGS_DO_NOT_USE\"] = 0;\n values[valuesById[255] = \"LOG_RECORD_FLAGS_TRACE_FLAGS_MASK\"] = 255;\n return values;\n })();\n v1.LogRecord = (function () {\n /**\n * Properties of a LogRecord.\n * @memberof opentelemetry.proto.logs.v1\n * @interface ILogRecord\n * @property {number|Long|null} [timeUnixNano] LogRecord timeUnixNano\n * @property {number|Long|null} [observedTimeUnixNano] LogRecord observedTimeUnixNano\n * @property {opentelemetry.proto.logs.v1.SeverityNumber|null} [severityNumber] LogRecord severityNumber\n * @property {string|null} [severityText] LogRecord severityText\n * @property {opentelemetry.proto.common.v1.IAnyValue|null} [body] LogRecord body\n * @property {Array.|null} [attributes] LogRecord attributes\n * @property {number|null} [droppedAttributesCount] LogRecord droppedAttributesCount\n * @property {number|null} [flags] LogRecord flags\n * @property {Uint8Array|null} [traceId] LogRecord traceId\n * @property {Uint8Array|null} [spanId] LogRecord spanId\n */\n /**\n * Constructs a new LogRecord.\n * @memberof opentelemetry.proto.logs.v1\n * @classdesc Represents a LogRecord.\n * @implements ILogRecord\n * @constructor\n * @param {opentelemetry.proto.logs.v1.ILogRecord=} [properties] Properties to set\n */\n function LogRecord(properties) {\n this.attributes = [];\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n /**\n * LogRecord timeUnixNano.\n * @member {number|Long|null|undefined} timeUnixNano\n * @memberof opentelemetry.proto.logs.v1.LogRecord\n * @instance\n */\n LogRecord.prototype.timeUnixNano = null;\n /**\n * LogRecord observedTimeUnixNano.\n * @member {number|Long|null|undefined} observedTimeUnixNano\n * @memberof opentelemetry.proto.logs.v1.LogRecord\n * @instance\n */\n LogRecord.prototype.observedTimeUnixNano = null;\n /**\n * LogRecord severityNumber.\n * @member {opentelemetry.proto.logs.v1.SeverityNumber|null|undefined} severityNumber\n * @memberof opentelemetry.proto.logs.v1.LogRecord\n * @instance\n */\n LogRecord.prototype.severityNumber = null;\n /**\n * LogRecord severityText.\n * @member {string|null|undefined} severityText\n * @memberof opentelemetry.proto.logs.v1.LogRecord\n * @instance\n */\n LogRecord.prototype.severityText = null;\n /**\n * LogRecord body.\n * @member {opentelemetry.proto.common.v1.IAnyValue|null|undefined} body\n * @memberof opentelemetry.proto.logs.v1.LogRecord\n * @instance\n */\n LogRecord.prototype.body = null;\n /**\n * LogRecord attributes.\n * @member {Array.} attributes\n * @memberof opentelemetry.proto.logs.v1.LogRecord\n * @instance\n */\n LogRecord.prototype.attributes = $util.emptyArray;\n /**\n * LogRecord droppedAttributesCount.\n * @member {number|null|undefined} droppedAttributesCount\n * @memberof opentelemetry.proto.logs.v1.LogRecord\n * @instance\n */\n LogRecord.prototype.droppedAttributesCount = null;\n /**\n * LogRecord flags.\n * @member {number|null|undefined} flags\n * @memberof opentelemetry.proto.logs.v1.LogRecord\n * @instance\n */\n LogRecord.prototype.flags = null;\n /**\n * LogRecord traceId.\n * @member {Uint8Array|null|undefined} traceId\n * @memberof opentelemetry.proto.logs.v1.LogRecord\n * @instance\n */\n LogRecord.prototype.traceId = null;\n /**\n * LogRecord spanId.\n * @member {Uint8Array|null|undefined} spanId\n * @memberof opentelemetry.proto.logs.v1.LogRecord\n * @instance\n */\n LogRecord.prototype.spanId = null;\n /**\n * Creates a new LogRecord instance using the specified properties.\n * @function create\n * @memberof opentelemetry.proto.logs.v1.LogRecord\n * @static\n * @param {opentelemetry.proto.logs.v1.ILogRecord=} [properties] Properties to set\n * @returns {opentelemetry.proto.logs.v1.LogRecord} LogRecord instance\n */\n LogRecord.create = function create(properties) {\n return new LogRecord(properties);\n };\n /**\n * Encodes the specified LogRecord message. Does not implicitly {@link opentelemetry.proto.logs.v1.LogRecord.verify|verify} messages.\n * @function encode\n * @memberof opentelemetry.proto.logs.v1.LogRecord\n * @static\n * @param {opentelemetry.proto.logs.v1.ILogRecord} message LogRecord message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n LogRecord.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.timeUnixNano != null && Object.hasOwnProperty.call(message, \"timeUnixNano\"))\n writer.uint32(/* id 1, wireType 1 =*/ 9).fixed64(message.timeUnixNano);\n if (message.severityNumber != null && Object.hasOwnProperty.call(message, \"severityNumber\"))\n writer.uint32(/* id 2, wireType 0 =*/ 16).int32(message.severityNumber);\n if (message.severityText != null && Object.hasOwnProperty.call(message, \"severityText\"))\n writer.uint32(/* id 3, wireType 2 =*/ 26).string(message.severityText);\n if (message.body != null && Object.hasOwnProperty.call(message, \"body\"))\n $root.opentelemetry.proto.common.v1.AnyValue.encode(message.body, writer.uint32(/* id 5, wireType 2 =*/ 42).fork()).ldelim();\n if (message.attributes != null && message.attributes.length)\n for (var i = 0; i < message.attributes.length; ++i)\n $root.opentelemetry.proto.common.v1.KeyValue.encode(message.attributes[i], writer.uint32(/* id 6, wireType 2 =*/ 50).fork()).ldelim();\n if (message.droppedAttributesCount != null && Object.hasOwnProperty.call(message, \"droppedAttributesCount\"))\n writer.uint32(/* id 7, wireType 0 =*/ 56).uint32(message.droppedAttributesCount);\n if (message.flags != null && Object.hasOwnProperty.call(message, \"flags\"))\n writer.uint32(/* id 8, wireType 5 =*/ 69).fixed32(message.flags);\n if (message.traceId != null && Object.hasOwnProperty.call(message, \"traceId\"))\n writer.uint32(/* id 9, wireType 2 =*/ 74).bytes(message.traceId);\n if (message.spanId != null && Object.hasOwnProperty.call(message, \"spanId\"))\n writer.uint32(/* id 10, wireType 2 =*/ 82).bytes(message.spanId);\n if (message.observedTimeUnixNano != null && Object.hasOwnProperty.call(message, \"observedTimeUnixNano\"))\n writer.uint32(/* id 11, wireType 1 =*/ 89).fixed64(message.observedTimeUnixNano);\n return writer;\n };\n /**\n * Encodes the specified LogRecord message, length delimited. Does not implicitly {@link opentelemetry.proto.logs.v1.LogRecord.verify|verify} messages.\n * @function encodeDelimited\n * @memberof opentelemetry.proto.logs.v1.LogRecord\n * @static\n * @param {opentelemetry.proto.logs.v1.ILogRecord} message LogRecord message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n LogRecord.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n /**\n * Decodes a LogRecord message from the specified reader or buffer.\n * @function decode\n * @memberof opentelemetry.proto.logs.v1.LogRecord\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {opentelemetry.proto.logs.v1.LogRecord} LogRecord\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n LogRecord.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.opentelemetry.proto.logs.v1.LogRecord();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n message.timeUnixNano = reader.fixed64();\n break;\n }\n case 11: {\n message.observedTimeUnixNano = reader.fixed64();\n break;\n }\n case 2: {\n message.severityNumber = reader.int32();\n break;\n }\n case 3: {\n message.severityText = reader.string();\n break;\n }\n case 5: {\n message.body = $root.opentelemetry.proto.common.v1.AnyValue.decode(reader, reader.uint32());\n break;\n }\n case 6: {\n if (!(message.attributes && message.attributes.length))\n message.attributes = [];\n message.attributes.push($root.opentelemetry.proto.common.v1.KeyValue.decode(reader, reader.uint32()));\n break;\n }\n case 7: {\n message.droppedAttributesCount = reader.uint32();\n break;\n }\n case 8: {\n message.flags = reader.fixed32();\n break;\n }\n case 9: {\n message.traceId = reader.bytes();\n break;\n }\n case 10: {\n message.spanId = reader.bytes();\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n /**\n * Decodes a LogRecord message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof opentelemetry.proto.logs.v1.LogRecord\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {opentelemetry.proto.logs.v1.LogRecord} LogRecord\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n LogRecord.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n /**\n * Verifies a LogRecord message.\n * @function verify\n * @memberof opentelemetry.proto.logs.v1.LogRecord\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n LogRecord.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.timeUnixNano != null && message.hasOwnProperty(\"timeUnixNano\"))\n if (!$util.isInteger(message.timeUnixNano) && !(message.timeUnixNano && $util.isInteger(message.timeUnixNano.low) && $util.isInteger(message.timeUnixNano.high)))\n return \"timeUnixNano: integer|Long expected\";\n if (message.observedTimeUnixNano != null && message.hasOwnProperty(\"observedTimeUnixNano\"))\n if (!$util.isInteger(message.observedTimeUnixNano) && !(message.observedTimeUnixNano && $util.isInteger(message.observedTimeUnixNano.low) && $util.isInteger(message.observedTimeUnixNano.high)))\n return \"observedTimeUnixNano: integer|Long expected\";\n if (message.severityNumber != null && message.hasOwnProperty(\"severityNumber\"))\n switch (message.severityNumber) {\n default:\n return \"severityNumber: enum value expected\";\n case 0:\n case 1:\n case 2:\n case 3:\n case 4:\n case 5:\n case 6:\n case 7:\n case 8:\n case 9:\n case 10:\n case 11:\n case 12:\n case 13:\n case 14:\n case 15:\n case 16:\n case 17:\n case 18:\n case 19:\n case 20:\n case 21:\n case 22:\n case 23:\n case 24:\n break;\n }\n if (message.severityText != null && message.hasOwnProperty(\"severityText\"))\n if (!$util.isString(message.severityText))\n return \"severityText: string expected\";\n if (message.body != null && message.hasOwnProperty(\"body\")) {\n var error = $root.opentelemetry.proto.common.v1.AnyValue.verify(message.body);\n if (error)\n return \"body.\" + error;\n }\n if (message.attributes != null && message.hasOwnProperty(\"attributes\")) {\n if (!Array.isArray(message.attributes))\n return \"attributes: array expected\";\n for (var i = 0; i < message.attributes.length; ++i) {\n var error = $root.opentelemetry.proto.common.v1.KeyValue.verify(message.attributes[i]);\n if (error)\n return \"attributes.\" + error;\n }\n }\n if (message.droppedAttributesCount != null && message.hasOwnProperty(\"droppedAttributesCount\"))\n if (!$util.isInteger(message.droppedAttributesCount))\n return \"droppedAttributesCount: integer expected\";\n if (message.flags != null && message.hasOwnProperty(\"flags\"))\n if (!$util.isInteger(message.flags))\n return \"flags: integer expected\";\n if (message.traceId != null && message.hasOwnProperty(\"traceId\"))\n if (!(message.traceId && typeof message.traceId.length === \"number\" || $util.isString(message.traceId)))\n return \"traceId: buffer expected\";\n if (message.spanId != null && message.hasOwnProperty(\"spanId\"))\n if (!(message.spanId && typeof message.spanId.length === \"number\" || $util.isString(message.spanId)))\n return \"spanId: buffer expected\";\n return null;\n };\n /**\n * Creates a LogRecord message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof opentelemetry.proto.logs.v1.LogRecord\n * @static\n * @param {Object.} object Plain object\n * @returns {opentelemetry.proto.logs.v1.LogRecord} LogRecord\n */\n LogRecord.fromObject = function fromObject(object) {\n if (object instanceof $root.opentelemetry.proto.logs.v1.LogRecord)\n return object;\n var message = new $root.opentelemetry.proto.logs.v1.LogRecord();\n if (object.timeUnixNano != null)\n if ($util.Long)\n (message.timeUnixNano = $util.Long.fromValue(object.timeUnixNano)).unsigned = false;\n else if (typeof object.timeUnixNano === \"string\")\n message.timeUnixNano = parseInt(object.timeUnixNano, 10);\n else if (typeof object.timeUnixNano === \"number\")\n message.timeUnixNano = object.timeUnixNano;\n else if (typeof object.timeUnixNano === \"object\")\n message.timeUnixNano = new $util.LongBits(object.timeUnixNano.low >>> 0, object.timeUnixNano.high >>> 0).toNumber();\n if (object.observedTimeUnixNano != null)\n if ($util.Long)\n (message.observedTimeUnixNano = $util.Long.fromValue(object.observedTimeUnixNano)).unsigned = false;\n else if (typeof object.observedTimeUnixNano === \"string\")\n message.observedTimeUnixNano = parseInt(object.observedTimeUnixNano, 10);\n else if (typeof object.observedTimeUnixNano === \"number\")\n message.observedTimeUnixNano = object.observedTimeUnixNano;\n else if (typeof object.observedTimeUnixNano === \"object\")\n message.observedTimeUnixNano = new $util.LongBits(object.observedTimeUnixNano.low >>> 0, object.observedTimeUnixNano.high >>> 0).toNumber();\n switch (object.severityNumber) {\n default:\n if (typeof object.severityNumber === \"number\") {\n message.severityNumber = object.severityNumber;\n break;\n }\n break;\n case \"SEVERITY_NUMBER_UNSPECIFIED\":\n case 0:\n message.severityNumber = 0;\n break;\n case \"SEVERITY_NUMBER_TRACE\":\n case 1:\n message.severityNumber = 1;\n break;\n case \"SEVERITY_NUMBER_TRACE2\":\n case 2:\n message.severityNumber = 2;\n break;\n case \"SEVERITY_NUMBER_TRACE3\":\n case 3:\n message.severityNumber = 3;\n break;\n case \"SEVERITY_NUMBER_TRACE4\":\n case 4:\n message.severityNumber = 4;\n break;\n case \"SEVERITY_NUMBER_DEBUG\":\n case 5:\n message.severityNumber = 5;\n break;\n case \"SEVERITY_NUMBER_DEBUG2\":\n case 6:\n message.severityNumber = 6;\n break;\n case \"SEVERITY_NUMBER_DEBUG3\":\n case 7:\n message.severityNumber = 7;\n break;\n case \"SEVERITY_NUMBER_DEBUG4\":\n case 8:\n message.severityNumber = 8;\n break;\n case \"SEVERITY_NUMBER_INFO\":\n case 9:\n message.severityNumber = 9;\n break;\n case \"SEVERITY_NUMBER_INFO2\":\n case 10:\n message.severityNumber = 10;\n break;\n case \"SEVERITY_NUMBER_INFO3\":\n case 11:\n message.severityNumber = 11;\n break;\n case \"SEVERITY_NUMBER_INFO4\":\n case 12:\n message.severityNumber = 12;\n break;\n case \"SEVERITY_NUMBER_WARN\":\n case 13:\n message.severityNumber = 13;\n break;\n case \"SEVERITY_NUMBER_WARN2\":\n case 14:\n message.severityNumber = 14;\n break;\n case \"SEVERITY_NUMBER_WARN3\":\n case 15:\n message.severityNumber = 15;\n break;\n case \"SEVERITY_NUMBER_WARN4\":\n case 16:\n message.severityNumber = 16;\n break;\n case \"SEVERITY_NUMBER_ERROR\":\n case 17:\n message.severityNumber = 17;\n break;\n case \"SEVERITY_NUMBER_ERROR2\":\n case 18:\n message.severityNumber = 18;\n break;\n case \"SEVERITY_NUMBER_ERROR3\":\n case 19:\n message.severityNumber = 19;\n break;\n case \"SEVERITY_NUMBER_ERROR4\":\n case 20:\n message.severityNumber = 20;\n break;\n case \"SEVERITY_NUMBER_FATAL\":\n case 21:\n message.severityNumber = 21;\n break;\n case \"SEVERITY_NUMBER_FATAL2\":\n case 22:\n message.severityNumber = 22;\n break;\n case \"SEVERITY_NUMBER_FATAL3\":\n case 23:\n message.severityNumber = 23;\n break;\n case \"SEVERITY_NUMBER_FATAL4\":\n case 24:\n message.severityNumber = 24;\n break;\n }\n if (object.severityText != null)\n message.severityText = String(object.severityText);\n if (object.body != null) {\n if (typeof object.body !== \"object\")\n throw TypeError(\".opentelemetry.proto.logs.v1.LogRecord.body: object expected\");\n message.body = $root.opentelemetry.proto.common.v1.AnyValue.fromObject(object.body);\n }\n if (object.attributes) {\n if (!Array.isArray(object.attributes))\n throw TypeError(\".opentelemetry.proto.logs.v1.LogRecord.attributes: array expected\");\n message.attributes = [];\n for (var i = 0; i < object.attributes.length; ++i) {\n if (typeof object.attributes[i] !== \"object\")\n throw TypeError(\".opentelemetry.proto.logs.v1.LogRecord.attributes: object expected\");\n message.attributes[i] = $root.opentelemetry.proto.common.v1.KeyValue.fromObject(object.attributes[i]);\n }\n }\n if (object.droppedAttributesCount != null)\n message.droppedAttributesCount = object.droppedAttributesCount >>> 0;\n if (object.flags != null)\n message.flags = object.flags >>> 0;\n if (object.traceId != null)\n if (typeof object.traceId === \"string\")\n $util.base64.decode(object.traceId, message.traceId = $util.newBuffer($util.base64.length(object.traceId)), 0);\n else if (object.traceId.length >= 0)\n message.traceId = object.traceId;\n if (object.spanId != null)\n if (typeof object.spanId === \"string\")\n $util.base64.decode(object.spanId, message.spanId = $util.newBuffer($util.base64.length(object.spanId)), 0);\n else if (object.spanId.length >= 0)\n message.spanId = object.spanId;\n return message;\n };\n /**\n * Creates a plain object from a LogRecord message. Also converts values to other types if specified.\n * @function toObject\n * @memberof opentelemetry.proto.logs.v1.LogRecord\n * @static\n * @param {opentelemetry.proto.logs.v1.LogRecord} message LogRecord\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n LogRecord.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n var object = {};\n if (options.arrays || options.defaults)\n object.attributes = [];\n if (options.defaults) {\n if ($util.Long) {\n var long = new $util.Long(0, 0, false);\n object.timeUnixNano = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n }\n else\n object.timeUnixNano = options.longs === String ? \"0\" : 0;\n object.severityNumber = options.enums === String ? \"SEVERITY_NUMBER_UNSPECIFIED\" : 0;\n object.severityText = \"\";\n object.body = null;\n object.droppedAttributesCount = 0;\n object.flags = 0;\n if (options.bytes === String)\n object.traceId = \"\";\n else {\n object.traceId = [];\n if (options.bytes !== Array)\n object.traceId = $util.newBuffer(object.traceId);\n }\n if (options.bytes === String)\n object.spanId = \"\";\n else {\n object.spanId = [];\n if (options.bytes !== Array)\n object.spanId = $util.newBuffer(object.spanId);\n }\n if ($util.Long) {\n var long = new $util.Long(0, 0, false);\n object.observedTimeUnixNano = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n }\n else\n object.observedTimeUnixNano = options.longs === String ? \"0\" : 0;\n }\n if (message.timeUnixNano != null && message.hasOwnProperty(\"timeUnixNano\"))\n if (typeof message.timeUnixNano === \"number\")\n object.timeUnixNano = options.longs === String ? String(message.timeUnixNano) : message.timeUnixNano;\n else\n object.timeUnixNano = options.longs === String ? $util.Long.prototype.toString.call(message.timeUnixNano) : options.longs === Number ? new $util.LongBits(message.timeUnixNano.low >>> 0, message.timeUnixNano.high >>> 0).toNumber() : message.timeUnixNano;\n if (message.severityNumber != null && message.hasOwnProperty(\"severityNumber\"))\n object.severityNumber = options.enums === String ? $root.opentelemetry.proto.logs.v1.SeverityNumber[message.severityNumber] === undefined ? message.severityNumber : $root.opentelemetry.proto.logs.v1.SeverityNumber[message.severityNumber] : message.severityNumber;\n if (message.severityText != null && message.hasOwnProperty(\"severityText\"))\n object.severityText = message.severityText;\n if (message.body != null && message.hasOwnProperty(\"body\"))\n object.body = $root.opentelemetry.proto.common.v1.AnyValue.toObject(message.body, options);\n if (message.attributes && message.attributes.length) {\n object.attributes = [];\n for (var j = 0; j < message.attributes.length; ++j)\n object.attributes[j] = $root.opentelemetry.proto.common.v1.KeyValue.toObject(message.attributes[j], options);\n }\n if (message.droppedAttributesCount != null && message.hasOwnProperty(\"droppedAttributesCount\"))\n object.droppedAttributesCount = message.droppedAttributesCount;\n if (message.flags != null && message.hasOwnProperty(\"flags\"))\n object.flags = message.flags;\n if (message.traceId != null && message.hasOwnProperty(\"traceId\"))\n object.traceId = options.bytes === String ? $util.base64.encode(message.traceId, 0, message.traceId.length) : options.bytes === Array ? Array.prototype.slice.call(message.traceId) : message.traceId;\n if (message.spanId != null && message.hasOwnProperty(\"spanId\"))\n object.spanId = options.bytes === String ? $util.base64.encode(message.spanId, 0, message.spanId.length) : options.bytes === Array ? Array.prototype.slice.call(message.spanId) : message.spanId;\n if (message.observedTimeUnixNano != null && message.hasOwnProperty(\"observedTimeUnixNano\"))\n if (typeof message.observedTimeUnixNano === \"number\")\n object.observedTimeUnixNano = options.longs === String ? String(message.observedTimeUnixNano) : message.observedTimeUnixNano;\n else\n object.observedTimeUnixNano = options.longs === String ? $util.Long.prototype.toString.call(message.observedTimeUnixNano) : options.longs === Number ? new $util.LongBits(message.observedTimeUnixNano.low >>> 0, message.observedTimeUnixNano.high >>> 0).toNumber() : message.observedTimeUnixNano;\n return object;\n };\n /**\n * Converts this LogRecord to JSON.\n * @function toJSON\n * @memberof opentelemetry.proto.logs.v1.LogRecord\n * @instance\n * @returns {Object.} JSON object\n */\n LogRecord.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n /**\n * Gets the default type url for LogRecord\n * @function getTypeUrl\n * @memberof opentelemetry.proto.logs.v1.LogRecord\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n LogRecord.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = \"type.googleapis.com\";\n }\n return typeUrlPrefix + \"/opentelemetry.proto.logs.v1.LogRecord\";\n };\n return LogRecord;\n })();\n return v1;\n })();\n return logs;\n })();\n return proto;\n })();\n return opentelemetry;\n})();\nmodule.exports = $root;\n//# sourceMappingURL=root.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.GrpcExporterTransport = exports.createEmptyMetadata = exports.createSslCredentials = exports.createInsecureCredentials = void 0;\n// values taken from '@grpc/grpc-js` so that we don't need to require/import it.\nconst GRPC_COMPRESSION_NONE = 0;\nconst GRPC_COMPRESSION_GZIP = 2;\nfunction toGrpcCompression(compression) {\n return compression === 'gzip' ? GRPC_COMPRESSION_GZIP : GRPC_COMPRESSION_NONE;\n}\nfunction createInsecureCredentials() {\n // Lazy-load so that we don't need to require/import '@grpc/grpc-js' before it can be wrapped by instrumentation.\n const { credentials,\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n } = require('@grpc/grpc-js');\n return credentials.createInsecure();\n}\nexports.createInsecureCredentials = createInsecureCredentials;\nfunction createSslCredentials(rootCert, privateKey, certChain) {\n // Lazy-load so that we don't need to require/import '@grpc/grpc-js' before it can be wrapped by instrumentation.\n const { credentials,\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n } = require('@grpc/grpc-js');\n return credentials.createSsl(rootCert, privateKey, certChain);\n}\nexports.createSslCredentials = createSslCredentials;\nfunction createEmptyMetadata() {\n // Lazy-load so that we don't need to require/import '@grpc/grpc-js' before it can be wrapped by instrumentation.\n const { Metadata,\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n } = require('@grpc/grpc-js');\n return new Metadata();\n}\nexports.createEmptyMetadata = createEmptyMetadata;\nclass GrpcExporterTransport {\n constructor(_parameters) {\n this._parameters = _parameters;\n }\n shutdown() {\n var _a;\n (_a = this._client) === null || _a === void 0 ? void 0 : _a.close();\n }\n send(data) {\n // We need to make a for gRPC\n const buffer = Buffer.from(data);\n if (this._client == null) {\n // Lazy require to ensure that grpc is not loaded before instrumentations can wrap it\n const { createServiceClientConstructor,\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n } = require('./create-service-client-constructor');\n try {\n this._metadata = this._parameters.metadata();\n }\n catch (error) {\n return Promise.resolve({\n status: 'failure',\n error: error,\n });\n }\n const clientConstructor = createServiceClientConstructor(this._parameters.grpcPath, this._parameters.grpcName);\n try {\n this._client = new clientConstructor(this._parameters.address, this._parameters.credentials(), {\n 'grpc.default_compression_algorithm': toGrpcCompression(this._parameters.compression),\n });\n }\n catch (error) {\n return Promise.resolve({\n status: 'failure',\n error: error,\n });\n }\n }\n return new Promise(resolve => {\n // this will always be defined\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const deadline = Date.now() + this._parameters.timeoutMillis;\n // this should never happen\n if (this._metadata == null) {\n return resolve({\n error: new Error('metadata was null'),\n status: 'failure',\n });\n }\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore The gRPC client constructor is created on runtime, so we don't have any types for the resulting client.\n this._client.export(buffer, this._metadata, { deadline: deadline }, (err, response) => {\n if (err) {\n resolve({\n status: 'failure',\n error: err,\n });\n }\n else {\n resolve({\n data: response,\n status: 'success',\n });\n }\n });\n });\n }\n}\nexports.GrpcExporterTransport = GrpcExporterTransport;\n//# sourceMappingURL=grpc-exporter-transport.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.LogsSerializer = exports.TraceSerializer = exports.MetricsSerializer = exports.validateAndNormalizeUrl = exports.DEFAULT_COLLECTOR_URL = exports.OTLPGRPCExporterNodeBase = void 0;\nvar OTLPGRPCExporterNodeBase_1 = require(\"./OTLPGRPCExporterNodeBase\");\nObject.defineProperty(exports, \"OTLPGRPCExporterNodeBase\", { enumerable: true, get: function () { return OTLPGRPCExporterNodeBase_1.OTLPGRPCExporterNodeBase; } });\nvar util_1 = require(\"./util\");\nObject.defineProperty(exports, \"DEFAULT_COLLECTOR_URL\", { enumerable: true, get: function () { return util_1.DEFAULT_COLLECTOR_URL; } });\nObject.defineProperty(exports, \"validateAndNormalizeUrl\", { enumerable: true, get: function () { return util_1.validateAndNormalizeUrl; } });\nvar serializers_1 = require(\"./serializers\");\nObject.defineProperty(exports, \"MetricsSerializer\", { enumerable: true, get: function () { return serializers_1.MetricsSerializer; } });\nObject.defineProperty(exports, \"TraceSerializer\", { enumerable: true, get: function () { return serializers_1.TraceSerializer; } });\nObject.defineProperty(exports, \"LogsSerializer\", { enumerable: true, get: function () { return serializers_1.LogsSerializer; } });\n//# sourceMappingURL=index.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MetricsSerializer = exports.TraceSerializer = exports.LogsSerializer = void 0;\nconst root = require(\"./generated/root\");\nconst logsResponseType = root.opentelemetry.proto.collector.logs.v1\n .ExportLogsServiceResponse;\nconst logsRequestType = root.opentelemetry.proto.collector.logs.v1\n .ExportLogsServiceRequest;\nconst metricsResponseType = root.opentelemetry.proto.collector.metrics.v1\n .ExportMetricsServiceResponse;\nconst metricsRequestType = root.opentelemetry.proto.collector.metrics.v1\n .ExportMetricsServiceRequest;\nconst traceResponseType = root.opentelemetry.proto.collector.trace.v1\n .ExportTraceServiceResponse;\nconst traceRequestType = root.opentelemetry.proto.collector.trace.v1\n .ExportTraceServiceRequest;\nexports.LogsSerializer = {\n serializeRequest: (arg) => {\n return Buffer.from(logsRequestType.encode(arg).finish());\n },\n deserializeResponse: (arg) => {\n return logsResponseType.decode(arg);\n },\n};\nexports.TraceSerializer = {\n serializeRequest: (arg) => {\n return Buffer.from(traceRequestType.encode(arg).finish());\n },\n deserializeResponse: (arg) => {\n return traceResponseType.decode(arg);\n },\n};\nexports.MetricsSerializer = {\n serializeRequest: (arg) => {\n return Buffer.from(metricsRequestType.encode(arg).finish());\n },\n deserializeResponse: (arg) => {\n return metricsResponseType.decode(arg);\n },\n};\n//# sourceMappingURL=serializers.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.configureCompression = exports.getCredentialsFromEnvironment = exports.configureCredentials = exports.validateAndNormalizeUrl = exports.DEFAULT_COLLECTOR_URL = void 0;\nconst api_1 = require(\"@opentelemetry/api\");\nconst core_1 = require(\"@opentelemetry/core\");\nconst path = require(\"path\");\nconst url_1 = require(\"url\");\nconst fs = require(\"fs\");\nconst otlp_exporter_base_1 = require(\"@opentelemetry/otlp-exporter-base\");\nconst grpc_exporter_transport_1 = require(\"./grpc-exporter-transport\");\nexports.DEFAULT_COLLECTOR_URL = 'http://localhost:4317';\nfunction validateAndNormalizeUrl(url) {\n var _a;\n const hasProtocol = url.match(/^([\\w]{1,8}):\\/\\//);\n if (!hasProtocol) {\n url = `https://${url}`;\n }\n const target = new url_1.URL(url);\n if (target.protocol === 'unix:') {\n return url;\n }\n if (target.pathname && target.pathname !== '/') {\n api_1.diag.warn('URL path should not be set when using grpc, the path part of the URL will be ignored.');\n }\n if (target.protocol !== '' && !((_a = target.protocol) === null || _a === void 0 ? void 0 : _a.match(/^(http)s?:$/))) {\n api_1.diag.warn('URL protocol should be http(s)://. Using http://.');\n }\n return target.host;\n}\nexports.validateAndNormalizeUrl = validateAndNormalizeUrl;\nfunction configureCredentials(credentials, endpoint) {\n let insecure;\n if (credentials) {\n return credentials;\n }\n else if (endpoint.startsWith('https://')) {\n insecure = false;\n }\n else if (endpoint.startsWith('http://') ||\n endpoint === exports.DEFAULT_COLLECTOR_URL) {\n insecure = true;\n }\n else {\n insecure = getSecurityFromEnv();\n }\n if (insecure) {\n return (0, grpc_exporter_transport_1.createInsecureCredentials)();\n }\n else {\n return getCredentialsFromEnvironment();\n }\n}\nexports.configureCredentials = configureCredentials;\nfunction getSecurityFromEnv() {\n const definedInsecure = (0, core_1.getEnv)().OTEL_EXPORTER_OTLP_TRACES_INSECURE ||\n (0, core_1.getEnv)().OTEL_EXPORTER_OTLP_INSECURE;\n if (definedInsecure) {\n return definedInsecure.toLowerCase() === 'true';\n }\n else {\n return false;\n }\n}\n/**\n * Exported for testing\n */\nfunction getCredentialsFromEnvironment() {\n const rootCert = retrieveRootCert();\n const privateKey = retrievePrivateKey();\n const certChain = retrieveCertChain();\n return (0, grpc_exporter_transport_1.createSslCredentials)(rootCert, privateKey, certChain);\n}\nexports.getCredentialsFromEnvironment = getCredentialsFromEnvironment;\nfunction retrieveRootCert() {\n const rootCertificate = (0, core_1.getEnv)().OTEL_EXPORTER_OTLP_TRACES_CERTIFICATE ||\n (0, core_1.getEnv)().OTEL_EXPORTER_OTLP_CERTIFICATE;\n if (rootCertificate) {\n try {\n return fs.readFileSync(path.resolve(process.cwd(), rootCertificate));\n }\n catch (_a) {\n api_1.diag.warn('Failed to read root certificate file');\n return undefined;\n }\n }\n else {\n return undefined;\n }\n}\nfunction retrievePrivateKey() {\n const clientKey = (0, core_1.getEnv)().OTEL_EXPORTER_OTLP_TRACES_CLIENT_KEY ||\n (0, core_1.getEnv)().OTEL_EXPORTER_OTLP_CLIENT_KEY;\n if (clientKey) {\n try {\n return fs.readFileSync(path.resolve(process.cwd(), clientKey));\n }\n catch (_a) {\n api_1.diag.warn('Failed to read client certificate private key file');\n return undefined;\n }\n }\n else {\n return undefined;\n }\n}\nfunction retrieveCertChain() {\n const clientChain = (0, core_1.getEnv)().OTEL_EXPORTER_OTLP_TRACES_CLIENT_CERTIFICATE ||\n (0, core_1.getEnv)().OTEL_EXPORTER_OTLP_CLIENT_CERTIFICATE;\n if (clientChain) {\n try {\n return fs.readFileSync(path.resolve(process.cwd(), clientChain));\n }\n catch (_a) {\n api_1.diag.warn('Failed to read client certificate chain file');\n return undefined;\n }\n }\n else {\n return undefined;\n }\n}\nfunction configureCompression(compression) {\n if (compression != null) {\n return compression;\n }\n const envCompression = (0, core_1.getEnv)().OTEL_EXPORTER_OTLP_TRACES_COMPRESSION ||\n (0, core_1.getEnv)().OTEL_EXPORTER_OTLP_COMPRESSION;\n if (envCompression === 'gzip') {\n return otlp_exporter_base_1.CompressionAlgorithm.GZIP;\n }\n else if (envCompression === 'none') {\n return otlp_exporter_base_1.CompressionAlgorithm.NONE;\n }\n api_1.diag.warn('Unknown compression \"' + envCompression + '\", falling back to \"none\"');\n return otlp_exporter_base_1.CompressionAlgorithm.NONE;\n}\nexports.configureCompression = configureCompression;\n//# sourceMappingURL=util.js.map","/*eslint-disable block-scoped-var, id-length, no-control-regex, no-magic-numbers, no-prototype-builtins, no-redeclare, no-shadow, no-var, sort-vars*/\n\"use strict\";\nvar $protobuf = require(\"protobufjs/minimal\");\n// Common aliases\nvar $Reader = $protobuf.Reader, $Writer = $protobuf.Writer, $util = $protobuf.util;\n// Exported root namespace\nvar $root = $protobuf.roots[\"default\"] || ($protobuf.roots[\"default\"] = {});\n$root.opentelemetry = (function () {\n /**\n * Namespace opentelemetry.\n * @exports opentelemetry\n * @namespace\n */\n var opentelemetry = {};\n opentelemetry.proto = (function () {\n /**\n * Namespace proto.\n * @memberof opentelemetry\n * @namespace\n */\n var proto = {};\n proto.common = (function () {\n /**\n * Namespace common.\n * @memberof opentelemetry.proto\n * @namespace\n */\n var common = {};\n common.v1 = (function () {\n /**\n * Namespace v1.\n * @memberof opentelemetry.proto.common\n * @namespace\n */\n var v1 = {};\n v1.AnyValue = (function () {\n /**\n * Properties of an AnyValue.\n * @memberof opentelemetry.proto.common.v1\n * @interface IAnyValue\n * @property {string|null} [stringValue] AnyValue stringValue\n * @property {boolean|null} [boolValue] AnyValue boolValue\n * @property {number|Long|null} [intValue] AnyValue intValue\n * @property {number|null} [doubleValue] AnyValue doubleValue\n * @property {opentelemetry.proto.common.v1.IArrayValue|null} [arrayValue] AnyValue arrayValue\n * @property {opentelemetry.proto.common.v1.IKeyValueList|null} [kvlistValue] AnyValue kvlistValue\n * @property {Uint8Array|null} [bytesValue] AnyValue bytesValue\n */\n /**\n * Constructs a new AnyValue.\n * @memberof opentelemetry.proto.common.v1\n * @classdesc Represents an AnyValue.\n * @implements IAnyValue\n * @constructor\n * @param {opentelemetry.proto.common.v1.IAnyValue=} [properties] Properties to set\n */\n function AnyValue(properties) {\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n /**\n * AnyValue stringValue.\n * @member {string|null|undefined} stringValue\n * @memberof opentelemetry.proto.common.v1.AnyValue\n * @instance\n */\n AnyValue.prototype.stringValue = null;\n /**\n * AnyValue boolValue.\n * @member {boolean|null|undefined} boolValue\n * @memberof opentelemetry.proto.common.v1.AnyValue\n * @instance\n */\n AnyValue.prototype.boolValue = null;\n /**\n * AnyValue intValue.\n * @member {number|Long|null|undefined} intValue\n * @memberof opentelemetry.proto.common.v1.AnyValue\n * @instance\n */\n AnyValue.prototype.intValue = null;\n /**\n * AnyValue doubleValue.\n * @member {number|null|undefined} doubleValue\n * @memberof opentelemetry.proto.common.v1.AnyValue\n * @instance\n */\n AnyValue.prototype.doubleValue = null;\n /**\n * AnyValue arrayValue.\n * @member {opentelemetry.proto.common.v1.IArrayValue|null|undefined} arrayValue\n * @memberof opentelemetry.proto.common.v1.AnyValue\n * @instance\n */\n AnyValue.prototype.arrayValue = null;\n /**\n * AnyValue kvlistValue.\n * @member {opentelemetry.proto.common.v1.IKeyValueList|null|undefined} kvlistValue\n * @memberof opentelemetry.proto.common.v1.AnyValue\n * @instance\n */\n AnyValue.prototype.kvlistValue = null;\n /**\n * AnyValue bytesValue.\n * @member {Uint8Array|null|undefined} bytesValue\n * @memberof opentelemetry.proto.common.v1.AnyValue\n * @instance\n */\n AnyValue.prototype.bytesValue = null;\n // OneOf field names bound to virtual getters and setters\n var $oneOfFields;\n /**\n * AnyValue value.\n * @member {\"stringValue\"|\"boolValue\"|\"intValue\"|\"doubleValue\"|\"arrayValue\"|\"kvlistValue\"|\"bytesValue\"|undefined} value\n * @memberof opentelemetry.proto.common.v1.AnyValue\n * @instance\n */\n Object.defineProperty(AnyValue.prototype, \"value\", {\n get: $util.oneOfGetter($oneOfFields = [\"stringValue\", \"boolValue\", \"intValue\", \"doubleValue\", \"arrayValue\", \"kvlistValue\", \"bytesValue\"]),\n set: $util.oneOfSetter($oneOfFields)\n });\n /**\n * Creates a new AnyValue instance using the specified properties.\n * @function create\n * @memberof opentelemetry.proto.common.v1.AnyValue\n * @static\n * @param {opentelemetry.proto.common.v1.IAnyValue=} [properties] Properties to set\n * @returns {opentelemetry.proto.common.v1.AnyValue} AnyValue instance\n */\n AnyValue.create = function create(properties) {\n return new AnyValue(properties);\n };\n /**\n * Encodes the specified AnyValue message. Does not implicitly {@link opentelemetry.proto.common.v1.AnyValue.verify|verify} messages.\n * @function encode\n * @memberof opentelemetry.proto.common.v1.AnyValue\n * @static\n * @param {opentelemetry.proto.common.v1.IAnyValue} message AnyValue message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n AnyValue.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.stringValue != null && Object.hasOwnProperty.call(message, \"stringValue\"))\n writer.uint32(/* id 1, wireType 2 =*/ 10).string(message.stringValue);\n if (message.boolValue != null && Object.hasOwnProperty.call(message, \"boolValue\"))\n writer.uint32(/* id 2, wireType 0 =*/ 16).bool(message.boolValue);\n if (message.intValue != null && Object.hasOwnProperty.call(message, \"intValue\"))\n writer.uint32(/* id 3, wireType 0 =*/ 24).int64(message.intValue);\n if (message.doubleValue != null && Object.hasOwnProperty.call(message, \"doubleValue\"))\n writer.uint32(/* id 4, wireType 1 =*/ 33).double(message.doubleValue);\n if (message.arrayValue != null && Object.hasOwnProperty.call(message, \"arrayValue\"))\n $root.opentelemetry.proto.common.v1.ArrayValue.encode(message.arrayValue, writer.uint32(/* id 5, wireType 2 =*/ 42).fork()).ldelim();\n if (message.kvlistValue != null && Object.hasOwnProperty.call(message, \"kvlistValue\"))\n $root.opentelemetry.proto.common.v1.KeyValueList.encode(message.kvlistValue, writer.uint32(/* id 6, wireType 2 =*/ 50).fork()).ldelim();\n if (message.bytesValue != null && Object.hasOwnProperty.call(message, \"bytesValue\"))\n writer.uint32(/* id 7, wireType 2 =*/ 58).bytes(message.bytesValue);\n return writer;\n };\n /**\n * Encodes the specified AnyValue message, length delimited. Does not implicitly {@link opentelemetry.proto.common.v1.AnyValue.verify|verify} messages.\n * @function encodeDelimited\n * @memberof opentelemetry.proto.common.v1.AnyValue\n * @static\n * @param {opentelemetry.proto.common.v1.IAnyValue} message AnyValue message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n AnyValue.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n /**\n * Decodes an AnyValue message from the specified reader or buffer.\n * @function decode\n * @memberof opentelemetry.proto.common.v1.AnyValue\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {opentelemetry.proto.common.v1.AnyValue} AnyValue\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n AnyValue.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.opentelemetry.proto.common.v1.AnyValue();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n message.stringValue = reader.string();\n break;\n }\n case 2: {\n message.boolValue = reader.bool();\n break;\n }\n case 3: {\n message.intValue = reader.int64();\n break;\n }\n case 4: {\n message.doubleValue = reader.double();\n break;\n }\n case 5: {\n message.arrayValue = $root.opentelemetry.proto.common.v1.ArrayValue.decode(reader, reader.uint32());\n break;\n }\n case 6: {\n message.kvlistValue = $root.opentelemetry.proto.common.v1.KeyValueList.decode(reader, reader.uint32());\n break;\n }\n case 7: {\n message.bytesValue = reader.bytes();\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n /**\n * Decodes an AnyValue message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof opentelemetry.proto.common.v1.AnyValue\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {opentelemetry.proto.common.v1.AnyValue} AnyValue\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n AnyValue.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n /**\n * Verifies an AnyValue message.\n * @function verify\n * @memberof opentelemetry.proto.common.v1.AnyValue\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n AnyValue.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n var properties = {};\n if (message.stringValue != null && message.hasOwnProperty(\"stringValue\")) {\n properties.value = 1;\n if (!$util.isString(message.stringValue))\n return \"stringValue: string expected\";\n }\n if (message.boolValue != null && message.hasOwnProperty(\"boolValue\")) {\n if (properties.value === 1)\n return \"value: multiple values\";\n properties.value = 1;\n if (typeof message.boolValue !== \"boolean\")\n return \"boolValue: boolean expected\";\n }\n if (message.intValue != null && message.hasOwnProperty(\"intValue\")) {\n if (properties.value === 1)\n return \"value: multiple values\";\n properties.value = 1;\n if (!$util.isInteger(message.intValue) && !(message.intValue && $util.isInteger(message.intValue.low) && $util.isInteger(message.intValue.high)))\n return \"intValue: integer|Long expected\";\n }\n if (message.doubleValue != null && message.hasOwnProperty(\"doubleValue\")) {\n if (properties.value === 1)\n return \"value: multiple values\";\n properties.value = 1;\n if (typeof message.doubleValue !== \"number\")\n return \"doubleValue: number expected\";\n }\n if (message.arrayValue != null && message.hasOwnProperty(\"arrayValue\")) {\n if (properties.value === 1)\n return \"value: multiple values\";\n properties.value = 1;\n {\n var error = $root.opentelemetry.proto.common.v1.ArrayValue.verify(message.arrayValue);\n if (error)\n return \"arrayValue.\" + error;\n }\n }\n if (message.kvlistValue != null && message.hasOwnProperty(\"kvlistValue\")) {\n if (properties.value === 1)\n return \"value: multiple values\";\n properties.value = 1;\n {\n var error = $root.opentelemetry.proto.common.v1.KeyValueList.verify(message.kvlistValue);\n if (error)\n return \"kvlistValue.\" + error;\n }\n }\n if (message.bytesValue != null && message.hasOwnProperty(\"bytesValue\")) {\n if (properties.value === 1)\n return \"value: multiple values\";\n properties.value = 1;\n if (!(message.bytesValue && typeof message.bytesValue.length === \"number\" || $util.isString(message.bytesValue)))\n return \"bytesValue: buffer expected\";\n }\n return null;\n };\n /**\n * Creates an AnyValue message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof opentelemetry.proto.common.v1.AnyValue\n * @static\n * @param {Object.} object Plain object\n * @returns {opentelemetry.proto.common.v1.AnyValue} AnyValue\n */\n AnyValue.fromObject = function fromObject(object) {\n if (object instanceof $root.opentelemetry.proto.common.v1.AnyValue)\n return object;\n var message = new $root.opentelemetry.proto.common.v1.AnyValue();\n if (object.stringValue != null)\n message.stringValue = String(object.stringValue);\n if (object.boolValue != null)\n message.boolValue = Boolean(object.boolValue);\n if (object.intValue != null)\n if ($util.Long)\n (message.intValue = $util.Long.fromValue(object.intValue)).unsigned = false;\n else if (typeof object.intValue === \"string\")\n message.intValue = parseInt(object.intValue, 10);\n else if (typeof object.intValue === \"number\")\n message.intValue = object.intValue;\n else if (typeof object.intValue === \"object\")\n message.intValue = new $util.LongBits(object.intValue.low >>> 0, object.intValue.high >>> 0).toNumber();\n if (object.doubleValue != null)\n message.doubleValue = Number(object.doubleValue);\n if (object.arrayValue != null) {\n if (typeof object.arrayValue !== \"object\")\n throw TypeError(\".opentelemetry.proto.common.v1.AnyValue.arrayValue: object expected\");\n message.arrayValue = $root.opentelemetry.proto.common.v1.ArrayValue.fromObject(object.arrayValue);\n }\n if (object.kvlistValue != null) {\n if (typeof object.kvlistValue !== \"object\")\n throw TypeError(\".opentelemetry.proto.common.v1.AnyValue.kvlistValue: object expected\");\n message.kvlistValue = $root.opentelemetry.proto.common.v1.KeyValueList.fromObject(object.kvlistValue);\n }\n if (object.bytesValue != null)\n if (typeof object.bytesValue === \"string\")\n $util.base64.decode(object.bytesValue, message.bytesValue = $util.newBuffer($util.base64.length(object.bytesValue)), 0);\n else if (object.bytesValue.length >= 0)\n message.bytesValue = object.bytesValue;\n return message;\n };\n /**\n * Creates a plain object from an AnyValue message. Also converts values to other types if specified.\n * @function toObject\n * @memberof opentelemetry.proto.common.v1.AnyValue\n * @static\n * @param {opentelemetry.proto.common.v1.AnyValue} message AnyValue\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n AnyValue.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n var object = {};\n if (message.stringValue != null && message.hasOwnProperty(\"stringValue\")) {\n object.stringValue = message.stringValue;\n if (options.oneofs)\n object.value = \"stringValue\";\n }\n if (message.boolValue != null && message.hasOwnProperty(\"boolValue\")) {\n object.boolValue = message.boolValue;\n if (options.oneofs)\n object.value = \"boolValue\";\n }\n if (message.intValue != null && message.hasOwnProperty(\"intValue\")) {\n if (typeof message.intValue === \"number\")\n object.intValue = options.longs === String ? String(message.intValue) : message.intValue;\n else\n object.intValue = options.longs === String ? $util.Long.prototype.toString.call(message.intValue) : options.longs === Number ? new $util.LongBits(message.intValue.low >>> 0, message.intValue.high >>> 0).toNumber() : message.intValue;\n if (options.oneofs)\n object.value = \"intValue\";\n }\n if (message.doubleValue != null && message.hasOwnProperty(\"doubleValue\")) {\n object.doubleValue = options.json && !isFinite(message.doubleValue) ? String(message.doubleValue) : message.doubleValue;\n if (options.oneofs)\n object.value = \"doubleValue\";\n }\n if (message.arrayValue != null && message.hasOwnProperty(\"arrayValue\")) {\n object.arrayValue = $root.opentelemetry.proto.common.v1.ArrayValue.toObject(message.arrayValue, options);\n if (options.oneofs)\n object.value = \"arrayValue\";\n }\n if (message.kvlistValue != null && message.hasOwnProperty(\"kvlistValue\")) {\n object.kvlistValue = $root.opentelemetry.proto.common.v1.KeyValueList.toObject(message.kvlistValue, options);\n if (options.oneofs)\n object.value = \"kvlistValue\";\n }\n if (message.bytesValue != null && message.hasOwnProperty(\"bytesValue\")) {\n object.bytesValue = options.bytes === String ? $util.base64.encode(message.bytesValue, 0, message.bytesValue.length) : options.bytes === Array ? Array.prototype.slice.call(message.bytesValue) : message.bytesValue;\n if (options.oneofs)\n object.value = \"bytesValue\";\n }\n return object;\n };\n /**\n * Converts this AnyValue to JSON.\n * @function toJSON\n * @memberof opentelemetry.proto.common.v1.AnyValue\n * @instance\n * @returns {Object.} JSON object\n */\n AnyValue.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n /**\n * Gets the default type url for AnyValue\n * @function getTypeUrl\n * @memberof opentelemetry.proto.common.v1.AnyValue\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n AnyValue.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = \"type.googleapis.com\";\n }\n return typeUrlPrefix + \"/opentelemetry.proto.common.v1.AnyValue\";\n };\n return AnyValue;\n })();\n v1.ArrayValue = (function () {\n /**\n * Properties of an ArrayValue.\n * @memberof opentelemetry.proto.common.v1\n * @interface IArrayValue\n * @property {Array.|null} [values] ArrayValue values\n */\n /**\n * Constructs a new ArrayValue.\n * @memberof opentelemetry.proto.common.v1\n * @classdesc Represents an ArrayValue.\n * @implements IArrayValue\n * @constructor\n * @param {opentelemetry.proto.common.v1.IArrayValue=} [properties] Properties to set\n */\n function ArrayValue(properties) {\n this.values = [];\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n /**\n * ArrayValue values.\n * @member {Array.} values\n * @memberof opentelemetry.proto.common.v1.ArrayValue\n * @instance\n */\n ArrayValue.prototype.values = $util.emptyArray;\n /**\n * Creates a new ArrayValue instance using the specified properties.\n * @function create\n * @memberof opentelemetry.proto.common.v1.ArrayValue\n * @static\n * @param {opentelemetry.proto.common.v1.IArrayValue=} [properties] Properties to set\n * @returns {opentelemetry.proto.common.v1.ArrayValue} ArrayValue instance\n */\n ArrayValue.create = function create(properties) {\n return new ArrayValue(properties);\n };\n /**\n * Encodes the specified ArrayValue message. Does not implicitly {@link opentelemetry.proto.common.v1.ArrayValue.verify|verify} messages.\n * @function encode\n * @memberof opentelemetry.proto.common.v1.ArrayValue\n * @static\n * @param {opentelemetry.proto.common.v1.IArrayValue} message ArrayValue message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ArrayValue.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.values != null && message.values.length)\n for (var i = 0; i < message.values.length; ++i)\n $root.opentelemetry.proto.common.v1.AnyValue.encode(message.values[i], writer.uint32(/* id 1, wireType 2 =*/ 10).fork()).ldelim();\n return writer;\n };\n /**\n * Encodes the specified ArrayValue message, length delimited. Does not implicitly {@link opentelemetry.proto.common.v1.ArrayValue.verify|verify} messages.\n * @function encodeDelimited\n * @memberof opentelemetry.proto.common.v1.ArrayValue\n * @static\n * @param {opentelemetry.proto.common.v1.IArrayValue} message ArrayValue message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ArrayValue.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n /**\n * Decodes an ArrayValue message from the specified reader or buffer.\n * @function decode\n * @memberof opentelemetry.proto.common.v1.ArrayValue\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {opentelemetry.proto.common.v1.ArrayValue} ArrayValue\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ArrayValue.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.opentelemetry.proto.common.v1.ArrayValue();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (!(message.values && message.values.length))\n message.values = [];\n message.values.push($root.opentelemetry.proto.common.v1.AnyValue.decode(reader, reader.uint32()));\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n /**\n * Decodes an ArrayValue message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof opentelemetry.proto.common.v1.ArrayValue\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {opentelemetry.proto.common.v1.ArrayValue} ArrayValue\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ArrayValue.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n /**\n * Verifies an ArrayValue message.\n * @function verify\n * @memberof opentelemetry.proto.common.v1.ArrayValue\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n ArrayValue.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.values != null && message.hasOwnProperty(\"values\")) {\n if (!Array.isArray(message.values))\n return \"values: array expected\";\n for (var i = 0; i < message.values.length; ++i) {\n var error = $root.opentelemetry.proto.common.v1.AnyValue.verify(message.values[i]);\n if (error)\n return \"values.\" + error;\n }\n }\n return null;\n };\n /**\n * Creates an ArrayValue message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof opentelemetry.proto.common.v1.ArrayValue\n * @static\n * @param {Object.} object Plain object\n * @returns {opentelemetry.proto.common.v1.ArrayValue} ArrayValue\n */\n ArrayValue.fromObject = function fromObject(object) {\n if (object instanceof $root.opentelemetry.proto.common.v1.ArrayValue)\n return object;\n var message = new $root.opentelemetry.proto.common.v1.ArrayValue();\n if (object.values) {\n if (!Array.isArray(object.values))\n throw TypeError(\".opentelemetry.proto.common.v1.ArrayValue.values: array expected\");\n message.values = [];\n for (var i = 0; i < object.values.length; ++i) {\n if (typeof object.values[i] !== \"object\")\n throw TypeError(\".opentelemetry.proto.common.v1.ArrayValue.values: object expected\");\n message.values[i] = $root.opentelemetry.proto.common.v1.AnyValue.fromObject(object.values[i]);\n }\n }\n return message;\n };\n /**\n * Creates a plain object from an ArrayValue message. Also converts values to other types if specified.\n * @function toObject\n * @memberof opentelemetry.proto.common.v1.ArrayValue\n * @static\n * @param {opentelemetry.proto.common.v1.ArrayValue} message ArrayValue\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n ArrayValue.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n var object = {};\n if (options.arrays || options.defaults)\n object.values = [];\n if (message.values && message.values.length) {\n object.values = [];\n for (var j = 0; j < message.values.length; ++j)\n object.values[j] = $root.opentelemetry.proto.common.v1.AnyValue.toObject(message.values[j], options);\n }\n return object;\n };\n /**\n * Converts this ArrayValue to JSON.\n * @function toJSON\n * @memberof opentelemetry.proto.common.v1.ArrayValue\n * @instance\n * @returns {Object.} JSON object\n */\n ArrayValue.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n /**\n * Gets the default type url for ArrayValue\n * @function getTypeUrl\n * @memberof opentelemetry.proto.common.v1.ArrayValue\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n ArrayValue.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = \"type.googleapis.com\";\n }\n return typeUrlPrefix + \"/opentelemetry.proto.common.v1.ArrayValue\";\n };\n return ArrayValue;\n })();\n v1.KeyValueList = (function () {\n /**\n * Properties of a KeyValueList.\n * @memberof opentelemetry.proto.common.v1\n * @interface IKeyValueList\n * @property {Array.|null} [values] KeyValueList values\n */\n /**\n * Constructs a new KeyValueList.\n * @memberof opentelemetry.proto.common.v1\n * @classdesc Represents a KeyValueList.\n * @implements IKeyValueList\n * @constructor\n * @param {opentelemetry.proto.common.v1.IKeyValueList=} [properties] Properties to set\n */\n function KeyValueList(properties) {\n this.values = [];\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n /**\n * KeyValueList values.\n * @member {Array.} values\n * @memberof opentelemetry.proto.common.v1.KeyValueList\n * @instance\n */\n KeyValueList.prototype.values = $util.emptyArray;\n /**\n * Creates a new KeyValueList instance using the specified properties.\n * @function create\n * @memberof opentelemetry.proto.common.v1.KeyValueList\n * @static\n * @param {opentelemetry.proto.common.v1.IKeyValueList=} [properties] Properties to set\n * @returns {opentelemetry.proto.common.v1.KeyValueList} KeyValueList instance\n */\n KeyValueList.create = function create(properties) {\n return new KeyValueList(properties);\n };\n /**\n * Encodes the specified KeyValueList message. Does not implicitly {@link opentelemetry.proto.common.v1.KeyValueList.verify|verify} messages.\n * @function encode\n * @memberof opentelemetry.proto.common.v1.KeyValueList\n * @static\n * @param {opentelemetry.proto.common.v1.IKeyValueList} message KeyValueList message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n KeyValueList.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.values != null && message.values.length)\n for (var i = 0; i < message.values.length; ++i)\n $root.opentelemetry.proto.common.v1.KeyValue.encode(message.values[i], writer.uint32(/* id 1, wireType 2 =*/ 10).fork()).ldelim();\n return writer;\n };\n /**\n * Encodes the specified KeyValueList message, length delimited. Does not implicitly {@link opentelemetry.proto.common.v1.KeyValueList.verify|verify} messages.\n * @function encodeDelimited\n * @memberof opentelemetry.proto.common.v1.KeyValueList\n * @static\n * @param {opentelemetry.proto.common.v1.IKeyValueList} message KeyValueList message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n KeyValueList.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n /**\n * Decodes a KeyValueList message from the specified reader or buffer.\n * @function decode\n * @memberof opentelemetry.proto.common.v1.KeyValueList\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {opentelemetry.proto.common.v1.KeyValueList} KeyValueList\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n KeyValueList.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.opentelemetry.proto.common.v1.KeyValueList();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (!(message.values && message.values.length))\n message.values = [];\n message.values.push($root.opentelemetry.proto.common.v1.KeyValue.decode(reader, reader.uint32()));\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n /**\n * Decodes a KeyValueList message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof opentelemetry.proto.common.v1.KeyValueList\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {opentelemetry.proto.common.v1.KeyValueList} KeyValueList\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n KeyValueList.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n /**\n * Verifies a KeyValueList message.\n * @function verify\n * @memberof opentelemetry.proto.common.v1.KeyValueList\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n KeyValueList.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.values != null && message.hasOwnProperty(\"values\")) {\n if (!Array.isArray(message.values))\n return \"values: array expected\";\n for (var i = 0; i < message.values.length; ++i) {\n var error = $root.opentelemetry.proto.common.v1.KeyValue.verify(message.values[i]);\n if (error)\n return \"values.\" + error;\n }\n }\n return null;\n };\n /**\n * Creates a KeyValueList message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof opentelemetry.proto.common.v1.KeyValueList\n * @static\n * @param {Object.} object Plain object\n * @returns {opentelemetry.proto.common.v1.KeyValueList} KeyValueList\n */\n KeyValueList.fromObject = function fromObject(object) {\n if (object instanceof $root.opentelemetry.proto.common.v1.KeyValueList)\n return object;\n var message = new $root.opentelemetry.proto.common.v1.KeyValueList();\n if (object.values) {\n if (!Array.isArray(object.values))\n throw TypeError(\".opentelemetry.proto.common.v1.KeyValueList.values: array expected\");\n message.values = [];\n for (var i = 0; i < object.values.length; ++i) {\n if (typeof object.values[i] !== \"object\")\n throw TypeError(\".opentelemetry.proto.common.v1.KeyValueList.values: object expected\");\n message.values[i] = $root.opentelemetry.proto.common.v1.KeyValue.fromObject(object.values[i]);\n }\n }\n return message;\n };\n /**\n * Creates a plain object from a KeyValueList message. Also converts values to other types if specified.\n * @function toObject\n * @memberof opentelemetry.proto.common.v1.KeyValueList\n * @static\n * @param {opentelemetry.proto.common.v1.KeyValueList} message KeyValueList\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n KeyValueList.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n var object = {};\n if (options.arrays || options.defaults)\n object.values = [];\n if (message.values && message.values.length) {\n object.values = [];\n for (var j = 0; j < message.values.length; ++j)\n object.values[j] = $root.opentelemetry.proto.common.v1.KeyValue.toObject(message.values[j], options);\n }\n return object;\n };\n /**\n * Converts this KeyValueList to JSON.\n * @function toJSON\n * @memberof opentelemetry.proto.common.v1.KeyValueList\n * @instance\n * @returns {Object.} JSON object\n */\n KeyValueList.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n /**\n * Gets the default type url for KeyValueList\n * @function getTypeUrl\n * @memberof opentelemetry.proto.common.v1.KeyValueList\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n KeyValueList.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = \"type.googleapis.com\";\n }\n return typeUrlPrefix + \"/opentelemetry.proto.common.v1.KeyValueList\";\n };\n return KeyValueList;\n })();\n v1.KeyValue = (function () {\n /**\n * Properties of a KeyValue.\n * @memberof opentelemetry.proto.common.v1\n * @interface IKeyValue\n * @property {string|null} [key] KeyValue key\n * @property {opentelemetry.proto.common.v1.IAnyValue|null} [value] KeyValue value\n */\n /**\n * Constructs a new KeyValue.\n * @memberof opentelemetry.proto.common.v1\n * @classdesc Represents a KeyValue.\n * @implements IKeyValue\n * @constructor\n * @param {opentelemetry.proto.common.v1.IKeyValue=} [properties] Properties to set\n */\n function KeyValue(properties) {\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n /**\n * KeyValue key.\n * @member {string|null|undefined} key\n * @memberof opentelemetry.proto.common.v1.KeyValue\n * @instance\n */\n KeyValue.prototype.key = null;\n /**\n * KeyValue value.\n * @member {opentelemetry.proto.common.v1.IAnyValue|null|undefined} value\n * @memberof opentelemetry.proto.common.v1.KeyValue\n * @instance\n */\n KeyValue.prototype.value = null;\n /**\n * Creates a new KeyValue instance using the specified properties.\n * @function create\n * @memberof opentelemetry.proto.common.v1.KeyValue\n * @static\n * @param {opentelemetry.proto.common.v1.IKeyValue=} [properties] Properties to set\n * @returns {opentelemetry.proto.common.v1.KeyValue} KeyValue instance\n */\n KeyValue.create = function create(properties) {\n return new KeyValue(properties);\n };\n /**\n * Encodes the specified KeyValue message. Does not implicitly {@link opentelemetry.proto.common.v1.KeyValue.verify|verify} messages.\n * @function encode\n * @memberof opentelemetry.proto.common.v1.KeyValue\n * @static\n * @param {opentelemetry.proto.common.v1.IKeyValue} message KeyValue message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n KeyValue.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.key != null && Object.hasOwnProperty.call(message, \"key\"))\n writer.uint32(/* id 1, wireType 2 =*/ 10).string(message.key);\n if (message.value != null && Object.hasOwnProperty.call(message, \"value\"))\n $root.opentelemetry.proto.common.v1.AnyValue.encode(message.value, writer.uint32(/* id 2, wireType 2 =*/ 18).fork()).ldelim();\n return writer;\n };\n /**\n * Encodes the specified KeyValue message, length delimited. Does not implicitly {@link opentelemetry.proto.common.v1.KeyValue.verify|verify} messages.\n * @function encodeDelimited\n * @memberof opentelemetry.proto.common.v1.KeyValue\n * @static\n * @param {opentelemetry.proto.common.v1.IKeyValue} message KeyValue message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n KeyValue.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n /**\n * Decodes a KeyValue message from the specified reader or buffer.\n * @function decode\n * @memberof opentelemetry.proto.common.v1.KeyValue\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {opentelemetry.proto.common.v1.KeyValue} KeyValue\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n KeyValue.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.opentelemetry.proto.common.v1.KeyValue();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n message.key = reader.string();\n break;\n }\n case 2: {\n message.value = $root.opentelemetry.proto.common.v1.AnyValue.decode(reader, reader.uint32());\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n /**\n * Decodes a KeyValue message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof opentelemetry.proto.common.v1.KeyValue\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {opentelemetry.proto.common.v1.KeyValue} KeyValue\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n KeyValue.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n /**\n * Verifies a KeyValue message.\n * @function verify\n * @memberof opentelemetry.proto.common.v1.KeyValue\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n KeyValue.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.key != null && message.hasOwnProperty(\"key\"))\n if (!$util.isString(message.key))\n return \"key: string expected\";\n if (message.value != null && message.hasOwnProperty(\"value\")) {\n var error = $root.opentelemetry.proto.common.v1.AnyValue.verify(message.value);\n if (error)\n return \"value.\" + error;\n }\n return null;\n };\n /**\n * Creates a KeyValue message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof opentelemetry.proto.common.v1.KeyValue\n * @static\n * @param {Object.} object Plain object\n * @returns {opentelemetry.proto.common.v1.KeyValue} KeyValue\n */\n KeyValue.fromObject = function fromObject(object) {\n if (object instanceof $root.opentelemetry.proto.common.v1.KeyValue)\n return object;\n var message = new $root.opentelemetry.proto.common.v1.KeyValue();\n if (object.key != null)\n message.key = String(object.key);\n if (object.value != null) {\n if (typeof object.value !== \"object\")\n throw TypeError(\".opentelemetry.proto.common.v1.KeyValue.value: object expected\");\n message.value = $root.opentelemetry.proto.common.v1.AnyValue.fromObject(object.value);\n }\n return message;\n };\n /**\n * Creates a plain object from a KeyValue message. Also converts values to other types if specified.\n * @function toObject\n * @memberof opentelemetry.proto.common.v1.KeyValue\n * @static\n * @param {opentelemetry.proto.common.v1.KeyValue} message KeyValue\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n KeyValue.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n var object = {};\n if (options.defaults) {\n object.key = \"\";\n object.value = null;\n }\n if (message.key != null && message.hasOwnProperty(\"key\"))\n object.key = message.key;\n if (message.value != null && message.hasOwnProperty(\"value\"))\n object.value = $root.opentelemetry.proto.common.v1.AnyValue.toObject(message.value, options);\n return object;\n };\n /**\n * Converts this KeyValue to JSON.\n * @function toJSON\n * @memberof opentelemetry.proto.common.v1.KeyValue\n * @instance\n * @returns {Object.} JSON object\n */\n KeyValue.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n /**\n * Gets the default type url for KeyValue\n * @function getTypeUrl\n * @memberof opentelemetry.proto.common.v1.KeyValue\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n KeyValue.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = \"type.googleapis.com\";\n }\n return typeUrlPrefix + \"/opentelemetry.proto.common.v1.KeyValue\";\n };\n return KeyValue;\n })();\n v1.InstrumentationScope = (function () {\n /**\n * Properties of an InstrumentationScope.\n * @memberof opentelemetry.proto.common.v1\n * @interface IInstrumentationScope\n * @property {string|null} [name] InstrumentationScope name\n * @property {string|null} [version] InstrumentationScope version\n * @property {Array.|null} [attributes] InstrumentationScope attributes\n * @property {number|null} [droppedAttributesCount] InstrumentationScope droppedAttributesCount\n */\n /**\n * Constructs a new InstrumentationScope.\n * @memberof opentelemetry.proto.common.v1\n * @classdesc Represents an InstrumentationScope.\n * @implements IInstrumentationScope\n * @constructor\n * @param {opentelemetry.proto.common.v1.IInstrumentationScope=} [properties] Properties to set\n */\n function InstrumentationScope(properties) {\n this.attributes = [];\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n /**\n * InstrumentationScope name.\n * @member {string|null|undefined} name\n * @memberof opentelemetry.proto.common.v1.InstrumentationScope\n * @instance\n */\n InstrumentationScope.prototype.name = null;\n /**\n * InstrumentationScope version.\n * @member {string|null|undefined} version\n * @memberof opentelemetry.proto.common.v1.InstrumentationScope\n * @instance\n */\n InstrumentationScope.prototype.version = null;\n /**\n * InstrumentationScope attributes.\n * @member {Array.} attributes\n * @memberof opentelemetry.proto.common.v1.InstrumentationScope\n * @instance\n */\n InstrumentationScope.prototype.attributes = $util.emptyArray;\n /**\n * InstrumentationScope droppedAttributesCount.\n * @member {number|null|undefined} droppedAttributesCount\n * @memberof opentelemetry.proto.common.v1.InstrumentationScope\n * @instance\n */\n InstrumentationScope.prototype.droppedAttributesCount = null;\n /**\n * Creates a new InstrumentationScope instance using the specified properties.\n * @function create\n * @memberof opentelemetry.proto.common.v1.InstrumentationScope\n * @static\n * @param {opentelemetry.proto.common.v1.IInstrumentationScope=} [properties] Properties to set\n * @returns {opentelemetry.proto.common.v1.InstrumentationScope} InstrumentationScope instance\n */\n InstrumentationScope.create = function create(properties) {\n return new InstrumentationScope(properties);\n };\n /**\n * Encodes the specified InstrumentationScope message. Does not implicitly {@link opentelemetry.proto.common.v1.InstrumentationScope.verify|verify} messages.\n * @function encode\n * @memberof opentelemetry.proto.common.v1.InstrumentationScope\n * @static\n * @param {opentelemetry.proto.common.v1.IInstrumentationScope} message InstrumentationScope message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n InstrumentationScope.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.name != null && Object.hasOwnProperty.call(message, \"name\"))\n writer.uint32(/* id 1, wireType 2 =*/ 10).string(message.name);\n if (message.version != null && Object.hasOwnProperty.call(message, \"version\"))\n writer.uint32(/* id 2, wireType 2 =*/ 18).string(message.version);\n if (message.attributes != null && message.attributes.length)\n for (var i = 0; i < message.attributes.length; ++i)\n $root.opentelemetry.proto.common.v1.KeyValue.encode(message.attributes[i], writer.uint32(/* id 3, wireType 2 =*/ 26).fork()).ldelim();\n if (message.droppedAttributesCount != null && Object.hasOwnProperty.call(message, \"droppedAttributesCount\"))\n writer.uint32(/* id 4, wireType 0 =*/ 32).uint32(message.droppedAttributesCount);\n return writer;\n };\n /**\n * Encodes the specified InstrumentationScope message, length delimited. Does not implicitly {@link opentelemetry.proto.common.v1.InstrumentationScope.verify|verify} messages.\n * @function encodeDelimited\n * @memberof opentelemetry.proto.common.v1.InstrumentationScope\n * @static\n * @param {opentelemetry.proto.common.v1.IInstrumentationScope} message InstrumentationScope message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n InstrumentationScope.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n /**\n * Decodes an InstrumentationScope message from the specified reader or buffer.\n * @function decode\n * @memberof opentelemetry.proto.common.v1.InstrumentationScope\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {opentelemetry.proto.common.v1.InstrumentationScope} InstrumentationScope\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n InstrumentationScope.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.opentelemetry.proto.common.v1.InstrumentationScope();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n message.name = reader.string();\n break;\n }\n case 2: {\n message.version = reader.string();\n break;\n }\n case 3: {\n if (!(message.attributes && message.attributes.length))\n message.attributes = [];\n message.attributes.push($root.opentelemetry.proto.common.v1.KeyValue.decode(reader, reader.uint32()));\n break;\n }\n case 4: {\n message.droppedAttributesCount = reader.uint32();\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n /**\n * Decodes an InstrumentationScope message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof opentelemetry.proto.common.v1.InstrumentationScope\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {opentelemetry.proto.common.v1.InstrumentationScope} InstrumentationScope\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n InstrumentationScope.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n /**\n * Verifies an InstrumentationScope message.\n * @function verify\n * @memberof opentelemetry.proto.common.v1.InstrumentationScope\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n InstrumentationScope.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.name != null && message.hasOwnProperty(\"name\"))\n if (!$util.isString(message.name))\n return \"name: string expected\";\n if (message.version != null && message.hasOwnProperty(\"version\"))\n if (!$util.isString(message.version))\n return \"version: string expected\";\n if (message.attributes != null && message.hasOwnProperty(\"attributes\")) {\n if (!Array.isArray(message.attributes))\n return \"attributes: array expected\";\n for (var i = 0; i < message.attributes.length; ++i) {\n var error = $root.opentelemetry.proto.common.v1.KeyValue.verify(message.attributes[i]);\n if (error)\n return \"attributes.\" + error;\n }\n }\n if (message.droppedAttributesCount != null && message.hasOwnProperty(\"droppedAttributesCount\"))\n if (!$util.isInteger(message.droppedAttributesCount))\n return \"droppedAttributesCount: integer expected\";\n return null;\n };\n /**\n * Creates an InstrumentationScope message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof opentelemetry.proto.common.v1.InstrumentationScope\n * @static\n * @param {Object.} object Plain object\n * @returns {opentelemetry.proto.common.v1.InstrumentationScope} InstrumentationScope\n */\n InstrumentationScope.fromObject = function fromObject(object) {\n if (object instanceof $root.opentelemetry.proto.common.v1.InstrumentationScope)\n return object;\n var message = new $root.opentelemetry.proto.common.v1.InstrumentationScope();\n if (object.name != null)\n message.name = String(object.name);\n if (object.version != null)\n message.version = String(object.version);\n if (object.attributes) {\n if (!Array.isArray(object.attributes))\n throw TypeError(\".opentelemetry.proto.common.v1.InstrumentationScope.attributes: array expected\");\n message.attributes = [];\n for (var i = 0; i < object.attributes.length; ++i) {\n if (typeof object.attributes[i] !== \"object\")\n throw TypeError(\".opentelemetry.proto.common.v1.InstrumentationScope.attributes: object expected\");\n message.attributes[i] = $root.opentelemetry.proto.common.v1.KeyValue.fromObject(object.attributes[i]);\n }\n }\n if (object.droppedAttributesCount != null)\n message.droppedAttributesCount = object.droppedAttributesCount >>> 0;\n return message;\n };\n /**\n * Creates a plain object from an InstrumentationScope message. Also converts values to other types if specified.\n * @function toObject\n * @memberof opentelemetry.proto.common.v1.InstrumentationScope\n * @static\n * @param {opentelemetry.proto.common.v1.InstrumentationScope} message InstrumentationScope\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n InstrumentationScope.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n var object = {};\n if (options.arrays || options.defaults)\n object.attributes = [];\n if (options.defaults) {\n object.name = \"\";\n object.version = \"\";\n object.droppedAttributesCount = 0;\n }\n if (message.name != null && message.hasOwnProperty(\"name\"))\n object.name = message.name;\n if (message.version != null && message.hasOwnProperty(\"version\"))\n object.version = message.version;\n if (message.attributes && message.attributes.length) {\n object.attributes = [];\n for (var j = 0; j < message.attributes.length; ++j)\n object.attributes[j] = $root.opentelemetry.proto.common.v1.KeyValue.toObject(message.attributes[j], options);\n }\n if (message.droppedAttributesCount != null && message.hasOwnProperty(\"droppedAttributesCount\"))\n object.droppedAttributesCount = message.droppedAttributesCount;\n return object;\n };\n /**\n * Converts this InstrumentationScope to JSON.\n * @function toJSON\n * @memberof opentelemetry.proto.common.v1.InstrumentationScope\n * @instance\n * @returns {Object.} JSON object\n */\n InstrumentationScope.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n /**\n * Gets the default type url for InstrumentationScope\n * @function getTypeUrl\n * @memberof opentelemetry.proto.common.v1.InstrumentationScope\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n InstrumentationScope.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = \"type.googleapis.com\";\n }\n return typeUrlPrefix + \"/opentelemetry.proto.common.v1.InstrumentationScope\";\n };\n return InstrumentationScope;\n })();\n return v1;\n })();\n return common;\n })();\n proto.resource = (function () {\n /**\n * Namespace resource.\n * @memberof opentelemetry.proto\n * @namespace\n */\n var resource = {};\n resource.v1 = (function () {\n /**\n * Namespace v1.\n * @memberof opentelemetry.proto.resource\n * @namespace\n */\n var v1 = {};\n v1.Resource = (function () {\n /**\n * Properties of a Resource.\n * @memberof opentelemetry.proto.resource.v1\n * @interface IResource\n * @property {Array.|null} [attributes] Resource attributes\n * @property {number|null} [droppedAttributesCount] Resource droppedAttributesCount\n */\n /**\n * Constructs a new Resource.\n * @memberof opentelemetry.proto.resource.v1\n * @classdesc Represents a Resource.\n * @implements IResource\n * @constructor\n * @param {opentelemetry.proto.resource.v1.IResource=} [properties] Properties to set\n */\n function Resource(properties) {\n this.attributes = [];\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n /**\n * Resource attributes.\n * @member {Array.} attributes\n * @memberof opentelemetry.proto.resource.v1.Resource\n * @instance\n */\n Resource.prototype.attributes = $util.emptyArray;\n /**\n * Resource droppedAttributesCount.\n * @member {number|null|undefined} droppedAttributesCount\n * @memberof opentelemetry.proto.resource.v1.Resource\n * @instance\n */\n Resource.prototype.droppedAttributesCount = null;\n /**\n * Creates a new Resource instance using the specified properties.\n * @function create\n * @memberof opentelemetry.proto.resource.v1.Resource\n * @static\n * @param {opentelemetry.proto.resource.v1.IResource=} [properties] Properties to set\n * @returns {opentelemetry.proto.resource.v1.Resource} Resource instance\n */\n Resource.create = function create(properties) {\n return new Resource(properties);\n };\n /**\n * Encodes the specified Resource message. Does not implicitly {@link opentelemetry.proto.resource.v1.Resource.verify|verify} messages.\n * @function encode\n * @memberof opentelemetry.proto.resource.v1.Resource\n * @static\n * @param {opentelemetry.proto.resource.v1.IResource} message Resource message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Resource.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.attributes != null && message.attributes.length)\n for (var i = 0; i < message.attributes.length; ++i)\n $root.opentelemetry.proto.common.v1.KeyValue.encode(message.attributes[i], writer.uint32(/* id 1, wireType 2 =*/ 10).fork()).ldelim();\n if (message.droppedAttributesCount != null && Object.hasOwnProperty.call(message, \"droppedAttributesCount\"))\n writer.uint32(/* id 2, wireType 0 =*/ 16).uint32(message.droppedAttributesCount);\n return writer;\n };\n /**\n * Encodes the specified Resource message, length delimited. Does not implicitly {@link opentelemetry.proto.resource.v1.Resource.verify|verify} messages.\n * @function encodeDelimited\n * @memberof opentelemetry.proto.resource.v1.Resource\n * @static\n * @param {opentelemetry.proto.resource.v1.IResource} message Resource message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Resource.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n /**\n * Decodes a Resource message from the specified reader or buffer.\n * @function decode\n * @memberof opentelemetry.proto.resource.v1.Resource\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {opentelemetry.proto.resource.v1.Resource} Resource\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Resource.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.opentelemetry.proto.resource.v1.Resource();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (!(message.attributes && message.attributes.length))\n message.attributes = [];\n message.attributes.push($root.opentelemetry.proto.common.v1.KeyValue.decode(reader, reader.uint32()));\n break;\n }\n case 2: {\n message.droppedAttributesCount = reader.uint32();\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n /**\n * Decodes a Resource message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof opentelemetry.proto.resource.v1.Resource\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {opentelemetry.proto.resource.v1.Resource} Resource\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Resource.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n /**\n * Verifies a Resource message.\n * @function verify\n * @memberof opentelemetry.proto.resource.v1.Resource\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n Resource.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.attributes != null && message.hasOwnProperty(\"attributes\")) {\n if (!Array.isArray(message.attributes))\n return \"attributes: array expected\";\n for (var i = 0; i < message.attributes.length; ++i) {\n var error = $root.opentelemetry.proto.common.v1.KeyValue.verify(message.attributes[i]);\n if (error)\n return \"attributes.\" + error;\n }\n }\n if (message.droppedAttributesCount != null && message.hasOwnProperty(\"droppedAttributesCount\"))\n if (!$util.isInteger(message.droppedAttributesCount))\n return \"droppedAttributesCount: integer expected\";\n return null;\n };\n /**\n * Creates a Resource message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof opentelemetry.proto.resource.v1.Resource\n * @static\n * @param {Object.} object Plain object\n * @returns {opentelemetry.proto.resource.v1.Resource} Resource\n */\n Resource.fromObject = function fromObject(object) {\n if (object instanceof $root.opentelemetry.proto.resource.v1.Resource)\n return object;\n var message = new $root.opentelemetry.proto.resource.v1.Resource();\n if (object.attributes) {\n if (!Array.isArray(object.attributes))\n throw TypeError(\".opentelemetry.proto.resource.v1.Resource.attributes: array expected\");\n message.attributes = [];\n for (var i = 0; i < object.attributes.length; ++i) {\n if (typeof object.attributes[i] !== \"object\")\n throw TypeError(\".opentelemetry.proto.resource.v1.Resource.attributes: object expected\");\n message.attributes[i] = $root.opentelemetry.proto.common.v1.KeyValue.fromObject(object.attributes[i]);\n }\n }\n if (object.droppedAttributesCount != null)\n message.droppedAttributesCount = object.droppedAttributesCount >>> 0;\n return message;\n };\n /**\n * Creates a plain object from a Resource message. Also converts values to other types if specified.\n * @function toObject\n * @memberof opentelemetry.proto.resource.v1.Resource\n * @static\n * @param {opentelemetry.proto.resource.v1.Resource} message Resource\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n Resource.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n var object = {};\n if (options.arrays || options.defaults)\n object.attributes = [];\n if (options.defaults)\n object.droppedAttributesCount = 0;\n if (message.attributes && message.attributes.length) {\n object.attributes = [];\n for (var j = 0; j < message.attributes.length; ++j)\n object.attributes[j] = $root.opentelemetry.proto.common.v1.KeyValue.toObject(message.attributes[j], options);\n }\n if (message.droppedAttributesCount != null && message.hasOwnProperty(\"droppedAttributesCount\"))\n object.droppedAttributesCount = message.droppedAttributesCount;\n return object;\n };\n /**\n * Converts this Resource to JSON.\n * @function toJSON\n * @memberof opentelemetry.proto.resource.v1.Resource\n * @instance\n * @returns {Object.} JSON object\n */\n Resource.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n /**\n * Gets the default type url for Resource\n * @function getTypeUrl\n * @memberof opentelemetry.proto.resource.v1.Resource\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n Resource.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = \"type.googleapis.com\";\n }\n return typeUrlPrefix + \"/opentelemetry.proto.resource.v1.Resource\";\n };\n return Resource;\n })();\n return v1;\n })();\n return resource;\n })();\n proto.trace = (function () {\n /**\n * Namespace trace.\n * @memberof opentelemetry.proto\n * @namespace\n */\n var trace = {};\n trace.v1 = (function () {\n /**\n * Namespace v1.\n * @memberof opentelemetry.proto.trace\n * @namespace\n */\n var v1 = {};\n v1.TracesData = (function () {\n /**\n * Properties of a TracesData.\n * @memberof opentelemetry.proto.trace.v1\n * @interface ITracesData\n * @property {Array.|null} [resourceSpans] TracesData resourceSpans\n */\n /**\n * Constructs a new TracesData.\n * @memberof opentelemetry.proto.trace.v1\n * @classdesc Represents a TracesData.\n * @implements ITracesData\n * @constructor\n * @param {opentelemetry.proto.trace.v1.ITracesData=} [properties] Properties to set\n */\n function TracesData(properties) {\n this.resourceSpans = [];\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n /**\n * TracesData resourceSpans.\n * @member {Array.} resourceSpans\n * @memberof opentelemetry.proto.trace.v1.TracesData\n * @instance\n */\n TracesData.prototype.resourceSpans = $util.emptyArray;\n /**\n * Creates a new TracesData instance using the specified properties.\n * @function create\n * @memberof opentelemetry.proto.trace.v1.TracesData\n * @static\n * @param {opentelemetry.proto.trace.v1.ITracesData=} [properties] Properties to set\n * @returns {opentelemetry.proto.trace.v1.TracesData} TracesData instance\n */\n TracesData.create = function create(properties) {\n return new TracesData(properties);\n };\n /**\n * Encodes the specified TracesData message. Does not implicitly {@link opentelemetry.proto.trace.v1.TracesData.verify|verify} messages.\n * @function encode\n * @memberof opentelemetry.proto.trace.v1.TracesData\n * @static\n * @param {opentelemetry.proto.trace.v1.ITracesData} message TracesData message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n TracesData.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.resourceSpans != null && message.resourceSpans.length)\n for (var i = 0; i < message.resourceSpans.length; ++i)\n $root.opentelemetry.proto.trace.v1.ResourceSpans.encode(message.resourceSpans[i], writer.uint32(/* id 1, wireType 2 =*/ 10).fork()).ldelim();\n return writer;\n };\n /**\n * Encodes the specified TracesData message, length delimited. Does not implicitly {@link opentelemetry.proto.trace.v1.TracesData.verify|verify} messages.\n * @function encodeDelimited\n * @memberof opentelemetry.proto.trace.v1.TracesData\n * @static\n * @param {opentelemetry.proto.trace.v1.ITracesData} message TracesData message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n TracesData.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n /**\n * Decodes a TracesData message from the specified reader or buffer.\n * @function decode\n * @memberof opentelemetry.proto.trace.v1.TracesData\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {opentelemetry.proto.trace.v1.TracesData} TracesData\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n TracesData.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.opentelemetry.proto.trace.v1.TracesData();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (!(message.resourceSpans && message.resourceSpans.length))\n message.resourceSpans = [];\n message.resourceSpans.push($root.opentelemetry.proto.trace.v1.ResourceSpans.decode(reader, reader.uint32()));\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n /**\n * Decodes a TracesData message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof opentelemetry.proto.trace.v1.TracesData\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {opentelemetry.proto.trace.v1.TracesData} TracesData\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n TracesData.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n /**\n * Verifies a TracesData message.\n * @function verify\n * @memberof opentelemetry.proto.trace.v1.TracesData\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n TracesData.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.resourceSpans != null && message.hasOwnProperty(\"resourceSpans\")) {\n if (!Array.isArray(message.resourceSpans))\n return \"resourceSpans: array expected\";\n for (var i = 0; i < message.resourceSpans.length; ++i) {\n var error = $root.opentelemetry.proto.trace.v1.ResourceSpans.verify(message.resourceSpans[i]);\n if (error)\n return \"resourceSpans.\" + error;\n }\n }\n return null;\n };\n /**\n * Creates a TracesData message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof opentelemetry.proto.trace.v1.TracesData\n * @static\n * @param {Object.} object Plain object\n * @returns {opentelemetry.proto.trace.v1.TracesData} TracesData\n */\n TracesData.fromObject = function fromObject(object) {\n if (object instanceof $root.opentelemetry.proto.trace.v1.TracesData)\n return object;\n var message = new $root.opentelemetry.proto.trace.v1.TracesData();\n if (object.resourceSpans) {\n if (!Array.isArray(object.resourceSpans))\n throw TypeError(\".opentelemetry.proto.trace.v1.TracesData.resourceSpans: array expected\");\n message.resourceSpans = [];\n for (var i = 0; i < object.resourceSpans.length; ++i) {\n if (typeof object.resourceSpans[i] !== \"object\")\n throw TypeError(\".opentelemetry.proto.trace.v1.TracesData.resourceSpans: object expected\");\n message.resourceSpans[i] = $root.opentelemetry.proto.trace.v1.ResourceSpans.fromObject(object.resourceSpans[i]);\n }\n }\n return message;\n };\n /**\n * Creates a plain object from a TracesData message. Also converts values to other types if specified.\n * @function toObject\n * @memberof opentelemetry.proto.trace.v1.TracesData\n * @static\n * @param {opentelemetry.proto.trace.v1.TracesData} message TracesData\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n TracesData.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n var object = {};\n if (options.arrays || options.defaults)\n object.resourceSpans = [];\n if (message.resourceSpans && message.resourceSpans.length) {\n object.resourceSpans = [];\n for (var j = 0; j < message.resourceSpans.length; ++j)\n object.resourceSpans[j] = $root.opentelemetry.proto.trace.v1.ResourceSpans.toObject(message.resourceSpans[j], options);\n }\n return object;\n };\n /**\n * Converts this TracesData to JSON.\n * @function toJSON\n * @memberof opentelemetry.proto.trace.v1.TracesData\n * @instance\n * @returns {Object.} JSON object\n */\n TracesData.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n /**\n * Gets the default type url for TracesData\n * @function getTypeUrl\n * @memberof opentelemetry.proto.trace.v1.TracesData\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n TracesData.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = \"type.googleapis.com\";\n }\n return typeUrlPrefix + \"/opentelemetry.proto.trace.v1.TracesData\";\n };\n return TracesData;\n })();\n v1.ResourceSpans = (function () {\n /**\n * Properties of a ResourceSpans.\n * @memberof opentelemetry.proto.trace.v1\n * @interface IResourceSpans\n * @property {opentelemetry.proto.resource.v1.IResource|null} [resource] ResourceSpans resource\n * @property {Array.|null} [scopeSpans] ResourceSpans scopeSpans\n * @property {string|null} [schemaUrl] ResourceSpans schemaUrl\n */\n /**\n * Constructs a new ResourceSpans.\n * @memberof opentelemetry.proto.trace.v1\n * @classdesc Represents a ResourceSpans.\n * @implements IResourceSpans\n * @constructor\n * @param {opentelemetry.proto.trace.v1.IResourceSpans=} [properties] Properties to set\n */\n function ResourceSpans(properties) {\n this.scopeSpans = [];\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n /**\n * ResourceSpans resource.\n * @member {opentelemetry.proto.resource.v1.IResource|null|undefined} resource\n * @memberof opentelemetry.proto.trace.v1.ResourceSpans\n * @instance\n */\n ResourceSpans.prototype.resource = null;\n /**\n * ResourceSpans scopeSpans.\n * @member {Array.} scopeSpans\n * @memberof opentelemetry.proto.trace.v1.ResourceSpans\n * @instance\n */\n ResourceSpans.prototype.scopeSpans = $util.emptyArray;\n /**\n * ResourceSpans schemaUrl.\n * @member {string|null|undefined} schemaUrl\n * @memberof opentelemetry.proto.trace.v1.ResourceSpans\n * @instance\n */\n ResourceSpans.prototype.schemaUrl = null;\n /**\n * Creates a new ResourceSpans instance using the specified properties.\n * @function create\n * @memberof opentelemetry.proto.trace.v1.ResourceSpans\n * @static\n * @param {opentelemetry.proto.trace.v1.IResourceSpans=} [properties] Properties to set\n * @returns {opentelemetry.proto.trace.v1.ResourceSpans} ResourceSpans instance\n */\n ResourceSpans.create = function create(properties) {\n return new ResourceSpans(properties);\n };\n /**\n * Encodes the specified ResourceSpans message. Does not implicitly {@link opentelemetry.proto.trace.v1.ResourceSpans.verify|verify} messages.\n * @function encode\n * @memberof opentelemetry.proto.trace.v1.ResourceSpans\n * @static\n * @param {opentelemetry.proto.trace.v1.IResourceSpans} message ResourceSpans message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ResourceSpans.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.resource != null && Object.hasOwnProperty.call(message, \"resource\"))\n $root.opentelemetry.proto.resource.v1.Resource.encode(message.resource, writer.uint32(/* id 1, wireType 2 =*/ 10).fork()).ldelim();\n if (message.scopeSpans != null && message.scopeSpans.length)\n for (var i = 0; i < message.scopeSpans.length; ++i)\n $root.opentelemetry.proto.trace.v1.ScopeSpans.encode(message.scopeSpans[i], writer.uint32(/* id 2, wireType 2 =*/ 18).fork()).ldelim();\n if (message.schemaUrl != null && Object.hasOwnProperty.call(message, \"schemaUrl\"))\n writer.uint32(/* id 3, wireType 2 =*/ 26).string(message.schemaUrl);\n return writer;\n };\n /**\n * Encodes the specified ResourceSpans message, length delimited. Does not implicitly {@link opentelemetry.proto.trace.v1.ResourceSpans.verify|verify} messages.\n * @function encodeDelimited\n * @memberof opentelemetry.proto.trace.v1.ResourceSpans\n * @static\n * @param {opentelemetry.proto.trace.v1.IResourceSpans} message ResourceSpans message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ResourceSpans.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n /**\n * Decodes a ResourceSpans message from the specified reader or buffer.\n * @function decode\n * @memberof opentelemetry.proto.trace.v1.ResourceSpans\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {opentelemetry.proto.trace.v1.ResourceSpans} ResourceSpans\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ResourceSpans.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.opentelemetry.proto.trace.v1.ResourceSpans();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n message.resource = $root.opentelemetry.proto.resource.v1.Resource.decode(reader, reader.uint32());\n break;\n }\n case 2: {\n if (!(message.scopeSpans && message.scopeSpans.length))\n message.scopeSpans = [];\n message.scopeSpans.push($root.opentelemetry.proto.trace.v1.ScopeSpans.decode(reader, reader.uint32()));\n break;\n }\n case 3: {\n message.schemaUrl = reader.string();\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n /**\n * Decodes a ResourceSpans message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof opentelemetry.proto.trace.v1.ResourceSpans\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {opentelemetry.proto.trace.v1.ResourceSpans} ResourceSpans\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ResourceSpans.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n /**\n * Verifies a ResourceSpans message.\n * @function verify\n * @memberof opentelemetry.proto.trace.v1.ResourceSpans\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n ResourceSpans.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.resource != null && message.hasOwnProperty(\"resource\")) {\n var error = $root.opentelemetry.proto.resource.v1.Resource.verify(message.resource);\n if (error)\n return \"resource.\" + error;\n }\n if (message.scopeSpans != null && message.hasOwnProperty(\"scopeSpans\")) {\n if (!Array.isArray(message.scopeSpans))\n return \"scopeSpans: array expected\";\n for (var i = 0; i < message.scopeSpans.length; ++i) {\n var error = $root.opentelemetry.proto.trace.v1.ScopeSpans.verify(message.scopeSpans[i]);\n if (error)\n return \"scopeSpans.\" + error;\n }\n }\n if (message.schemaUrl != null && message.hasOwnProperty(\"schemaUrl\"))\n if (!$util.isString(message.schemaUrl))\n return \"schemaUrl: string expected\";\n return null;\n };\n /**\n * Creates a ResourceSpans message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof opentelemetry.proto.trace.v1.ResourceSpans\n * @static\n * @param {Object.} object Plain object\n * @returns {opentelemetry.proto.trace.v1.ResourceSpans} ResourceSpans\n */\n ResourceSpans.fromObject = function fromObject(object) {\n if (object instanceof $root.opentelemetry.proto.trace.v1.ResourceSpans)\n return object;\n var message = new $root.opentelemetry.proto.trace.v1.ResourceSpans();\n if (object.resource != null) {\n if (typeof object.resource !== \"object\")\n throw TypeError(\".opentelemetry.proto.trace.v1.ResourceSpans.resource: object expected\");\n message.resource = $root.opentelemetry.proto.resource.v1.Resource.fromObject(object.resource);\n }\n if (object.scopeSpans) {\n if (!Array.isArray(object.scopeSpans))\n throw TypeError(\".opentelemetry.proto.trace.v1.ResourceSpans.scopeSpans: array expected\");\n message.scopeSpans = [];\n for (var i = 0; i < object.scopeSpans.length; ++i) {\n if (typeof object.scopeSpans[i] !== \"object\")\n throw TypeError(\".opentelemetry.proto.trace.v1.ResourceSpans.scopeSpans: object expected\");\n message.scopeSpans[i] = $root.opentelemetry.proto.trace.v1.ScopeSpans.fromObject(object.scopeSpans[i]);\n }\n }\n if (object.schemaUrl != null)\n message.schemaUrl = String(object.schemaUrl);\n return message;\n };\n /**\n * Creates a plain object from a ResourceSpans message. Also converts values to other types if specified.\n * @function toObject\n * @memberof opentelemetry.proto.trace.v1.ResourceSpans\n * @static\n * @param {opentelemetry.proto.trace.v1.ResourceSpans} message ResourceSpans\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n ResourceSpans.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n var object = {};\n if (options.arrays || options.defaults)\n object.scopeSpans = [];\n if (options.defaults) {\n object.resource = null;\n object.schemaUrl = \"\";\n }\n if (message.resource != null && message.hasOwnProperty(\"resource\"))\n object.resource = $root.opentelemetry.proto.resource.v1.Resource.toObject(message.resource, options);\n if (message.scopeSpans && message.scopeSpans.length) {\n object.scopeSpans = [];\n for (var j = 0; j < message.scopeSpans.length; ++j)\n object.scopeSpans[j] = $root.opentelemetry.proto.trace.v1.ScopeSpans.toObject(message.scopeSpans[j], options);\n }\n if (message.schemaUrl != null && message.hasOwnProperty(\"schemaUrl\"))\n object.schemaUrl = message.schemaUrl;\n return object;\n };\n /**\n * Converts this ResourceSpans to JSON.\n * @function toJSON\n * @memberof opentelemetry.proto.trace.v1.ResourceSpans\n * @instance\n * @returns {Object.} JSON object\n */\n ResourceSpans.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n /**\n * Gets the default type url for ResourceSpans\n * @function getTypeUrl\n * @memberof opentelemetry.proto.trace.v1.ResourceSpans\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n ResourceSpans.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = \"type.googleapis.com\";\n }\n return typeUrlPrefix + \"/opentelemetry.proto.trace.v1.ResourceSpans\";\n };\n return ResourceSpans;\n })();\n v1.ScopeSpans = (function () {\n /**\n * Properties of a ScopeSpans.\n * @memberof opentelemetry.proto.trace.v1\n * @interface IScopeSpans\n * @property {opentelemetry.proto.common.v1.IInstrumentationScope|null} [scope] ScopeSpans scope\n * @property {Array.|null} [spans] ScopeSpans spans\n * @property {string|null} [schemaUrl] ScopeSpans schemaUrl\n */\n /**\n * Constructs a new ScopeSpans.\n * @memberof opentelemetry.proto.trace.v1\n * @classdesc Represents a ScopeSpans.\n * @implements IScopeSpans\n * @constructor\n * @param {opentelemetry.proto.trace.v1.IScopeSpans=} [properties] Properties to set\n */\n function ScopeSpans(properties) {\n this.spans = [];\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n /**\n * ScopeSpans scope.\n * @member {opentelemetry.proto.common.v1.IInstrumentationScope|null|undefined} scope\n * @memberof opentelemetry.proto.trace.v1.ScopeSpans\n * @instance\n */\n ScopeSpans.prototype.scope = null;\n /**\n * ScopeSpans spans.\n * @member {Array.} spans\n * @memberof opentelemetry.proto.trace.v1.ScopeSpans\n * @instance\n */\n ScopeSpans.prototype.spans = $util.emptyArray;\n /**\n * ScopeSpans schemaUrl.\n * @member {string|null|undefined} schemaUrl\n * @memberof opentelemetry.proto.trace.v1.ScopeSpans\n * @instance\n */\n ScopeSpans.prototype.schemaUrl = null;\n /**\n * Creates a new ScopeSpans instance using the specified properties.\n * @function create\n * @memberof opentelemetry.proto.trace.v1.ScopeSpans\n * @static\n * @param {opentelemetry.proto.trace.v1.IScopeSpans=} [properties] Properties to set\n * @returns {opentelemetry.proto.trace.v1.ScopeSpans} ScopeSpans instance\n */\n ScopeSpans.create = function create(properties) {\n return new ScopeSpans(properties);\n };\n /**\n * Encodes the specified ScopeSpans message. Does not implicitly {@link opentelemetry.proto.trace.v1.ScopeSpans.verify|verify} messages.\n * @function encode\n * @memberof opentelemetry.proto.trace.v1.ScopeSpans\n * @static\n * @param {opentelemetry.proto.trace.v1.IScopeSpans} message ScopeSpans message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ScopeSpans.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.scope != null && Object.hasOwnProperty.call(message, \"scope\"))\n $root.opentelemetry.proto.common.v1.InstrumentationScope.encode(message.scope, writer.uint32(/* id 1, wireType 2 =*/ 10).fork()).ldelim();\n if (message.spans != null && message.spans.length)\n for (var i = 0; i < message.spans.length; ++i)\n $root.opentelemetry.proto.trace.v1.Span.encode(message.spans[i], writer.uint32(/* id 2, wireType 2 =*/ 18).fork()).ldelim();\n if (message.schemaUrl != null && Object.hasOwnProperty.call(message, \"schemaUrl\"))\n writer.uint32(/* id 3, wireType 2 =*/ 26).string(message.schemaUrl);\n return writer;\n };\n /**\n * Encodes the specified ScopeSpans message, length delimited. Does not implicitly {@link opentelemetry.proto.trace.v1.ScopeSpans.verify|verify} messages.\n * @function encodeDelimited\n * @memberof opentelemetry.proto.trace.v1.ScopeSpans\n * @static\n * @param {opentelemetry.proto.trace.v1.IScopeSpans} message ScopeSpans message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ScopeSpans.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n /**\n * Decodes a ScopeSpans message from the specified reader or buffer.\n * @function decode\n * @memberof opentelemetry.proto.trace.v1.ScopeSpans\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {opentelemetry.proto.trace.v1.ScopeSpans} ScopeSpans\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ScopeSpans.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.opentelemetry.proto.trace.v1.ScopeSpans();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n message.scope = $root.opentelemetry.proto.common.v1.InstrumentationScope.decode(reader, reader.uint32());\n break;\n }\n case 2: {\n if (!(message.spans && message.spans.length))\n message.spans = [];\n message.spans.push($root.opentelemetry.proto.trace.v1.Span.decode(reader, reader.uint32()));\n break;\n }\n case 3: {\n message.schemaUrl = reader.string();\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n /**\n * Decodes a ScopeSpans message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof opentelemetry.proto.trace.v1.ScopeSpans\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {opentelemetry.proto.trace.v1.ScopeSpans} ScopeSpans\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ScopeSpans.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n /**\n * Verifies a ScopeSpans message.\n * @function verify\n * @memberof opentelemetry.proto.trace.v1.ScopeSpans\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n ScopeSpans.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.scope != null && message.hasOwnProperty(\"scope\")) {\n var error = $root.opentelemetry.proto.common.v1.InstrumentationScope.verify(message.scope);\n if (error)\n return \"scope.\" + error;\n }\n if (message.spans != null && message.hasOwnProperty(\"spans\")) {\n if (!Array.isArray(message.spans))\n return \"spans: array expected\";\n for (var i = 0; i < message.spans.length; ++i) {\n var error = $root.opentelemetry.proto.trace.v1.Span.verify(message.spans[i]);\n if (error)\n return \"spans.\" + error;\n }\n }\n if (message.schemaUrl != null && message.hasOwnProperty(\"schemaUrl\"))\n if (!$util.isString(message.schemaUrl))\n return \"schemaUrl: string expected\";\n return null;\n };\n /**\n * Creates a ScopeSpans message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof opentelemetry.proto.trace.v1.ScopeSpans\n * @static\n * @param {Object.} object Plain object\n * @returns {opentelemetry.proto.trace.v1.ScopeSpans} ScopeSpans\n */\n ScopeSpans.fromObject = function fromObject(object) {\n if (object instanceof $root.opentelemetry.proto.trace.v1.ScopeSpans)\n return object;\n var message = new $root.opentelemetry.proto.trace.v1.ScopeSpans();\n if (object.scope != null) {\n if (typeof object.scope !== \"object\")\n throw TypeError(\".opentelemetry.proto.trace.v1.ScopeSpans.scope: object expected\");\n message.scope = $root.opentelemetry.proto.common.v1.InstrumentationScope.fromObject(object.scope);\n }\n if (object.spans) {\n if (!Array.isArray(object.spans))\n throw TypeError(\".opentelemetry.proto.trace.v1.ScopeSpans.spans: array expected\");\n message.spans = [];\n for (var i = 0; i < object.spans.length; ++i) {\n if (typeof object.spans[i] !== \"object\")\n throw TypeError(\".opentelemetry.proto.trace.v1.ScopeSpans.spans: object expected\");\n message.spans[i] = $root.opentelemetry.proto.trace.v1.Span.fromObject(object.spans[i]);\n }\n }\n if (object.schemaUrl != null)\n message.schemaUrl = String(object.schemaUrl);\n return message;\n };\n /**\n * Creates a plain object from a ScopeSpans message. Also converts values to other types if specified.\n * @function toObject\n * @memberof opentelemetry.proto.trace.v1.ScopeSpans\n * @static\n * @param {opentelemetry.proto.trace.v1.ScopeSpans} message ScopeSpans\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n ScopeSpans.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n var object = {};\n if (options.arrays || options.defaults)\n object.spans = [];\n if (options.defaults) {\n object.scope = null;\n object.schemaUrl = \"\";\n }\n if (message.scope != null && message.hasOwnProperty(\"scope\"))\n object.scope = $root.opentelemetry.proto.common.v1.InstrumentationScope.toObject(message.scope, options);\n if (message.spans && message.spans.length) {\n object.spans = [];\n for (var j = 0; j < message.spans.length; ++j)\n object.spans[j] = $root.opentelemetry.proto.trace.v1.Span.toObject(message.spans[j], options);\n }\n if (message.schemaUrl != null && message.hasOwnProperty(\"schemaUrl\"))\n object.schemaUrl = message.schemaUrl;\n return object;\n };\n /**\n * Converts this ScopeSpans to JSON.\n * @function toJSON\n * @memberof opentelemetry.proto.trace.v1.ScopeSpans\n * @instance\n * @returns {Object.} JSON object\n */\n ScopeSpans.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n /**\n * Gets the default type url for ScopeSpans\n * @function getTypeUrl\n * @memberof opentelemetry.proto.trace.v1.ScopeSpans\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n ScopeSpans.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = \"type.googleapis.com\";\n }\n return typeUrlPrefix + \"/opentelemetry.proto.trace.v1.ScopeSpans\";\n };\n return ScopeSpans;\n })();\n v1.Span = (function () {\n /**\n * Properties of a Span.\n * @memberof opentelemetry.proto.trace.v1\n * @interface ISpan\n * @property {Uint8Array|null} [traceId] Span traceId\n * @property {Uint8Array|null} [spanId] Span spanId\n * @property {string|null} [traceState] Span traceState\n * @property {Uint8Array|null} [parentSpanId] Span parentSpanId\n * @property {string|null} [name] Span name\n * @property {opentelemetry.proto.trace.v1.Span.SpanKind|null} [kind] Span kind\n * @property {number|Long|null} [startTimeUnixNano] Span startTimeUnixNano\n * @property {number|Long|null} [endTimeUnixNano] Span endTimeUnixNano\n * @property {Array.|null} [attributes] Span attributes\n * @property {number|null} [droppedAttributesCount] Span droppedAttributesCount\n * @property {Array.|null} [events] Span events\n * @property {number|null} [droppedEventsCount] Span droppedEventsCount\n * @property {Array.|null} [links] Span links\n * @property {number|null} [droppedLinksCount] Span droppedLinksCount\n * @property {opentelemetry.proto.trace.v1.IStatus|null} [status] Span status\n */\n /**\n * Constructs a new Span.\n * @memberof opentelemetry.proto.trace.v1\n * @classdesc Represents a Span.\n * @implements ISpan\n * @constructor\n * @param {opentelemetry.proto.trace.v1.ISpan=} [properties] Properties to set\n */\n function Span(properties) {\n this.attributes = [];\n this.events = [];\n this.links = [];\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n /**\n * Span traceId.\n * @member {Uint8Array|null|undefined} traceId\n * @memberof opentelemetry.proto.trace.v1.Span\n * @instance\n */\n Span.prototype.traceId = null;\n /**\n * Span spanId.\n * @member {Uint8Array|null|undefined} spanId\n * @memberof opentelemetry.proto.trace.v1.Span\n * @instance\n */\n Span.prototype.spanId = null;\n /**\n * Span traceState.\n * @member {string|null|undefined} traceState\n * @memberof opentelemetry.proto.trace.v1.Span\n * @instance\n */\n Span.prototype.traceState = null;\n /**\n * Span parentSpanId.\n * @member {Uint8Array|null|undefined} parentSpanId\n * @memberof opentelemetry.proto.trace.v1.Span\n * @instance\n */\n Span.prototype.parentSpanId = null;\n /**\n * Span name.\n * @member {string|null|undefined} name\n * @memberof opentelemetry.proto.trace.v1.Span\n * @instance\n */\n Span.prototype.name = null;\n /**\n * Span kind.\n * @member {opentelemetry.proto.trace.v1.Span.SpanKind|null|undefined} kind\n * @memberof opentelemetry.proto.trace.v1.Span\n * @instance\n */\n Span.prototype.kind = null;\n /**\n * Span startTimeUnixNano.\n * @member {number|Long|null|undefined} startTimeUnixNano\n * @memberof opentelemetry.proto.trace.v1.Span\n * @instance\n */\n Span.prototype.startTimeUnixNano = null;\n /**\n * Span endTimeUnixNano.\n * @member {number|Long|null|undefined} endTimeUnixNano\n * @memberof opentelemetry.proto.trace.v1.Span\n * @instance\n */\n Span.prototype.endTimeUnixNano = null;\n /**\n * Span attributes.\n * @member {Array.} attributes\n * @memberof opentelemetry.proto.trace.v1.Span\n * @instance\n */\n Span.prototype.attributes = $util.emptyArray;\n /**\n * Span droppedAttributesCount.\n * @member {number|null|undefined} droppedAttributesCount\n * @memberof opentelemetry.proto.trace.v1.Span\n * @instance\n */\n Span.prototype.droppedAttributesCount = null;\n /**\n * Span events.\n * @member {Array.} events\n * @memberof opentelemetry.proto.trace.v1.Span\n * @instance\n */\n Span.prototype.events = $util.emptyArray;\n /**\n * Span droppedEventsCount.\n * @member {number|null|undefined} droppedEventsCount\n * @memberof opentelemetry.proto.trace.v1.Span\n * @instance\n */\n Span.prototype.droppedEventsCount = null;\n /**\n * Span links.\n * @member {Array.} links\n * @memberof opentelemetry.proto.trace.v1.Span\n * @instance\n */\n Span.prototype.links = $util.emptyArray;\n /**\n * Span droppedLinksCount.\n * @member {number|null|undefined} droppedLinksCount\n * @memberof opentelemetry.proto.trace.v1.Span\n * @instance\n */\n Span.prototype.droppedLinksCount = null;\n /**\n * Span status.\n * @member {opentelemetry.proto.trace.v1.IStatus|null|undefined} status\n * @memberof opentelemetry.proto.trace.v1.Span\n * @instance\n */\n Span.prototype.status = null;\n /**\n * Creates a new Span instance using the specified properties.\n * @function create\n * @memberof opentelemetry.proto.trace.v1.Span\n * @static\n * @param {opentelemetry.proto.trace.v1.ISpan=} [properties] Properties to set\n * @returns {opentelemetry.proto.trace.v1.Span} Span instance\n */\n Span.create = function create(properties) {\n return new Span(properties);\n };\n /**\n * Encodes the specified Span message. Does not implicitly {@link opentelemetry.proto.trace.v1.Span.verify|verify} messages.\n * @function encode\n * @memberof opentelemetry.proto.trace.v1.Span\n * @static\n * @param {opentelemetry.proto.trace.v1.ISpan} message Span message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Span.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.traceId != null && Object.hasOwnProperty.call(message, \"traceId\"))\n writer.uint32(/* id 1, wireType 2 =*/ 10).bytes(message.traceId);\n if (message.spanId != null && Object.hasOwnProperty.call(message, \"spanId\"))\n writer.uint32(/* id 2, wireType 2 =*/ 18).bytes(message.spanId);\n if (message.traceState != null && Object.hasOwnProperty.call(message, \"traceState\"))\n writer.uint32(/* id 3, wireType 2 =*/ 26).string(message.traceState);\n if (message.parentSpanId != null && Object.hasOwnProperty.call(message, \"parentSpanId\"))\n writer.uint32(/* id 4, wireType 2 =*/ 34).bytes(message.parentSpanId);\n if (message.name != null && Object.hasOwnProperty.call(message, \"name\"))\n writer.uint32(/* id 5, wireType 2 =*/ 42).string(message.name);\n if (message.kind != null && Object.hasOwnProperty.call(message, \"kind\"))\n writer.uint32(/* id 6, wireType 0 =*/ 48).int32(message.kind);\n if (message.startTimeUnixNano != null && Object.hasOwnProperty.call(message, \"startTimeUnixNano\"))\n writer.uint32(/* id 7, wireType 1 =*/ 57).fixed64(message.startTimeUnixNano);\n if (message.endTimeUnixNano != null && Object.hasOwnProperty.call(message, \"endTimeUnixNano\"))\n writer.uint32(/* id 8, wireType 1 =*/ 65).fixed64(message.endTimeUnixNano);\n if (message.attributes != null && message.attributes.length)\n for (var i = 0; i < message.attributes.length; ++i)\n $root.opentelemetry.proto.common.v1.KeyValue.encode(message.attributes[i], writer.uint32(/* id 9, wireType 2 =*/ 74).fork()).ldelim();\n if (message.droppedAttributesCount != null && Object.hasOwnProperty.call(message, \"droppedAttributesCount\"))\n writer.uint32(/* id 10, wireType 0 =*/ 80).uint32(message.droppedAttributesCount);\n if (message.events != null && message.events.length)\n for (var i = 0; i < message.events.length; ++i)\n $root.opentelemetry.proto.trace.v1.Span.Event.encode(message.events[i], writer.uint32(/* id 11, wireType 2 =*/ 90).fork()).ldelim();\n if (message.droppedEventsCount != null && Object.hasOwnProperty.call(message, \"droppedEventsCount\"))\n writer.uint32(/* id 12, wireType 0 =*/ 96).uint32(message.droppedEventsCount);\n if (message.links != null && message.links.length)\n for (var i = 0; i < message.links.length; ++i)\n $root.opentelemetry.proto.trace.v1.Span.Link.encode(message.links[i], writer.uint32(/* id 13, wireType 2 =*/ 106).fork()).ldelim();\n if (message.droppedLinksCount != null && Object.hasOwnProperty.call(message, \"droppedLinksCount\"))\n writer.uint32(/* id 14, wireType 0 =*/ 112).uint32(message.droppedLinksCount);\n if (message.status != null && Object.hasOwnProperty.call(message, \"status\"))\n $root.opentelemetry.proto.trace.v1.Status.encode(message.status, writer.uint32(/* id 15, wireType 2 =*/ 122).fork()).ldelim();\n return writer;\n };\n /**\n * Encodes the specified Span message, length delimited. Does not implicitly {@link opentelemetry.proto.trace.v1.Span.verify|verify} messages.\n * @function encodeDelimited\n * @memberof opentelemetry.proto.trace.v1.Span\n * @static\n * @param {opentelemetry.proto.trace.v1.ISpan} message Span message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Span.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n /**\n * Decodes a Span message from the specified reader or buffer.\n * @function decode\n * @memberof opentelemetry.proto.trace.v1.Span\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {opentelemetry.proto.trace.v1.Span} Span\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Span.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.opentelemetry.proto.trace.v1.Span();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n message.traceId = reader.bytes();\n break;\n }\n case 2: {\n message.spanId = reader.bytes();\n break;\n }\n case 3: {\n message.traceState = reader.string();\n break;\n }\n case 4: {\n message.parentSpanId = reader.bytes();\n break;\n }\n case 5: {\n message.name = reader.string();\n break;\n }\n case 6: {\n message.kind = reader.int32();\n break;\n }\n case 7: {\n message.startTimeUnixNano = reader.fixed64();\n break;\n }\n case 8: {\n message.endTimeUnixNano = reader.fixed64();\n break;\n }\n case 9: {\n if (!(message.attributes && message.attributes.length))\n message.attributes = [];\n message.attributes.push($root.opentelemetry.proto.common.v1.KeyValue.decode(reader, reader.uint32()));\n break;\n }\n case 10: {\n message.droppedAttributesCount = reader.uint32();\n break;\n }\n case 11: {\n if (!(message.events && message.events.length))\n message.events = [];\n message.events.push($root.opentelemetry.proto.trace.v1.Span.Event.decode(reader, reader.uint32()));\n break;\n }\n case 12: {\n message.droppedEventsCount = reader.uint32();\n break;\n }\n case 13: {\n if (!(message.links && message.links.length))\n message.links = [];\n message.links.push($root.opentelemetry.proto.trace.v1.Span.Link.decode(reader, reader.uint32()));\n break;\n }\n case 14: {\n message.droppedLinksCount = reader.uint32();\n break;\n }\n case 15: {\n message.status = $root.opentelemetry.proto.trace.v1.Status.decode(reader, reader.uint32());\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n /**\n * Decodes a Span message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof opentelemetry.proto.trace.v1.Span\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {opentelemetry.proto.trace.v1.Span} Span\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Span.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n /**\n * Verifies a Span message.\n * @function verify\n * @memberof opentelemetry.proto.trace.v1.Span\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n Span.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.traceId != null && message.hasOwnProperty(\"traceId\"))\n if (!(message.traceId && typeof message.traceId.length === \"number\" || $util.isString(message.traceId)))\n return \"traceId: buffer expected\";\n if (message.spanId != null && message.hasOwnProperty(\"spanId\"))\n if (!(message.spanId && typeof message.spanId.length === \"number\" || $util.isString(message.spanId)))\n return \"spanId: buffer expected\";\n if (message.traceState != null && message.hasOwnProperty(\"traceState\"))\n if (!$util.isString(message.traceState))\n return \"traceState: string expected\";\n if (message.parentSpanId != null && message.hasOwnProperty(\"parentSpanId\"))\n if (!(message.parentSpanId && typeof message.parentSpanId.length === \"number\" || $util.isString(message.parentSpanId)))\n return \"parentSpanId: buffer expected\";\n if (message.name != null && message.hasOwnProperty(\"name\"))\n if (!$util.isString(message.name))\n return \"name: string expected\";\n if (message.kind != null && message.hasOwnProperty(\"kind\"))\n switch (message.kind) {\n default:\n return \"kind: enum value expected\";\n case 0:\n case 1:\n case 2:\n case 3:\n case 4:\n case 5:\n break;\n }\n if (message.startTimeUnixNano != null && message.hasOwnProperty(\"startTimeUnixNano\"))\n if (!$util.isInteger(message.startTimeUnixNano) && !(message.startTimeUnixNano && $util.isInteger(message.startTimeUnixNano.low) && $util.isInteger(message.startTimeUnixNano.high)))\n return \"startTimeUnixNano: integer|Long expected\";\n if (message.endTimeUnixNano != null && message.hasOwnProperty(\"endTimeUnixNano\"))\n if (!$util.isInteger(message.endTimeUnixNano) && !(message.endTimeUnixNano && $util.isInteger(message.endTimeUnixNano.low) && $util.isInteger(message.endTimeUnixNano.high)))\n return \"endTimeUnixNano: integer|Long expected\";\n if (message.attributes != null && message.hasOwnProperty(\"attributes\")) {\n if (!Array.isArray(message.attributes))\n return \"attributes: array expected\";\n for (var i = 0; i < message.attributes.length; ++i) {\n var error = $root.opentelemetry.proto.common.v1.KeyValue.verify(message.attributes[i]);\n if (error)\n return \"attributes.\" + error;\n }\n }\n if (message.droppedAttributesCount != null && message.hasOwnProperty(\"droppedAttributesCount\"))\n if (!$util.isInteger(message.droppedAttributesCount))\n return \"droppedAttributesCount: integer expected\";\n if (message.events != null && message.hasOwnProperty(\"events\")) {\n if (!Array.isArray(message.events))\n return \"events: array expected\";\n for (var i = 0; i < message.events.length; ++i) {\n var error = $root.opentelemetry.proto.trace.v1.Span.Event.verify(message.events[i]);\n if (error)\n return \"events.\" + error;\n }\n }\n if (message.droppedEventsCount != null && message.hasOwnProperty(\"droppedEventsCount\"))\n if (!$util.isInteger(message.droppedEventsCount))\n return \"droppedEventsCount: integer expected\";\n if (message.links != null && message.hasOwnProperty(\"links\")) {\n if (!Array.isArray(message.links))\n return \"links: array expected\";\n for (var i = 0; i < message.links.length; ++i) {\n var error = $root.opentelemetry.proto.trace.v1.Span.Link.verify(message.links[i]);\n if (error)\n return \"links.\" + error;\n }\n }\n if (message.droppedLinksCount != null && message.hasOwnProperty(\"droppedLinksCount\"))\n if (!$util.isInteger(message.droppedLinksCount))\n return \"droppedLinksCount: integer expected\";\n if (message.status != null && message.hasOwnProperty(\"status\")) {\n var error = $root.opentelemetry.proto.trace.v1.Status.verify(message.status);\n if (error)\n return \"status.\" + error;\n }\n return null;\n };\n /**\n * Creates a Span message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof opentelemetry.proto.trace.v1.Span\n * @static\n * @param {Object.} object Plain object\n * @returns {opentelemetry.proto.trace.v1.Span} Span\n */\n Span.fromObject = function fromObject(object) {\n if (object instanceof $root.opentelemetry.proto.trace.v1.Span)\n return object;\n var message = new $root.opentelemetry.proto.trace.v1.Span();\n if (object.traceId != null)\n if (typeof object.traceId === \"string\")\n $util.base64.decode(object.traceId, message.traceId = $util.newBuffer($util.base64.length(object.traceId)), 0);\n else if (object.traceId.length >= 0)\n message.traceId = object.traceId;\n if (object.spanId != null)\n if (typeof object.spanId === \"string\")\n $util.base64.decode(object.spanId, message.spanId = $util.newBuffer($util.base64.length(object.spanId)), 0);\n else if (object.spanId.length >= 0)\n message.spanId = object.spanId;\n if (object.traceState != null)\n message.traceState = String(object.traceState);\n if (object.parentSpanId != null)\n if (typeof object.parentSpanId === \"string\")\n $util.base64.decode(object.parentSpanId, message.parentSpanId = $util.newBuffer($util.base64.length(object.parentSpanId)), 0);\n else if (object.parentSpanId.length >= 0)\n message.parentSpanId = object.parentSpanId;\n if (object.name != null)\n message.name = String(object.name);\n switch (object.kind) {\n default:\n if (typeof object.kind === \"number\") {\n message.kind = object.kind;\n break;\n }\n break;\n case \"SPAN_KIND_UNSPECIFIED\":\n case 0:\n message.kind = 0;\n break;\n case \"SPAN_KIND_INTERNAL\":\n case 1:\n message.kind = 1;\n break;\n case \"SPAN_KIND_SERVER\":\n case 2:\n message.kind = 2;\n break;\n case \"SPAN_KIND_CLIENT\":\n case 3:\n message.kind = 3;\n break;\n case \"SPAN_KIND_PRODUCER\":\n case 4:\n message.kind = 4;\n break;\n case \"SPAN_KIND_CONSUMER\":\n case 5:\n message.kind = 5;\n break;\n }\n if (object.startTimeUnixNano != null)\n if ($util.Long)\n (message.startTimeUnixNano = $util.Long.fromValue(object.startTimeUnixNano)).unsigned = false;\n else if (typeof object.startTimeUnixNano === \"string\")\n message.startTimeUnixNano = parseInt(object.startTimeUnixNano, 10);\n else if (typeof object.startTimeUnixNano === \"number\")\n message.startTimeUnixNano = object.startTimeUnixNano;\n else if (typeof object.startTimeUnixNano === \"object\")\n message.startTimeUnixNano = new $util.LongBits(object.startTimeUnixNano.low >>> 0, object.startTimeUnixNano.high >>> 0).toNumber();\n if (object.endTimeUnixNano != null)\n if ($util.Long)\n (message.endTimeUnixNano = $util.Long.fromValue(object.endTimeUnixNano)).unsigned = false;\n else if (typeof object.endTimeUnixNano === \"string\")\n message.endTimeUnixNano = parseInt(object.endTimeUnixNano, 10);\n else if (typeof object.endTimeUnixNano === \"number\")\n message.endTimeUnixNano = object.endTimeUnixNano;\n else if (typeof object.endTimeUnixNano === \"object\")\n message.endTimeUnixNano = new $util.LongBits(object.endTimeUnixNano.low >>> 0, object.endTimeUnixNano.high >>> 0).toNumber();\n if (object.attributes) {\n if (!Array.isArray(object.attributes))\n throw TypeError(\".opentelemetry.proto.trace.v1.Span.attributes: array expected\");\n message.attributes = [];\n for (var i = 0; i < object.attributes.length; ++i) {\n if (typeof object.attributes[i] !== \"object\")\n throw TypeError(\".opentelemetry.proto.trace.v1.Span.attributes: object expected\");\n message.attributes[i] = $root.opentelemetry.proto.common.v1.KeyValue.fromObject(object.attributes[i]);\n }\n }\n if (object.droppedAttributesCount != null)\n message.droppedAttributesCount = object.droppedAttributesCount >>> 0;\n if (object.events) {\n if (!Array.isArray(object.events))\n throw TypeError(\".opentelemetry.proto.trace.v1.Span.events: array expected\");\n message.events = [];\n for (var i = 0; i < object.events.length; ++i) {\n if (typeof object.events[i] !== \"object\")\n throw TypeError(\".opentelemetry.proto.trace.v1.Span.events: object expected\");\n message.events[i] = $root.opentelemetry.proto.trace.v1.Span.Event.fromObject(object.events[i]);\n }\n }\n if (object.droppedEventsCount != null)\n message.droppedEventsCount = object.droppedEventsCount >>> 0;\n if (object.links) {\n if (!Array.isArray(object.links))\n throw TypeError(\".opentelemetry.proto.trace.v1.Span.links: array expected\");\n message.links = [];\n for (var i = 0; i < object.links.length; ++i) {\n if (typeof object.links[i] !== \"object\")\n throw TypeError(\".opentelemetry.proto.trace.v1.Span.links: object expected\");\n message.links[i] = $root.opentelemetry.proto.trace.v1.Span.Link.fromObject(object.links[i]);\n }\n }\n if (object.droppedLinksCount != null)\n message.droppedLinksCount = object.droppedLinksCount >>> 0;\n if (object.status != null) {\n if (typeof object.status !== \"object\")\n throw TypeError(\".opentelemetry.proto.trace.v1.Span.status: object expected\");\n message.status = $root.opentelemetry.proto.trace.v1.Status.fromObject(object.status);\n }\n return message;\n };\n /**\n * Creates a plain object from a Span message. Also converts values to other types if specified.\n * @function toObject\n * @memberof opentelemetry.proto.trace.v1.Span\n * @static\n * @param {opentelemetry.proto.trace.v1.Span} message Span\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n Span.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n var object = {};\n if (options.arrays || options.defaults) {\n object.attributes = [];\n object.events = [];\n object.links = [];\n }\n if (options.defaults) {\n if (options.bytes === String)\n object.traceId = \"\";\n else {\n object.traceId = [];\n if (options.bytes !== Array)\n object.traceId = $util.newBuffer(object.traceId);\n }\n if (options.bytes === String)\n object.spanId = \"\";\n else {\n object.spanId = [];\n if (options.bytes !== Array)\n object.spanId = $util.newBuffer(object.spanId);\n }\n object.traceState = \"\";\n if (options.bytes === String)\n object.parentSpanId = \"\";\n else {\n object.parentSpanId = [];\n if (options.bytes !== Array)\n object.parentSpanId = $util.newBuffer(object.parentSpanId);\n }\n object.name = \"\";\n object.kind = options.enums === String ? \"SPAN_KIND_UNSPECIFIED\" : 0;\n if ($util.Long) {\n var long = new $util.Long(0, 0, false);\n object.startTimeUnixNano = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n }\n else\n object.startTimeUnixNano = options.longs === String ? \"0\" : 0;\n if ($util.Long) {\n var long = new $util.Long(0, 0, false);\n object.endTimeUnixNano = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n }\n else\n object.endTimeUnixNano = options.longs === String ? \"0\" : 0;\n object.droppedAttributesCount = 0;\n object.droppedEventsCount = 0;\n object.droppedLinksCount = 0;\n object.status = null;\n }\n if (message.traceId != null && message.hasOwnProperty(\"traceId\"))\n object.traceId = options.bytes === String ? $util.base64.encode(message.traceId, 0, message.traceId.length) : options.bytes === Array ? Array.prototype.slice.call(message.traceId) : message.traceId;\n if (message.spanId != null && message.hasOwnProperty(\"spanId\"))\n object.spanId = options.bytes === String ? $util.base64.encode(message.spanId, 0, message.spanId.length) : options.bytes === Array ? Array.prototype.slice.call(message.spanId) : message.spanId;\n if (message.traceState != null && message.hasOwnProperty(\"traceState\"))\n object.traceState = message.traceState;\n if (message.parentSpanId != null && message.hasOwnProperty(\"parentSpanId\"))\n object.parentSpanId = options.bytes === String ? $util.base64.encode(message.parentSpanId, 0, message.parentSpanId.length) : options.bytes === Array ? Array.prototype.slice.call(message.parentSpanId) : message.parentSpanId;\n if (message.name != null && message.hasOwnProperty(\"name\"))\n object.name = message.name;\n if (message.kind != null && message.hasOwnProperty(\"kind\"))\n object.kind = options.enums === String ? $root.opentelemetry.proto.trace.v1.Span.SpanKind[message.kind] === undefined ? message.kind : $root.opentelemetry.proto.trace.v1.Span.SpanKind[message.kind] : message.kind;\n if (message.startTimeUnixNano != null && message.hasOwnProperty(\"startTimeUnixNano\"))\n if (typeof message.startTimeUnixNano === \"number\")\n object.startTimeUnixNano = options.longs === String ? String(message.startTimeUnixNano) : message.startTimeUnixNano;\n else\n object.startTimeUnixNano = options.longs === String ? $util.Long.prototype.toString.call(message.startTimeUnixNano) : options.longs === Number ? new $util.LongBits(message.startTimeUnixNano.low >>> 0, message.startTimeUnixNano.high >>> 0).toNumber() : message.startTimeUnixNano;\n if (message.endTimeUnixNano != null && message.hasOwnProperty(\"endTimeUnixNano\"))\n if (typeof message.endTimeUnixNano === \"number\")\n object.endTimeUnixNano = options.longs === String ? String(message.endTimeUnixNano) : message.endTimeUnixNano;\n else\n object.endTimeUnixNano = options.longs === String ? $util.Long.prototype.toString.call(message.endTimeUnixNano) : options.longs === Number ? new $util.LongBits(message.endTimeUnixNano.low >>> 0, message.endTimeUnixNano.high >>> 0).toNumber() : message.endTimeUnixNano;\n if (message.attributes && message.attributes.length) {\n object.attributes = [];\n for (var j = 0; j < message.attributes.length; ++j)\n object.attributes[j] = $root.opentelemetry.proto.common.v1.KeyValue.toObject(message.attributes[j], options);\n }\n if (message.droppedAttributesCount != null && message.hasOwnProperty(\"droppedAttributesCount\"))\n object.droppedAttributesCount = message.droppedAttributesCount;\n if (message.events && message.events.length) {\n object.events = [];\n for (var j = 0; j < message.events.length; ++j)\n object.events[j] = $root.opentelemetry.proto.trace.v1.Span.Event.toObject(message.events[j], options);\n }\n if (message.droppedEventsCount != null && message.hasOwnProperty(\"droppedEventsCount\"))\n object.droppedEventsCount = message.droppedEventsCount;\n if (message.links && message.links.length) {\n object.links = [];\n for (var j = 0; j < message.links.length; ++j)\n object.links[j] = $root.opentelemetry.proto.trace.v1.Span.Link.toObject(message.links[j], options);\n }\n if (message.droppedLinksCount != null && message.hasOwnProperty(\"droppedLinksCount\"))\n object.droppedLinksCount = message.droppedLinksCount;\n if (message.status != null && message.hasOwnProperty(\"status\"))\n object.status = $root.opentelemetry.proto.trace.v1.Status.toObject(message.status, options);\n return object;\n };\n /**\n * Converts this Span to JSON.\n * @function toJSON\n * @memberof opentelemetry.proto.trace.v1.Span\n * @instance\n * @returns {Object.} JSON object\n */\n Span.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n /**\n * Gets the default type url for Span\n * @function getTypeUrl\n * @memberof opentelemetry.proto.trace.v1.Span\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n Span.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = \"type.googleapis.com\";\n }\n return typeUrlPrefix + \"/opentelemetry.proto.trace.v1.Span\";\n };\n /**\n * SpanKind enum.\n * @name opentelemetry.proto.trace.v1.Span.SpanKind\n * @enum {number}\n * @property {number} SPAN_KIND_UNSPECIFIED=0 SPAN_KIND_UNSPECIFIED value\n * @property {number} SPAN_KIND_INTERNAL=1 SPAN_KIND_INTERNAL value\n * @property {number} SPAN_KIND_SERVER=2 SPAN_KIND_SERVER value\n * @property {number} SPAN_KIND_CLIENT=3 SPAN_KIND_CLIENT value\n * @property {number} SPAN_KIND_PRODUCER=4 SPAN_KIND_PRODUCER value\n * @property {number} SPAN_KIND_CONSUMER=5 SPAN_KIND_CONSUMER value\n */\n Span.SpanKind = (function () {\n var valuesById = {}, values = Object.create(valuesById);\n values[valuesById[0] = \"SPAN_KIND_UNSPECIFIED\"] = 0;\n values[valuesById[1] = \"SPAN_KIND_INTERNAL\"] = 1;\n values[valuesById[2] = \"SPAN_KIND_SERVER\"] = 2;\n values[valuesById[3] = \"SPAN_KIND_CLIENT\"] = 3;\n values[valuesById[4] = \"SPAN_KIND_PRODUCER\"] = 4;\n values[valuesById[5] = \"SPAN_KIND_CONSUMER\"] = 5;\n return values;\n })();\n Span.Event = (function () {\n /**\n * Properties of an Event.\n * @memberof opentelemetry.proto.trace.v1.Span\n * @interface IEvent\n * @property {number|Long|null} [timeUnixNano] Event timeUnixNano\n * @property {string|null} [name] Event name\n * @property {Array.|null} [attributes] Event attributes\n * @property {number|null} [droppedAttributesCount] Event droppedAttributesCount\n */\n /**\n * Constructs a new Event.\n * @memberof opentelemetry.proto.trace.v1.Span\n * @classdesc Represents an Event.\n * @implements IEvent\n * @constructor\n * @param {opentelemetry.proto.trace.v1.Span.IEvent=} [properties] Properties to set\n */\n function Event(properties) {\n this.attributes = [];\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n /**\n * Event timeUnixNano.\n * @member {number|Long|null|undefined} timeUnixNano\n * @memberof opentelemetry.proto.trace.v1.Span.Event\n * @instance\n */\n Event.prototype.timeUnixNano = null;\n /**\n * Event name.\n * @member {string|null|undefined} name\n * @memberof opentelemetry.proto.trace.v1.Span.Event\n * @instance\n */\n Event.prototype.name = null;\n /**\n * Event attributes.\n * @member {Array.} attributes\n * @memberof opentelemetry.proto.trace.v1.Span.Event\n * @instance\n */\n Event.prototype.attributes = $util.emptyArray;\n /**\n * Event droppedAttributesCount.\n * @member {number|null|undefined} droppedAttributesCount\n * @memberof opentelemetry.proto.trace.v1.Span.Event\n * @instance\n */\n Event.prototype.droppedAttributesCount = null;\n /**\n * Creates a new Event instance using the specified properties.\n * @function create\n * @memberof opentelemetry.proto.trace.v1.Span.Event\n * @static\n * @param {opentelemetry.proto.trace.v1.Span.IEvent=} [properties] Properties to set\n * @returns {opentelemetry.proto.trace.v1.Span.Event} Event instance\n */\n Event.create = function create(properties) {\n return new Event(properties);\n };\n /**\n * Encodes the specified Event message. Does not implicitly {@link opentelemetry.proto.trace.v1.Span.Event.verify|verify} messages.\n * @function encode\n * @memberof opentelemetry.proto.trace.v1.Span.Event\n * @static\n * @param {opentelemetry.proto.trace.v1.Span.IEvent} message Event message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Event.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.timeUnixNano != null && Object.hasOwnProperty.call(message, \"timeUnixNano\"))\n writer.uint32(/* id 1, wireType 1 =*/ 9).fixed64(message.timeUnixNano);\n if (message.name != null && Object.hasOwnProperty.call(message, \"name\"))\n writer.uint32(/* id 2, wireType 2 =*/ 18).string(message.name);\n if (message.attributes != null && message.attributes.length)\n for (var i = 0; i < message.attributes.length; ++i)\n $root.opentelemetry.proto.common.v1.KeyValue.encode(message.attributes[i], writer.uint32(/* id 3, wireType 2 =*/ 26).fork()).ldelim();\n if (message.droppedAttributesCount != null && Object.hasOwnProperty.call(message, \"droppedAttributesCount\"))\n writer.uint32(/* id 4, wireType 0 =*/ 32).uint32(message.droppedAttributesCount);\n return writer;\n };\n /**\n * Encodes the specified Event message, length delimited. Does not implicitly {@link opentelemetry.proto.trace.v1.Span.Event.verify|verify} messages.\n * @function encodeDelimited\n * @memberof opentelemetry.proto.trace.v1.Span.Event\n * @static\n * @param {opentelemetry.proto.trace.v1.Span.IEvent} message Event message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Event.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n /**\n * Decodes an Event message from the specified reader or buffer.\n * @function decode\n * @memberof opentelemetry.proto.trace.v1.Span.Event\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {opentelemetry.proto.trace.v1.Span.Event} Event\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Event.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.opentelemetry.proto.trace.v1.Span.Event();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n message.timeUnixNano = reader.fixed64();\n break;\n }\n case 2: {\n message.name = reader.string();\n break;\n }\n case 3: {\n if (!(message.attributes && message.attributes.length))\n message.attributes = [];\n message.attributes.push($root.opentelemetry.proto.common.v1.KeyValue.decode(reader, reader.uint32()));\n break;\n }\n case 4: {\n message.droppedAttributesCount = reader.uint32();\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n /**\n * Decodes an Event message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof opentelemetry.proto.trace.v1.Span.Event\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {opentelemetry.proto.trace.v1.Span.Event} Event\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Event.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n /**\n * Verifies an Event message.\n * @function verify\n * @memberof opentelemetry.proto.trace.v1.Span.Event\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n Event.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.timeUnixNano != null && message.hasOwnProperty(\"timeUnixNano\"))\n if (!$util.isInteger(message.timeUnixNano) && !(message.timeUnixNano && $util.isInteger(message.timeUnixNano.low) && $util.isInteger(message.timeUnixNano.high)))\n return \"timeUnixNano: integer|Long expected\";\n if (message.name != null && message.hasOwnProperty(\"name\"))\n if (!$util.isString(message.name))\n return \"name: string expected\";\n if (message.attributes != null && message.hasOwnProperty(\"attributes\")) {\n if (!Array.isArray(message.attributes))\n return \"attributes: array expected\";\n for (var i = 0; i < message.attributes.length; ++i) {\n var error = $root.opentelemetry.proto.common.v1.KeyValue.verify(message.attributes[i]);\n if (error)\n return \"attributes.\" + error;\n }\n }\n if (message.droppedAttributesCount != null && message.hasOwnProperty(\"droppedAttributesCount\"))\n if (!$util.isInteger(message.droppedAttributesCount))\n return \"droppedAttributesCount: integer expected\";\n return null;\n };\n /**\n * Creates an Event message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof opentelemetry.proto.trace.v1.Span.Event\n * @static\n * @param {Object.} object Plain object\n * @returns {opentelemetry.proto.trace.v1.Span.Event} Event\n */\n Event.fromObject = function fromObject(object) {\n if (object instanceof $root.opentelemetry.proto.trace.v1.Span.Event)\n return object;\n var message = new $root.opentelemetry.proto.trace.v1.Span.Event();\n if (object.timeUnixNano != null)\n if ($util.Long)\n (message.timeUnixNano = $util.Long.fromValue(object.timeUnixNano)).unsigned = false;\n else if (typeof object.timeUnixNano === \"string\")\n message.timeUnixNano = parseInt(object.timeUnixNano, 10);\n else if (typeof object.timeUnixNano === \"number\")\n message.timeUnixNano = object.timeUnixNano;\n else if (typeof object.timeUnixNano === \"object\")\n message.timeUnixNano = new $util.LongBits(object.timeUnixNano.low >>> 0, object.timeUnixNano.high >>> 0).toNumber();\n if (object.name != null)\n message.name = String(object.name);\n if (object.attributes) {\n if (!Array.isArray(object.attributes))\n throw TypeError(\".opentelemetry.proto.trace.v1.Span.Event.attributes: array expected\");\n message.attributes = [];\n for (var i = 0; i < object.attributes.length; ++i) {\n if (typeof object.attributes[i] !== \"object\")\n throw TypeError(\".opentelemetry.proto.trace.v1.Span.Event.attributes: object expected\");\n message.attributes[i] = $root.opentelemetry.proto.common.v1.KeyValue.fromObject(object.attributes[i]);\n }\n }\n if (object.droppedAttributesCount != null)\n message.droppedAttributesCount = object.droppedAttributesCount >>> 0;\n return message;\n };\n /**\n * Creates a plain object from an Event message. Also converts values to other types if specified.\n * @function toObject\n * @memberof opentelemetry.proto.trace.v1.Span.Event\n * @static\n * @param {opentelemetry.proto.trace.v1.Span.Event} message Event\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n Event.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n var object = {};\n if (options.arrays || options.defaults)\n object.attributes = [];\n if (options.defaults) {\n if ($util.Long) {\n var long = new $util.Long(0, 0, false);\n object.timeUnixNano = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n }\n else\n object.timeUnixNano = options.longs === String ? \"0\" : 0;\n object.name = \"\";\n object.droppedAttributesCount = 0;\n }\n if (message.timeUnixNano != null && message.hasOwnProperty(\"timeUnixNano\"))\n if (typeof message.timeUnixNano === \"number\")\n object.timeUnixNano = options.longs === String ? String(message.timeUnixNano) : message.timeUnixNano;\n else\n object.timeUnixNano = options.longs === String ? $util.Long.prototype.toString.call(message.timeUnixNano) : options.longs === Number ? new $util.LongBits(message.timeUnixNano.low >>> 0, message.timeUnixNano.high >>> 0).toNumber() : message.timeUnixNano;\n if (message.name != null && message.hasOwnProperty(\"name\"))\n object.name = message.name;\n if (message.attributes && message.attributes.length) {\n object.attributes = [];\n for (var j = 0; j < message.attributes.length; ++j)\n object.attributes[j] = $root.opentelemetry.proto.common.v1.KeyValue.toObject(message.attributes[j], options);\n }\n if (message.droppedAttributesCount != null && message.hasOwnProperty(\"droppedAttributesCount\"))\n object.droppedAttributesCount = message.droppedAttributesCount;\n return object;\n };\n /**\n * Converts this Event to JSON.\n * @function toJSON\n * @memberof opentelemetry.proto.trace.v1.Span.Event\n * @instance\n * @returns {Object.} JSON object\n */\n Event.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n /**\n * Gets the default type url for Event\n * @function getTypeUrl\n * @memberof opentelemetry.proto.trace.v1.Span.Event\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n Event.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = \"type.googleapis.com\";\n }\n return typeUrlPrefix + \"/opentelemetry.proto.trace.v1.Span.Event\";\n };\n return Event;\n })();\n Span.Link = (function () {\n /**\n * Properties of a Link.\n * @memberof opentelemetry.proto.trace.v1.Span\n * @interface ILink\n * @property {Uint8Array|null} [traceId] Link traceId\n * @property {Uint8Array|null} [spanId] Link spanId\n * @property {string|null} [traceState] Link traceState\n * @property {Array.|null} [attributes] Link attributes\n * @property {number|null} [droppedAttributesCount] Link droppedAttributesCount\n */\n /**\n * Constructs a new Link.\n * @memberof opentelemetry.proto.trace.v1.Span\n * @classdesc Represents a Link.\n * @implements ILink\n * @constructor\n * @param {opentelemetry.proto.trace.v1.Span.ILink=} [properties] Properties to set\n */\n function Link(properties) {\n this.attributes = [];\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n /**\n * Link traceId.\n * @member {Uint8Array|null|undefined} traceId\n * @memberof opentelemetry.proto.trace.v1.Span.Link\n * @instance\n */\n Link.prototype.traceId = null;\n /**\n * Link spanId.\n * @member {Uint8Array|null|undefined} spanId\n * @memberof opentelemetry.proto.trace.v1.Span.Link\n * @instance\n */\n Link.prototype.spanId = null;\n /**\n * Link traceState.\n * @member {string|null|undefined} traceState\n * @memberof opentelemetry.proto.trace.v1.Span.Link\n * @instance\n */\n Link.prototype.traceState = null;\n /**\n * Link attributes.\n * @member {Array.} attributes\n * @memberof opentelemetry.proto.trace.v1.Span.Link\n * @instance\n */\n Link.prototype.attributes = $util.emptyArray;\n /**\n * Link droppedAttributesCount.\n * @member {number|null|undefined} droppedAttributesCount\n * @memberof opentelemetry.proto.trace.v1.Span.Link\n * @instance\n */\n Link.prototype.droppedAttributesCount = null;\n /**\n * Creates a new Link instance using the specified properties.\n * @function create\n * @memberof opentelemetry.proto.trace.v1.Span.Link\n * @static\n * @param {opentelemetry.proto.trace.v1.Span.ILink=} [properties] Properties to set\n * @returns {opentelemetry.proto.trace.v1.Span.Link} Link instance\n */\n Link.create = function create(properties) {\n return new Link(properties);\n };\n /**\n * Encodes the specified Link message. Does not implicitly {@link opentelemetry.proto.trace.v1.Span.Link.verify|verify} messages.\n * @function encode\n * @memberof opentelemetry.proto.trace.v1.Span.Link\n * @static\n * @param {opentelemetry.proto.trace.v1.Span.ILink} message Link message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Link.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.traceId != null && Object.hasOwnProperty.call(message, \"traceId\"))\n writer.uint32(/* id 1, wireType 2 =*/ 10).bytes(message.traceId);\n if (message.spanId != null && Object.hasOwnProperty.call(message, \"spanId\"))\n writer.uint32(/* id 2, wireType 2 =*/ 18).bytes(message.spanId);\n if (message.traceState != null && Object.hasOwnProperty.call(message, \"traceState\"))\n writer.uint32(/* id 3, wireType 2 =*/ 26).string(message.traceState);\n if (message.attributes != null && message.attributes.length)\n for (var i = 0; i < message.attributes.length; ++i)\n $root.opentelemetry.proto.common.v1.KeyValue.encode(message.attributes[i], writer.uint32(/* id 4, wireType 2 =*/ 34).fork()).ldelim();\n if (message.droppedAttributesCount != null && Object.hasOwnProperty.call(message, \"droppedAttributesCount\"))\n writer.uint32(/* id 5, wireType 0 =*/ 40).uint32(message.droppedAttributesCount);\n return writer;\n };\n /**\n * Encodes the specified Link message, length delimited. Does not implicitly {@link opentelemetry.proto.trace.v1.Span.Link.verify|verify} messages.\n * @function encodeDelimited\n * @memberof opentelemetry.proto.trace.v1.Span.Link\n * @static\n * @param {opentelemetry.proto.trace.v1.Span.ILink} message Link message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Link.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n /**\n * Decodes a Link message from the specified reader or buffer.\n * @function decode\n * @memberof opentelemetry.proto.trace.v1.Span.Link\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {opentelemetry.proto.trace.v1.Span.Link} Link\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Link.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.opentelemetry.proto.trace.v1.Span.Link();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n message.traceId = reader.bytes();\n break;\n }\n case 2: {\n message.spanId = reader.bytes();\n break;\n }\n case 3: {\n message.traceState = reader.string();\n break;\n }\n case 4: {\n if (!(message.attributes && message.attributes.length))\n message.attributes = [];\n message.attributes.push($root.opentelemetry.proto.common.v1.KeyValue.decode(reader, reader.uint32()));\n break;\n }\n case 5: {\n message.droppedAttributesCount = reader.uint32();\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n /**\n * Decodes a Link message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof opentelemetry.proto.trace.v1.Span.Link\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {opentelemetry.proto.trace.v1.Span.Link} Link\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Link.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n /**\n * Verifies a Link message.\n * @function verify\n * @memberof opentelemetry.proto.trace.v1.Span.Link\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n Link.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.traceId != null && message.hasOwnProperty(\"traceId\"))\n if (!(message.traceId && typeof message.traceId.length === \"number\" || $util.isString(message.traceId)))\n return \"traceId: buffer expected\";\n if (message.spanId != null && message.hasOwnProperty(\"spanId\"))\n if (!(message.spanId && typeof message.spanId.length === \"number\" || $util.isString(message.spanId)))\n return \"spanId: buffer expected\";\n if (message.traceState != null && message.hasOwnProperty(\"traceState\"))\n if (!$util.isString(message.traceState))\n return \"traceState: string expected\";\n if (message.attributes != null && message.hasOwnProperty(\"attributes\")) {\n if (!Array.isArray(message.attributes))\n return \"attributes: array expected\";\n for (var i = 0; i < message.attributes.length; ++i) {\n var error = $root.opentelemetry.proto.common.v1.KeyValue.verify(message.attributes[i]);\n if (error)\n return \"attributes.\" + error;\n }\n }\n if (message.droppedAttributesCount != null && message.hasOwnProperty(\"droppedAttributesCount\"))\n if (!$util.isInteger(message.droppedAttributesCount))\n return \"droppedAttributesCount: integer expected\";\n return null;\n };\n /**\n * Creates a Link message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof opentelemetry.proto.trace.v1.Span.Link\n * @static\n * @param {Object.} object Plain object\n * @returns {opentelemetry.proto.trace.v1.Span.Link} Link\n */\n Link.fromObject = function fromObject(object) {\n if (object instanceof $root.opentelemetry.proto.trace.v1.Span.Link)\n return object;\n var message = new $root.opentelemetry.proto.trace.v1.Span.Link();\n if (object.traceId != null)\n if (typeof object.traceId === \"string\")\n $util.base64.decode(object.traceId, message.traceId = $util.newBuffer($util.base64.length(object.traceId)), 0);\n else if (object.traceId.length >= 0)\n message.traceId = object.traceId;\n if (object.spanId != null)\n if (typeof object.spanId === \"string\")\n $util.base64.decode(object.spanId, message.spanId = $util.newBuffer($util.base64.length(object.spanId)), 0);\n else if (object.spanId.length >= 0)\n message.spanId = object.spanId;\n if (object.traceState != null)\n message.traceState = String(object.traceState);\n if (object.attributes) {\n if (!Array.isArray(object.attributes))\n throw TypeError(\".opentelemetry.proto.trace.v1.Span.Link.attributes: array expected\");\n message.attributes = [];\n for (var i = 0; i < object.attributes.length; ++i) {\n if (typeof object.attributes[i] !== \"object\")\n throw TypeError(\".opentelemetry.proto.trace.v1.Span.Link.attributes: object expected\");\n message.attributes[i] = $root.opentelemetry.proto.common.v1.KeyValue.fromObject(object.attributes[i]);\n }\n }\n if (object.droppedAttributesCount != null)\n message.droppedAttributesCount = object.droppedAttributesCount >>> 0;\n return message;\n };\n /**\n * Creates a plain object from a Link message. Also converts values to other types if specified.\n * @function toObject\n * @memberof opentelemetry.proto.trace.v1.Span.Link\n * @static\n * @param {opentelemetry.proto.trace.v1.Span.Link} message Link\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n Link.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n var object = {};\n if (options.arrays || options.defaults)\n object.attributes = [];\n if (options.defaults) {\n if (options.bytes === String)\n object.traceId = \"\";\n else {\n object.traceId = [];\n if (options.bytes !== Array)\n object.traceId = $util.newBuffer(object.traceId);\n }\n if (options.bytes === String)\n object.spanId = \"\";\n else {\n object.spanId = [];\n if (options.bytes !== Array)\n object.spanId = $util.newBuffer(object.spanId);\n }\n object.traceState = \"\";\n object.droppedAttributesCount = 0;\n }\n if (message.traceId != null && message.hasOwnProperty(\"traceId\"))\n object.traceId = options.bytes === String ? $util.base64.encode(message.traceId, 0, message.traceId.length) : options.bytes === Array ? Array.prototype.slice.call(message.traceId) : message.traceId;\n if (message.spanId != null && message.hasOwnProperty(\"spanId\"))\n object.spanId = options.bytes === String ? $util.base64.encode(message.spanId, 0, message.spanId.length) : options.bytes === Array ? Array.prototype.slice.call(message.spanId) : message.spanId;\n if (message.traceState != null && message.hasOwnProperty(\"traceState\"))\n object.traceState = message.traceState;\n if (message.attributes && message.attributes.length) {\n object.attributes = [];\n for (var j = 0; j < message.attributes.length; ++j)\n object.attributes[j] = $root.opentelemetry.proto.common.v1.KeyValue.toObject(message.attributes[j], options);\n }\n if (message.droppedAttributesCount != null && message.hasOwnProperty(\"droppedAttributesCount\"))\n object.droppedAttributesCount = message.droppedAttributesCount;\n return object;\n };\n /**\n * Converts this Link to JSON.\n * @function toJSON\n * @memberof opentelemetry.proto.trace.v1.Span.Link\n * @instance\n * @returns {Object.} JSON object\n */\n Link.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n /**\n * Gets the default type url for Link\n * @function getTypeUrl\n * @memberof opentelemetry.proto.trace.v1.Span.Link\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n Link.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = \"type.googleapis.com\";\n }\n return typeUrlPrefix + \"/opentelemetry.proto.trace.v1.Span.Link\";\n };\n return Link;\n })();\n return Span;\n })();\n v1.Status = (function () {\n /**\n * Properties of a Status.\n * @memberof opentelemetry.proto.trace.v1\n * @interface IStatus\n * @property {string|null} [message] Status message\n * @property {opentelemetry.proto.trace.v1.Status.StatusCode|null} [code] Status code\n */\n /**\n * Constructs a new Status.\n * @memberof opentelemetry.proto.trace.v1\n * @classdesc Represents a Status.\n * @implements IStatus\n * @constructor\n * @param {opentelemetry.proto.trace.v1.IStatus=} [properties] Properties to set\n */\n function Status(properties) {\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n /**\n * Status message.\n * @member {string|null|undefined} message\n * @memberof opentelemetry.proto.trace.v1.Status\n * @instance\n */\n Status.prototype.message = null;\n /**\n * Status code.\n * @member {opentelemetry.proto.trace.v1.Status.StatusCode|null|undefined} code\n * @memberof opentelemetry.proto.trace.v1.Status\n * @instance\n */\n Status.prototype.code = null;\n /**\n * Creates a new Status instance using the specified properties.\n * @function create\n * @memberof opentelemetry.proto.trace.v1.Status\n * @static\n * @param {opentelemetry.proto.trace.v1.IStatus=} [properties] Properties to set\n * @returns {opentelemetry.proto.trace.v1.Status} Status instance\n */\n Status.create = function create(properties) {\n return new Status(properties);\n };\n /**\n * Encodes the specified Status message. Does not implicitly {@link opentelemetry.proto.trace.v1.Status.verify|verify} messages.\n * @function encode\n * @memberof opentelemetry.proto.trace.v1.Status\n * @static\n * @param {opentelemetry.proto.trace.v1.IStatus} message Status message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Status.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.message != null && Object.hasOwnProperty.call(message, \"message\"))\n writer.uint32(/* id 2, wireType 2 =*/ 18).string(message.message);\n if (message.code != null && Object.hasOwnProperty.call(message, \"code\"))\n writer.uint32(/* id 3, wireType 0 =*/ 24).int32(message.code);\n return writer;\n };\n /**\n * Encodes the specified Status message, length delimited. Does not implicitly {@link opentelemetry.proto.trace.v1.Status.verify|verify} messages.\n * @function encodeDelimited\n * @memberof opentelemetry.proto.trace.v1.Status\n * @static\n * @param {opentelemetry.proto.trace.v1.IStatus} message Status message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Status.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n /**\n * Decodes a Status message from the specified reader or buffer.\n * @function decode\n * @memberof opentelemetry.proto.trace.v1.Status\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {opentelemetry.proto.trace.v1.Status} Status\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Status.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.opentelemetry.proto.trace.v1.Status();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 2: {\n message.message = reader.string();\n break;\n }\n case 3: {\n message.code = reader.int32();\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n /**\n * Decodes a Status message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof opentelemetry.proto.trace.v1.Status\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {opentelemetry.proto.trace.v1.Status} Status\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Status.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n /**\n * Verifies a Status message.\n * @function verify\n * @memberof opentelemetry.proto.trace.v1.Status\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n Status.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.message != null && message.hasOwnProperty(\"message\"))\n if (!$util.isString(message.message))\n return \"message: string expected\";\n if (message.code != null && message.hasOwnProperty(\"code\"))\n switch (message.code) {\n default:\n return \"code: enum value expected\";\n case 0:\n case 1:\n case 2:\n break;\n }\n return null;\n };\n /**\n * Creates a Status message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof opentelemetry.proto.trace.v1.Status\n * @static\n * @param {Object.} object Plain object\n * @returns {opentelemetry.proto.trace.v1.Status} Status\n */\n Status.fromObject = function fromObject(object) {\n if (object instanceof $root.opentelemetry.proto.trace.v1.Status)\n return object;\n var message = new $root.opentelemetry.proto.trace.v1.Status();\n if (object.message != null)\n message.message = String(object.message);\n switch (object.code) {\n default:\n if (typeof object.code === \"number\") {\n message.code = object.code;\n break;\n }\n break;\n case \"STATUS_CODE_UNSET\":\n case 0:\n message.code = 0;\n break;\n case \"STATUS_CODE_OK\":\n case 1:\n message.code = 1;\n break;\n case \"STATUS_CODE_ERROR\":\n case 2:\n message.code = 2;\n break;\n }\n return message;\n };\n /**\n * Creates a plain object from a Status message. Also converts values to other types if specified.\n * @function toObject\n * @memberof opentelemetry.proto.trace.v1.Status\n * @static\n * @param {opentelemetry.proto.trace.v1.Status} message Status\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n Status.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n var object = {};\n if (options.defaults) {\n object.message = \"\";\n object.code = options.enums === String ? \"STATUS_CODE_UNSET\" : 0;\n }\n if (message.message != null && message.hasOwnProperty(\"message\"))\n object.message = message.message;\n if (message.code != null && message.hasOwnProperty(\"code\"))\n object.code = options.enums === String ? $root.opentelemetry.proto.trace.v1.Status.StatusCode[message.code] === undefined ? message.code : $root.opentelemetry.proto.trace.v1.Status.StatusCode[message.code] : message.code;\n return object;\n };\n /**\n * Converts this Status to JSON.\n * @function toJSON\n * @memberof opentelemetry.proto.trace.v1.Status\n * @instance\n * @returns {Object.} JSON object\n */\n Status.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n /**\n * Gets the default type url for Status\n * @function getTypeUrl\n * @memberof opentelemetry.proto.trace.v1.Status\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n Status.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = \"type.googleapis.com\";\n }\n return typeUrlPrefix + \"/opentelemetry.proto.trace.v1.Status\";\n };\n /**\n * StatusCode enum.\n * @name opentelemetry.proto.trace.v1.Status.StatusCode\n * @enum {number}\n * @property {number} STATUS_CODE_UNSET=0 STATUS_CODE_UNSET value\n * @property {number} STATUS_CODE_OK=1 STATUS_CODE_OK value\n * @property {number} STATUS_CODE_ERROR=2 STATUS_CODE_ERROR value\n */\n Status.StatusCode = (function () {\n var valuesById = {}, values = Object.create(valuesById);\n values[valuesById[0] = \"STATUS_CODE_UNSET\"] = 0;\n values[valuesById[1] = \"STATUS_CODE_OK\"] = 1;\n values[valuesById[2] = \"STATUS_CODE_ERROR\"] = 2;\n return values;\n })();\n return Status;\n })();\n return v1;\n })();\n return trace;\n })();\n proto.collector = (function () {\n /**\n * Namespace collector.\n * @memberof opentelemetry.proto\n * @namespace\n */\n var collector = {};\n collector.trace = (function () {\n /**\n * Namespace trace.\n * @memberof opentelemetry.proto.collector\n * @namespace\n */\n var trace = {};\n trace.v1 = (function () {\n /**\n * Namespace v1.\n * @memberof opentelemetry.proto.collector.trace\n * @namespace\n */\n var v1 = {};\n v1.TraceService = (function () {\n /**\n * Constructs a new TraceService service.\n * @memberof opentelemetry.proto.collector.trace.v1\n * @classdesc Represents a TraceService\n * @extends $protobuf.rpc.Service\n * @constructor\n * @param {$protobuf.RPCImpl} rpcImpl RPC implementation\n * @param {boolean} [requestDelimited=false] Whether requests are length-delimited\n * @param {boolean} [responseDelimited=false] Whether responses are length-delimited\n */\n function TraceService(rpcImpl, requestDelimited, responseDelimited) {\n $protobuf.rpc.Service.call(this, rpcImpl, requestDelimited, responseDelimited);\n }\n (TraceService.prototype = Object.create($protobuf.rpc.Service.prototype)).constructor = TraceService;\n /**\n * Creates new TraceService service using the specified rpc implementation.\n * @function create\n * @memberof opentelemetry.proto.collector.trace.v1.TraceService\n * @static\n * @param {$protobuf.RPCImpl} rpcImpl RPC implementation\n * @param {boolean} [requestDelimited=false] Whether requests are length-delimited\n * @param {boolean} [responseDelimited=false] Whether responses are length-delimited\n * @returns {TraceService} RPC service. Useful where requests and/or responses are streamed.\n */\n TraceService.create = function create(rpcImpl, requestDelimited, responseDelimited) {\n return new this(rpcImpl, requestDelimited, responseDelimited);\n };\n /**\n * Callback as used by {@link opentelemetry.proto.collector.trace.v1.TraceService#export_}.\n * @memberof opentelemetry.proto.collector.trace.v1.TraceService\n * @typedef ExportCallback\n * @type {function}\n * @param {Error|null} error Error, if any\n * @param {opentelemetry.proto.collector.trace.v1.ExportTraceServiceResponse} [response] ExportTraceServiceResponse\n */\n /**\n * Calls Export.\n * @function export\n * @memberof opentelemetry.proto.collector.trace.v1.TraceService\n * @instance\n * @param {opentelemetry.proto.collector.trace.v1.IExportTraceServiceRequest} request ExportTraceServiceRequest message or plain object\n * @param {opentelemetry.proto.collector.trace.v1.TraceService.ExportCallback} callback Node-style callback called with the error, if any, and ExportTraceServiceResponse\n * @returns {undefined}\n * @variation 1\n */\n Object.defineProperty(TraceService.prototype[\"export\"] = function export_(request, callback) {\n return this.rpcCall(export_, $root.opentelemetry.proto.collector.trace.v1.ExportTraceServiceRequest, $root.opentelemetry.proto.collector.trace.v1.ExportTraceServiceResponse, request, callback);\n }, \"name\", { value: \"Export\" });\n /**\n * Calls Export.\n * @function export\n * @memberof opentelemetry.proto.collector.trace.v1.TraceService\n * @instance\n * @param {opentelemetry.proto.collector.trace.v1.IExportTraceServiceRequest} request ExportTraceServiceRequest message or plain object\n * @returns {Promise} Promise\n * @variation 2\n */\n return TraceService;\n })();\n v1.ExportTraceServiceRequest = (function () {\n /**\n * Properties of an ExportTraceServiceRequest.\n * @memberof opentelemetry.proto.collector.trace.v1\n * @interface IExportTraceServiceRequest\n * @property {Array.|null} [resourceSpans] ExportTraceServiceRequest resourceSpans\n */\n /**\n * Constructs a new ExportTraceServiceRequest.\n * @memberof opentelemetry.proto.collector.trace.v1\n * @classdesc Represents an ExportTraceServiceRequest.\n * @implements IExportTraceServiceRequest\n * @constructor\n * @param {opentelemetry.proto.collector.trace.v1.IExportTraceServiceRequest=} [properties] Properties to set\n */\n function ExportTraceServiceRequest(properties) {\n this.resourceSpans = [];\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n /**\n * ExportTraceServiceRequest resourceSpans.\n * @member {Array.} resourceSpans\n * @memberof opentelemetry.proto.collector.trace.v1.ExportTraceServiceRequest\n * @instance\n */\n ExportTraceServiceRequest.prototype.resourceSpans = $util.emptyArray;\n /**\n * Creates a new ExportTraceServiceRequest instance using the specified properties.\n * @function create\n * @memberof opentelemetry.proto.collector.trace.v1.ExportTraceServiceRequest\n * @static\n * @param {opentelemetry.proto.collector.trace.v1.IExportTraceServiceRequest=} [properties] Properties to set\n * @returns {opentelemetry.proto.collector.trace.v1.ExportTraceServiceRequest} ExportTraceServiceRequest instance\n */\n ExportTraceServiceRequest.create = function create(properties) {\n return new ExportTraceServiceRequest(properties);\n };\n /**\n * Encodes the specified ExportTraceServiceRequest message. Does not implicitly {@link opentelemetry.proto.collector.trace.v1.ExportTraceServiceRequest.verify|verify} messages.\n * @function encode\n * @memberof opentelemetry.proto.collector.trace.v1.ExportTraceServiceRequest\n * @static\n * @param {opentelemetry.proto.collector.trace.v1.IExportTraceServiceRequest} message ExportTraceServiceRequest message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ExportTraceServiceRequest.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.resourceSpans != null && message.resourceSpans.length)\n for (var i = 0; i < message.resourceSpans.length; ++i)\n $root.opentelemetry.proto.trace.v1.ResourceSpans.encode(message.resourceSpans[i], writer.uint32(/* id 1, wireType 2 =*/ 10).fork()).ldelim();\n return writer;\n };\n /**\n * Encodes the specified ExportTraceServiceRequest message, length delimited. Does not implicitly {@link opentelemetry.proto.collector.trace.v1.ExportTraceServiceRequest.verify|verify} messages.\n * @function encodeDelimited\n * @memberof opentelemetry.proto.collector.trace.v1.ExportTraceServiceRequest\n * @static\n * @param {opentelemetry.proto.collector.trace.v1.IExportTraceServiceRequest} message ExportTraceServiceRequest message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ExportTraceServiceRequest.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n /**\n * Decodes an ExportTraceServiceRequest message from the specified reader or buffer.\n * @function decode\n * @memberof opentelemetry.proto.collector.trace.v1.ExportTraceServiceRequest\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {opentelemetry.proto.collector.trace.v1.ExportTraceServiceRequest} ExportTraceServiceRequest\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ExportTraceServiceRequest.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.opentelemetry.proto.collector.trace.v1.ExportTraceServiceRequest();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (!(message.resourceSpans && message.resourceSpans.length))\n message.resourceSpans = [];\n message.resourceSpans.push($root.opentelemetry.proto.trace.v1.ResourceSpans.decode(reader, reader.uint32()));\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n /**\n * Decodes an ExportTraceServiceRequest message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof opentelemetry.proto.collector.trace.v1.ExportTraceServiceRequest\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {opentelemetry.proto.collector.trace.v1.ExportTraceServiceRequest} ExportTraceServiceRequest\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ExportTraceServiceRequest.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n /**\n * Verifies an ExportTraceServiceRequest message.\n * @function verify\n * @memberof opentelemetry.proto.collector.trace.v1.ExportTraceServiceRequest\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n ExportTraceServiceRequest.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.resourceSpans != null && message.hasOwnProperty(\"resourceSpans\")) {\n if (!Array.isArray(message.resourceSpans))\n return \"resourceSpans: array expected\";\n for (var i = 0; i < message.resourceSpans.length; ++i) {\n var error = $root.opentelemetry.proto.trace.v1.ResourceSpans.verify(message.resourceSpans[i]);\n if (error)\n return \"resourceSpans.\" + error;\n }\n }\n return null;\n };\n /**\n * Creates an ExportTraceServiceRequest message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof opentelemetry.proto.collector.trace.v1.ExportTraceServiceRequest\n * @static\n * @param {Object.} object Plain object\n * @returns {opentelemetry.proto.collector.trace.v1.ExportTraceServiceRequest} ExportTraceServiceRequest\n */\n ExportTraceServiceRequest.fromObject = function fromObject(object) {\n if (object instanceof $root.opentelemetry.proto.collector.trace.v1.ExportTraceServiceRequest)\n return object;\n var message = new $root.opentelemetry.proto.collector.trace.v1.ExportTraceServiceRequest();\n if (object.resourceSpans) {\n if (!Array.isArray(object.resourceSpans))\n throw TypeError(\".opentelemetry.proto.collector.trace.v1.ExportTraceServiceRequest.resourceSpans: array expected\");\n message.resourceSpans = [];\n for (var i = 0; i < object.resourceSpans.length; ++i) {\n if (typeof object.resourceSpans[i] !== \"object\")\n throw TypeError(\".opentelemetry.proto.collector.trace.v1.ExportTraceServiceRequest.resourceSpans: object expected\");\n message.resourceSpans[i] = $root.opentelemetry.proto.trace.v1.ResourceSpans.fromObject(object.resourceSpans[i]);\n }\n }\n return message;\n };\n /**\n * Creates a plain object from an ExportTraceServiceRequest message. Also converts values to other types if specified.\n * @function toObject\n * @memberof opentelemetry.proto.collector.trace.v1.ExportTraceServiceRequest\n * @static\n * @param {opentelemetry.proto.collector.trace.v1.ExportTraceServiceRequest} message ExportTraceServiceRequest\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n ExportTraceServiceRequest.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n var object = {};\n if (options.arrays || options.defaults)\n object.resourceSpans = [];\n if (message.resourceSpans && message.resourceSpans.length) {\n object.resourceSpans = [];\n for (var j = 0; j < message.resourceSpans.length; ++j)\n object.resourceSpans[j] = $root.opentelemetry.proto.trace.v1.ResourceSpans.toObject(message.resourceSpans[j], options);\n }\n return object;\n };\n /**\n * Converts this ExportTraceServiceRequest to JSON.\n * @function toJSON\n * @memberof opentelemetry.proto.collector.trace.v1.ExportTraceServiceRequest\n * @instance\n * @returns {Object.} JSON object\n */\n ExportTraceServiceRequest.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n /**\n * Gets the default type url for ExportTraceServiceRequest\n * @function getTypeUrl\n * @memberof opentelemetry.proto.collector.trace.v1.ExportTraceServiceRequest\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n ExportTraceServiceRequest.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = \"type.googleapis.com\";\n }\n return typeUrlPrefix + \"/opentelemetry.proto.collector.trace.v1.ExportTraceServiceRequest\";\n };\n return ExportTraceServiceRequest;\n })();\n v1.ExportTraceServiceResponse = (function () {\n /**\n * Properties of an ExportTraceServiceResponse.\n * @memberof opentelemetry.proto.collector.trace.v1\n * @interface IExportTraceServiceResponse\n * @property {opentelemetry.proto.collector.trace.v1.IExportTracePartialSuccess|null} [partialSuccess] ExportTraceServiceResponse partialSuccess\n */\n /**\n * Constructs a new ExportTraceServiceResponse.\n * @memberof opentelemetry.proto.collector.trace.v1\n * @classdesc Represents an ExportTraceServiceResponse.\n * @implements IExportTraceServiceResponse\n * @constructor\n * @param {opentelemetry.proto.collector.trace.v1.IExportTraceServiceResponse=} [properties] Properties to set\n */\n function ExportTraceServiceResponse(properties) {\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n /**\n * ExportTraceServiceResponse partialSuccess.\n * @member {opentelemetry.proto.collector.trace.v1.IExportTracePartialSuccess|null|undefined} partialSuccess\n * @memberof opentelemetry.proto.collector.trace.v1.ExportTraceServiceResponse\n * @instance\n */\n ExportTraceServiceResponse.prototype.partialSuccess = null;\n /**\n * Creates a new ExportTraceServiceResponse instance using the specified properties.\n * @function create\n * @memberof opentelemetry.proto.collector.trace.v1.ExportTraceServiceResponse\n * @static\n * @param {opentelemetry.proto.collector.trace.v1.IExportTraceServiceResponse=} [properties] Properties to set\n * @returns {opentelemetry.proto.collector.trace.v1.ExportTraceServiceResponse} ExportTraceServiceResponse instance\n */\n ExportTraceServiceResponse.create = function create(properties) {\n return new ExportTraceServiceResponse(properties);\n };\n /**\n * Encodes the specified ExportTraceServiceResponse message. Does not implicitly {@link opentelemetry.proto.collector.trace.v1.ExportTraceServiceResponse.verify|verify} messages.\n * @function encode\n * @memberof opentelemetry.proto.collector.trace.v1.ExportTraceServiceResponse\n * @static\n * @param {opentelemetry.proto.collector.trace.v1.IExportTraceServiceResponse} message ExportTraceServiceResponse message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ExportTraceServiceResponse.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.partialSuccess != null && Object.hasOwnProperty.call(message, \"partialSuccess\"))\n $root.opentelemetry.proto.collector.trace.v1.ExportTracePartialSuccess.encode(message.partialSuccess, writer.uint32(/* id 1, wireType 2 =*/ 10).fork()).ldelim();\n return writer;\n };\n /**\n * Encodes the specified ExportTraceServiceResponse message, length delimited. Does not implicitly {@link opentelemetry.proto.collector.trace.v1.ExportTraceServiceResponse.verify|verify} messages.\n * @function encodeDelimited\n * @memberof opentelemetry.proto.collector.trace.v1.ExportTraceServiceResponse\n * @static\n * @param {opentelemetry.proto.collector.trace.v1.IExportTraceServiceResponse} message ExportTraceServiceResponse message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ExportTraceServiceResponse.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n /**\n * Decodes an ExportTraceServiceResponse message from the specified reader or buffer.\n * @function decode\n * @memberof opentelemetry.proto.collector.trace.v1.ExportTraceServiceResponse\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {opentelemetry.proto.collector.trace.v1.ExportTraceServiceResponse} ExportTraceServiceResponse\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ExportTraceServiceResponse.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.opentelemetry.proto.collector.trace.v1.ExportTraceServiceResponse();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n message.partialSuccess = $root.opentelemetry.proto.collector.trace.v1.ExportTracePartialSuccess.decode(reader, reader.uint32());\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n /**\n * Decodes an ExportTraceServiceResponse message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof opentelemetry.proto.collector.trace.v1.ExportTraceServiceResponse\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {opentelemetry.proto.collector.trace.v1.ExportTraceServiceResponse} ExportTraceServiceResponse\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ExportTraceServiceResponse.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n /**\n * Verifies an ExportTraceServiceResponse message.\n * @function verify\n * @memberof opentelemetry.proto.collector.trace.v1.ExportTraceServiceResponse\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n ExportTraceServiceResponse.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.partialSuccess != null && message.hasOwnProperty(\"partialSuccess\")) {\n var error = $root.opentelemetry.proto.collector.trace.v1.ExportTracePartialSuccess.verify(message.partialSuccess);\n if (error)\n return \"partialSuccess.\" + error;\n }\n return null;\n };\n /**\n * Creates an ExportTraceServiceResponse message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof opentelemetry.proto.collector.trace.v1.ExportTraceServiceResponse\n * @static\n * @param {Object.} object Plain object\n * @returns {opentelemetry.proto.collector.trace.v1.ExportTraceServiceResponse} ExportTraceServiceResponse\n */\n ExportTraceServiceResponse.fromObject = function fromObject(object) {\n if (object instanceof $root.opentelemetry.proto.collector.trace.v1.ExportTraceServiceResponse)\n return object;\n var message = new $root.opentelemetry.proto.collector.trace.v1.ExportTraceServiceResponse();\n if (object.partialSuccess != null) {\n if (typeof object.partialSuccess !== \"object\")\n throw TypeError(\".opentelemetry.proto.collector.trace.v1.ExportTraceServiceResponse.partialSuccess: object expected\");\n message.partialSuccess = $root.opentelemetry.proto.collector.trace.v1.ExportTracePartialSuccess.fromObject(object.partialSuccess);\n }\n return message;\n };\n /**\n * Creates a plain object from an ExportTraceServiceResponse message. Also converts values to other types if specified.\n * @function toObject\n * @memberof opentelemetry.proto.collector.trace.v1.ExportTraceServiceResponse\n * @static\n * @param {opentelemetry.proto.collector.trace.v1.ExportTraceServiceResponse} message ExportTraceServiceResponse\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n ExportTraceServiceResponse.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n var object = {};\n if (options.defaults)\n object.partialSuccess = null;\n if (message.partialSuccess != null && message.hasOwnProperty(\"partialSuccess\"))\n object.partialSuccess = $root.opentelemetry.proto.collector.trace.v1.ExportTracePartialSuccess.toObject(message.partialSuccess, options);\n return object;\n };\n /**\n * Converts this ExportTraceServiceResponse to JSON.\n * @function toJSON\n * @memberof opentelemetry.proto.collector.trace.v1.ExportTraceServiceResponse\n * @instance\n * @returns {Object.} JSON object\n */\n ExportTraceServiceResponse.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n /**\n * Gets the default type url for ExportTraceServiceResponse\n * @function getTypeUrl\n * @memberof opentelemetry.proto.collector.trace.v1.ExportTraceServiceResponse\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n ExportTraceServiceResponse.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = \"type.googleapis.com\";\n }\n return typeUrlPrefix + \"/opentelemetry.proto.collector.trace.v1.ExportTraceServiceResponse\";\n };\n return ExportTraceServiceResponse;\n })();\n v1.ExportTracePartialSuccess = (function () {\n /**\n * Properties of an ExportTracePartialSuccess.\n * @memberof opentelemetry.proto.collector.trace.v1\n * @interface IExportTracePartialSuccess\n * @property {number|Long|null} [rejectedSpans] ExportTracePartialSuccess rejectedSpans\n * @property {string|null} [errorMessage] ExportTracePartialSuccess errorMessage\n */\n /**\n * Constructs a new ExportTracePartialSuccess.\n * @memberof opentelemetry.proto.collector.trace.v1\n * @classdesc Represents an ExportTracePartialSuccess.\n * @implements IExportTracePartialSuccess\n * @constructor\n * @param {opentelemetry.proto.collector.trace.v1.IExportTracePartialSuccess=} [properties] Properties to set\n */\n function ExportTracePartialSuccess(properties) {\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n /**\n * ExportTracePartialSuccess rejectedSpans.\n * @member {number|Long|null|undefined} rejectedSpans\n * @memberof opentelemetry.proto.collector.trace.v1.ExportTracePartialSuccess\n * @instance\n */\n ExportTracePartialSuccess.prototype.rejectedSpans = null;\n /**\n * ExportTracePartialSuccess errorMessage.\n * @member {string|null|undefined} errorMessage\n * @memberof opentelemetry.proto.collector.trace.v1.ExportTracePartialSuccess\n * @instance\n */\n ExportTracePartialSuccess.prototype.errorMessage = null;\n /**\n * Creates a new ExportTracePartialSuccess instance using the specified properties.\n * @function create\n * @memberof opentelemetry.proto.collector.trace.v1.ExportTracePartialSuccess\n * @static\n * @param {opentelemetry.proto.collector.trace.v1.IExportTracePartialSuccess=} [properties] Properties to set\n * @returns {opentelemetry.proto.collector.trace.v1.ExportTracePartialSuccess} ExportTracePartialSuccess instance\n */\n ExportTracePartialSuccess.create = function create(properties) {\n return new ExportTracePartialSuccess(properties);\n };\n /**\n * Encodes the specified ExportTracePartialSuccess message. Does not implicitly {@link opentelemetry.proto.collector.trace.v1.ExportTracePartialSuccess.verify|verify} messages.\n * @function encode\n * @memberof opentelemetry.proto.collector.trace.v1.ExportTracePartialSuccess\n * @static\n * @param {opentelemetry.proto.collector.trace.v1.IExportTracePartialSuccess} message ExportTracePartialSuccess message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ExportTracePartialSuccess.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.rejectedSpans != null && Object.hasOwnProperty.call(message, \"rejectedSpans\"))\n writer.uint32(/* id 1, wireType 0 =*/ 8).int64(message.rejectedSpans);\n if (message.errorMessage != null && Object.hasOwnProperty.call(message, \"errorMessage\"))\n writer.uint32(/* id 2, wireType 2 =*/ 18).string(message.errorMessage);\n return writer;\n };\n /**\n * Encodes the specified ExportTracePartialSuccess message, length delimited. Does not implicitly {@link opentelemetry.proto.collector.trace.v1.ExportTracePartialSuccess.verify|verify} messages.\n * @function encodeDelimited\n * @memberof opentelemetry.proto.collector.trace.v1.ExportTracePartialSuccess\n * @static\n * @param {opentelemetry.proto.collector.trace.v1.IExportTracePartialSuccess} message ExportTracePartialSuccess message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ExportTracePartialSuccess.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n /**\n * Decodes an ExportTracePartialSuccess message from the specified reader or buffer.\n * @function decode\n * @memberof opentelemetry.proto.collector.trace.v1.ExportTracePartialSuccess\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {opentelemetry.proto.collector.trace.v1.ExportTracePartialSuccess} ExportTracePartialSuccess\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ExportTracePartialSuccess.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.opentelemetry.proto.collector.trace.v1.ExportTracePartialSuccess();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n message.rejectedSpans = reader.int64();\n break;\n }\n case 2: {\n message.errorMessage = reader.string();\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n /**\n * Decodes an ExportTracePartialSuccess message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof opentelemetry.proto.collector.trace.v1.ExportTracePartialSuccess\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {opentelemetry.proto.collector.trace.v1.ExportTracePartialSuccess} ExportTracePartialSuccess\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ExportTracePartialSuccess.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n /**\n * Verifies an ExportTracePartialSuccess message.\n * @function verify\n * @memberof opentelemetry.proto.collector.trace.v1.ExportTracePartialSuccess\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n ExportTracePartialSuccess.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.rejectedSpans != null && message.hasOwnProperty(\"rejectedSpans\"))\n if (!$util.isInteger(message.rejectedSpans) && !(message.rejectedSpans && $util.isInteger(message.rejectedSpans.low) && $util.isInteger(message.rejectedSpans.high)))\n return \"rejectedSpans: integer|Long expected\";\n if (message.errorMessage != null && message.hasOwnProperty(\"errorMessage\"))\n if (!$util.isString(message.errorMessage))\n return \"errorMessage: string expected\";\n return null;\n };\n /**\n * Creates an ExportTracePartialSuccess message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof opentelemetry.proto.collector.trace.v1.ExportTracePartialSuccess\n * @static\n * @param {Object.} object Plain object\n * @returns {opentelemetry.proto.collector.trace.v1.ExportTracePartialSuccess} ExportTracePartialSuccess\n */\n ExportTracePartialSuccess.fromObject = function fromObject(object) {\n if (object instanceof $root.opentelemetry.proto.collector.trace.v1.ExportTracePartialSuccess)\n return object;\n var message = new $root.opentelemetry.proto.collector.trace.v1.ExportTracePartialSuccess();\n if (object.rejectedSpans != null)\n if ($util.Long)\n (message.rejectedSpans = $util.Long.fromValue(object.rejectedSpans)).unsigned = false;\n else if (typeof object.rejectedSpans === \"string\")\n message.rejectedSpans = parseInt(object.rejectedSpans, 10);\n else if (typeof object.rejectedSpans === \"number\")\n message.rejectedSpans = object.rejectedSpans;\n else if (typeof object.rejectedSpans === \"object\")\n message.rejectedSpans = new $util.LongBits(object.rejectedSpans.low >>> 0, object.rejectedSpans.high >>> 0).toNumber();\n if (object.errorMessage != null)\n message.errorMessage = String(object.errorMessage);\n return message;\n };\n /**\n * Creates a plain object from an ExportTracePartialSuccess message. Also converts values to other types if specified.\n * @function toObject\n * @memberof opentelemetry.proto.collector.trace.v1.ExportTracePartialSuccess\n * @static\n * @param {opentelemetry.proto.collector.trace.v1.ExportTracePartialSuccess} message ExportTracePartialSuccess\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n ExportTracePartialSuccess.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n var object = {};\n if (options.defaults) {\n if ($util.Long) {\n var long = new $util.Long(0, 0, false);\n object.rejectedSpans = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n }\n else\n object.rejectedSpans = options.longs === String ? \"0\" : 0;\n object.errorMessage = \"\";\n }\n if (message.rejectedSpans != null && message.hasOwnProperty(\"rejectedSpans\"))\n if (typeof message.rejectedSpans === \"number\")\n object.rejectedSpans = options.longs === String ? String(message.rejectedSpans) : message.rejectedSpans;\n else\n object.rejectedSpans = options.longs === String ? $util.Long.prototype.toString.call(message.rejectedSpans) : options.longs === Number ? new $util.LongBits(message.rejectedSpans.low >>> 0, message.rejectedSpans.high >>> 0).toNumber() : message.rejectedSpans;\n if (message.errorMessage != null && message.hasOwnProperty(\"errorMessage\"))\n object.errorMessage = message.errorMessage;\n return object;\n };\n /**\n * Converts this ExportTracePartialSuccess to JSON.\n * @function toJSON\n * @memberof opentelemetry.proto.collector.trace.v1.ExportTracePartialSuccess\n * @instance\n * @returns {Object.} JSON object\n */\n ExportTracePartialSuccess.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n /**\n * Gets the default type url for ExportTracePartialSuccess\n * @function getTypeUrl\n * @memberof opentelemetry.proto.collector.trace.v1.ExportTracePartialSuccess\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n ExportTracePartialSuccess.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = \"type.googleapis.com\";\n }\n return typeUrlPrefix + \"/opentelemetry.proto.collector.trace.v1.ExportTracePartialSuccess\";\n };\n return ExportTracePartialSuccess;\n })();\n return v1;\n })();\n return trace;\n })();\n collector.metrics = (function () {\n /**\n * Namespace metrics.\n * @memberof opentelemetry.proto.collector\n * @namespace\n */\n var metrics = {};\n metrics.v1 = (function () {\n /**\n * Namespace v1.\n * @memberof opentelemetry.proto.collector.metrics\n * @namespace\n */\n var v1 = {};\n v1.MetricsService = (function () {\n /**\n * Constructs a new MetricsService service.\n * @memberof opentelemetry.proto.collector.metrics.v1\n * @classdesc Represents a MetricsService\n * @extends $protobuf.rpc.Service\n * @constructor\n * @param {$protobuf.RPCImpl} rpcImpl RPC implementation\n * @param {boolean} [requestDelimited=false] Whether requests are length-delimited\n * @param {boolean} [responseDelimited=false] Whether responses are length-delimited\n */\n function MetricsService(rpcImpl, requestDelimited, responseDelimited) {\n $protobuf.rpc.Service.call(this, rpcImpl, requestDelimited, responseDelimited);\n }\n (MetricsService.prototype = Object.create($protobuf.rpc.Service.prototype)).constructor = MetricsService;\n /**\n * Creates new MetricsService service using the specified rpc implementation.\n * @function create\n * @memberof opentelemetry.proto.collector.metrics.v1.MetricsService\n * @static\n * @param {$protobuf.RPCImpl} rpcImpl RPC implementation\n * @param {boolean} [requestDelimited=false] Whether requests are length-delimited\n * @param {boolean} [responseDelimited=false] Whether responses are length-delimited\n * @returns {MetricsService} RPC service. Useful where requests and/or responses are streamed.\n */\n MetricsService.create = function create(rpcImpl, requestDelimited, responseDelimited) {\n return new this(rpcImpl, requestDelimited, responseDelimited);\n };\n /**\n * Callback as used by {@link opentelemetry.proto.collector.metrics.v1.MetricsService#export_}.\n * @memberof opentelemetry.proto.collector.metrics.v1.MetricsService\n * @typedef ExportCallback\n * @type {function}\n * @param {Error|null} error Error, if any\n * @param {opentelemetry.proto.collector.metrics.v1.ExportMetricsServiceResponse} [response] ExportMetricsServiceResponse\n */\n /**\n * Calls Export.\n * @function export\n * @memberof opentelemetry.proto.collector.metrics.v1.MetricsService\n * @instance\n * @param {opentelemetry.proto.collector.metrics.v1.IExportMetricsServiceRequest} request ExportMetricsServiceRequest message or plain object\n * @param {opentelemetry.proto.collector.metrics.v1.MetricsService.ExportCallback} callback Node-style callback called with the error, if any, and ExportMetricsServiceResponse\n * @returns {undefined}\n * @variation 1\n */\n Object.defineProperty(MetricsService.prototype[\"export\"] = function export_(request, callback) {\n return this.rpcCall(export_, $root.opentelemetry.proto.collector.metrics.v1.ExportMetricsServiceRequest, $root.opentelemetry.proto.collector.metrics.v1.ExportMetricsServiceResponse, request, callback);\n }, \"name\", { value: \"Export\" });\n /**\n * Calls Export.\n * @function export\n * @memberof opentelemetry.proto.collector.metrics.v1.MetricsService\n * @instance\n * @param {opentelemetry.proto.collector.metrics.v1.IExportMetricsServiceRequest} request ExportMetricsServiceRequest message or plain object\n * @returns {Promise} Promise\n * @variation 2\n */\n return MetricsService;\n })();\n v1.ExportMetricsServiceRequest = (function () {\n /**\n * Properties of an ExportMetricsServiceRequest.\n * @memberof opentelemetry.proto.collector.metrics.v1\n * @interface IExportMetricsServiceRequest\n * @property {Array.|null} [resourceMetrics] ExportMetricsServiceRequest resourceMetrics\n */\n /**\n * Constructs a new ExportMetricsServiceRequest.\n * @memberof opentelemetry.proto.collector.metrics.v1\n * @classdesc Represents an ExportMetricsServiceRequest.\n * @implements IExportMetricsServiceRequest\n * @constructor\n * @param {opentelemetry.proto.collector.metrics.v1.IExportMetricsServiceRequest=} [properties] Properties to set\n */\n function ExportMetricsServiceRequest(properties) {\n this.resourceMetrics = [];\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n /**\n * ExportMetricsServiceRequest resourceMetrics.\n * @member {Array.} resourceMetrics\n * @memberof opentelemetry.proto.collector.metrics.v1.ExportMetricsServiceRequest\n * @instance\n */\n ExportMetricsServiceRequest.prototype.resourceMetrics = $util.emptyArray;\n /**\n * Creates a new ExportMetricsServiceRequest instance using the specified properties.\n * @function create\n * @memberof opentelemetry.proto.collector.metrics.v1.ExportMetricsServiceRequest\n * @static\n * @param {opentelemetry.proto.collector.metrics.v1.IExportMetricsServiceRequest=} [properties] Properties to set\n * @returns {opentelemetry.proto.collector.metrics.v1.ExportMetricsServiceRequest} ExportMetricsServiceRequest instance\n */\n ExportMetricsServiceRequest.create = function create(properties) {\n return new ExportMetricsServiceRequest(properties);\n };\n /**\n * Encodes the specified ExportMetricsServiceRequest message. Does not implicitly {@link opentelemetry.proto.collector.metrics.v1.ExportMetricsServiceRequest.verify|verify} messages.\n * @function encode\n * @memberof opentelemetry.proto.collector.metrics.v1.ExportMetricsServiceRequest\n * @static\n * @param {opentelemetry.proto.collector.metrics.v1.IExportMetricsServiceRequest} message ExportMetricsServiceRequest message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ExportMetricsServiceRequest.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.resourceMetrics != null && message.resourceMetrics.length)\n for (var i = 0; i < message.resourceMetrics.length; ++i)\n $root.opentelemetry.proto.metrics.v1.ResourceMetrics.encode(message.resourceMetrics[i], writer.uint32(/* id 1, wireType 2 =*/ 10).fork()).ldelim();\n return writer;\n };\n /**\n * Encodes the specified ExportMetricsServiceRequest message, length delimited. Does not implicitly {@link opentelemetry.proto.collector.metrics.v1.ExportMetricsServiceRequest.verify|verify} messages.\n * @function encodeDelimited\n * @memberof opentelemetry.proto.collector.metrics.v1.ExportMetricsServiceRequest\n * @static\n * @param {opentelemetry.proto.collector.metrics.v1.IExportMetricsServiceRequest} message ExportMetricsServiceRequest message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ExportMetricsServiceRequest.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n /**\n * Decodes an ExportMetricsServiceRequest message from the specified reader or buffer.\n * @function decode\n * @memberof opentelemetry.proto.collector.metrics.v1.ExportMetricsServiceRequest\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {opentelemetry.proto.collector.metrics.v1.ExportMetricsServiceRequest} ExportMetricsServiceRequest\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ExportMetricsServiceRequest.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.opentelemetry.proto.collector.metrics.v1.ExportMetricsServiceRequest();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (!(message.resourceMetrics && message.resourceMetrics.length))\n message.resourceMetrics = [];\n message.resourceMetrics.push($root.opentelemetry.proto.metrics.v1.ResourceMetrics.decode(reader, reader.uint32()));\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n /**\n * Decodes an ExportMetricsServiceRequest message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof opentelemetry.proto.collector.metrics.v1.ExportMetricsServiceRequest\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {opentelemetry.proto.collector.metrics.v1.ExportMetricsServiceRequest} ExportMetricsServiceRequest\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ExportMetricsServiceRequest.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n /**\n * Verifies an ExportMetricsServiceRequest message.\n * @function verify\n * @memberof opentelemetry.proto.collector.metrics.v1.ExportMetricsServiceRequest\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n ExportMetricsServiceRequest.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.resourceMetrics != null && message.hasOwnProperty(\"resourceMetrics\")) {\n if (!Array.isArray(message.resourceMetrics))\n return \"resourceMetrics: array expected\";\n for (var i = 0; i < message.resourceMetrics.length; ++i) {\n var error = $root.opentelemetry.proto.metrics.v1.ResourceMetrics.verify(message.resourceMetrics[i]);\n if (error)\n return \"resourceMetrics.\" + error;\n }\n }\n return null;\n };\n /**\n * Creates an ExportMetricsServiceRequest message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof opentelemetry.proto.collector.metrics.v1.ExportMetricsServiceRequest\n * @static\n * @param {Object.} object Plain object\n * @returns {opentelemetry.proto.collector.metrics.v1.ExportMetricsServiceRequest} ExportMetricsServiceRequest\n */\n ExportMetricsServiceRequest.fromObject = function fromObject(object) {\n if (object instanceof $root.opentelemetry.proto.collector.metrics.v1.ExportMetricsServiceRequest)\n return object;\n var message = new $root.opentelemetry.proto.collector.metrics.v1.ExportMetricsServiceRequest();\n if (object.resourceMetrics) {\n if (!Array.isArray(object.resourceMetrics))\n throw TypeError(\".opentelemetry.proto.collector.metrics.v1.ExportMetricsServiceRequest.resourceMetrics: array expected\");\n message.resourceMetrics = [];\n for (var i = 0; i < object.resourceMetrics.length; ++i) {\n if (typeof object.resourceMetrics[i] !== \"object\")\n throw TypeError(\".opentelemetry.proto.collector.metrics.v1.ExportMetricsServiceRequest.resourceMetrics: object expected\");\n message.resourceMetrics[i] = $root.opentelemetry.proto.metrics.v1.ResourceMetrics.fromObject(object.resourceMetrics[i]);\n }\n }\n return message;\n };\n /**\n * Creates a plain object from an ExportMetricsServiceRequest message. Also converts values to other types if specified.\n * @function toObject\n * @memberof opentelemetry.proto.collector.metrics.v1.ExportMetricsServiceRequest\n * @static\n * @param {opentelemetry.proto.collector.metrics.v1.ExportMetricsServiceRequest} message ExportMetricsServiceRequest\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n ExportMetricsServiceRequest.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n var object = {};\n if (options.arrays || options.defaults)\n object.resourceMetrics = [];\n if (message.resourceMetrics && message.resourceMetrics.length) {\n object.resourceMetrics = [];\n for (var j = 0; j < message.resourceMetrics.length; ++j)\n object.resourceMetrics[j] = $root.opentelemetry.proto.metrics.v1.ResourceMetrics.toObject(message.resourceMetrics[j], options);\n }\n return object;\n };\n /**\n * Converts this ExportMetricsServiceRequest to JSON.\n * @function toJSON\n * @memberof opentelemetry.proto.collector.metrics.v1.ExportMetricsServiceRequest\n * @instance\n * @returns {Object.} JSON object\n */\n ExportMetricsServiceRequest.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n /**\n * Gets the default type url for ExportMetricsServiceRequest\n * @function getTypeUrl\n * @memberof opentelemetry.proto.collector.metrics.v1.ExportMetricsServiceRequest\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n ExportMetricsServiceRequest.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = \"type.googleapis.com\";\n }\n return typeUrlPrefix + \"/opentelemetry.proto.collector.metrics.v1.ExportMetricsServiceRequest\";\n };\n return ExportMetricsServiceRequest;\n })();\n v1.ExportMetricsServiceResponse = (function () {\n /**\n * Properties of an ExportMetricsServiceResponse.\n * @memberof opentelemetry.proto.collector.metrics.v1\n * @interface IExportMetricsServiceResponse\n * @property {opentelemetry.proto.collector.metrics.v1.IExportMetricsPartialSuccess|null} [partialSuccess] ExportMetricsServiceResponse partialSuccess\n */\n /**\n * Constructs a new ExportMetricsServiceResponse.\n * @memberof opentelemetry.proto.collector.metrics.v1\n * @classdesc Represents an ExportMetricsServiceResponse.\n * @implements IExportMetricsServiceResponse\n * @constructor\n * @param {opentelemetry.proto.collector.metrics.v1.IExportMetricsServiceResponse=} [properties] Properties to set\n */\n function ExportMetricsServiceResponse(properties) {\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n /**\n * ExportMetricsServiceResponse partialSuccess.\n * @member {opentelemetry.proto.collector.metrics.v1.IExportMetricsPartialSuccess|null|undefined} partialSuccess\n * @memberof opentelemetry.proto.collector.metrics.v1.ExportMetricsServiceResponse\n * @instance\n */\n ExportMetricsServiceResponse.prototype.partialSuccess = null;\n /**\n * Creates a new ExportMetricsServiceResponse instance using the specified properties.\n * @function create\n * @memberof opentelemetry.proto.collector.metrics.v1.ExportMetricsServiceResponse\n * @static\n * @param {opentelemetry.proto.collector.metrics.v1.IExportMetricsServiceResponse=} [properties] Properties to set\n * @returns {opentelemetry.proto.collector.metrics.v1.ExportMetricsServiceResponse} ExportMetricsServiceResponse instance\n */\n ExportMetricsServiceResponse.create = function create(properties) {\n return new ExportMetricsServiceResponse(properties);\n };\n /**\n * Encodes the specified ExportMetricsServiceResponse message. Does not implicitly {@link opentelemetry.proto.collector.metrics.v1.ExportMetricsServiceResponse.verify|verify} messages.\n * @function encode\n * @memberof opentelemetry.proto.collector.metrics.v1.ExportMetricsServiceResponse\n * @static\n * @param {opentelemetry.proto.collector.metrics.v1.IExportMetricsServiceResponse} message ExportMetricsServiceResponse message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ExportMetricsServiceResponse.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.partialSuccess != null && Object.hasOwnProperty.call(message, \"partialSuccess\"))\n $root.opentelemetry.proto.collector.metrics.v1.ExportMetricsPartialSuccess.encode(message.partialSuccess, writer.uint32(/* id 1, wireType 2 =*/ 10).fork()).ldelim();\n return writer;\n };\n /**\n * Encodes the specified ExportMetricsServiceResponse message, length delimited. Does not implicitly {@link opentelemetry.proto.collector.metrics.v1.ExportMetricsServiceResponse.verify|verify} messages.\n * @function encodeDelimited\n * @memberof opentelemetry.proto.collector.metrics.v1.ExportMetricsServiceResponse\n * @static\n * @param {opentelemetry.proto.collector.metrics.v1.IExportMetricsServiceResponse} message ExportMetricsServiceResponse message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ExportMetricsServiceResponse.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n /**\n * Decodes an ExportMetricsServiceResponse message from the specified reader or buffer.\n * @function decode\n * @memberof opentelemetry.proto.collector.metrics.v1.ExportMetricsServiceResponse\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {opentelemetry.proto.collector.metrics.v1.ExportMetricsServiceResponse} ExportMetricsServiceResponse\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ExportMetricsServiceResponse.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.opentelemetry.proto.collector.metrics.v1.ExportMetricsServiceResponse();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n message.partialSuccess = $root.opentelemetry.proto.collector.metrics.v1.ExportMetricsPartialSuccess.decode(reader, reader.uint32());\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n /**\n * Decodes an ExportMetricsServiceResponse message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof opentelemetry.proto.collector.metrics.v1.ExportMetricsServiceResponse\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {opentelemetry.proto.collector.metrics.v1.ExportMetricsServiceResponse} ExportMetricsServiceResponse\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ExportMetricsServiceResponse.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n /**\n * Verifies an ExportMetricsServiceResponse message.\n * @function verify\n * @memberof opentelemetry.proto.collector.metrics.v1.ExportMetricsServiceResponse\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n ExportMetricsServiceResponse.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.partialSuccess != null && message.hasOwnProperty(\"partialSuccess\")) {\n var error = $root.opentelemetry.proto.collector.metrics.v1.ExportMetricsPartialSuccess.verify(message.partialSuccess);\n if (error)\n return \"partialSuccess.\" + error;\n }\n return null;\n };\n /**\n * Creates an ExportMetricsServiceResponse message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof opentelemetry.proto.collector.metrics.v1.ExportMetricsServiceResponse\n * @static\n * @param {Object.} object Plain object\n * @returns {opentelemetry.proto.collector.metrics.v1.ExportMetricsServiceResponse} ExportMetricsServiceResponse\n */\n ExportMetricsServiceResponse.fromObject = function fromObject(object) {\n if (object instanceof $root.opentelemetry.proto.collector.metrics.v1.ExportMetricsServiceResponse)\n return object;\n var message = new $root.opentelemetry.proto.collector.metrics.v1.ExportMetricsServiceResponse();\n if (object.partialSuccess != null) {\n if (typeof object.partialSuccess !== \"object\")\n throw TypeError(\".opentelemetry.proto.collector.metrics.v1.ExportMetricsServiceResponse.partialSuccess: object expected\");\n message.partialSuccess = $root.opentelemetry.proto.collector.metrics.v1.ExportMetricsPartialSuccess.fromObject(object.partialSuccess);\n }\n return message;\n };\n /**\n * Creates a plain object from an ExportMetricsServiceResponse message. Also converts values to other types if specified.\n * @function toObject\n * @memberof opentelemetry.proto.collector.metrics.v1.ExportMetricsServiceResponse\n * @static\n * @param {opentelemetry.proto.collector.metrics.v1.ExportMetricsServiceResponse} message ExportMetricsServiceResponse\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n ExportMetricsServiceResponse.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n var object = {};\n if (options.defaults)\n object.partialSuccess = null;\n if (message.partialSuccess != null && message.hasOwnProperty(\"partialSuccess\"))\n object.partialSuccess = $root.opentelemetry.proto.collector.metrics.v1.ExportMetricsPartialSuccess.toObject(message.partialSuccess, options);\n return object;\n };\n /**\n * Converts this ExportMetricsServiceResponse to JSON.\n * @function toJSON\n * @memberof opentelemetry.proto.collector.metrics.v1.ExportMetricsServiceResponse\n * @instance\n * @returns {Object.} JSON object\n */\n ExportMetricsServiceResponse.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n /**\n * Gets the default type url for ExportMetricsServiceResponse\n * @function getTypeUrl\n * @memberof opentelemetry.proto.collector.metrics.v1.ExportMetricsServiceResponse\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n ExportMetricsServiceResponse.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = \"type.googleapis.com\";\n }\n return typeUrlPrefix + \"/opentelemetry.proto.collector.metrics.v1.ExportMetricsServiceResponse\";\n };\n return ExportMetricsServiceResponse;\n })();\n v1.ExportMetricsPartialSuccess = (function () {\n /**\n * Properties of an ExportMetricsPartialSuccess.\n * @memberof opentelemetry.proto.collector.metrics.v1\n * @interface IExportMetricsPartialSuccess\n * @property {number|Long|null} [rejectedDataPoints] ExportMetricsPartialSuccess rejectedDataPoints\n * @property {string|null} [errorMessage] ExportMetricsPartialSuccess errorMessage\n */\n /**\n * Constructs a new ExportMetricsPartialSuccess.\n * @memberof opentelemetry.proto.collector.metrics.v1\n * @classdesc Represents an ExportMetricsPartialSuccess.\n * @implements IExportMetricsPartialSuccess\n * @constructor\n * @param {opentelemetry.proto.collector.metrics.v1.IExportMetricsPartialSuccess=} [properties] Properties to set\n */\n function ExportMetricsPartialSuccess(properties) {\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n /**\n * ExportMetricsPartialSuccess rejectedDataPoints.\n * @member {number|Long|null|undefined} rejectedDataPoints\n * @memberof opentelemetry.proto.collector.metrics.v1.ExportMetricsPartialSuccess\n * @instance\n */\n ExportMetricsPartialSuccess.prototype.rejectedDataPoints = null;\n /**\n * ExportMetricsPartialSuccess errorMessage.\n * @member {string|null|undefined} errorMessage\n * @memberof opentelemetry.proto.collector.metrics.v1.ExportMetricsPartialSuccess\n * @instance\n */\n ExportMetricsPartialSuccess.prototype.errorMessage = null;\n /**\n * Creates a new ExportMetricsPartialSuccess instance using the specified properties.\n * @function create\n * @memberof opentelemetry.proto.collector.metrics.v1.ExportMetricsPartialSuccess\n * @static\n * @param {opentelemetry.proto.collector.metrics.v1.IExportMetricsPartialSuccess=} [properties] Properties to set\n * @returns {opentelemetry.proto.collector.metrics.v1.ExportMetricsPartialSuccess} ExportMetricsPartialSuccess instance\n */\n ExportMetricsPartialSuccess.create = function create(properties) {\n return new ExportMetricsPartialSuccess(properties);\n };\n /**\n * Encodes the specified ExportMetricsPartialSuccess message. Does not implicitly {@link opentelemetry.proto.collector.metrics.v1.ExportMetricsPartialSuccess.verify|verify} messages.\n * @function encode\n * @memberof opentelemetry.proto.collector.metrics.v1.ExportMetricsPartialSuccess\n * @static\n * @param {opentelemetry.proto.collector.metrics.v1.IExportMetricsPartialSuccess} message ExportMetricsPartialSuccess message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ExportMetricsPartialSuccess.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.rejectedDataPoints != null && Object.hasOwnProperty.call(message, \"rejectedDataPoints\"))\n writer.uint32(/* id 1, wireType 0 =*/ 8).int64(message.rejectedDataPoints);\n if (message.errorMessage != null && Object.hasOwnProperty.call(message, \"errorMessage\"))\n writer.uint32(/* id 2, wireType 2 =*/ 18).string(message.errorMessage);\n return writer;\n };\n /**\n * Encodes the specified ExportMetricsPartialSuccess message, length delimited. Does not implicitly {@link opentelemetry.proto.collector.metrics.v1.ExportMetricsPartialSuccess.verify|verify} messages.\n * @function encodeDelimited\n * @memberof opentelemetry.proto.collector.metrics.v1.ExportMetricsPartialSuccess\n * @static\n * @param {opentelemetry.proto.collector.metrics.v1.IExportMetricsPartialSuccess} message ExportMetricsPartialSuccess message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ExportMetricsPartialSuccess.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n /**\n * Decodes an ExportMetricsPartialSuccess message from the specified reader or buffer.\n * @function decode\n * @memberof opentelemetry.proto.collector.metrics.v1.ExportMetricsPartialSuccess\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {opentelemetry.proto.collector.metrics.v1.ExportMetricsPartialSuccess} ExportMetricsPartialSuccess\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ExportMetricsPartialSuccess.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.opentelemetry.proto.collector.metrics.v1.ExportMetricsPartialSuccess();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n message.rejectedDataPoints = reader.int64();\n break;\n }\n case 2: {\n message.errorMessage = reader.string();\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n /**\n * Decodes an ExportMetricsPartialSuccess message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof opentelemetry.proto.collector.metrics.v1.ExportMetricsPartialSuccess\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {opentelemetry.proto.collector.metrics.v1.ExportMetricsPartialSuccess} ExportMetricsPartialSuccess\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ExportMetricsPartialSuccess.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n /**\n * Verifies an ExportMetricsPartialSuccess message.\n * @function verify\n * @memberof opentelemetry.proto.collector.metrics.v1.ExportMetricsPartialSuccess\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n ExportMetricsPartialSuccess.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.rejectedDataPoints != null && message.hasOwnProperty(\"rejectedDataPoints\"))\n if (!$util.isInteger(message.rejectedDataPoints) && !(message.rejectedDataPoints && $util.isInteger(message.rejectedDataPoints.low) && $util.isInteger(message.rejectedDataPoints.high)))\n return \"rejectedDataPoints: integer|Long expected\";\n if (message.errorMessage != null && message.hasOwnProperty(\"errorMessage\"))\n if (!$util.isString(message.errorMessage))\n return \"errorMessage: string expected\";\n return null;\n };\n /**\n * Creates an ExportMetricsPartialSuccess message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof opentelemetry.proto.collector.metrics.v1.ExportMetricsPartialSuccess\n * @static\n * @param {Object.} object Plain object\n * @returns {opentelemetry.proto.collector.metrics.v1.ExportMetricsPartialSuccess} ExportMetricsPartialSuccess\n */\n ExportMetricsPartialSuccess.fromObject = function fromObject(object) {\n if (object instanceof $root.opentelemetry.proto.collector.metrics.v1.ExportMetricsPartialSuccess)\n return object;\n var message = new $root.opentelemetry.proto.collector.metrics.v1.ExportMetricsPartialSuccess();\n if (object.rejectedDataPoints != null)\n if ($util.Long)\n (message.rejectedDataPoints = $util.Long.fromValue(object.rejectedDataPoints)).unsigned = false;\n else if (typeof object.rejectedDataPoints === \"string\")\n message.rejectedDataPoints = parseInt(object.rejectedDataPoints, 10);\n else if (typeof object.rejectedDataPoints === \"number\")\n message.rejectedDataPoints = object.rejectedDataPoints;\n else if (typeof object.rejectedDataPoints === \"object\")\n message.rejectedDataPoints = new $util.LongBits(object.rejectedDataPoints.low >>> 0, object.rejectedDataPoints.high >>> 0).toNumber();\n if (object.errorMessage != null)\n message.errorMessage = String(object.errorMessage);\n return message;\n };\n /**\n * Creates a plain object from an ExportMetricsPartialSuccess message. Also converts values to other types if specified.\n * @function toObject\n * @memberof opentelemetry.proto.collector.metrics.v1.ExportMetricsPartialSuccess\n * @static\n * @param {opentelemetry.proto.collector.metrics.v1.ExportMetricsPartialSuccess} message ExportMetricsPartialSuccess\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n ExportMetricsPartialSuccess.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n var object = {};\n if (options.defaults) {\n if ($util.Long) {\n var long = new $util.Long(0, 0, false);\n object.rejectedDataPoints = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n }\n else\n object.rejectedDataPoints = options.longs === String ? \"0\" : 0;\n object.errorMessage = \"\";\n }\n if (message.rejectedDataPoints != null && message.hasOwnProperty(\"rejectedDataPoints\"))\n if (typeof message.rejectedDataPoints === \"number\")\n object.rejectedDataPoints = options.longs === String ? String(message.rejectedDataPoints) : message.rejectedDataPoints;\n else\n object.rejectedDataPoints = options.longs === String ? $util.Long.prototype.toString.call(message.rejectedDataPoints) : options.longs === Number ? new $util.LongBits(message.rejectedDataPoints.low >>> 0, message.rejectedDataPoints.high >>> 0).toNumber() : message.rejectedDataPoints;\n if (message.errorMessage != null && message.hasOwnProperty(\"errorMessage\"))\n object.errorMessage = message.errorMessage;\n return object;\n };\n /**\n * Converts this ExportMetricsPartialSuccess to JSON.\n * @function toJSON\n * @memberof opentelemetry.proto.collector.metrics.v1.ExportMetricsPartialSuccess\n * @instance\n * @returns {Object.} JSON object\n */\n ExportMetricsPartialSuccess.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n /**\n * Gets the default type url for ExportMetricsPartialSuccess\n * @function getTypeUrl\n * @memberof opentelemetry.proto.collector.metrics.v1.ExportMetricsPartialSuccess\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n ExportMetricsPartialSuccess.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = \"type.googleapis.com\";\n }\n return typeUrlPrefix + \"/opentelemetry.proto.collector.metrics.v1.ExportMetricsPartialSuccess\";\n };\n return ExportMetricsPartialSuccess;\n })();\n return v1;\n })();\n return metrics;\n })();\n collector.logs = (function () {\n /**\n * Namespace logs.\n * @memberof opentelemetry.proto.collector\n * @namespace\n */\n var logs = {};\n logs.v1 = (function () {\n /**\n * Namespace v1.\n * @memberof opentelemetry.proto.collector.logs\n * @namespace\n */\n var v1 = {};\n v1.LogsService = (function () {\n /**\n * Constructs a new LogsService service.\n * @memberof opentelemetry.proto.collector.logs.v1\n * @classdesc Represents a LogsService\n * @extends $protobuf.rpc.Service\n * @constructor\n * @param {$protobuf.RPCImpl} rpcImpl RPC implementation\n * @param {boolean} [requestDelimited=false] Whether requests are length-delimited\n * @param {boolean} [responseDelimited=false] Whether responses are length-delimited\n */\n function LogsService(rpcImpl, requestDelimited, responseDelimited) {\n $protobuf.rpc.Service.call(this, rpcImpl, requestDelimited, responseDelimited);\n }\n (LogsService.prototype = Object.create($protobuf.rpc.Service.prototype)).constructor = LogsService;\n /**\n * Creates new LogsService service using the specified rpc implementation.\n * @function create\n * @memberof opentelemetry.proto.collector.logs.v1.LogsService\n * @static\n * @param {$protobuf.RPCImpl} rpcImpl RPC implementation\n * @param {boolean} [requestDelimited=false] Whether requests are length-delimited\n * @param {boolean} [responseDelimited=false] Whether responses are length-delimited\n * @returns {LogsService} RPC service. Useful where requests and/or responses are streamed.\n */\n LogsService.create = function create(rpcImpl, requestDelimited, responseDelimited) {\n return new this(rpcImpl, requestDelimited, responseDelimited);\n };\n /**\n * Callback as used by {@link opentelemetry.proto.collector.logs.v1.LogsService#export_}.\n * @memberof opentelemetry.proto.collector.logs.v1.LogsService\n * @typedef ExportCallback\n * @type {function}\n * @param {Error|null} error Error, if any\n * @param {opentelemetry.proto.collector.logs.v1.ExportLogsServiceResponse} [response] ExportLogsServiceResponse\n */\n /**\n * Calls Export.\n * @function export\n * @memberof opentelemetry.proto.collector.logs.v1.LogsService\n * @instance\n * @param {opentelemetry.proto.collector.logs.v1.IExportLogsServiceRequest} request ExportLogsServiceRequest message or plain object\n * @param {opentelemetry.proto.collector.logs.v1.LogsService.ExportCallback} callback Node-style callback called with the error, if any, and ExportLogsServiceResponse\n * @returns {undefined}\n * @variation 1\n */\n Object.defineProperty(LogsService.prototype[\"export\"] = function export_(request, callback) {\n return this.rpcCall(export_, $root.opentelemetry.proto.collector.logs.v1.ExportLogsServiceRequest, $root.opentelemetry.proto.collector.logs.v1.ExportLogsServiceResponse, request, callback);\n }, \"name\", { value: \"Export\" });\n /**\n * Calls Export.\n * @function export\n * @memberof opentelemetry.proto.collector.logs.v1.LogsService\n * @instance\n * @param {opentelemetry.proto.collector.logs.v1.IExportLogsServiceRequest} request ExportLogsServiceRequest message or plain object\n * @returns {Promise} Promise\n * @variation 2\n */\n return LogsService;\n })();\n v1.ExportLogsServiceRequest = (function () {\n /**\n * Properties of an ExportLogsServiceRequest.\n * @memberof opentelemetry.proto.collector.logs.v1\n * @interface IExportLogsServiceRequest\n * @property {Array.|null} [resourceLogs] ExportLogsServiceRequest resourceLogs\n */\n /**\n * Constructs a new ExportLogsServiceRequest.\n * @memberof opentelemetry.proto.collector.logs.v1\n * @classdesc Represents an ExportLogsServiceRequest.\n * @implements IExportLogsServiceRequest\n * @constructor\n * @param {opentelemetry.proto.collector.logs.v1.IExportLogsServiceRequest=} [properties] Properties to set\n */\n function ExportLogsServiceRequest(properties) {\n this.resourceLogs = [];\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n /**\n * ExportLogsServiceRequest resourceLogs.\n * @member {Array.} resourceLogs\n * @memberof opentelemetry.proto.collector.logs.v1.ExportLogsServiceRequest\n * @instance\n */\n ExportLogsServiceRequest.prototype.resourceLogs = $util.emptyArray;\n /**\n * Creates a new ExportLogsServiceRequest instance using the specified properties.\n * @function create\n * @memberof opentelemetry.proto.collector.logs.v1.ExportLogsServiceRequest\n * @static\n * @param {opentelemetry.proto.collector.logs.v1.IExportLogsServiceRequest=} [properties] Properties to set\n * @returns {opentelemetry.proto.collector.logs.v1.ExportLogsServiceRequest} ExportLogsServiceRequest instance\n */\n ExportLogsServiceRequest.create = function create(properties) {\n return new ExportLogsServiceRequest(properties);\n };\n /**\n * Encodes the specified ExportLogsServiceRequest message. Does not implicitly {@link opentelemetry.proto.collector.logs.v1.ExportLogsServiceRequest.verify|verify} messages.\n * @function encode\n * @memberof opentelemetry.proto.collector.logs.v1.ExportLogsServiceRequest\n * @static\n * @param {opentelemetry.proto.collector.logs.v1.IExportLogsServiceRequest} message ExportLogsServiceRequest message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ExportLogsServiceRequest.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.resourceLogs != null && message.resourceLogs.length)\n for (var i = 0; i < message.resourceLogs.length; ++i)\n $root.opentelemetry.proto.logs.v1.ResourceLogs.encode(message.resourceLogs[i], writer.uint32(/* id 1, wireType 2 =*/ 10).fork()).ldelim();\n return writer;\n };\n /**\n * Encodes the specified ExportLogsServiceRequest message, length delimited. Does not implicitly {@link opentelemetry.proto.collector.logs.v1.ExportLogsServiceRequest.verify|verify} messages.\n * @function encodeDelimited\n * @memberof opentelemetry.proto.collector.logs.v1.ExportLogsServiceRequest\n * @static\n * @param {opentelemetry.proto.collector.logs.v1.IExportLogsServiceRequest} message ExportLogsServiceRequest message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ExportLogsServiceRequest.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n /**\n * Decodes an ExportLogsServiceRequest message from the specified reader or buffer.\n * @function decode\n * @memberof opentelemetry.proto.collector.logs.v1.ExportLogsServiceRequest\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {opentelemetry.proto.collector.logs.v1.ExportLogsServiceRequest} ExportLogsServiceRequest\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ExportLogsServiceRequest.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.opentelemetry.proto.collector.logs.v1.ExportLogsServiceRequest();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (!(message.resourceLogs && message.resourceLogs.length))\n message.resourceLogs = [];\n message.resourceLogs.push($root.opentelemetry.proto.logs.v1.ResourceLogs.decode(reader, reader.uint32()));\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n /**\n * Decodes an ExportLogsServiceRequest message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof opentelemetry.proto.collector.logs.v1.ExportLogsServiceRequest\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {opentelemetry.proto.collector.logs.v1.ExportLogsServiceRequest} ExportLogsServiceRequest\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ExportLogsServiceRequest.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n /**\n * Verifies an ExportLogsServiceRequest message.\n * @function verify\n * @memberof opentelemetry.proto.collector.logs.v1.ExportLogsServiceRequest\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n ExportLogsServiceRequest.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.resourceLogs != null && message.hasOwnProperty(\"resourceLogs\")) {\n if (!Array.isArray(message.resourceLogs))\n return \"resourceLogs: array expected\";\n for (var i = 0; i < message.resourceLogs.length; ++i) {\n var error = $root.opentelemetry.proto.logs.v1.ResourceLogs.verify(message.resourceLogs[i]);\n if (error)\n return \"resourceLogs.\" + error;\n }\n }\n return null;\n };\n /**\n * Creates an ExportLogsServiceRequest message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof opentelemetry.proto.collector.logs.v1.ExportLogsServiceRequest\n * @static\n * @param {Object.} object Plain object\n * @returns {opentelemetry.proto.collector.logs.v1.ExportLogsServiceRequest} ExportLogsServiceRequest\n */\n ExportLogsServiceRequest.fromObject = function fromObject(object) {\n if (object instanceof $root.opentelemetry.proto.collector.logs.v1.ExportLogsServiceRequest)\n return object;\n var message = new $root.opentelemetry.proto.collector.logs.v1.ExportLogsServiceRequest();\n if (object.resourceLogs) {\n if (!Array.isArray(object.resourceLogs))\n throw TypeError(\".opentelemetry.proto.collector.logs.v1.ExportLogsServiceRequest.resourceLogs: array expected\");\n message.resourceLogs = [];\n for (var i = 0; i < object.resourceLogs.length; ++i) {\n if (typeof object.resourceLogs[i] !== \"object\")\n throw TypeError(\".opentelemetry.proto.collector.logs.v1.ExportLogsServiceRequest.resourceLogs: object expected\");\n message.resourceLogs[i] = $root.opentelemetry.proto.logs.v1.ResourceLogs.fromObject(object.resourceLogs[i]);\n }\n }\n return message;\n };\n /**\n * Creates a plain object from an ExportLogsServiceRequest message. Also converts values to other types if specified.\n * @function toObject\n * @memberof opentelemetry.proto.collector.logs.v1.ExportLogsServiceRequest\n * @static\n * @param {opentelemetry.proto.collector.logs.v1.ExportLogsServiceRequest} message ExportLogsServiceRequest\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n ExportLogsServiceRequest.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n var object = {};\n if (options.arrays || options.defaults)\n object.resourceLogs = [];\n if (message.resourceLogs && message.resourceLogs.length) {\n object.resourceLogs = [];\n for (var j = 0; j < message.resourceLogs.length; ++j)\n object.resourceLogs[j] = $root.opentelemetry.proto.logs.v1.ResourceLogs.toObject(message.resourceLogs[j], options);\n }\n return object;\n };\n /**\n * Converts this ExportLogsServiceRequest to JSON.\n * @function toJSON\n * @memberof opentelemetry.proto.collector.logs.v1.ExportLogsServiceRequest\n * @instance\n * @returns {Object.} JSON object\n */\n ExportLogsServiceRequest.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n /**\n * Gets the default type url for ExportLogsServiceRequest\n * @function getTypeUrl\n * @memberof opentelemetry.proto.collector.logs.v1.ExportLogsServiceRequest\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n ExportLogsServiceRequest.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = \"type.googleapis.com\";\n }\n return typeUrlPrefix + \"/opentelemetry.proto.collector.logs.v1.ExportLogsServiceRequest\";\n };\n return ExportLogsServiceRequest;\n })();\n v1.ExportLogsServiceResponse = (function () {\n /**\n * Properties of an ExportLogsServiceResponse.\n * @memberof opentelemetry.proto.collector.logs.v1\n * @interface IExportLogsServiceResponse\n * @property {opentelemetry.proto.collector.logs.v1.IExportLogsPartialSuccess|null} [partialSuccess] ExportLogsServiceResponse partialSuccess\n */\n /**\n * Constructs a new ExportLogsServiceResponse.\n * @memberof opentelemetry.proto.collector.logs.v1\n * @classdesc Represents an ExportLogsServiceResponse.\n * @implements IExportLogsServiceResponse\n * @constructor\n * @param {opentelemetry.proto.collector.logs.v1.IExportLogsServiceResponse=} [properties] Properties to set\n */\n function ExportLogsServiceResponse(properties) {\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n /**\n * ExportLogsServiceResponse partialSuccess.\n * @member {opentelemetry.proto.collector.logs.v1.IExportLogsPartialSuccess|null|undefined} partialSuccess\n * @memberof opentelemetry.proto.collector.logs.v1.ExportLogsServiceResponse\n * @instance\n */\n ExportLogsServiceResponse.prototype.partialSuccess = null;\n /**\n * Creates a new ExportLogsServiceResponse instance using the specified properties.\n * @function create\n * @memberof opentelemetry.proto.collector.logs.v1.ExportLogsServiceResponse\n * @static\n * @param {opentelemetry.proto.collector.logs.v1.IExportLogsServiceResponse=} [properties] Properties to set\n * @returns {opentelemetry.proto.collector.logs.v1.ExportLogsServiceResponse} ExportLogsServiceResponse instance\n */\n ExportLogsServiceResponse.create = function create(properties) {\n return new ExportLogsServiceResponse(properties);\n };\n /**\n * Encodes the specified ExportLogsServiceResponse message. Does not implicitly {@link opentelemetry.proto.collector.logs.v1.ExportLogsServiceResponse.verify|verify} messages.\n * @function encode\n * @memberof opentelemetry.proto.collector.logs.v1.ExportLogsServiceResponse\n * @static\n * @param {opentelemetry.proto.collector.logs.v1.IExportLogsServiceResponse} message ExportLogsServiceResponse message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ExportLogsServiceResponse.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.partialSuccess != null && Object.hasOwnProperty.call(message, \"partialSuccess\"))\n $root.opentelemetry.proto.collector.logs.v1.ExportLogsPartialSuccess.encode(message.partialSuccess, writer.uint32(/* id 1, wireType 2 =*/ 10).fork()).ldelim();\n return writer;\n };\n /**\n * Encodes the specified ExportLogsServiceResponse message, length delimited. Does not implicitly {@link opentelemetry.proto.collector.logs.v1.ExportLogsServiceResponse.verify|verify} messages.\n * @function encodeDelimited\n * @memberof opentelemetry.proto.collector.logs.v1.ExportLogsServiceResponse\n * @static\n * @param {opentelemetry.proto.collector.logs.v1.IExportLogsServiceResponse} message ExportLogsServiceResponse message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ExportLogsServiceResponse.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n /**\n * Decodes an ExportLogsServiceResponse message from the specified reader or buffer.\n * @function decode\n * @memberof opentelemetry.proto.collector.logs.v1.ExportLogsServiceResponse\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {opentelemetry.proto.collector.logs.v1.ExportLogsServiceResponse} ExportLogsServiceResponse\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ExportLogsServiceResponse.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.opentelemetry.proto.collector.logs.v1.ExportLogsServiceResponse();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n message.partialSuccess = $root.opentelemetry.proto.collector.logs.v1.ExportLogsPartialSuccess.decode(reader, reader.uint32());\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n /**\n * Decodes an ExportLogsServiceResponse message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof opentelemetry.proto.collector.logs.v1.ExportLogsServiceResponse\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {opentelemetry.proto.collector.logs.v1.ExportLogsServiceResponse} ExportLogsServiceResponse\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ExportLogsServiceResponse.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n /**\n * Verifies an ExportLogsServiceResponse message.\n * @function verify\n * @memberof opentelemetry.proto.collector.logs.v1.ExportLogsServiceResponse\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n ExportLogsServiceResponse.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.partialSuccess != null && message.hasOwnProperty(\"partialSuccess\")) {\n var error = $root.opentelemetry.proto.collector.logs.v1.ExportLogsPartialSuccess.verify(message.partialSuccess);\n if (error)\n return \"partialSuccess.\" + error;\n }\n return null;\n };\n /**\n * Creates an ExportLogsServiceResponse message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof opentelemetry.proto.collector.logs.v1.ExportLogsServiceResponse\n * @static\n * @param {Object.} object Plain object\n * @returns {opentelemetry.proto.collector.logs.v1.ExportLogsServiceResponse} ExportLogsServiceResponse\n */\n ExportLogsServiceResponse.fromObject = function fromObject(object) {\n if (object instanceof $root.opentelemetry.proto.collector.logs.v1.ExportLogsServiceResponse)\n return object;\n var message = new $root.opentelemetry.proto.collector.logs.v1.ExportLogsServiceResponse();\n if (object.partialSuccess != null) {\n if (typeof object.partialSuccess !== \"object\")\n throw TypeError(\".opentelemetry.proto.collector.logs.v1.ExportLogsServiceResponse.partialSuccess: object expected\");\n message.partialSuccess = $root.opentelemetry.proto.collector.logs.v1.ExportLogsPartialSuccess.fromObject(object.partialSuccess);\n }\n return message;\n };\n /**\n * Creates a plain object from an ExportLogsServiceResponse message. Also converts values to other types if specified.\n * @function toObject\n * @memberof opentelemetry.proto.collector.logs.v1.ExportLogsServiceResponse\n * @static\n * @param {opentelemetry.proto.collector.logs.v1.ExportLogsServiceResponse} message ExportLogsServiceResponse\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n ExportLogsServiceResponse.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n var object = {};\n if (options.defaults)\n object.partialSuccess = null;\n if (message.partialSuccess != null && message.hasOwnProperty(\"partialSuccess\"))\n object.partialSuccess = $root.opentelemetry.proto.collector.logs.v1.ExportLogsPartialSuccess.toObject(message.partialSuccess, options);\n return object;\n };\n /**\n * Converts this ExportLogsServiceResponse to JSON.\n * @function toJSON\n * @memberof opentelemetry.proto.collector.logs.v1.ExportLogsServiceResponse\n * @instance\n * @returns {Object.} JSON object\n */\n ExportLogsServiceResponse.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n /**\n * Gets the default type url for ExportLogsServiceResponse\n * @function getTypeUrl\n * @memberof opentelemetry.proto.collector.logs.v1.ExportLogsServiceResponse\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n ExportLogsServiceResponse.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = \"type.googleapis.com\";\n }\n return typeUrlPrefix + \"/opentelemetry.proto.collector.logs.v1.ExportLogsServiceResponse\";\n };\n return ExportLogsServiceResponse;\n })();\n v1.ExportLogsPartialSuccess = (function () {\n /**\n * Properties of an ExportLogsPartialSuccess.\n * @memberof opentelemetry.proto.collector.logs.v1\n * @interface IExportLogsPartialSuccess\n * @property {number|Long|null} [rejectedLogRecords] ExportLogsPartialSuccess rejectedLogRecords\n * @property {string|null} [errorMessage] ExportLogsPartialSuccess errorMessage\n */\n /**\n * Constructs a new ExportLogsPartialSuccess.\n * @memberof opentelemetry.proto.collector.logs.v1\n * @classdesc Represents an ExportLogsPartialSuccess.\n * @implements IExportLogsPartialSuccess\n * @constructor\n * @param {opentelemetry.proto.collector.logs.v1.IExportLogsPartialSuccess=} [properties] Properties to set\n */\n function ExportLogsPartialSuccess(properties) {\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n /**\n * ExportLogsPartialSuccess rejectedLogRecords.\n * @member {number|Long|null|undefined} rejectedLogRecords\n * @memberof opentelemetry.proto.collector.logs.v1.ExportLogsPartialSuccess\n * @instance\n */\n ExportLogsPartialSuccess.prototype.rejectedLogRecords = null;\n /**\n * ExportLogsPartialSuccess errorMessage.\n * @member {string|null|undefined} errorMessage\n * @memberof opentelemetry.proto.collector.logs.v1.ExportLogsPartialSuccess\n * @instance\n */\n ExportLogsPartialSuccess.prototype.errorMessage = null;\n /**\n * Creates a new ExportLogsPartialSuccess instance using the specified properties.\n * @function create\n * @memberof opentelemetry.proto.collector.logs.v1.ExportLogsPartialSuccess\n * @static\n * @param {opentelemetry.proto.collector.logs.v1.IExportLogsPartialSuccess=} [properties] Properties to set\n * @returns {opentelemetry.proto.collector.logs.v1.ExportLogsPartialSuccess} ExportLogsPartialSuccess instance\n */\n ExportLogsPartialSuccess.create = function create(properties) {\n return new ExportLogsPartialSuccess(properties);\n };\n /**\n * Encodes the specified ExportLogsPartialSuccess message. Does not implicitly {@link opentelemetry.proto.collector.logs.v1.ExportLogsPartialSuccess.verify|verify} messages.\n * @function encode\n * @memberof opentelemetry.proto.collector.logs.v1.ExportLogsPartialSuccess\n * @static\n * @param {opentelemetry.proto.collector.logs.v1.IExportLogsPartialSuccess} message ExportLogsPartialSuccess message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ExportLogsPartialSuccess.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.rejectedLogRecords != null && Object.hasOwnProperty.call(message, \"rejectedLogRecords\"))\n writer.uint32(/* id 1, wireType 0 =*/ 8).int64(message.rejectedLogRecords);\n if (message.errorMessage != null && Object.hasOwnProperty.call(message, \"errorMessage\"))\n writer.uint32(/* id 2, wireType 2 =*/ 18).string(message.errorMessage);\n return writer;\n };\n /**\n * Encodes the specified ExportLogsPartialSuccess message, length delimited. Does not implicitly {@link opentelemetry.proto.collector.logs.v1.ExportLogsPartialSuccess.verify|verify} messages.\n * @function encodeDelimited\n * @memberof opentelemetry.proto.collector.logs.v1.ExportLogsPartialSuccess\n * @static\n * @param {opentelemetry.proto.collector.logs.v1.IExportLogsPartialSuccess} message ExportLogsPartialSuccess message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ExportLogsPartialSuccess.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n /**\n * Decodes an ExportLogsPartialSuccess message from the specified reader or buffer.\n * @function decode\n * @memberof opentelemetry.proto.collector.logs.v1.ExportLogsPartialSuccess\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {opentelemetry.proto.collector.logs.v1.ExportLogsPartialSuccess} ExportLogsPartialSuccess\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ExportLogsPartialSuccess.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.opentelemetry.proto.collector.logs.v1.ExportLogsPartialSuccess();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n message.rejectedLogRecords = reader.int64();\n break;\n }\n case 2: {\n message.errorMessage = reader.string();\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n /**\n * Decodes an ExportLogsPartialSuccess message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof opentelemetry.proto.collector.logs.v1.ExportLogsPartialSuccess\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {opentelemetry.proto.collector.logs.v1.ExportLogsPartialSuccess} ExportLogsPartialSuccess\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ExportLogsPartialSuccess.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n /**\n * Verifies an ExportLogsPartialSuccess message.\n * @function verify\n * @memberof opentelemetry.proto.collector.logs.v1.ExportLogsPartialSuccess\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n ExportLogsPartialSuccess.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.rejectedLogRecords != null && message.hasOwnProperty(\"rejectedLogRecords\"))\n if (!$util.isInteger(message.rejectedLogRecords) && !(message.rejectedLogRecords && $util.isInteger(message.rejectedLogRecords.low) && $util.isInteger(message.rejectedLogRecords.high)))\n return \"rejectedLogRecords: integer|Long expected\";\n if (message.errorMessage != null && message.hasOwnProperty(\"errorMessage\"))\n if (!$util.isString(message.errorMessage))\n return \"errorMessage: string expected\";\n return null;\n };\n /**\n * Creates an ExportLogsPartialSuccess message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof opentelemetry.proto.collector.logs.v1.ExportLogsPartialSuccess\n * @static\n * @param {Object.} object Plain object\n * @returns {opentelemetry.proto.collector.logs.v1.ExportLogsPartialSuccess} ExportLogsPartialSuccess\n */\n ExportLogsPartialSuccess.fromObject = function fromObject(object) {\n if (object instanceof $root.opentelemetry.proto.collector.logs.v1.ExportLogsPartialSuccess)\n return object;\n var message = new $root.opentelemetry.proto.collector.logs.v1.ExportLogsPartialSuccess();\n if (object.rejectedLogRecords != null)\n if ($util.Long)\n (message.rejectedLogRecords = $util.Long.fromValue(object.rejectedLogRecords)).unsigned = false;\n else if (typeof object.rejectedLogRecords === \"string\")\n message.rejectedLogRecords = parseInt(object.rejectedLogRecords, 10);\n else if (typeof object.rejectedLogRecords === \"number\")\n message.rejectedLogRecords = object.rejectedLogRecords;\n else if (typeof object.rejectedLogRecords === \"object\")\n message.rejectedLogRecords = new $util.LongBits(object.rejectedLogRecords.low >>> 0, object.rejectedLogRecords.high >>> 0).toNumber();\n if (object.errorMessage != null)\n message.errorMessage = String(object.errorMessage);\n return message;\n };\n /**\n * Creates a plain object from an ExportLogsPartialSuccess message. Also converts values to other types if specified.\n * @function toObject\n * @memberof opentelemetry.proto.collector.logs.v1.ExportLogsPartialSuccess\n * @static\n * @param {opentelemetry.proto.collector.logs.v1.ExportLogsPartialSuccess} message ExportLogsPartialSuccess\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n ExportLogsPartialSuccess.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n var object = {};\n if (options.defaults) {\n if ($util.Long) {\n var long = new $util.Long(0, 0, false);\n object.rejectedLogRecords = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n }\n else\n object.rejectedLogRecords = options.longs === String ? \"0\" : 0;\n object.errorMessage = \"\";\n }\n if (message.rejectedLogRecords != null && message.hasOwnProperty(\"rejectedLogRecords\"))\n if (typeof message.rejectedLogRecords === \"number\")\n object.rejectedLogRecords = options.longs === String ? String(message.rejectedLogRecords) : message.rejectedLogRecords;\n else\n object.rejectedLogRecords = options.longs === String ? $util.Long.prototype.toString.call(message.rejectedLogRecords) : options.longs === Number ? new $util.LongBits(message.rejectedLogRecords.low >>> 0, message.rejectedLogRecords.high >>> 0).toNumber() : message.rejectedLogRecords;\n if (message.errorMessage != null && message.hasOwnProperty(\"errorMessage\"))\n object.errorMessage = message.errorMessage;\n return object;\n };\n /**\n * Converts this ExportLogsPartialSuccess to JSON.\n * @function toJSON\n * @memberof opentelemetry.proto.collector.logs.v1.ExportLogsPartialSuccess\n * @instance\n * @returns {Object.} JSON object\n */\n ExportLogsPartialSuccess.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n /**\n * Gets the default type url for ExportLogsPartialSuccess\n * @function getTypeUrl\n * @memberof opentelemetry.proto.collector.logs.v1.ExportLogsPartialSuccess\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n ExportLogsPartialSuccess.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = \"type.googleapis.com\";\n }\n return typeUrlPrefix + \"/opentelemetry.proto.collector.logs.v1.ExportLogsPartialSuccess\";\n };\n return ExportLogsPartialSuccess;\n })();\n return v1;\n })();\n return logs;\n })();\n return collector;\n })();\n proto.metrics = (function () {\n /**\n * Namespace metrics.\n * @memberof opentelemetry.proto\n * @namespace\n */\n var metrics = {};\n metrics.v1 = (function () {\n /**\n * Namespace v1.\n * @memberof opentelemetry.proto.metrics\n * @namespace\n */\n var v1 = {};\n v1.MetricsData = (function () {\n /**\n * Properties of a MetricsData.\n * @memberof opentelemetry.proto.metrics.v1\n * @interface IMetricsData\n * @property {Array.|null} [resourceMetrics] MetricsData resourceMetrics\n */\n /**\n * Constructs a new MetricsData.\n * @memberof opentelemetry.proto.metrics.v1\n * @classdesc Represents a MetricsData.\n * @implements IMetricsData\n * @constructor\n * @param {opentelemetry.proto.metrics.v1.IMetricsData=} [properties] Properties to set\n */\n function MetricsData(properties) {\n this.resourceMetrics = [];\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n /**\n * MetricsData resourceMetrics.\n * @member {Array.} resourceMetrics\n * @memberof opentelemetry.proto.metrics.v1.MetricsData\n * @instance\n */\n MetricsData.prototype.resourceMetrics = $util.emptyArray;\n /**\n * Creates a new MetricsData instance using the specified properties.\n * @function create\n * @memberof opentelemetry.proto.metrics.v1.MetricsData\n * @static\n * @param {opentelemetry.proto.metrics.v1.IMetricsData=} [properties] Properties to set\n * @returns {opentelemetry.proto.metrics.v1.MetricsData} MetricsData instance\n */\n MetricsData.create = function create(properties) {\n return new MetricsData(properties);\n };\n /**\n * Encodes the specified MetricsData message. Does not implicitly {@link opentelemetry.proto.metrics.v1.MetricsData.verify|verify} messages.\n * @function encode\n * @memberof opentelemetry.proto.metrics.v1.MetricsData\n * @static\n * @param {opentelemetry.proto.metrics.v1.IMetricsData} message MetricsData message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n MetricsData.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.resourceMetrics != null && message.resourceMetrics.length)\n for (var i = 0; i < message.resourceMetrics.length; ++i)\n $root.opentelemetry.proto.metrics.v1.ResourceMetrics.encode(message.resourceMetrics[i], writer.uint32(/* id 1, wireType 2 =*/ 10).fork()).ldelim();\n return writer;\n };\n /**\n * Encodes the specified MetricsData message, length delimited. Does not implicitly {@link opentelemetry.proto.metrics.v1.MetricsData.verify|verify} messages.\n * @function encodeDelimited\n * @memberof opentelemetry.proto.metrics.v1.MetricsData\n * @static\n * @param {opentelemetry.proto.metrics.v1.IMetricsData} message MetricsData message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n MetricsData.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n /**\n * Decodes a MetricsData message from the specified reader or buffer.\n * @function decode\n * @memberof opentelemetry.proto.metrics.v1.MetricsData\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {opentelemetry.proto.metrics.v1.MetricsData} MetricsData\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n MetricsData.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.opentelemetry.proto.metrics.v1.MetricsData();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (!(message.resourceMetrics && message.resourceMetrics.length))\n message.resourceMetrics = [];\n message.resourceMetrics.push($root.opentelemetry.proto.metrics.v1.ResourceMetrics.decode(reader, reader.uint32()));\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n /**\n * Decodes a MetricsData message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof opentelemetry.proto.metrics.v1.MetricsData\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {opentelemetry.proto.metrics.v1.MetricsData} MetricsData\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n MetricsData.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n /**\n * Verifies a MetricsData message.\n * @function verify\n * @memberof opentelemetry.proto.metrics.v1.MetricsData\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n MetricsData.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.resourceMetrics != null && message.hasOwnProperty(\"resourceMetrics\")) {\n if (!Array.isArray(message.resourceMetrics))\n return \"resourceMetrics: array expected\";\n for (var i = 0; i < message.resourceMetrics.length; ++i) {\n var error = $root.opentelemetry.proto.metrics.v1.ResourceMetrics.verify(message.resourceMetrics[i]);\n if (error)\n return \"resourceMetrics.\" + error;\n }\n }\n return null;\n };\n /**\n * Creates a MetricsData message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof opentelemetry.proto.metrics.v1.MetricsData\n * @static\n * @param {Object.} object Plain object\n * @returns {opentelemetry.proto.metrics.v1.MetricsData} MetricsData\n */\n MetricsData.fromObject = function fromObject(object) {\n if (object instanceof $root.opentelemetry.proto.metrics.v1.MetricsData)\n return object;\n var message = new $root.opentelemetry.proto.metrics.v1.MetricsData();\n if (object.resourceMetrics) {\n if (!Array.isArray(object.resourceMetrics))\n throw TypeError(\".opentelemetry.proto.metrics.v1.MetricsData.resourceMetrics: array expected\");\n message.resourceMetrics = [];\n for (var i = 0; i < object.resourceMetrics.length; ++i) {\n if (typeof object.resourceMetrics[i] !== \"object\")\n throw TypeError(\".opentelemetry.proto.metrics.v1.MetricsData.resourceMetrics: object expected\");\n message.resourceMetrics[i] = $root.opentelemetry.proto.metrics.v1.ResourceMetrics.fromObject(object.resourceMetrics[i]);\n }\n }\n return message;\n };\n /**\n * Creates a plain object from a MetricsData message. Also converts values to other types if specified.\n * @function toObject\n * @memberof opentelemetry.proto.metrics.v1.MetricsData\n * @static\n * @param {opentelemetry.proto.metrics.v1.MetricsData} message MetricsData\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n MetricsData.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n var object = {};\n if (options.arrays || options.defaults)\n object.resourceMetrics = [];\n if (message.resourceMetrics && message.resourceMetrics.length) {\n object.resourceMetrics = [];\n for (var j = 0; j < message.resourceMetrics.length; ++j)\n object.resourceMetrics[j] = $root.opentelemetry.proto.metrics.v1.ResourceMetrics.toObject(message.resourceMetrics[j], options);\n }\n return object;\n };\n /**\n * Converts this MetricsData to JSON.\n * @function toJSON\n * @memberof opentelemetry.proto.metrics.v1.MetricsData\n * @instance\n * @returns {Object.} JSON object\n */\n MetricsData.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n /**\n * Gets the default type url for MetricsData\n * @function getTypeUrl\n * @memberof opentelemetry.proto.metrics.v1.MetricsData\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n MetricsData.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = \"type.googleapis.com\";\n }\n return typeUrlPrefix + \"/opentelemetry.proto.metrics.v1.MetricsData\";\n };\n return MetricsData;\n })();\n v1.ResourceMetrics = (function () {\n /**\n * Properties of a ResourceMetrics.\n * @memberof opentelemetry.proto.metrics.v1\n * @interface IResourceMetrics\n * @property {opentelemetry.proto.resource.v1.IResource|null} [resource] ResourceMetrics resource\n * @property {Array.|null} [scopeMetrics] ResourceMetrics scopeMetrics\n * @property {string|null} [schemaUrl] ResourceMetrics schemaUrl\n */\n /**\n * Constructs a new ResourceMetrics.\n * @memberof opentelemetry.proto.metrics.v1\n * @classdesc Represents a ResourceMetrics.\n * @implements IResourceMetrics\n * @constructor\n * @param {opentelemetry.proto.metrics.v1.IResourceMetrics=} [properties] Properties to set\n */\n function ResourceMetrics(properties) {\n this.scopeMetrics = [];\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n /**\n * ResourceMetrics resource.\n * @member {opentelemetry.proto.resource.v1.IResource|null|undefined} resource\n * @memberof opentelemetry.proto.metrics.v1.ResourceMetrics\n * @instance\n */\n ResourceMetrics.prototype.resource = null;\n /**\n * ResourceMetrics scopeMetrics.\n * @member {Array.} scopeMetrics\n * @memberof opentelemetry.proto.metrics.v1.ResourceMetrics\n * @instance\n */\n ResourceMetrics.prototype.scopeMetrics = $util.emptyArray;\n /**\n * ResourceMetrics schemaUrl.\n * @member {string|null|undefined} schemaUrl\n * @memberof opentelemetry.proto.metrics.v1.ResourceMetrics\n * @instance\n */\n ResourceMetrics.prototype.schemaUrl = null;\n /**\n * Creates a new ResourceMetrics instance using the specified properties.\n * @function create\n * @memberof opentelemetry.proto.metrics.v1.ResourceMetrics\n * @static\n * @param {opentelemetry.proto.metrics.v1.IResourceMetrics=} [properties] Properties to set\n * @returns {opentelemetry.proto.metrics.v1.ResourceMetrics} ResourceMetrics instance\n */\n ResourceMetrics.create = function create(properties) {\n return new ResourceMetrics(properties);\n };\n /**\n * Encodes the specified ResourceMetrics message. Does not implicitly {@link opentelemetry.proto.metrics.v1.ResourceMetrics.verify|verify} messages.\n * @function encode\n * @memberof opentelemetry.proto.metrics.v1.ResourceMetrics\n * @static\n * @param {opentelemetry.proto.metrics.v1.IResourceMetrics} message ResourceMetrics message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ResourceMetrics.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.resource != null && Object.hasOwnProperty.call(message, \"resource\"))\n $root.opentelemetry.proto.resource.v1.Resource.encode(message.resource, writer.uint32(/* id 1, wireType 2 =*/ 10).fork()).ldelim();\n if (message.scopeMetrics != null && message.scopeMetrics.length)\n for (var i = 0; i < message.scopeMetrics.length; ++i)\n $root.opentelemetry.proto.metrics.v1.ScopeMetrics.encode(message.scopeMetrics[i], writer.uint32(/* id 2, wireType 2 =*/ 18).fork()).ldelim();\n if (message.schemaUrl != null && Object.hasOwnProperty.call(message, \"schemaUrl\"))\n writer.uint32(/* id 3, wireType 2 =*/ 26).string(message.schemaUrl);\n return writer;\n };\n /**\n * Encodes the specified ResourceMetrics message, length delimited. Does not implicitly {@link opentelemetry.proto.metrics.v1.ResourceMetrics.verify|verify} messages.\n * @function encodeDelimited\n * @memberof opentelemetry.proto.metrics.v1.ResourceMetrics\n * @static\n * @param {opentelemetry.proto.metrics.v1.IResourceMetrics} message ResourceMetrics message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ResourceMetrics.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n /**\n * Decodes a ResourceMetrics message from the specified reader or buffer.\n * @function decode\n * @memberof opentelemetry.proto.metrics.v1.ResourceMetrics\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {opentelemetry.proto.metrics.v1.ResourceMetrics} ResourceMetrics\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ResourceMetrics.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.opentelemetry.proto.metrics.v1.ResourceMetrics();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n message.resource = $root.opentelemetry.proto.resource.v1.Resource.decode(reader, reader.uint32());\n break;\n }\n case 2: {\n if (!(message.scopeMetrics && message.scopeMetrics.length))\n message.scopeMetrics = [];\n message.scopeMetrics.push($root.opentelemetry.proto.metrics.v1.ScopeMetrics.decode(reader, reader.uint32()));\n break;\n }\n case 3: {\n message.schemaUrl = reader.string();\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n /**\n * Decodes a ResourceMetrics message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof opentelemetry.proto.metrics.v1.ResourceMetrics\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {opentelemetry.proto.metrics.v1.ResourceMetrics} ResourceMetrics\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ResourceMetrics.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n /**\n * Verifies a ResourceMetrics message.\n * @function verify\n * @memberof opentelemetry.proto.metrics.v1.ResourceMetrics\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n ResourceMetrics.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.resource != null && message.hasOwnProperty(\"resource\")) {\n var error = $root.opentelemetry.proto.resource.v1.Resource.verify(message.resource);\n if (error)\n return \"resource.\" + error;\n }\n if (message.scopeMetrics != null && message.hasOwnProperty(\"scopeMetrics\")) {\n if (!Array.isArray(message.scopeMetrics))\n return \"scopeMetrics: array expected\";\n for (var i = 0; i < message.scopeMetrics.length; ++i) {\n var error = $root.opentelemetry.proto.metrics.v1.ScopeMetrics.verify(message.scopeMetrics[i]);\n if (error)\n return \"scopeMetrics.\" + error;\n }\n }\n if (message.schemaUrl != null && message.hasOwnProperty(\"schemaUrl\"))\n if (!$util.isString(message.schemaUrl))\n return \"schemaUrl: string expected\";\n return null;\n };\n /**\n * Creates a ResourceMetrics message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof opentelemetry.proto.metrics.v1.ResourceMetrics\n * @static\n * @param {Object.} object Plain object\n * @returns {opentelemetry.proto.metrics.v1.ResourceMetrics} ResourceMetrics\n */\n ResourceMetrics.fromObject = function fromObject(object) {\n if (object instanceof $root.opentelemetry.proto.metrics.v1.ResourceMetrics)\n return object;\n var message = new $root.opentelemetry.proto.metrics.v1.ResourceMetrics();\n if (object.resource != null) {\n if (typeof object.resource !== \"object\")\n throw TypeError(\".opentelemetry.proto.metrics.v1.ResourceMetrics.resource: object expected\");\n message.resource = $root.opentelemetry.proto.resource.v1.Resource.fromObject(object.resource);\n }\n if (object.scopeMetrics) {\n if (!Array.isArray(object.scopeMetrics))\n throw TypeError(\".opentelemetry.proto.metrics.v1.ResourceMetrics.scopeMetrics: array expected\");\n message.scopeMetrics = [];\n for (var i = 0; i < object.scopeMetrics.length; ++i) {\n if (typeof object.scopeMetrics[i] !== \"object\")\n throw TypeError(\".opentelemetry.proto.metrics.v1.ResourceMetrics.scopeMetrics: object expected\");\n message.scopeMetrics[i] = $root.opentelemetry.proto.metrics.v1.ScopeMetrics.fromObject(object.scopeMetrics[i]);\n }\n }\n if (object.schemaUrl != null)\n message.schemaUrl = String(object.schemaUrl);\n return message;\n };\n /**\n * Creates a plain object from a ResourceMetrics message. Also converts values to other types if specified.\n * @function toObject\n * @memberof opentelemetry.proto.metrics.v1.ResourceMetrics\n * @static\n * @param {opentelemetry.proto.metrics.v1.ResourceMetrics} message ResourceMetrics\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n ResourceMetrics.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n var object = {};\n if (options.arrays || options.defaults)\n object.scopeMetrics = [];\n if (options.defaults) {\n object.resource = null;\n object.schemaUrl = \"\";\n }\n if (message.resource != null && message.hasOwnProperty(\"resource\"))\n object.resource = $root.opentelemetry.proto.resource.v1.Resource.toObject(message.resource, options);\n if (message.scopeMetrics && message.scopeMetrics.length) {\n object.scopeMetrics = [];\n for (var j = 0; j < message.scopeMetrics.length; ++j)\n object.scopeMetrics[j] = $root.opentelemetry.proto.metrics.v1.ScopeMetrics.toObject(message.scopeMetrics[j], options);\n }\n if (message.schemaUrl != null && message.hasOwnProperty(\"schemaUrl\"))\n object.schemaUrl = message.schemaUrl;\n return object;\n };\n /**\n * Converts this ResourceMetrics to JSON.\n * @function toJSON\n * @memberof opentelemetry.proto.metrics.v1.ResourceMetrics\n * @instance\n * @returns {Object.} JSON object\n */\n ResourceMetrics.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n /**\n * Gets the default type url for ResourceMetrics\n * @function getTypeUrl\n * @memberof opentelemetry.proto.metrics.v1.ResourceMetrics\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n ResourceMetrics.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = \"type.googleapis.com\";\n }\n return typeUrlPrefix + \"/opentelemetry.proto.metrics.v1.ResourceMetrics\";\n };\n return ResourceMetrics;\n })();\n v1.ScopeMetrics = (function () {\n /**\n * Properties of a ScopeMetrics.\n * @memberof opentelemetry.proto.metrics.v1\n * @interface IScopeMetrics\n * @property {opentelemetry.proto.common.v1.IInstrumentationScope|null} [scope] ScopeMetrics scope\n * @property {Array.|null} [metrics] ScopeMetrics metrics\n * @property {string|null} [schemaUrl] ScopeMetrics schemaUrl\n */\n /**\n * Constructs a new ScopeMetrics.\n * @memberof opentelemetry.proto.metrics.v1\n * @classdesc Represents a ScopeMetrics.\n * @implements IScopeMetrics\n * @constructor\n * @param {opentelemetry.proto.metrics.v1.IScopeMetrics=} [properties] Properties to set\n */\n function ScopeMetrics(properties) {\n this.metrics = [];\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n /**\n * ScopeMetrics scope.\n * @member {opentelemetry.proto.common.v1.IInstrumentationScope|null|undefined} scope\n * @memberof opentelemetry.proto.metrics.v1.ScopeMetrics\n * @instance\n */\n ScopeMetrics.prototype.scope = null;\n /**\n * ScopeMetrics metrics.\n * @member {Array.} metrics\n * @memberof opentelemetry.proto.metrics.v1.ScopeMetrics\n * @instance\n */\n ScopeMetrics.prototype.metrics = $util.emptyArray;\n /**\n * ScopeMetrics schemaUrl.\n * @member {string|null|undefined} schemaUrl\n * @memberof opentelemetry.proto.metrics.v1.ScopeMetrics\n * @instance\n */\n ScopeMetrics.prototype.schemaUrl = null;\n /**\n * Creates a new ScopeMetrics instance using the specified properties.\n * @function create\n * @memberof opentelemetry.proto.metrics.v1.ScopeMetrics\n * @static\n * @param {opentelemetry.proto.metrics.v1.IScopeMetrics=} [properties] Properties to set\n * @returns {opentelemetry.proto.metrics.v1.ScopeMetrics} ScopeMetrics instance\n */\n ScopeMetrics.create = function create(properties) {\n return new ScopeMetrics(properties);\n };\n /**\n * Encodes the specified ScopeMetrics message. Does not implicitly {@link opentelemetry.proto.metrics.v1.ScopeMetrics.verify|verify} messages.\n * @function encode\n * @memberof opentelemetry.proto.metrics.v1.ScopeMetrics\n * @static\n * @param {opentelemetry.proto.metrics.v1.IScopeMetrics} message ScopeMetrics message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ScopeMetrics.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.scope != null && Object.hasOwnProperty.call(message, \"scope\"))\n $root.opentelemetry.proto.common.v1.InstrumentationScope.encode(message.scope, writer.uint32(/* id 1, wireType 2 =*/ 10).fork()).ldelim();\n if (message.metrics != null && message.metrics.length)\n for (var i = 0; i < message.metrics.length; ++i)\n $root.opentelemetry.proto.metrics.v1.Metric.encode(message.metrics[i], writer.uint32(/* id 2, wireType 2 =*/ 18).fork()).ldelim();\n if (message.schemaUrl != null && Object.hasOwnProperty.call(message, \"schemaUrl\"))\n writer.uint32(/* id 3, wireType 2 =*/ 26).string(message.schemaUrl);\n return writer;\n };\n /**\n * Encodes the specified ScopeMetrics message, length delimited. Does not implicitly {@link opentelemetry.proto.metrics.v1.ScopeMetrics.verify|verify} messages.\n * @function encodeDelimited\n * @memberof opentelemetry.proto.metrics.v1.ScopeMetrics\n * @static\n * @param {opentelemetry.proto.metrics.v1.IScopeMetrics} message ScopeMetrics message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ScopeMetrics.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n /**\n * Decodes a ScopeMetrics message from the specified reader or buffer.\n * @function decode\n * @memberof opentelemetry.proto.metrics.v1.ScopeMetrics\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {opentelemetry.proto.metrics.v1.ScopeMetrics} ScopeMetrics\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ScopeMetrics.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.opentelemetry.proto.metrics.v1.ScopeMetrics();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n message.scope = $root.opentelemetry.proto.common.v1.InstrumentationScope.decode(reader, reader.uint32());\n break;\n }\n case 2: {\n if (!(message.metrics && message.metrics.length))\n message.metrics = [];\n message.metrics.push($root.opentelemetry.proto.metrics.v1.Metric.decode(reader, reader.uint32()));\n break;\n }\n case 3: {\n message.schemaUrl = reader.string();\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n /**\n * Decodes a ScopeMetrics message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof opentelemetry.proto.metrics.v1.ScopeMetrics\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {opentelemetry.proto.metrics.v1.ScopeMetrics} ScopeMetrics\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ScopeMetrics.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n /**\n * Verifies a ScopeMetrics message.\n * @function verify\n * @memberof opentelemetry.proto.metrics.v1.ScopeMetrics\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n ScopeMetrics.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.scope != null && message.hasOwnProperty(\"scope\")) {\n var error = $root.opentelemetry.proto.common.v1.InstrumentationScope.verify(message.scope);\n if (error)\n return \"scope.\" + error;\n }\n if (message.metrics != null && message.hasOwnProperty(\"metrics\")) {\n if (!Array.isArray(message.metrics))\n return \"metrics: array expected\";\n for (var i = 0; i < message.metrics.length; ++i) {\n var error = $root.opentelemetry.proto.metrics.v1.Metric.verify(message.metrics[i]);\n if (error)\n return \"metrics.\" + error;\n }\n }\n if (message.schemaUrl != null && message.hasOwnProperty(\"schemaUrl\"))\n if (!$util.isString(message.schemaUrl))\n return \"schemaUrl: string expected\";\n return null;\n };\n /**\n * Creates a ScopeMetrics message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof opentelemetry.proto.metrics.v1.ScopeMetrics\n * @static\n * @param {Object.} object Plain object\n * @returns {opentelemetry.proto.metrics.v1.ScopeMetrics} ScopeMetrics\n */\n ScopeMetrics.fromObject = function fromObject(object) {\n if (object instanceof $root.opentelemetry.proto.metrics.v1.ScopeMetrics)\n return object;\n var message = new $root.opentelemetry.proto.metrics.v1.ScopeMetrics();\n if (object.scope != null) {\n if (typeof object.scope !== \"object\")\n throw TypeError(\".opentelemetry.proto.metrics.v1.ScopeMetrics.scope: object expected\");\n message.scope = $root.opentelemetry.proto.common.v1.InstrumentationScope.fromObject(object.scope);\n }\n if (object.metrics) {\n if (!Array.isArray(object.metrics))\n throw TypeError(\".opentelemetry.proto.metrics.v1.ScopeMetrics.metrics: array expected\");\n message.metrics = [];\n for (var i = 0; i < object.metrics.length; ++i) {\n if (typeof object.metrics[i] !== \"object\")\n throw TypeError(\".opentelemetry.proto.metrics.v1.ScopeMetrics.metrics: object expected\");\n message.metrics[i] = $root.opentelemetry.proto.metrics.v1.Metric.fromObject(object.metrics[i]);\n }\n }\n if (object.schemaUrl != null)\n message.schemaUrl = String(object.schemaUrl);\n return message;\n };\n /**\n * Creates a plain object from a ScopeMetrics message. Also converts values to other types if specified.\n * @function toObject\n * @memberof opentelemetry.proto.metrics.v1.ScopeMetrics\n * @static\n * @param {opentelemetry.proto.metrics.v1.ScopeMetrics} message ScopeMetrics\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n ScopeMetrics.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n var object = {};\n if (options.arrays || options.defaults)\n object.metrics = [];\n if (options.defaults) {\n object.scope = null;\n object.schemaUrl = \"\";\n }\n if (message.scope != null && message.hasOwnProperty(\"scope\"))\n object.scope = $root.opentelemetry.proto.common.v1.InstrumentationScope.toObject(message.scope, options);\n if (message.metrics && message.metrics.length) {\n object.metrics = [];\n for (var j = 0; j < message.metrics.length; ++j)\n object.metrics[j] = $root.opentelemetry.proto.metrics.v1.Metric.toObject(message.metrics[j], options);\n }\n if (message.schemaUrl != null && message.hasOwnProperty(\"schemaUrl\"))\n object.schemaUrl = message.schemaUrl;\n return object;\n };\n /**\n * Converts this ScopeMetrics to JSON.\n * @function toJSON\n * @memberof opentelemetry.proto.metrics.v1.ScopeMetrics\n * @instance\n * @returns {Object.} JSON object\n */\n ScopeMetrics.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n /**\n * Gets the default type url for ScopeMetrics\n * @function getTypeUrl\n * @memberof opentelemetry.proto.metrics.v1.ScopeMetrics\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n ScopeMetrics.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = \"type.googleapis.com\";\n }\n return typeUrlPrefix + \"/opentelemetry.proto.metrics.v1.ScopeMetrics\";\n };\n return ScopeMetrics;\n })();\n v1.Metric = (function () {\n /**\n * Properties of a Metric.\n * @memberof opentelemetry.proto.metrics.v1\n * @interface IMetric\n * @property {string|null} [name] Metric name\n * @property {string|null} [description] Metric description\n * @property {string|null} [unit] Metric unit\n * @property {opentelemetry.proto.metrics.v1.IGauge|null} [gauge] Metric gauge\n * @property {opentelemetry.proto.metrics.v1.ISum|null} [sum] Metric sum\n * @property {opentelemetry.proto.metrics.v1.IHistogram|null} [histogram] Metric histogram\n * @property {opentelemetry.proto.metrics.v1.IExponentialHistogram|null} [exponentialHistogram] Metric exponentialHistogram\n * @property {opentelemetry.proto.metrics.v1.ISummary|null} [summary] Metric summary\n */\n /**\n * Constructs a new Metric.\n * @memberof opentelemetry.proto.metrics.v1\n * @classdesc Represents a Metric.\n * @implements IMetric\n * @constructor\n * @param {opentelemetry.proto.metrics.v1.IMetric=} [properties] Properties to set\n */\n function Metric(properties) {\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n /**\n * Metric name.\n * @member {string|null|undefined} name\n * @memberof opentelemetry.proto.metrics.v1.Metric\n * @instance\n */\n Metric.prototype.name = null;\n /**\n * Metric description.\n * @member {string|null|undefined} description\n * @memberof opentelemetry.proto.metrics.v1.Metric\n * @instance\n */\n Metric.prototype.description = null;\n /**\n * Metric unit.\n * @member {string|null|undefined} unit\n * @memberof opentelemetry.proto.metrics.v1.Metric\n * @instance\n */\n Metric.prototype.unit = null;\n /**\n * Metric gauge.\n * @member {opentelemetry.proto.metrics.v1.IGauge|null|undefined} gauge\n * @memberof opentelemetry.proto.metrics.v1.Metric\n * @instance\n */\n Metric.prototype.gauge = null;\n /**\n * Metric sum.\n * @member {opentelemetry.proto.metrics.v1.ISum|null|undefined} sum\n * @memberof opentelemetry.proto.metrics.v1.Metric\n * @instance\n */\n Metric.prototype.sum = null;\n /**\n * Metric histogram.\n * @member {opentelemetry.proto.metrics.v1.IHistogram|null|undefined} histogram\n * @memberof opentelemetry.proto.metrics.v1.Metric\n * @instance\n */\n Metric.prototype.histogram = null;\n /**\n * Metric exponentialHistogram.\n * @member {opentelemetry.proto.metrics.v1.IExponentialHistogram|null|undefined} exponentialHistogram\n * @memberof opentelemetry.proto.metrics.v1.Metric\n * @instance\n */\n Metric.prototype.exponentialHistogram = null;\n /**\n * Metric summary.\n * @member {opentelemetry.proto.metrics.v1.ISummary|null|undefined} summary\n * @memberof opentelemetry.proto.metrics.v1.Metric\n * @instance\n */\n Metric.prototype.summary = null;\n // OneOf field names bound to virtual getters and setters\n var $oneOfFields;\n /**\n * Metric data.\n * @member {\"gauge\"|\"sum\"|\"histogram\"|\"exponentialHistogram\"|\"summary\"|undefined} data\n * @memberof opentelemetry.proto.metrics.v1.Metric\n * @instance\n */\n Object.defineProperty(Metric.prototype, \"data\", {\n get: $util.oneOfGetter($oneOfFields = [\"gauge\", \"sum\", \"histogram\", \"exponentialHistogram\", \"summary\"]),\n set: $util.oneOfSetter($oneOfFields)\n });\n /**\n * Creates a new Metric instance using the specified properties.\n * @function create\n * @memberof opentelemetry.proto.metrics.v1.Metric\n * @static\n * @param {opentelemetry.proto.metrics.v1.IMetric=} [properties] Properties to set\n * @returns {opentelemetry.proto.metrics.v1.Metric} Metric instance\n */\n Metric.create = function create(properties) {\n return new Metric(properties);\n };\n /**\n * Encodes the specified Metric message. Does not implicitly {@link opentelemetry.proto.metrics.v1.Metric.verify|verify} messages.\n * @function encode\n * @memberof opentelemetry.proto.metrics.v1.Metric\n * @static\n * @param {opentelemetry.proto.metrics.v1.IMetric} message Metric message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Metric.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.name != null && Object.hasOwnProperty.call(message, \"name\"))\n writer.uint32(/* id 1, wireType 2 =*/ 10).string(message.name);\n if (message.description != null && Object.hasOwnProperty.call(message, \"description\"))\n writer.uint32(/* id 2, wireType 2 =*/ 18).string(message.description);\n if (message.unit != null && Object.hasOwnProperty.call(message, \"unit\"))\n writer.uint32(/* id 3, wireType 2 =*/ 26).string(message.unit);\n if (message.gauge != null && Object.hasOwnProperty.call(message, \"gauge\"))\n $root.opentelemetry.proto.metrics.v1.Gauge.encode(message.gauge, writer.uint32(/* id 5, wireType 2 =*/ 42).fork()).ldelim();\n if (message.sum != null && Object.hasOwnProperty.call(message, \"sum\"))\n $root.opentelemetry.proto.metrics.v1.Sum.encode(message.sum, writer.uint32(/* id 7, wireType 2 =*/ 58).fork()).ldelim();\n if (message.histogram != null && Object.hasOwnProperty.call(message, \"histogram\"))\n $root.opentelemetry.proto.metrics.v1.Histogram.encode(message.histogram, writer.uint32(/* id 9, wireType 2 =*/ 74).fork()).ldelim();\n if (message.exponentialHistogram != null && Object.hasOwnProperty.call(message, \"exponentialHistogram\"))\n $root.opentelemetry.proto.metrics.v1.ExponentialHistogram.encode(message.exponentialHistogram, writer.uint32(/* id 10, wireType 2 =*/ 82).fork()).ldelim();\n if (message.summary != null && Object.hasOwnProperty.call(message, \"summary\"))\n $root.opentelemetry.proto.metrics.v1.Summary.encode(message.summary, writer.uint32(/* id 11, wireType 2 =*/ 90).fork()).ldelim();\n return writer;\n };\n /**\n * Encodes the specified Metric message, length delimited. Does not implicitly {@link opentelemetry.proto.metrics.v1.Metric.verify|verify} messages.\n * @function encodeDelimited\n * @memberof opentelemetry.proto.metrics.v1.Metric\n * @static\n * @param {opentelemetry.proto.metrics.v1.IMetric} message Metric message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Metric.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n /**\n * Decodes a Metric message from the specified reader or buffer.\n * @function decode\n * @memberof opentelemetry.proto.metrics.v1.Metric\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {opentelemetry.proto.metrics.v1.Metric} Metric\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Metric.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.opentelemetry.proto.metrics.v1.Metric();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n message.name = reader.string();\n break;\n }\n case 2: {\n message.description = reader.string();\n break;\n }\n case 3: {\n message.unit = reader.string();\n break;\n }\n case 5: {\n message.gauge = $root.opentelemetry.proto.metrics.v1.Gauge.decode(reader, reader.uint32());\n break;\n }\n case 7: {\n message.sum = $root.opentelemetry.proto.metrics.v1.Sum.decode(reader, reader.uint32());\n break;\n }\n case 9: {\n message.histogram = $root.opentelemetry.proto.metrics.v1.Histogram.decode(reader, reader.uint32());\n break;\n }\n case 10: {\n message.exponentialHistogram = $root.opentelemetry.proto.metrics.v1.ExponentialHistogram.decode(reader, reader.uint32());\n break;\n }\n case 11: {\n message.summary = $root.opentelemetry.proto.metrics.v1.Summary.decode(reader, reader.uint32());\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n /**\n * Decodes a Metric message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof opentelemetry.proto.metrics.v1.Metric\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {opentelemetry.proto.metrics.v1.Metric} Metric\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Metric.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n /**\n * Verifies a Metric message.\n * @function verify\n * @memberof opentelemetry.proto.metrics.v1.Metric\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n Metric.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n var properties = {};\n if (message.name != null && message.hasOwnProperty(\"name\"))\n if (!$util.isString(message.name))\n return \"name: string expected\";\n if (message.description != null && message.hasOwnProperty(\"description\"))\n if (!$util.isString(message.description))\n return \"description: string expected\";\n if (message.unit != null && message.hasOwnProperty(\"unit\"))\n if (!$util.isString(message.unit))\n return \"unit: string expected\";\n if (message.gauge != null && message.hasOwnProperty(\"gauge\")) {\n properties.data = 1;\n {\n var error = $root.opentelemetry.proto.metrics.v1.Gauge.verify(message.gauge);\n if (error)\n return \"gauge.\" + error;\n }\n }\n if (message.sum != null && message.hasOwnProperty(\"sum\")) {\n if (properties.data === 1)\n return \"data: multiple values\";\n properties.data = 1;\n {\n var error = $root.opentelemetry.proto.metrics.v1.Sum.verify(message.sum);\n if (error)\n return \"sum.\" + error;\n }\n }\n if (message.histogram != null && message.hasOwnProperty(\"histogram\")) {\n if (properties.data === 1)\n return \"data: multiple values\";\n properties.data = 1;\n {\n var error = $root.opentelemetry.proto.metrics.v1.Histogram.verify(message.histogram);\n if (error)\n return \"histogram.\" + error;\n }\n }\n if (message.exponentialHistogram != null && message.hasOwnProperty(\"exponentialHistogram\")) {\n if (properties.data === 1)\n return \"data: multiple values\";\n properties.data = 1;\n {\n var error = $root.opentelemetry.proto.metrics.v1.ExponentialHistogram.verify(message.exponentialHistogram);\n if (error)\n return \"exponentialHistogram.\" + error;\n }\n }\n if (message.summary != null && message.hasOwnProperty(\"summary\")) {\n if (properties.data === 1)\n return \"data: multiple values\";\n properties.data = 1;\n {\n var error = $root.opentelemetry.proto.metrics.v1.Summary.verify(message.summary);\n if (error)\n return \"summary.\" + error;\n }\n }\n return null;\n };\n /**\n * Creates a Metric message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof opentelemetry.proto.metrics.v1.Metric\n * @static\n * @param {Object.} object Plain object\n * @returns {opentelemetry.proto.metrics.v1.Metric} Metric\n */\n Metric.fromObject = function fromObject(object) {\n if (object instanceof $root.opentelemetry.proto.metrics.v1.Metric)\n return object;\n var message = new $root.opentelemetry.proto.metrics.v1.Metric();\n if (object.name != null)\n message.name = String(object.name);\n if (object.description != null)\n message.description = String(object.description);\n if (object.unit != null)\n message.unit = String(object.unit);\n if (object.gauge != null) {\n if (typeof object.gauge !== \"object\")\n throw TypeError(\".opentelemetry.proto.metrics.v1.Metric.gauge: object expected\");\n message.gauge = $root.opentelemetry.proto.metrics.v1.Gauge.fromObject(object.gauge);\n }\n if (object.sum != null) {\n if (typeof object.sum !== \"object\")\n throw TypeError(\".opentelemetry.proto.metrics.v1.Metric.sum: object expected\");\n message.sum = $root.opentelemetry.proto.metrics.v1.Sum.fromObject(object.sum);\n }\n if (object.histogram != null) {\n if (typeof object.histogram !== \"object\")\n throw TypeError(\".opentelemetry.proto.metrics.v1.Metric.histogram: object expected\");\n message.histogram = $root.opentelemetry.proto.metrics.v1.Histogram.fromObject(object.histogram);\n }\n if (object.exponentialHistogram != null) {\n if (typeof object.exponentialHistogram !== \"object\")\n throw TypeError(\".opentelemetry.proto.metrics.v1.Metric.exponentialHistogram: object expected\");\n message.exponentialHistogram = $root.opentelemetry.proto.metrics.v1.ExponentialHistogram.fromObject(object.exponentialHistogram);\n }\n if (object.summary != null) {\n if (typeof object.summary !== \"object\")\n throw TypeError(\".opentelemetry.proto.metrics.v1.Metric.summary: object expected\");\n message.summary = $root.opentelemetry.proto.metrics.v1.Summary.fromObject(object.summary);\n }\n return message;\n };\n /**\n * Creates a plain object from a Metric message. Also converts values to other types if specified.\n * @function toObject\n * @memberof opentelemetry.proto.metrics.v1.Metric\n * @static\n * @param {opentelemetry.proto.metrics.v1.Metric} message Metric\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n Metric.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n var object = {};\n if (options.defaults) {\n object.name = \"\";\n object.description = \"\";\n object.unit = \"\";\n }\n if (message.name != null && message.hasOwnProperty(\"name\"))\n object.name = message.name;\n if (message.description != null && message.hasOwnProperty(\"description\"))\n object.description = message.description;\n if (message.unit != null && message.hasOwnProperty(\"unit\"))\n object.unit = message.unit;\n if (message.gauge != null && message.hasOwnProperty(\"gauge\")) {\n object.gauge = $root.opentelemetry.proto.metrics.v1.Gauge.toObject(message.gauge, options);\n if (options.oneofs)\n object.data = \"gauge\";\n }\n if (message.sum != null && message.hasOwnProperty(\"sum\")) {\n object.sum = $root.opentelemetry.proto.metrics.v1.Sum.toObject(message.sum, options);\n if (options.oneofs)\n object.data = \"sum\";\n }\n if (message.histogram != null && message.hasOwnProperty(\"histogram\")) {\n object.histogram = $root.opentelemetry.proto.metrics.v1.Histogram.toObject(message.histogram, options);\n if (options.oneofs)\n object.data = \"histogram\";\n }\n if (message.exponentialHistogram != null && message.hasOwnProperty(\"exponentialHistogram\")) {\n object.exponentialHistogram = $root.opentelemetry.proto.metrics.v1.ExponentialHistogram.toObject(message.exponentialHistogram, options);\n if (options.oneofs)\n object.data = \"exponentialHistogram\";\n }\n if (message.summary != null && message.hasOwnProperty(\"summary\")) {\n object.summary = $root.opentelemetry.proto.metrics.v1.Summary.toObject(message.summary, options);\n if (options.oneofs)\n object.data = \"summary\";\n }\n return object;\n };\n /**\n * Converts this Metric to JSON.\n * @function toJSON\n * @memberof opentelemetry.proto.metrics.v1.Metric\n * @instance\n * @returns {Object.} JSON object\n */\n Metric.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n /**\n * Gets the default type url for Metric\n * @function getTypeUrl\n * @memberof opentelemetry.proto.metrics.v1.Metric\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n Metric.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = \"type.googleapis.com\";\n }\n return typeUrlPrefix + \"/opentelemetry.proto.metrics.v1.Metric\";\n };\n return Metric;\n })();\n v1.Gauge = (function () {\n /**\n * Properties of a Gauge.\n * @memberof opentelemetry.proto.metrics.v1\n * @interface IGauge\n * @property {Array.|null} [dataPoints] Gauge dataPoints\n */\n /**\n * Constructs a new Gauge.\n * @memberof opentelemetry.proto.metrics.v1\n * @classdesc Represents a Gauge.\n * @implements IGauge\n * @constructor\n * @param {opentelemetry.proto.metrics.v1.IGauge=} [properties] Properties to set\n */\n function Gauge(properties) {\n this.dataPoints = [];\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n /**\n * Gauge dataPoints.\n * @member {Array.} dataPoints\n * @memberof opentelemetry.proto.metrics.v1.Gauge\n * @instance\n */\n Gauge.prototype.dataPoints = $util.emptyArray;\n /**\n * Creates a new Gauge instance using the specified properties.\n * @function create\n * @memberof opentelemetry.proto.metrics.v1.Gauge\n * @static\n * @param {opentelemetry.proto.metrics.v1.IGauge=} [properties] Properties to set\n * @returns {opentelemetry.proto.metrics.v1.Gauge} Gauge instance\n */\n Gauge.create = function create(properties) {\n return new Gauge(properties);\n };\n /**\n * Encodes the specified Gauge message. Does not implicitly {@link opentelemetry.proto.metrics.v1.Gauge.verify|verify} messages.\n * @function encode\n * @memberof opentelemetry.proto.metrics.v1.Gauge\n * @static\n * @param {opentelemetry.proto.metrics.v1.IGauge} message Gauge message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Gauge.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.dataPoints != null && message.dataPoints.length)\n for (var i = 0; i < message.dataPoints.length; ++i)\n $root.opentelemetry.proto.metrics.v1.NumberDataPoint.encode(message.dataPoints[i], writer.uint32(/* id 1, wireType 2 =*/ 10).fork()).ldelim();\n return writer;\n };\n /**\n * Encodes the specified Gauge message, length delimited. Does not implicitly {@link opentelemetry.proto.metrics.v1.Gauge.verify|verify} messages.\n * @function encodeDelimited\n * @memberof opentelemetry.proto.metrics.v1.Gauge\n * @static\n * @param {opentelemetry.proto.metrics.v1.IGauge} message Gauge message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Gauge.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n /**\n * Decodes a Gauge message from the specified reader or buffer.\n * @function decode\n * @memberof opentelemetry.proto.metrics.v1.Gauge\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {opentelemetry.proto.metrics.v1.Gauge} Gauge\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Gauge.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.opentelemetry.proto.metrics.v1.Gauge();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (!(message.dataPoints && message.dataPoints.length))\n message.dataPoints = [];\n message.dataPoints.push($root.opentelemetry.proto.metrics.v1.NumberDataPoint.decode(reader, reader.uint32()));\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n /**\n * Decodes a Gauge message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof opentelemetry.proto.metrics.v1.Gauge\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {opentelemetry.proto.metrics.v1.Gauge} Gauge\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Gauge.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n /**\n * Verifies a Gauge message.\n * @function verify\n * @memberof opentelemetry.proto.metrics.v1.Gauge\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n Gauge.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.dataPoints != null && message.hasOwnProperty(\"dataPoints\")) {\n if (!Array.isArray(message.dataPoints))\n return \"dataPoints: array expected\";\n for (var i = 0; i < message.dataPoints.length; ++i) {\n var error = $root.opentelemetry.proto.metrics.v1.NumberDataPoint.verify(message.dataPoints[i]);\n if (error)\n return \"dataPoints.\" + error;\n }\n }\n return null;\n };\n /**\n * Creates a Gauge message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof opentelemetry.proto.metrics.v1.Gauge\n * @static\n * @param {Object.} object Plain object\n * @returns {opentelemetry.proto.metrics.v1.Gauge} Gauge\n */\n Gauge.fromObject = function fromObject(object) {\n if (object instanceof $root.opentelemetry.proto.metrics.v1.Gauge)\n return object;\n var message = new $root.opentelemetry.proto.metrics.v1.Gauge();\n if (object.dataPoints) {\n if (!Array.isArray(object.dataPoints))\n throw TypeError(\".opentelemetry.proto.metrics.v1.Gauge.dataPoints: array expected\");\n message.dataPoints = [];\n for (var i = 0; i < object.dataPoints.length; ++i) {\n if (typeof object.dataPoints[i] !== \"object\")\n throw TypeError(\".opentelemetry.proto.metrics.v1.Gauge.dataPoints: object expected\");\n message.dataPoints[i] = $root.opentelemetry.proto.metrics.v1.NumberDataPoint.fromObject(object.dataPoints[i]);\n }\n }\n return message;\n };\n /**\n * Creates a plain object from a Gauge message. Also converts values to other types if specified.\n * @function toObject\n * @memberof opentelemetry.proto.metrics.v1.Gauge\n * @static\n * @param {opentelemetry.proto.metrics.v1.Gauge} message Gauge\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n Gauge.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n var object = {};\n if (options.arrays || options.defaults)\n object.dataPoints = [];\n if (message.dataPoints && message.dataPoints.length) {\n object.dataPoints = [];\n for (var j = 0; j < message.dataPoints.length; ++j)\n object.dataPoints[j] = $root.opentelemetry.proto.metrics.v1.NumberDataPoint.toObject(message.dataPoints[j], options);\n }\n return object;\n };\n /**\n * Converts this Gauge to JSON.\n * @function toJSON\n * @memberof opentelemetry.proto.metrics.v1.Gauge\n * @instance\n * @returns {Object.} JSON object\n */\n Gauge.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n /**\n * Gets the default type url for Gauge\n * @function getTypeUrl\n * @memberof opentelemetry.proto.metrics.v1.Gauge\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n Gauge.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = \"type.googleapis.com\";\n }\n return typeUrlPrefix + \"/opentelemetry.proto.metrics.v1.Gauge\";\n };\n return Gauge;\n })();\n v1.Sum = (function () {\n /**\n * Properties of a Sum.\n * @memberof opentelemetry.proto.metrics.v1\n * @interface ISum\n * @property {Array.|null} [dataPoints] Sum dataPoints\n * @property {opentelemetry.proto.metrics.v1.AggregationTemporality|null} [aggregationTemporality] Sum aggregationTemporality\n * @property {boolean|null} [isMonotonic] Sum isMonotonic\n */\n /**\n * Constructs a new Sum.\n * @memberof opentelemetry.proto.metrics.v1\n * @classdesc Represents a Sum.\n * @implements ISum\n * @constructor\n * @param {opentelemetry.proto.metrics.v1.ISum=} [properties] Properties to set\n */\n function Sum(properties) {\n this.dataPoints = [];\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n /**\n * Sum dataPoints.\n * @member {Array.} dataPoints\n * @memberof opentelemetry.proto.metrics.v1.Sum\n * @instance\n */\n Sum.prototype.dataPoints = $util.emptyArray;\n /**\n * Sum aggregationTemporality.\n * @member {opentelemetry.proto.metrics.v1.AggregationTemporality|null|undefined} aggregationTemporality\n * @memberof opentelemetry.proto.metrics.v1.Sum\n * @instance\n */\n Sum.prototype.aggregationTemporality = null;\n /**\n * Sum isMonotonic.\n * @member {boolean|null|undefined} isMonotonic\n * @memberof opentelemetry.proto.metrics.v1.Sum\n * @instance\n */\n Sum.prototype.isMonotonic = null;\n /**\n * Creates a new Sum instance using the specified properties.\n * @function create\n * @memberof opentelemetry.proto.metrics.v1.Sum\n * @static\n * @param {opentelemetry.proto.metrics.v1.ISum=} [properties] Properties to set\n * @returns {opentelemetry.proto.metrics.v1.Sum} Sum instance\n */\n Sum.create = function create(properties) {\n return new Sum(properties);\n };\n /**\n * Encodes the specified Sum message. Does not implicitly {@link opentelemetry.proto.metrics.v1.Sum.verify|verify} messages.\n * @function encode\n * @memberof opentelemetry.proto.metrics.v1.Sum\n * @static\n * @param {opentelemetry.proto.metrics.v1.ISum} message Sum message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Sum.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.dataPoints != null && message.dataPoints.length)\n for (var i = 0; i < message.dataPoints.length; ++i)\n $root.opentelemetry.proto.metrics.v1.NumberDataPoint.encode(message.dataPoints[i], writer.uint32(/* id 1, wireType 2 =*/ 10).fork()).ldelim();\n if (message.aggregationTemporality != null && Object.hasOwnProperty.call(message, \"aggregationTemporality\"))\n writer.uint32(/* id 2, wireType 0 =*/ 16).int32(message.aggregationTemporality);\n if (message.isMonotonic != null && Object.hasOwnProperty.call(message, \"isMonotonic\"))\n writer.uint32(/* id 3, wireType 0 =*/ 24).bool(message.isMonotonic);\n return writer;\n };\n /**\n * Encodes the specified Sum message, length delimited. Does not implicitly {@link opentelemetry.proto.metrics.v1.Sum.verify|verify} messages.\n * @function encodeDelimited\n * @memberof opentelemetry.proto.metrics.v1.Sum\n * @static\n * @param {opentelemetry.proto.metrics.v1.ISum} message Sum message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Sum.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n /**\n * Decodes a Sum message from the specified reader or buffer.\n * @function decode\n * @memberof opentelemetry.proto.metrics.v1.Sum\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {opentelemetry.proto.metrics.v1.Sum} Sum\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Sum.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.opentelemetry.proto.metrics.v1.Sum();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (!(message.dataPoints && message.dataPoints.length))\n message.dataPoints = [];\n message.dataPoints.push($root.opentelemetry.proto.metrics.v1.NumberDataPoint.decode(reader, reader.uint32()));\n break;\n }\n case 2: {\n message.aggregationTemporality = reader.int32();\n break;\n }\n case 3: {\n message.isMonotonic = reader.bool();\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n /**\n * Decodes a Sum message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof opentelemetry.proto.metrics.v1.Sum\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {opentelemetry.proto.metrics.v1.Sum} Sum\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Sum.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n /**\n * Verifies a Sum message.\n * @function verify\n * @memberof opentelemetry.proto.metrics.v1.Sum\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n Sum.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.dataPoints != null && message.hasOwnProperty(\"dataPoints\")) {\n if (!Array.isArray(message.dataPoints))\n return \"dataPoints: array expected\";\n for (var i = 0; i < message.dataPoints.length; ++i) {\n var error = $root.opentelemetry.proto.metrics.v1.NumberDataPoint.verify(message.dataPoints[i]);\n if (error)\n return \"dataPoints.\" + error;\n }\n }\n if (message.aggregationTemporality != null && message.hasOwnProperty(\"aggregationTemporality\"))\n switch (message.aggregationTemporality) {\n default:\n return \"aggregationTemporality: enum value expected\";\n case 0:\n case 1:\n case 2:\n break;\n }\n if (message.isMonotonic != null && message.hasOwnProperty(\"isMonotonic\"))\n if (typeof message.isMonotonic !== \"boolean\")\n return \"isMonotonic: boolean expected\";\n return null;\n };\n /**\n * Creates a Sum message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof opentelemetry.proto.metrics.v1.Sum\n * @static\n * @param {Object.} object Plain object\n * @returns {opentelemetry.proto.metrics.v1.Sum} Sum\n */\n Sum.fromObject = function fromObject(object) {\n if (object instanceof $root.opentelemetry.proto.metrics.v1.Sum)\n return object;\n var message = new $root.opentelemetry.proto.metrics.v1.Sum();\n if (object.dataPoints) {\n if (!Array.isArray(object.dataPoints))\n throw TypeError(\".opentelemetry.proto.metrics.v1.Sum.dataPoints: array expected\");\n message.dataPoints = [];\n for (var i = 0; i < object.dataPoints.length; ++i) {\n if (typeof object.dataPoints[i] !== \"object\")\n throw TypeError(\".opentelemetry.proto.metrics.v1.Sum.dataPoints: object expected\");\n message.dataPoints[i] = $root.opentelemetry.proto.metrics.v1.NumberDataPoint.fromObject(object.dataPoints[i]);\n }\n }\n switch (object.aggregationTemporality) {\n default:\n if (typeof object.aggregationTemporality === \"number\") {\n message.aggregationTemporality = object.aggregationTemporality;\n break;\n }\n break;\n case \"AGGREGATION_TEMPORALITY_UNSPECIFIED\":\n case 0:\n message.aggregationTemporality = 0;\n break;\n case \"AGGREGATION_TEMPORALITY_DELTA\":\n case 1:\n message.aggregationTemporality = 1;\n break;\n case \"AGGREGATION_TEMPORALITY_CUMULATIVE\":\n case 2:\n message.aggregationTemporality = 2;\n break;\n }\n if (object.isMonotonic != null)\n message.isMonotonic = Boolean(object.isMonotonic);\n return message;\n };\n /**\n * Creates a plain object from a Sum message. Also converts values to other types if specified.\n * @function toObject\n * @memberof opentelemetry.proto.metrics.v1.Sum\n * @static\n * @param {opentelemetry.proto.metrics.v1.Sum} message Sum\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n Sum.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n var object = {};\n if (options.arrays || options.defaults)\n object.dataPoints = [];\n if (options.defaults) {\n object.aggregationTemporality = options.enums === String ? \"AGGREGATION_TEMPORALITY_UNSPECIFIED\" : 0;\n object.isMonotonic = false;\n }\n if (message.dataPoints && message.dataPoints.length) {\n object.dataPoints = [];\n for (var j = 0; j < message.dataPoints.length; ++j)\n object.dataPoints[j] = $root.opentelemetry.proto.metrics.v1.NumberDataPoint.toObject(message.dataPoints[j], options);\n }\n if (message.aggregationTemporality != null && message.hasOwnProperty(\"aggregationTemporality\"))\n object.aggregationTemporality = options.enums === String ? $root.opentelemetry.proto.metrics.v1.AggregationTemporality[message.aggregationTemporality] === undefined ? message.aggregationTemporality : $root.opentelemetry.proto.metrics.v1.AggregationTemporality[message.aggregationTemporality] : message.aggregationTemporality;\n if (message.isMonotonic != null && message.hasOwnProperty(\"isMonotonic\"))\n object.isMonotonic = message.isMonotonic;\n return object;\n };\n /**\n * Converts this Sum to JSON.\n * @function toJSON\n * @memberof opentelemetry.proto.metrics.v1.Sum\n * @instance\n * @returns {Object.} JSON object\n */\n Sum.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n /**\n * Gets the default type url for Sum\n * @function getTypeUrl\n * @memberof opentelemetry.proto.metrics.v1.Sum\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n Sum.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = \"type.googleapis.com\";\n }\n return typeUrlPrefix + \"/opentelemetry.proto.metrics.v1.Sum\";\n };\n return Sum;\n })();\n v1.Histogram = (function () {\n /**\n * Properties of a Histogram.\n * @memberof opentelemetry.proto.metrics.v1\n * @interface IHistogram\n * @property {Array.|null} [dataPoints] Histogram dataPoints\n * @property {opentelemetry.proto.metrics.v1.AggregationTemporality|null} [aggregationTemporality] Histogram aggregationTemporality\n */\n /**\n * Constructs a new Histogram.\n * @memberof opentelemetry.proto.metrics.v1\n * @classdesc Represents a Histogram.\n * @implements IHistogram\n * @constructor\n * @param {opentelemetry.proto.metrics.v1.IHistogram=} [properties] Properties to set\n */\n function Histogram(properties) {\n this.dataPoints = [];\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n /**\n * Histogram dataPoints.\n * @member {Array.} dataPoints\n * @memberof opentelemetry.proto.metrics.v1.Histogram\n * @instance\n */\n Histogram.prototype.dataPoints = $util.emptyArray;\n /**\n * Histogram aggregationTemporality.\n * @member {opentelemetry.proto.metrics.v1.AggregationTemporality|null|undefined} aggregationTemporality\n * @memberof opentelemetry.proto.metrics.v1.Histogram\n * @instance\n */\n Histogram.prototype.aggregationTemporality = null;\n /**\n * Creates a new Histogram instance using the specified properties.\n * @function create\n * @memberof opentelemetry.proto.metrics.v1.Histogram\n * @static\n * @param {opentelemetry.proto.metrics.v1.IHistogram=} [properties] Properties to set\n * @returns {opentelemetry.proto.metrics.v1.Histogram} Histogram instance\n */\n Histogram.create = function create(properties) {\n return new Histogram(properties);\n };\n /**\n * Encodes the specified Histogram message. Does not implicitly {@link opentelemetry.proto.metrics.v1.Histogram.verify|verify} messages.\n * @function encode\n * @memberof opentelemetry.proto.metrics.v1.Histogram\n * @static\n * @param {opentelemetry.proto.metrics.v1.IHistogram} message Histogram message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Histogram.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.dataPoints != null && message.dataPoints.length)\n for (var i = 0; i < message.dataPoints.length; ++i)\n $root.opentelemetry.proto.metrics.v1.HistogramDataPoint.encode(message.dataPoints[i], writer.uint32(/* id 1, wireType 2 =*/ 10).fork()).ldelim();\n if (message.aggregationTemporality != null && Object.hasOwnProperty.call(message, \"aggregationTemporality\"))\n writer.uint32(/* id 2, wireType 0 =*/ 16).int32(message.aggregationTemporality);\n return writer;\n };\n /**\n * Encodes the specified Histogram message, length delimited. Does not implicitly {@link opentelemetry.proto.metrics.v1.Histogram.verify|verify} messages.\n * @function encodeDelimited\n * @memberof opentelemetry.proto.metrics.v1.Histogram\n * @static\n * @param {opentelemetry.proto.metrics.v1.IHistogram} message Histogram message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Histogram.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n /**\n * Decodes a Histogram message from the specified reader or buffer.\n * @function decode\n * @memberof opentelemetry.proto.metrics.v1.Histogram\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {opentelemetry.proto.metrics.v1.Histogram} Histogram\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Histogram.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.opentelemetry.proto.metrics.v1.Histogram();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (!(message.dataPoints && message.dataPoints.length))\n message.dataPoints = [];\n message.dataPoints.push($root.opentelemetry.proto.metrics.v1.HistogramDataPoint.decode(reader, reader.uint32()));\n break;\n }\n case 2: {\n message.aggregationTemporality = reader.int32();\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n /**\n * Decodes a Histogram message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof opentelemetry.proto.metrics.v1.Histogram\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {opentelemetry.proto.metrics.v1.Histogram} Histogram\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Histogram.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n /**\n * Verifies a Histogram message.\n * @function verify\n * @memberof opentelemetry.proto.metrics.v1.Histogram\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n Histogram.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.dataPoints != null && message.hasOwnProperty(\"dataPoints\")) {\n if (!Array.isArray(message.dataPoints))\n return \"dataPoints: array expected\";\n for (var i = 0; i < message.dataPoints.length; ++i) {\n var error = $root.opentelemetry.proto.metrics.v1.HistogramDataPoint.verify(message.dataPoints[i]);\n if (error)\n return \"dataPoints.\" + error;\n }\n }\n if (message.aggregationTemporality != null && message.hasOwnProperty(\"aggregationTemporality\"))\n switch (message.aggregationTemporality) {\n default:\n return \"aggregationTemporality: enum value expected\";\n case 0:\n case 1:\n case 2:\n break;\n }\n return null;\n };\n /**\n * Creates a Histogram message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof opentelemetry.proto.metrics.v1.Histogram\n * @static\n * @param {Object.} object Plain object\n * @returns {opentelemetry.proto.metrics.v1.Histogram} Histogram\n */\n Histogram.fromObject = function fromObject(object) {\n if (object instanceof $root.opentelemetry.proto.metrics.v1.Histogram)\n return object;\n var message = new $root.opentelemetry.proto.metrics.v1.Histogram();\n if (object.dataPoints) {\n if (!Array.isArray(object.dataPoints))\n throw TypeError(\".opentelemetry.proto.metrics.v1.Histogram.dataPoints: array expected\");\n message.dataPoints = [];\n for (var i = 0; i < object.dataPoints.length; ++i) {\n if (typeof object.dataPoints[i] !== \"object\")\n throw TypeError(\".opentelemetry.proto.metrics.v1.Histogram.dataPoints: object expected\");\n message.dataPoints[i] = $root.opentelemetry.proto.metrics.v1.HistogramDataPoint.fromObject(object.dataPoints[i]);\n }\n }\n switch (object.aggregationTemporality) {\n default:\n if (typeof object.aggregationTemporality === \"number\") {\n message.aggregationTemporality = object.aggregationTemporality;\n break;\n }\n break;\n case \"AGGREGATION_TEMPORALITY_UNSPECIFIED\":\n case 0:\n message.aggregationTemporality = 0;\n break;\n case \"AGGREGATION_TEMPORALITY_DELTA\":\n case 1:\n message.aggregationTemporality = 1;\n break;\n case \"AGGREGATION_TEMPORALITY_CUMULATIVE\":\n case 2:\n message.aggregationTemporality = 2;\n break;\n }\n return message;\n };\n /**\n * Creates a plain object from a Histogram message. Also converts values to other types if specified.\n * @function toObject\n * @memberof opentelemetry.proto.metrics.v1.Histogram\n * @static\n * @param {opentelemetry.proto.metrics.v1.Histogram} message Histogram\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n Histogram.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n var object = {};\n if (options.arrays || options.defaults)\n object.dataPoints = [];\n if (options.defaults)\n object.aggregationTemporality = options.enums === String ? \"AGGREGATION_TEMPORALITY_UNSPECIFIED\" : 0;\n if (message.dataPoints && message.dataPoints.length) {\n object.dataPoints = [];\n for (var j = 0; j < message.dataPoints.length; ++j)\n object.dataPoints[j] = $root.opentelemetry.proto.metrics.v1.HistogramDataPoint.toObject(message.dataPoints[j], options);\n }\n if (message.aggregationTemporality != null && message.hasOwnProperty(\"aggregationTemporality\"))\n object.aggregationTemporality = options.enums === String ? $root.opentelemetry.proto.metrics.v1.AggregationTemporality[message.aggregationTemporality] === undefined ? message.aggregationTemporality : $root.opentelemetry.proto.metrics.v1.AggregationTemporality[message.aggregationTemporality] : message.aggregationTemporality;\n return object;\n };\n /**\n * Converts this Histogram to JSON.\n * @function toJSON\n * @memberof opentelemetry.proto.metrics.v1.Histogram\n * @instance\n * @returns {Object.} JSON object\n */\n Histogram.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n /**\n * Gets the default type url for Histogram\n * @function getTypeUrl\n * @memberof opentelemetry.proto.metrics.v1.Histogram\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n Histogram.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = \"type.googleapis.com\";\n }\n return typeUrlPrefix + \"/opentelemetry.proto.metrics.v1.Histogram\";\n };\n return Histogram;\n })();\n v1.ExponentialHistogram = (function () {\n /**\n * Properties of an ExponentialHistogram.\n * @memberof opentelemetry.proto.metrics.v1\n * @interface IExponentialHistogram\n * @property {Array.|null} [dataPoints] ExponentialHistogram dataPoints\n * @property {opentelemetry.proto.metrics.v1.AggregationTemporality|null} [aggregationTemporality] ExponentialHistogram aggregationTemporality\n */\n /**\n * Constructs a new ExponentialHistogram.\n * @memberof opentelemetry.proto.metrics.v1\n * @classdesc Represents an ExponentialHistogram.\n * @implements IExponentialHistogram\n * @constructor\n * @param {opentelemetry.proto.metrics.v1.IExponentialHistogram=} [properties] Properties to set\n */\n function ExponentialHistogram(properties) {\n this.dataPoints = [];\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n /**\n * ExponentialHistogram dataPoints.\n * @member {Array.} dataPoints\n * @memberof opentelemetry.proto.metrics.v1.ExponentialHistogram\n * @instance\n */\n ExponentialHistogram.prototype.dataPoints = $util.emptyArray;\n /**\n * ExponentialHistogram aggregationTemporality.\n * @member {opentelemetry.proto.metrics.v1.AggregationTemporality|null|undefined} aggregationTemporality\n * @memberof opentelemetry.proto.metrics.v1.ExponentialHistogram\n * @instance\n */\n ExponentialHistogram.prototype.aggregationTemporality = null;\n /**\n * Creates a new ExponentialHistogram instance using the specified properties.\n * @function create\n * @memberof opentelemetry.proto.metrics.v1.ExponentialHistogram\n * @static\n * @param {opentelemetry.proto.metrics.v1.IExponentialHistogram=} [properties] Properties to set\n * @returns {opentelemetry.proto.metrics.v1.ExponentialHistogram} ExponentialHistogram instance\n */\n ExponentialHistogram.create = function create(properties) {\n return new ExponentialHistogram(properties);\n };\n /**\n * Encodes the specified ExponentialHistogram message. Does not implicitly {@link opentelemetry.proto.metrics.v1.ExponentialHistogram.verify|verify} messages.\n * @function encode\n * @memberof opentelemetry.proto.metrics.v1.ExponentialHistogram\n * @static\n * @param {opentelemetry.proto.metrics.v1.IExponentialHistogram} message ExponentialHistogram message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ExponentialHistogram.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.dataPoints != null && message.dataPoints.length)\n for (var i = 0; i < message.dataPoints.length; ++i)\n $root.opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint.encode(message.dataPoints[i], writer.uint32(/* id 1, wireType 2 =*/ 10).fork()).ldelim();\n if (message.aggregationTemporality != null && Object.hasOwnProperty.call(message, \"aggregationTemporality\"))\n writer.uint32(/* id 2, wireType 0 =*/ 16).int32(message.aggregationTemporality);\n return writer;\n };\n /**\n * Encodes the specified ExponentialHistogram message, length delimited. Does not implicitly {@link opentelemetry.proto.metrics.v1.ExponentialHistogram.verify|verify} messages.\n * @function encodeDelimited\n * @memberof opentelemetry.proto.metrics.v1.ExponentialHistogram\n * @static\n * @param {opentelemetry.proto.metrics.v1.IExponentialHistogram} message ExponentialHistogram message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ExponentialHistogram.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n /**\n * Decodes an ExponentialHistogram message from the specified reader or buffer.\n * @function decode\n * @memberof opentelemetry.proto.metrics.v1.ExponentialHistogram\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {opentelemetry.proto.metrics.v1.ExponentialHistogram} ExponentialHistogram\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ExponentialHistogram.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.opentelemetry.proto.metrics.v1.ExponentialHistogram();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (!(message.dataPoints && message.dataPoints.length))\n message.dataPoints = [];\n message.dataPoints.push($root.opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint.decode(reader, reader.uint32()));\n break;\n }\n case 2: {\n message.aggregationTemporality = reader.int32();\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n /**\n * Decodes an ExponentialHistogram message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof opentelemetry.proto.metrics.v1.ExponentialHistogram\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {opentelemetry.proto.metrics.v1.ExponentialHistogram} ExponentialHistogram\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ExponentialHistogram.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n /**\n * Verifies an ExponentialHistogram message.\n * @function verify\n * @memberof opentelemetry.proto.metrics.v1.ExponentialHistogram\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n ExponentialHistogram.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.dataPoints != null && message.hasOwnProperty(\"dataPoints\")) {\n if (!Array.isArray(message.dataPoints))\n return \"dataPoints: array expected\";\n for (var i = 0; i < message.dataPoints.length; ++i) {\n var error = $root.opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint.verify(message.dataPoints[i]);\n if (error)\n return \"dataPoints.\" + error;\n }\n }\n if (message.aggregationTemporality != null && message.hasOwnProperty(\"aggregationTemporality\"))\n switch (message.aggregationTemporality) {\n default:\n return \"aggregationTemporality: enum value expected\";\n case 0:\n case 1:\n case 2:\n break;\n }\n return null;\n };\n /**\n * Creates an ExponentialHistogram message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof opentelemetry.proto.metrics.v1.ExponentialHistogram\n * @static\n * @param {Object.} object Plain object\n * @returns {opentelemetry.proto.metrics.v1.ExponentialHistogram} ExponentialHistogram\n */\n ExponentialHistogram.fromObject = function fromObject(object) {\n if (object instanceof $root.opentelemetry.proto.metrics.v1.ExponentialHistogram)\n return object;\n var message = new $root.opentelemetry.proto.metrics.v1.ExponentialHistogram();\n if (object.dataPoints) {\n if (!Array.isArray(object.dataPoints))\n throw TypeError(\".opentelemetry.proto.metrics.v1.ExponentialHistogram.dataPoints: array expected\");\n message.dataPoints = [];\n for (var i = 0; i < object.dataPoints.length; ++i) {\n if (typeof object.dataPoints[i] !== \"object\")\n throw TypeError(\".opentelemetry.proto.metrics.v1.ExponentialHistogram.dataPoints: object expected\");\n message.dataPoints[i] = $root.opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint.fromObject(object.dataPoints[i]);\n }\n }\n switch (object.aggregationTemporality) {\n default:\n if (typeof object.aggregationTemporality === \"number\") {\n message.aggregationTemporality = object.aggregationTemporality;\n break;\n }\n break;\n case \"AGGREGATION_TEMPORALITY_UNSPECIFIED\":\n case 0:\n message.aggregationTemporality = 0;\n break;\n case \"AGGREGATION_TEMPORALITY_DELTA\":\n case 1:\n message.aggregationTemporality = 1;\n break;\n case \"AGGREGATION_TEMPORALITY_CUMULATIVE\":\n case 2:\n message.aggregationTemporality = 2;\n break;\n }\n return message;\n };\n /**\n * Creates a plain object from an ExponentialHistogram message. Also converts values to other types if specified.\n * @function toObject\n * @memberof opentelemetry.proto.metrics.v1.ExponentialHistogram\n * @static\n * @param {opentelemetry.proto.metrics.v1.ExponentialHistogram} message ExponentialHistogram\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n ExponentialHistogram.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n var object = {};\n if (options.arrays || options.defaults)\n object.dataPoints = [];\n if (options.defaults)\n object.aggregationTemporality = options.enums === String ? \"AGGREGATION_TEMPORALITY_UNSPECIFIED\" : 0;\n if (message.dataPoints && message.dataPoints.length) {\n object.dataPoints = [];\n for (var j = 0; j < message.dataPoints.length; ++j)\n object.dataPoints[j] = $root.opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint.toObject(message.dataPoints[j], options);\n }\n if (message.aggregationTemporality != null && message.hasOwnProperty(\"aggregationTemporality\"))\n object.aggregationTemporality = options.enums === String ? $root.opentelemetry.proto.metrics.v1.AggregationTemporality[message.aggregationTemporality] === undefined ? message.aggregationTemporality : $root.opentelemetry.proto.metrics.v1.AggregationTemporality[message.aggregationTemporality] : message.aggregationTemporality;\n return object;\n };\n /**\n * Converts this ExponentialHistogram to JSON.\n * @function toJSON\n * @memberof opentelemetry.proto.metrics.v1.ExponentialHistogram\n * @instance\n * @returns {Object.} JSON object\n */\n ExponentialHistogram.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n /**\n * Gets the default type url for ExponentialHistogram\n * @function getTypeUrl\n * @memberof opentelemetry.proto.metrics.v1.ExponentialHistogram\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n ExponentialHistogram.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = \"type.googleapis.com\";\n }\n return typeUrlPrefix + \"/opentelemetry.proto.metrics.v1.ExponentialHistogram\";\n };\n return ExponentialHistogram;\n })();\n v1.Summary = (function () {\n /**\n * Properties of a Summary.\n * @memberof opentelemetry.proto.metrics.v1\n * @interface ISummary\n * @property {Array.|null} [dataPoints] Summary dataPoints\n */\n /**\n * Constructs a new Summary.\n * @memberof opentelemetry.proto.metrics.v1\n * @classdesc Represents a Summary.\n * @implements ISummary\n * @constructor\n * @param {opentelemetry.proto.metrics.v1.ISummary=} [properties] Properties to set\n */\n function Summary(properties) {\n this.dataPoints = [];\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n /**\n * Summary dataPoints.\n * @member {Array.} dataPoints\n * @memberof opentelemetry.proto.metrics.v1.Summary\n * @instance\n */\n Summary.prototype.dataPoints = $util.emptyArray;\n /**\n * Creates a new Summary instance using the specified properties.\n * @function create\n * @memberof opentelemetry.proto.metrics.v1.Summary\n * @static\n * @param {opentelemetry.proto.metrics.v1.ISummary=} [properties] Properties to set\n * @returns {opentelemetry.proto.metrics.v1.Summary} Summary instance\n */\n Summary.create = function create(properties) {\n return new Summary(properties);\n };\n /**\n * Encodes the specified Summary message. Does not implicitly {@link opentelemetry.proto.metrics.v1.Summary.verify|verify} messages.\n * @function encode\n * @memberof opentelemetry.proto.metrics.v1.Summary\n * @static\n * @param {opentelemetry.proto.metrics.v1.ISummary} message Summary message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Summary.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.dataPoints != null && message.dataPoints.length)\n for (var i = 0; i < message.dataPoints.length; ++i)\n $root.opentelemetry.proto.metrics.v1.SummaryDataPoint.encode(message.dataPoints[i], writer.uint32(/* id 1, wireType 2 =*/ 10).fork()).ldelim();\n return writer;\n };\n /**\n * Encodes the specified Summary message, length delimited. Does not implicitly {@link opentelemetry.proto.metrics.v1.Summary.verify|verify} messages.\n * @function encodeDelimited\n * @memberof opentelemetry.proto.metrics.v1.Summary\n * @static\n * @param {opentelemetry.proto.metrics.v1.ISummary} message Summary message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Summary.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n /**\n * Decodes a Summary message from the specified reader or buffer.\n * @function decode\n * @memberof opentelemetry.proto.metrics.v1.Summary\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {opentelemetry.proto.metrics.v1.Summary} Summary\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Summary.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.opentelemetry.proto.metrics.v1.Summary();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (!(message.dataPoints && message.dataPoints.length))\n message.dataPoints = [];\n message.dataPoints.push($root.opentelemetry.proto.metrics.v1.SummaryDataPoint.decode(reader, reader.uint32()));\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n /**\n * Decodes a Summary message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof opentelemetry.proto.metrics.v1.Summary\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {opentelemetry.proto.metrics.v1.Summary} Summary\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Summary.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n /**\n * Verifies a Summary message.\n * @function verify\n * @memberof opentelemetry.proto.metrics.v1.Summary\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n Summary.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.dataPoints != null && message.hasOwnProperty(\"dataPoints\")) {\n if (!Array.isArray(message.dataPoints))\n return \"dataPoints: array expected\";\n for (var i = 0; i < message.dataPoints.length; ++i) {\n var error = $root.opentelemetry.proto.metrics.v1.SummaryDataPoint.verify(message.dataPoints[i]);\n if (error)\n return \"dataPoints.\" + error;\n }\n }\n return null;\n };\n /**\n * Creates a Summary message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof opentelemetry.proto.metrics.v1.Summary\n * @static\n * @param {Object.} object Plain object\n * @returns {opentelemetry.proto.metrics.v1.Summary} Summary\n */\n Summary.fromObject = function fromObject(object) {\n if (object instanceof $root.opentelemetry.proto.metrics.v1.Summary)\n return object;\n var message = new $root.opentelemetry.proto.metrics.v1.Summary();\n if (object.dataPoints) {\n if (!Array.isArray(object.dataPoints))\n throw TypeError(\".opentelemetry.proto.metrics.v1.Summary.dataPoints: array expected\");\n message.dataPoints = [];\n for (var i = 0; i < object.dataPoints.length; ++i) {\n if (typeof object.dataPoints[i] !== \"object\")\n throw TypeError(\".opentelemetry.proto.metrics.v1.Summary.dataPoints: object expected\");\n message.dataPoints[i] = $root.opentelemetry.proto.metrics.v1.SummaryDataPoint.fromObject(object.dataPoints[i]);\n }\n }\n return message;\n };\n /**\n * Creates a plain object from a Summary message. Also converts values to other types if specified.\n * @function toObject\n * @memberof opentelemetry.proto.metrics.v1.Summary\n * @static\n * @param {opentelemetry.proto.metrics.v1.Summary} message Summary\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n Summary.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n var object = {};\n if (options.arrays || options.defaults)\n object.dataPoints = [];\n if (message.dataPoints && message.dataPoints.length) {\n object.dataPoints = [];\n for (var j = 0; j < message.dataPoints.length; ++j)\n object.dataPoints[j] = $root.opentelemetry.proto.metrics.v1.SummaryDataPoint.toObject(message.dataPoints[j], options);\n }\n return object;\n };\n /**\n * Converts this Summary to JSON.\n * @function toJSON\n * @memberof opentelemetry.proto.metrics.v1.Summary\n * @instance\n * @returns {Object.} JSON object\n */\n Summary.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n /**\n * Gets the default type url for Summary\n * @function getTypeUrl\n * @memberof opentelemetry.proto.metrics.v1.Summary\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n Summary.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = \"type.googleapis.com\";\n }\n return typeUrlPrefix + \"/opentelemetry.proto.metrics.v1.Summary\";\n };\n return Summary;\n })();\n /**\n * AggregationTemporality enum.\n * @name opentelemetry.proto.metrics.v1.AggregationTemporality\n * @enum {number}\n * @property {number} AGGREGATION_TEMPORALITY_UNSPECIFIED=0 AGGREGATION_TEMPORALITY_UNSPECIFIED value\n * @property {number} AGGREGATION_TEMPORALITY_DELTA=1 AGGREGATION_TEMPORALITY_DELTA value\n * @property {number} AGGREGATION_TEMPORALITY_CUMULATIVE=2 AGGREGATION_TEMPORALITY_CUMULATIVE value\n */\n v1.AggregationTemporality = (function () {\n var valuesById = {}, values = Object.create(valuesById);\n values[valuesById[0] = \"AGGREGATION_TEMPORALITY_UNSPECIFIED\"] = 0;\n values[valuesById[1] = \"AGGREGATION_TEMPORALITY_DELTA\"] = 1;\n values[valuesById[2] = \"AGGREGATION_TEMPORALITY_CUMULATIVE\"] = 2;\n return values;\n })();\n /**\n * DataPointFlags enum.\n * @name opentelemetry.proto.metrics.v1.DataPointFlags\n * @enum {number}\n * @property {number} DATA_POINT_FLAGS_DO_NOT_USE=0 DATA_POINT_FLAGS_DO_NOT_USE value\n * @property {number} DATA_POINT_FLAGS_NO_RECORDED_VALUE_MASK=1 DATA_POINT_FLAGS_NO_RECORDED_VALUE_MASK value\n */\n v1.DataPointFlags = (function () {\n var valuesById = {}, values = Object.create(valuesById);\n values[valuesById[0] = \"DATA_POINT_FLAGS_DO_NOT_USE\"] = 0;\n values[valuesById[1] = \"DATA_POINT_FLAGS_NO_RECORDED_VALUE_MASK\"] = 1;\n return values;\n })();\n v1.NumberDataPoint = (function () {\n /**\n * Properties of a NumberDataPoint.\n * @memberof opentelemetry.proto.metrics.v1\n * @interface INumberDataPoint\n * @property {Array.|null} [attributes] NumberDataPoint attributes\n * @property {number|Long|null} [startTimeUnixNano] NumberDataPoint startTimeUnixNano\n * @property {number|Long|null} [timeUnixNano] NumberDataPoint timeUnixNano\n * @property {number|null} [asDouble] NumberDataPoint asDouble\n * @property {number|Long|null} [asInt] NumberDataPoint asInt\n * @property {Array.|null} [exemplars] NumberDataPoint exemplars\n * @property {number|null} [flags] NumberDataPoint flags\n */\n /**\n * Constructs a new NumberDataPoint.\n * @memberof opentelemetry.proto.metrics.v1\n * @classdesc Represents a NumberDataPoint.\n * @implements INumberDataPoint\n * @constructor\n * @param {opentelemetry.proto.metrics.v1.INumberDataPoint=} [properties] Properties to set\n */\n function NumberDataPoint(properties) {\n this.attributes = [];\n this.exemplars = [];\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n /**\n * NumberDataPoint attributes.\n * @member {Array.} attributes\n * @memberof opentelemetry.proto.metrics.v1.NumberDataPoint\n * @instance\n */\n NumberDataPoint.prototype.attributes = $util.emptyArray;\n /**\n * NumberDataPoint startTimeUnixNano.\n * @member {number|Long|null|undefined} startTimeUnixNano\n * @memberof opentelemetry.proto.metrics.v1.NumberDataPoint\n * @instance\n */\n NumberDataPoint.prototype.startTimeUnixNano = null;\n /**\n * NumberDataPoint timeUnixNano.\n * @member {number|Long|null|undefined} timeUnixNano\n * @memberof opentelemetry.proto.metrics.v1.NumberDataPoint\n * @instance\n */\n NumberDataPoint.prototype.timeUnixNano = null;\n /**\n * NumberDataPoint asDouble.\n * @member {number|null|undefined} asDouble\n * @memberof opentelemetry.proto.metrics.v1.NumberDataPoint\n * @instance\n */\n NumberDataPoint.prototype.asDouble = null;\n /**\n * NumberDataPoint asInt.\n * @member {number|Long|null|undefined} asInt\n * @memberof opentelemetry.proto.metrics.v1.NumberDataPoint\n * @instance\n */\n NumberDataPoint.prototype.asInt = null;\n /**\n * NumberDataPoint exemplars.\n * @member {Array.} exemplars\n * @memberof opentelemetry.proto.metrics.v1.NumberDataPoint\n * @instance\n */\n NumberDataPoint.prototype.exemplars = $util.emptyArray;\n /**\n * NumberDataPoint flags.\n * @member {number|null|undefined} flags\n * @memberof opentelemetry.proto.metrics.v1.NumberDataPoint\n * @instance\n */\n NumberDataPoint.prototype.flags = null;\n // OneOf field names bound to virtual getters and setters\n var $oneOfFields;\n /**\n * NumberDataPoint value.\n * @member {\"asDouble\"|\"asInt\"|undefined} value\n * @memberof opentelemetry.proto.metrics.v1.NumberDataPoint\n * @instance\n */\n Object.defineProperty(NumberDataPoint.prototype, \"value\", {\n get: $util.oneOfGetter($oneOfFields = [\"asDouble\", \"asInt\"]),\n set: $util.oneOfSetter($oneOfFields)\n });\n /**\n * Creates a new NumberDataPoint instance using the specified properties.\n * @function create\n * @memberof opentelemetry.proto.metrics.v1.NumberDataPoint\n * @static\n * @param {opentelemetry.proto.metrics.v1.INumberDataPoint=} [properties] Properties to set\n * @returns {opentelemetry.proto.metrics.v1.NumberDataPoint} NumberDataPoint instance\n */\n NumberDataPoint.create = function create(properties) {\n return new NumberDataPoint(properties);\n };\n /**\n * Encodes the specified NumberDataPoint message. Does not implicitly {@link opentelemetry.proto.metrics.v1.NumberDataPoint.verify|verify} messages.\n * @function encode\n * @memberof opentelemetry.proto.metrics.v1.NumberDataPoint\n * @static\n * @param {opentelemetry.proto.metrics.v1.INumberDataPoint} message NumberDataPoint message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n NumberDataPoint.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.startTimeUnixNano != null && Object.hasOwnProperty.call(message, \"startTimeUnixNano\"))\n writer.uint32(/* id 2, wireType 1 =*/ 17).fixed64(message.startTimeUnixNano);\n if (message.timeUnixNano != null && Object.hasOwnProperty.call(message, \"timeUnixNano\"))\n writer.uint32(/* id 3, wireType 1 =*/ 25).fixed64(message.timeUnixNano);\n if (message.asDouble != null && Object.hasOwnProperty.call(message, \"asDouble\"))\n writer.uint32(/* id 4, wireType 1 =*/ 33).double(message.asDouble);\n if (message.exemplars != null && message.exemplars.length)\n for (var i = 0; i < message.exemplars.length; ++i)\n $root.opentelemetry.proto.metrics.v1.Exemplar.encode(message.exemplars[i], writer.uint32(/* id 5, wireType 2 =*/ 42).fork()).ldelim();\n if (message.asInt != null && Object.hasOwnProperty.call(message, \"asInt\"))\n writer.uint32(/* id 6, wireType 1 =*/ 49).sfixed64(message.asInt);\n if (message.attributes != null && message.attributes.length)\n for (var i = 0; i < message.attributes.length; ++i)\n $root.opentelemetry.proto.common.v1.KeyValue.encode(message.attributes[i], writer.uint32(/* id 7, wireType 2 =*/ 58).fork()).ldelim();\n if (message.flags != null && Object.hasOwnProperty.call(message, \"flags\"))\n writer.uint32(/* id 8, wireType 0 =*/ 64).uint32(message.flags);\n return writer;\n };\n /**\n * Encodes the specified NumberDataPoint message, length delimited. Does not implicitly {@link opentelemetry.proto.metrics.v1.NumberDataPoint.verify|verify} messages.\n * @function encodeDelimited\n * @memberof opentelemetry.proto.metrics.v1.NumberDataPoint\n * @static\n * @param {opentelemetry.proto.metrics.v1.INumberDataPoint} message NumberDataPoint message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n NumberDataPoint.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n /**\n * Decodes a NumberDataPoint message from the specified reader or buffer.\n * @function decode\n * @memberof opentelemetry.proto.metrics.v1.NumberDataPoint\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {opentelemetry.proto.metrics.v1.NumberDataPoint} NumberDataPoint\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n NumberDataPoint.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.opentelemetry.proto.metrics.v1.NumberDataPoint();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 7: {\n if (!(message.attributes && message.attributes.length))\n message.attributes = [];\n message.attributes.push($root.opentelemetry.proto.common.v1.KeyValue.decode(reader, reader.uint32()));\n break;\n }\n case 2: {\n message.startTimeUnixNano = reader.fixed64();\n break;\n }\n case 3: {\n message.timeUnixNano = reader.fixed64();\n break;\n }\n case 4: {\n message.asDouble = reader.double();\n break;\n }\n case 6: {\n message.asInt = reader.sfixed64();\n break;\n }\n case 5: {\n if (!(message.exemplars && message.exemplars.length))\n message.exemplars = [];\n message.exemplars.push($root.opentelemetry.proto.metrics.v1.Exemplar.decode(reader, reader.uint32()));\n break;\n }\n case 8: {\n message.flags = reader.uint32();\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n /**\n * Decodes a NumberDataPoint message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof opentelemetry.proto.metrics.v1.NumberDataPoint\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {opentelemetry.proto.metrics.v1.NumberDataPoint} NumberDataPoint\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n NumberDataPoint.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n /**\n * Verifies a NumberDataPoint message.\n * @function verify\n * @memberof opentelemetry.proto.metrics.v1.NumberDataPoint\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n NumberDataPoint.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n var properties = {};\n if (message.attributes != null && message.hasOwnProperty(\"attributes\")) {\n if (!Array.isArray(message.attributes))\n return \"attributes: array expected\";\n for (var i = 0; i < message.attributes.length; ++i) {\n var error = $root.opentelemetry.proto.common.v1.KeyValue.verify(message.attributes[i]);\n if (error)\n return \"attributes.\" + error;\n }\n }\n if (message.startTimeUnixNano != null && message.hasOwnProperty(\"startTimeUnixNano\"))\n if (!$util.isInteger(message.startTimeUnixNano) && !(message.startTimeUnixNano && $util.isInteger(message.startTimeUnixNano.low) && $util.isInteger(message.startTimeUnixNano.high)))\n return \"startTimeUnixNano: integer|Long expected\";\n if (message.timeUnixNano != null && message.hasOwnProperty(\"timeUnixNano\"))\n if (!$util.isInteger(message.timeUnixNano) && !(message.timeUnixNano && $util.isInteger(message.timeUnixNano.low) && $util.isInteger(message.timeUnixNano.high)))\n return \"timeUnixNano: integer|Long expected\";\n if (message.asDouble != null && message.hasOwnProperty(\"asDouble\")) {\n properties.value = 1;\n if (typeof message.asDouble !== \"number\")\n return \"asDouble: number expected\";\n }\n if (message.asInt != null && message.hasOwnProperty(\"asInt\")) {\n if (properties.value === 1)\n return \"value: multiple values\";\n properties.value = 1;\n if (!$util.isInteger(message.asInt) && !(message.asInt && $util.isInteger(message.asInt.low) && $util.isInteger(message.asInt.high)))\n return \"asInt: integer|Long expected\";\n }\n if (message.exemplars != null && message.hasOwnProperty(\"exemplars\")) {\n if (!Array.isArray(message.exemplars))\n return \"exemplars: array expected\";\n for (var i = 0; i < message.exemplars.length; ++i) {\n var error = $root.opentelemetry.proto.metrics.v1.Exemplar.verify(message.exemplars[i]);\n if (error)\n return \"exemplars.\" + error;\n }\n }\n if (message.flags != null && message.hasOwnProperty(\"flags\"))\n if (!$util.isInteger(message.flags))\n return \"flags: integer expected\";\n return null;\n };\n /**\n * Creates a NumberDataPoint message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof opentelemetry.proto.metrics.v1.NumberDataPoint\n * @static\n * @param {Object.} object Plain object\n * @returns {opentelemetry.proto.metrics.v1.NumberDataPoint} NumberDataPoint\n */\n NumberDataPoint.fromObject = function fromObject(object) {\n if (object instanceof $root.opentelemetry.proto.metrics.v1.NumberDataPoint)\n return object;\n var message = new $root.opentelemetry.proto.metrics.v1.NumberDataPoint();\n if (object.attributes) {\n if (!Array.isArray(object.attributes))\n throw TypeError(\".opentelemetry.proto.metrics.v1.NumberDataPoint.attributes: array expected\");\n message.attributes = [];\n for (var i = 0; i < object.attributes.length; ++i) {\n if (typeof object.attributes[i] !== \"object\")\n throw TypeError(\".opentelemetry.proto.metrics.v1.NumberDataPoint.attributes: object expected\");\n message.attributes[i] = $root.opentelemetry.proto.common.v1.KeyValue.fromObject(object.attributes[i]);\n }\n }\n if (object.startTimeUnixNano != null)\n if ($util.Long)\n (message.startTimeUnixNano = $util.Long.fromValue(object.startTimeUnixNano)).unsigned = false;\n else if (typeof object.startTimeUnixNano === \"string\")\n message.startTimeUnixNano = parseInt(object.startTimeUnixNano, 10);\n else if (typeof object.startTimeUnixNano === \"number\")\n message.startTimeUnixNano = object.startTimeUnixNano;\n else if (typeof object.startTimeUnixNano === \"object\")\n message.startTimeUnixNano = new $util.LongBits(object.startTimeUnixNano.low >>> 0, object.startTimeUnixNano.high >>> 0).toNumber();\n if (object.timeUnixNano != null)\n if ($util.Long)\n (message.timeUnixNano = $util.Long.fromValue(object.timeUnixNano)).unsigned = false;\n else if (typeof object.timeUnixNano === \"string\")\n message.timeUnixNano = parseInt(object.timeUnixNano, 10);\n else if (typeof object.timeUnixNano === \"number\")\n message.timeUnixNano = object.timeUnixNano;\n else if (typeof object.timeUnixNano === \"object\")\n message.timeUnixNano = new $util.LongBits(object.timeUnixNano.low >>> 0, object.timeUnixNano.high >>> 0).toNumber();\n if (object.asDouble != null)\n message.asDouble = Number(object.asDouble);\n if (object.asInt != null)\n if ($util.Long)\n (message.asInt = $util.Long.fromValue(object.asInt)).unsigned = false;\n else if (typeof object.asInt === \"string\")\n message.asInt = parseInt(object.asInt, 10);\n else if (typeof object.asInt === \"number\")\n message.asInt = object.asInt;\n else if (typeof object.asInt === \"object\")\n message.asInt = new $util.LongBits(object.asInt.low >>> 0, object.asInt.high >>> 0).toNumber();\n if (object.exemplars) {\n if (!Array.isArray(object.exemplars))\n throw TypeError(\".opentelemetry.proto.metrics.v1.NumberDataPoint.exemplars: array expected\");\n message.exemplars = [];\n for (var i = 0; i < object.exemplars.length; ++i) {\n if (typeof object.exemplars[i] !== \"object\")\n throw TypeError(\".opentelemetry.proto.metrics.v1.NumberDataPoint.exemplars: object expected\");\n message.exemplars[i] = $root.opentelemetry.proto.metrics.v1.Exemplar.fromObject(object.exemplars[i]);\n }\n }\n if (object.flags != null)\n message.flags = object.flags >>> 0;\n return message;\n };\n /**\n * Creates a plain object from a NumberDataPoint message. Also converts values to other types if specified.\n * @function toObject\n * @memberof opentelemetry.proto.metrics.v1.NumberDataPoint\n * @static\n * @param {opentelemetry.proto.metrics.v1.NumberDataPoint} message NumberDataPoint\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n NumberDataPoint.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n var object = {};\n if (options.arrays || options.defaults) {\n object.exemplars = [];\n object.attributes = [];\n }\n if (options.defaults) {\n if ($util.Long) {\n var long = new $util.Long(0, 0, false);\n object.startTimeUnixNano = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n }\n else\n object.startTimeUnixNano = options.longs === String ? \"0\" : 0;\n if ($util.Long) {\n var long = new $util.Long(0, 0, false);\n object.timeUnixNano = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n }\n else\n object.timeUnixNano = options.longs === String ? \"0\" : 0;\n object.flags = 0;\n }\n if (message.startTimeUnixNano != null && message.hasOwnProperty(\"startTimeUnixNano\"))\n if (typeof message.startTimeUnixNano === \"number\")\n object.startTimeUnixNano = options.longs === String ? String(message.startTimeUnixNano) : message.startTimeUnixNano;\n else\n object.startTimeUnixNano = options.longs === String ? $util.Long.prototype.toString.call(message.startTimeUnixNano) : options.longs === Number ? new $util.LongBits(message.startTimeUnixNano.low >>> 0, message.startTimeUnixNano.high >>> 0).toNumber() : message.startTimeUnixNano;\n if (message.timeUnixNano != null && message.hasOwnProperty(\"timeUnixNano\"))\n if (typeof message.timeUnixNano === \"number\")\n object.timeUnixNano = options.longs === String ? String(message.timeUnixNano) : message.timeUnixNano;\n else\n object.timeUnixNano = options.longs === String ? $util.Long.prototype.toString.call(message.timeUnixNano) : options.longs === Number ? new $util.LongBits(message.timeUnixNano.low >>> 0, message.timeUnixNano.high >>> 0).toNumber() : message.timeUnixNano;\n if (message.asDouble != null && message.hasOwnProperty(\"asDouble\")) {\n object.asDouble = options.json && !isFinite(message.asDouble) ? String(message.asDouble) : message.asDouble;\n if (options.oneofs)\n object.value = \"asDouble\";\n }\n if (message.exemplars && message.exemplars.length) {\n object.exemplars = [];\n for (var j = 0; j < message.exemplars.length; ++j)\n object.exemplars[j] = $root.opentelemetry.proto.metrics.v1.Exemplar.toObject(message.exemplars[j], options);\n }\n if (message.asInt != null && message.hasOwnProperty(\"asInt\")) {\n if (typeof message.asInt === \"number\")\n object.asInt = options.longs === String ? String(message.asInt) : message.asInt;\n else\n object.asInt = options.longs === String ? $util.Long.prototype.toString.call(message.asInt) : options.longs === Number ? new $util.LongBits(message.asInt.low >>> 0, message.asInt.high >>> 0).toNumber() : message.asInt;\n if (options.oneofs)\n object.value = \"asInt\";\n }\n if (message.attributes && message.attributes.length) {\n object.attributes = [];\n for (var j = 0; j < message.attributes.length; ++j)\n object.attributes[j] = $root.opentelemetry.proto.common.v1.KeyValue.toObject(message.attributes[j], options);\n }\n if (message.flags != null && message.hasOwnProperty(\"flags\"))\n object.flags = message.flags;\n return object;\n };\n /**\n * Converts this NumberDataPoint to JSON.\n * @function toJSON\n * @memberof opentelemetry.proto.metrics.v1.NumberDataPoint\n * @instance\n * @returns {Object.} JSON object\n */\n NumberDataPoint.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n /**\n * Gets the default type url for NumberDataPoint\n * @function getTypeUrl\n * @memberof opentelemetry.proto.metrics.v1.NumberDataPoint\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n NumberDataPoint.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = \"type.googleapis.com\";\n }\n return typeUrlPrefix + \"/opentelemetry.proto.metrics.v1.NumberDataPoint\";\n };\n return NumberDataPoint;\n })();\n v1.HistogramDataPoint = (function () {\n /**\n * Properties of a HistogramDataPoint.\n * @memberof opentelemetry.proto.metrics.v1\n * @interface IHistogramDataPoint\n * @property {Array.|null} [attributes] HistogramDataPoint attributes\n * @property {number|Long|null} [startTimeUnixNano] HistogramDataPoint startTimeUnixNano\n * @property {number|Long|null} [timeUnixNano] HistogramDataPoint timeUnixNano\n * @property {number|Long|null} [count] HistogramDataPoint count\n * @property {number|null} [sum] HistogramDataPoint sum\n * @property {Array.|null} [bucketCounts] HistogramDataPoint bucketCounts\n * @property {Array.|null} [explicitBounds] HistogramDataPoint explicitBounds\n * @property {Array.|null} [exemplars] HistogramDataPoint exemplars\n * @property {number|null} [flags] HistogramDataPoint flags\n * @property {number|null} [min] HistogramDataPoint min\n * @property {number|null} [max] HistogramDataPoint max\n */\n /**\n * Constructs a new HistogramDataPoint.\n * @memberof opentelemetry.proto.metrics.v1\n * @classdesc Represents a HistogramDataPoint.\n * @implements IHistogramDataPoint\n * @constructor\n * @param {opentelemetry.proto.metrics.v1.IHistogramDataPoint=} [properties] Properties to set\n */\n function HistogramDataPoint(properties) {\n this.attributes = [];\n this.bucketCounts = [];\n this.explicitBounds = [];\n this.exemplars = [];\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n /**\n * HistogramDataPoint attributes.\n * @member {Array.} attributes\n * @memberof opentelemetry.proto.metrics.v1.HistogramDataPoint\n * @instance\n */\n HistogramDataPoint.prototype.attributes = $util.emptyArray;\n /**\n * HistogramDataPoint startTimeUnixNano.\n * @member {number|Long|null|undefined} startTimeUnixNano\n * @memberof opentelemetry.proto.metrics.v1.HistogramDataPoint\n * @instance\n */\n HistogramDataPoint.prototype.startTimeUnixNano = null;\n /**\n * HistogramDataPoint timeUnixNano.\n * @member {number|Long|null|undefined} timeUnixNano\n * @memberof opentelemetry.proto.metrics.v1.HistogramDataPoint\n * @instance\n */\n HistogramDataPoint.prototype.timeUnixNano = null;\n /**\n * HistogramDataPoint count.\n * @member {number|Long|null|undefined} count\n * @memberof opentelemetry.proto.metrics.v1.HistogramDataPoint\n * @instance\n */\n HistogramDataPoint.prototype.count = null;\n /**\n * HistogramDataPoint sum.\n * @member {number|null|undefined} sum\n * @memberof opentelemetry.proto.metrics.v1.HistogramDataPoint\n * @instance\n */\n HistogramDataPoint.prototype.sum = null;\n /**\n * HistogramDataPoint bucketCounts.\n * @member {Array.} bucketCounts\n * @memberof opentelemetry.proto.metrics.v1.HistogramDataPoint\n * @instance\n */\n HistogramDataPoint.prototype.bucketCounts = $util.emptyArray;\n /**\n * HistogramDataPoint explicitBounds.\n * @member {Array.} explicitBounds\n * @memberof opentelemetry.proto.metrics.v1.HistogramDataPoint\n * @instance\n */\n HistogramDataPoint.prototype.explicitBounds = $util.emptyArray;\n /**\n * HistogramDataPoint exemplars.\n * @member {Array.} exemplars\n * @memberof opentelemetry.proto.metrics.v1.HistogramDataPoint\n * @instance\n */\n HistogramDataPoint.prototype.exemplars = $util.emptyArray;\n /**\n * HistogramDataPoint flags.\n * @member {number|null|undefined} flags\n * @memberof opentelemetry.proto.metrics.v1.HistogramDataPoint\n * @instance\n */\n HistogramDataPoint.prototype.flags = null;\n /**\n * HistogramDataPoint min.\n * @member {number|null|undefined} min\n * @memberof opentelemetry.proto.metrics.v1.HistogramDataPoint\n * @instance\n */\n HistogramDataPoint.prototype.min = null;\n /**\n * HistogramDataPoint max.\n * @member {number|null|undefined} max\n * @memberof opentelemetry.proto.metrics.v1.HistogramDataPoint\n * @instance\n */\n HistogramDataPoint.prototype.max = null;\n // OneOf field names bound to virtual getters and setters\n var $oneOfFields;\n /**\n * HistogramDataPoint _sum.\n * @member {\"sum\"|undefined} _sum\n * @memberof opentelemetry.proto.metrics.v1.HistogramDataPoint\n * @instance\n */\n Object.defineProperty(HistogramDataPoint.prototype, \"_sum\", {\n get: $util.oneOfGetter($oneOfFields = [\"sum\"]),\n set: $util.oneOfSetter($oneOfFields)\n });\n /**\n * HistogramDataPoint _min.\n * @member {\"min\"|undefined} _min\n * @memberof opentelemetry.proto.metrics.v1.HistogramDataPoint\n * @instance\n */\n Object.defineProperty(HistogramDataPoint.prototype, \"_min\", {\n get: $util.oneOfGetter($oneOfFields = [\"min\"]),\n set: $util.oneOfSetter($oneOfFields)\n });\n /**\n * HistogramDataPoint _max.\n * @member {\"max\"|undefined} _max\n * @memberof opentelemetry.proto.metrics.v1.HistogramDataPoint\n * @instance\n */\n Object.defineProperty(HistogramDataPoint.prototype, \"_max\", {\n get: $util.oneOfGetter($oneOfFields = [\"max\"]),\n set: $util.oneOfSetter($oneOfFields)\n });\n /**\n * Creates a new HistogramDataPoint instance using the specified properties.\n * @function create\n * @memberof opentelemetry.proto.metrics.v1.HistogramDataPoint\n * @static\n * @param {opentelemetry.proto.metrics.v1.IHistogramDataPoint=} [properties] Properties to set\n * @returns {opentelemetry.proto.metrics.v1.HistogramDataPoint} HistogramDataPoint instance\n */\n HistogramDataPoint.create = function create(properties) {\n return new HistogramDataPoint(properties);\n };\n /**\n * Encodes the specified HistogramDataPoint message. Does not implicitly {@link opentelemetry.proto.metrics.v1.HistogramDataPoint.verify|verify} messages.\n * @function encode\n * @memberof opentelemetry.proto.metrics.v1.HistogramDataPoint\n * @static\n * @param {opentelemetry.proto.metrics.v1.IHistogramDataPoint} message HistogramDataPoint message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n HistogramDataPoint.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.startTimeUnixNano != null && Object.hasOwnProperty.call(message, \"startTimeUnixNano\"))\n writer.uint32(/* id 2, wireType 1 =*/ 17).fixed64(message.startTimeUnixNano);\n if (message.timeUnixNano != null && Object.hasOwnProperty.call(message, \"timeUnixNano\"))\n writer.uint32(/* id 3, wireType 1 =*/ 25).fixed64(message.timeUnixNano);\n if (message.count != null && Object.hasOwnProperty.call(message, \"count\"))\n writer.uint32(/* id 4, wireType 1 =*/ 33).fixed64(message.count);\n if (message.sum != null && Object.hasOwnProperty.call(message, \"sum\"))\n writer.uint32(/* id 5, wireType 1 =*/ 41).double(message.sum);\n if (message.bucketCounts != null && message.bucketCounts.length) {\n writer.uint32(/* id 6, wireType 2 =*/ 50).fork();\n for (var i = 0; i < message.bucketCounts.length; ++i)\n writer.fixed64(message.bucketCounts[i]);\n writer.ldelim();\n }\n if (message.explicitBounds != null && message.explicitBounds.length) {\n writer.uint32(/* id 7, wireType 2 =*/ 58).fork();\n for (var i = 0; i < message.explicitBounds.length; ++i)\n writer.double(message.explicitBounds[i]);\n writer.ldelim();\n }\n if (message.exemplars != null && message.exemplars.length)\n for (var i = 0; i < message.exemplars.length; ++i)\n $root.opentelemetry.proto.metrics.v1.Exemplar.encode(message.exemplars[i], writer.uint32(/* id 8, wireType 2 =*/ 66).fork()).ldelim();\n if (message.attributes != null && message.attributes.length)\n for (var i = 0; i < message.attributes.length; ++i)\n $root.opentelemetry.proto.common.v1.KeyValue.encode(message.attributes[i], writer.uint32(/* id 9, wireType 2 =*/ 74).fork()).ldelim();\n if (message.flags != null && Object.hasOwnProperty.call(message, \"flags\"))\n writer.uint32(/* id 10, wireType 0 =*/ 80).uint32(message.flags);\n if (message.min != null && Object.hasOwnProperty.call(message, \"min\"))\n writer.uint32(/* id 11, wireType 1 =*/ 89).double(message.min);\n if (message.max != null && Object.hasOwnProperty.call(message, \"max\"))\n writer.uint32(/* id 12, wireType 1 =*/ 97).double(message.max);\n return writer;\n };\n /**\n * Encodes the specified HistogramDataPoint message, length delimited. Does not implicitly {@link opentelemetry.proto.metrics.v1.HistogramDataPoint.verify|verify} messages.\n * @function encodeDelimited\n * @memberof opentelemetry.proto.metrics.v1.HistogramDataPoint\n * @static\n * @param {opentelemetry.proto.metrics.v1.IHistogramDataPoint} message HistogramDataPoint message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n HistogramDataPoint.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n /**\n * Decodes a HistogramDataPoint message from the specified reader or buffer.\n * @function decode\n * @memberof opentelemetry.proto.metrics.v1.HistogramDataPoint\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {opentelemetry.proto.metrics.v1.HistogramDataPoint} HistogramDataPoint\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n HistogramDataPoint.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.opentelemetry.proto.metrics.v1.HistogramDataPoint();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 9: {\n if (!(message.attributes && message.attributes.length))\n message.attributes = [];\n message.attributes.push($root.opentelemetry.proto.common.v1.KeyValue.decode(reader, reader.uint32()));\n break;\n }\n case 2: {\n message.startTimeUnixNano = reader.fixed64();\n break;\n }\n case 3: {\n message.timeUnixNano = reader.fixed64();\n break;\n }\n case 4: {\n message.count = reader.fixed64();\n break;\n }\n case 5: {\n message.sum = reader.double();\n break;\n }\n case 6: {\n if (!(message.bucketCounts && message.bucketCounts.length))\n message.bucketCounts = [];\n if ((tag & 7) === 2) {\n var end2 = reader.uint32() + reader.pos;\n while (reader.pos < end2)\n message.bucketCounts.push(reader.fixed64());\n }\n else\n message.bucketCounts.push(reader.fixed64());\n break;\n }\n case 7: {\n if (!(message.explicitBounds && message.explicitBounds.length))\n message.explicitBounds = [];\n if ((tag & 7) === 2) {\n var end2 = reader.uint32() + reader.pos;\n while (reader.pos < end2)\n message.explicitBounds.push(reader.double());\n }\n else\n message.explicitBounds.push(reader.double());\n break;\n }\n case 8: {\n if (!(message.exemplars && message.exemplars.length))\n message.exemplars = [];\n message.exemplars.push($root.opentelemetry.proto.metrics.v1.Exemplar.decode(reader, reader.uint32()));\n break;\n }\n case 10: {\n message.flags = reader.uint32();\n break;\n }\n case 11: {\n message.min = reader.double();\n break;\n }\n case 12: {\n message.max = reader.double();\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n /**\n * Decodes a HistogramDataPoint message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof opentelemetry.proto.metrics.v1.HistogramDataPoint\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {opentelemetry.proto.metrics.v1.HistogramDataPoint} HistogramDataPoint\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n HistogramDataPoint.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n /**\n * Verifies a HistogramDataPoint message.\n * @function verify\n * @memberof opentelemetry.proto.metrics.v1.HistogramDataPoint\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n HistogramDataPoint.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n var properties = {};\n if (message.attributes != null && message.hasOwnProperty(\"attributes\")) {\n if (!Array.isArray(message.attributes))\n return \"attributes: array expected\";\n for (var i = 0; i < message.attributes.length; ++i) {\n var error = $root.opentelemetry.proto.common.v1.KeyValue.verify(message.attributes[i]);\n if (error)\n return \"attributes.\" + error;\n }\n }\n if (message.startTimeUnixNano != null && message.hasOwnProperty(\"startTimeUnixNano\"))\n if (!$util.isInteger(message.startTimeUnixNano) && !(message.startTimeUnixNano && $util.isInteger(message.startTimeUnixNano.low) && $util.isInteger(message.startTimeUnixNano.high)))\n return \"startTimeUnixNano: integer|Long expected\";\n if (message.timeUnixNano != null && message.hasOwnProperty(\"timeUnixNano\"))\n if (!$util.isInteger(message.timeUnixNano) && !(message.timeUnixNano && $util.isInteger(message.timeUnixNano.low) && $util.isInteger(message.timeUnixNano.high)))\n return \"timeUnixNano: integer|Long expected\";\n if (message.count != null && message.hasOwnProperty(\"count\"))\n if (!$util.isInteger(message.count) && !(message.count && $util.isInteger(message.count.low) && $util.isInteger(message.count.high)))\n return \"count: integer|Long expected\";\n if (message.sum != null && message.hasOwnProperty(\"sum\")) {\n properties._sum = 1;\n if (typeof message.sum !== \"number\")\n return \"sum: number expected\";\n }\n if (message.bucketCounts != null && message.hasOwnProperty(\"bucketCounts\")) {\n if (!Array.isArray(message.bucketCounts))\n return \"bucketCounts: array expected\";\n for (var i = 0; i < message.bucketCounts.length; ++i)\n if (!$util.isInteger(message.bucketCounts[i]) && !(message.bucketCounts[i] && $util.isInteger(message.bucketCounts[i].low) && $util.isInteger(message.bucketCounts[i].high)))\n return \"bucketCounts: integer|Long[] expected\";\n }\n if (message.explicitBounds != null && message.hasOwnProperty(\"explicitBounds\")) {\n if (!Array.isArray(message.explicitBounds))\n return \"explicitBounds: array expected\";\n for (var i = 0; i < message.explicitBounds.length; ++i)\n if (typeof message.explicitBounds[i] !== \"number\")\n return \"explicitBounds: number[] expected\";\n }\n if (message.exemplars != null && message.hasOwnProperty(\"exemplars\")) {\n if (!Array.isArray(message.exemplars))\n return \"exemplars: array expected\";\n for (var i = 0; i < message.exemplars.length; ++i) {\n var error = $root.opentelemetry.proto.metrics.v1.Exemplar.verify(message.exemplars[i]);\n if (error)\n return \"exemplars.\" + error;\n }\n }\n if (message.flags != null && message.hasOwnProperty(\"flags\"))\n if (!$util.isInteger(message.flags))\n return \"flags: integer expected\";\n if (message.min != null && message.hasOwnProperty(\"min\")) {\n properties._min = 1;\n if (typeof message.min !== \"number\")\n return \"min: number expected\";\n }\n if (message.max != null && message.hasOwnProperty(\"max\")) {\n properties._max = 1;\n if (typeof message.max !== \"number\")\n return \"max: number expected\";\n }\n return null;\n };\n /**\n * Creates a HistogramDataPoint message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof opentelemetry.proto.metrics.v1.HistogramDataPoint\n * @static\n * @param {Object.} object Plain object\n * @returns {opentelemetry.proto.metrics.v1.HistogramDataPoint} HistogramDataPoint\n */\n HistogramDataPoint.fromObject = function fromObject(object) {\n if (object instanceof $root.opentelemetry.proto.metrics.v1.HistogramDataPoint)\n return object;\n var message = new $root.opentelemetry.proto.metrics.v1.HistogramDataPoint();\n if (object.attributes) {\n if (!Array.isArray(object.attributes))\n throw TypeError(\".opentelemetry.proto.metrics.v1.HistogramDataPoint.attributes: array expected\");\n message.attributes = [];\n for (var i = 0; i < object.attributes.length; ++i) {\n if (typeof object.attributes[i] !== \"object\")\n throw TypeError(\".opentelemetry.proto.metrics.v1.HistogramDataPoint.attributes: object expected\");\n message.attributes[i] = $root.opentelemetry.proto.common.v1.KeyValue.fromObject(object.attributes[i]);\n }\n }\n if (object.startTimeUnixNano != null)\n if ($util.Long)\n (message.startTimeUnixNano = $util.Long.fromValue(object.startTimeUnixNano)).unsigned = false;\n else if (typeof object.startTimeUnixNano === \"string\")\n message.startTimeUnixNano = parseInt(object.startTimeUnixNano, 10);\n else if (typeof object.startTimeUnixNano === \"number\")\n message.startTimeUnixNano = object.startTimeUnixNano;\n else if (typeof object.startTimeUnixNano === \"object\")\n message.startTimeUnixNano = new $util.LongBits(object.startTimeUnixNano.low >>> 0, object.startTimeUnixNano.high >>> 0).toNumber();\n if (object.timeUnixNano != null)\n if ($util.Long)\n (message.timeUnixNano = $util.Long.fromValue(object.timeUnixNano)).unsigned = false;\n else if (typeof object.timeUnixNano === \"string\")\n message.timeUnixNano = parseInt(object.timeUnixNano, 10);\n else if (typeof object.timeUnixNano === \"number\")\n message.timeUnixNano = object.timeUnixNano;\n else if (typeof object.timeUnixNano === \"object\")\n message.timeUnixNano = new $util.LongBits(object.timeUnixNano.low >>> 0, object.timeUnixNano.high >>> 0).toNumber();\n if (object.count != null)\n if ($util.Long)\n (message.count = $util.Long.fromValue(object.count)).unsigned = false;\n else if (typeof object.count === \"string\")\n message.count = parseInt(object.count, 10);\n else if (typeof object.count === \"number\")\n message.count = object.count;\n else if (typeof object.count === \"object\")\n message.count = new $util.LongBits(object.count.low >>> 0, object.count.high >>> 0).toNumber();\n if (object.sum != null)\n message.sum = Number(object.sum);\n if (object.bucketCounts) {\n if (!Array.isArray(object.bucketCounts))\n throw TypeError(\".opentelemetry.proto.metrics.v1.HistogramDataPoint.bucketCounts: array expected\");\n message.bucketCounts = [];\n for (var i = 0; i < object.bucketCounts.length; ++i)\n if ($util.Long)\n (message.bucketCounts[i] = $util.Long.fromValue(object.bucketCounts[i])).unsigned = false;\n else if (typeof object.bucketCounts[i] === \"string\")\n message.bucketCounts[i] = parseInt(object.bucketCounts[i], 10);\n else if (typeof object.bucketCounts[i] === \"number\")\n message.bucketCounts[i] = object.bucketCounts[i];\n else if (typeof object.bucketCounts[i] === \"object\")\n message.bucketCounts[i] = new $util.LongBits(object.bucketCounts[i].low >>> 0, object.bucketCounts[i].high >>> 0).toNumber();\n }\n if (object.explicitBounds) {\n if (!Array.isArray(object.explicitBounds))\n throw TypeError(\".opentelemetry.proto.metrics.v1.HistogramDataPoint.explicitBounds: array expected\");\n message.explicitBounds = [];\n for (var i = 0; i < object.explicitBounds.length; ++i)\n message.explicitBounds[i] = Number(object.explicitBounds[i]);\n }\n if (object.exemplars) {\n if (!Array.isArray(object.exemplars))\n throw TypeError(\".opentelemetry.proto.metrics.v1.HistogramDataPoint.exemplars: array expected\");\n message.exemplars = [];\n for (var i = 0; i < object.exemplars.length; ++i) {\n if (typeof object.exemplars[i] !== \"object\")\n throw TypeError(\".opentelemetry.proto.metrics.v1.HistogramDataPoint.exemplars: object expected\");\n message.exemplars[i] = $root.opentelemetry.proto.metrics.v1.Exemplar.fromObject(object.exemplars[i]);\n }\n }\n if (object.flags != null)\n message.flags = object.flags >>> 0;\n if (object.min != null)\n message.min = Number(object.min);\n if (object.max != null)\n message.max = Number(object.max);\n return message;\n };\n /**\n * Creates a plain object from a HistogramDataPoint message. Also converts values to other types if specified.\n * @function toObject\n * @memberof opentelemetry.proto.metrics.v1.HistogramDataPoint\n * @static\n * @param {opentelemetry.proto.metrics.v1.HistogramDataPoint} message HistogramDataPoint\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n HistogramDataPoint.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n var object = {};\n if (options.arrays || options.defaults) {\n object.bucketCounts = [];\n object.explicitBounds = [];\n object.exemplars = [];\n object.attributes = [];\n }\n if (options.defaults) {\n if ($util.Long) {\n var long = new $util.Long(0, 0, false);\n object.startTimeUnixNano = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n }\n else\n object.startTimeUnixNano = options.longs === String ? \"0\" : 0;\n if ($util.Long) {\n var long = new $util.Long(0, 0, false);\n object.timeUnixNano = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n }\n else\n object.timeUnixNano = options.longs === String ? \"0\" : 0;\n if ($util.Long) {\n var long = new $util.Long(0, 0, false);\n object.count = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n }\n else\n object.count = options.longs === String ? \"0\" : 0;\n object.flags = 0;\n }\n if (message.startTimeUnixNano != null && message.hasOwnProperty(\"startTimeUnixNano\"))\n if (typeof message.startTimeUnixNano === \"number\")\n object.startTimeUnixNano = options.longs === String ? String(message.startTimeUnixNano) : message.startTimeUnixNano;\n else\n object.startTimeUnixNano = options.longs === String ? $util.Long.prototype.toString.call(message.startTimeUnixNano) : options.longs === Number ? new $util.LongBits(message.startTimeUnixNano.low >>> 0, message.startTimeUnixNano.high >>> 0).toNumber() : message.startTimeUnixNano;\n if (message.timeUnixNano != null && message.hasOwnProperty(\"timeUnixNano\"))\n if (typeof message.timeUnixNano === \"number\")\n object.timeUnixNano = options.longs === String ? String(message.timeUnixNano) : message.timeUnixNano;\n else\n object.timeUnixNano = options.longs === String ? $util.Long.prototype.toString.call(message.timeUnixNano) : options.longs === Number ? new $util.LongBits(message.timeUnixNano.low >>> 0, message.timeUnixNano.high >>> 0).toNumber() : message.timeUnixNano;\n if (message.count != null && message.hasOwnProperty(\"count\"))\n if (typeof message.count === \"number\")\n object.count = options.longs === String ? String(message.count) : message.count;\n else\n object.count = options.longs === String ? $util.Long.prototype.toString.call(message.count) : options.longs === Number ? new $util.LongBits(message.count.low >>> 0, message.count.high >>> 0).toNumber() : message.count;\n if (message.sum != null && message.hasOwnProperty(\"sum\")) {\n object.sum = options.json && !isFinite(message.sum) ? String(message.sum) : message.sum;\n if (options.oneofs)\n object._sum = \"sum\";\n }\n if (message.bucketCounts && message.bucketCounts.length) {\n object.bucketCounts = [];\n for (var j = 0; j < message.bucketCounts.length; ++j)\n if (typeof message.bucketCounts[j] === \"number\")\n object.bucketCounts[j] = options.longs === String ? String(message.bucketCounts[j]) : message.bucketCounts[j];\n else\n object.bucketCounts[j] = options.longs === String ? $util.Long.prototype.toString.call(message.bucketCounts[j]) : options.longs === Number ? new $util.LongBits(message.bucketCounts[j].low >>> 0, message.bucketCounts[j].high >>> 0).toNumber() : message.bucketCounts[j];\n }\n if (message.explicitBounds && message.explicitBounds.length) {\n object.explicitBounds = [];\n for (var j = 0; j < message.explicitBounds.length; ++j)\n object.explicitBounds[j] = options.json && !isFinite(message.explicitBounds[j]) ? String(message.explicitBounds[j]) : message.explicitBounds[j];\n }\n if (message.exemplars && message.exemplars.length) {\n object.exemplars = [];\n for (var j = 0; j < message.exemplars.length; ++j)\n object.exemplars[j] = $root.opentelemetry.proto.metrics.v1.Exemplar.toObject(message.exemplars[j], options);\n }\n if (message.attributes && message.attributes.length) {\n object.attributes = [];\n for (var j = 0; j < message.attributes.length; ++j)\n object.attributes[j] = $root.opentelemetry.proto.common.v1.KeyValue.toObject(message.attributes[j], options);\n }\n if (message.flags != null && message.hasOwnProperty(\"flags\"))\n object.flags = message.flags;\n if (message.min != null && message.hasOwnProperty(\"min\")) {\n object.min = options.json && !isFinite(message.min) ? String(message.min) : message.min;\n if (options.oneofs)\n object._min = \"min\";\n }\n if (message.max != null && message.hasOwnProperty(\"max\")) {\n object.max = options.json && !isFinite(message.max) ? String(message.max) : message.max;\n if (options.oneofs)\n object._max = \"max\";\n }\n return object;\n };\n /**\n * Converts this HistogramDataPoint to JSON.\n * @function toJSON\n * @memberof opentelemetry.proto.metrics.v1.HistogramDataPoint\n * @instance\n * @returns {Object.} JSON object\n */\n HistogramDataPoint.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n /**\n * Gets the default type url for HistogramDataPoint\n * @function getTypeUrl\n * @memberof opentelemetry.proto.metrics.v1.HistogramDataPoint\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n HistogramDataPoint.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = \"type.googleapis.com\";\n }\n return typeUrlPrefix + \"/opentelemetry.proto.metrics.v1.HistogramDataPoint\";\n };\n return HistogramDataPoint;\n })();\n v1.ExponentialHistogramDataPoint = (function () {\n /**\n * Properties of an ExponentialHistogramDataPoint.\n * @memberof opentelemetry.proto.metrics.v1\n * @interface IExponentialHistogramDataPoint\n * @property {Array.|null} [attributes] ExponentialHistogramDataPoint attributes\n * @property {number|Long|null} [startTimeUnixNano] ExponentialHistogramDataPoint startTimeUnixNano\n * @property {number|Long|null} [timeUnixNano] ExponentialHistogramDataPoint timeUnixNano\n * @property {number|Long|null} [count] ExponentialHistogramDataPoint count\n * @property {number|null} [sum] ExponentialHistogramDataPoint sum\n * @property {number|null} [scale] ExponentialHistogramDataPoint scale\n * @property {number|Long|null} [zeroCount] ExponentialHistogramDataPoint zeroCount\n * @property {opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint.IBuckets|null} [positive] ExponentialHistogramDataPoint positive\n * @property {opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint.IBuckets|null} [negative] ExponentialHistogramDataPoint negative\n * @property {number|null} [flags] ExponentialHistogramDataPoint flags\n * @property {Array.|null} [exemplars] ExponentialHistogramDataPoint exemplars\n * @property {number|null} [min] ExponentialHistogramDataPoint min\n * @property {number|null} [max] ExponentialHistogramDataPoint max\n * @property {number|null} [zeroThreshold] ExponentialHistogramDataPoint zeroThreshold\n */\n /**\n * Constructs a new ExponentialHistogramDataPoint.\n * @memberof opentelemetry.proto.metrics.v1\n * @classdesc Represents an ExponentialHistogramDataPoint.\n * @implements IExponentialHistogramDataPoint\n * @constructor\n * @param {opentelemetry.proto.metrics.v1.IExponentialHistogramDataPoint=} [properties] Properties to set\n */\n function ExponentialHistogramDataPoint(properties) {\n this.attributes = [];\n this.exemplars = [];\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n /**\n * ExponentialHistogramDataPoint attributes.\n * @member {Array.} attributes\n * @memberof opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint\n * @instance\n */\n ExponentialHistogramDataPoint.prototype.attributes = $util.emptyArray;\n /**\n * ExponentialHistogramDataPoint startTimeUnixNano.\n * @member {number|Long|null|undefined} startTimeUnixNano\n * @memberof opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint\n * @instance\n */\n ExponentialHistogramDataPoint.prototype.startTimeUnixNano = null;\n /**\n * ExponentialHistogramDataPoint timeUnixNano.\n * @member {number|Long|null|undefined} timeUnixNano\n * @memberof opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint\n * @instance\n */\n ExponentialHistogramDataPoint.prototype.timeUnixNano = null;\n /**\n * ExponentialHistogramDataPoint count.\n * @member {number|Long|null|undefined} count\n * @memberof opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint\n * @instance\n */\n ExponentialHistogramDataPoint.prototype.count = null;\n /**\n * ExponentialHistogramDataPoint sum.\n * @member {number|null|undefined} sum\n * @memberof opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint\n * @instance\n */\n ExponentialHistogramDataPoint.prototype.sum = null;\n /**\n * ExponentialHistogramDataPoint scale.\n * @member {number|null|undefined} scale\n * @memberof opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint\n * @instance\n */\n ExponentialHistogramDataPoint.prototype.scale = null;\n /**\n * ExponentialHistogramDataPoint zeroCount.\n * @member {number|Long|null|undefined} zeroCount\n * @memberof opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint\n * @instance\n */\n ExponentialHistogramDataPoint.prototype.zeroCount = null;\n /**\n * ExponentialHistogramDataPoint positive.\n * @member {opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint.IBuckets|null|undefined} positive\n * @memberof opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint\n * @instance\n */\n ExponentialHistogramDataPoint.prototype.positive = null;\n /**\n * ExponentialHistogramDataPoint negative.\n * @member {opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint.IBuckets|null|undefined} negative\n * @memberof opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint\n * @instance\n */\n ExponentialHistogramDataPoint.prototype.negative = null;\n /**\n * ExponentialHistogramDataPoint flags.\n * @member {number|null|undefined} flags\n * @memberof opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint\n * @instance\n */\n ExponentialHistogramDataPoint.prototype.flags = null;\n /**\n * ExponentialHistogramDataPoint exemplars.\n * @member {Array.} exemplars\n * @memberof opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint\n * @instance\n */\n ExponentialHistogramDataPoint.prototype.exemplars = $util.emptyArray;\n /**\n * ExponentialHistogramDataPoint min.\n * @member {number|null|undefined} min\n * @memberof opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint\n * @instance\n */\n ExponentialHistogramDataPoint.prototype.min = null;\n /**\n * ExponentialHistogramDataPoint max.\n * @member {number|null|undefined} max\n * @memberof opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint\n * @instance\n */\n ExponentialHistogramDataPoint.prototype.max = null;\n /**\n * ExponentialHistogramDataPoint zeroThreshold.\n * @member {number|null|undefined} zeroThreshold\n * @memberof opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint\n * @instance\n */\n ExponentialHistogramDataPoint.prototype.zeroThreshold = null;\n // OneOf field names bound to virtual getters and setters\n var $oneOfFields;\n /**\n * ExponentialHistogramDataPoint _sum.\n * @member {\"sum\"|undefined} _sum\n * @memberof opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint\n * @instance\n */\n Object.defineProperty(ExponentialHistogramDataPoint.prototype, \"_sum\", {\n get: $util.oneOfGetter($oneOfFields = [\"sum\"]),\n set: $util.oneOfSetter($oneOfFields)\n });\n /**\n * ExponentialHistogramDataPoint _min.\n * @member {\"min\"|undefined} _min\n * @memberof opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint\n * @instance\n */\n Object.defineProperty(ExponentialHistogramDataPoint.prototype, \"_min\", {\n get: $util.oneOfGetter($oneOfFields = [\"min\"]),\n set: $util.oneOfSetter($oneOfFields)\n });\n /**\n * ExponentialHistogramDataPoint _max.\n * @member {\"max\"|undefined} _max\n * @memberof opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint\n * @instance\n */\n Object.defineProperty(ExponentialHistogramDataPoint.prototype, \"_max\", {\n get: $util.oneOfGetter($oneOfFields = [\"max\"]),\n set: $util.oneOfSetter($oneOfFields)\n });\n /**\n * Creates a new ExponentialHistogramDataPoint instance using the specified properties.\n * @function create\n * @memberof opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint\n * @static\n * @param {opentelemetry.proto.metrics.v1.IExponentialHistogramDataPoint=} [properties] Properties to set\n * @returns {opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint} ExponentialHistogramDataPoint instance\n */\n ExponentialHistogramDataPoint.create = function create(properties) {\n return new ExponentialHistogramDataPoint(properties);\n };\n /**\n * Encodes the specified ExponentialHistogramDataPoint message. Does not implicitly {@link opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint.verify|verify} messages.\n * @function encode\n * @memberof opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint\n * @static\n * @param {opentelemetry.proto.metrics.v1.IExponentialHistogramDataPoint} message ExponentialHistogramDataPoint message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ExponentialHistogramDataPoint.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.attributes != null && message.attributes.length)\n for (var i = 0; i < message.attributes.length; ++i)\n $root.opentelemetry.proto.common.v1.KeyValue.encode(message.attributes[i], writer.uint32(/* id 1, wireType 2 =*/ 10).fork()).ldelim();\n if (message.startTimeUnixNano != null && Object.hasOwnProperty.call(message, \"startTimeUnixNano\"))\n writer.uint32(/* id 2, wireType 1 =*/ 17).fixed64(message.startTimeUnixNano);\n if (message.timeUnixNano != null && Object.hasOwnProperty.call(message, \"timeUnixNano\"))\n writer.uint32(/* id 3, wireType 1 =*/ 25).fixed64(message.timeUnixNano);\n if (message.count != null && Object.hasOwnProperty.call(message, \"count\"))\n writer.uint32(/* id 4, wireType 1 =*/ 33).fixed64(message.count);\n if (message.sum != null && Object.hasOwnProperty.call(message, \"sum\"))\n writer.uint32(/* id 5, wireType 1 =*/ 41).double(message.sum);\n if (message.scale != null && Object.hasOwnProperty.call(message, \"scale\"))\n writer.uint32(/* id 6, wireType 0 =*/ 48).sint32(message.scale);\n if (message.zeroCount != null && Object.hasOwnProperty.call(message, \"zeroCount\"))\n writer.uint32(/* id 7, wireType 1 =*/ 57).fixed64(message.zeroCount);\n if (message.positive != null && Object.hasOwnProperty.call(message, \"positive\"))\n $root.opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint.Buckets.encode(message.positive, writer.uint32(/* id 8, wireType 2 =*/ 66).fork()).ldelim();\n if (message.negative != null && Object.hasOwnProperty.call(message, \"negative\"))\n $root.opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint.Buckets.encode(message.negative, writer.uint32(/* id 9, wireType 2 =*/ 74).fork()).ldelim();\n if (message.flags != null && Object.hasOwnProperty.call(message, \"flags\"))\n writer.uint32(/* id 10, wireType 0 =*/ 80).uint32(message.flags);\n if (message.exemplars != null && message.exemplars.length)\n for (var i = 0; i < message.exemplars.length; ++i)\n $root.opentelemetry.proto.metrics.v1.Exemplar.encode(message.exemplars[i], writer.uint32(/* id 11, wireType 2 =*/ 90).fork()).ldelim();\n if (message.min != null && Object.hasOwnProperty.call(message, \"min\"))\n writer.uint32(/* id 12, wireType 1 =*/ 97).double(message.min);\n if (message.max != null && Object.hasOwnProperty.call(message, \"max\"))\n writer.uint32(/* id 13, wireType 1 =*/ 105).double(message.max);\n if (message.zeroThreshold != null && Object.hasOwnProperty.call(message, \"zeroThreshold\"))\n writer.uint32(/* id 14, wireType 1 =*/ 113).double(message.zeroThreshold);\n return writer;\n };\n /**\n * Encodes the specified ExponentialHistogramDataPoint message, length delimited. Does not implicitly {@link opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint.verify|verify} messages.\n * @function encodeDelimited\n * @memberof opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint\n * @static\n * @param {opentelemetry.proto.metrics.v1.IExponentialHistogramDataPoint} message ExponentialHistogramDataPoint message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ExponentialHistogramDataPoint.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n /**\n * Decodes an ExponentialHistogramDataPoint message from the specified reader or buffer.\n * @function decode\n * @memberof opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint} ExponentialHistogramDataPoint\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ExponentialHistogramDataPoint.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (!(message.attributes && message.attributes.length))\n message.attributes = [];\n message.attributes.push($root.opentelemetry.proto.common.v1.KeyValue.decode(reader, reader.uint32()));\n break;\n }\n case 2: {\n message.startTimeUnixNano = reader.fixed64();\n break;\n }\n case 3: {\n message.timeUnixNano = reader.fixed64();\n break;\n }\n case 4: {\n message.count = reader.fixed64();\n break;\n }\n case 5: {\n message.sum = reader.double();\n break;\n }\n case 6: {\n message.scale = reader.sint32();\n break;\n }\n case 7: {\n message.zeroCount = reader.fixed64();\n break;\n }\n case 8: {\n message.positive = $root.opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint.Buckets.decode(reader, reader.uint32());\n break;\n }\n case 9: {\n message.negative = $root.opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint.Buckets.decode(reader, reader.uint32());\n break;\n }\n case 10: {\n message.flags = reader.uint32();\n break;\n }\n case 11: {\n if (!(message.exemplars && message.exemplars.length))\n message.exemplars = [];\n message.exemplars.push($root.opentelemetry.proto.metrics.v1.Exemplar.decode(reader, reader.uint32()));\n break;\n }\n case 12: {\n message.min = reader.double();\n break;\n }\n case 13: {\n message.max = reader.double();\n break;\n }\n case 14: {\n message.zeroThreshold = reader.double();\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n /**\n * Decodes an ExponentialHistogramDataPoint message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint} ExponentialHistogramDataPoint\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ExponentialHistogramDataPoint.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n /**\n * Verifies an ExponentialHistogramDataPoint message.\n * @function verify\n * @memberof opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n ExponentialHistogramDataPoint.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n var properties = {};\n if (message.attributes != null && message.hasOwnProperty(\"attributes\")) {\n if (!Array.isArray(message.attributes))\n return \"attributes: array expected\";\n for (var i = 0; i < message.attributes.length; ++i) {\n var error = $root.opentelemetry.proto.common.v1.KeyValue.verify(message.attributes[i]);\n if (error)\n return \"attributes.\" + error;\n }\n }\n if (message.startTimeUnixNano != null && message.hasOwnProperty(\"startTimeUnixNano\"))\n if (!$util.isInteger(message.startTimeUnixNano) && !(message.startTimeUnixNano && $util.isInteger(message.startTimeUnixNano.low) && $util.isInteger(message.startTimeUnixNano.high)))\n return \"startTimeUnixNano: integer|Long expected\";\n if (message.timeUnixNano != null && message.hasOwnProperty(\"timeUnixNano\"))\n if (!$util.isInteger(message.timeUnixNano) && !(message.timeUnixNano && $util.isInteger(message.timeUnixNano.low) && $util.isInteger(message.timeUnixNano.high)))\n return \"timeUnixNano: integer|Long expected\";\n if (message.count != null && message.hasOwnProperty(\"count\"))\n if (!$util.isInteger(message.count) && !(message.count && $util.isInteger(message.count.low) && $util.isInteger(message.count.high)))\n return \"count: integer|Long expected\";\n if (message.sum != null && message.hasOwnProperty(\"sum\")) {\n properties._sum = 1;\n if (typeof message.sum !== \"number\")\n return \"sum: number expected\";\n }\n if (message.scale != null && message.hasOwnProperty(\"scale\"))\n if (!$util.isInteger(message.scale))\n return \"scale: integer expected\";\n if (message.zeroCount != null && message.hasOwnProperty(\"zeroCount\"))\n if (!$util.isInteger(message.zeroCount) && !(message.zeroCount && $util.isInteger(message.zeroCount.low) && $util.isInteger(message.zeroCount.high)))\n return \"zeroCount: integer|Long expected\";\n if (message.positive != null && message.hasOwnProperty(\"positive\")) {\n var error = $root.opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint.Buckets.verify(message.positive);\n if (error)\n return \"positive.\" + error;\n }\n if (message.negative != null && message.hasOwnProperty(\"negative\")) {\n var error = $root.opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint.Buckets.verify(message.negative);\n if (error)\n return \"negative.\" + error;\n }\n if (message.flags != null && message.hasOwnProperty(\"flags\"))\n if (!$util.isInteger(message.flags))\n return \"flags: integer expected\";\n if (message.exemplars != null && message.hasOwnProperty(\"exemplars\")) {\n if (!Array.isArray(message.exemplars))\n return \"exemplars: array expected\";\n for (var i = 0; i < message.exemplars.length; ++i) {\n var error = $root.opentelemetry.proto.metrics.v1.Exemplar.verify(message.exemplars[i]);\n if (error)\n return \"exemplars.\" + error;\n }\n }\n if (message.min != null && message.hasOwnProperty(\"min\")) {\n properties._min = 1;\n if (typeof message.min !== \"number\")\n return \"min: number expected\";\n }\n if (message.max != null && message.hasOwnProperty(\"max\")) {\n properties._max = 1;\n if (typeof message.max !== \"number\")\n return \"max: number expected\";\n }\n if (message.zeroThreshold != null && message.hasOwnProperty(\"zeroThreshold\"))\n if (typeof message.zeroThreshold !== \"number\")\n return \"zeroThreshold: number expected\";\n return null;\n };\n /**\n * Creates an ExponentialHistogramDataPoint message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint\n * @static\n * @param {Object.} object Plain object\n * @returns {opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint} ExponentialHistogramDataPoint\n */\n ExponentialHistogramDataPoint.fromObject = function fromObject(object) {\n if (object instanceof $root.opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint)\n return object;\n var message = new $root.opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint();\n if (object.attributes) {\n if (!Array.isArray(object.attributes))\n throw TypeError(\".opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint.attributes: array expected\");\n message.attributes = [];\n for (var i = 0; i < object.attributes.length; ++i) {\n if (typeof object.attributes[i] !== \"object\")\n throw TypeError(\".opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint.attributes: object expected\");\n message.attributes[i] = $root.opentelemetry.proto.common.v1.KeyValue.fromObject(object.attributes[i]);\n }\n }\n if (object.startTimeUnixNano != null)\n if ($util.Long)\n (message.startTimeUnixNano = $util.Long.fromValue(object.startTimeUnixNano)).unsigned = false;\n else if (typeof object.startTimeUnixNano === \"string\")\n message.startTimeUnixNano = parseInt(object.startTimeUnixNano, 10);\n else if (typeof object.startTimeUnixNano === \"number\")\n message.startTimeUnixNano = object.startTimeUnixNano;\n else if (typeof object.startTimeUnixNano === \"object\")\n message.startTimeUnixNano = new $util.LongBits(object.startTimeUnixNano.low >>> 0, object.startTimeUnixNano.high >>> 0).toNumber();\n if (object.timeUnixNano != null)\n if ($util.Long)\n (message.timeUnixNano = $util.Long.fromValue(object.timeUnixNano)).unsigned = false;\n else if (typeof object.timeUnixNano === \"string\")\n message.timeUnixNano = parseInt(object.timeUnixNano, 10);\n else if (typeof object.timeUnixNano === \"number\")\n message.timeUnixNano = object.timeUnixNano;\n else if (typeof object.timeUnixNano === \"object\")\n message.timeUnixNano = new $util.LongBits(object.timeUnixNano.low >>> 0, object.timeUnixNano.high >>> 0).toNumber();\n if (object.count != null)\n if ($util.Long)\n (message.count = $util.Long.fromValue(object.count)).unsigned = false;\n else if (typeof object.count === \"string\")\n message.count = parseInt(object.count, 10);\n else if (typeof object.count === \"number\")\n message.count = object.count;\n else if (typeof object.count === \"object\")\n message.count = new $util.LongBits(object.count.low >>> 0, object.count.high >>> 0).toNumber();\n if (object.sum != null)\n message.sum = Number(object.sum);\n if (object.scale != null)\n message.scale = object.scale | 0;\n if (object.zeroCount != null)\n if ($util.Long)\n (message.zeroCount = $util.Long.fromValue(object.zeroCount)).unsigned = false;\n else if (typeof object.zeroCount === \"string\")\n message.zeroCount = parseInt(object.zeroCount, 10);\n else if (typeof object.zeroCount === \"number\")\n message.zeroCount = object.zeroCount;\n else if (typeof object.zeroCount === \"object\")\n message.zeroCount = new $util.LongBits(object.zeroCount.low >>> 0, object.zeroCount.high >>> 0).toNumber();\n if (object.positive != null) {\n if (typeof object.positive !== \"object\")\n throw TypeError(\".opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint.positive: object expected\");\n message.positive = $root.opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint.Buckets.fromObject(object.positive);\n }\n if (object.negative != null) {\n if (typeof object.negative !== \"object\")\n throw TypeError(\".opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint.negative: object expected\");\n message.negative = $root.opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint.Buckets.fromObject(object.negative);\n }\n if (object.flags != null)\n message.flags = object.flags >>> 0;\n if (object.exemplars) {\n if (!Array.isArray(object.exemplars))\n throw TypeError(\".opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint.exemplars: array expected\");\n message.exemplars = [];\n for (var i = 0; i < object.exemplars.length; ++i) {\n if (typeof object.exemplars[i] !== \"object\")\n throw TypeError(\".opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint.exemplars: object expected\");\n message.exemplars[i] = $root.opentelemetry.proto.metrics.v1.Exemplar.fromObject(object.exemplars[i]);\n }\n }\n if (object.min != null)\n message.min = Number(object.min);\n if (object.max != null)\n message.max = Number(object.max);\n if (object.zeroThreshold != null)\n message.zeroThreshold = Number(object.zeroThreshold);\n return message;\n };\n /**\n * Creates a plain object from an ExponentialHistogramDataPoint message. Also converts values to other types if specified.\n * @function toObject\n * @memberof opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint\n * @static\n * @param {opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint} message ExponentialHistogramDataPoint\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n ExponentialHistogramDataPoint.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n var object = {};\n if (options.arrays || options.defaults) {\n object.attributes = [];\n object.exemplars = [];\n }\n if (options.defaults) {\n if ($util.Long) {\n var long = new $util.Long(0, 0, false);\n object.startTimeUnixNano = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n }\n else\n object.startTimeUnixNano = options.longs === String ? \"0\" : 0;\n if ($util.Long) {\n var long = new $util.Long(0, 0, false);\n object.timeUnixNano = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n }\n else\n object.timeUnixNano = options.longs === String ? \"0\" : 0;\n if ($util.Long) {\n var long = new $util.Long(0, 0, false);\n object.count = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n }\n else\n object.count = options.longs === String ? \"0\" : 0;\n object.scale = 0;\n if ($util.Long) {\n var long = new $util.Long(0, 0, false);\n object.zeroCount = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n }\n else\n object.zeroCount = options.longs === String ? \"0\" : 0;\n object.positive = null;\n object.negative = null;\n object.flags = 0;\n object.zeroThreshold = 0;\n }\n if (message.attributes && message.attributes.length) {\n object.attributes = [];\n for (var j = 0; j < message.attributes.length; ++j)\n object.attributes[j] = $root.opentelemetry.proto.common.v1.KeyValue.toObject(message.attributes[j], options);\n }\n if (message.startTimeUnixNano != null && message.hasOwnProperty(\"startTimeUnixNano\"))\n if (typeof message.startTimeUnixNano === \"number\")\n object.startTimeUnixNano = options.longs === String ? String(message.startTimeUnixNano) : message.startTimeUnixNano;\n else\n object.startTimeUnixNano = options.longs === String ? $util.Long.prototype.toString.call(message.startTimeUnixNano) : options.longs === Number ? new $util.LongBits(message.startTimeUnixNano.low >>> 0, message.startTimeUnixNano.high >>> 0).toNumber() : message.startTimeUnixNano;\n if (message.timeUnixNano != null && message.hasOwnProperty(\"timeUnixNano\"))\n if (typeof message.timeUnixNano === \"number\")\n object.timeUnixNano = options.longs === String ? String(message.timeUnixNano) : message.timeUnixNano;\n else\n object.timeUnixNano = options.longs === String ? $util.Long.prototype.toString.call(message.timeUnixNano) : options.longs === Number ? new $util.LongBits(message.timeUnixNano.low >>> 0, message.timeUnixNano.high >>> 0).toNumber() : message.timeUnixNano;\n if (message.count != null && message.hasOwnProperty(\"count\"))\n if (typeof message.count === \"number\")\n object.count = options.longs === String ? String(message.count) : message.count;\n else\n object.count = options.longs === String ? $util.Long.prototype.toString.call(message.count) : options.longs === Number ? new $util.LongBits(message.count.low >>> 0, message.count.high >>> 0).toNumber() : message.count;\n if (message.sum != null && message.hasOwnProperty(\"sum\")) {\n object.sum = options.json && !isFinite(message.sum) ? String(message.sum) : message.sum;\n if (options.oneofs)\n object._sum = \"sum\";\n }\n if (message.scale != null && message.hasOwnProperty(\"scale\"))\n object.scale = message.scale;\n if (message.zeroCount != null && message.hasOwnProperty(\"zeroCount\"))\n if (typeof message.zeroCount === \"number\")\n object.zeroCount = options.longs === String ? String(message.zeroCount) : message.zeroCount;\n else\n object.zeroCount = options.longs === String ? $util.Long.prototype.toString.call(message.zeroCount) : options.longs === Number ? new $util.LongBits(message.zeroCount.low >>> 0, message.zeroCount.high >>> 0).toNumber() : message.zeroCount;\n if (message.positive != null && message.hasOwnProperty(\"positive\"))\n object.positive = $root.opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint.Buckets.toObject(message.positive, options);\n if (message.negative != null && message.hasOwnProperty(\"negative\"))\n object.negative = $root.opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint.Buckets.toObject(message.negative, options);\n if (message.flags != null && message.hasOwnProperty(\"flags\"))\n object.flags = message.flags;\n if (message.exemplars && message.exemplars.length) {\n object.exemplars = [];\n for (var j = 0; j < message.exemplars.length; ++j)\n object.exemplars[j] = $root.opentelemetry.proto.metrics.v1.Exemplar.toObject(message.exemplars[j], options);\n }\n if (message.min != null && message.hasOwnProperty(\"min\")) {\n object.min = options.json && !isFinite(message.min) ? String(message.min) : message.min;\n if (options.oneofs)\n object._min = \"min\";\n }\n if (message.max != null && message.hasOwnProperty(\"max\")) {\n object.max = options.json && !isFinite(message.max) ? String(message.max) : message.max;\n if (options.oneofs)\n object._max = \"max\";\n }\n if (message.zeroThreshold != null && message.hasOwnProperty(\"zeroThreshold\"))\n object.zeroThreshold = options.json && !isFinite(message.zeroThreshold) ? String(message.zeroThreshold) : message.zeroThreshold;\n return object;\n };\n /**\n * Converts this ExponentialHistogramDataPoint to JSON.\n * @function toJSON\n * @memberof opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint\n * @instance\n * @returns {Object.} JSON object\n */\n ExponentialHistogramDataPoint.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n /**\n * Gets the default type url for ExponentialHistogramDataPoint\n * @function getTypeUrl\n * @memberof opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n ExponentialHistogramDataPoint.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = \"type.googleapis.com\";\n }\n return typeUrlPrefix + \"/opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint\";\n };\n ExponentialHistogramDataPoint.Buckets = (function () {\n /**\n * Properties of a Buckets.\n * @memberof opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint\n * @interface IBuckets\n * @property {number|null} [offset] Buckets offset\n * @property {Array.|null} [bucketCounts] Buckets bucketCounts\n */\n /**\n * Constructs a new Buckets.\n * @memberof opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint\n * @classdesc Represents a Buckets.\n * @implements IBuckets\n * @constructor\n * @param {opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint.IBuckets=} [properties] Properties to set\n */\n function Buckets(properties) {\n this.bucketCounts = [];\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n /**\n * Buckets offset.\n * @member {number|null|undefined} offset\n * @memberof opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint.Buckets\n * @instance\n */\n Buckets.prototype.offset = null;\n /**\n * Buckets bucketCounts.\n * @member {Array.} bucketCounts\n * @memberof opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint.Buckets\n * @instance\n */\n Buckets.prototype.bucketCounts = $util.emptyArray;\n /**\n * Creates a new Buckets instance using the specified properties.\n * @function create\n * @memberof opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint.Buckets\n * @static\n * @param {opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint.IBuckets=} [properties] Properties to set\n * @returns {opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint.Buckets} Buckets instance\n */\n Buckets.create = function create(properties) {\n return new Buckets(properties);\n };\n /**\n * Encodes the specified Buckets message. Does not implicitly {@link opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint.Buckets.verify|verify} messages.\n * @function encode\n * @memberof opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint.Buckets\n * @static\n * @param {opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint.IBuckets} message Buckets message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Buckets.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.offset != null && Object.hasOwnProperty.call(message, \"offset\"))\n writer.uint32(/* id 1, wireType 0 =*/ 8).sint32(message.offset);\n if (message.bucketCounts != null && message.bucketCounts.length) {\n writer.uint32(/* id 2, wireType 2 =*/ 18).fork();\n for (var i = 0; i < message.bucketCounts.length; ++i)\n writer.uint64(message.bucketCounts[i]);\n writer.ldelim();\n }\n return writer;\n };\n /**\n * Encodes the specified Buckets message, length delimited. Does not implicitly {@link opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint.Buckets.verify|verify} messages.\n * @function encodeDelimited\n * @memberof opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint.Buckets\n * @static\n * @param {opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint.IBuckets} message Buckets message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Buckets.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n /**\n * Decodes a Buckets message from the specified reader or buffer.\n * @function decode\n * @memberof opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint.Buckets\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint.Buckets} Buckets\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Buckets.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint.Buckets();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n message.offset = reader.sint32();\n break;\n }\n case 2: {\n if (!(message.bucketCounts && message.bucketCounts.length))\n message.bucketCounts = [];\n if ((tag & 7) === 2) {\n var end2 = reader.uint32() + reader.pos;\n while (reader.pos < end2)\n message.bucketCounts.push(reader.uint64());\n }\n else\n message.bucketCounts.push(reader.uint64());\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n /**\n * Decodes a Buckets message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint.Buckets\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint.Buckets} Buckets\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Buckets.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n /**\n * Verifies a Buckets message.\n * @function verify\n * @memberof opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint.Buckets\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n Buckets.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.offset != null && message.hasOwnProperty(\"offset\"))\n if (!$util.isInteger(message.offset))\n return \"offset: integer expected\";\n if (message.bucketCounts != null && message.hasOwnProperty(\"bucketCounts\")) {\n if (!Array.isArray(message.bucketCounts))\n return \"bucketCounts: array expected\";\n for (var i = 0; i < message.bucketCounts.length; ++i)\n if (!$util.isInteger(message.bucketCounts[i]) && !(message.bucketCounts[i] && $util.isInteger(message.bucketCounts[i].low) && $util.isInteger(message.bucketCounts[i].high)))\n return \"bucketCounts: integer|Long[] expected\";\n }\n return null;\n };\n /**\n * Creates a Buckets message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint.Buckets\n * @static\n * @param {Object.} object Plain object\n * @returns {opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint.Buckets} Buckets\n */\n Buckets.fromObject = function fromObject(object) {\n if (object instanceof $root.opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint.Buckets)\n return object;\n var message = new $root.opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint.Buckets();\n if (object.offset != null)\n message.offset = object.offset | 0;\n if (object.bucketCounts) {\n if (!Array.isArray(object.bucketCounts))\n throw TypeError(\".opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint.Buckets.bucketCounts: array expected\");\n message.bucketCounts = [];\n for (var i = 0; i < object.bucketCounts.length; ++i)\n if ($util.Long)\n (message.bucketCounts[i] = $util.Long.fromValue(object.bucketCounts[i])).unsigned = true;\n else if (typeof object.bucketCounts[i] === \"string\")\n message.bucketCounts[i] = parseInt(object.bucketCounts[i], 10);\n else if (typeof object.bucketCounts[i] === \"number\")\n message.bucketCounts[i] = object.bucketCounts[i];\n else if (typeof object.bucketCounts[i] === \"object\")\n message.bucketCounts[i] = new $util.LongBits(object.bucketCounts[i].low >>> 0, object.bucketCounts[i].high >>> 0).toNumber(true);\n }\n return message;\n };\n /**\n * Creates a plain object from a Buckets message. Also converts values to other types if specified.\n * @function toObject\n * @memberof opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint.Buckets\n * @static\n * @param {opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint.Buckets} message Buckets\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n Buckets.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n var object = {};\n if (options.arrays || options.defaults)\n object.bucketCounts = [];\n if (options.defaults)\n object.offset = 0;\n if (message.offset != null && message.hasOwnProperty(\"offset\"))\n object.offset = message.offset;\n if (message.bucketCounts && message.bucketCounts.length) {\n object.bucketCounts = [];\n for (var j = 0; j < message.bucketCounts.length; ++j)\n if (typeof message.bucketCounts[j] === \"number\")\n object.bucketCounts[j] = options.longs === String ? String(message.bucketCounts[j]) : message.bucketCounts[j];\n else\n object.bucketCounts[j] = options.longs === String ? $util.Long.prototype.toString.call(message.bucketCounts[j]) : options.longs === Number ? new $util.LongBits(message.bucketCounts[j].low >>> 0, message.bucketCounts[j].high >>> 0).toNumber(true) : message.bucketCounts[j];\n }\n return object;\n };\n /**\n * Converts this Buckets to JSON.\n * @function toJSON\n * @memberof opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint.Buckets\n * @instance\n * @returns {Object.} JSON object\n */\n Buckets.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n /**\n * Gets the default type url for Buckets\n * @function getTypeUrl\n * @memberof opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint.Buckets\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n Buckets.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = \"type.googleapis.com\";\n }\n return typeUrlPrefix + \"/opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint.Buckets\";\n };\n return Buckets;\n })();\n return ExponentialHistogramDataPoint;\n })();\n v1.SummaryDataPoint = (function () {\n /**\n * Properties of a SummaryDataPoint.\n * @memberof opentelemetry.proto.metrics.v1\n * @interface ISummaryDataPoint\n * @property {Array.|null} [attributes] SummaryDataPoint attributes\n * @property {number|Long|null} [startTimeUnixNano] SummaryDataPoint startTimeUnixNano\n * @property {number|Long|null} [timeUnixNano] SummaryDataPoint timeUnixNano\n * @property {number|Long|null} [count] SummaryDataPoint count\n * @property {number|null} [sum] SummaryDataPoint sum\n * @property {Array.|null} [quantileValues] SummaryDataPoint quantileValues\n * @property {number|null} [flags] SummaryDataPoint flags\n */\n /**\n * Constructs a new SummaryDataPoint.\n * @memberof opentelemetry.proto.metrics.v1\n * @classdesc Represents a SummaryDataPoint.\n * @implements ISummaryDataPoint\n * @constructor\n * @param {opentelemetry.proto.metrics.v1.ISummaryDataPoint=} [properties] Properties to set\n */\n function SummaryDataPoint(properties) {\n this.attributes = [];\n this.quantileValues = [];\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n /**\n * SummaryDataPoint attributes.\n * @member {Array.} attributes\n * @memberof opentelemetry.proto.metrics.v1.SummaryDataPoint\n * @instance\n */\n SummaryDataPoint.prototype.attributes = $util.emptyArray;\n /**\n * SummaryDataPoint startTimeUnixNano.\n * @member {number|Long|null|undefined} startTimeUnixNano\n * @memberof opentelemetry.proto.metrics.v1.SummaryDataPoint\n * @instance\n */\n SummaryDataPoint.prototype.startTimeUnixNano = null;\n /**\n * SummaryDataPoint timeUnixNano.\n * @member {number|Long|null|undefined} timeUnixNano\n * @memberof opentelemetry.proto.metrics.v1.SummaryDataPoint\n * @instance\n */\n SummaryDataPoint.prototype.timeUnixNano = null;\n /**\n * SummaryDataPoint count.\n * @member {number|Long|null|undefined} count\n * @memberof opentelemetry.proto.metrics.v1.SummaryDataPoint\n * @instance\n */\n SummaryDataPoint.prototype.count = null;\n /**\n * SummaryDataPoint sum.\n * @member {number|null|undefined} sum\n * @memberof opentelemetry.proto.metrics.v1.SummaryDataPoint\n * @instance\n */\n SummaryDataPoint.prototype.sum = null;\n /**\n * SummaryDataPoint quantileValues.\n * @member {Array.} quantileValues\n * @memberof opentelemetry.proto.metrics.v1.SummaryDataPoint\n * @instance\n */\n SummaryDataPoint.prototype.quantileValues = $util.emptyArray;\n /**\n * SummaryDataPoint flags.\n * @member {number|null|undefined} flags\n * @memberof opentelemetry.proto.metrics.v1.SummaryDataPoint\n * @instance\n */\n SummaryDataPoint.prototype.flags = null;\n /**\n * Creates a new SummaryDataPoint instance using the specified properties.\n * @function create\n * @memberof opentelemetry.proto.metrics.v1.SummaryDataPoint\n * @static\n * @param {opentelemetry.proto.metrics.v1.ISummaryDataPoint=} [properties] Properties to set\n * @returns {opentelemetry.proto.metrics.v1.SummaryDataPoint} SummaryDataPoint instance\n */\n SummaryDataPoint.create = function create(properties) {\n return new SummaryDataPoint(properties);\n };\n /**\n * Encodes the specified SummaryDataPoint message. Does not implicitly {@link opentelemetry.proto.metrics.v1.SummaryDataPoint.verify|verify} messages.\n * @function encode\n * @memberof opentelemetry.proto.metrics.v1.SummaryDataPoint\n * @static\n * @param {opentelemetry.proto.metrics.v1.ISummaryDataPoint} message SummaryDataPoint message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n SummaryDataPoint.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.startTimeUnixNano != null && Object.hasOwnProperty.call(message, \"startTimeUnixNano\"))\n writer.uint32(/* id 2, wireType 1 =*/ 17).fixed64(message.startTimeUnixNano);\n if (message.timeUnixNano != null && Object.hasOwnProperty.call(message, \"timeUnixNano\"))\n writer.uint32(/* id 3, wireType 1 =*/ 25).fixed64(message.timeUnixNano);\n if (message.count != null && Object.hasOwnProperty.call(message, \"count\"))\n writer.uint32(/* id 4, wireType 1 =*/ 33).fixed64(message.count);\n if (message.sum != null && Object.hasOwnProperty.call(message, \"sum\"))\n writer.uint32(/* id 5, wireType 1 =*/ 41).double(message.sum);\n if (message.quantileValues != null && message.quantileValues.length)\n for (var i = 0; i < message.quantileValues.length; ++i)\n $root.opentelemetry.proto.metrics.v1.SummaryDataPoint.ValueAtQuantile.encode(message.quantileValues[i], writer.uint32(/* id 6, wireType 2 =*/ 50).fork()).ldelim();\n if (message.attributes != null && message.attributes.length)\n for (var i = 0; i < message.attributes.length; ++i)\n $root.opentelemetry.proto.common.v1.KeyValue.encode(message.attributes[i], writer.uint32(/* id 7, wireType 2 =*/ 58).fork()).ldelim();\n if (message.flags != null && Object.hasOwnProperty.call(message, \"flags\"))\n writer.uint32(/* id 8, wireType 0 =*/ 64).uint32(message.flags);\n return writer;\n };\n /**\n * Encodes the specified SummaryDataPoint message, length delimited. Does not implicitly {@link opentelemetry.proto.metrics.v1.SummaryDataPoint.verify|verify} messages.\n * @function encodeDelimited\n * @memberof opentelemetry.proto.metrics.v1.SummaryDataPoint\n * @static\n * @param {opentelemetry.proto.metrics.v1.ISummaryDataPoint} message SummaryDataPoint message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n SummaryDataPoint.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n /**\n * Decodes a SummaryDataPoint message from the specified reader or buffer.\n * @function decode\n * @memberof opentelemetry.proto.metrics.v1.SummaryDataPoint\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {opentelemetry.proto.metrics.v1.SummaryDataPoint} SummaryDataPoint\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n SummaryDataPoint.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.opentelemetry.proto.metrics.v1.SummaryDataPoint();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 7: {\n if (!(message.attributes && message.attributes.length))\n message.attributes = [];\n message.attributes.push($root.opentelemetry.proto.common.v1.KeyValue.decode(reader, reader.uint32()));\n break;\n }\n case 2: {\n message.startTimeUnixNano = reader.fixed64();\n break;\n }\n case 3: {\n message.timeUnixNano = reader.fixed64();\n break;\n }\n case 4: {\n message.count = reader.fixed64();\n break;\n }\n case 5: {\n message.sum = reader.double();\n break;\n }\n case 6: {\n if (!(message.quantileValues && message.quantileValues.length))\n message.quantileValues = [];\n message.quantileValues.push($root.opentelemetry.proto.metrics.v1.SummaryDataPoint.ValueAtQuantile.decode(reader, reader.uint32()));\n break;\n }\n case 8: {\n message.flags = reader.uint32();\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n /**\n * Decodes a SummaryDataPoint message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof opentelemetry.proto.metrics.v1.SummaryDataPoint\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {opentelemetry.proto.metrics.v1.SummaryDataPoint} SummaryDataPoint\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n SummaryDataPoint.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n /**\n * Verifies a SummaryDataPoint message.\n * @function verify\n * @memberof opentelemetry.proto.metrics.v1.SummaryDataPoint\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n SummaryDataPoint.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.attributes != null && message.hasOwnProperty(\"attributes\")) {\n if (!Array.isArray(message.attributes))\n return \"attributes: array expected\";\n for (var i = 0; i < message.attributes.length; ++i) {\n var error = $root.opentelemetry.proto.common.v1.KeyValue.verify(message.attributes[i]);\n if (error)\n return \"attributes.\" + error;\n }\n }\n if (message.startTimeUnixNano != null && message.hasOwnProperty(\"startTimeUnixNano\"))\n if (!$util.isInteger(message.startTimeUnixNano) && !(message.startTimeUnixNano && $util.isInteger(message.startTimeUnixNano.low) && $util.isInteger(message.startTimeUnixNano.high)))\n return \"startTimeUnixNano: integer|Long expected\";\n if (message.timeUnixNano != null && message.hasOwnProperty(\"timeUnixNano\"))\n if (!$util.isInteger(message.timeUnixNano) && !(message.timeUnixNano && $util.isInteger(message.timeUnixNano.low) && $util.isInteger(message.timeUnixNano.high)))\n return \"timeUnixNano: integer|Long expected\";\n if (message.count != null && message.hasOwnProperty(\"count\"))\n if (!$util.isInteger(message.count) && !(message.count && $util.isInteger(message.count.low) && $util.isInteger(message.count.high)))\n return \"count: integer|Long expected\";\n if (message.sum != null && message.hasOwnProperty(\"sum\"))\n if (typeof message.sum !== \"number\")\n return \"sum: number expected\";\n if (message.quantileValues != null && message.hasOwnProperty(\"quantileValues\")) {\n if (!Array.isArray(message.quantileValues))\n return \"quantileValues: array expected\";\n for (var i = 0; i < message.quantileValues.length; ++i) {\n var error = $root.opentelemetry.proto.metrics.v1.SummaryDataPoint.ValueAtQuantile.verify(message.quantileValues[i]);\n if (error)\n return \"quantileValues.\" + error;\n }\n }\n if (message.flags != null && message.hasOwnProperty(\"flags\"))\n if (!$util.isInteger(message.flags))\n return \"flags: integer expected\";\n return null;\n };\n /**\n * Creates a SummaryDataPoint message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof opentelemetry.proto.metrics.v1.SummaryDataPoint\n * @static\n * @param {Object.} object Plain object\n * @returns {opentelemetry.proto.metrics.v1.SummaryDataPoint} SummaryDataPoint\n */\n SummaryDataPoint.fromObject = function fromObject(object) {\n if (object instanceof $root.opentelemetry.proto.metrics.v1.SummaryDataPoint)\n return object;\n var message = new $root.opentelemetry.proto.metrics.v1.SummaryDataPoint();\n if (object.attributes) {\n if (!Array.isArray(object.attributes))\n throw TypeError(\".opentelemetry.proto.metrics.v1.SummaryDataPoint.attributes: array expected\");\n message.attributes = [];\n for (var i = 0; i < object.attributes.length; ++i) {\n if (typeof object.attributes[i] !== \"object\")\n throw TypeError(\".opentelemetry.proto.metrics.v1.SummaryDataPoint.attributes: object expected\");\n message.attributes[i] = $root.opentelemetry.proto.common.v1.KeyValue.fromObject(object.attributes[i]);\n }\n }\n if (object.startTimeUnixNano != null)\n if ($util.Long)\n (message.startTimeUnixNano = $util.Long.fromValue(object.startTimeUnixNano)).unsigned = false;\n else if (typeof object.startTimeUnixNano === \"string\")\n message.startTimeUnixNano = parseInt(object.startTimeUnixNano, 10);\n else if (typeof object.startTimeUnixNano === \"number\")\n message.startTimeUnixNano = object.startTimeUnixNano;\n else if (typeof object.startTimeUnixNano === \"object\")\n message.startTimeUnixNano = new $util.LongBits(object.startTimeUnixNano.low >>> 0, object.startTimeUnixNano.high >>> 0).toNumber();\n if (object.timeUnixNano != null)\n if ($util.Long)\n (message.timeUnixNano = $util.Long.fromValue(object.timeUnixNano)).unsigned = false;\n else if (typeof object.timeUnixNano === \"string\")\n message.timeUnixNano = parseInt(object.timeUnixNano, 10);\n else if (typeof object.timeUnixNano === \"number\")\n message.timeUnixNano = object.timeUnixNano;\n else if (typeof object.timeUnixNano === \"object\")\n message.timeUnixNano = new $util.LongBits(object.timeUnixNano.low >>> 0, object.timeUnixNano.high >>> 0).toNumber();\n if (object.count != null)\n if ($util.Long)\n (message.count = $util.Long.fromValue(object.count)).unsigned = false;\n else if (typeof object.count === \"string\")\n message.count = parseInt(object.count, 10);\n else if (typeof object.count === \"number\")\n message.count = object.count;\n else if (typeof object.count === \"object\")\n message.count = new $util.LongBits(object.count.low >>> 0, object.count.high >>> 0).toNumber();\n if (object.sum != null)\n message.sum = Number(object.sum);\n if (object.quantileValues) {\n if (!Array.isArray(object.quantileValues))\n throw TypeError(\".opentelemetry.proto.metrics.v1.SummaryDataPoint.quantileValues: array expected\");\n message.quantileValues = [];\n for (var i = 0; i < object.quantileValues.length; ++i) {\n if (typeof object.quantileValues[i] !== \"object\")\n throw TypeError(\".opentelemetry.proto.metrics.v1.SummaryDataPoint.quantileValues: object expected\");\n message.quantileValues[i] = $root.opentelemetry.proto.metrics.v1.SummaryDataPoint.ValueAtQuantile.fromObject(object.quantileValues[i]);\n }\n }\n if (object.flags != null)\n message.flags = object.flags >>> 0;\n return message;\n };\n /**\n * Creates a plain object from a SummaryDataPoint message. Also converts values to other types if specified.\n * @function toObject\n * @memberof opentelemetry.proto.metrics.v1.SummaryDataPoint\n * @static\n * @param {opentelemetry.proto.metrics.v1.SummaryDataPoint} message SummaryDataPoint\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n SummaryDataPoint.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n var object = {};\n if (options.arrays || options.defaults) {\n object.quantileValues = [];\n object.attributes = [];\n }\n if (options.defaults) {\n if ($util.Long) {\n var long = new $util.Long(0, 0, false);\n object.startTimeUnixNano = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n }\n else\n object.startTimeUnixNano = options.longs === String ? \"0\" : 0;\n if ($util.Long) {\n var long = new $util.Long(0, 0, false);\n object.timeUnixNano = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n }\n else\n object.timeUnixNano = options.longs === String ? \"0\" : 0;\n if ($util.Long) {\n var long = new $util.Long(0, 0, false);\n object.count = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n }\n else\n object.count = options.longs === String ? \"0\" : 0;\n object.sum = 0;\n object.flags = 0;\n }\n if (message.startTimeUnixNano != null && message.hasOwnProperty(\"startTimeUnixNano\"))\n if (typeof message.startTimeUnixNano === \"number\")\n object.startTimeUnixNano = options.longs === String ? String(message.startTimeUnixNano) : message.startTimeUnixNano;\n else\n object.startTimeUnixNano = options.longs === String ? $util.Long.prototype.toString.call(message.startTimeUnixNano) : options.longs === Number ? new $util.LongBits(message.startTimeUnixNano.low >>> 0, message.startTimeUnixNano.high >>> 0).toNumber() : message.startTimeUnixNano;\n if (message.timeUnixNano != null && message.hasOwnProperty(\"timeUnixNano\"))\n if (typeof message.timeUnixNano === \"number\")\n object.timeUnixNano = options.longs === String ? String(message.timeUnixNano) : message.timeUnixNano;\n else\n object.timeUnixNano = options.longs === String ? $util.Long.prototype.toString.call(message.timeUnixNano) : options.longs === Number ? new $util.LongBits(message.timeUnixNano.low >>> 0, message.timeUnixNano.high >>> 0).toNumber() : message.timeUnixNano;\n if (message.count != null && message.hasOwnProperty(\"count\"))\n if (typeof message.count === \"number\")\n object.count = options.longs === String ? String(message.count) : message.count;\n else\n object.count = options.longs === String ? $util.Long.prototype.toString.call(message.count) : options.longs === Number ? new $util.LongBits(message.count.low >>> 0, message.count.high >>> 0).toNumber() : message.count;\n if (message.sum != null && message.hasOwnProperty(\"sum\"))\n object.sum = options.json && !isFinite(message.sum) ? String(message.sum) : message.sum;\n if (message.quantileValues && message.quantileValues.length) {\n object.quantileValues = [];\n for (var j = 0; j < message.quantileValues.length; ++j)\n object.quantileValues[j] = $root.opentelemetry.proto.metrics.v1.SummaryDataPoint.ValueAtQuantile.toObject(message.quantileValues[j], options);\n }\n if (message.attributes && message.attributes.length) {\n object.attributes = [];\n for (var j = 0; j < message.attributes.length; ++j)\n object.attributes[j] = $root.opentelemetry.proto.common.v1.KeyValue.toObject(message.attributes[j], options);\n }\n if (message.flags != null && message.hasOwnProperty(\"flags\"))\n object.flags = message.flags;\n return object;\n };\n /**\n * Converts this SummaryDataPoint to JSON.\n * @function toJSON\n * @memberof opentelemetry.proto.metrics.v1.SummaryDataPoint\n * @instance\n * @returns {Object.} JSON object\n */\n SummaryDataPoint.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n /**\n * Gets the default type url for SummaryDataPoint\n * @function getTypeUrl\n * @memberof opentelemetry.proto.metrics.v1.SummaryDataPoint\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n SummaryDataPoint.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = \"type.googleapis.com\";\n }\n return typeUrlPrefix + \"/opentelemetry.proto.metrics.v1.SummaryDataPoint\";\n };\n SummaryDataPoint.ValueAtQuantile = (function () {\n /**\n * Properties of a ValueAtQuantile.\n * @memberof opentelemetry.proto.metrics.v1.SummaryDataPoint\n * @interface IValueAtQuantile\n * @property {number|null} [quantile] ValueAtQuantile quantile\n * @property {number|null} [value] ValueAtQuantile value\n */\n /**\n * Constructs a new ValueAtQuantile.\n * @memberof opentelemetry.proto.metrics.v1.SummaryDataPoint\n * @classdesc Represents a ValueAtQuantile.\n * @implements IValueAtQuantile\n * @constructor\n * @param {opentelemetry.proto.metrics.v1.SummaryDataPoint.IValueAtQuantile=} [properties] Properties to set\n */\n function ValueAtQuantile(properties) {\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n /**\n * ValueAtQuantile quantile.\n * @member {number|null|undefined} quantile\n * @memberof opentelemetry.proto.metrics.v1.SummaryDataPoint.ValueAtQuantile\n * @instance\n */\n ValueAtQuantile.prototype.quantile = null;\n /**\n * ValueAtQuantile value.\n * @member {number|null|undefined} value\n * @memberof opentelemetry.proto.metrics.v1.SummaryDataPoint.ValueAtQuantile\n * @instance\n */\n ValueAtQuantile.prototype.value = null;\n /**\n * Creates a new ValueAtQuantile instance using the specified properties.\n * @function create\n * @memberof opentelemetry.proto.metrics.v1.SummaryDataPoint.ValueAtQuantile\n * @static\n * @param {opentelemetry.proto.metrics.v1.SummaryDataPoint.IValueAtQuantile=} [properties] Properties to set\n * @returns {opentelemetry.proto.metrics.v1.SummaryDataPoint.ValueAtQuantile} ValueAtQuantile instance\n */\n ValueAtQuantile.create = function create(properties) {\n return new ValueAtQuantile(properties);\n };\n /**\n * Encodes the specified ValueAtQuantile message. Does not implicitly {@link opentelemetry.proto.metrics.v1.SummaryDataPoint.ValueAtQuantile.verify|verify} messages.\n * @function encode\n * @memberof opentelemetry.proto.metrics.v1.SummaryDataPoint.ValueAtQuantile\n * @static\n * @param {opentelemetry.proto.metrics.v1.SummaryDataPoint.IValueAtQuantile} message ValueAtQuantile message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ValueAtQuantile.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.quantile != null && Object.hasOwnProperty.call(message, \"quantile\"))\n writer.uint32(/* id 1, wireType 1 =*/ 9).double(message.quantile);\n if (message.value != null && Object.hasOwnProperty.call(message, \"value\"))\n writer.uint32(/* id 2, wireType 1 =*/ 17).double(message.value);\n return writer;\n };\n /**\n * Encodes the specified ValueAtQuantile message, length delimited. Does not implicitly {@link opentelemetry.proto.metrics.v1.SummaryDataPoint.ValueAtQuantile.verify|verify} messages.\n * @function encodeDelimited\n * @memberof opentelemetry.proto.metrics.v1.SummaryDataPoint.ValueAtQuantile\n * @static\n * @param {opentelemetry.proto.metrics.v1.SummaryDataPoint.IValueAtQuantile} message ValueAtQuantile message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ValueAtQuantile.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n /**\n * Decodes a ValueAtQuantile message from the specified reader or buffer.\n * @function decode\n * @memberof opentelemetry.proto.metrics.v1.SummaryDataPoint.ValueAtQuantile\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {opentelemetry.proto.metrics.v1.SummaryDataPoint.ValueAtQuantile} ValueAtQuantile\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ValueAtQuantile.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.opentelemetry.proto.metrics.v1.SummaryDataPoint.ValueAtQuantile();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n message.quantile = reader.double();\n break;\n }\n case 2: {\n message.value = reader.double();\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n /**\n * Decodes a ValueAtQuantile message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof opentelemetry.proto.metrics.v1.SummaryDataPoint.ValueAtQuantile\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {opentelemetry.proto.metrics.v1.SummaryDataPoint.ValueAtQuantile} ValueAtQuantile\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ValueAtQuantile.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n /**\n * Verifies a ValueAtQuantile message.\n * @function verify\n * @memberof opentelemetry.proto.metrics.v1.SummaryDataPoint.ValueAtQuantile\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n ValueAtQuantile.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.quantile != null && message.hasOwnProperty(\"quantile\"))\n if (typeof message.quantile !== \"number\")\n return \"quantile: number expected\";\n if (message.value != null && message.hasOwnProperty(\"value\"))\n if (typeof message.value !== \"number\")\n return \"value: number expected\";\n return null;\n };\n /**\n * Creates a ValueAtQuantile message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof opentelemetry.proto.metrics.v1.SummaryDataPoint.ValueAtQuantile\n * @static\n * @param {Object.} object Plain object\n * @returns {opentelemetry.proto.metrics.v1.SummaryDataPoint.ValueAtQuantile} ValueAtQuantile\n */\n ValueAtQuantile.fromObject = function fromObject(object) {\n if (object instanceof $root.opentelemetry.proto.metrics.v1.SummaryDataPoint.ValueAtQuantile)\n return object;\n var message = new $root.opentelemetry.proto.metrics.v1.SummaryDataPoint.ValueAtQuantile();\n if (object.quantile != null)\n message.quantile = Number(object.quantile);\n if (object.value != null)\n message.value = Number(object.value);\n return message;\n };\n /**\n * Creates a plain object from a ValueAtQuantile message. Also converts values to other types if specified.\n * @function toObject\n * @memberof opentelemetry.proto.metrics.v1.SummaryDataPoint.ValueAtQuantile\n * @static\n * @param {opentelemetry.proto.metrics.v1.SummaryDataPoint.ValueAtQuantile} message ValueAtQuantile\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n ValueAtQuantile.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n var object = {};\n if (options.defaults) {\n object.quantile = 0;\n object.value = 0;\n }\n if (message.quantile != null && message.hasOwnProperty(\"quantile\"))\n object.quantile = options.json && !isFinite(message.quantile) ? String(message.quantile) : message.quantile;\n if (message.value != null && message.hasOwnProperty(\"value\"))\n object.value = options.json && !isFinite(message.value) ? String(message.value) : message.value;\n return object;\n };\n /**\n * Converts this ValueAtQuantile to JSON.\n * @function toJSON\n * @memberof opentelemetry.proto.metrics.v1.SummaryDataPoint.ValueAtQuantile\n * @instance\n * @returns {Object.} JSON object\n */\n ValueAtQuantile.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n /**\n * Gets the default type url for ValueAtQuantile\n * @function getTypeUrl\n * @memberof opentelemetry.proto.metrics.v1.SummaryDataPoint.ValueAtQuantile\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n ValueAtQuantile.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = \"type.googleapis.com\";\n }\n return typeUrlPrefix + \"/opentelemetry.proto.metrics.v1.SummaryDataPoint.ValueAtQuantile\";\n };\n return ValueAtQuantile;\n })();\n return SummaryDataPoint;\n })();\n v1.Exemplar = (function () {\n /**\n * Properties of an Exemplar.\n * @memberof opentelemetry.proto.metrics.v1\n * @interface IExemplar\n * @property {Array.|null} [filteredAttributes] Exemplar filteredAttributes\n * @property {number|Long|null} [timeUnixNano] Exemplar timeUnixNano\n * @property {number|null} [asDouble] Exemplar asDouble\n * @property {number|Long|null} [asInt] Exemplar asInt\n * @property {Uint8Array|null} [spanId] Exemplar spanId\n * @property {Uint8Array|null} [traceId] Exemplar traceId\n */\n /**\n * Constructs a new Exemplar.\n * @memberof opentelemetry.proto.metrics.v1\n * @classdesc Represents an Exemplar.\n * @implements IExemplar\n * @constructor\n * @param {opentelemetry.proto.metrics.v1.IExemplar=} [properties] Properties to set\n */\n function Exemplar(properties) {\n this.filteredAttributes = [];\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n /**\n * Exemplar filteredAttributes.\n * @member {Array.} filteredAttributes\n * @memberof opentelemetry.proto.metrics.v1.Exemplar\n * @instance\n */\n Exemplar.prototype.filteredAttributes = $util.emptyArray;\n /**\n * Exemplar timeUnixNano.\n * @member {number|Long|null|undefined} timeUnixNano\n * @memberof opentelemetry.proto.metrics.v1.Exemplar\n * @instance\n */\n Exemplar.prototype.timeUnixNano = null;\n /**\n * Exemplar asDouble.\n * @member {number|null|undefined} asDouble\n * @memberof opentelemetry.proto.metrics.v1.Exemplar\n * @instance\n */\n Exemplar.prototype.asDouble = null;\n /**\n * Exemplar asInt.\n * @member {number|Long|null|undefined} asInt\n * @memberof opentelemetry.proto.metrics.v1.Exemplar\n * @instance\n */\n Exemplar.prototype.asInt = null;\n /**\n * Exemplar spanId.\n * @member {Uint8Array|null|undefined} spanId\n * @memberof opentelemetry.proto.metrics.v1.Exemplar\n * @instance\n */\n Exemplar.prototype.spanId = null;\n /**\n * Exemplar traceId.\n * @member {Uint8Array|null|undefined} traceId\n * @memberof opentelemetry.proto.metrics.v1.Exemplar\n * @instance\n */\n Exemplar.prototype.traceId = null;\n // OneOf field names bound to virtual getters and setters\n var $oneOfFields;\n /**\n * Exemplar value.\n * @member {\"asDouble\"|\"asInt\"|undefined} value\n * @memberof opentelemetry.proto.metrics.v1.Exemplar\n * @instance\n */\n Object.defineProperty(Exemplar.prototype, \"value\", {\n get: $util.oneOfGetter($oneOfFields = [\"asDouble\", \"asInt\"]),\n set: $util.oneOfSetter($oneOfFields)\n });\n /**\n * Creates a new Exemplar instance using the specified properties.\n * @function create\n * @memberof opentelemetry.proto.metrics.v1.Exemplar\n * @static\n * @param {opentelemetry.proto.metrics.v1.IExemplar=} [properties] Properties to set\n * @returns {opentelemetry.proto.metrics.v1.Exemplar} Exemplar instance\n */\n Exemplar.create = function create(properties) {\n return new Exemplar(properties);\n };\n /**\n * Encodes the specified Exemplar message. Does not implicitly {@link opentelemetry.proto.metrics.v1.Exemplar.verify|verify} messages.\n * @function encode\n * @memberof opentelemetry.proto.metrics.v1.Exemplar\n * @static\n * @param {opentelemetry.proto.metrics.v1.IExemplar} message Exemplar message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Exemplar.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.timeUnixNano != null && Object.hasOwnProperty.call(message, \"timeUnixNano\"))\n writer.uint32(/* id 2, wireType 1 =*/ 17).fixed64(message.timeUnixNano);\n if (message.asDouble != null && Object.hasOwnProperty.call(message, \"asDouble\"))\n writer.uint32(/* id 3, wireType 1 =*/ 25).double(message.asDouble);\n if (message.spanId != null && Object.hasOwnProperty.call(message, \"spanId\"))\n writer.uint32(/* id 4, wireType 2 =*/ 34).bytes(message.spanId);\n if (message.traceId != null && Object.hasOwnProperty.call(message, \"traceId\"))\n writer.uint32(/* id 5, wireType 2 =*/ 42).bytes(message.traceId);\n if (message.asInt != null && Object.hasOwnProperty.call(message, \"asInt\"))\n writer.uint32(/* id 6, wireType 1 =*/ 49).sfixed64(message.asInt);\n if (message.filteredAttributes != null && message.filteredAttributes.length)\n for (var i = 0; i < message.filteredAttributes.length; ++i)\n $root.opentelemetry.proto.common.v1.KeyValue.encode(message.filteredAttributes[i], writer.uint32(/* id 7, wireType 2 =*/ 58).fork()).ldelim();\n return writer;\n };\n /**\n * Encodes the specified Exemplar message, length delimited. Does not implicitly {@link opentelemetry.proto.metrics.v1.Exemplar.verify|verify} messages.\n * @function encodeDelimited\n * @memberof opentelemetry.proto.metrics.v1.Exemplar\n * @static\n * @param {opentelemetry.proto.metrics.v1.IExemplar} message Exemplar message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Exemplar.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n /**\n * Decodes an Exemplar message from the specified reader or buffer.\n * @function decode\n * @memberof opentelemetry.proto.metrics.v1.Exemplar\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {opentelemetry.proto.metrics.v1.Exemplar} Exemplar\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Exemplar.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.opentelemetry.proto.metrics.v1.Exemplar();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 7: {\n if (!(message.filteredAttributes && message.filteredAttributes.length))\n message.filteredAttributes = [];\n message.filteredAttributes.push($root.opentelemetry.proto.common.v1.KeyValue.decode(reader, reader.uint32()));\n break;\n }\n case 2: {\n message.timeUnixNano = reader.fixed64();\n break;\n }\n case 3: {\n message.asDouble = reader.double();\n break;\n }\n case 6: {\n message.asInt = reader.sfixed64();\n break;\n }\n case 4: {\n message.spanId = reader.bytes();\n break;\n }\n case 5: {\n message.traceId = reader.bytes();\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n /**\n * Decodes an Exemplar message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof opentelemetry.proto.metrics.v1.Exemplar\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {opentelemetry.proto.metrics.v1.Exemplar} Exemplar\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Exemplar.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n /**\n * Verifies an Exemplar message.\n * @function verify\n * @memberof opentelemetry.proto.metrics.v1.Exemplar\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n Exemplar.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n var properties = {};\n if (message.filteredAttributes != null && message.hasOwnProperty(\"filteredAttributes\")) {\n if (!Array.isArray(message.filteredAttributes))\n return \"filteredAttributes: array expected\";\n for (var i = 0; i < message.filteredAttributes.length; ++i) {\n var error = $root.opentelemetry.proto.common.v1.KeyValue.verify(message.filteredAttributes[i]);\n if (error)\n return \"filteredAttributes.\" + error;\n }\n }\n if (message.timeUnixNano != null && message.hasOwnProperty(\"timeUnixNano\"))\n if (!$util.isInteger(message.timeUnixNano) && !(message.timeUnixNano && $util.isInteger(message.timeUnixNano.low) && $util.isInteger(message.timeUnixNano.high)))\n return \"timeUnixNano: integer|Long expected\";\n if (message.asDouble != null && message.hasOwnProperty(\"asDouble\")) {\n properties.value = 1;\n if (typeof message.asDouble !== \"number\")\n return \"asDouble: number expected\";\n }\n if (message.asInt != null && message.hasOwnProperty(\"asInt\")) {\n if (properties.value === 1)\n return \"value: multiple values\";\n properties.value = 1;\n if (!$util.isInteger(message.asInt) && !(message.asInt && $util.isInteger(message.asInt.low) && $util.isInteger(message.asInt.high)))\n return \"asInt: integer|Long expected\";\n }\n if (message.spanId != null && message.hasOwnProperty(\"spanId\"))\n if (!(message.spanId && typeof message.spanId.length === \"number\" || $util.isString(message.spanId)))\n return \"spanId: buffer expected\";\n if (message.traceId != null && message.hasOwnProperty(\"traceId\"))\n if (!(message.traceId && typeof message.traceId.length === \"number\" || $util.isString(message.traceId)))\n return \"traceId: buffer expected\";\n return null;\n };\n /**\n * Creates an Exemplar message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof opentelemetry.proto.metrics.v1.Exemplar\n * @static\n * @param {Object.} object Plain object\n * @returns {opentelemetry.proto.metrics.v1.Exemplar} Exemplar\n */\n Exemplar.fromObject = function fromObject(object) {\n if (object instanceof $root.opentelemetry.proto.metrics.v1.Exemplar)\n return object;\n var message = new $root.opentelemetry.proto.metrics.v1.Exemplar();\n if (object.filteredAttributes) {\n if (!Array.isArray(object.filteredAttributes))\n throw TypeError(\".opentelemetry.proto.metrics.v1.Exemplar.filteredAttributes: array expected\");\n message.filteredAttributes = [];\n for (var i = 0; i < object.filteredAttributes.length; ++i) {\n if (typeof object.filteredAttributes[i] !== \"object\")\n throw TypeError(\".opentelemetry.proto.metrics.v1.Exemplar.filteredAttributes: object expected\");\n message.filteredAttributes[i] = $root.opentelemetry.proto.common.v1.KeyValue.fromObject(object.filteredAttributes[i]);\n }\n }\n if (object.timeUnixNano != null)\n if ($util.Long)\n (message.timeUnixNano = $util.Long.fromValue(object.timeUnixNano)).unsigned = false;\n else if (typeof object.timeUnixNano === \"string\")\n message.timeUnixNano = parseInt(object.timeUnixNano, 10);\n else if (typeof object.timeUnixNano === \"number\")\n message.timeUnixNano = object.timeUnixNano;\n else if (typeof object.timeUnixNano === \"object\")\n message.timeUnixNano = new $util.LongBits(object.timeUnixNano.low >>> 0, object.timeUnixNano.high >>> 0).toNumber();\n if (object.asDouble != null)\n message.asDouble = Number(object.asDouble);\n if (object.asInt != null)\n if ($util.Long)\n (message.asInt = $util.Long.fromValue(object.asInt)).unsigned = false;\n else if (typeof object.asInt === \"string\")\n message.asInt = parseInt(object.asInt, 10);\n else if (typeof object.asInt === \"number\")\n message.asInt = object.asInt;\n else if (typeof object.asInt === \"object\")\n message.asInt = new $util.LongBits(object.asInt.low >>> 0, object.asInt.high >>> 0).toNumber();\n if (object.spanId != null)\n if (typeof object.spanId === \"string\")\n $util.base64.decode(object.spanId, message.spanId = $util.newBuffer($util.base64.length(object.spanId)), 0);\n else if (object.spanId.length >= 0)\n message.spanId = object.spanId;\n if (object.traceId != null)\n if (typeof object.traceId === \"string\")\n $util.base64.decode(object.traceId, message.traceId = $util.newBuffer($util.base64.length(object.traceId)), 0);\n else if (object.traceId.length >= 0)\n message.traceId = object.traceId;\n return message;\n };\n /**\n * Creates a plain object from an Exemplar message. Also converts values to other types if specified.\n * @function toObject\n * @memberof opentelemetry.proto.metrics.v1.Exemplar\n * @static\n * @param {opentelemetry.proto.metrics.v1.Exemplar} message Exemplar\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n Exemplar.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n var object = {};\n if (options.arrays || options.defaults)\n object.filteredAttributes = [];\n if (options.defaults) {\n if ($util.Long) {\n var long = new $util.Long(0, 0, false);\n object.timeUnixNano = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n }\n else\n object.timeUnixNano = options.longs === String ? \"0\" : 0;\n if (options.bytes === String)\n object.spanId = \"\";\n else {\n object.spanId = [];\n if (options.bytes !== Array)\n object.spanId = $util.newBuffer(object.spanId);\n }\n if (options.bytes === String)\n object.traceId = \"\";\n else {\n object.traceId = [];\n if (options.bytes !== Array)\n object.traceId = $util.newBuffer(object.traceId);\n }\n }\n if (message.timeUnixNano != null && message.hasOwnProperty(\"timeUnixNano\"))\n if (typeof message.timeUnixNano === \"number\")\n object.timeUnixNano = options.longs === String ? String(message.timeUnixNano) : message.timeUnixNano;\n else\n object.timeUnixNano = options.longs === String ? $util.Long.prototype.toString.call(message.timeUnixNano) : options.longs === Number ? new $util.LongBits(message.timeUnixNano.low >>> 0, message.timeUnixNano.high >>> 0).toNumber() : message.timeUnixNano;\n if (message.asDouble != null && message.hasOwnProperty(\"asDouble\")) {\n object.asDouble = options.json && !isFinite(message.asDouble) ? String(message.asDouble) : message.asDouble;\n if (options.oneofs)\n object.value = \"asDouble\";\n }\n if (message.spanId != null && message.hasOwnProperty(\"spanId\"))\n object.spanId = options.bytes === String ? $util.base64.encode(message.spanId, 0, message.spanId.length) : options.bytes === Array ? Array.prototype.slice.call(message.spanId) : message.spanId;\n if (message.traceId != null && message.hasOwnProperty(\"traceId\"))\n object.traceId = options.bytes === String ? $util.base64.encode(message.traceId, 0, message.traceId.length) : options.bytes === Array ? Array.prototype.slice.call(message.traceId) : message.traceId;\n if (message.asInt != null && message.hasOwnProperty(\"asInt\")) {\n if (typeof message.asInt === \"number\")\n object.asInt = options.longs === String ? String(message.asInt) : message.asInt;\n else\n object.asInt = options.longs === String ? $util.Long.prototype.toString.call(message.asInt) : options.longs === Number ? new $util.LongBits(message.asInt.low >>> 0, message.asInt.high >>> 0).toNumber() : message.asInt;\n if (options.oneofs)\n object.value = \"asInt\";\n }\n if (message.filteredAttributes && message.filteredAttributes.length) {\n object.filteredAttributes = [];\n for (var j = 0; j < message.filteredAttributes.length; ++j)\n object.filteredAttributes[j] = $root.opentelemetry.proto.common.v1.KeyValue.toObject(message.filteredAttributes[j], options);\n }\n return object;\n };\n /**\n * Converts this Exemplar to JSON.\n * @function toJSON\n * @memberof opentelemetry.proto.metrics.v1.Exemplar\n * @instance\n * @returns {Object.} JSON object\n */\n Exemplar.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n /**\n * Gets the default type url for Exemplar\n * @function getTypeUrl\n * @memberof opentelemetry.proto.metrics.v1.Exemplar\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n Exemplar.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = \"type.googleapis.com\";\n }\n return typeUrlPrefix + \"/opentelemetry.proto.metrics.v1.Exemplar\";\n };\n return Exemplar;\n })();\n return v1;\n })();\n return metrics;\n })();\n proto.logs = (function () {\n /**\n * Namespace logs.\n * @memberof opentelemetry.proto\n * @namespace\n */\n var logs = {};\n logs.v1 = (function () {\n /**\n * Namespace v1.\n * @memberof opentelemetry.proto.logs\n * @namespace\n */\n var v1 = {};\n v1.LogsData = (function () {\n /**\n * Properties of a LogsData.\n * @memberof opentelemetry.proto.logs.v1\n * @interface ILogsData\n * @property {Array.|null} [resourceLogs] LogsData resourceLogs\n */\n /**\n * Constructs a new LogsData.\n * @memberof opentelemetry.proto.logs.v1\n * @classdesc Represents a LogsData.\n * @implements ILogsData\n * @constructor\n * @param {opentelemetry.proto.logs.v1.ILogsData=} [properties] Properties to set\n */\n function LogsData(properties) {\n this.resourceLogs = [];\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n /**\n * LogsData resourceLogs.\n * @member {Array.} resourceLogs\n * @memberof opentelemetry.proto.logs.v1.LogsData\n * @instance\n */\n LogsData.prototype.resourceLogs = $util.emptyArray;\n /**\n * Creates a new LogsData instance using the specified properties.\n * @function create\n * @memberof opentelemetry.proto.logs.v1.LogsData\n * @static\n * @param {opentelemetry.proto.logs.v1.ILogsData=} [properties] Properties to set\n * @returns {opentelemetry.proto.logs.v1.LogsData} LogsData instance\n */\n LogsData.create = function create(properties) {\n return new LogsData(properties);\n };\n /**\n * Encodes the specified LogsData message. Does not implicitly {@link opentelemetry.proto.logs.v1.LogsData.verify|verify} messages.\n * @function encode\n * @memberof opentelemetry.proto.logs.v1.LogsData\n * @static\n * @param {opentelemetry.proto.logs.v1.ILogsData} message LogsData message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n LogsData.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.resourceLogs != null && message.resourceLogs.length)\n for (var i = 0; i < message.resourceLogs.length; ++i)\n $root.opentelemetry.proto.logs.v1.ResourceLogs.encode(message.resourceLogs[i], writer.uint32(/* id 1, wireType 2 =*/ 10).fork()).ldelim();\n return writer;\n };\n /**\n * Encodes the specified LogsData message, length delimited. Does not implicitly {@link opentelemetry.proto.logs.v1.LogsData.verify|verify} messages.\n * @function encodeDelimited\n * @memberof opentelemetry.proto.logs.v1.LogsData\n * @static\n * @param {opentelemetry.proto.logs.v1.ILogsData} message LogsData message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n LogsData.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n /**\n * Decodes a LogsData message from the specified reader or buffer.\n * @function decode\n * @memberof opentelemetry.proto.logs.v1.LogsData\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {opentelemetry.proto.logs.v1.LogsData} LogsData\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n LogsData.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.opentelemetry.proto.logs.v1.LogsData();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (!(message.resourceLogs && message.resourceLogs.length))\n message.resourceLogs = [];\n message.resourceLogs.push($root.opentelemetry.proto.logs.v1.ResourceLogs.decode(reader, reader.uint32()));\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n /**\n * Decodes a LogsData message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof opentelemetry.proto.logs.v1.LogsData\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {opentelemetry.proto.logs.v1.LogsData} LogsData\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n LogsData.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n /**\n * Verifies a LogsData message.\n * @function verify\n * @memberof opentelemetry.proto.logs.v1.LogsData\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n LogsData.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.resourceLogs != null && message.hasOwnProperty(\"resourceLogs\")) {\n if (!Array.isArray(message.resourceLogs))\n return \"resourceLogs: array expected\";\n for (var i = 0; i < message.resourceLogs.length; ++i) {\n var error = $root.opentelemetry.proto.logs.v1.ResourceLogs.verify(message.resourceLogs[i]);\n if (error)\n return \"resourceLogs.\" + error;\n }\n }\n return null;\n };\n /**\n * Creates a LogsData message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof opentelemetry.proto.logs.v1.LogsData\n * @static\n * @param {Object.} object Plain object\n * @returns {opentelemetry.proto.logs.v1.LogsData} LogsData\n */\n LogsData.fromObject = function fromObject(object) {\n if (object instanceof $root.opentelemetry.proto.logs.v1.LogsData)\n return object;\n var message = new $root.opentelemetry.proto.logs.v1.LogsData();\n if (object.resourceLogs) {\n if (!Array.isArray(object.resourceLogs))\n throw TypeError(\".opentelemetry.proto.logs.v1.LogsData.resourceLogs: array expected\");\n message.resourceLogs = [];\n for (var i = 0; i < object.resourceLogs.length; ++i) {\n if (typeof object.resourceLogs[i] !== \"object\")\n throw TypeError(\".opentelemetry.proto.logs.v1.LogsData.resourceLogs: object expected\");\n message.resourceLogs[i] = $root.opentelemetry.proto.logs.v1.ResourceLogs.fromObject(object.resourceLogs[i]);\n }\n }\n return message;\n };\n /**\n * Creates a plain object from a LogsData message. Also converts values to other types if specified.\n * @function toObject\n * @memberof opentelemetry.proto.logs.v1.LogsData\n * @static\n * @param {opentelemetry.proto.logs.v1.LogsData} message LogsData\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n LogsData.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n var object = {};\n if (options.arrays || options.defaults)\n object.resourceLogs = [];\n if (message.resourceLogs && message.resourceLogs.length) {\n object.resourceLogs = [];\n for (var j = 0; j < message.resourceLogs.length; ++j)\n object.resourceLogs[j] = $root.opentelemetry.proto.logs.v1.ResourceLogs.toObject(message.resourceLogs[j], options);\n }\n return object;\n };\n /**\n * Converts this LogsData to JSON.\n * @function toJSON\n * @memberof opentelemetry.proto.logs.v1.LogsData\n * @instance\n * @returns {Object.} JSON object\n */\n LogsData.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n /**\n * Gets the default type url for LogsData\n * @function getTypeUrl\n * @memberof opentelemetry.proto.logs.v1.LogsData\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n LogsData.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = \"type.googleapis.com\";\n }\n return typeUrlPrefix + \"/opentelemetry.proto.logs.v1.LogsData\";\n };\n return LogsData;\n })();\n v1.ResourceLogs = (function () {\n /**\n * Properties of a ResourceLogs.\n * @memberof opentelemetry.proto.logs.v1\n * @interface IResourceLogs\n * @property {opentelemetry.proto.resource.v1.IResource|null} [resource] ResourceLogs resource\n * @property {Array.|null} [scopeLogs] ResourceLogs scopeLogs\n * @property {string|null} [schemaUrl] ResourceLogs schemaUrl\n */\n /**\n * Constructs a new ResourceLogs.\n * @memberof opentelemetry.proto.logs.v1\n * @classdesc Represents a ResourceLogs.\n * @implements IResourceLogs\n * @constructor\n * @param {opentelemetry.proto.logs.v1.IResourceLogs=} [properties] Properties to set\n */\n function ResourceLogs(properties) {\n this.scopeLogs = [];\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n /**\n * ResourceLogs resource.\n * @member {opentelemetry.proto.resource.v1.IResource|null|undefined} resource\n * @memberof opentelemetry.proto.logs.v1.ResourceLogs\n * @instance\n */\n ResourceLogs.prototype.resource = null;\n /**\n * ResourceLogs scopeLogs.\n * @member {Array.} scopeLogs\n * @memberof opentelemetry.proto.logs.v1.ResourceLogs\n * @instance\n */\n ResourceLogs.prototype.scopeLogs = $util.emptyArray;\n /**\n * ResourceLogs schemaUrl.\n * @member {string|null|undefined} schemaUrl\n * @memberof opentelemetry.proto.logs.v1.ResourceLogs\n * @instance\n */\n ResourceLogs.prototype.schemaUrl = null;\n /**\n * Creates a new ResourceLogs instance using the specified properties.\n * @function create\n * @memberof opentelemetry.proto.logs.v1.ResourceLogs\n * @static\n * @param {opentelemetry.proto.logs.v1.IResourceLogs=} [properties] Properties to set\n * @returns {opentelemetry.proto.logs.v1.ResourceLogs} ResourceLogs instance\n */\n ResourceLogs.create = function create(properties) {\n return new ResourceLogs(properties);\n };\n /**\n * Encodes the specified ResourceLogs message. Does not implicitly {@link opentelemetry.proto.logs.v1.ResourceLogs.verify|verify} messages.\n * @function encode\n * @memberof opentelemetry.proto.logs.v1.ResourceLogs\n * @static\n * @param {opentelemetry.proto.logs.v1.IResourceLogs} message ResourceLogs message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ResourceLogs.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.resource != null && Object.hasOwnProperty.call(message, \"resource\"))\n $root.opentelemetry.proto.resource.v1.Resource.encode(message.resource, writer.uint32(/* id 1, wireType 2 =*/ 10).fork()).ldelim();\n if (message.scopeLogs != null && message.scopeLogs.length)\n for (var i = 0; i < message.scopeLogs.length; ++i)\n $root.opentelemetry.proto.logs.v1.ScopeLogs.encode(message.scopeLogs[i], writer.uint32(/* id 2, wireType 2 =*/ 18).fork()).ldelim();\n if (message.schemaUrl != null && Object.hasOwnProperty.call(message, \"schemaUrl\"))\n writer.uint32(/* id 3, wireType 2 =*/ 26).string(message.schemaUrl);\n return writer;\n };\n /**\n * Encodes the specified ResourceLogs message, length delimited. Does not implicitly {@link opentelemetry.proto.logs.v1.ResourceLogs.verify|verify} messages.\n * @function encodeDelimited\n * @memberof opentelemetry.proto.logs.v1.ResourceLogs\n * @static\n * @param {opentelemetry.proto.logs.v1.IResourceLogs} message ResourceLogs message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ResourceLogs.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n /**\n * Decodes a ResourceLogs message from the specified reader or buffer.\n * @function decode\n * @memberof opentelemetry.proto.logs.v1.ResourceLogs\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {opentelemetry.proto.logs.v1.ResourceLogs} ResourceLogs\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ResourceLogs.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.opentelemetry.proto.logs.v1.ResourceLogs();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n message.resource = $root.opentelemetry.proto.resource.v1.Resource.decode(reader, reader.uint32());\n break;\n }\n case 2: {\n if (!(message.scopeLogs && message.scopeLogs.length))\n message.scopeLogs = [];\n message.scopeLogs.push($root.opentelemetry.proto.logs.v1.ScopeLogs.decode(reader, reader.uint32()));\n break;\n }\n case 3: {\n message.schemaUrl = reader.string();\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n /**\n * Decodes a ResourceLogs message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof opentelemetry.proto.logs.v1.ResourceLogs\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {opentelemetry.proto.logs.v1.ResourceLogs} ResourceLogs\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ResourceLogs.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n /**\n * Verifies a ResourceLogs message.\n * @function verify\n * @memberof opentelemetry.proto.logs.v1.ResourceLogs\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n ResourceLogs.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.resource != null && message.hasOwnProperty(\"resource\")) {\n var error = $root.opentelemetry.proto.resource.v1.Resource.verify(message.resource);\n if (error)\n return \"resource.\" + error;\n }\n if (message.scopeLogs != null && message.hasOwnProperty(\"scopeLogs\")) {\n if (!Array.isArray(message.scopeLogs))\n return \"scopeLogs: array expected\";\n for (var i = 0; i < message.scopeLogs.length; ++i) {\n var error = $root.opentelemetry.proto.logs.v1.ScopeLogs.verify(message.scopeLogs[i]);\n if (error)\n return \"scopeLogs.\" + error;\n }\n }\n if (message.schemaUrl != null && message.hasOwnProperty(\"schemaUrl\"))\n if (!$util.isString(message.schemaUrl))\n return \"schemaUrl: string expected\";\n return null;\n };\n /**\n * Creates a ResourceLogs message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof opentelemetry.proto.logs.v1.ResourceLogs\n * @static\n * @param {Object.} object Plain object\n * @returns {opentelemetry.proto.logs.v1.ResourceLogs} ResourceLogs\n */\n ResourceLogs.fromObject = function fromObject(object) {\n if (object instanceof $root.opentelemetry.proto.logs.v1.ResourceLogs)\n return object;\n var message = new $root.opentelemetry.proto.logs.v1.ResourceLogs();\n if (object.resource != null) {\n if (typeof object.resource !== \"object\")\n throw TypeError(\".opentelemetry.proto.logs.v1.ResourceLogs.resource: object expected\");\n message.resource = $root.opentelemetry.proto.resource.v1.Resource.fromObject(object.resource);\n }\n if (object.scopeLogs) {\n if (!Array.isArray(object.scopeLogs))\n throw TypeError(\".opentelemetry.proto.logs.v1.ResourceLogs.scopeLogs: array expected\");\n message.scopeLogs = [];\n for (var i = 0; i < object.scopeLogs.length; ++i) {\n if (typeof object.scopeLogs[i] !== \"object\")\n throw TypeError(\".opentelemetry.proto.logs.v1.ResourceLogs.scopeLogs: object expected\");\n message.scopeLogs[i] = $root.opentelemetry.proto.logs.v1.ScopeLogs.fromObject(object.scopeLogs[i]);\n }\n }\n if (object.schemaUrl != null)\n message.schemaUrl = String(object.schemaUrl);\n return message;\n };\n /**\n * Creates a plain object from a ResourceLogs message. Also converts values to other types if specified.\n * @function toObject\n * @memberof opentelemetry.proto.logs.v1.ResourceLogs\n * @static\n * @param {opentelemetry.proto.logs.v1.ResourceLogs} message ResourceLogs\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n ResourceLogs.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n var object = {};\n if (options.arrays || options.defaults)\n object.scopeLogs = [];\n if (options.defaults) {\n object.resource = null;\n object.schemaUrl = \"\";\n }\n if (message.resource != null && message.hasOwnProperty(\"resource\"))\n object.resource = $root.opentelemetry.proto.resource.v1.Resource.toObject(message.resource, options);\n if (message.scopeLogs && message.scopeLogs.length) {\n object.scopeLogs = [];\n for (var j = 0; j < message.scopeLogs.length; ++j)\n object.scopeLogs[j] = $root.opentelemetry.proto.logs.v1.ScopeLogs.toObject(message.scopeLogs[j], options);\n }\n if (message.schemaUrl != null && message.hasOwnProperty(\"schemaUrl\"))\n object.schemaUrl = message.schemaUrl;\n return object;\n };\n /**\n * Converts this ResourceLogs to JSON.\n * @function toJSON\n * @memberof opentelemetry.proto.logs.v1.ResourceLogs\n * @instance\n * @returns {Object.} JSON object\n */\n ResourceLogs.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n /**\n * Gets the default type url for ResourceLogs\n * @function getTypeUrl\n * @memberof opentelemetry.proto.logs.v1.ResourceLogs\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n ResourceLogs.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = \"type.googleapis.com\";\n }\n return typeUrlPrefix + \"/opentelemetry.proto.logs.v1.ResourceLogs\";\n };\n return ResourceLogs;\n })();\n v1.ScopeLogs = (function () {\n /**\n * Properties of a ScopeLogs.\n * @memberof opentelemetry.proto.logs.v1\n * @interface IScopeLogs\n * @property {opentelemetry.proto.common.v1.IInstrumentationScope|null} [scope] ScopeLogs scope\n * @property {Array.|null} [logRecords] ScopeLogs logRecords\n * @property {string|null} [schemaUrl] ScopeLogs schemaUrl\n */\n /**\n * Constructs a new ScopeLogs.\n * @memberof opentelemetry.proto.logs.v1\n * @classdesc Represents a ScopeLogs.\n * @implements IScopeLogs\n * @constructor\n * @param {opentelemetry.proto.logs.v1.IScopeLogs=} [properties] Properties to set\n */\n function ScopeLogs(properties) {\n this.logRecords = [];\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n /**\n * ScopeLogs scope.\n * @member {opentelemetry.proto.common.v1.IInstrumentationScope|null|undefined} scope\n * @memberof opentelemetry.proto.logs.v1.ScopeLogs\n * @instance\n */\n ScopeLogs.prototype.scope = null;\n /**\n * ScopeLogs logRecords.\n * @member {Array.} logRecords\n * @memberof opentelemetry.proto.logs.v1.ScopeLogs\n * @instance\n */\n ScopeLogs.prototype.logRecords = $util.emptyArray;\n /**\n * ScopeLogs schemaUrl.\n * @member {string|null|undefined} schemaUrl\n * @memberof opentelemetry.proto.logs.v1.ScopeLogs\n * @instance\n */\n ScopeLogs.prototype.schemaUrl = null;\n /**\n * Creates a new ScopeLogs instance using the specified properties.\n * @function create\n * @memberof opentelemetry.proto.logs.v1.ScopeLogs\n * @static\n * @param {opentelemetry.proto.logs.v1.IScopeLogs=} [properties] Properties to set\n * @returns {opentelemetry.proto.logs.v1.ScopeLogs} ScopeLogs instance\n */\n ScopeLogs.create = function create(properties) {\n return new ScopeLogs(properties);\n };\n /**\n * Encodes the specified ScopeLogs message. Does not implicitly {@link opentelemetry.proto.logs.v1.ScopeLogs.verify|verify} messages.\n * @function encode\n * @memberof opentelemetry.proto.logs.v1.ScopeLogs\n * @static\n * @param {opentelemetry.proto.logs.v1.IScopeLogs} message ScopeLogs message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ScopeLogs.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.scope != null && Object.hasOwnProperty.call(message, \"scope\"))\n $root.opentelemetry.proto.common.v1.InstrumentationScope.encode(message.scope, writer.uint32(/* id 1, wireType 2 =*/ 10).fork()).ldelim();\n if (message.logRecords != null && message.logRecords.length)\n for (var i = 0; i < message.logRecords.length; ++i)\n $root.opentelemetry.proto.logs.v1.LogRecord.encode(message.logRecords[i], writer.uint32(/* id 2, wireType 2 =*/ 18).fork()).ldelim();\n if (message.schemaUrl != null && Object.hasOwnProperty.call(message, \"schemaUrl\"))\n writer.uint32(/* id 3, wireType 2 =*/ 26).string(message.schemaUrl);\n return writer;\n };\n /**\n * Encodes the specified ScopeLogs message, length delimited. Does not implicitly {@link opentelemetry.proto.logs.v1.ScopeLogs.verify|verify} messages.\n * @function encodeDelimited\n * @memberof opentelemetry.proto.logs.v1.ScopeLogs\n * @static\n * @param {opentelemetry.proto.logs.v1.IScopeLogs} message ScopeLogs message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ScopeLogs.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n /**\n * Decodes a ScopeLogs message from the specified reader or buffer.\n * @function decode\n * @memberof opentelemetry.proto.logs.v1.ScopeLogs\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {opentelemetry.proto.logs.v1.ScopeLogs} ScopeLogs\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ScopeLogs.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.opentelemetry.proto.logs.v1.ScopeLogs();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n message.scope = $root.opentelemetry.proto.common.v1.InstrumentationScope.decode(reader, reader.uint32());\n break;\n }\n case 2: {\n if (!(message.logRecords && message.logRecords.length))\n message.logRecords = [];\n message.logRecords.push($root.opentelemetry.proto.logs.v1.LogRecord.decode(reader, reader.uint32()));\n break;\n }\n case 3: {\n message.schemaUrl = reader.string();\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n /**\n * Decodes a ScopeLogs message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof opentelemetry.proto.logs.v1.ScopeLogs\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {opentelemetry.proto.logs.v1.ScopeLogs} ScopeLogs\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ScopeLogs.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n /**\n * Verifies a ScopeLogs message.\n * @function verify\n * @memberof opentelemetry.proto.logs.v1.ScopeLogs\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n ScopeLogs.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.scope != null && message.hasOwnProperty(\"scope\")) {\n var error = $root.opentelemetry.proto.common.v1.InstrumentationScope.verify(message.scope);\n if (error)\n return \"scope.\" + error;\n }\n if (message.logRecords != null && message.hasOwnProperty(\"logRecords\")) {\n if (!Array.isArray(message.logRecords))\n return \"logRecords: array expected\";\n for (var i = 0; i < message.logRecords.length; ++i) {\n var error = $root.opentelemetry.proto.logs.v1.LogRecord.verify(message.logRecords[i]);\n if (error)\n return \"logRecords.\" + error;\n }\n }\n if (message.schemaUrl != null && message.hasOwnProperty(\"schemaUrl\"))\n if (!$util.isString(message.schemaUrl))\n return \"schemaUrl: string expected\";\n return null;\n };\n /**\n * Creates a ScopeLogs message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof opentelemetry.proto.logs.v1.ScopeLogs\n * @static\n * @param {Object.} object Plain object\n * @returns {opentelemetry.proto.logs.v1.ScopeLogs} ScopeLogs\n */\n ScopeLogs.fromObject = function fromObject(object) {\n if (object instanceof $root.opentelemetry.proto.logs.v1.ScopeLogs)\n return object;\n var message = new $root.opentelemetry.proto.logs.v1.ScopeLogs();\n if (object.scope != null) {\n if (typeof object.scope !== \"object\")\n throw TypeError(\".opentelemetry.proto.logs.v1.ScopeLogs.scope: object expected\");\n message.scope = $root.opentelemetry.proto.common.v1.InstrumentationScope.fromObject(object.scope);\n }\n if (object.logRecords) {\n if (!Array.isArray(object.logRecords))\n throw TypeError(\".opentelemetry.proto.logs.v1.ScopeLogs.logRecords: array expected\");\n message.logRecords = [];\n for (var i = 0; i < object.logRecords.length; ++i) {\n if (typeof object.logRecords[i] !== \"object\")\n throw TypeError(\".opentelemetry.proto.logs.v1.ScopeLogs.logRecords: object expected\");\n message.logRecords[i] = $root.opentelemetry.proto.logs.v1.LogRecord.fromObject(object.logRecords[i]);\n }\n }\n if (object.schemaUrl != null)\n message.schemaUrl = String(object.schemaUrl);\n return message;\n };\n /**\n * Creates a plain object from a ScopeLogs message. Also converts values to other types if specified.\n * @function toObject\n * @memberof opentelemetry.proto.logs.v1.ScopeLogs\n * @static\n * @param {opentelemetry.proto.logs.v1.ScopeLogs} message ScopeLogs\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n ScopeLogs.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n var object = {};\n if (options.arrays || options.defaults)\n object.logRecords = [];\n if (options.defaults) {\n object.scope = null;\n object.schemaUrl = \"\";\n }\n if (message.scope != null && message.hasOwnProperty(\"scope\"))\n object.scope = $root.opentelemetry.proto.common.v1.InstrumentationScope.toObject(message.scope, options);\n if (message.logRecords && message.logRecords.length) {\n object.logRecords = [];\n for (var j = 0; j < message.logRecords.length; ++j)\n object.logRecords[j] = $root.opentelemetry.proto.logs.v1.LogRecord.toObject(message.logRecords[j], options);\n }\n if (message.schemaUrl != null && message.hasOwnProperty(\"schemaUrl\"))\n object.schemaUrl = message.schemaUrl;\n return object;\n };\n /**\n * Converts this ScopeLogs to JSON.\n * @function toJSON\n * @memberof opentelemetry.proto.logs.v1.ScopeLogs\n * @instance\n * @returns {Object.} JSON object\n */\n ScopeLogs.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n /**\n * Gets the default type url for ScopeLogs\n * @function getTypeUrl\n * @memberof opentelemetry.proto.logs.v1.ScopeLogs\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n ScopeLogs.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = \"type.googleapis.com\";\n }\n return typeUrlPrefix + \"/opentelemetry.proto.logs.v1.ScopeLogs\";\n };\n return ScopeLogs;\n })();\n /**\n * SeverityNumber enum.\n * @name opentelemetry.proto.logs.v1.SeverityNumber\n * @enum {number}\n * @property {number} SEVERITY_NUMBER_UNSPECIFIED=0 SEVERITY_NUMBER_UNSPECIFIED value\n * @property {number} SEVERITY_NUMBER_TRACE=1 SEVERITY_NUMBER_TRACE value\n * @property {number} SEVERITY_NUMBER_TRACE2=2 SEVERITY_NUMBER_TRACE2 value\n * @property {number} SEVERITY_NUMBER_TRACE3=3 SEVERITY_NUMBER_TRACE3 value\n * @property {number} SEVERITY_NUMBER_TRACE4=4 SEVERITY_NUMBER_TRACE4 value\n * @property {number} SEVERITY_NUMBER_DEBUG=5 SEVERITY_NUMBER_DEBUG value\n * @property {number} SEVERITY_NUMBER_DEBUG2=6 SEVERITY_NUMBER_DEBUG2 value\n * @property {number} SEVERITY_NUMBER_DEBUG3=7 SEVERITY_NUMBER_DEBUG3 value\n * @property {number} SEVERITY_NUMBER_DEBUG4=8 SEVERITY_NUMBER_DEBUG4 value\n * @property {number} SEVERITY_NUMBER_INFO=9 SEVERITY_NUMBER_INFO value\n * @property {number} SEVERITY_NUMBER_INFO2=10 SEVERITY_NUMBER_INFO2 value\n * @property {number} SEVERITY_NUMBER_INFO3=11 SEVERITY_NUMBER_INFO3 value\n * @property {number} SEVERITY_NUMBER_INFO4=12 SEVERITY_NUMBER_INFO4 value\n * @property {number} SEVERITY_NUMBER_WARN=13 SEVERITY_NUMBER_WARN value\n * @property {number} SEVERITY_NUMBER_WARN2=14 SEVERITY_NUMBER_WARN2 value\n * @property {number} SEVERITY_NUMBER_WARN3=15 SEVERITY_NUMBER_WARN3 value\n * @property {number} SEVERITY_NUMBER_WARN4=16 SEVERITY_NUMBER_WARN4 value\n * @property {number} SEVERITY_NUMBER_ERROR=17 SEVERITY_NUMBER_ERROR value\n * @property {number} SEVERITY_NUMBER_ERROR2=18 SEVERITY_NUMBER_ERROR2 value\n * @property {number} SEVERITY_NUMBER_ERROR3=19 SEVERITY_NUMBER_ERROR3 value\n * @property {number} SEVERITY_NUMBER_ERROR4=20 SEVERITY_NUMBER_ERROR4 value\n * @property {number} SEVERITY_NUMBER_FATAL=21 SEVERITY_NUMBER_FATAL value\n * @property {number} SEVERITY_NUMBER_FATAL2=22 SEVERITY_NUMBER_FATAL2 value\n * @property {number} SEVERITY_NUMBER_FATAL3=23 SEVERITY_NUMBER_FATAL3 value\n * @property {number} SEVERITY_NUMBER_FATAL4=24 SEVERITY_NUMBER_FATAL4 value\n */\n v1.SeverityNumber = (function () {\n var valuesById = {}, values = Object.create(valuesById);\n values[valuesById[0] = \"SEVERITY_NUMBER_UNSPECIFIED\"] = 0;\n values[valuesById[1] = \"SEVERITY_NUMBER_TRACE\"] = 1;\n values[valuesById[2] = \"SEVERITY_NUMBER_TRACE2\"] = 2;\n values[valuesById[3] = \"SEVERITY_NUMBER_TRACE3\"] = 3;\n values[valuesById[4] = \"SEVERITY_NUMBER_TRACE4\"] = 4;\n values[valuesById[5] = \"SEVERITY_NUMBER_DEBUG\"] = 5;\n values[valuesById[6] = \"SEVERITY_NUMBER_DEBUG2\"] = 6;\n values[valuesById[7] = \"SEVERITY_NUMBER_DEBUG3\"] = 7;\n values[valuesById[8] = \"SEVERITY_NUMBER_DEBUG4\"] = 8;\n values[valuesById[9] = \"SEVERITY_NUMBER_INFO\"] = 9;\n values[valuesById[10] = \"SEVERITY_NUMBER_INFO2\"] = 10;\n values[valuesById[11] = \"SEVERITY_NUMBER_INFO3\"] = 11;\n values[valuesById[12] = \"SEVERITY_NUMBER_INFO4\"] = 12;\n values[valuesById[13] = \"SEVERITY_NUMBER_WARN\"] = 13;\n values[valuesById[14] = \"SEVERITY_NUMBER_WARN2\"] = 14;\n values[valuesById[15] = \"SEVERITY_NUMBER_WARN3\"] = 15;\n values[valuesById[16] = \"SEVERITY_NUMBER_WARN4\"] = 16;\n values[valuesById[17] = \"SEVERITY_NUMBER_ERROR\"] = 17;\n values[valuesById[18] = \"SEVERITY_NUMBER_ERROR2\"] = 18;\n values[valuesById[19] = \"SEVERITY_NUMBER_ERROR3\"] = 19;\n values[valuesById[20] = \"SEVERITY_NUMBER_ERROR4\"] = 20;\n values[valuesById[21] = \"SEVERITY_NUMBER_FATAL\"] = 21;\n values[valuesById[22] = \"SEVERITY_NUMBER_FATAL2\"] = 22;\n values[valuesById[23] = \"SEVERITY_NUMBER_FATAL3\"] = 23;\n values[valuesById[24] = \"SEVERITY_NUMBER_FATAL4\"] = 24;\n return values;\n })();\n /**\n * LogRecordFlags enum.\n * @name opentelemetry.proto.logs.v1.LogRecordFlags\n * @enum {number}\n * @property {number} LOG_RECORD_FLAGS_DO_NOT_USE=0 LOG_RECORD_FLAGS_DO_NOT_USE value\n * @property {number} LOG_RECORD_FLAGS_TRACE_FLAGS_MASK=255 LOG_RECORD_FLAGS_TRACE_FLAGS_MASK value\n */\n v1.LogRecordFlags = (function () {\n var valuesById = {}, values = Object.create(valuesById);\n values[valuesById[0] = \"LOG_RECORD_FLAGS_DO_NOT_USE\"] = 0;\n values[valuesById[255] = \"LOG_RECORD_FLAGS_TRACE_FLAGS_MASK\"] = 255;\n return values;\n })();\n v1.LogRecord = (function () {\n /**\n * Properties of a LogRecord.\n * @memberof opentelemetry.proto.logs.v1\n * @interface ILogRecord\n * @property {number|Long|null} [timeUnixNano] LogRecord timeUnixNano\n * @property {number|Long|null} [observedTimeUnixNano] LogRecord observedTimeUnixNano\n * @property {opentelemetry.proto.logs.v1.SeverityNumber|null} [severityNumber] LogRecord severityNumber\n * @property {string|null} [severityText] LogRecord severityText\n * @property {opentelemetry.proto.common.v1.IAnyValue|null} [body] LogRecord body\n * @property {Array.|null} [attributes] LogRecord attributes\n * @property {number|null} [droppedAttributesCount] LogRecord droppedAttributesCount\n * @property {number|null} [flags] LogRecord flags\n * @property {Uint8Array|null} [traceId] LogRecord traceId\n * @property {Uint8Array|null} [spanId] LogRecord spanId\n */\n /**\n * Constructs a new LogRecord.\n * @memberof opentelemetry.proto.logs.v1\n * @classdesc Represents a LogRecord.\n * @implements ILogRecord\n * @constructor\n * @param {opentelemetry.proto.logs.v1.ILogRecord=} [properties] Properties to set\n */\n function LogRecord(properties) {\n this.attributes = [];\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n /**\n * LogRecord timeUnixNano.\n * @member {number|Long|null|undefined} timeUnixNano\n * @memberof opentelemetry.proto.logs.v1.LogRecord\n * @instance\n */\n LogRecord.prototype.timeUnixNano = null;\n /**\n * LogRecord observedTimeUnixNano.\n * @member {number|Long|null|undefined} observedTimeUnixNano\n * @memberof opentelemetry.proto.logs.v1.LogRecord\n * @instance\n */\n LogRecord.prototype.observedTimeUnixNano = null;\n /**\n * LogRecord severityNumber.\n * @member {opentelemetry.proto.logs.v1.SeverityNumber|null|undefined} severityNumber\n * @memberof opentelemetry.proto.logs.v1.LogRecord\n * @instance\n */\n LogRecord.prototype.severityNumber = null;\n /**\n * LogRecord severityText.\n * @member {string|null|undefined} severityText\n * @memberof opentelemetry.proto.logs.v1.LogRecord\n * @instance\n */\n LogRecord.prototype.severityText = null;\n /**\n * LogRecord body.\n * @member {opentelemetry.proto.common.v1.IAnyValue|null|undefined} body\n * @memberof opentelemetry.proto.logs.v1.LogRecord\n * @instance\n */\n LogRecord.prototype.body = null;\n /**\n * LogRecord attributes.\n * @member {Array.} attributes\n * @memberof opentelemetry.proto.logs.v1.LogRecord\n * @instance\n */\n LogRecord.prototype.attributes = $util.emptyArray;\n /**\n * LogRecord droppedAttributesCount.\n * @member {number|null|undefined} droppedAttributesCount\n * @memberof opentelemetry.proto.logs.v1.LogRecord\n * @instance\n */\n LogRecord.prototype.droppedAttributesCount = null;\n /**\n * LogRecord flags.\n * @member {number|null|undefined} flags\n * @memberof opentelemetry.proto.logs.v1.LogRecord\n * @instance\n */\n LogRecord.prototype.flags = null;\n /**\n * LogRecord traceId.\n * @member {Uint8Array|null|undefined} traceId\n * @memberof opentelemetry.proto.logs.v1.LogRecord\n * @instance\n */\n LogRecord.prototype.traceId = null;\n /**\n * LogRecord spanId.\n * @member {Uint8Array|null|undefined} spanId\n * @memberof opentelemetry.proto.logs.v1.LogRecord\n * @instance\n */\n LogRecord.prototype.spanId = null;\n /**\n * Creates a new LogRecord instance using the specified properties.\n * @function create\n * @memberof opentelemetry.proto.logs.v1.LogRecord\n * @static\n * @param {opentelemetry.proto.logs.v1.ILogRecord=} [properties] Properties to set\n * @returns {opentelemetry.proto.logs.v1.LogRecord} LogRecord instance\n */\n LogRecord.create = function create(properties) {\n return new LogRecord(properties);\n };\n /**\n * Encodes the specified LogRecord message. Does not implicitly {@link opentelemetry.proto.logs.v1.LogRecord.verify|verify} messages.\n * @function encode\n * @memberof opentelemetry.proto.logs.v1.LogRecord\n * @static\n * @param {opentelemetry.proto.logs.v1.ILogRecord} message LogRecord message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n LogRecord.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.timeUnixNano != null && Object.hasOwnProperty.call(message, \"timeUnixNano\"))\n writer.uint32(/* id 1, wireType 1 =*/ 9).fixed64(message.timeUnixNano);\n if (message.severityNumber != null && Object.hasOwnProperty.call(message, \"severityNumber\"))\n writer.uint32(/* id 2, wireType 0 =*/ 16).int32(message.severityNumber);\n if (message.severityText != null && Object.hasOwnProperty.call(message, \"severityText\"))\n writer.uint32(/* id 3, wireType 2 =*/ 26).string(message.severityText);\n if (message.body != null && Object.hasOwnProperty.call(message, \"body\"))\n $root.opentelemetry.proto.common.v1.AnyValue.encode(message.body, writer.uint32(/* id 5, wireType 2 =*/ 42).fork()).ldelim();\n if (message.attributes != null && message.attributes.length)\n for (var i = 0; i < message.attributes.length; ++i)\n $root.opentelemetry.proto.common.v1.KeyValue.encode(message.attributes[i], writer.uint32(/* id 6, wireType 2 =*/ 50).fork()).ldelim();\n if (message.droppedAttributesCount != null && Object.hasOwnProperty.call(message, \"droppedAttributesCount\"))\n writer.uint32(/* id 7, wireType 0 =*/ 56).uint32(message.droppedAttributesCount);\n if (message.flags != null && Object.hasOwnProperty.call(message, \"flags\"))\n writer.uint32(/* id 8, wireType 5 =*/ 69).fixed32(message.flags);\n if (message.traceId != null && Object.hasOwnProperty.call(message, \"traceId\"))\n writer.uint32(/* id 9, wireType 2 =*/ 74).bytes(message.traceId);\n if (message.spanId != null && Object.hasOwnProperty.call(message, \"spanId\"))\n writer.uint32(/* id 10, wireType 2 =*/ 82).bytes(message.spanId);\n if (message.observedTimeUnixNano != null && Object.hasOwnProperty.call(message, \"observedTimeUnixNano\"))\n writer.uint32(/* id 11, wireType 1 =*/ 89).fixed64(message.observedTimeUnixNano);\n return writer;\n };\n /**\n * Encodes the specified LogRecord message, length delimited. Does not implicitly {@link opentelemetry.proto.logs.v1.LogRecord.verify|verify} messages.\n * @function encodeDelimited\n * @memberof opentelemetry.proto.logs.v1.LogRecord\n * @static\n * @param {opentelemetry.proto.logs.v1.ILogRecord} message LogRecord message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n LogRecord.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n /**\n * Decodes a LogRecord message from the specified reader or buffer.\n * @function decode\n * @memberof opentelemetry.proto.logs.v1.LogRecord\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {opentelemetry.proto.logs.v1.LogRecord} LogRecord\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n LogRecord.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.opentelemetry.proto.logs.v1.LogRecord();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n message.timeUnixNano = reader.fixed64();\n break;\n }\n case 11: {\n message.observedTimeUnixNano = reader.fixed64();\n break;\n }\n case 2: {\n message.severityNumber = reader.int32();\n break;\n }\n case 3: {\n message.severityText = reader.string();\n break;\n }\n case 5: {\n message.body = $root.opentelemetry.proto.common.v1.AnyValue.decode(reader, reader.uint32());\n break;\n }\n case 6: {\n if (!(message.attributes && message.attributes.length))\n message.attributes = [];\n message.attributes.push($root.opentelemetry.proto.common.v1.KeyValue.decode(reader, reader.uint32()));\n break;\n }\n case 7: {\n message.droppedAttributesCount = reader.uint32();\n break;\n }\n case 8: {\n message.flags = reader.fixed32();\n break;\n }\n case 9: {\n message.traceId = reader.bytes();\n break;\n }\n case 10: {\n message.spanId = reader.bytes();\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n /**\n * Decodes a LogRecord message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof opentelemetry.proto.logs.v1.LogRecord\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {opentelemetry.proto.logs.v1.LogRecord} LogRecord\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n LogRecord.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n /**\n * Verifies a LogRecord message.\n * @function verify\n * @memberof opentelemetry.proto.logs.v1.LogRecord\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n LogRecord.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.timeUnixNano != null && message.hasOwnProperty(\"timeUnixNano\"))\n if (!$util.isInteger(message.timeUnixNano) && !(message.timeUnixNano && $util.isInteger(message.timeUnixNano.low) && $util.isInteger(message.timeUnixNano.high)))\n return \"timeUnixNano: integer|Long expected\";\n if (message.observedTimeUnixNano != null && message.hasOwnProperty(\"observedTimeUnixNano\"))\n if (!$util.isInteger(message.observedTimeUnixNano) && !(message.observedTimeUnixNano && $util.isInteger(message.observedTimeUnixNano.low) && $util.isInteger(message.observedTimeUnixNano.high)))\n return \"observedTimeUnixNano: integer|Long expected\";\n if (message.severityNumber != null && message.hasOwnProperty(\"severityNumber\"))\n switch (message.severityNumber) {\n default:\n return \"severityNumber: enum value expected\";\n case 0:\n case 1:\n case 2:\n case 3:\n case 4:\n case 5:\n case 6:\n case 7:\n case 8:\n case 9:\n case 10:\n case 11:\n case 12:\n case 13:\n case 14:\n case 15:\n case 16:\n case 17:\n case 18:\n case 19:\n case 20:\n case 21:\n case 22:\n case 23:\n case 24:\n break;\n }\n if (message.severityText != null && message.hasOwnProperty(\"severityText\"))\n if (!$util.isString(message.severityText))\n return \"severityText: string expected\";\n if (message.body != null && message.hasOwnProperty(\"body\")) {\n var error = $root.opentelemetry.proto.common.v1.AnyValue.verify(message.body);\n if (error)\n return \"body.\" + error;\n }\n if (message.attributes != null && message.hasOwnProperty(\"attributes\")) {\n if (!Array.isArray(message.attributes))\n return \"attributes: array expected\";\n for (var i = 0; i < message.attributes.length; ++i) {\n var error = $root.opentelemetry.proto.common.v1.KeyValue.verify(message.attributes[i]);\n if (error)\n return \"attributes.\" + error;\n }\n }\n if (message.droppedAttributesCount != null && message.hasOwnProperty(\"droppedAttributesCount\"))\n if (!$util.isInteger(message.droppedAttributesCount))\n return \"droppedAttributesCount: integer expected\";\n if (message.flags != null && message.hasOwnProperty(\"flags\"))\n if (!$util.isInteger(message.flags))\n return \"flags: integer expected\";\n if (message.traceId != null && message.hasOwnProperty(\"traceId\"))\n if (!(message.traceId && typeof message.traceId.length === \"number\" || $util.isString(message.traceId)))\n return \"traceId: buffer expected\";\n if (message.spanId != null && message.hasOwnProperty(\"spanId\"))\n if (!(message.spanId && typeof message.spanId.length === \"number\" || $util.isString(message.spanId)))\n return \"spanId: buffer expected\";\n return null;\n };\n /**\n * Creates a LogRecord message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof opentelemetry.proto.logs.v1.LogRecord\n * @static\n * @param {Object.} object Plain object\n * @returns {opentelemetry.proto.logs.v1.LogRecord} LogRecord\n */\n LogRecord.fromObject = function fromObject(object) {\n if (object instanceof $root.opentelemetry.proto.logs.v1.LogRecord)\n return object;\n var message = new $root.opentelemetry.proto.logs.v1.LogRecord();\n if (object.timeUnixNano != null)\n if ($util.Long)\n (message.timeUnixNano = $util.Long.fromValue(object.timeUnixNano)).unsigned = false;\n else if (typeof object.timeUnixNano === \"string\")\n message.timeUnixNano = parseInt(object.timeUnixNano, 10);\n else if (typeof object.timeUnixNano === \"number\")\n message.timeUnixNano = object.timeUnixNano;\n else if (typeof object.timeUnixNano === \"object\")\n message.timeUnixNano = new $util.LongBits(object.timeUnixNano.low >>> 0, object.timeUnixNano.high >>> 0).toNumber();\n if (object.observedTimeUnixNano != null)\n if ($util.Long)\n (message.observedTimeUnixNano = $util.Long.fromValue(object.observedTimeUnixNano)).unsigned = false;\n else if (typeof object.observedTimeUnixNano === \"string\")\n message.observedTimeUnixNano = parseInt(object.observedTimeUnixNano, 10);\n else if (typeof object.observedTimeUnixNano === \"number\")\n message.observedTimeUnixNano = object.observedTimeUnixNano;\n else if (typeof object.observedTimeUnixNano === \"object\")\n message.observedTimeUnixNano = new $util.LongBits(object.observedTimeUnixNano.low >>> 0, object.observedTimeUnixNano.high >>> 0).toNumber();\n switch (object.severityNumber) {\n default:\n if (typeof object.severityNumber === \"number\") {\n message.severityNumber = object.severityNumber;\n break;\n }\n break;\n case \"SEVERITY_NUMBER_UNSPECIFIED\":\n case 0:\n message.severityNumber = 0;\n break;\n case \"SEVERITY_NUMBER_TRACE\":\n case 1:\n message.severityNumber = 1;\n break;\n case \"SEVERITY_NUMBER_TRACE2\":\n case 2:\n message.severityNumber = 2;\n break;\n case \"SEVERITY_NUMBER_TRACE3\":\n case 3:\n message.severityNumber = 3;\n break;\n case \"SEVERITY_NUMBER_TRACE4\":\n case 4:\n message.severityNumber = 4;\n break;\n case \"SEVERITY_NUMBER_DEBUG\":\n case 5:\n message.severityNumber = 5;\n break;\n case \"SEVERITY_NUMBER_DEBUG2\":\n case 6:\n message.severityNumber = 6;\n break;\n case \"SEVERITY_NUMBER_DEBUG3\":\n case 7:\n message.severityNumber = 7;\n break;\n case \"SEVERITY_NUMBER_DEBUG4\":\n case 8:\n message.severityNumber = 8;\n break;\n case \"SEVERITY_NUMBER_INFO\":\n case 9:\n message.severityNumber = 9;\n break;\n case \"SEVERITY_NUMBER_INFO2\":\n case 10:\n message.severityNumber = 10;\n break;\n case \"SEVERITY_NUMBER_INFO3\":\n case 11:\n message.severityNumber = 11;\n break;\n case \"SEVERITY_NUMBER_INFO4\":\n case 12:\n message.severityNumber = 12;\n break;\n case \"SEVERITY_NUMBER_WARN\":\n case 13:\n message.severityNumber = 13;\n break;\n case \"SEVERITY_NUMBER_WARN2\":\n case 14:\n message.severityNumber = 14;\n break;\n case \"SEVERITY_NUMBER_WARN3\":\n case 15:\n message.severityNumber = 15;\n break;\n case \"SEVERITY_NUMBER_WARN4\":\n case 16:\n message.severityNumber = 16;\n break;\n case \"SEVERITY_NUMBER_ERROR\":\n case 17:\n message.severityNumber = 17;\n break;\n case \"SEVERITY_NUMBER_ERROR2\":\n case 18:\n message.severityNumber = 18;\n break;\n case \"SEVERITY_NUMBER_ERROR3\":\n case 19:\n message.severityNumber = 19;\n break;\n case \"SEVERITY_NUMBER_ERROR4\":\n case 20:\n message.severityNumber = 20;\n break;\n case \"SEVERITY_NUMBER_FATAL\":\n case 21:\n message.severityNumber = 21;\n break;\n case \"SEVERITY_NUMBER_FATAL2\":\n case 22:\n message.severityNumber = 22;\n break;\n case \"SEVERITY_NUMBER_FATAL3\":\n case 23:\n message.severityNumber = 23;\n break;\n case \"SEVERITY_NUMBER_FATAL4\":\n case 24:\n message.severityNumber = 24;\n break;\n }\n if (object.severityText != null)\n message.severityText = String(object.severityText);\n if (object.body != null) {\n if (typeof object.body !== \"object\")\n throw TypeError(\".opentelemetry.proto.logs.v1.LogRecord.body: object expected\");\n message.body = $root.opentelemetry.proto.common.v1.AnyValue.fromObject(object.body);\n }\n if (object.attributes) {\n if (!Array.isArray(object.attributes))\n throw TypeError(\".opentelemetry.proto.logs.v1.LogRecord.attributes: array expected\");\n message.attributes = [];\n for (var i = 0; i < object.attributes.length; ++i) {\n if (typeof object.attributes[i] !== \"object\")\n throw TypeError(\".opentelemetry.proto.logs.v1.LogRecord.attributes: object expected\");\n message.attributes[i] = $root.opentelemetry.proto.common.v1.KeyValue.fromObject(object.attributes[i]);\n }\n }\n if (object.droppedAttributesCount != null)\n message.droppedAttributesCount = object.droppedAttributesCount >>> 0;\n if (object.flags != null)\n message.flags = object.flags >>> 0;\n if (object.traceId != null)\n if (typeof object.traceId === \"string\")\n $util.base64.decode(object.traceId, message.traceId = $util.newBuffer($util.base64.length(object.traceId)), 0);\n else if (object.traceId.length >= 0)\n message.traceId = object.traceId;\n if (object.spanId != null)\n if (typeof object.spanId === \"string\")\n $util.base64.decode(object.spanId, message.spanId = $util.newBuffer($util.base64.length(object.spanId)), 0);\n else if (object.spanId.length >= 0)\n message.spanId = object.spanId;\n return message;\n };\n /**\n * Creates a plain object from a LogRecord message. Also converts values to other types if specified.\n * @function toObject\n * @memberof opentelemetry.proto.logs.v1.LogRecord\n * @static\n * @param {opentelemetry.proto.logs.v1.LogRecord} message LogRecord\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n LogRecord.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n var object = {};\n if (options.arrays || options.defaults)\n object.attributes = [];\n if (options.defaults) {\n if ($util.Long) {\n var long = new $util.Long(0, 0, false);\n object.timeUnixNano = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n }\n else\n object.timeUnixNano = options.longs === String ? \"0\" : 0;\n object.severityNumber = options.enums === String ? \"SEVERITY_NUMBER_UNSPECIFIED\" : 0;\n object.severityText = \"\";\n object.body = null;\n object.droppedAttributesCount = 0;\n object.flags = 0;\n if (options.bytes === String)\n object.traceId = \"\";\n else {\n object.traceId = [];\n if (options.bytes !== Array)\n object.traceId = $util.newBuffer(object.traceId);\n }\n if (options.bytes === String)\n object.spanId = \"\";\n else {\n object.spanId = [];\n if (options.bytes !== Array)\n object.spanId = $util.newBuffer(object.spanId);\n }\n if ($util.Long) {\n var long = new $util.Long(0, 0, false);\n object.observedTimeUnixNano = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n }\n else\n object.observedTimeUnixNano = options.longs === String ? \"0\" : 0;\n }\n if (message.timeUnixNano != null && message.hasOwnProperty(\"timeUnixNano\"))\n if (typeof message.timeUnixNano === \"number\")\n object.timeUnixNano = options.longs === String ? String(message.timeUnixNano) : message.timeUnixNano;\n else\n object.timeUnixNano = options.longs === String ? $util.Long.prototype.toString.call(message.timeUnixNano) : options.longs === Number ? new $util.LongBits(message.timeUnixNano.low >>> 0, message.timeUnixNano.high >>> 0).toNumber() : message.timeUnixNano;\n if (message.severityNumber != null && message.hasOwnProperty(\"severityNumber\"))\n object.severityNumber = options.enums === String ? $root.opentelemetry.proto.logs.v1.SeverityNumber[message.severityNumber] === undefined ? message.severityNumber : $root.opentelemetry.proto.logs.v1.SeverityNumber[message.severityNumber] : message.severityNumber;\n if (message.severityText != null && message.hasOwnProperty(\"severityText\"))\n object.severityText = message.severityText;\n if (message.body != null && message.hasOwnProperty(\"body\"))\n object.body = $root.opentelemetry.proto.common.v1.AnyValue.toObject(message.body, options);\n if (message.attributes && message.attributes.length) {\n object.attributes = [];\n for (var j = 0; j < message.attributes.length; ++j)\n object.attributes[j] = $root.opentelemetry.proto.common.v1.KeyValue.toObject(message.attributes[j], options);\n }\n if (message.droppedAttributesCount != null && message.hasOwnProperty(\"droppedAttributesCount\"))\n object.droppedAttributesCount = message.droppedAttributesCount;\n if (message.flags != null && message.hasOwnProperty(\"flags\"))\n object.flags = message.flags;\n if (message.traceId != null && message.hasOwnProperty(\"traceId\"))\n object.traceId = options.bytes === String ? $util.base64.encode(message.traceId, 0, message.traceId.length) : options.bytes === Array ? Array.prototype.slice.call(message.traceId) : message.traceId;\n if (message.spanId != null && message.hasOwnProperty(\"spanId\"))\n object.spanId = options.bytes === String ? $util.base64.encode(message.spanId, 0, message.spanId.length) : options.bytes === Array ? Array.prototype.slice.call(message.spanId) : message.spanId;\n if (message.observedTimeUnixNano != null && message.hasOwnProperty(\"observedTimeUnixNano\"))\n if (typeof message.observedTimeUnixNano === \"number\")\n object.observedTimeUnixNano = options.longs === String ? String(message.observedTimeUnixNano) : message.observedTimeUnixNano;\n else\n object.observedTimeUnixNano = options.longs === String ? $util.Long.prototype.toString.call(message.observedTimeUnixNano) : options.longs === Number ? new $util.LongBits(message.observedTimeUnixNano.low >>> 0, message.observedTimeUnixNano.high >>> 0).toNumber() : message.observedTimeUnixNano;\n return object;\n };\n /**\n * Converts this LogRecord to JSON.\n * @function toJSON\n * @memberof opentelemetry.proto.logs.v1.LogRecord\n * @instance\n * @returns {Object.} JSON object\n */\n LogRecord.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n /**\n * Gets the default type url for LogRecord\n * @function getTypeUrl\n * @memberof opentelemetry.proto.logs.v1.LogRecord\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n LogRecord.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = \"type.googleapis.com\";\n }\n return typeUrlPrefix + \"/opentelemetry.proto.logs.v1.LogRecord\";\n };\n return LogRecord;\n })();\n return v1;\n })();\n return logs;\n })();\n return proto;\n })();\n return opentelemetry;\n})();\nmodule.exports = $root;\n//# sourceMappingURL=root.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n__exportStar(require(\"./platform\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.OTLPProtoExporterBrowserBase = void 0;\nconst api_1 = require(\"@opentelemetry/api\");\nconst otlp_exporter_base_1 = require(\"@opentelemetry/otlp-exporter-base\");\nconst util_1 = require(\"../util\");\n/**\n * Collector Exporter abstract base class\n */\nclass OTLPProtoExporterBrowserBase extends otlp_exporter_base_1.OTLPExporterBrowserBase {\n constructor(config = {}) {\n super(config);\n }\n send(objects, onSuccess, onError) {\n if (this._shutdownOnce.isCalled) {\n api_1.diag.debug('Shutdown already started. Cannot send objects');\n return;\n }\n const serviceRequest = this.convert(objects);\n const exportRequestType = (0, util_1.getExportRequestProto)(this.getServiceClientType());\n const message = exportRequestType.create(serviceRequest);\n if (message) {\n const body = exportRequestType.encode(message).finish();\n if (body) {\n (0, otlp_exporter_base_1.sendWithXhr)(new Blob([body], { type: 'application/x-protobuf' }), this.url, Object.assign(Object.assign({}, this._headers), { 'Content-Type': 'application/x-protobuf', Accept: 'application/x-protobuf' }), this.timeoutMillis, onSuccess, onError);\n }\n }\n else {\n onError(new otlp_exporter_base_1.OTLPExporterError('No proto'));\n }\n }\n}\nexports.OTLPProtoExporterBrowserBase = OTLPProtoExporterBrowserBase;\n//# sourceMappingURL=OTLPProtoExporterBrowserBase.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ServiceClientType = exports.OTLPProtoExporterBrowserBase = void 0;\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar OTLPProtoExporterBrowserBase_1 = require(\"./OTLPProtoExporterBrowserBase\");\nObject.defineProperty(exports, \"OTLPProtoExporterBrowserBase\", { enumerable: true, get: function () { return OTLPProtoExporterBrowserBase_1.OTLPProtoExporterBrowserBase; } });\nvar types_1 = require(\"../types\");\nObject.defineProperty(exports, \"ServiceClientType\", { enumerable: true, get: function () { return types_1.ServiceClientType; } });\n//# sourceMappingURL=index.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getExportRequestProto = exports.ServiceClientType = exports.OTLPProtoExporterBrowserBase = exports.send = exports.OTLPProtoExporterNodeBase = void 0;\nvar node_1 = require(\"./node\");\nObject.defineProperty(exports, \"OTLPProtoExporterNodeBase\", { enumerable: true, get: function () { return node_1.OTLPProtoExporterNodeBase; } });\nObject.defineProperty(exports, \"send\", { enumerable: true, get: function () { return node_1.send; } });\nvar browser_1 = require(\"./browser\");\nObject.defineProperty(exports, \"OTLPProtoExporterBrowserBase\", { enumerable: true, get: function () { return browser_1.OTLPProtoExporterBrowserBase; } });\nvar types_1 = require(\"./types\");\nObject.defineProperty(exports, \"ServiceClientType\", { enumerable: true, get: function () { return types_1.ServiceClientType; } });\nvar util_1 = require(\"./util\");\nObject.defineProperty(exports, \"getExportRequestProto\", { enumerable: true, get: function () { return util_1.getExportRequestProto; } });\n//# sourceMappingURL=index.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.OTLPProtoExporterNodeBase = void 0;\nconst api_1 = require(\"@opentelemetry/api\");\nconst otlp_exporter_base_1 = require(\"@opentelemetry/otlp-exporter-base\");\n/**\n * Collector Exporter abstract base class\n */\nclass OTLPProtoExporterNodeBase extends otlp_exporter_base_1.OTLPExporterNodeBase {\n constructor(config = {}) {\n super(config);\n }\n _sendPromise(objects, onSuccess, onError) {\n const promise = new Promise((resolve, reject) => {\n this._send(this, objects, this.compression, resolve, reject);\n }).then(onSuccess, onError);\n this._sendingPromises.push(promise);\n const popPromise = () => {\n const index = this._sendingPromises.indexOf(promise);\n this._sendingPromises.splice(index, 1);\n };\n promise.then(popPromise, popPromise);\n }\n send(objects, onSuccess, onError) {\n if (this._shutdownOnce.isCalled) {\n api_1.diag.debug('Shutdown already started. Cannot send objects');\n return;\n }\n if (!this._send) {\n // defer to next tick and lazy load to avoid loading protobufjs too early\n // and making this impossible to be instrumented\n setImmediate(() => {\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n const { send } = require('./util');\n this._send = send;\n this._sendPromise(objects, onSuccess, onError);\n });\n }\n else {\n this._sendPromise(objects, onSuccess, onError);\n }\n }\n}\nexports.OTLPProtoExporterNodeBase = OTLPProtoExporterNodeBase;\n//# sourceMappingURL=OTLPProtoExporterNodeBase.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.send = exports.OTLPProtoExporterNodeBase = void 0;\nvar OTLPProtoExporterNodeBase_1 = require(\"./OTLPProtoExporterNodeBase\");\nObject.defineProperty(exports, \"OTLPProtoExporterNodeBase\", { enumerable: true, get: function () { return OTLPProtoExporterNodeBase_1.OTLPProtoExporterNodeBase; } });\nvar util_1 = require(\"./util\");\nObject.defineProperty(exports, \"send\", { enumerable: true, get: function () { return util_1.send; } });\n//# sourceMappingURL=index.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.send = void 0;\nconst otlp_exporter_base_1 = require(\"@opentelemetry/otlp-exporter-base\");\nconst util_1 = require(\"../util\");\nfunction send(collector, objects, compression, onSuccess, onError) {\n const serviceRequest = collector.convert(objects);\n const exportRequestType = (0, util_1.getExportRequestProto)(collector.getServiceClientType());\n const message = exportRequestType.create(serviceRequest);\n if (message) {\n const body = exportRequestType.encode(message).finish();\n if (body) {\n (0, otlp_exporter_base_1.sendWithHttp)(collector, Buffer.from(body), 'application/x-protobuf', onSuccess, onError);\n }\n }\n else {\n onError(new otlp_exporter_base_1.OTLPExporterError('No proto'));\n }\n}\nexports.send = send;\n//# sourceMappingURL=util.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ServiceClientType = void 0;\nvar ServiceClientType;\n(function (ServiceClientType) {\n ServiceClientType[ServiceClientType[\"SPANS\"] = 0] = \"SPANS\";\n ServiceClientType[ServiceClientType[\"METRICS\"] = 1] = \"METRICS\";\n ServiceClientType[ServiceClientType[\"LOGS\"] = 2] = \"LOGS\";\n})(ServiceClientType = exports.ServiceClientType || (exports.ServiceClientType = {}));\n//# sourceMappingURL=types.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getExportRequestProto = void 0;\nconst root = require(\"../generated/root\");\nconst types_1 = require(\"./types\");\nfunction getExportRequestProto(clientType) {\n if (clientType === types_1.ServiceClientType.SPANS) {\n return root.opentelemetry.proto.collector.trace.v1\n .ExportTraceServiceRequest;\n }\n else if (clientType === types_1.ServiceClientType.LOGS) {\n return root.opentelemetry.proto.collector.logs.v1\n .ExportLogsServiceRequest;\n }\n else {\n return root.opentelemetry.proto.collector.metrics.v1\n .ExportMetricsServiceRequest;\n }\n}\nexports.getExportRequestProto = getExportRequestProto;\n//# sourceMappingURL=util.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getOtlpEncoder = exports.encodeAsString = exports.encodeAsLongBits = exports.toLongBits = exports.hrTimeToNanos = void 0;\nconst core_1 = require(\"@opentelemetry/core\");\nfunction hrTimeToNanos(hrTime) {\n const NANOSECONDS = BigInt(1000000000);\n return BigInt(hrTime[0]) * NANOSECONDS + BigInt(hrTime[1]);\n}\nexports.hrTimeToNanos = hrTimeToNanos;\nfunction toLongBits(value) {\n const low = Number(BigInt.asUintN(32, value));\n const high = Number(BigInt.asUintN(32, value >> BigInt(32)));\n return { low, high };\n}\nexports.toLongBits = toLongBits;\nfunction encodeAsLongBits(hrTime) {\n const nanos = hrTimeToNanos(hrTime);\n return toLongBits(nanos);\n}\nexports.encodeAsLongBits = encodeAsLongBits;\nfunction encodeAsString(hrTime) {\n const nanos = hrTimeToNanos(hrTime);\n return nanos.toString();\n}\nexports.encodeAsString = encodeAsString;\nconst encodeTimestamp = typeof BigInt !== 'undefined' ? encodeAsString : core_1.hrTimeToNanoseconds;\nfunction identity(value) {\n return value;\n}\nfunction optionalHexToBinary(str) {\n if (str === undefined)\n return undefined;\n return (0, core_1.hexToBinary)(str);\n}\nconst DEFAULT_ENCODER = {\n encodeHrTime: encodeAsLongBits,\n encodeSpanContext: core_1.hexToBinary,\n encodeOptionalSpanContext: optionalHexToBinary,\n};\nfunction getOtlpEncoder(options) {\n var _a, _b;\n if (options === undefined) {\n return DEFAULT_ENCODER;\n }\n const useLongBits = (_a = options.useLongBits) !== null && _a !== void 0 ? _a : true;\n const useHex = (_b = options.useHex) !== null && _b !== void 0 ? _b : false;\n return {\n encodeHrTime: useLongBits ? encodeAsLongBits : encodeTimestamp,\n encodeSpanContext: useHex ? identity : core_1.hexToBinary,\n encodeOptionalSpanContext: useHex ? identity : optionalHexToBinary,\n };\n}\nexports.getOtlpEncoder = getOtlpEncoder;\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.toAnyValue = exports.toKeyValue = exports.toAttributes = exports.createInstrumentationScope = void 0;\nfunction createInstrumentationScope(scope) {\n return {\n name: scope.name,\n version: scope.version,\n };\n}\nexports.createInstrumentationScope = createInstrumentationScope;\nfunction toAttributes(attributes) {\n return Object.keys(attributes).map(key => toKeyValue(key, attributes[key]));\n}\nexports.toAttributes = toAttributes;\nfunction toKeyValue(key, value) {\n return {\n key: key,\n value: toAnyValue(value),\n };\n}\nexports.toKeyValue = toKeyValue;\nfunction toAnyValue(value) {\n const t = typeof value;\n if (t === 'string')\n return { stringValue: value };\n if (t === 'number') {\n if (!Number.isInteger(value))\n return { doubleValue: value };\n return { intValue: value };\n }\n if (t === 'boolean')\n return { boolValue: value };\n if (value instanceof Uint8Array)\n return { bytesValue: value };\n if (Array.isArray(value))\n return { arrayValue: { values: value.map(toAnyValue) } };\n if (t === 'object' && value != null)\n return {\n kvlistValue: {\n values: Object.entries(value).map(([k, v]) => toKeyValue(k, v)),\n },\n };\n return {};\n}\nexports.toAnyValue = toAnyValue;\n//# sourceMappingURL=internal.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=types.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createExportLogsServiceRequest = exports.createExportMetricsServiceRequest = exports.createExportTraceServiceRequest = void 0;\n__exportStar(require(\"./common/types\"), exports);\n__exportStar(require(\"./common\"), exports);\n__exportStar(require(\"./metrics/types\"), exports);\n__exportStar(require(\"./resource/types\"), exports);\n__exportStar(require(\"./trace/types\"), exports);\n__exportStar(require(\"./logs/types\"), exports);\nvar trace_1 = require(\"./trace\");\nObject.defineProperty(exports, \"createExportTraceServiceRequest\", { enumerable: true, get: function () { return trace_1.createExportTraceServiceRequest; } });\nvar metrics_1 = require(\"./metrics\");\nObject.defineProperty(exports, \"createExportMetricsServiceRequest\", { enumerable: true, get: function () { return metrics_1.createExportMetricsServiceRequest; } });\nvar logs_1 = require(\"./logs\");\nObject.defineProperty(exports, \"createExportLogsServiceRequest\", { enumerable: true, get: function () { return logs_1.createExportLogsServiceRequest; } });\n//# sourceMappingURL=index.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.toLogAttributes = exports.createExportLogsServiceRequest = void 0;\nconst common_1 = require(\"../common\");\nconst internal_1 = require(\"../common/internal\");\nconst internal_2 = require(\"../resource/internal\");\nfunction createExportLogsServiceRequest(logRecords, options) {\n const encoder = (0, common_1.getOtlpEncoder)(options);\n return {\n resourceLogs: logRecordsToResourceLogs(logRecords, encoder),\n };\n}\nexports.createExportLogsServiceRequest = createExportLogsServiceRequest;\nfunction createResourceMap(logRecords) {\n const resourceMap = new Map();\n for (const record of logRecords) {\n const { resource, instrumentationScope: { name, version = '', schemaUrl = '' }, } = record;\n let ismMap = resourceMap.get(resource);\n if (!ismMap) {\n ismMap = new Map();\n resourceMap.set(resource, ismMap);\n }\n const ismKey = `${name}@${version}:${schemaUrl}`;\n let records = ismMap.get(ismKey);\n if (!records) {\n records = [];\n ismMap.set(ismKey, records);\n }\n records.push(record);\n }\n return resourceMap;\n}\nfunction logRecordsToResourceLogs(logRecords, encoder) {\n const resourceMap = createResourceMap(logRecords);\n return Array.from(resourceMap, ([resource, ismMap]) => ({\n resource: (0, internal_2.createResource)(resource),\n scopeLogs: Array.from(ismMap, ([, scopeLogs]) => {\n return {\n scope: (0, internal_1.createInstrumentationScope)(scopeLogs[0].instrumentationScope),\n logRecords: scopeLogs.map(log => toLogRecord(log, encoder)),\n schemaUrl: scopeLogs[0].instrumentationScope.schemaUrl,\n };\n }),\n schemaUrl: undefined,\n }));\n}\nfunction toLogRecord(log, encoder) {\n var _a, _b, _c;\n return {\n timeUnixNano: encoder.encodeHrTime(log.hrTime),\n observedTimeUnixNano: encoder.encodeHrTime(log.hrTimeObserved),\n severityNumber: toSeverityNumber(log.severityNumber),\n severityText: log.severityText,\n body: (0, internal_1.toAnyValue)(log.body),\n attributes: toLogAttributes(log.attributes),\n droppedAttributesCount: log.droppedAttributesCount,\n flags: (_a = log.spanContext) === null || _a === void 0 ? void 0 : _a.traceFlags,\n traceId: encoder.encodeOptionalSpanContext((_b = log.spanContext) === null || _b === void 0 ? void 0 : _b.traceId),\n spanId: encoder.encodeOptionalSpanContext((_c = log.spanContext) === null || _c === void 0 ? void 0 : _c.spanId),\n };\n}\nfunction toSeverityNumber(severityNumber) {\n return severityNumber;\n}\nfunction toLogAttributes(attributes) {\n return Object.keys(attributes).map(key => (0, internal_1.toKeyValue)(key, attributes[key]));\n}\nexports.toLogAttributes = toLogAttributes;\n//# sourceMappingURL=index.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=types.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createExportMetricsServiceRequest = void 0;\nconst internal_1 = require(\"./internal\");\nfunction createExportMetricsServiceRequest(resourceMetrics, options) {\n return {\n resourceMetrics: resourceMetrics.map(metrics => (0, internal_1.toResourceMetrics)(metrics, options)),\n };\n}\nexports.createExportMetricsServiceRequest = createExportMetricsServiceRequest;\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.toMetric = exports.toScopeMetrics = exports.toResourceMetrics = void 0;\nconst api_1 = require(\"@opentelemetry/api\");\nconst sdk_metrics_1 = require(\"@opentelemetry/sdk-metrics\");\nconst common_1 = require(\"../common\");\nconst internal_1 = require(\"../common/internal\");\nconst internal_2 = require(\"../resource/internal\");\nfunction toResourceMetrics(resourceMetrics, options) {\n const encoder = (0, common_1.getOtlpEncoder)(options);\n return {\n resource: (0, internal_2.createResource)(resourceMetrics.resource),\n schemaUrl: undefined,\n scopeMetrics: toScopeMetrics(resourceMetrics.scopeMetrics, encoder),\n };\n}\nexports.toResourceMetrics = toResourceMetrics;\nfunction toScopeMetrics(scopeMetrics, encoder) {\n return Array.from(scopeMetrics.map(metrics => ({\n scope: (0, internal_1.createInstrumentationScope)(metrics.scope),\n metrics: metrics.metrics.map(metricData => toMetric(metricData, encoder)),\n schemaUrl: metrics.scope.schemaUrl,\n })));\n}\nexports.toScopeMetrics = toScopeMetrics;\nfunction toMetric(metricData, encoder) {\n const out = {\n name: metricData.descriptor.name,\n description: metricData.descriptor.description,\n unit: metricData.descriptor.unit,\n };\n const aggregationTemporality = toAggregationTemporality(metricData.aggregationTemporality);\n switch (metricData.dataPointType) {\n case sdk_metrics_1.DataPointType.SUM:\n out.sum = {\n aggregationTemporality,\n isMonotonic: metricData.isMonotonic,\n dataPoints: toSingularDataPoints(metricData, encoder),\n };\n break;\n case sdk_metrics_1.DataPointType.GAUGE:\n out.gauge = {\n dataPoints: toSingularDataPoints(metricData, encoder),\n };\n break;\n case sdk_metrics_1.DataPointType.HISTOGRAM:\n out.histogram = {\n aggregationTemporality,\n dataPoints: toHistogramDataPoints(metricData, encoder),\n };\n break;\n case sdk_metrics_1.DataPointType.EXPONENTIAL_HISTOGRAM:\n out.exponentialHistogram = {\n aggregationTemporality,\n dataPoints: toExponentialHistogramDataPoints(metricData, encoder),\n };\n break;\n }\n return out;\n}\nexports.toMetric = toMetric;\nfunction toSingularDataPoint(dataPoint, valueType, encoder) {\n const out = {\n attributes: (0, internal_1.toAttributes)(dataPoint.attributes),\n startTimeUnixNano: encoder.encodeHrTime(dataPoint.startTime),\n timeUnixNano: encoder.encodeHrTime(dataPoint.endTime),\n };\n switch (valueType) {\n case api_1.ValueType.INT:\n out.asInt = dataPoint.value;\n break;\n case api_1.ValueType.DOUBLE:\n out.asDouble = dataPoint.value;\n break;\n }\n return out;\n}\nfunction toSingularDataPoints(metricData, encoder) {\n return metricData.dataPoints.map(dataPoint => {\n return toSingularDataPoint(dataPoint, metricData.descriptor.valueType, encoder);\n });\n}\nfunction toHistogramDataPoints(metricData, encoder) {\n return metricData.dataPoints.map(dataPoint => {\n const histogram = dataPoint.value;\n return {\n attributes: (0, internal_1.toAttributes)(dataPoint.attributes),\n bucketCounts: histogram.buckets.counts,\n explicitBounds: histogram.buckets.boundaries,\n count: histogram.count,\n sum: histogram.sum,\n min: histogram.min,\n max: histogram.max,\n startTimeUnixNano: encoder.encodeHrTime(dataPoint.startTime),\n timeUnixNano: encoder.encodeHrTime(dataPoint.endTime),\n };\n });\n}\nfunction toExponentialHistogramDataPoints(metricData, encoder) {\n return metricData.dataPoints.map(dataPoint => {\n const histogram = dataPoint.value;\n return {\n attributes: (0, internal_1.toAttributes)(dataPoint.attributes),\n count: histogram.count,\n min: histogram.min,\n max: histogram.max,\n sum: histogram.sum,\n positive: {\n offset: histogram.positive.offset,\n bucketCounts: histogram.positive.bucketCounts,\n },\n negative: {\n offset: histogram.negative.offset,\n bucketCounts: histogram.negative.bucketCounts,\n },\n scale: histogram.scale,\n zeroCount: histogram.zeroCount,\n startTimeUnixNano: encoder.encodeHrTime(dataPoint.startTime),\n timeUnixNano: encoder.encodeHrTime(dataPoint.endTime),\n };\n });\n}\nfunction toAggregationTemporality(temporality) {\n switch (temporality) {\n case sdk_metrics_1.AggregationTemporality.DELTA:\n return 1 /* AGGREGATION_TEMPORALITY_DELTA */;\n case sdk_metrics_1.AggregationTemporality.CUMULATIVE:\n return 2 /* AGGREGATION_TEMPORALITY_CUMULATIVE */;\n }\n}\n//# sourceMappingURL=internal.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=types.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createResource = void 0;\nconst internal_1 = require(\"../common/internal\");\nfunction createResource(resource) {\n return {\n attributes: (0, internal_1.toAttributes)(resource.attributes),\n droppedAttributesCount: 0,\n };\n}\nexports.createResource = createResource;\n//# sourceMappingURL=internal.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=types.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createExportTraceServiceRequest = void 0;\nconst internal_1 = require(\"./internal\");\nconst common_1 = require(\"../common\");\nconst internal_2 = require(\"../common/internal\");\nconst internal_3 = require(\"../resource/internal\");\nfunction createExportTraceServiceRequest(spans, options) {\n const encoder = (0, common_1.getOtlpEncoder)(options);\n return {\n resourceSpans: spanRecordsToResourceSpans(spans, encoder),\n };\n}\nexports.createExportTraceServiceRequest = createExportTraceServiceRequest;\nfunction createResourceMap(readableSpans) {\n const resourceMap = new Map();\n for (const record of readableSpans) {\n let ilmMap = resourceMap.get(record.resource);\n if (!ilmMap) {\n ilmMap = new Map();\n resourceMap.set(record.resource, ilmMap);\n }\n // TODO this is duplicated in basic tracer. Consolidate on a common helper in core\n const instrumentationLibraryKey = `${record.instrumentationLibrary.name}@${record.instrumentationLibrary.version || ''}:${record.instrumentationLibrary.schemaUrl || ''}`;\n let records = ilmMap.get(instrumentationLibraryKey);\n if (!records) {\n records = [];\n ilmMap.set(instrumentationLibraryKey, records);\n }\n records.push(record);\n }\n return resourceMap;\n}\nfunction spanRecordsToResourceSpans(readableSpans, encoder) {\n const resourceMap = createResourceMap(readableSpans);\n const out = [];\n const entryIterator = resourceMap.entries();\n let entry = entryIterator.next();\n while (!entry.done) {\n const [resource, ilmMap] = entry.value;\n const scopeResourceSpans = [];\n const ilmIterator = ilmMap.values();\n let ilmEntry = ilmIterator.next();\n while (!ilmEntry.done) {\n const scopeSpans = ilmEntry.value;\n if (scopeSpans.length > 0) {\n const spans = scopeSpans.map(readableSpan => (0, internal_1.sdkSpanToOtlpSpan)(readableSpan, encoder));\n scopeResourceSpans.push({\n scope: (0, internal_2.createInstrumentationScope)(scopeSpans[0].instrumentationLibrary),\n spans: spans,\n schemaUrl: scopeSpans[0].instrumentationLibrary.schemaUrl,\n });\n }\n ilmEntry = ilmIterator.next();\n }\n // TODO SDK types don't provide resource schema URL at this time\n const transformedSpans = {\n resource: (0, internal_3.createResource)(resource),\n scopeSpans: scopeResourceSpans,\n schemaUrl: undefined,\n };\n out.push(transformedSpans);\n entry = entryIterator.next();\n }\n return out;\n}\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.toOtlpSpanEvent = exports.toOtlpLink = exports.sdkSpanToOtlpSpan = void 0;\nconst internal_1 = require(\"../common/internal\");\nfunction sdkSpanToOtlpSpan(span, encoder) {\n var _a;\n const ctx = span.spanContext();\n const status = span.status;\n return {\n traceId: encoder.encodeSpanContext(ctx.traceId),\n spanId: encoder.encodeSpanContext(ctx.spanId),\n parentSpanId: encoder.encodeOptionalSpanContext(span.parentSpanId),\n traceState: (_a = ctx.traceState) === null || _a === void 0 ? void 0 : _a.serialize(),\n name: span.name,\n // Span kind is offset by 1 because the API does not define a value for unset\n kind: span.kind == null ? 0 : span.kind + 1,\n startTimeUnixNano: encoder.encodeHrTime(span.startTime),\n endTimeUnixNano: encoder.encodeHrTime(span.endTime),\n attributes: (0, internal_1.toAttributes)(span.attributes),\n droppedAttributesCount: span.droppedAttributesCount,\n events: span.events.map(event => toOtlpSpanEvent(event, encoder)),\n droppedEventsCount: span.droppedEventsCount,\n status: {\n // API and proto enums share the same values\n code: status.code,\n message: status.message,\n },\n links: span.links.map(link => toOtlpLink(link, encoder)),\n droppedLinksCount: span.droppedLinksCount,\n };\n}\nexports.sdkSpanToOtlpSpan = sdkSpanToOtlpSpan;\nfunction toOtlpLink(link, encoder) {\n var _a;\n return {\n attributes: link.attributes ? (0, internal_1.toAttributes)(link.attributes) : [],\n spanId: encoder.encodeSpanContext(link.context.spanId),\n traceId: encoder.encodeSpanContext(link.context.traceId),\n traceState: (_a = link.context.traceState) === null || _a === void 0 ? void 0 : _a.serialize(),\n droppedAttributesCount: link.droppedAttributesCount || 0,\n };\n}\nexports.toOtlpLink = toOtlpLink;\nfunction toOtlpSpanEvent(timedEvent, encoder) {\n return {\n attributes: timedEvent.attributes\n ? (0, internal_1.toAttributes)(timedEvent.attributes)\n : [],\n name: timedEvent.name,\n timeUnixNano: encoder.encodeHrTime(timedEvent.time),\n droppedAttributesCount: timedEvent.droppedAttributesCount || 0,\n };\n}\nexports.toOtlpSpanEvent = toOtlpSpanEvent;\n//# sourceMappingURL=internal.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ESpanKind = void 0;\n/**\n * SpanKind is the type of span. Can be used to specify additional relationships between spans\n * in addition to a parent/child relationship.\n */\nvar ESpanKind;\n(function (ESpanKind) {\n /** Unspecified. Do NOT use as default. Implementations MAY assume SpanKind to be INTERNAL when receiving UNSPECIFIED. */\n ESpanKind[ESpanKind[\"SPAN_KIND_UNSPECIFIED\"] = 0] = \"SPAN_KIND_UNSPECIFIED\";\n /** Indicates that the span represents an internal operation within an application,\n * as opposed to an operation happening at the boundaries. Default value.\n */\n ESpanKind[ESpanKind[\"SPAN_KIND_INTERNAL\"] = 1] = \"SPAN_KIND_INTERNAL\";\n /** Indicates that the span covers server-side handling of an RPC or other\n * remote network request.\n */\n ESpanKind[ESpanKind[\"SPAN_KIND_SERVER\"] = 2] = \"SPAN_KIND_SERVER\";\n /** Indicates that the span describes a request to some remote service.\n */\n ESpanKind[ESpanKind[\"SPAN_KIND_CLIENT\"] = 3] = \"SPAN_KIND_CLIENT\";\n /** Indicates that the span describes a producer sending a message to a broker.\n * Unlike CLIENT and SERVER, there is often no direct critical path latency relationship\n * between producer and consumer spans. A PRODUCER span ends when the message was accepted\n * by the broker while the logical processing of the message might span a much longer time.\n */\n ESpanKind[ESpanKind[\"SPAN_KIND_PRODUCER\"] = 4] = \"SPAN_KIND_PRODUCER\";\n /** Indicates that the span describes consumer receiving a message from a broker.\n * Like the PRODUCER kind, there is often no direct critical path latency relationship\n * between producer and consumer spans.\n */\n ESpanKind[ESpanKind[\"SPAN_KIND_CONSUMER\"] = 5] = \"SPAN_KIND_CONSUMER\";\n})(ESpanKind = exports.ESpanKind || (exports.ESpanKind = {}));\n//# sourceMappingURL=types.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Resource = void 0;\nconst api_1 = require(\"@opentelemetry/api\");\nconst semantic_conventions_1 = require(\"@opentelemetry/semantic-conventions\");\nconst core_1 = require(\"@opentelemetry/core\");\nconst platform_1 = require(\"./platform\");\n/**\n * A Resource describes the entity for which a signals (metrics or trace) are\n * collected.\n */\nclass Resource {\n constructor(\n /**\n * A dictionary of attributes with string keys and values that provide\n * information about the entity as numbers, strings or booleans\n * TODO: Consider to add check/validation on attributes.\n */\n attributes, asyncAttributesPromise) {\n var _a;\n this._attributes = attributes;\n this.asyncAttributesPending = asyncAttributesPromise != null;\n this._syncAttributes = (_a = this._attributes) !== null && _a !== void 0 ? _a : {};\n this._asyncAttributesPromise = asyncAttributesPromise === null || asyncAttributesPromise === void 0 ? void 0 : asyncAttributesPromise.then(asyncAttributes => {\n this._attributes = Object.assign({}, this._attributes, asyncAttributes);\n this.asyncAttributesPending = false;\n return asyncAttributes;\n }, err => {\n api_1.diag.debug(\"a resource's async attributes promise rejected: %s\", err);\n this.asyncAttributesPending = false;\n return {};\n });\n }\n /**\n * Returns an empty Resource\n */\n static empty() {\n return Resource.EMPTY;\n }\n /**\n * Returns a Resource that identifies the SDK in use.\n */\n static default() {\n return new Resource({\n [semantic_conventions_1.SEMRESATTRS_SERVICE_NAME]: (0, platform_1.defaultServiceName)(),\n [semantic_conventions_1.SEMRESATTRS_TELEMETRY_SDK_LANGUAGE]: core_1.SDK_INFO[semantic_conventions_1.SEMRESATTRS_TELEMETRY_SDK_LANGUAGE],\n [semantic_conventions_1.SEMRESATTRS_TELEMETRY_SDK_NAME]: core_1.SDK_INFO[semantic_conventions_1.SEMRESATTRS_TELEMETRY_SDK_NAME],\n [semantic_conventions_1.SEMRESATTRS_TELEMETRY_SDK_VERSION]: core_1.SDK_INFO[semantic_conventions_1.SEMRESATTRS_TELEMETRY_SDK_VERSION],\n });\n }\n get attributes() {\n var _a;\n if (this.asyncAttributesPending) {\n api_1.diag.error('Accessing resource attributes before async attributes settled');\n }\n return (_a = this._attributes) !== null && _a !== void 0 ? _a : {};\n }\n /**\n * Returns a promise that will never be rejected. Resolves when all async attributes have finished being added to\n * this Resource's attributes. This is useful in exporters to block until resource detection\n * has finished.\n */\n async waitForAsyncAttributes() {\n if (this.asyncAttributesPending) {\n await this._asyncAttributesPromise;\n }\n }\n /**\n * Returns a new, merged {@link Resource} by merging the current Resource\n * with the other Resource. In case of a collision, other Resource takes\n * precedence.\n *\n * @param other the Resource that will be merged with this.\n * @returns the newly merged Resource.\n */\n merge(other) {\n var _a;\n if (!other)\n return this;\n // SpanAttributes from other resource overwrite attributes from this resource.\n const mergedSyncAttributes = Object.assign(Object.assign({}, this._syncAttributes), ((_a = other._syncAttributes) !== null && _a !== void 0 ? _a : other.attributes));\n if (!this._asyncAttributesPromise &&\n !other._asyncAttributesPromise) {\n return new Resource(mergedSyncAttributes);\n }\n const mergedAttributesPromise = Promise.all([\n this._asyncAttributesPromise,\n other._asyncAttributesPromise,\n ]).then(([thisAsyncAttributes, otherAsyncAttributes]) => {\n var _a;\n return Object.assign(Object.assign(Object.assign(Object.assign({}, this._syncAttributes), thisAsyncAttributes), ((_a = other._syncAttributes) !== null && _a !== void 0 ? _a : other.attributes)), otherAsyncAttributes);\n });\n return new Resource(mergedSyncAttributes, mergedAttributesPromise);\n }\n}\nexports.Resource = Resource;\nResource.EMPTY = new Resource({});\n//# sourceMappingURL=Resource.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.detectResourcesSync = exports.detectResources = void 0;\nconst Resource_1 = require(\"./Resource\");\nconst api_1 = require(\"@opentelemetry/api\");\nconst utils_1 = require(\"./utils\");\n/**\n * Runs all resource detectors and returns the results merged into a single Resource. Promise\n * does not resolve until all the underlying detectors have resolved, unlike\n * detectResourcesSync.\n *\n * @deprecated use detectResourcesSync() instead.\n * @param config Configuration for resource detection\n */\nconst detectResources = async (config = {}) => {\n const resources = await Promise.all((config.detectors || []).map(async (d) => {\n try {\n const resource = await d.detect(config);\n api_1.diag.debug(`${d.constructor.name} found resource.`, resource);\n return resource;\n }\n catch (e) {\n api_1.diag.debug(`${d.constructor.name} failed: ${e.message}`);\n return Resource_1.Resource.empty();\n }\n }));\n // Future check if verbose logging is enabled issue #1903\n logResources(resources);\n return resources.reduce((acc, resource) => acc.merge(resource), Resource_1.Resource.empty());\n};\nexports.detectResources = detectResources;\n/**\n * Runs all resource detectors synchronously, merging their results. In case of attribute collision later resources will take precedence.\n *\n * @param config Configuration for resource detection\n */\nconst detectResourcesSync = (config = {}) => {\n var _a;\n const resources = ((_a = config.detectors) !== null && _a !== void 0 ? _a : []).map((d) => {\n try {\n const resourceOrPromise = d.detect(config);\n let resource;\n if ((0, utils_1.isPromiseLike)(resourceOrPromise)) {\n const createPromise = async () => {\n const resolvedResource = await resourceOrPromise;\n return resolvedResource.attributes;\n };\n resource = new Resource_1.Resource({}, createPromise());\n }\n else {\n resource = resourceOrPromise;\n }\n if (resource.waitForAsyncAttributes) {\n void resource\n .waitForAsyncAttributes()\n .then(() => api_1.diag.debug(`${d.constructor.name} found resource.`, resource));\n }\n else {\n api_1.diag.debug(`${d.constructor.name} found resource.`, resource);\n }\n return resource;\n }\n catch (e) {\n api_1.diag.error(`${d.constructor.name} failed: ${e.message}`);\n return Resource_1.Resource.empty();\n }\n });\n const mergedResources = resources.reduce((acc, resource) => acc.merge(resource), Resource_1.Resource.empty());\n if (mergedResources.waitForAsyncAttributes) {\n void mergedResources.waitForAsyncAttributes().then(() => {\n // Future check if verbose logging is enabled issue #1903\n logResources(resources);\n });\n }\n return mergedResources;\n};\nexports.detectResourcesSync = detectResourcesSync;\n/**\n * Writes debug information about the detected resources to the logger defined in the resource detection config, if one is provided.\n *\n * @param resources The array of {@link Resource} that should be logged. Empty entries will be ignored.\n */\nconst logResources = (resources) => {\n resources.forEach(resource => {\n // Print only populated resources\n if (Object.keys(resource.attributes).length > 0) {\n const resourceDebugString = JSON.stringify(resource.attributes, null, 4);\n api_1.diag.verbose(resourceDebugString);\n }\n });\n};\n//# sourceMappingURL=detect-resources.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.browserDetector = void 0;\nconst BrowserDetectorSync_1 = require(\"./BrowserDetectorSync\");\n/**\n * BrowserDetector will be used to detect the resources related to browser.\n */\nclass BrowserDetector {\n detect(config) {\n return Promise.resolve(BrowserDetectorSync_1.browserDetectorSync.detect(config));\n }\n}\nexports.browserDetector = new BrowserDetector();\n//# sourceMappingURL=BrowserDetector.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.browserDetectorSync = void 0;\nconst semantic_conventions_1 = require(\"@opentelemetry/semantic-conventions\");\nconst api_1 = require(\"@opentelemetry/api\");\nconst Resource_1 = require(\"../Resource\");\n/**\n * BrowserDetectorSync will be used to detect the resources related to browser.\n */\nclass BrowserDetectorSync {\n detect(config) {\n var _a, _b, _c;\n const isBrowser = typeof navigator !== 'undefined' &&\n ((_b = (_a = global.process) === null || _a === void 0 ? void 0 : _a.versions) === null || _b === void 0 ? void 0 : _b.node) === undefined && // Node.js v21 adds `navigator`\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore don't have Bun types\n ((_c = global.Bun) === null || _c === void 0 ? void 0 : _c.version) === undefined; // Bun (bun.sh) defines `navigator`\n if (!isBrowser) {\n return Resource_1.Resource.empty();\n }\n const browserResource = {\n [semantic_conventions_1.SemanticResourceAttributes.PROCESS_RUNTIME_NAME]: 'browser',\n [semantic_conventions_1.SemanticResourceAttributes.PROCESS_RUNTIME_DESCRIPTION]: 'Web Browser',\n [semantic_conventions_1.SemanticResourceAttributes.PROCESS_RUNTIME_VERSION]: navigator.userAgent,\n };\n return this._getResourceAttributes(browserResource, config);\n }\n /**\n * Validates process resource attribute map from process variables\n *\n * @param browserResource The un-sanitized resource attributes from process as key/value pairs.\n * @param config: Config\n * @returns The sanitized resource attributes.\n */\n _getResourceAttributes(browserResource, _config) {\n if (browserResource[semantic_conventions_1.SemanticResourceAttributes.PROCESS_RUNTIME_VERSION] === '') {\n api_1.diag.debug('BrowserDetector failed: Unable to find required browser resources. ');\n return Resource_1.Resource.empty();\n }\n else {\n return new Resource_1.Resource(Object.assign({}, browserResource));\n }\n }\n}\nexports.browserDetectorSync = new BrowserDetectorSync();\n//# sourceMappingURL=BrowserDetectorSync.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.envDetector = void 0;\nconst EnvDetectorSync_1 = require(\"./EnvDetectorSync\");\n/**\n * EnvDetector can be used to detect the presence of and create a Resource\n * from the OTEL_RESOURCE_ATTRIBUTES environment variable.\n */\nclass EnvDetector {\n /**\n * Returns a {@link Resource} populated with attributes from the\n * OTEL_RESOURCE_ATTRIBUTES environment variable. Note this is an async\n * function to conform to the Detector interface.\n *\n * @param config The resource detection config\n */\n detect(config) {\n return Promise.resolve(EnvDetectorSync_1.envDetectorSync.detect(config));\n }\n}\nexports.envDetector = new EnvDetector();\n//# sourceMappingURL=EnvDetector.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.envDetectorSync = void 0;\nconst api_1 = require(\"@opentelemetry/api\");\nconst core_1 = require(\"@opentelemetry/core\");\nconst semantic_conventions_1 = require(\"@opentelemetry/semantic-conventions\");\nconst Resource_1 = require(\"../Resource\");\n/**\n * EnvDetectorSync can be used to detect the presence of and create a Resource\n * from the OTEL_RESOURCE_ATTRIBUTES environment variable.\n */\nclass EnvDetectorSync {\n constructor() {\n // Type, attribute keys, and attribute values should not exceed 256 characters.\n this._MAX_LENGTH = 255;\n // OTEL_RESOURCE_ATTRIBUTES is a comma-separated list of attributes.\n this._COMMA_SEPARATOR = ',';\n // OTEL_RESOURCE_ATTRIBUTES contains key value pair separated by '='.\n this._LABEL_KEY_VALUE_SPLITTER = '=';\n this._ERROR_MESSAGE_INVALID_CHARS = 'should be a ASCII string with a length greater than 0 and not exceed ' +\n this._MAX_LENGTH +\n ' characters.';\n this._ERROR_MESSAGE_INVALID_VALUE = 'should be a ASCII string with a length not exceed ' +\n this._MAX_LENGTH +\n ' characters.';\n }\n /**\n * Returns a {@link Resource} populated with attributes from the\n * OTEL_RESOURCE_ATTRIBUTES environment variable. Note this is an async\n * function to conform to the Detector interface.\n *\n * @param config The resource detection config\n */\n detect(_config) {\n const attributes = {};\n const env = (0, core_1.getEnv)();\n const rawAttributes = env.OTEL_RESOURCE_ATTRIBUTES;\n const serviceName = env.OTEL_SERVICE_NAME;\n if (rawAttributes) {\n try {\n const parsedAttributes = this._parseResourceAttributes(rawAttributes);\n Object.assign(attributes, parsedAttributes);\n }\n catch (e) {\n api_1.diag.debug(`EnvDetector failed: ${e.message}`);\n }\n }\n if (serviceName) {\n attributes[semantic_conventions_1.SEMRESATTRS_SERVICE_NAME] = serviceName;\n }\n return new Resource_1.Resource(attributes);\n }\n /**\n * Creates an attribute map from the OTEL_RESOURCE_ATTRIBUTES environment\n * variable.\n *\n * OTEL_RESOURCE_ATTRIBUTES: A comma-separated list of attributes describing\n * the source in more detail, e.g. “key1=val1,key2=val2”. Domain names and\n * paths are accepted as attribute keys. Values may be quoted or unquoted in\n * general. If a value contains whitespace, =, or \" characters, it must\n * always be quoted.\n *\n * @param rawEnvAttributes The resource attributes as a comma-separated list\n * of key/value pairs.\n * @returns The sanitized resource attributes.\n */\n _parseResourceAttributes(rawEnvAttributes) {\n if (!rawEnvAttributes)\n return {};\n const attributes = {};\n const rawAttributes = rawEnvAttributes.split(this._COMMA_SEPARATOR, -1);\n for (const rawAttribute of rawAttributes) {\n const keyValuePair = rawAttribute.split(this._LABEL_KEY_VALUE_SPLITTER, -1);\n if (keyValuePair.length !== 2) {\n continue;\n }\n let [key, value] = keyValuePair;\n // Leading and trailing whitespaces are trimmed.\n key = key.trim();\n value = value.trim().split(/^\"|\"$/).join('');\n if (!this._isValidAndNotEmpty(key)) {\n throw new Error(`Attribute key ${this._ERROR_MESSAGE_INVALID_CHARS}`);\n }\n if (!this._isValid(value)) {\n throw new Error(`Attribute value ${this._ERROR_MESSAGE_INVALID_VALUE}`);\n }\n attributes[key] = decodeURIComponent(value);\n }\n return attributes;\n }\n /**\n * Determines whether the given String is a valid printable ASCII string with\n * a length not exceed _MAX_LENGTH characters.\n *\n * @param str The String to be validated.\n * @returns Whether the String is valid.\n */\n _isValid(name) {\n return name.length <= this._MAX_LENGTH && this._isBaggageOctetString(name);\n }\n // https://www.w3.org/TR/baggage/#definition\n _isBaggageOctetString(str) {\n for (let i = 0; i < str.length; i++) {\n const ch = str.charCodeAt(i);\n if (ch < 0x21 || ch === 0x2c || ch === 0x3b || ch === 0x5c || ch > 0x7e) {\n return false;\n }\n }\n return true;\n }\n /**\n * Determines whether the given String is a valid printable ASCII string with\n * a length greater than 0 and not exceed _MAX_LENGTH characters.\n *\n * @param str The String to be validated.\n * @returns Whether the String is valid and not empty.\n */\n _isValidAndNotEmpty(str) {\n return str.length > 0 && this._isValid(str);\n }\n}\nexports.envDetectorSync = new EnvDetectorSync();\n//# sourceMappingURL=EnvDetectorSync.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.envDetectorSync = exports.browserDetectorSync = exports.envDetector = exports.browserDetector = exports.serviceInstanceIdDetectorSync = exports.processDetectorSync = exports.processDetector = exports.osDetectorSync = exports.osDetector = exports.hostDetectorSync = exports.hostDetector = void 0;\nvar platform_1 = require(\"./platform\");\nObject.defineProperty(exports, \"hostDetector\", { enumerable: true, get: function () { return platform_1.hostDetector; } });\nObject.defineProperty(exports, \"hostDetectorSync\", { enumerable: true, get: function () { return platform_1.hostDetectorSync; } });\nObject.defineProperty(exports, \"osDetector\", { enumerable: true, get: function () { return platform_1.osDetector; } });\nObject.defineProperty(exports, \"osDetectorSync\", { enumerable: true, get: function () { return platform_1.osDetectorSync; } });\nObject.defineProperty(exports, \"processDetector\", { enumerable: true, get: function () { return platform_1.processDetector; } });\nObject.defineProperty(exports, \"processDetectorSync\", { enumerable: true, get: function () { return platform_1.processDetectorSync; } });\nObject.defineProperty(exports, \"serviceInstanceIdDetectorSync\", { enumerable: true, get: function () { return platform_1.serviceInstanceIdDetectorSync; } });\nvar BrowserDetector_1 = require(\"./BrowserDetector\");\nObject.defineProperty(exports, \"browserDetector\", { enumerable: true, get: function () { return BrowserDetector_1.browserDetector; } });\nvar EnvDetector_1 = require(\"./EnvDetector\");\nObject.defineProperty(exports, \"envDetector\", { enumerable: true, get: function () { return EnvDetector_1.envDetector; } });\nvar BrowserDetectorSync_1 = require(\"./BrowserDetectorSync\");\nObject.defineProperty(exports, \"browserDetectorSync\", { enumerable: true, get: function () { return BrowserDetectorSync_1.browserDetectorSync; } });\nvar EnvDetectorSync_1 = require(\"./EnvDetectorSync\");\nObject.defineProperty(exports, \"envDetectorSync\", { enumerable: true, get: function () { return EnvDetectorSync_1.envDetectorSync; } });\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.serviceInstanceIdDetectorSync = exports.processDetectorSync = exports.processDetector = exports.osDetectorSync = exports.osDetector = exports.hostDetectorSync = exports.hostDetector = void 0;\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar node_1 = require(\"./node\");\nObject.defineProperty(exports, \"hostDetector\", { enumerable: true, get: function () { return node_1.hostDetector; } });\nObject.defineProperty(exports, \"hostDetectorSync\", { enumerable: true, get: function () { return node_1.hostDetectorSync; } });\nObject.defineProperty(exports, \"osDetector\", { enumerable: true, get: function () { return node_1.osDetector; } });\nObject.defineProperty(exports, \"osDetectorSync\", { enumerable: true, get: function () { return node_1.osDetectorSync; } });\nObject.defineProperty(exports, \"processDetector\", { enumerable: true, get: function () { return node_1.processDetector; } });\nObject.defineProperty(exports, \"processDetectorSync\", { enumerable: true, get: function () { return node_1.processDetectorSync; } });\nObject.defineProperty(exports, \"serviceInstanceIdDetectorSync\", { enumerable: true, get: function () { return node_1.serviceInstanceIdDetectorSync; } });\n//# sourceMappingURL=index.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.hostDetector = void 0;\nconst HostDetectorSync_1 = require(\"./HostDetectorSync\");\n/**\n * HostDetector detects the resources related to the host current process is\n * running on. Currently only non-cloud-based attributes are included.\n */\nclass HostDetector {\n detect(_config) {\n return Promise.resolve(HostDetectorSync_1.hostDetectorSync.detect(_config));\n }\n}\nexports.hostDetector = new HostDetector();\n//# sourceMappingURL=HostDetector.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.hostDetectorSync = void 0;\nconst semantic_conventions_1 = require(\"@opentelemetry/semantic-conventions\");\nconst Resource_1 = require(\"../../../Resource\");\nconst os_1 = require(\"os\");\nconst utils_1 = require(\"./utils\");\nconst getMachineId_1 = require(\"./machine-id/getMachineId\");\n/**\n * HostDetectorSync detects the resources related to the host current process is\n * running on. Currently only non-cloud-based attributes are included.\n */\nclass HostDetectorSync {\n detect(_config) {\n const attributes = {\n [semantic_conventions_1.SemanticResourceAttributes.HOST_NAME]: (0, os_1.hostname)(),\n [semantic_conventions_1.SemanticResourceAttributes.HOST_ARCH]: (0, utils_1.normalizeArch)((0, os_1.arch)()),\n };\n return new Resource_1.Resource(attributes, this._getAsyncAttributes());\n }\n _getAsyncAttributes() {\n return (0, getMachineId_1.getMachineId)().then(machineId => {\n const attributes = {};\n if (machineId) {\n attributes[semantic_conventions_1.SemanticResourceAttributes.HOST_ID] = machineId;\n }\n return attributes;\n });\n }\n}\nexports.hostDetectorSync = new HostDetectorSync();\n//# sourceMappingURL=HostDetectorSync.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.osDetector = void 0;\nconst OSDetectorSync_1 = require(\"./OSDetectorSync\");\n/**\n * OSDetector detects the resources related to the operating system (OS) on\n * which the process represented by this resource is running.\n */\nclass OSDetector {\n detect(_config) {\n return Promise.resolve(OSDetectorSync_1.osDetectorSync.detect(_config));\n }\n}\nexports.osDetector = new OSDetector();\n//# sourceMappingURL=OSDetector.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.osDetectorSync = void 0;\nconst semantic_conventions_1 = require(\"@opentelemetry/semantic-conventions\");\nconst Resource_1 = require(\"../../../Resource\");\nconst os_1 = require(\"os\");\nconst utils_1 = require(\"./utils\");\n/**\n * OSDetectorSync detects the resources related to the operating system (OS) on\n * which the process represented by this resource is running.\n */\nclass OSDetectorSync {\n detect(_config) {\n const attributes = {\n [semantic_conventions_1.SemanticResourceAttributes.OS_TYPE]: (0, utils_1.normalizeType)((0, os_1.platform)()),\n [semantic_conventions_1.SemanticResourceAttributes.OS_VERSION]: (0, os_1.release)(),\n };\n return new Resource_1.Resource(attributes);\n }\n}\nexports.osDetectorSync = new OSDetectorSync();\n//# sourceMappingURL=OSDetectorSync.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.processDetector = void 0;\nconst ProcessDetectorSync_1 = require(\"./ProcessDetectorSync\");\n/**\n * ProcessDetector will be used to detect the resources related current process running\n * and being instrumented from the NodeJS Process module.\n */\nclass ProcessDetector {\n detect(config) {\n return Promise.resolve(ProcessDetectorSync_1.processDetectorSync.detect(config));\n }\n}\nexports.processDetector = new ProcessDetector();\n//# sourceMappingURL=ProcessDetector.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.processDetectorSync = void 0;\nconst api_1 = require(\"@opentelemetry/api\");\nconst semantic_conventions_1 = require(\"@opentelemetry/semantic-conventions\");\nconst Resource_1 = require(\"../../../Resource\");\nconst os = require(\"os\");\n/**\n * ProcessDetectorSync will be used to detect the resources related current process running\n * and being instrumented from the NodeJS Process module.\n */\nclass ProcessDetectorSync {\n detect(_config) {\n const attributes = {\n [semantic_conventions_1.SemanticResourceAttributes.PROCESS_PID]: process.pid,\n [semantic_conventions_1.SemanticResourceAttributes.PROCESS_EXECUTABLE_NAME]: process.title,\n [semantic_conventions_1.SemanticResourceAttributes.PROCESS_EXECUTABLE_PATH]: process.execPath,\n [semantic_conventions_1.SemanticResourceAttributes.PROCESS_COMMAND_ARGS]: [\n process.argv[0],\n ...process.execArgv,\n ...process.argv.slice(1),\n ],\n [semantic_conventions_1.SemanticResourceAttributes.PROCESS_RUNTIME_VERSION]: process.versions.node,\n [semantic_conventions_1.SemanticResourceAttributes.PROCESS_RUNTIME_NAME]: 'nodejs',\n [semantic_conventions_1.SemanticResourceAttributes.PROCESS_RUNTIME_DESCRIPTION]: 'Node.js',\n };\n if (process.argv.length > 1) {\n attributes[semantic_conventions_1.SemanticResourceAttributes.PROCESS_COMMAND] = process.argv[1];\n }\n try {\n const userInfo = os.userInfo();\n attributes[semantic_conventions_1.SemanticResourceAttributes.PROCESS_OWNER] = userInfo.username;\n }\n catch (e) {\n api_1.diag.debug(`error obtaining process owner: ${e}`);\n }\n return new Resource_1.Resource(attributes);\n }\n}\nexports.processDetectorSync = new ProcessDetectorSync();\n//# sourceMappingURL=ProcessDetectorSync.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.serviceInstanceIdDetectorSync = void 0;\nconst semantic_conventions_1 = require(\"@opentelemetry/semantic-conventions\");\nconst Resource_1 = require(\"../../../Resource\");\nconst crypto_1 = require(\"crypto\");\n/**\n * ServiceInstanceIdDetectorSync detects the resources related to the service instance ID.\n */\nclass ServiceInstanceIdDetectorSync {\n detect(_config) {\n const attributes = {\n [semantic_conventions_1.SEMRESATTRS_SERVICE_INSTANCE_ID]: (0, crypto_1.randomUUID)(),\n };\n return new Resource_1.Resource(attributes);\n }\n}\n/**\n * @experimental\n */\nexports.serviceInstanceIdDetectorSync = new ServiceInstanceIdDetectorSync();\n//# sourceMappingURL=ServiceInstanceIdDetectorSync.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.serviceInstanceIdDetectorSync = exports.processDetectorSync = exports.processDetector = exports.osDetectorSync = exports.osDetector = exports.hostDetectorSync = exports.hostDetector = void 0;\nvar HostDetector_1 = require(\"./HostDetector\");\nObject.defineProperty(exports, \"hostDetector\", { enumerable: true, get: function () { return HostDetector_1.hostDetector; } });\nvar HostDetectorSync_1 = require(\"./HostDetectorSync\");\nObject.defineProperty(exports, \"hostDetectorSync\", { enumerable: true, get: function () { return HostDetectorSync_1.hostDetectorSync; } });\nvar OSDetector_1 = require(\"./OSDetector\");\nObject.defineProperty(exports, \"osDetector\", { enumerable: true, get: function () { return OSDetector_1.osDetector; } });\nvar OSDetectorSync_1 = require(\"./OSDetectorSync\");\nObject.defineProperty(exports, \"osDetectorSync\", { enumerable: true, get: function () { return OSDetectorSync_1.osDetectorSync; } });\nvar ProcessDetector_1 = require(\"./ProcessDetector\");\nObject.defineProperty(exports, \"processDetector\", { enumerable: true, get: function () { return ProcessDetector_1.processDetector; } });\nvar ProcessDetectorSync_1 = require(\"./ProcessDetectorSync\");\nObject.defineProperty(exports, \"processDetectorSync\", { enumerable: true, get: function () { return ProcessDetectorSync_1.processDetectorSync; } });\nvar ServiceInstanceIdDetectorSync_1 = require(\"./ServiceInstanceIdDetectorSync\");\nObject.defineProperty(exports, \"serviceInstanceIdDetectorSync\", { enumerable: true, get: function () { return ServiceInstanceIdDetectorSync_1.serviceInstanceIdDetectorSync; } });\n//# sourceMappingURL=index.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.execAsync = void 0;\nconst child_process = require(\"child_process\");\nconst util = require(\"util\");\nexports.execAsync = util.promisify(child_process.exec);\n//# sourceMappingURL=execAsync.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getMachineId = void 0;\nconst fs_1 = require(\"fs\");\nconst execAsync_1 = require(\"./execAsync\");\nconst api_1 = require(\"@opentelemetry/api\");\nasync function getMachineId() {\n try {\n const result = await fs_1.promises.readFile('/etc/hostid', { encoding: 'utf8' });\n return result.trim();\n }\n catch (e) {\n api_1.diag.debug(`error reading machine id: ${e}`);\n }\n try {\n const result = await (0, execAsync_1.execAsync)('kenv -q smbios.system.uuid');\n return result.stdout.trim();\n }\n catch (e) {\n api_1.diag.debug(`error reading machine id: ${e}`);\n }\n return '';\n}\nexports.getMachineId = getMachineId;\n//# sourceMappingURL=getMachineId-bsd.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getMachineId = void 0;\nconst execAsync_1 = require(\"./execAsync\");\nconst api_1 = require(\"@opentelemetry/api\");\nasync function getMachineId() {\n try {\n const result = await (0, execAsync_1.execAsync)('ioreg -rd1 -c \"IOPlatformExpertDevice\"');\n const idLine = result.stdout\n .split('\\n')\n .find(line => line.includes('IOPlatformUUID'));\n if (!idLine) {\n return '';\n }\n const parts = idLine.split('\" = \"');\n if (parts.length === 2) {\n return parts[1].slice(0, -1);\n }\n }\n catch (e) {\n api_1.diag.debug(`error reading machine id: ${e}`);\n }\n return '';\n}\nexports.getMachineId = getMachineId;\n//# sourceMappingURL=getMachineId-darwin.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getMachineId = void 0;\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nconst fs_1 = require(\"fs\");\nconst api_1 = require(\"@opentelemetry/api\");\nasync function getMachineId() {\n const paths = ['/etc/machine-id', '/var/lib/dbus/machine-id'];\n for (const path of paths) {\n try {\n const result = await fs_1.promises.readFile(path, { encoding: 'utf8' });\n return result.trim();\n }\n catch (e) {\n api_1.diag.debug(`error reading machine id: ${e}`);\n }\n }\n return '';\n}\nexports.getMachineId = getMachineId;\n//# sourceMappingURL=getMachineId-linux.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getMachineId = void 0;\nconst api_1 = require(\"@opentelemetry/api\");\nasync function getMachineId() {\n api_1.diag.debug('could not read machine-id: unsupported platform');\n return '';\n}\nexports.getMachineId = getMachineId;\n//# sourceMappingURL=getMachineId-unsupported.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getMachineId = void 0;\nconst process = require(\"process\");\nconst execAsync_1 = require(\"./execAsync\");\nconst api_1 = require(\"@opentelemetry/api\");\nasync function getMachineId() {\n const args = 'QUERY HKEY_LOCAL_MACHINE\\\\SOFTWARE\\\\Microsoft\\\\Cryptography /v MachineGuid';\n let command = '%windir%\\\\System32\\\\REG.exe';\n if (process.arch === 'ia32' && 'PROCESSOR_ARCHITEW6432' in process.env) {\n command = '%windir%\\\\sysnative\\\\cmd.exe /c ' + command;\n }\n try {\n const result = await (0, execAsync_1.execAsync)(`${command} ${args}`);\n const parts = result.stdout.split('REG_SZ');\n if (parts.length === 2) {\n return parts[1].trim();\n }\n }\n catch (e) {\n api_1.diag.debug(`error reading machine id: ${e}`);\n }\n return '';\n}\nexports.getMachineId = getMachineId;\n//# sourceMappingURL=getMachineId-win.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getMachineId = void 0;\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nconst process = require(\"process\");\nlet getMachineId;\nexports.getMachineId = getMachineId;\nswitch (process.platform) {\n case 'darwin':\n (exports.getMachineId = getMachineId = require('./getMachineId-darwin').getMachineId);\n break;\n case 'linux':\n (exports.getMachineId = getMachineId = require('./getMachineId-linux').getMachineId);\n break;\n case 'freebsd':\n (exports.getMachineId = getMachineId = require('./getMachineId-bsd').getMachineId);\n break;\n case 'win32':\n (exports.getMachineId = getMachineId = require('./getMachineId-win').getMachineId);\n break;\n default:\n (exports.getMachineId = getMachineId = require('./getMachineId-unsupported').getMachineId);\n}\n//# sourceMappingURL=getMachineId.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.normalizeType = exports.normalizeArch = void 0;\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nconst normalizeArch = (nodeArchString) => {\n // Maps from https://nodejs.org/api/os.html#osarch to arch values in spec:\n // https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/resource/semantic_conventions/host.md\n switch (nodeArchString) {\n case 'arm':\n return 'arm32';\n case 'ppc':\n return 'ppc32';\n case 'x64':\n return 'amd64';\n default:\n return nodeArchString;\n }\n};\nexports.normalizeArch = normalizeArch;\nconst normalizeType = (nodePlatform) => {\n // Maps from https://nodejs.org/api/os.html#osplatform to arch values in spec:\n // https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/resource/semantic_conventions/os.md\n switch (nodePlatform) {\n case 'sunos':\n return 'solaris';\n case 'win32':\n return 'windows';\n default:\n return nodePlatform;\n }\n};\nexports.normalizeType = normalizeType;\n//# sourceMappingURL=utils.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.detectResources = exports.detectResourcesSync = exports.serviceInstanceIdDetectorSync = exports.processDetectorSync = exports.processDetector = exports.osDetectorSync = exports.osDetector = exports.hostDetectorSync = exports.hostDetector = exports.envDetectorSync = exports.envDetector = exports.browserDetectorSync = exports.browserDetector = exports.defaultServiceName = exports.Resource = void 0;\nvar Resource_1 = require(\"./Resource\");\nObject.defineProperty(exports, \"Resource\", { enumerable: true, get: function () { return Resource_1.Resource; } });\nvar platform_1 = require(\"./platform\");\nObject.defineProperty(exports, \"defaultServiceName\", { enumerable: true, get: function () { return platform_1.defaultServiceName; } });\nvar detectors_1 = require(\"./detectors\");\nObject.defineProperty(exports, \"browserDetector\", { enumerable: true, get: function () { return detectors_1.browserDetector; } });\nObject.defineProperty(exports, \"browserDetectorSync\", { enumerable: true, get: function () { return detectors_1.browserDetectorSync; } });\nObject.defineProperty(exports, \"envDetector\", { enumerable: true, get: function () { return detectors_1.envDetector; } });\nObject.defineProperty(exports, \"envDetectorSync\", { enumerable: true, get: function () { return detectors_1.envDetectorSync; } });\nObject.defineProperty(exports, \"hostDetector\", { enumerable: true, get: function () { return detectors_1.hostDetector; } });\nObject.defineProperty(exports, \"hostDetectorSync\", { enumerable: true, get: function () { return detectors_1.hostDetectorSync; } });\nObject.defineProperty(exports, \"osDetector\", { enumerable: true, get: function () { return detectors_1.osDetector; } });\nObject.defineProperty(exports, \"osDetectorSync\", { enumerable: true, get: function () { return detectors_1.osDetectorSync; } });\nObject.defineProperty(exports, \"processDetector\", { enumerable: true, get: function () { return detectors_1.processDetector; } });\nObject.defineProperty(exports, \"processDetectorSync\", { enumerable: true, get: function () { return detectors_1.processDetectorSync; } });\nObject.defineProperty(exports, \"serviceInstanceIdDetectorSync\", { enumerable: true, get: function () { return detectors_1.serviceInstanceIdDetectorSync; } });\nvar detect_resources_1 = require(\"./detect-resources\");\nObject.defineProperty(exports, \"detectResourcesSync\", { enumerable: true, get: function () { return detect_resources_1.detectResourcesSync; } });\nObject.defineProperty(exports, \"detectResources\", { enumerable: true, get: function () { return detect_resources_1.detectResources; } });\n//# sourceMappingURL=index.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.defaultServiceName = void 0;\nvar node_1 = require(\"./node\");\nObject.defineProperty(exports, \"defaultServiceName\", { enumerable: true, get: function () { return node_1.defaultServiceName; } });\n//# sourceMappingURL=index.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.defaultServiceName = void 0;\nfunction defaultServiceName() {\n return `unknown_service:${process.argv0}`;\n}\nexports.defaultServiceName = defaultServiceName;\n//# sourceMappingURL=default-service-name.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.defaultServiceName = void 0;\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar default_service_name_1 = require(\"./default-service-name\");\nObject.defineProperty(exports, \"defaultServiceName\", { enumerable: true, get: function () { return default_service_name_1.defaultServiceName; } });\n//# sourceMappingURL=index.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isPromiseLike = void 0;\nconst isPromiseLike = (val) => {\n return (val !== null && typeof val === 'object' && typeof val.then === 'function');\n};\nexports.isPromiseLike = isPromiseLike;\n//# sourceMappingURL=utils.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isValidName = exports.isDescriptorCompatibleWith = exports.createInstrumentDescriptorWithView = exports.createInstrumentDescriptor = exports.InstrumentType = void 0;\nconst api_1 = require(\"@opentelemetry/api\");\nconst utils_1 = require(\"./utils\");\n/**\n * Supported types of metric instruments.\n */\nvar InstrumentType;\n(function (InstrumentType) {\n InstrumentType[\"COUNTER\"] = \"COUNTER\";\n InstrumentType[\"GAUGE\"] = \"GAUGE\";\n InstrumentType[\"HISTOGRAM\"] = \"HISTOGRAM\";\n InstrumentType[\"UP_DOWN_COUNTER\"] = \"UP_DOWN_COUNTER\";\n InstrumentType[\"OBSERVABLE_COUNTER\"] = \"OBSERVABLE_COUNTER\";\n InstrumentType[\"OBSERVABLE_GAUGE\"] = \"OBSERVABLE_GAUGE\";\n InstrumentType[\"OBSERVABLE_UP_DOWN_COUNTER\"] = \"OBSERVABLE_UP_DOWN_COUNTER\";\n})(InstrumentType = exports.InstrumentType || (exports.InstrumentType = {}));\nfunction createInstrumentDescriptor(name, type, options) {\n var _a, _b, _c, _d;\n if (!isValidName(name)) {\n api_1.diag.warn(`Invalid metric name: \"${name}\". The metric name should be a ASCII string with a length no greater than 255 characters.`);\n }\n return {\n name,\n type,\n description: (_a = options === null || options === void 0 ? void 0 : options.description) !== null && _a !== void 0 ? _a : '',\n unit: (_b = options === null || options === void 0 ? void 0 : options.unit) !== null && _b !== void 0 ? _b : '',\n valueType: (_c = options === null || options === void 0 ? void 0 : options.valueType) !== null && _c !== void 0 ? _c : api_1.ValueType.DOUBLE,\n advice: (_d = options === null || options === void 0 ? void 0 : options.advice) !== null && _d !== void 0 ? _d : {},\n };\n}\nexports.createInstrumentDescriptor = createInstrumentDescriptor;\nfunction createInstrumentDescriptorWithView(view, instrument) {\n var _a, _b;\n return {\n name: (_a = view.name) !== null && _a !== void 0 ? _a : instrument.name,\n description: (_b = view.description) !== null && _b !== void 0 ? _b : instrument.description,\n type: instrument.type,\n unit: instrument.unit,\n valueType: instrument.valueType,\n advice: instrument.advice,\n };\n}\nexports.createInstrumentDescriptorWithView = createInstrumentDescriptorWithView;\nfunction isDescriptorCompatibleWith(descriptor, otherDescriptor) {\n // Names are case-insensitive strings.\n return ((0, utils_1.equalsCaseInsensitive)(descriptor.name, otherDescriptor.name) &&\n descriptor.unit === otherDescriptor.unit &&\n descriptor.type === otherDescriptor.type &&\n descriptor.valueType === otherDescriptor.valueType);\n}\nexports.isDescriptorCompatibleWith = isDescriptorCompatibleWith;\n// ASCII string with a length no greater than 255 characters.\n// NB: the first character counted separately from the rest.\nconst NAME_REGEXP = /^[a-z][a-z0-9_.\\-/]{0,254}$/i;\nfunction isValidName(name) {\n return name.match(NAME_REGEXP) != null;\n}\nexports.isValidName = isValidName;\n//# sourceMappingURL=InstrumentDescriptor.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isObservableInstrument = exports.ObservableUpDownCounterInstrument = exports.ObservableGaugeInstrument = exports.ObservableCounterInstrument = exports.ObservableInstrument = exports.HistogramInstrument = exports.GaugeInstrument = exports.CounterInstrument = exports.UpDownCounterInstrument = exports.SyncInstrument = void 0;\nconst api_1 = require(\"@opentelemetry/api\");\nconst core_1 = require(\"@opentelemetry/core\");\nclass SyncInstrument {\n constructor(_writableMetricStorage, _descriptor) {\n this._writableMetricStorage = _writableMetricStorage;\n this._descriptor = _descriptor;\n }\n _record(value, attributes = {}, context = api_1.context.active()) {\n if (typeof value !== 'number') {\n api_1.diag.warn(`non-number value provided to metric ${this._descriptor.name}: ${value}`);\n return;\n }\n if (this._descriptor.valueType === api_1.ValueType.INT &&\n !Number.isInteger(value)) {\n api_1.diag.warn(`INT value type cannot accept a floating-point value for ${this._descriptor.name}, ignoring the fractional digits.`);\n value = Math.trunc(value);\n // ignore non-finite values.\n if (!Number.isInteger(value)) {\n return;\n }\n }\n this._writableMetricStorage.record(value, attributes, context, (0, core_1.millisToHrTime)(Date.now()));\n }\n}\nexports.SyncInstrument = SyncInstrument;\n/**\n * The class implements {@link UpDownCounter} interface.\n */\nclass UpDownCounterInstrument extends SyncInstrument {\n /**\n * Increment value of counter by the input. Inputs may be negative.\n */\n add(value, attributes, ctx) {\n this._record(value, attributes, ctx);\n }\n}\nexports.UpDownCounterInstrument = UpDownCounterInstrument;\n/**\n * The class implements {@link Counter} interface.\n */\nclass CounterInstrument extends SyncInstrument {\n /**\n * Increment value of counter by the input. Inputs may not be negative.\n */\n add(value, attributes, ctx) {\n if (value < 0) {\n api_1.diag.warn(`negative value provided to counter ${this._descriptor.name}: ${value}`);\n return;\n }\n this._record(value, attributes, ctx);\n }\n}\nexports.CounterInstrument = CounterInstrument;\n/**\n * The class implements {@link Gauge} interface.\n */\nclass GaugeInstrument extends SyncInstrument {\n /**\n * Records a measurement.\n */\n record(value, attributes, ctx) {\n this._record(value, attributes, ctx);\n }\n}\nexports.GaugeInstrument = GaugeInstrument;\n/**\n * The class implements {@link Histogram} interface.\n */\nclass HistogramInstrument extends SyncInstrument {\n /**\n * Records a measurement. Value of the measurement must not be negative.\n */\n record(value, attributes, ctx) {\n if (value < 0) {\n api_1.diag.warn(`negative value provided to histogram ${this._descriptor.name}: ${value}`);\n return;\n }\n this._record(value, attributes, ctx);\n }\n}\nexports.HistogramInstrument = HistogramInstrument;\nclass ObservableInstrument {\n constructor(descriptor, metricStorages, _observableRegistry) {\n this._observableRegistry = _observableRegistry;\n this._descriptor = descriptor;\n this._metricStorages = metricStorages;\n }\n /**\n * @see {Observable.addCallback}\n */\n addCallback(callback) {\n this._observableRegistry.addCallback(callback, this);\n }\n /**\n * @see {Observable.removeCallback}\n */\n removeCallback(callback) {\n this._observableRegistry.removeCallback(callback, this);\n }\n}\nexports.ObservableInstrument = ObservableInstrument;\nclass ObservableCounterInstrument extends ObservableInstrument {\n}\nexports.ObservableCounterInstrument = ObservableCounterInstrument;\nclass ObservableGaugeInstrument extends ObservableInstrument {\n}\nexports.ObservableGaugeInstrument = ObservableGaugeInstrument;\nclass ObservableUpDownCounterInstrument extends ObservableInstrument {\n}\nexports.ObservableUpDownCounterInstrument = ObservableUpDownCounterInstrument;\nfunction isObservableInstrument(it) {\n return it instanceof ObservableInstrument;\n}\nexports.isObservableInstrument = isObservableInstrument;\n//# sourceMappingURL=Instruments.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Meter = void 0;\nconst InstrumentDescriptor_1 = require(\"./InstrumentDescriptor\");\nconst Instruments_1 = require(\"./Instruments\");\n/**\n * This class implements the {@link IMeter} interface.\n */\nclass Meter {\n constructor(_meterSharedState) {\n this._meterSharedState = _meterSharedState;\n }\n /**\n * Create a {@link Gauge} instrument.\n * @experimental\n */\n createGauge(name, options) {\n const descriptor = (0, InstrumentDescriptor_1.createInstrumentDescriptor)(name, InstrumentDescriptor_1.InstrumentType.GAUGE, options);\n const storage = this._meterSharedState.registerMetricStorage(descriptor);\n return new Instruments_1.GaugeInstrument(storage, descriptor);\n }\n /**\n * Create a {@link Histogram} instrument.\n */\n createHistogram(name, options) {\n const descriptor = (0, InstrumentDescriptor_1.createInstrumentDescriptor)(name, InstrumentDescriptor_1.InstrumentType.HISTOGRAM, options);\n const storage = this._meterSharedState.registerMetricStorage(descriptor);\n return new Instruments_1.HistogramInstrument(storage, descriptor);\n }\n /**\n * Create a {@link Counter} instrument.\n */\n createCounter(name, options) {\n const descriptor = (0, InstrumentDescriptor_1.createInstrumentDescriptor)(name, InstrumentDescriptor_1.InstrumentType.COUNTER, options);\n const storage = this._meterSharedState.registerMetricStorage(descriptor);\n return new Instruments_1.CounterInstrument(storage, descriptor);\n }\n /**\n * Create a {@link UpDownCounter} instrument.\n */\n createUpDownCounter(name, options) {\n const descriptor = (0, InstrumentDescriptor_1.createInstrumentDescriptor)(name, InstrumentDescriptor_1.InstrumentType.UP_DOWN_COUNTER, options);\n const storage = this._meterSharedState.registerMetricStorage(descriptor);\n return new Instruments_1.UpDownCounterInstrument(storage, descriptor);\n }\n /**\n * Create a {@link ObservableGauge} instrument.\n */\n createObservableGauge(name, options) {\n const descriptor = (0, InstrumentDescriptor_1.createInstrumentDescriptor)(name, InstrumentDescriptor_1.InstrumentType.OBSERVABLE_GAUGE, options);\n const storages = this._meterSharedState.registerAsyncMetricStorage(descriptor);\n return new Instruments_1.ObservableGaugeInstrument(descriptor, storages, this._meterSharedState.observableRegistry);\n }\n /**\n * Create a {@link ObservableCounter} instrument.\n */\n createObservableCounter(name, options) {\n const descriptor = (0, InstrumentDescriptor_1.createInstrumentDescriptor)(name, InstrumentDescriptor_1.InstrumentType.OBSERVABLE_COUNTER, options);\n const storages = this._meterSharedState.registerAsyncMetricStorage(descriptor);\n return new Instruments_1.ObservableCounterInstrument(descriptor, storages, this._meterSharedState.observableRegistry);\n }\n /**\n * Create a {@link ObservableUpDownCounter} instrument.\n */\n createObservableUpDownCounter(name, options) {\n const descriptor = (0, InstrumentDescriptor_1.createInstrumentDescriptor)(name, InstrumentDescriptor_1.InstrumentType.OBSERVABLE_UP_DOWN_COUNTER, options);\n const storages = this._meterSharedState.registerAsyncMetricStorage(descriptor);\n return new Instruments_1.ObservableUpDownCounterInstrument(descriptor, storages, this._meterSharedState.observableRegistry);\n }\n /**\n * @see {@link Meter.addBatchObservableCallback}\n */\n addBatchObservableCallback(callback, observables) {\n this._meterSharedState.observableRegistry.addBatchCallback(callback, observables);\n }\n /**\n * @see {@link Meter.removeBatchObservableCallback}\n */\n removeBatchObservableCallback(callback, observables) {\n this._meterSharedState.observableRegistry.removeBatchCallback(callback, observables);\n }\n}\nexports.Meter = Meter;\n//# sourceMappingURL=Meter.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MeterProvider = void 0;\nconst api_1 = require(\"@opentelemetry/api\");\nconst resources_1 = require(\"@opentelemetry/resources\");\nconst MeterProviderSharedState_1 = require(\"./state/MeterProviderSharedState\");\nconst MetricCollector_1 = require(\"./state/MetricCollector\");\n/**\n * This class implements the {@link MeterProvider} interface.\n */\nclass MeterProvider {\n constructor(options) {\n var _a;\n this._shutdown = false;\n const resource = resources_1.Resource.default().merge((_a = options === null || options === void 0 ? void 0 : options.resource) !== null && _a !== void 0 ? _a : resources_1.Resource.empty());\n this._sharedState = new MeterProviderSharedState_1.MeterProviderSharedState(resource);\n if ((options === null || options === void 0 ? void 0 : options.views) != null && options.views.length > 0) {\n for (const view of options.views) {\n this._sharedState.viewRegistry.addView(view);\n }\n }\n if ((options === null || options === void 0 ? void 0 : options.readers) != null && options.readers.length > 0) {\n for (const metricReader of options.readers) {\n this.addMetricReader(metricReader);\n }\n }\n }\n /**\n * Get a meter with the configuration of the MeterProvider.\n */\n getMeter(name, version = '', options = {}) {\n // https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/metrics/sdk.md#meter-creation\n if (this._shutdown) {\n api_1.diag.warn('A shutdown MeterProvider cannot provide a Meter');\n return (0, api_1.createNoopMeter)();\n }\n return this._sharedState.getMeterSharedState({\n name,\n version,\n schemaUrl: options.schemaUrl,\n }).meter;\n }\n /**\n * Register a {@link MetricReader} to the meter provider. After the\n * registration, the MetricReader can start metrics collection.\n *\n *

NOTE: {@link MetricReader} instances MUST be added before creating any instruments.\n * A {@link MetricReader} instance registered later may receive no or incomplete metric data.\n *\n * @param metricReader the metric reader to be registered.\n *\n * @deprecated This method will be removed in SDK 2.0. Please use\n * {@link MeterProviderOptions.readers} via the {@link MeterProvider} constructor instead\n */\n addMetricReader(metricReader) {\n const collector = new MetricCollector_1.MetricCollector(this._sharedState, metricReader);\n metricReader.setMetricProducer(collector);\n this._sharedState.metricCollectors.push(collector);\n }\n /**\n * Flush all buffered data and shut down the MeterProvider and all registered\n * MetricReaders.\n *\n * Returns a promise which is resolved when all flushes are complete.\n */\n async shutdown(options) {\n if (this._shutdown) {\n api_1.diag.warn('shutdown may only be called once per MeterProvider');\n return;\n }\n this._shutdown = true;\n await Promise.all(this._sharedState.metricCollectors.map(collector => {\n return collector.shutdown(options);\n }));\n }\n /**\n * Notifies all registered MetricReaders to flush any buffered data.\n *\n * Returns a promise which is resolved when all flushes are complete.\n */\n async forceFlush(options) {\n // do not flush after shutdown\n if (this._shutdown) {\n api_1.diag.warn('invalid attempt to force flush after MeterProvider shutdown');\n return;\n }\n await Promise.all(this._sharedState.metricCollectors.map(collector => {\n return collector.forceFlush(options);\n }));\n }\n}\nexports.MeterProvider = MeterProvider;\n//# sourceMappingURL=MeterProvider.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BatchObservableResultImpl = exports.ObservableResultImpl = void 0;\nconst api_1 = require(\"@opentelemetry/api\");\nconst HashMap_1 = require(\"./state/HashMap\");\nconst Instruments_1 = require(\"./Instruments\");\n/**\n * The class implements {@link ObservableResult} interface.\n */\nclass ObservableResultImpl {\n constructor(_instrumentName, _valueType) {\n this._instrumentName = _instrumentName;\n this._valueType = _valueType;\n /**\n * @internal\n */\n this._buffer = new HashMap_1.AttributeHashMap();\n }\n /**\n * Observe a measurement of the value associated with the given attributes.\n */\n observe(value, attributes = {}) {\n if (typeof value !== 'number') {\n api_1.diag.warn(`non-number value provided to metric ${this._instrumentName}: ${value}`);\n return;\n }\n if (this._valueType === api_1.ValueType.INT && !Number.isInteger(value)) {\n api_1.diag.warn(`INT value type cannot accept a floating-point value for ${this._instrumentName}, ignoring the fractional digits.`);\n value = Math.trunc(value);\n // ignore non-finite values.\n if (!Number.isInteger(value)) {\n return;\n }\n }\n this._buffer.set(attributes, value);\n }\n}\nexports.ObservableResultImpl = ObservableResultImpl;\n/**\n * The class implements {@link BatchObservableCallback} interface.\n */\nclass BatchObservableResultImpl {\n constructor() {\n /**\n * @internal\n */\n this._buffer = new Map();\n }\n /**\n * Observe a measurement of the value associated with the given attributes.\n */\n observe(metric, value, attributes = {}) {\n if (!(0, Instruments_1.isObservableInstrument)(metric)) {\n return;\n }\n let map = this._buffer.get(metric);\n if (map == null) {\n map = new HashMap_1.AttributeHashMap();\n this._buffer.set(metric, map);\n }\n if (typeof value !== 'number') {\n api_1.diag.warn(`non-number value provided to metric ${metric._descriptor.name}: ${value}`);\n return;\n }\n if (metric._descriptor.valueType === api_1.ValueType.INT &&\n !Number.isInteger(value)) {\n api_1.diag.warn(`INT value type cannot accept a floating-point value for ${metric._descriptor.name}, ignoring the fractional digits.`);\n value = Math.trunc(value);\n // ignore non-finite values.\n if (!Number.isInteger(value)) {\n return;\n }\n }\n map.set(attributes, value);\n }\n}\nexports.BatchObservableResultImpl = BatchObservableResultImpl;\n//# sourceMappingURL=ObservableResult.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DropAggregator = void 0;\nconst types_1 = require(\"./types\");\n/** Basic aggregator for None which keeps no recorded value. */\nclass DropAggregator {\n constructor() {\n this.kind = types_1.AggregatorKind.DROP;\n }\n createAccumulation() {\n return undefined;\n }\n merge(_previous, _delta) {\n return undefined;\n }\n diff(_previous, _current) {\n return undefined;\n }\n toMetricData(_descriptor, _aggregationTemporality, _accumulationByAttributes, _endTime) {\n return undefined;\n }\n}\nexports.DropAggregator = DropAggregator;\n//# sourceMappingURL=Drop.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ExponentialHistogramAggregator = exports.ExponentialHistogramAccumulation = void 0;\nconst types_1 = require(\"./types\");\nconst MetricData_1 = require(\"../export/MetricData\");\nconst api_1 = require(\"@opentelemetry/api\");\nconst InstrumentDescriptor_1 = require(\"../InstrumentDescriptor\");\nconst Buckets_1 = require(\"./exponential-histogram/Buckets\");\nconst getMapping_1 = require(\"./exponential-histogram/mapping/getMapping\");\nconst util_1 = require(\"./exponential-histogram/util\");\n// HighLow is a utility class used for computing a common scale for\n// two exponential histogram accumulations\nclass HighLow {\n constructor(low, high) {\n this.low = low;\n this.high = high;\n }\n static combine(h1, h2) {\n return new HighLow(Math.min(h1.low, h2.low), Math.max(h1.high, h2.high));\n }\n}\nconst MAX_SCALE = 20;\nconst DEFAULT_MAX_SIZE = 160;\nconst MIN_MAX_SIZE = 2;\nclass ExponentialHistogramAccumulation {\n constructor(startTime = startTime, _maxSize = DEFAULT_MAX_SIZE, _recordMinMax = true, _sum = 0, _count = 0, _zeroCount = 0, _min = Number.POSITIVE_INFINITY, _max = Number.NEGATIVE_INFINITY, _positive = new Buckets_1.Buckets(), _negative = new Buckets_1.Buckets(), _mapping = (0, getMapping_1.getMapping)(MAX_SCALE)) {\n this.startTime = startTime;\n this._maxSize = _maxSize;\n this._recordMinMax = _recordMinMax;\n this._sum = _sum;\n this._count = _count;\n this._zeroCount = _zeroCount;\n this._min = _min;\n this._max = _max;\n this._positive = _positive;\n this._negative = _negative;\n this._mapping = _mapping;\n if (this._maxSize < MIN_MAX_SIZE) {\n api_1.diag.warn(`Exponential Histogram Max Size set to ${this._maxSize}, \\\n changing to the minimum size of: ${MIN_MAX_SIZE}`);\n this._maxSize = MIN_MAX_SIZE;\n }\n }\n /**\n * record updates a histogram with a single count\n * @param {Number} value\n */\n record(value) {\n this.updateByIncrement(value, 1);\n }\n /**\n * Sets the start time for this accumulation\n * @param {HrTime} startTime\n */\n setStartTime(startTime) {\n this.startTime = startTime;\n }\n /**\n * Returns the datapoint representation of this accumulation\n * @param {HrTime} startTime\n */\n toPointValue() {\n return {\n hasMinMax: this._recordMinMax,\n min: this.min,\n max: this.max,\n sum: this.sum,\n positive: {\n offset: this.positive.offset,\n bucketCounts: this.positive.counts(),\n },\n negative: {\n offset: this.negative.offset,\n bucketCounts: this.negative.counts(),\n },\n count: this.count,\n scale: this.scale,\n zeroCount: this.zeroCount,\n };\n }\n /**\n * @returns {Number} The sum of values recorded by this accumulation\n */\n get sum() {\n return this._sum;\n }\n /**\n * @returns {Number} The minimum value recorded by this accumulation\n */\n get min() {\n return this._min;\n }\n /**\n * @returns {Number} The maximum value recorded by this accumulation\n */\n get max() {\n return this._max;\n }\n /**\n * @returns {Number} The count of values recorded by this accumulation\n */\n get count() {\n return this._count;\n }\n /**\n * @returns {Number} The number of 0 values recorded by this accumulation\n */\n get zeroCount() {\n return this._zeroCount;\n }\n /**\n * @returns {Number} The scale used by this accumulation\n */\n get scale() {\n if (this._count === this._zeroCount) {\n // all zeros! scale doesn't matter, use zero\n return 0;\n }\n return this._mapping.scale;\n }\n /**\n * positive holds the positive values\n * @returns {Buckets}\n */\n get positive() {\n return this._positive;\n }\n /**\n * negative holds the negative values by their absolute value\n * @returns {Buckets}\n */\n get negative() {\n return this._negative;\n }\n /**\n * updateByIncr supports updating a histogram with a non-negative\n * increment.\n * @param value\n * @param increment\n */\n updateByIncrement(value, increment) {\n // NaN does not fall into any bucket, is not zero and should not be counted,\n // NaN is never greater than max nor less than min, therefore return as there's nothing for us to do.\n if (Number.isNaN(value)) {\n return;\n }\n if (value > this._max) {\n this._max = value;\n }\n if (value < this._min) {\n this._min = value;\n }\n this._count += increment;\n if (value === 0) {\n this._zeroCount += increment;\n return;\n }\n this._sum += value * increment;\n if (value > 0) {\n this._updateBuckets(this._positive, value, increment);\n }\n else {\n this._updateBuckets(this._negative, -value, increment);\n }\n }\n /**\n * merge combines data from previous value into self\n * @param {ExponentialHistogramAccumulation} previous\n */\n merge(previous) {\n if (this._count === 0) {\n this._min = previous.min;\n this._max = previous.max;\n }\n else if (previous.count !== 0) {\n if (previous.min < this.min) {\n this._min = previous.min;\n }\n if (previous.max > this.max) {\n this._max = previous.max;\n }\n }\n this.startTime = previous.startTime;\n this._sum += previous.sum;\n this._count += previous.count;\n this._zeroCount += previous.zeroCount;\n const minScale = this._minScale(previous);\n this._downscale(this.scale - minScale);\n this._mergeBuckets(this.positive, previous, previous.positive, minScale);\n this._mergeBuckets(this.negative, previous, previous.negative, minScale);\n }\n /**\n * diff subtracts other from self\n * @param {ExponentialHistogramAccumulation} other\n */\n diff(other) {\n this._min = Infinity;\n this._max = -Infinity;\n this._sum -= other.sum;\n this._count -= other.count;\n this._zeroCount -= other.zeroCount;\n const minScale = this._minScale(other);\n this._downscale(this.scale - minScale);\n this._diffBuckets(this.positive, other, other.positive, minScale);\n this._diffBuckets(this.negative, other, other.negative, minScale);\n }\n /**\n * clone returns a deep copy of self\n * @returns {ExponentialHistogramAccumulation}\n */\n clone() {\n return new ExponentialHistogramAccumulation(this.startTime, this._maxSize, this._recordMinMax, this._sum, this._count, this._zeroCount, this._min, this._max, this.positive.clone(), this.negative.clone(), this._mapping);\n }\n /**\n * _updateBuckets maps the incoming value to a bucket index for the current\n * scale. If the bucket index is outside of the range of the backing array,\n * it will rescale the backing array and update the mapping for the new scale.\n */\n _updateBuckets(buckets, value, increment) {\n let index = this._mapping.mapToIndex(value);\n // rescale the mapping if needed\n let rescalingNeeded = false;\n let high = 0;\n let low = 0;\n if (buckets.length === 0) {\n buckets.indexStart = index;\n buckets.indexEnd = buckets.indexStart;\n buckets.indexBase = buckets.indexStart;\n }\n else if (index < buckets.indexStart &&\n buckets.indexEnd - index >= this._maxSize) {\n rescalingNeeded = true;\n low = index;\n high = buckets.indexEnd;\n }\n else if (index > buckets.indexEnd &&\n index - buckets.indexStart >= this._maxSize) {\n rescalingNeeded = true;\n low = buckets.indexStart;\n high = index;\n }\n // rescale and compute index at new scale\n if (rescalingNeeded) {\n const change = this._changeScale(high, low);\n this._downscale(change);\n index = this._mapping.mapToIndex(value);\n }\n this._incrementIndexBy(buckets, index, increment);\n }\n /**\n * _incrementIndexBy increments the count of the bucket specified by `index`.\n * If the index is outside of the range [buckets.indexStart, buckets.indexEnd]\n * the boundaries of the backing array will be adjusted and more buckets will\n * be added if needed.\n */\n _incrementIndexBy(buckets, index, increment) {\n if (increment === 0) {\n // nothing to do for a zero increment, can happen during a merge operation\n return;\n }\n if (buckets.length === 0) {\n buckets.indexStart = buckets.indexEnd = buckets.indexBase = index;\n }\n if (index < buckets.indexStart) {\n const span = buckets.indexEnd - index;\n if (span >= buckets.backing.length) {\n this._grow(buckets, span + 1);\n }\n buckets.indexStart = index;\n }\n else if (index > buckets.indexEnd) {\n const span = index - buckets.indexStart;\n if (span >= buckets.backing.length) {\n this._grow(buckets, span + 1);\n }\n buckets.indexEnd = index;\n }\n let bucketIndex = index - buckets.indexBase;\n if (bucketIndex < 0) {\n bucketIndex += buckets.backing.length;\n }\n buckets.incrementBucket(bucketIndex, increment);\n }\n /**\n * grow resizes the backing array by doubling in size up to maxSize.\n * This extends the array with a bunch of zeros and copies the\n * existing counts to the same position.\n */\n _grow(buckets, needed) {\n const size = buckets.backing.length;\n const bias = buckets.indexBase - buckets.indexStart;\n const oldPositiveLimit = size - bias;\n let newSize = (0, util_1.nextGreaterSquare)(needed);\n if (newSize > this._maxSize) {\n newSize = this._maxSize;\n }\n const newPositiveLimit = newSize - bias;\n buckets.backing.growTo(newSize, oldPositiveLimit, newPositiveLimit);\n }\n /**\n * _changeScale computes how much downscaling is needed by shifting the\n * high and low values until they are separated by no more than size.\n */\n _changeScale(high, low) {\n let change = 0;\n while (high - low >= this._maxSize) {\n high >>= 1;\n low >>= 1;\n change++;\n }\n return change;\n }\n /**\n * _downscale subtracts `change` from the current mapping scale.\n */\n _downscale(change) {\n if (change === 0) {\n return;\n }\n if (change < 0) {\n // Note: this should be impossible. If we get here it's because\n // there is a bug in the implementation.\n throw new Error(`impossible change of scale: ${this.scale}`);\n }\n const newScale = this._mapping.scale - change;\n this._positive.downscale(change);\n this._negative.downscale(change);\n this._mapping = (0, getMapping_1.getMapping)(newScale);\n }\n /**\n * _minScale is used by diff and merge to compute an ideal combined scale\n */\n _minScale(other) {\n const minScale = Math.min(this.scale, other.scale);\n const highLowPos = HighLow.combine(this._highLowAtScale(this.positive, this.scale, minScale), this._highLowAtScale(other.positive, other.scale, minScale));\n const highLowNeg = HighLow.combine(this._highLowAtScale(this.negative, this.scale, minScale), this._highLowAtScale(other.negative, other.scale, minScale));\n return Math.min(minScale - this._changeScale(highLowPos.high, highLowPos.low), minScale - this._changeScale(highLowNeg.high, highLowNeg.low));\n }\n /**\n * _highLowAtScale is used by diff and merge to compute an ideal combined scale.\n */\n _highLowAtScale(buckets, currentScale, newScale) {\n if (buckets.length === 0) {\n return new HighLow(0, -1);\n }\n const shift = currentScale - newScale;\n return new HighLow(buckets.indexStart >> shift, buckets.indexEnd >> shift);\n }\n /**\n * _mergeBuckets translates index values from another histogram and\n * adds the values into the corresponding buckets of this histogram.\n */\n _mergeBuckets(ours, other, theirs, scale) {\n const theirOffset = theirs.offset;\n const theirChange = other.scale - scale;\n for (let i = 0; i < theirs.length; i++) {\n this._incrementIndexBy(ours, (theirOffset + i) >> theirChange, theirs.at(i));\n }\n }\n /**\n * _diffBuckets translates index values from another histogram and\n * subtracts the values in the corresponding buckets of this histogram.\n */\n _diffBuckets(ours, other, theirs, scale) {\n const theirOffset = theirs.offset;\n const theirChange = other.scale - scale;\n for (let i = 0; i < theirs.length; i++) {\n const ourIndex = (theirOffset + i) >> theirChange;\n let bucketIndex = ourIndex - ours.indexBase;\n if (bucketIndex < 0) {\n bucketIndex += ours.backing.length;\n }\n ours.decrementBucket(bucketIndex, theirs.at(i));\n }\n ours.trim();\n }\n}\nexports.ExponentialHistogramAccumulation = ExponentialHistogramAccumulation;\n/**\n * Aggregator for ExponentialHistogramAccumulations\n */\nclass ExponentialHistogramAggregator {\n /**\n * @param _maxSize Maximum number of buckets for each of the positive\n * and negative ranges, exclusive of the zero-bucket.\n * @param _recordMinMax If set to true, min and max will be recorded.\n * Otherwise, min and max will not be recorded.\n */\n constructor(_maxSize, _recordMinMax) {\n this._maxSize = _maxSize;\n this._recordMinMax = _recordMinMax;\n this.kind = types_1.AggregatorKind.EXPONENTIAL_HISTOGRAM;\n }\n createAccumulation(startTime) {\n return new ExponentialHistogramAccumulation(startTime, this._maxSize, this._recordMinMax);\n }\n /**\n * Return the result of the merge of two exponential histogram accumulations.\n */\n merge(previous, delta) {\n const result = delta.clone();\n result.merge(previous);\n return result;\n }\n /**\n * Returns a new DELTA aggregation by comparing two cumulative measurements.\n */\n diff(previous, current) {\n const result = current.clone();\n result.diff(previous);\n return result;\n }\n toMetricData(descriptor, aggregationTemporality, accumulationByAttributes, endTime) {\n return {\n descriptor,\n aggregationTemporality,\n dataPointType: MetricData_1.DataPointType.EXPONENTIAL_HISTOGRAM,\n dataPoints: accumulationByAttributes.map(([attributes, accumulation]) => {\n const pointValue = accumulation.toPointValue();\n // determine if instrument allows negative values.\n const allowsNegativeValues = descriptor.type === InstrumentDescriptor_1.InstrumentType.GAUGE ||\n descriptor.type === InstrumentDescriptor_1.InstrumentType.UP_DOWN_COUNTER ||\n descriptor.type === InstrumentDescriptor_1.InstrumentType.OBSERVABLE_GAUGE ||\n descriptor.type === InstrumentDescriptor_1.InstrumentType.OBSERVABLE_UP_DOWN_COUNTER;\n return {\n attributes,\n startTime: accumulation.startTime,\n endTime,\n value: {\n min: pointValue.hasMinMax ? pointValue.min : undefined,\n max: pointValue.hasMinMax ? pointValue.max : undefined,\n sum: !allowsNegativeValues ? pointValue.sum : undefined,\n positive: {\n offset: pointValue.positive.offset,\n bucketCounts: pointValue.positive.bucketCounts,\n },\n negative: {\n offset: pointValue.negative.offset,\n bucketCounts: pointValue.negative.bucketCounts,\n },\n count: pointValue.count,\n scale: pointValue.scale,\n zeroCount: pointValue.zeroCount,\n },\n };\n }),\n };\n }\n}\nexports.ExponentialHistogramAggregator = ExponentialHistogramAggregator;\n//# sourceMappingURL=ExponentialHistogram.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.HistogramAggregator = exports.HistogramAccumulation = void 0;\nconst types_1 = require(\"./types\");\nconst MetricData_1 = require(\"../export/MetricData\");\nconst InstrumentDescriptor_1 = require(\"../InstrumentDescriptor\");\nconst utils_1 = require(\"../utils\");\nfunction createNewEmptyCheckpoint(boundaries) {\n const counts = boundaries.map(() => 0);\n counts.push(0);\n return {\n buckets: {\n boundaries,\n counts,\n },\n sum: 0,\n count: 0,\n hasMinMax: false,\n min: Infinity,\n max: -Infinity,\n };\n}\nclass HistogramAccumulation {\n constructor(startTime, _boundaries, _recordMinMax = true, _current = createNewEmptyCheckpoint(_boundaries)) {\n this.startTime = startTime;\n this._boundaries = _boundaries;\n this._recordMinMax = _recordMinMax;\n this._current = _current;\n }\n record(value) {\n // NaN does not fall into any bucket, is not zero and should not be counted,\n // NaN is never greater than max nor less than min, therefore return as there's nothing for us to do.\n if (Number.isNaN(value)) {\n return;\n }\n this._current.count += 1;\n this._current.sum += value;\n if (this._recordMinMax) {\n this._current.min = Math.min(value, this._current.min);\n this._current.max = Math.max(value, this._current.max);\n this._current.hasMinMax = true;\n }\n const idx = (0, utils_1.binarySearchLB)(this._boundaries, value);\n this._current.buckets.counts[idx + 1] += 1;\n }\n setStartTime(startTime) {\n this.startTime = startTime;\n }\n toPointValue() {\n return this._current;\n }\n}\nexports.HistogramAccumulation = HistogramAccumulation;\n/**\n * Basic aggregator which observes events and counts them in pre-defined buckets\n * and provides the total sum and count of all observations.\n */\nclass HistogramAggregator {\n /**\n * @param _boundaries sorted upper bounds of recorded values.\n * @param _recordMinMax If set to true, min and max will be recorded. Otherwise, min and max will not be recorded.\n */\n constructor(_boundaries, _recordMinMax) {\n this._boundaries = _boundaries;\n this._recordMinMax = _recordMinMax;\n this.kind = types_1.AggregatorKind.HISTOGRAM;\n }\n createAccumulation(startTime) {\n return new HistogramAccumulation(startTime, this._boundaries, this._recordMinMax);\n }\n /**\n * Return the result of the merge of two histogram accumulations. As long as one Aggregator\n * instance produces all Accumulations with constant boundaries we don't need to worry about\n * merging accumulations with different boundaries.\n */\n merge(previous, delta) {\n const previousValue = previous.toPointValue();\n const deltaValue = delta.toPointValue();\n const previousCounts = previousValue.buckets.counts;\n const deltaCounts = deltaValue.buckets.counts;\n const mergedCounts = new Array(previousCounts.length);\n for (let idx = 0; idx < previousCounts.length; idx++) {\n mergedCounts[idx] = previousCounts[idx] + deltaCounts[idx];\n }\n let min = Infinity;\n let max = -Infinity;\n if (this._recordMinMax) {\n if (previousValue.hasMinMax && deltaValue.hasMinMax) {\n min = Math.min(previousValue.min, deltaValue.min);\n max = Math.max(previousValue.max, deltaValue.max);\n }\n else if (previousValue.hasMinMax) {\n min = previousValue.min;\n max = previousValue.max;\n }\n else if (deltaValue.hasMinMax) {\n min = deltaValue.min;\n max = deltaValue.max;\n }\n }\n return new HistogramAccumulation(previous.startTime, previousValue.buckets.boundaries, this._recordMinMax, {\n buckets: {\n boundaries: previousValue.buckets.boundaries,\n counts: mergedCounts,\n },\n count: previousValue.count + deltaValue.count,\n sum: previousValue.sum + deltaValue.sum,\n hasMinMax: this._recordMinMax &&\n (previousValue.hasMinMax || deltaValue.hasMinMax),\n min: min,\n max: max,\n });\n }\n /**\n * Returns a new DELTA aggregation by comparing two cumulative measurements.\n */\n diff(previous, current) {\n const previousValue = previous.toPointValue();\n const currentValue = current.toPointValue();\n const previousCounts = previousValue.buckets.counts;\n const currentCounts = currentValue.buckets.counts;\n const diffedCounts = new Array(previousCounts.length);\n for (let idx = 0; idx < previousCounts.length; idx++) {\n diffedCounts[idx] = currentCounts[idx] - previousCounts[idx];\n }\n return new HistogramAccumulation(current.startTime, previousValue.buckets.boundaries, this._recordMinMax, {\n buckets: {\n boundaries: previousValue.buckets.boundaries,\n counts: diffedCounts,\n },\n count: currentValue.count - previousValue.count,\n sum: currentValue.sum - previousValue.sum,\n hasMinMax: false,\n min: Infinity,\n max: -Infinity,\n });\n }\n toMetricData(descriptor, aggregationTemporality, accumulationByAttributes, endTime) {\n return {\n descriptor,\n aggregationTemporality,\n dataPointType: MetricData_1.DataPointType.HISTOGRAM,\n dataPoints: accumulationByAttributes.map(([attributes, accumulation]) => {\n const pointValue = accumulation.toPointValue();\n // determine if instrument allows negative values.\n const allowsNegativeValues = descriptor.type === InstrumentDescriptor_1.InstrumentType.GAUGE ||\n descriptor.type === InstrumentDescriptor_1.InstrumentType.UP_DOWN_COUNTER ||\n descriptor.type === InstrumentDescriptor_1.InstrumentType.OBSERVABLE_GAUGE ||\n descriptor.type === InstrumentDescriptor_1.InstrumentType.OBSERVABLE_UP_DOWN_COUNTER;\n return {\n attributes,\n startTime: accumulation.startTime,\n endTime,\n value: {\n min: pointValue.hasMinMax ? pointValue.min : undefined,\n max: pointValue.hasMinMax ? pointValue.max : undefined,\n sum: !allowsNegativeValues ? pointValue.sum : undefined,\n buckets: pointValue.buckets,\n count: pointValue.count,\n },\n };\n }),\n };\n }\n}\nexports.HistogramAggregator = HistogramAggregator;\n//# sourceMappingURL=Histogram.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.LastValueAggregator = exports.LastValueAccumulation = void 0;\nconst types_1 = require(\"./types\");\nconst core_1 = require(\"@opentelemetry/core\");\nconst MetricData_1 = require(\"../export/MetricData\");\nclass LastValueAccumulation {\n constructor(startTime, _current = 0, sampleTime = [0, 0]) {\n this.startTime = startTime;\n this._current = _current;\n this.sampleTime = sampleTime;\n }\n record(value) {\n this._current = value;\n this.sampleTime = (0, core_1.millisToHrTime)(Date.now());\n }\n setStartTime(startTime) {\n this.startTime = startTime;\n }\n toPointValue() {\n return this._current;\n }\n}\nexports.LastValueAccumulation = LastValueAccumulation;\n/** Basic aggregator which calculates a LastValue from individual measurements. */\nclass LastValueAggregator {\n constructor() {\n this.kind = types_1.AggregatorKind.LAST_VALUE;\n }\n createAccumulation(startTime) {\n return new LastValueAccumulation(startTime);\n }\n /**\n * Returns the result of the merge of the given accumulations.\n *\n * Return the newly captured (delta) accumulation for LastValueAggregator.\n */\n merge(previous, delta) {\n // nanoseconds may lose precisions.\n const latestAccumulation = (0, core_1.hrTimeToMicroseconds)(delta.sampleTime) >=\n (0, core_1.hrTimeToMicroseconds)(previous.sampleTime)\n ? delta\n : previous;\n return new LastValueAccumulation(previous.startTime, latestAccumulation.toPointValue(), latestAccumulation.sampleTime);\n }\n /**\n * Returns a new DELTA aggregation by comparing two cumulative measurements.\n *\n * A delta aggregation is not meaningful to LastValueAggregator, just return\n * the newly captured (delta) accumulation for LastValueAggregator.\n */\n diff(previous, current) {\n // nanoseconds may lose precisions.\n const latestAccumulation = (0, core_1.hrTimeToMicroseconds)(current.sampleTime) >=\n (0, core_1.hrTimeToMicroseconds)(previous.sampleTime)\n ? current\n : previous;\n return new LastValueAccumulation(current.startTime, latestAccumulation.toPointValue(), latestAccumulation.sampleTime);\n }\n toMetricData(descriptor, aggregationTemporality, accumulationByAttributes, endTime) {\n return {\n descriptor,\n aggregationTemporality,\n dataPointType: MetricData_1.DataPointType.GAUGE,\n dataPoints: accumulationByAttributes.map(([attributes, accumulation]) => {\n return {\n attributes,\n startTime: accumulation.startTime,\n endTime,\n value: accumulation.toPointValue(),\n };\n }),\n };\n }\n}\nexports.LastValueAggregator = LastValueAggregator;\n//# sourceMappingURL=LastValue.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SumAggregator = exports.SumAccumulation = void 0;\nconst types_1 = require(\"./types\");\nconst MetricData_1 = require(\"../export/MetricData\");\nclass SumAccumulation {\n constructor(startTime, monotonic, _current = 0, reset = false) {\n this.startTime = startTime;\n this.monotonic = monotonic;\n this._current = _current;\n this.reset = reset;\n }\n record(value) {\n if (this.monotonic && value < 0) {\n return;\n }\n this._current += value;\n }\n setStartTime(startTime) {\n this.startTime = startTime;\n }\n toPointValue() {\n return this._current;\n }\n}\nexports.SumAccumulation = SumAccumulation;\n/** Basic aggregator which calculates a Sum from individual measurements. */\nclass SumAggregator {\n constructor(monotonic) {\n this.monotonic = monotonic;\n this.kind = types_1.AggregatorKind.SUM;\n }\n createAccumulation(startTime) {\n return new SumAccumulation(startTime, this.monotonic);\n }\n /**\n * Returns the result of the merge of the given accumulations.\n */\n merge(previous, delta) {\n const prevPv = previous.toPointValue();\n const deltaPv = delta.toPointValue();\n if (delta.reset) {\n return new SumAccumulation(delta.startTime, this.monotonic, deltaPv, delta.reset);\n }\n return new SumAccumulation(previous.startTime, this.monotonic, prevPv + deltaPv);\n }\n /**\n * Returns a new DELTA aggregation by comparing two cumulative measurements.\n */\n diff(previous, current) {\n const prevPv = previous.toPointValue();\n const currPv = current.toPointValue();\n /**\n * If the SumAggregator is a monotonic one and the previous point value is\n * greater than the current one, a reset is deemed to be happened.\n * Return the current point value to prevent the value from been reset.\n */\n if (this.monotonic && prevPv > currPv) {\n return new SumAccumulation(current.startTime, this.monotonic, currPv, true);\n }\n return new SumAccumulation(current.startTime, this.monotonic, currPv - prevPv);\n }\n toMetricData(descriptor, aggregationTemporality, accumulationByAttributes, endTime) {\n return {\n descriptor,\n aggregationTemporality,\n dataPointType: MetricData_1.DataPointType.SUM,\n dataPoints: accumulationByAttributes.map(([attributes, accumulation]) => {\n return {\n attributes,\n startTime: accumulation.startTime,\n endTime,\n value: accumulation.toPointValue(),\n };\n }),\n isMonotonic: this.monotonic,\n };\n }\n}\nexports.SumAggregator = SumAggregator;\n//# sourceMappingURL=Sum.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Buckets = void 0;\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nclass Buckets {\n /**\n * The term index refers to the number of the exponential histogram bucket\n * used to determine its boundaries. The lower boundary of a bucket is\n * determined by base ** index and the upper boundary of a bucket is\n * determined by base ** (index + 1). index values are signed to account\n * for values less than or equal to 1.\n *\n * indexBase is the index of the 0th position in the\n * backing array, i.e., backing[0] is the count\n * in the bucket with index `indexBase`.\n *\n * indexStart is the smallest index value represented\n * in the backing array.\n *\n * indexEnd is the largest index value represented in\n * the backing array.\n */\n constructor(backing = new BucketsBacking(), indexBase = 0, indexStart = 0, indexEnd = 0) {\n this.backing = backing;\n this.indexBase = indexBase;\n this.indexStart = indexStart;\n this.indexEnd = indexEnd;\n }\n /**\n * Offset is the bucket index of the smallest entry in the counts array\n * @returns {number}\n */\n get offset() {\n return this.indexStart;\n }\n /**\n * Buckets is a view into the backing array.\n * @returns {number}\n */\n get length() {\n if (this.backing.length === 0) {\n return 0;\n }\n if (this.indexEnd === this.indexStart && this.at(0) === 0) {\n return 0;\n }\n return this.indexEnd - this.indexStart + 1;\n }\n /**\n * An array of counts, where count[i] carries the count\n * of the bucket at index (offset+i). count[i] is the count of\n * values greater than base^(offset+i) and less than or equal to\n * base^(offset+i+1).\n * @returns {number} The logical counts based on the backing array\n */\n counts() {\n return Array.from({ length: this.length }, (_, i) => this.at(i));\n }\n /**\n * At returns the count of the bucket at a position in the logical\n * array of counts.\n * @param position\n * @returns {number}\n */\n at(position) {\n const bias = this.indexBase - this.indexStart;\n if (position < bias) {\n position += this.backing.length;\n }\n position -= bias;\n return this.backing.countAt(position);\n }\n /**\n * incrementBucket increments the backing array index by `increment`\n * @param bucketIndex\n * @param increment\n */\n incrementBucket(bucketIndex, increment) {\n this.backing.increment(bucketIndex, increment);\n }\n /**\n * decrementBucket decrements the backing array index by `decrement`\n * if decrement is greater than the current value, it's set to 0.\n * @param bucketIndex\n * @param decrement\n */\n decrementBucket(bucketIndex, decrement) {\n this.backing.decrement(bucketIndex, decrement);\n }\n /**\n * trim removes leading and / or trailing zero buckets (which can occur\n * after diffing two histos) and rotates the backing array so that the\n * smallest non-zero index is in the 0th position of the backing array\n */\n trim() {\n for (let i = 0; i < this.length; i++) {\n if (this.at(i) !== 0) {\n this.indexStart += i;\n break;\n }\n else if (i === this.length - 1) {\n //the entire array is zeroed out\n this.indexStart = this.indexEnd = this.indexBase = 0;\n return;\n }\n }\n for (let i = this.length - 1; i >= 0; i--) {\n if (this.at(i) !== 0) {\n this.indexEnd -= this.length - i - 1;\n break;\n }\n }\n this._rotate();\n }\n /**\n * downscale first rotates, then collapses 2**`by`-to-1 buckets.\n * @param by\n */\n downscale(by) {\n this._rotate();\n const size = 1 + this.indexEnd - this.indexStart;\n const each = 1 << by;\n let inpos = 0;\n let outpos = 0;\n for (let pos = this.indexStart; pos <= this.indexEnd;) {\n let mod = pos % each;\n if (mod < 0) {\n mod += each;\n }\n for (let i = mod; i < each && inpos < size; i++) {\n this._relocateBucket(outpos, inpos);\n inpos++;\n pos++;\n }\n outpos++;\n }\n this.indexStart >>= by;\n this.indexEnd >>= by;\n this.indexBase = this.indexStart;\n }\n /**\n * Clone returns a deep copy of Buckets\n * @returns {Buckets}\n */\n clone() {\n return new Buckets(this.backing.clone(), this.indexBase, this.indexStart, this.indexEnd);\n }\n /**\n * _rotate shifts the backing array contents so that indexStart ==\n * indexBase to simplify the downscale logic.\n */\n _rotate() {\n const bias = this.indexBase - this.indexStart;\n if (bias === 0) {\n return;\n }\n else if (bias > 0) {\n this.backing.reverse(0, this.backing.length);\n this.backing.reverse(0, bias);\n this.backing.reverse(bias, this.backing.length);\n }\n else {\n // negative bias, this can happen when diffing two histograms\n this.backing.reverse(0, this.backing.length);\n this.backing.reverse(0, this.backing.length + bias);\n }\n this.indexBase = this.indexStart;\n }\n /**\n * _relocateBucket adds the count in counts[src] to counts[dest] and\n * resets count[src] to zero.\n */\n _relocateBucket(dest, src) {\n if (dest === src) {\n return;\n }\n this.incrementBucket(dest, this.backing.emptyBucket(src));\n }\n}\nexports.Buckets = Buckets;\n/**\n * BucketsBacking holds the raw buckets and some utility methods to\n * manage them.\n */\nclass BucketsBacking {\n constructor(_counts = [0]) {\n this._counts = _counts;\n }\n /**\n * length returns the physical size of the backing array, which\n * is >= buckets.length()\n */\n get length() {\n return this._counts.length;\n }\n /**\n * countAt returns the count in a specific bucket\n */\n countAt(pos) {\n return this._counts[pos];\n }\n /**\n * growTo grows a backing array and copies old entries\n * into their correct new positions.\n */\n growTo(newSize, oldPositiveLimit, newPositiveLimit) {\n const tmp = new Array(newSize).fill(0);\n tmp.splice(newPositiveLimit, this._counts.length - oldPositiveLimit, ...this._counts.slice(oldPositiveLimit));\n tmp.splice(0, oldPositiveLimit, ...this._counts.slice(0, oldPositiveLimit));\n this._counts = tmp;\n }\n /**\n * reverse the items in the backing array in the range [from, limit).\n */\n reverse(from, limit) {\n const num = Math.floor((from + limit) / 2) - from;\n for (let i = 0; i < num; i++) {\n const tmp = this._counts[from + i];\n this._counts[from + i] = this._counts[limit - i - 1];\n this._counts[limit - i - 1] = tmp;\n }\n }\n /**\n * emptyBucket empties the count from a bucket, for\n * moving into another.\n */\n emptyBucket(src) {\n const tmp = this._counts[src];\n this._counts[src] = 0;\n return tmp;\n }\n /**\n * increments a bucket by `increment`\n */\n increment(bucketIndex, increment) {\n this._counts[bucketIndex] += increment;\n }\n /**\n * decrements a bucket by `decrement`\n */\n decrement(bucketIndex, decrement) {\n if (this._counts[bucketIndex] >= decrement) {\n this._counts[bucketIndex] -= decrement;\n }\n else {\n // this should not happen, but we're being defensive against\n // negative counts.\n this._counts[bucketIndex] = 0;\n }\n }\n /**\n * clone returns a deep copy of BucketsBacking\n */\n clone() {\n return new BucketsBacking([...this._counts]);\n }\n}\n//# sourceMappingURL=Buckets.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ExponentMapping = void 0;\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nconst ieee754 = require(\"./ieee754\");\nconst util = require(\"../util\");\nconst types_1 = require(\"./types\");\n/**\n * ExponentMapping implements exponential mapping functions for\n * scales <=0. For scales > 0 LogarithmMapping should be used.\n */\nclass ExponentMapping {\n constructor(scale) {\n this._shift = -scale;\n }\n /**\n * Maps positive floating point values to indexes corresponding to scale\n * @param value\n * @returns {number} index for provided value at the current scale\n */\n mapToIndex(value) {\n if (value < ieee754.MIN_VALUE) {\n return this._minNormalLowerBoundaryIndex();\n }\n const exp = ieee754.getNormalBase2(value);\n // In case the value is an exact power of two, compute a\n // correction of -1. Note, we are using a custom _rightShift\n // to accommodate a 52-bit argument, which the native bitwise\n // operators do not support\n const correction = this._rightShift(ieee754.getSignificand(value) - 1, ieee754.SIGNIFICAND_WIDTH);\n return (exp + correction) >> this._shift;\n }\n /**\n * Returns the lower bucket boundary for the given index for scale\n *\n * @param index\n * @returns {number}\n */\n lowerBoundary(index) {\n const minIndex = this._minNormalLowerBoundaryIndex();\n if (index < minIndex) {\n throw new types_1.MappingError(`underflow: ${index} is < minimum lower boundary: ${minIndex}`);\n }\n const maxIndex = this._maxNormalLowerBoundaryIndex();\n if (index > maxIndex) {\n throw new types_1.MappingError(`overflow: ${index} is > maximum lower boundary: ${maxIndex}`);\n }\n return util.ldexp(1, index << this._shift);\n }\n /**\n * The scale used by this mapping\n * @returns {number}\n */\n get scale() {\n if (this._shift === 0) {\n return 0;\n }\n return -this._shift;\n }\n _minNormalLowerBoundaryIndex() {\n let index = ieee754.MIN_NORMAL_EXPONENT >> this._shift;\n if (this._shift < 2) {\n index--;\n }\n return index;\n }\n _maxNormalLowerBoundaryIndex() {\n return ieee754.MAX_NORMAL_EXPONENT >> this._shift;\n }\n _rightShift(value, shift) {\n return Math.floor(value * Math.pow(2, -shift));\n }\n}\nexports.ExponentMapping = ExponentMapping;\n//# sourceMappingURL=ExponentMapping.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.LogarithmMapping = void 0;\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nconst ieee754 = require(\"./ieee754\");\nconst util = require(\"../util\");\nconst types_1 = require(\"./types\");\n/**\n * LogarithmMapping implements exponential mapping functions for scale > 0.\n * For scales <= 0 the exponent mapping should be used.\n */\nclass LogarithmMapping {\n constructor(scale) {\n this._scale = scale;\n this._scaleFactor = util.ldexp(Math.LOG2E, scale);\n this._inverseFactor = util.ldexp(Math.LN2, -scale);\n }\n /**\n * Maps positive floating point values to indexes corresponding to scale\n * @param value\n * @returns {number} index for provided value at the current scale\n */\n mapToIndex(value) {\n if (value <= ieee754.MIN_VALUE) {\n return this._minNormalLowerBoundaryIndex() - 1;\n }\n // exact power of two special case\n if (ieee754.getSignificand(value) === 0) {\n const exp = ieee754.getNormalBase2(value);\n return (exp << this._scale) - 1;\n }\n // non-power of two cases. use Math.floor to round the scaled logarithm\n const index = Math.floor(Math.log(value) * this._scaleFactor);\n const maxIndex = this._maxNormalLowerBoundaryIndex();\n if (index >= maxIndex) {\n return maxIndex;\n }\n return index;\n }\n /**\n * Returns the lower bucket boundary for the given index for scale\n *\n * @param index\n * @returns {number}\n */\n lowerBoundary(index) {\n const maxIndex = this._maxNormalLowerBoundaryIndex();\n if (index >= maxIndex) {\n if (index === maxIndex) {\n return 2 * Math.exp((index - (1 << this._scale)) / this._scaleFactor);\n }\n throw new types_1.MappingError(`overflow: ${index} is > maximum lower boundary: ${maxIndex}`);\n }\n const minIndex = this._minNormalLowerBoundaryIndex();\n if (index <= minIndex) {\n if (index === minIndex) {\n return ieee754.MIN_VALUE;\n }\n else if (index === minIndex - 1) {\n return Math.exp((index + (1 << this._scale)) / this._scaleFactor) / 2;\n }\n throw new types_1.MappingError(`overflow: ${index} is < minimum lower boundary: ${minIndex}`);\n }\n return Math.exp(index * this._inverseFactor);\n }\n /**\n * The scale used by this mapping\n * @returns {number}\n */\n get scale() {\n return this._scale;\n }\n _minNormalLowerBoundaryIndex() {\n return ieee754.MIN_NORMAL_EXPONENT << this._scale;\n }\n _maxNormalLowerBoundaryIndex() {\n return ((ieee754.MAX_NORMAL_EXPONENT + 1) << this._scale) - 1;\n }\n}\nexports.LogarithmMapping = LogarithmMapping;\n//# sourceMappingURL=LogarithmMapping.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getMapping = void 0;\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nconst ExponentMapping_1 = require(\"./ExponentMapping\");\nconst LogarithmMapping_1 = require(\"./LogarithmMapping\");\nconst types_1 = require(\"./types\");\nconst MIN_SCALE = -10;\nconst MAX_SCALE = 20;\nconst PREBUILT_MAPPINGS = Array.from({ length: 31 }, (_, i) => {\n if (i > 10) {\n return new LogarithmMapping_1.LogarithmMapping(i - 10);\n }\n return new ExponentMapping_1.ExponentMapping(i - 10);\n});\n/**\n * getMapping returns an appropriate mapping for the given scale. For scales -10\n * to 0 the underlying type will be ExponentMapping. For scales 1 to 20 the\n * underlying type will be LogarithmMapping.\n * @param scale a number in the range [-10, 20]\n * @returns {Mapping}\n */\nfunction getMapping(scale) {\n if (scale > MAX_SCALE || scale < MIN_SCALE) {\n throw new types_1.MappingError(`expected scale >= ${MIN_SCALE} && <= ${MAX_SCALE}, got: ${scale}`);\n }\n // mappings are offset by 10. scale -10 is at position 0 and scale 20 is at 30\n return PREBUILT_MAPPINGS[scale + 10];\n}\nexports.getMapping = getMapping;\n//# sourceMappingURL=getMapping.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getSignificand = exports.getNormalBase2 = exports.MIN_VALUE = exports.MAX_NORMAL_EXPONENT = exports.MIN_NORMAL_EXPONENT = exports.SIGNIFICAND_WIDTH = void 0;\n/**\n * The functions and constants in this file allow us to interact\n * with the internal representation of an IEEE 64-bit floating point\n * number. We need to work with all 64-bits, thus, care needs to be\n * taken when working with Javascript's bitwise operators (<<, >>, &,\n * |, etc) as they truncate operands to 32-bits. In order to work around\n * this we work with the 64-bits as two 32-bit halves, perform bitwise\n * operations on them independently, and combine the results (if needed).\n */\nexports.SIGNIFICAND_WIDTH = 52;\n/**\n * EXPONENT_MASK is set to 1 for the hi 32-bits of an IEEE 754\n * floating point exponent: 0x7ff00000.\n */\nconst EXPONENT_MASK = 0x7ff00000;\n/**\n * SIGNIFICAND_MASK is the mask for the significand portion of the hi 32-bits\n * of an IEEE 754 double-precision floating-point value: 0xfffff\n */\nconst SIGNIFICAND_MASK = 0xfffff;\n/**\n * EXPONENT_BIAS is the exponent bias specified for encoding\n * the IEEE 754 double-precision floating point exponent: 1023\n */\nconst EXPONENT_BIAS = 1023;\n/**\n * MIN_NORMAL_EXPONENT is the minimum exponent of a normalized\n * floating point: -1022.\n */\nexports.MIN_NORMAL_EXPONENT = -EXPONENT_BIAS + 1;\n/**\n * MAX_NORMAL_EXPONENT is the maximum exponent of a normalized\n * floating point: 1023.\n */\nexports.MAX_NORMAL_EXPONENT = EXPONENT_BIAS;\n/**\n * MIN_VALUE is the smallest normal number\n */\nexports.MIN_VALUE = Math.pow(2, -1022);\n/**\n * getNormalBase2 extracts the normalized base-2 fractional exponent.\n * This returns k for the equation f x 2**k where f is\n * in the range [1, 2). Note that this function is not called for\n * subnormal numbers.\n * @param {number} value - the value to determine normalized base-2 fractional\n * exponent for\n * @returns {number} the normalized base-2 exponent\n */\nfunction getNormalBase2(value) {\n const dv = new DataView(new ArrayBuffer(8));\n dv.setFloat64(0, value);\n // access the raw 64-bit float as 32-bit uints\n const hiBits = dv.getUint32(0);\n const expBits = (hiBits & EXPONENT_MASK) >> 20;\n return expBits - EXPONENT_BIAS;\n}\nexports.getNormalBase2 = getNormalBase2;\n/**\n * GetSignificand returns the 52 bit (unsigned) significand as a signed value.\n * @param {number} value - the floating point number to extract the significand from\n * @returns {number} The 52-bit significand\n */\nfunction getSignificand(value) {\n const dv = new DataView(new ArrayBuffer(8));\n dv.setFloat64(0, value);\n // access the raw 64-bit float as two 32-bit uints\n const hiBits = dv.getUint32(0);\n const loBits = dv.getUint32(4);\n // extract the significand bits from the hi bits and left shift 32 places note:\n // we can't use the native << operator as it will truncate the result to 32-bits\n const significandHiBits = (hiBits & SIGNIFICAND_MASK) * Math.pow(2, 32);\n // combine the hi and lo bits and return\n return significandHiBits + loBits;\n}\nexports.getSignificand = getSignificand;\n//# sourceMappingURL=ieee754.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MappingError = void 0;\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nclass MappingError extends Error {\n}\nexports.MappingError = MappingError;\n//# sourceMappingURL=types.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.nextGreaterSquare = exports.ldexp = void 0;\n/**\n * Note: other languages provide this as a built in function. This is\n * a naive, but functionally correct implementation. This is used sparingly,\n * when creating a new mapping in a running application.\n *\n * ldexp returns frac × 2**exp. With the following special cases:\n * ldexp(±0, exp) = ±0\n * ldexp(±Inf, exp) = ±Inf\n * ldexp(NaN, exp) = NaN\n * @param frac\n * @param exp\n * @returns {number}\n */\nfunction ldexp(frac, exp) {\n if (frac === 0 ||\n frac === Number.POSITIVE_INFINITY ||\n frac === Number.NEGATIVE_INFINITY ||\n Number.isNaN(frac)) {\n return frac;\n }\n return frac * Math.pow(2, exp);\n}\nexports.ldexp = ldexp;\n/**\n * Computes the next power of two that is greater than or equal to v.\n * This implementation more efficient than, but functionally equivalent\n * to Math.pow(2, Math.ceil(Math.log(x)/Math.log(2))).\n * @param v\n * @returns {number}\n */\nfunction nextGreaterSquare(v) {\n // The following expression computes the least power-of-two\n // that is >= v. There are a number of tricky ways to\n // do this, see https://stackoverflow.com/questions/466204/rounding-up-to-next-power-of-2\n v--;\n v |= v >> 1;\n v |= v >> 2;\n v |= v >> 4;\n v |= v >> 8;\n v |= v >> 16;\n v++;\n return v;\n}\nexports.nextGreaterSquare = nextGreaterSquare;\n//# sourceMappingURL=util.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./Drop\"), exports);\n__exportStar(require(\"./Histogram\"), exports);\n__exportStar(require(\"./ExponentialHistogram\"), exports);\n__exportStar(require(\"./LastValue\"), exports);\n__exportStar(require(\"./Sum\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AggregatorKind = void 0;\n/** The kind of aggregator. */\nvar AggregatorKind;\n(function (AggregatorKind) {\n AggregatorKind[AggregatorKind[\"DROP\"] = 0] = \"DROP\";\n AggregatorKind[AggregatorKind[\"SUM\"] = 1] = \"SUM\";\n AggregatorKind[AggregatorKind[\"LAST_VALUE\"] = 2] = \"LAST_VALUE\";\n AggregatorKind[AggregatorKind[\"HISTOGRAM\"] = 3] = \"HISTOGRAM\";\n AggregatorKind[AggregatorKind[\"EXPONENTIAL_HISTOGRAM\"] = 4] = \"EXPONENTIAL_HISTOGRAM\";\n})(AggregatorKind = exports.AggregatorKind || (exports.AggregatorKind = {}));\n//# sourceMappingURL=types.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DEFAULT_AGGREGATION_TEMPORALITY_SELECTOR = exports.DEFAULT_AGGREGATION_SELECTOR = void 0;\nconst Aggregation_1 = require(\"../view/Aggregation\");\nconst AggregationTemporality_1 = require(\"./AggregationTemporality\");\nconst DEFAULT_AGGREGATION_SELECTOR = _instrumentType => Aggregation_1.Aggregation.Default();\nexports.DEFAULT_AGGREGATION_SELECTOR = DEFAULT_AGGREGATION_SELECTOR;\nconst DEFAULT_AGGREGATION_TEMPORALITY_SELECTOR = _instrumentType => AggregationTemporality_1.AggregationTemporality.CUMULATIVE;\nexports.DEFAULT_AGGREGATION_TEMPORALITY_SELECTOR = DEFAULT_AGGREGATION_TEMPORALITY_SELECTOR;\n//# sourceMappingURL=AggregationSelector.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AggregationTemporality = void 0;\n/**\n * AggregationTemporality indicates the way additive quantities are expressed.\n */\nvar AggregationTemporality;\n(function (AggregationTemporality) {\n AggregationTemporality[AggregationTemporality[\"DELTA\"] = 0] = \"DELTA\";\n AggregationTemporality[AggregationTemporality[\"CUMULATIVE\"] = 1] = \"CUMULATIVE\";\n})(AggregationTemporality = exports.AggregationTemporality || (exports.AggregationTemporality = {}));\n//# sourceMappingURL=AggregationTemporality.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ConsoleMetricExporter = void 0;\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nconst core_1 = require(\"@opentelemetry/core\");\nconst AggregationSelector_1 = require(\"./AggregationSelector\");\n/* eslint-disable no-console */\nclass ConsoleMetricExporter {\n constructor(options) {\n var _a;\n this._shutdown = false;\n this._temporalitySelector =\n (_a = options === null || options === void 0 ? void 0 : options.temporalitySelector) !== null && _a !== void 0 ? _a : AggregationSelector_1.DEFAULT_AGGREGATION_TEMPORALITY_SELECTOR;\n }\n export(metrics, resultCallback) {\n if (this._shutdown) {\n // If the exporter is shutting down, by spec, we need to return FAILED as export result\n setImmediate(resultCallback, { code: core_1.ExportResultCode.FAILED });\n return;\n }\n return ConsoleMetricExporter._sendMetrics(metrics, resultCallback);\n }\n forceFlush() {\n return Promise.resolve();\n }\n selectAggregationTemporality(_instrumentType) {\n return this._temporalitySelector(_instrumentType);\n }\n shutdown() {\n this._shutdown = true;\n return Promise.resolve();\n }\n static _sendMetrics(metrics, done) {\n for (const scopeMetrics of metrics.scopeMetrics) {\n for (const metric of scopeMetrics.metrics) {\n console.dir({\n descriptor: metric.descriptor,\n dataPointType: metric.dataPointType,\n dataPoints: metric.dataPoints,\n }, { depth: null });\n }\n }\n done({ code: core_1.ExportResultCode.SUCCESS });\n }\n}\nexports.ConsoleMetricExporter = ConsoleMetricExporter;\n//# sourceMappingURL=ConsoleMetricExporter.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.InMemoryMetricExporter = void 0;\nconst core_1 = require(\"@opentelemetry/core\");\n/**\n * In-memory Metrics Exporter is a Push Metric Exporter\n * which accumulates metrics data in the local memory and\n * allows to inspect it (useful for e.g. unit tests).\n */\nclass InMemoryMetricExporter {\n constructor(aggregationTemporality) {\n this._shutdown = false;\n this._metrics = [];\n this._aggregationTemporality = aggregationTemporality;\n }\n /**\n * @inheritedDoc\n */\n export(metrics, resultCallback) {\n // Avoid storing metrics when exporter is shutdown\n if (this._shutdown) {\n setTimeout(() => resultCallback({ code: core_1.ExportResultCode.FAILED }), 0);\n return;\n }\n this._metrics.push(metrics);\n setTimeout(() => resultCallback({ code: core_1.ExportResultCode.SUCCESS }), 0);\n }\n /**\n * Returns all the collected resource metrics\n * @returns ResourceMetrics[]\n */\n getMetrics() {\n return this._metrics;\n }\n forceFlush() {\n return Promise.resolve();\n }\n reset() {\n this._metrics = [];\n }\n selectAggregationTemporality(_instrumentType) {\n return this._aggregationTemporality;\n }\n shutdown() {\n this._shutdown = true;\n return Promise.resolve();\n }\n}\nexports.InMemoryMetricExporter = InMemoryMetricExporter;\n//# sourceMappingURL=InMemoryMetricExporter.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DataPointType = void 0;\n/**\n * The aggregated point data type.\n */\nvar DataPointType;\n(function (DataPointType) {\n /**\n * A histogram data point contains a histogram statistics of collected\n * values with a list of explicit bucket boundaries and statistics such\n * as min, max, count, and sum of all collected values.\n */\n DataPointType[DataPointType[\"HISTOGRAM\"] = 0] = \"HISTOGRAM\";\n /**\n * An exponential histogram data point contains a histogram statistics of\n * collected values where bucket boundaries are automatically calculated\n * using an exponential function, and statistics such as min, max, count,\n * and sum of all collected values.\n */\n DataPointType[DataPointType[\"EXPONENTIAL_HISTOGRAM\"] = 1] = \"EXPONENTIAL_HISTOGRAM\";\n /**\n * A gauge metric data point has only a single numeric value.\n */\n DataPointType[DataPointType[\"GAUGE\"] = 2] = \"GAUGE\";\n /**\n * A sum metric data point has a single numeric value and a\n * monotonicity-indicator.\n */\n DataPointType[DataPointType[\"SUM\"] = 3] = \"SUM\";\n})(DataPointType = exports.DataPointType || (exports.DataPointType = {}));\n//# sourceMappingURL=MetricData.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MetricReader = void 0;\nconst api = require(\"@opentelemetry/api\");\nconst utils_1 = require(\"../utils\");\nconst AggregationSelector_1 = require(\"./AggregationSelector\");\n/**\n * A registered reader of metrics that, when linked to a {@link MetricProducer}, offers global\n * control over metrics.\n */\nclass MetricReader {\n constructor(options) {\n var _a, _b, _c;\n // Tracks the shutdown state.\n // TODO: use BindOncePromise here once a new version of @opentelemetry/core is available.\n this._shutdown = false;\n this._aggregationSelector =\n (_a = options === null || options === void 0 ? void 0 : options.aggregationSelector) !== null && _a !== void 0 ? _a : AggregationSelector_1.DEFAULT_AGGREGATION_SELECTOR;\n this._aggregationTemporalitySelector =\n (_b = options === null || options === void 0 ? void 0 : options.aggregationTemporalitySelector) !== null && _b !== void 0 ? _b : AggregationSelector_1.DEFAULT_AGGREGATION_TEMPORALITY_SELECTOR;\n this._metricProducers = (_c = options === null || options === void 0 ? void 0 : options.metricProducers) !== null && _c !== void 0 ? _c : [];\n }\n /**\n * Set the {@link MetricProducer} used by this instance. **This should only be called by the\n * SDK and should be considered internal.**\n *\n * To add additional {@link MetricProducer}s to a {@link MetricReader}, pass them to the\n * constructor as {@link MetricReaderOptions.metricProducers}.\n *\n * @internal\n * @param metricProducer\n */\n setMetricProducer(metricProducer) {\n if (this._sdkMetricProducer) {\n throw new Error('MetricReader can not be bound to a MeterProvider again.');\n }\n this._sdkMetricProducer = metricProducer;\n this.onInitialized();\n }\n /**\n * Select the {@link Aggregation} for the given {@link InstrumentType} for this\n * reader.\n */\n selectAggregation(instrumentType) {\n return this._aggregationSelector(instrumentType);\n }\n /**\n * Select the {@link AggregationTemporality} for the given\n * {@link InstrumentType} for this reader.\n */\n selectAggregationTemporality(instrumentType) {\n return this._aggregationTemporalitySelector(instrumentType);\n }\n /**\n * Handle once the SDK has initialized this {@link MetricReader}\n * Overriding this method is optional.\n */\n onInitialized() {\n // Default implementation is empty.\n }\n /**\n * Collect all metrics from the associated {@link MetricProducer}\n */\n async collect(options) {\n if (this._sdkMetricProducer === undefined) {\n throw new Error('MetricReader is not bound to a MetricProducer');\n }\n // Subsequent invocations to collect are not allowed. SDKs SHOULD return some failure for these calls.\n if (this._shutdown) {\n throw new Error('MetricReader is shutdown');\n }\n const [sdkCollectionResults, ...additionalCollectionResults] = await Promise.all([\n this._sdkMetricProducer.collect({\n timeoutMillis: options === null || options === void 0 ? void 0 : options.timeoutMillis,\n }),\n ...this._metricProducers.map(producer => producer.collect({\n timeoutMillis: options === null || options === void 0 ? void 0 : options.timeoutMillis,\n })),\n ]);\n // Merge the results, keeping the SDK's Resource\n const errors = sdkCollectionResults.errors.concat((0, utils_1.FlatMap)(additionalCollectionResults, result => result.errors));\n const resource = sdkCollectionResults.resourceMetrics.resource;\n const scopeMetrics = sdkCollectionResults.resourceMetrics.scopeMetrics.concat((0, utils_1.FlatMap)(additionalCollectionResults, result => result.resourceMetrics.scopeMetrics));\n return {\n resourceMetrics: {\n resource,\n scopeMetrics,\n },\n errors,\n };\n }\n /**\n * Shuts down the metric reader, the promise will reject after the optional timeout or resolve after completion.\n *\n *

NOTE: this operation will continue even after the promise rejects due to a timeout.\n * @param options options with timeout.\n */\n async shutdown(options) {\n // Do not call shutdown again if it has already been called.\n if (this._shutdown) {\n api.diag.error('Cannot call shutdown twice.');\n return;\n }\n // No timeout if timeoutMillis is undefined or null.\n if ((options === null || options === void 0 ? void 0 : options.timeoutMillis) == null) {\n await this.onShutdown();\n }\n else {\n await (0, utils_1.callWithTimeout)(this.onShutdown(), options.timeoutMillis);\n }\n this._shutdown = true;\n }\n /**\n * Flushes metrics read by this reader, the promise will reject after the optional timeout or resolve after completion.\n *\n *

NOTE: this operation will continue even after the promise rejects due to a timeout.\n * @param options options with timeout.\n */\n async forceFlush(options) {\n if (this._shutdown) {\n api.diag.warn('Cannot forceFlush on already shutdown MetricReader.');\n return;\n }\n // No timeout if timeoutMillis is undefined or null.\n if ((options === null || options === void 0 ? void 0 : options.timeoutMillis) == null) {\n await this.onForceFlush();\n return;\n }\n await (0, utils_1.callWithTimeout)(this.onForceFlush(), options.timeoutMillis);\n }\n}\nexports.MetricReader = MetricReader;\n//# sourceMappingURL=MetricReader.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PeriodicExportingMetricReader = void 0;\nconst api = require(\"@opentelemetry/api\");\nconst core_1 = require(\"@opentelemetry/core\");\nconst MetricReader_1 = require(\"./MetricReader\");\nconst utils_1 = require(\"../utils\");\nconst api_1 = require(\"@opentelemetry/api\");\n/**\n * {@link MetricReader} which collects metrics based on a user-configurable time interval, and passes the metrics to\n * the configured {@link PushMetricExporter}\n */\nclass PeriodicExportingMetricReader extends MetricReader_1.MetricReader {\n constructor(options) {\n var _a, _b, _c, _d;\n super({\n aggregationSelector: (_a = options.exporter.selectAggregation) === null || _a === void 0 ? void 0 : _a.bind(options.exporter),\n aggregationTemporalitySelector: (_b = options.exporter.selectAggregationTemporality) === null || _b === void 0 ? void 0 : _b.bind(options.exporter),\n metricProducers: options.metricProducers,\n });\n if (options.exportIntervalMillis !== undefined &&\n options.exportIntervalMillis <= 0) {\n throw Error('exportIntervalMillis must be greater than 0');\n }\n if (options.exportTimeoutMillis !== undefined &&\n options.exportTimeoutMillis <= 0) {\n throw Error('exportTimeoutMillis must be greater than 0');\n }\n if (options.exportTimeoutMillis !== undefined &&\n options.exportIntervalMillis !== undefined &&\n options.exportIntervalMillis < options.exportTimeoutMillis) {\n throw Error('exportIntervalMillis must be greater than or equal to exportTimeoutMillis');\n }\n this._exportInterval = (_c = options.exportIntervalMillis) !== null && _c !== void 0 ? _c : 60000;\n this._exportTimeout = (_d = options.exportTimeoutMillis) !== null && _d !== void 0 ? _d : 30000;\n this._exporter = options.exporter;\n }\n async _runOnce() {\n try {\n await (0, utils_1.callWithTimeout)(this._doRun(), this._exportTimeout);\n }\n catch (err) {\n if (err instanceof utils_1.TimeoutError) {\n api.diag.error('Export took longer than %s milliseconds and timed out.', this._exportTimeout);\n return;\n }\n (0, core_1.globalErrorHandler)(err);\n }\n }\n async _doRun() {\n var _a, _b;\n const { resourceMetrics, errors } = await this.collect({\n timeoutMillis: this._exportTimeout,\n });\n if (errors.length > 0) {\n api.diag.error('PeriodicExportingMetricReader: metrics collection errors', ...errors);\n }\n const doExport = async () => {\n const result = await core_1.internal._export(this._exporter, resourceMetrics);\n if (result.code !== core_1.ExportResultCode.SUCCESS) {\n throw new Error(`PeriodicExportingMetricReader: metrics export failed (error ${result.error})`);\n }\n };\n // Avoid scheduling a promise to make the behavior more predictable and easier to test\n if (resourceMetrics.resource.asyncAttributesPending) {\n (_b = (_a = resourceMetrics.resource).waitForAsyncAttributes) === null || _b === void 0 ? void 0 : _b.call(_a).then(doExport, err => api_1.diag.debug('Error while resolving async portion of resource: ', err));\n }\n else {\n await doExport();\n }\n }\n onInitialized() {\n // start running the interval as soon as this reader is initialized and keep handle for shutdown.\n this._interval = setInterval(() => {\n // this._runOnce never rejects. Using void operator to suppress @typescript-eslint/no-floating-promises.\n void this._runOnce();\n }, this._exportInterval);\n (0, core_1.unrefTimer)(this._interval);\n }\n async onForceFlush() {\n await this._runOnce();\n await this._exporter.forceFlush();\n }\n async onShutdown() {\n if (this._interval) {\n clearInterval(this._interval);\n }\n await this._exporter.shutdown();\n }\n}\nexports.PeriodicExportingMetricReader = PeriodicExportingMetricReader;\n//# sourceMappingURL=PeriodicExportingMetricReader.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TimeoutError = exports.View = exports.Aggregation = exports.SumAggregation = exports.LastValueAggregation = exports.HistogramAggregation = exports.DropAggregation = exports.ExponentialHistogramAggregation = exports.ExplicitBucketHistogramAggregation = exports.DefaultAggregation = exports.MeterProvider = exports.InstrumentType = exports.ConsoleMetricExporter = exports.InMemoryMetricExporter = exports.PeriodicExportingMetricReader = exports.MetricReader = exports.DataPointType = exports.AggregationTemporality = void 0;\nvar AggregationTemporality_1 = require(\"./export/AggregationTemporality\");\nObject.defineProperty(exports, \"AggregationTemporality\", { enumerable: true, get: function () { return AggregationTemporality_1.AggregationTemporality; } });\nvar MetricData_1 = require(\"./export/MetricData\");\nObject.defineProperty(exports, \"DataPointType\", { enumerable: true, get: function () { return MetricData_1.DataPointType; } });\nvar MetricReader_1 = require(\"./export/MetricReader\");\nObject.defineProperty(exports, \"MetricReader\", { enumerable: true, get: function () { return MetricReader_1.MetricReader; } });\nvar PeriodicExportingMetricReader_1 = require(\"./export/PeriodicExportingMetricReader\");\nObject.defineProperty(exports, \"PeriodicExportingMetricReader\", { enumerable: true, get: function () { return PeriodicExportingMetricReader_1.PeriodicExportingMetricReader; } });\nvar InMemoryMetricExporter_1 = require(\"./export/InMemoryMetricExporter\");\nObject.defineProperty(exports, \"InMemoryMetricExporter\", { enumerable: true, get: function () { return InMemoryMetricExporter_1.InMemoryMetricExporter; } });\nvar ConsoleMetricExporter_1 = require(\"./export/ConsoleMetricExporter\");\nObject.defineProperty(exports, \"ConsoleMetricExporter\", { enumerable: true, get: function () { return ConsoleMetricExporter_1.ConsoleMetricExporter; } });\nvar InstrumentDescriptor_1 = require(\"./InstrumentDescriptor\");\nObject.defineProperty(exports, \"InstrumentType\", { enumerable: true, get: function () { return InstrumentDescriptor_1.InstrumentType; } });\nvar MeterProvider_1 = require(\"./MeterProvider\");\nObject.defineProperty(exports, \"MeterProvider\", { enumerable: true, get: function () { return MeterProvider_1.MeterProvider; } });\nvar Aggregation_1 = require(\"./view/Aggregation\");\nObject.defineProperty(exports, \"DefaultAggregation\", { enumerable: true, get: function () { return Aggregation_1.DefaultAggregation; } });\nObject.defineProperty(exports, \"ExplicitBucketHistogramAggregation\", { enumerable: true, get: function () { return Aggregation_1.ExplicitBucketHistogramAggregation; } });\nObject.defineProperty(exports, \"ExponentialHistogramAggregation\", { enumerable: true, get: function () { return Aggregation_1.ExponentialHistogramAggregation; } });\nObject.defineProperty(exports, \"DropAggregation\", { enumerable: true, get: function () { return Aggregation_1.DropAggregation; } });\nObject.defineProperty(exports, \"HistogramAggregation\", { enumerable: true, get: function () { return Aggregation_1.HistogramAggregation; } });\nObject.defineProperty(exports, \"LastValueAggregation\", { enumerable: true, get: function () { return Aggregation_1.LastValueAggregation; } });\nObject.defineProperty(exports, \"SumAggregation\", { enumerable: true, get: function () { return Aggregation_1.SumAggregation; } });\nObject.defineProperty(exports, \"Aggregation\", { enumerable: true, get: function () { return Aggregation_1.Aggregation; } });\nvar View_1 = require(\"./view/View\");\nObject.defineProperty(exports, \"View\", { enumerable: true, get: function () { return View_1.View; } });\nvar utils_1 = require(\"./utils\");\nObject.defineProperty(exports, \"TimeoutError\", { enumerable: true, get: function () { return utils_1.TimeoutError; } });\n//# sourceMappingURL=index.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AsyncMetricStorage = void 0;\nconst MetricStorage_1 = require(\"./MetricStorage\");\nconst DeltaMetricProcessor_1 = require(\"./DeltaMetricProcessor\");\nconst TemporalMetricProcessor_1 = require(\"./TemporalMetricProcessor\");\nconst HashMap_1 = require(\"./HashMap\");\n/**\n * Internal interface.\n *\n * Stores and aggregates {@link MetricData} for asynchronous instruments.\n */\nclass AsyncMetricStorage extends MetricStorage_1.MetricStorage {\n constructor(_instrumentDescriptor, aggregator, _attributesProcessor, collectorHandles) {\n super(_instrumentDescriptor);\n this._attributesProcessor = _attributesProcessor;\n this._deltaMetricStorage = new DeltaMetricProcessor_1.DeltaMetricProcessor(aggregator);\n this._temporalMetricStorage = new TemporalMetricProcessor_1.TemporalMetricProcessor(aggregator, collectorHandles);\n }\n record(measurements, observationTime) {\n const processed = new HashMap_1.AttributeHashMap();\n Array.from(measurements.entries()).forEach(([attributes, value]) => {\n processed.set(this._attributesProcessor.process(attributes), value);\n });\n this._deltaMetricStorage.batchCumulate(processed, observationTime);\n }\n /**\n * Collects the metrics from this storage. The ObservableCallback is invoked\n * during the collection.\n *\n * Note: This is a stateful operation and may reset any interval-related\n * state for the MetricCollector.\n */\n collect(collector, collectionTime) {\n const accumulations = this._deltaMetricStorage.collect();\n return this._temporalMetricStorage.buildMetrics(collector, this._instrumentDescriptor, accumulations, collectionTime);\n }\n}\nexports.AsyncMetricStorage = AsyncMetricStorage;\n//# sourceMappingURL=AsyncMetricStorage.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DeltaMetricProcessor = void 0;\nconst HashMap_1 = require(\"./HashMap\");\n/**\n * Internal interface.\n *\n * Allows synchronous collection of metrics. This processor should allow\n * allocation of new aggregation cells for metrics and convert cumulative\n * recording to delta data points.\n */\nclass DeltaMetricProcessor {\n constructor(_aggregator) {\n this._aggregator = _aggregator;\n this._activeCollectionStorage = new HashMap_1.AttributeHashMap();\n // TODO: find a reasonable mean to clean the memo;\n // https://github.com/open-telemetry/opentelemetry-specification/pull/2208\n this._cumulativeMemoStorage = new HashMap_1.AttributeHashMap();\n }\n record(value, attributes, _context, collectionTime) {\n const accumulation = this._activeCollectionStorage.getOrDefault(attributes, () => this._aggregator.createAccumulation(collectionTime));\n accumulation === null || accumulation === void 0 ? void 0 : accumulation.record(value);\n }\n batchCumulate(measurements, collectionTime) {\n Array.from(measurements.entries()).forEach(([attributes, value, hashCode]) => {\n const accumulation = this._aggregator.createAccumulation(collectionTime);\n accumulation === null || accumulation === void 0 ? void 0 : accumulation.record(value);\n let delta = accumulation;\n // Diff with recorded cumulative memo.\n if (this._cumulativeMemoStorage.has(attributes, hashCode)) {\n // has() returned true, previous is present.\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const previous = this._cumulativeMemoStorage.get(attributes, hashCode);\n delta = this._aggregator.diff(previous, accumulation);\n }\n // Merge with uncollected active delta.\n if (this._activeCollectionStorage.has(attributes, hashCode)) {\n // has() returned true, previous is present.\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const active = this._activeCollectionStorage.get(attributes, hashCode);\n delta = this._aggregator.merge(active, delta);\n }\n // Save the current record and the delta record.\n this._cumulativeMemoStorage.set(attributes, accumulation, hashCode);\n this._activeCollectionStorage.set(attributes, delta, hashCode);\n });\n }\n /**\n * Returns a collection of delta metrics. Start time is the when first\n * time event collected.\n */\n collect() {\n const unreportedDelta = this._activeCollectionStorage;\n this._activeCollectionStorage = new HashMap_1.AttributeHashMap();\n return unreportedDelta;\n }\n}\nexports.DeltaMetricProcessor = DeltaMetricProcessor;\n//# sourceMappingURL=DeltaMetricProcessor.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AttributeHashMap = exports.HashMap = void 0;\nconst utils_1 = require(\"../utils\");\nclass HashMap {\n constructor(_hash) {\n this._hash = _hash;\n this._valueMap = new Map();\n this._keyMap = new Map();\n }\n get(key, hashCode) {\n hashCode !== null && hashCode !== void 0 ? hashCode : (hashCode = this._hash(key));\n return this._valueMap.get(hashCode);\n }\n getOrDefault(key, defaultFactory) {\n const hash = this._hash(key);\n if (this._valueMap.has(hash)) {\n return this._valueMap.get(hash);\n }\n const val = defaultFactory();\n if (!this._keyMap.has(hash)) {\n this._keyMap.set(hash, key);\n }\n this._valueMap.set(hash, val);\n return val;\n }\n set(key, value, hashCode) {\n hashCode !== null && hashCode !== void 0 ? hashCode : (hashCode = this._hash(key));\n if (!this._keyMap.has(hashCode)) {\n this._keyMap.set(hashCode, key);\n }\n this._valueMap.set(hashCode, value);\n }\n has(key, hashCode) {\n hashCode !== null && hashCode !== void 0 ? hashCode : (hashCode = this._hash(key));\n return this._valueMap.has(hashCode);\n }\n *keys() {\n const keyIterator = this._keyMap.entries();\n let next = keyIterator.next();\n while (next.done !== true) {\n yield [next.value[1], next.value[0]];\n next = keyIterator.next();\n }\n }\n *entries() {\n const valueIterator = this._valueMap.entries();\n let next = valueIterator.next();\n while (next.done !== true) {\n // next.value[0] here can not be undefined\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n yield [this._keyMap.get(next.value[0]), next.value[1], next.value[0]];\n next = valueIterator.next();\n }\n }\n get size() {\n return this._valueMap.size;\n }\n}\nexports.HashMap = HashMap;\nclass AttributeHashMap extends HashMap {\n constructor() {\n super(utils_1.hashAttributes);\n }\n}\nexports.AttributeHashMap = AttributeHashMap;\n//# sourceMappingURL=HashMap.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MeterProviderSharedState = void 0;\nconst utils_1 = require(\"../utils\");\nconst ViewRegistry_1 = require(\"../view/ViewRegistry\");\nconst MeterSharedState_1 = require(\"./MeterSharedState\");\n/**\n * An internal record for shared meter provider states.\n */\nclass MeterProviderSharedState {\n constructor(resource) {\n this.resource = resource;\n this.viewRegistry = new ViewRegistry_1.ViewRegistry();\n this.metricCollectors = [];\n this.meterSharedStates = new Map();\n }\n getMeterSharedState(instrumentationScope) {\n const id = (0, utils_1.instrumentationScopeId)(instrumentationScope);\n let meterSharedState = this.meterSharedStates.get(id);\n if (meterSharedState == null) {\n meterSharedState = new MeterSharedState_1.MeterSharedState(this, instrumentationScope);\n this.meterSharedStates.set(id, meterSharedState);\n }\n return meterSharedState;\n }\n selectAggregations(instrumentType) {\n const result = [];\n for (const collector of this.metricCollectors) {\n result.push([collector, collector.selectAggregation(instrumentType)]);\n }\n return result;\n }\n}\nexports.MeterProviderSharedState = MeterProviderSharedState;\n//# sourceMappingURL=MeterProviderSharedState.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MeterSharedState = void 0;\nconst InstrumentDescriptor_1 = require(\"../InstrumentDescriptor\");\nconst Meter_1 = require(\"../Meter\");\nconst utils_1 = require(\"../utils\");\nconst AsyncMetricStorage_1 = require(\"./AsyncMetricStorage\");\nconst MetricStorageRegistry_1 = require(\"./MetricStorageRegistry\");\nconst MultiWritableMetricStorage_1 = require(\"./MultiWritableMetricStorage\");\nconst ObservableRegistry_1 = require(\"./ObservableRegistry\");\nconst SyncMetricStorage_1 = require(\"./SyncMetricStorage\");\nconst AttributesProcessor_1 = require(\"../view/AttributesProcessor\");\n/**\n * An internal record for shared meter provider states.\n */\nclass MeterSharedState {\n constructor(_meterProviderSharedState, _instrumentationScope) {\n this._meterProviderSharedState = _meterProviderSharedState;\n this._instrumentationScope = _instrumentationScope;\n this.metricStorageRegistry = new MetricStorageRegistry_1.MetricStorageRegistry();\n this.observableRegistry = new ObservableRegistry_1.ObservableRegistry();\n this.meter = new Meter_1.Meter(this);\n }\n registerMetricStorage(descriptor) {\n const storages = this._registerMetricStorage(descriptor, SyncMetricStorage_1.SyncMetricStorage);\n if (storages.length === 1) {\n return storages[0];\n }\n return new MultiWritableMetricStorage_1.MultiMetricStorage(storages);\n }\n registerAsyncMetricStorage(descriptor) {\n const storages = this._registerMetricStorage(descriptor, AsyncMetricStorage_1.AsyncMetricStorage);\n return storages;\n }\n /**\n * @param collector opaque handle of {@link MetricCollector} which initiated the collection.\n * @param collectionTime the HrTime at which the collection was initiated.\n * @param options options for collection.\n * @returns the list of metric data collected.\n */\n async collect(collector, collectionTime, options) {\n /**\n * 1. Call all observable callbacks first.\n * 2. Collect metric result for the collector.\n */\n const errors = await this.observableRegistry.observe(collectionTime, options === null || options === void 0 ? void 0 : options.timeoutMillis);\n const storages = this.metricStorageRegistry.getStorages(collector);\n // prevent more allocations if there are no storages.\n if (storages.length === 0) {\n return null;\n }\n const metricDataList = storages\n .map(metricStorage => {\n return metricStorage.collect(collector, collectionTime);\n })\n .filter(utils_1.isNotNullish);\n // skip this scope if no data was collected (storage created, but no data observed)\n if (metricDataList.length === 0) {\n return { errors };\n }\n return {\n scopeMetrics: {\n scope: this._instrumentationScope,\n metrics: metricDataList,\n },\n errors,\n };\n }\n _registerMetricStorage(descriptor, MetricStorageType) {\n const views = this._meterProviderSharedState.viewRegistry.findViews(descriptor, this._instrumentationScope);\n let storages = views.map(view => {\n const viewDescriptor = (0, InstrumentDescriptor_1.createInstrumentDescriptorWithView)(view, descriptor);\n const compatibleStorage = this.metricStorageRegistry.findOrUpdateCompatibleStorage(viewDescriptor);\n if (compatibleStorage != null) {\n return compatibleStorage;\n }\n const aggregator = view.aggregation.createAggregator(viewDescriptor);\n const viewStorage = new MetricStorageType(viewDescriptor, aggregator, view.attributesProcessor, this._meterProviderSharedState.metricCollectors);\n this.metricStorageRegistry.register(viewStorage);\n return viewStorage;\n });\n // Fallback to the per-collector aggregations if no view is configured for the instrument.\n if (storages.length === 0) {\n const perCollectorAggregations = this._meterProviderSharedState.selectAggregations(descriptor.type);\n const collectorStorages = perCollectorAggregations.map(([collector, aggregation]) => {\n const compatibleStorage = this.metricStorageRegistry.findOrUpdateCompatibleCollectorStorage(collector, descriptor);\n if (compatibleStorage != null) {\n return compatibleStorage;\n }\n const aggregator = aggregation.createAggregator(descriptor);\n const storage = new MetricStorageType(descriptor, aggregator, AttributesProcessor_1.AttributesProcessor.Noop(), [collector]);\n this.metricStorageRegistry.registerForCollector(collector, storage);\n return storage;\n });\n storages = storages.concat(collectorStorages);\n }\n return storages;\n }\n}\nexports.MeterSharedState = MeterSharedState;\n//# sourceMappingURL=MeterSharedState.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MetricCollector = void 0;\nconst core_1 = require(\"@opentelemetry/core\");\n/**\n * An internal opaque interface that the MetricReader receives as\n * MetricProducer. It acts as the storage key to the internal metric stream\n * state for each MetricReader.\n */\nclass MetricCollector {\n constructor(_sharedState, _metricReader) {\n this._sharedState = _sharedState;\n this._metricReader = _metricReader;\n }\n async collect(options) {\n const collectionTime = (0, core_1.millisToHrTime)(Date.now());\n const scopeMetrics = [];\n const errors = [];\n const meterCollectionPromises = Array.from(this._sharedState.meterSharedStates.values()).map(async (meterSharedState) => {\n const current = await meterSharedState.collect(this, collectionTime, options);\n // only add scope metrics if available\n if ((current === null || current === void 0 ? void 0 : current.scopeMetrics) != null) {\n scopeMetrics.push(current.scopeMetrics);\n }\n // only add errors if available\n if ((current === null || current === void 0 ? void 0 : current.errors) != null) {\n errors.push(...current.errors);\n }\n });\n await Promise.all(meterCollectionPromises);\n return {\n resourceMetrics: {\n resource: this._sharedState.resource,\n scopeMetrics: scopeMetrics,\n },\n errors: errors,\n };\n }\n /**\n * Delegates for MetricReader.forceFlush.\n */\n async forceFlush(options) {\n await this._metricReader.forceFlush(options);\n }\n /**\n * Delegates for MetricReader.shutdown.\n */\n async shutdown(options) {\n await this._metricReader.shutdown(options);\n }\n selectAggregationTemporality(instrumentType) {\n return this._metricReader.selectAggregationTemporality(instrumentType);\n }\n selectAggregation(instrumentType) {\n return this._metricReader.selectAggregation(instrumentType);\n }\n}\nexports.MetricCollector = MetricCollector;\n//# sourceMappingURL=MetricCollector.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MetricStorage = void 0;\nconst InstrumentDescriptor_1 = require(\"../InstrumentDescriptor\");\n/**\n * Internal interface.\n *\n * Represents a storage from which we can collect metrics.\n */\nclass MetricStorage {\n constructor(_instrumentDescriptor) {\n this._instrumentDescriptor = _instrumentDescriptor;\n }\n getInstrumentDescriptor() {\n return this._instrumentDescriptor;\n }\n updateDescription(description) {\n this._instrumentDescriptor = (0, InstrumentDescriptor_1.createInstrumentDescriptor)(this._instrumentDescriptor.name, this._instrumentDescriptor.type, {\n description: description,\n valueType: this._instrumentDescriptor.valueType,\n unit: this._instrumentDescriptor.unit,\n advice: this._instrumentDescriptor.advice,\n });\n }\n}\nexports.MetricStorage = MetricStorage;\n//# sourceMappingURL=MetricStorage.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MetricStorageRegistry = void 0;\nconst InstrumentDescriptor_1 = require(\"../InstrumentDescriptor\");\nconst api = require(\"@opentelemetry/api\");\nconst RegistrationConflicts_1 = require(\"../view/RegistrationConflicts\");\n/**\n * Internal class for storing {@link MetricStorage}\n */\nclass MetricStorageRegistry {\n constructor() {\n this._sharedRegistry = new Map();\n this._perCollectorRegistry = new Map();\n }\n static create() {\n return new MetricStorageRegistry();\n }\n getStorages(collector) {\n let storages = [];\n for (const metricStorages of this._sharedRegistry.values()) {\n storages = storages.concat(metricStorages);\n }\n const perCollectorStorages = this._perCollectorRegistry.get(collector);\n if (perCollectorStorages != null) {\n for (const metricStorages of perCollectorStorages.values()) {\n storages = storages.concat(metricStorages);\n }\n }\n return storages;\n }\n register(storage) {\n this._registerStorage(storage, this._sharedRegistry);\n }\n registerForCollector(collector, storage) {\n let storageMap = this._perCollectorRegistry.get(collector);\n if (storageMap == null) {\n storageMap = new Map();\n this._perCollectorRegistry.set(collector, storageMap);\n }\n this._registerStorage(storage, storageMap);\n }\n findOrUpdateCompatibleStorage(expectedDescriptor) {\n const storages = this._sharedRegistry.get(expectedDescriptor.name);\n if (storages === undefined) {\n return null;\n }\n // If the descriptor is compatible, the type of their metric storage\n // (either SyncMetricStorage or AsyncMetricStorage) must be compatible.\n return this._findOrUpdateCompatibleStorage(expectedDescriptor, storages);\n }\n findOrUpdateCompatibleCollectorStorage(collector, expectedDescriptor) {\n const storageMap = this._perCollectorRegistry.get(collector);\n if (storageMap === undefined) {\n return null;\n }\n const storages = storageMap.get(expectedDescriptor.name);\n if (storages === undefined) {\n return null;\n }\n // If the descriptor is compatible, the type of their metric storage\n // (either SyncMetricStorage or AsyncMetricStorage) must be compatible.\n return this._findOrUpdateCompatibleStorage(expectedDescriptor, storages);\n }\n _registerStorage(storage, storageMap) {\n const descriptor = storage.getInstrumentDescriptor();\n const storages = storageMap.get(descriptor.name);\n if (storages === undefined) {\n storageMap.set(descriptor.name, [storage]);\n return;\n }\n storages.push(storage);\n }\n _findOrUpdateCompatibleStorage(expectedDescriptor, existingStorages) {\n let compatibleStorage = null;\n for (const existingStorage of existingStorages) {\n const existingDescriptor = existingStorage.getInstrumentDescriptor();\n if ((0, InstrumentDescriptor_1.isDescriptorCompatibleWith)(existingDescriptor, expectedDescriptor)) {\n // Use the longer description if it does not match.\n if (existingDescriptor.description !== expectedDescriptor.description) {\n if (expectedDescriptor.description.length >\n existingDescriptor.description.length) {\n existingStorage.updateDescription(expectedDescriptor.description);\n }\n api.diag.warn('A view or instrument with the name ', expectedDescriptor.name, ' has already been registered, but has a different description and is incompatible with another registered view.\\n', 'Details:\\n', (0, RegistrationConflicts_1.getIncompatibilityDetails)(existingDescriptor, expectedDescriptor), 'The longer description will be used.\\nTo resolve the conflict:', (0, RegistrationConflicts_1.getConflictResolutionRecipe)(existingDescriptor, expectedDescriptor));\n }\n // Storage is fully compatible. There will never be more than one pre-existing fully compatible storage.\n compatibleStorage = existingStorage;\n }\n else {\n // The implementation SHOULD warn about duplicate instrument registration\n // conflicts after applying View configuration.\n api.diag.warn('A view or instrument with the name ', expectedDescriptor.name, ' has already been registered and is incompatible with another registered view.\\n', 'Details:\\n', (0, RegistrationConflicts_1.getIncompatibilityDetails)(existingDescriptor, expectedDescriptor), 'To resolve the conflict:\\n', (0, RegistrationConflicts_1.getConflictResolutionRecipe)(existingDescriptor, expectedDescriptor));\n }\n }\n return compatibleStorage;\n }\n}\nexports.MetricStorageRegistry = MetricStorageRegistry;\n//# sourceMappingURL=MetricStorageRegistry.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MultiMetricStorage = void 0;\n/**\n * Internal interface.\n */\nclass MultiMetricStorage {\n constructor(_backingStorages) {\n this._backingStorages = _backingStorages;\n }\n record(value, attributes, context, recordTime) {\n this._backingStorages.forEach(it => {\n it.record(value, attributes, context, recordTime);\n });\n }\n}\nexports.MultiMetricStorage = MultiMetricStorage;\n//# sourceMappingURL=MultiWritableMetricStorage.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ObservableRegistry = void 0;\nconst api_1 = require(\"@opentelemetry/api\");\nconst Instruments_1 = require(\"../Instruments\");\nconst ObservableResult_1 = require(\"../ObservableResult\");\nconst utils_1 = require(\"../utils\");\n/**\n * An internal interface for managing ObservableCallbacks.\n *\n * Every registered callback associated with a set of instruments are be evaluated\n * exactly once during collection prior to reading data for that instrument.\n */\nclass ObservableRegistry {\n constructor() {\n this._callbacks = [];\n this._batchCallbacks = [];\n }\n addCallback(callback, instrument) {\n const idx = this._findCallback(callback, instrument);\n if (idx >= 0) {\n return;\n }\n this._callbacks.push({ callback, instrument });\n }\n removeCallback(callback, instrument) {\n const idx = this._findCallback(callback, instrument);\n if (idx < 0) {\n return;\n }\n this._callbacks.splice(idx, 1);\n }\n addBatchCallback(callback, instruments) {\n // Create a set of unique instruments.\n const observableInstruments = new Set(instruments.filter(Instruments_1.isObservableInstrument));\n if (observableInstruments.size === 0) {\n api_1.diag.error('BatchObservableCallback is not associated with valid instruments', instruments);\n return;\n }\n const idx = this._findBatchCallback(callback, observableInstruments);\n if (idx >= 0) {\n return;\n }\n this._batchCallbacks.push({ callback, instruments: observableInstruments });\n }\n removeBatchCallback(callback, instruments) {\n // Create a set of unique instruments.\n const observableInstruments = new Set(instruments.filter(Instruments_1.isObservableInstrument));\n const idx = this._findBatchCallback(callback, observableInstruments);\n if (idx < 0) {\n return;\n }\n this._batchCallbacks.splice(idx, 1);\n }\n /**\n * @returns a promise of rejected reasons for invoking callbacks.\n */\n async observe(collectionTime, timeoutMillis) {\n const callbackFutures = this._observeCallbacks(collectionTime, timeoutMillis);\n const batchCallbackFutures = this._observeBatchCallbacks(collectionTime, timeoutMillis);\n const results = await (0, utils_1.PromiseAllSettled)([\n ...callbackFutures,\n ...batchCallbackFutures,\n ]);\n const rejections = results\n .filter(utils_1.isPromiseAllSettledRejectionResult)\n .map(it => it.reason);\n return rejections;\n }\n _observeCallbacks(observationTime, timeoutMillis) {\n return this._callbacks.map(async ({ callback, instrument }) => {\n const observableResult = new ObservableResult_1.ObservableResultImpl(instrument._descriptor.name, instrument._descriptor.valueType);\n let callPromise = Promise.resolve(callback(observableResult));\n if (timeoutMillis != null) {\n callPromise = (0, utils_1.callWithTimeout)(callPromise, timeoutMillis);\n }\n await callPromise;\n instrument._metricStorages.forEach(metricStorage => {\n metricStorage.record(observableResult._buffer, observationTime);\n });\n });\n }\n _observeBatchCallbacks(observationTime, timeoutMillis) {\n return this._batchCallbacks.map(async ({ callback, instruments }) => {\n const observableResult = new ObservableResult_1.BatchObservableResultImpl();\n let callPromise = Promise.resolve(callback(observableResult));\n if (timeoutMillis != null) {\n callPromise = (0, utils_1.callWithTimeout)(callPromise, timeoutMillis);\n }\n await callPromise;\n instruments.forEach(instrument => {\n const buffer = observableResult._buffer.get(instrument);\n if (buffer == null) {\n return;\n }\n instrument._metricStorages.forEach(metricStorage => {\n metricStorage.record(buffer, observationTime);\n });\n });\n });\n }\n _findCallback(callback, instrument) {\n return this._callbacks.findIndex(record => {\n return record.callback === callback && record.instrument === instrument;\n });\n }\n _findBatchCallback(callback, instruments) {\n return this._batchCallbacks.findIndex(record => {\n return (record.callback === callback &&\n (0, utils_1.setEquals)(record.instruments, instruments));\n });\n }\n}\nexports.ObservableRegistry = ObservableRegistry;\n//# sourceMappingURL=ObservableRegistry.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SyncMetricStorage = void 0;\nconst MetricStorage_1 = require(\"./MetricStorage\");\nconst DeltaMetricProcessor_1 = require(\"./DeltaMetricProcessor\");\nconst TemporalMetricProcessor_1 = require(\"./TemporalMetricProcessor\");\n/**\n * Internal interface.\n *\n * Stores and aggregates {@link MetricData} for synchronous instruments.\n */\nclass SyncMetricStorage extends MetricStorage_1.MetricStorage {\n constructor(instrumentDescriptor, aggregator, _attributesProcessor, collectorHandles) {\n super(instrumentDescriptor);\n this._attributesProcessor = _attributesProcessor;\n this._deltaMetricStorage = new DeltaMetricProcessor_1.DeltaMetricProcessor(aggregator);\n this._temporalMetricStorage = new TemporalMetricProcessor_1.TemporalMetricProcessor(aggregator, collectorHandles);\n }\n record(value, attributes, context, recordTime) {\n attributes = this._attributesProcessor.process(attributes, context);\n this._deltaMetricStorage.record(value, attributes, context, recordTime);\n }\n /**\n * Collects the metrics from this storage.\n *\n * Note: This is a stateful operation and may reset any interval-related\n * state for the MetricCollector.\n */\n collect(collector, collectionTime) {\n const accumulations = this._deltaMetricStorage.collect();\n return this._temporalMetricStorage.buildMetrics(collector, this._instrumentDescriptor, accumulations, collectionTime);\n }\n}\nexports.SyncMetricStorage = SyncMetricStorage;\n//# sourceMappingURL=SyncMetricStorage.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TemporalMetricProcessor = void 0;\nconst AggregationTemporality_1 = require(\"../export/AggregationTemporality\");\nconst HashMap_1 = require(\"./HashMap\");\n/**\n * Internal interface.\n *\n * Provides unique reporting for each collector. Allows synchronous collection\n * of metrics and reports given temporality values.\n */\nclass TemporalMetricProcessor {\n constructor(_aggregator, collectorHandles) {\n this._aggregator = _aggregator;\n this._unreportedAccumulations = new Map();\n this._reportHistory = new Map();\n collectorHandles.forEach(handle => {\n this._unreportedAccumulations.set(handle, []);\n });\n }\n /**\n * Builds the {@link MetricData} streams to report against a specific MetricCollector.\n * @param collector The information of the MetricCollector.\n * @param collectors The registered collectors.\n * @param instrumentDescriptor The instrumentation descriptor that these metrics generated with.\n * @param currentAccumulations The current accumulation of metric data from instruments.\n * @param collectionTime The current collection timestamp.\n * @returns The {@link MetricData} points or `null`.\n */\n buildMetrics(collector, instrumentDescriptor, currentAccumulations, collectionTime) {\n this._stashAccumulations(currentAccumulations);\n const unreportedAccumulations = this._getMergedUnreportedAccumulations(collector);\n let result = unreportedAccumulations;\n let aggregationTemporality;\n // Check our last report time.\n if (this._reportHistory.has(collector)) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const last = this._reportHistory.get(collector);\n const lastCollectionTime = last.collectionTime;\n aggregationTemporality = last.aggregationTemporality;\n // Use aggregation temporality + instrument to determine if we do a merge or a diff of\n // previous. We have the following four scenarios:\n // 1. Cumulative Aggregation (temporality) + Delta recording (sync instrument).\n // Here we merge with our last record to get a cumulative aggregation.\n // 2. Cumulative Aggregation + Cumulative recording (async instrument).\n // Cumulative records are converted to delta recording with DeltaMetricProcessor.\n // Here we merge with our last record to get a cumulative aggregation.\n // 3. Delta Aggregation + Delta recording\n // Calibrate the startTime of metric streams to be the reader's lastCollectionTime.\n // 4. Delta Aggregation + Cumulative recording.\n // Cumulative records are converted to delta recording with DeltaMetricProcessor.\n // Calibrate the startTime of metric streams to be the reader's lastCollectionTime.\n if (aggregationTemporality === AggregationTemporality_1.AggregationTemporality.CUMULATIVE) {\n // We need to make sure the current delta recording gets merged into the previous cumulative\n // for the next cumulative recording.\n result = TemporalMetricProcessor.merge(last.accumulations, unreportedAccumulations, this._aggregator);\n }\n else {\n result = TemporalMetricProcessor.calibrateStartTime(last.accumulations, unreportedAccumulations, lastCollectionTime);\n }\n }\n else {\n // Call into user code to select aggregation temporality for the instrument.\n aggregationTemporality = collector.selectAggregationTemporality(instrumentDescriptor.type);\n }\n // Update last reported (cumulative) accumulation.\n this._reportHistory.set(collector, {\n accumulations: result,\n collectionTime,\n aggregationTemporality,\n });\n const accumulationRecords = AttributesMapToAccumulationRecords(result);\n // do not convert to metric data if there is nothing to convert.\n if (accumulationRecords.length === 0) {\n return undefined;\n }\n return this._aggregator.toMetricData(instrumentDescriptor, aggregationTemporality, accumulationRecords, \n /* endTime */ collectionTime);\n }\n _stashAccumulations(currentAccumulation) {\n const registeredCollectors = this._unreportedAccumulations.keys();\n for (const collector of registeredCollectors) {\n let stash = this._unreportedAccumulations.get(collector);\n if (stash === undefined) {\n stash = [];\n this._unreportedAccumulations.set(collector, stash);\n }\n stash.push(currentAccumulation);\n }\n }\n _getMergedUnreportedAccumulations(collector) {\n let result = new HashMap_1.AttributeHashMap();\n const unreportedList = this._unreportedAccumulations.get(collector);\n this._unreportedAccumulations.set(collector, []);\n if (unreportedList === undefined) {\n return result;\n }\n for (const it of unreportedList) {\n result = TemporalMetricProcessor.merge(result, it, this._aggregator);\n }\n return result;\n }\n static merge(last, current, aggregator) {\n const result = last;\n const iterator = current.entries();\n let next = iterator.next();\n while (next.done !== true) {\n const [key, record, hash] = next.value;\n if (last.has(key, hash)) {\n const lastAccumulation = last.get(key, hash);\n // last.has() returned true, lastAccumulation is present.\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const accumulation = aggregator.merge(lastAccumulation, record);\n result.set(key, accumulation, hash);\n }\n else {\n result.set(key, record, hash);\n }\n next = iterator.next();\n }\n return result;\n }\n /**\n * Calibrate the reported metric streams' startTime to lastCollectionTime. Leaves\n * the new stream to be the initial observation time unchanged.\n */\n static calibrateStartTime(last, current, lastCollectionTime) {\n for (const [key, hash] of last.keys()) {\n const currentAccumulation = current.get(key, hash);\n currentAccumulation === null || currentAccumulation === void 0 ? void 0 : currentAccumulation.setStartTime(lastCollectionTime);\n }\n return current;\n }\n}\nexports.TemporalMetricProcessor = TemporalMetricProcessor;\n// TypeScript complains about converting 3 elements tuple to AccumulationRecord.\nfunction AttributesMapToAccumulationRecords(map) {\n return Array.from(map.entries());\n}\n//# sourceMappingURL=TemporalMetricProcessor.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.equalsCaseInsensitive = exports.binarySearchLB = exports.setEquals = exports.FlatMap = exports.isPromiseAllSettledRejectionResult = exports.PromiseAllSettled = exports.callWithTimeout = exports.TimeoutError = exports.instrumentationScopeId = exports.hashAttributes = exports.isNotNullish = void 0;\nfunction isNotNullish(item) {\n return item !== undefined && item !== null;\n}\nexports.isNotNullish = isNotNullish;\n/**\n * Converting the unordered attributes into unique identifier string.\n * @param attributes user provided unordered MetricAttributes.\n */\nfunction hashAttributes(attributes) {\n let keys = Object.keys(attributes);\n if (keys.length === 0)\n return '';\n // Return a string that is stable on key orders.\n keys = keys.sort();\n return JSON.stringify(keys.map(key => [key, attributes[key]]));\n}\nexports.hashAttributes = hashAttributes;\n/**\n * Converting the instrumentation scope object to a unique identifier string.\n * @param instrumentationScope\n */\nfunction instrumentationScopeId(instrumentationScope) {\n var _a, _b;\n return `${instrumentationScope.name}:${(_a = instrumentationScope.version) !== null && _a !== void 0 ? _a : ''}:${(_b = instrumentationScope.schemaUrl) !== null && _b !== void 0 ? _b : ''}`;\n}\nexports.instrumentationScopeId = instrumentationScopeId;\n/**\n * Error that is thrown on timeouts.\n */\nclass TimeoutError extends Error {\n constructor(message) {\n super(message);\n // manually adjust prototype to retain `instanceof` functionality when targeting ES5, see:\n // https://github.com/Microsoft/TypeScript-wiki/blob/main/Breaking-Changes.md#extending-built-ins-like-error-array-and-map-may-no-longer-work\n Object.setPrototypeOf(this, TimeoutError.prototype);\n }\n}\nexports.TimeoutError = TimeoutError;\n/**\n * Adds a timeout to a promise and rejects if the specified timeout has elapsed. Also rejects if the specified promise\n * rejects, and resolves if the specified promise resolves.\n *\n *

NOTE: this operation will continue even after it throws a {@link TimeoutError}.\n *\n * @param promise promise to use with timeout.\n * @param timeout the timeout in milliseconds until the returned promise is rejected.\n */\nfunction callWithTimeout(promise, timeout) {\n let timeoutHandle;\n const timeoutPromise = new Promise(function timeoutFunction(_resolve, reject) {\n timeoutHandle = setTimeout(function timeoutHandler() {\n reject(new TimeoutError('Operation timed out.'));\n }, timeout);\n });\n return Promise.race([promise, timeoutPromise]).then(result => {\n clearTimeout(timeoutHandle);\n return result;\n }, reason => {\n clearTimeout(timeoutHandle);\n throw reason;\n });\n}\nexports.callWithTimeout = callWithTimeout;\n/**\n * Node.js v12.9 lower and browser compatible `Promise.allSettled`.\n */\nasync function PromiseAllSettled(promises) {\n return Promise.all(promises.map(async (p) => {\n try {\n const ret = await p;\n return {\n status: 'fulfilled',\n value: ret,\n };\n }\n catch (e) {\n return {\n status: 'rejected',\n reason: e,\n };\n }\n }));\n}\nexports.PromiseAllSettled = PromiseAllSettled;\nfunction isPromiseAllSettledRejectionResult(it) {\n return it.status === 'rejected';\n}\nexports.isPromiseAllSettledRejectionResult = isPromiseAllSettledRejectionResult;\n/**\n * Node.js v11.0 lower and browser compatible `Array.prototype.flatMap`.\n */\nfunction FlatMap(arr, fn) {\n const result = [];\n arr.forEach(it => {\n result.push(...fn(it));\n });\n return result;\n}\nexports.FlatMap = FlatMap;\nfunction setEquals(lhs, rhs) {\n if (lhs.size !== rhs.size) {\n return false;\n }\n for (const item of lhs) {\n if (!rhs.has(item)) {\n return false;\n }\n }\n return true;\n}\nexports.setEquals = setEquals;\n/**\n * Binary search the sorted array to the find lower bound for the value.\n * @param arr\n * @param value\n * @returns\n */\nfunction binarySearchLB(arr, value) {\n let lo = 0;\n let hi = arr.length - 1;\n while (hi - lo > 1) {\n const mid = Math.trunc((hi + lo) / 2);\n if (arr[mid] <= value) {\n lo = mid;\n }\n else {\n hi = mid - 1;\n }\n }\n if (arr[hi] <= value) {\n return hi;\n }\n else if (arr[lo] <= value) {\n return lo;\n }\n return -1;\n}\nexports.binarySearchLB = binarySearchLB;\nfunction equalsCaseInsensitive(lhs, rhs) {\n return lhs.toLowerCase() === rhs.toLowerCase();\n}\nexports.equalsCaseInsensitive = equalsCaseInsensitive;\n//# sourceMappingURL=utils.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DefaultAggregation = exports.ExponentialHistogramAggregation = exports.ExplicitBucketHistogramAggregation = exports.HistogramAggregation = exports.LastValueAggregation = exports.SumAggregation = exports.DropAggregation = exports.Aggregation = void 0;\nconst api = require(\"@opentelemetry/api\");\nconst aggregator_1 = require(\"../aggregator\");\nconst InstrumentDescriptor_1 = require(\"../InstrumentDescriptor\");\n/**\n * Configures how measurements are combined into metrics for views.\n *\n * Aggregation provides a set of built-in aggregations via static methods.\n */\nclass Aggregation {\n static Drop() {\n return DROP_AGGREGATION;\n }\n static Sum() {\n return SUM_AGGREGATION;\n }\n static LastValue() {\n return LAST_VALUE_AGGREGATION;\n }\n static Histogram() {\n return HISTOGRAM_AGGREGATION;\n }\n static ExponentialHistogram() {\n return EXPONENTIAL_HISTOGRAM_AGGREGATION;\n }\n static Default() {\n return DEFAULT_AGGREGATION;\n }\n}\nexports.Aggregation = Aggregation;\n/**\n * The default drop aggregation.\n */\nclass DropAggregation extends Aggregation {\n createAggregator(_instrument) {\n return DropAggregation.DEFAULT_INSTANCE;\n }\n}\nexports.DropAggregation = DropAggregation;\nDropAggregation.DEFAULT_INSTANCE = new aggregator_1.DropAggregator();\n/**\n * The default sum aggregation.\n */\nclass SumAggregation extends Aggregation {\n createAggregator(instrument) {\n switch (instrument.type) {\n case InstrumentDescriptor_1.InstrumentType.COUNTER:\n case InstrumentDescriptor_1.InstrumentType.OBSERVABLE_COUNTER:\n case InstrumentDescriptor_1.InstrumentType.HISTOGRAM: {\n return SumAggregation.MONOTONIC_INSTANCE;\n }\n default: {\n return SumAggregation.NON_MONOTONIC_INSTANCE;\n }\n }\n }\n}\nexports.SumAggregation = SumAggregation;\nSumAggregation.MONOTONIC_INSTANCE = new aggregator_1.SumAggregator(true);\nSumAggregation.NON_MONOTONIC_INSTANCE = new aggregator_1.SumAggregator(false);\n/**\n * The default last value aggregation.\n */\nclass LastValueAggregation extends Aggregation {\n createAggregator(_instrument) {\n return LastValueAggregation.DEFAULT_INSTANCE;\n }\n}\nexports.LastValueAggregation = LastValueAggregation;\nLastValueAggregation.DEFAULT_INSTANCE = new aggregator_1.LastValueAggregator();\n/**\n * The default histogram aggregation.\n */\nclass HistogramAggregation extends Aggregation {\n createAggregator(_instrument) {\n return HistogramAggregation.DEFAULT_INSTANCE;\n }\n}\nexports.HistogramAggregation = HistogramAggregation;\nHistogramAggregation.DEFAULT_INSTANCE = new aggregator_1.HistogramAggregator([0, 5, 10, 25, 50, 75, 100, 250, 500, 750, 1000, 2500, 5000, 7500, 10000], true);\n/**\n * The explicit bucket histogram aggregation.\n */\nclass ExplicitBucketHistogramAggregation extends Aggregation {\n /**\n * @param boundaries the bucket boundaries of the histogram aggregation\n * @param _recordMinMax If set to true, min and max will be recorded. Otherwise, min and max will not be recorded.\n */\n constructor(boundaries, _recordMinMax = true) {\n super();\n this._recordMinMax = _recordMinMax;\n if (boundaries == null) {\n throw new Error('ExplicitBucketHistogramAggregation should be created with explicit boundaries, if a single bucket histogram is required, please pass an empty array');\n }\n // Copy the boundaries array for modification.\n boundaries = boundaries.concat();\n // We need to an ordered set to be able to correctly compute count for each\n // boundary since we'll iterate on each in order.\n boundaries = boundaries.sort((a, b) => a - b);\n // Remove all Infinity from the boundaries.\n const minusInfinityIndex = boundaries.lastIndexOf(-Infinity);\n let infinityIndex = boundaries.indexOf(Infinity);\n if (infinityIndex === -1) {\n infinityIndex = undefined;\n }\n this._boundaries = boundaries.slice(minusInfinityIndex + 1, infinityIndex);\n }\n createAggregator(_instrument) {\n return new aggregator_1.HistogramAggregator(this._boundaries, this._recordMinMax);\n }\n}\nexports.ExplicitBucketHistogramAggregation = ExplicitBucketHistogramAggregation;\nclass ExponentialHistogramAggregation extends Aggregation {\n constructor(_maxSize = 160, _recordMinMax = true) {\n super();\n this._maxSize = _maxSize;\n this._recordMinMax = _recordMinMax;\n }\n createAggregator(_instrument) {\n return new aggregator_1.ExponentialHistogramAggregator(this._maxSize, this._recordMinMax);\n }\n}\nexports.ExponentialHistogramAggregation = ExponentialHistogramAggregation;\n/**\n * The default aggregation.\n */\nclass DefaultAggregation extends Aggregation {\n _resolve(instrument) {\n // cast to unknown to disable complaints on the (unreachable) fallback.\n switch (instrument.type) {\n case InstrumentDescriptor_1.InstrumentType.COUNTER:\n case InstrumentDescriptor_1.InstrumentType.UP_DOWN_COUNTER:\n case InstrumentDescriptor_1.InstrumentType.OBSERVABLE_COUNTER:\n case InstrumentDescriptor_1.InstrumentType.OBSERVABLE_UP_DOWN_COUNTER: {\n return SUM_AGGREGATION;\n }\n case InstrumentDescriptor_1.InstrumentType.GAUGE:\n case InstrumentDescriptor_1.InstrumentType.OBSERVABLE_GAUGE: {\n return LAST_VALUE_AGGREGATION;\n }\n case InstrumentDescriptor_1.InstrumentType.HISTOGRAM: {\n if (instrument.advice.explicitBucketBoundaries) {\n return new ExplicitBucketHistogramAggregation(instrument.advice.explicitBucketBoundaries);\n }\n return HISTOGRAM_AGGREGATION;\n }\n }\n api.diag.warn(`Unable to recognize instrument type: ${instrument.type}`);\n return DROP_AGGREGATION;\n }\n createAggregator(instrument) {\n return this._resolve(instrument).createAggregator(instrument);\n }\n}\nexports.DefaultAggregation = DefaultAggregation;\nconst DROP_AGGREGATION = new DropAggregation();\nconst SUM_AGGREGATION = new SumAggregation();\nconst LAST_VALUE_AGGREGATION = new LastValueAggregation();\nconst HISTOGRAM_AGGREGATION = new HistogramAggregation();\nconst EXPONENTIAL_HISTOGRAM_AGGREGATION = new ExponentialHistogramAggregation();\nconst DEFAULT_AGGREGATION = new DefaultAggregation();\n//# sourceMappingURL=Aggregation.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.FilteringAttributesProcessor = exports.NoopAttributesProcessor = exports.AttributesProcessor = void 0;\n/**\n * The {@link AttributesProcessor} is responsible for customizing which\n * attribute(s) are to be reported as metrics dimension(s) and adding\n * additional dimension(s) from the {@link Context}.\n */\nclass AttributesProcessor {\n static Noop() {\n return NOOP;\n }\n}\nexports.AttributesProcessor = AttributesProcessor;\nclass NoopAttributesProcessor extends AttributesProcessor {\n process(incoming, _context) {\n return incoming;\n }\n}\nexports.NoopAttributesProcessor = NoopAttributesProcessor;\n/**\n * {@link AttributesProcessor} that filters by allowed attribute names and drops any names that are not in the\n * allow list.\n */\nclass FilteringAttributesProcessor extends AttributesProcessor {\n constructor(_allowedAttributeNames) {\n super();\n this._allowedAttributeNames = _allowedAttributeNames;\n }\n process(incoming, _context) {\n const filteredAttributes = {};\n Object.keys(incoming)\n .filter(attributeName => this._allowedAttributeNames.includes(attributeName))\n .forEach(attributeName => (filteredAttributes[attributeName] = incoming[attributeName]));\n return filteredAttributes;\n }\n}\nexports.FilteringAttributesProcessor = FilteringAttributesProcessor;\nconst NOOP = new NoopAttributesProcessor();\n//# sourceMappingURL=AttributesProcessor.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.InstrumentSelector = void 0;\nconst Predicate_1 = require(\"./Predicate\");\nclass InstrumentSelector {\n constructor(criteria) {\n var _a;\n this._nameFilter = new Predicate_1.PatternPredicate((_a = criteria === null || criteria === void 0 ? void 0 : criteria.name) !== null && _a !== void 0 ? _a : '*');\n this._type = criteria === null || criteria === void 0 ? void 0 : criteria.type;\n this._unitFilter = new Predicate_1.ExactPredicate(criteria === null || criteria === void 0 ? void 0 : criteria.unit);\n }\n getType() {\n return this._type;\n }\n getNameFilter() {\n return this._nameFilter;\n }\n getUnitFilter() {\n return this._unitFilter;\n }\n}\nexports.InstrumentSelector = InstrumentSelector;\n//# sourceMappingURL=InstrumentSelector.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MeterSelector = void 0;\nconst Predicate_1 = require(\"./Predicate\");\nclass MeterSelector {\n constructor(criteria) {\n this._nameFilter = new Predicate_1.ExactPredicate(criteria === null || criteria === void 0 ? void 0 : criteria.name);\n this._versionFilter = new Predicate_1.ExactPredicate(criteria === null || criteria === void 0 ? void 0 : criteria.version);\n this._schemaUrlFilter = new Predicate_1.ExactPredicate(criteria === null || criteria === void 0 ? void 0 : criteria.schemaUrl);\n }\n getNameFilter() {\n return this._nameFilter;\n }\n /**\n * TODO: semver filter? no spec yet.\n */\n getVersionFilter() {\n return this._versionFilter;\n }\n getSchemaUrlFilter() {\n return this._schemaUrlFilter;\n }\n}\nexports.MeterSelector = MeterSelector;\n//# sourceMappingURL=MeterSelector.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ExactPredicate = exports.PatternPredicate = void 0;\n// https://tc39.es/proposal-regex-escaping\n// escape ^ $ \\ . + ? ( ) [ ] { } |\n// do not need to escape * as we interpret it as wildcard\nconst ESCAPE = /[\\^$\\\\.+?()[\\]{}|]/g;\n/**\n * Wildcard pattern predicate, supports patterns like `*`, `foo*`, `*bar`.\n */\nclass PatternPredicate {\n constructor(pattern) {\n if (pattern === '*') {\n this._matchAll = true;\n this._regexp = /.*/;\n }\n else {\n this._matchAll = false;\n this._regexp = new RegExp(PatternPredicate.escapePattern(pattern));\n }\n }\n match(str) {\n if (this._matchAll) {\n return true;\n }\n return this._regexp.test(str);\n }\n static escapePattern(pattern) {\n return `^${pattern.replace(ESCAPE, '\\\\$&').replace('*', '.*')}$`;\n }\n static hasWildcard(pattern) {\n return pattern.includes('*');\n }\n}\nexports.PatternPredicate = PatternPredicate;\nclass ExactPredicate {\n constructor(pattern) {\n this._matchAll = pattern === undefined;\n this._pattern = pattern;\n }\n match(str) {\n if (this._matchAll) {\n return true;\n }\n if (str === this._pattern) {\n return true;\n }\n return false;\n }\n}\nexports.ExactPredicate = ExactPredicate;\n//# sourceMappingURL=Predicate.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getConflictResolutionRecipe = exports.getDescriptionResolutionRecipe = exports.getTypeConflictResolutionRecipe = exports.getUnitConflictResolutionRecipe = exports.getValueTypeConflictResolutionRecipe = exports.getIncompatibilityDetails = void 0;\nfunction getIncompatibilityDetails(existing, otherDescriptor) {\n let incompatibility = '';\n if (existing.unit !== otherDescriptor.unit) {\n incompatibility += `\\t- Unit '${existing.unit}' does not match '${otherDescriptor.unit}'\\n`;\n }\n if (existing.type !== otherDescriptor.type) {\n incompatibility += `\\t- Type '${existing.type}' does not match '${otherDescriptor.type}'\\n`;\n }\n if (existing.valueType !== otherDescriptor.valueType) {\n incompatibility += `\\t- Value Type '${existing.valueType}' does not match '${otherDescriptor.valueType}'\\n`;\n }\n if (existing.description !== otherDescriptor.description) {\n incompatibility += `\\t- Description '${existing.description}' does not match '${otherDescriptor.description}'\\n`;\n }\n return incompatibility;\n}\nexports.getIncompatibilityDetails = getIncompatibilityDetails;\nfunction getValueTypeConflictResolutionRecipe(existing, otherDescriptor) {\n return `\\t- use valueType '${existing.valueType}' on instrument creation or use an instrument name other than '${otherDescriptor.name}'`;\n}\nexports.getValueTypeConflictResolutionRecipe = getValueTypeConflictResolutionRecipe;\nfunction getUnitConflictResolutionRecipe(existing, otherDescriptor) {\n return `\\t- use unit '${existing.unit}' on instrument creation or use an instrument name other than '${otherDescriptor.name}'`;\n}\nexports.getUnitConflictResolutionRecipe = getUnitConflictResolutionRecipe;\nfunction getTypeConflictResolutionRecipe(existing, otherDescriptor) {\n const selector = {\n name: otherDescriptor.name,\n type: otherDescriptor.type,\n unit: otherDescriptor.unit,\n };\n const selectorString = JSON.stringify(selector);\n return `\\t- create a new view with a name other than '${existing.name}' and InstrumentSelector '${selectorString}'`;\n}\nexports.getTypeConflictResolutionRecipe = getTypeConflictResolutionRecipe;\nfunction getDescriptionResolutionRecipe(existing, otherDescriptor) {\n const selector = {\n name: otherDescriptor.name,\n type: otherDescriptor.type,\n unit: otherDescriptor.unit,\n };\n const selectorString = JSON.stringify(selector);\n return `\\t- create a new view with a name other than '${existing.name}' and InstrumentSelector '${selectorString}'\n \\t- OR - create a new view with the name ${existing.name} and description '${existing.description}' and InstrumentSelector ${selectorString}\n \\t- OR - create a new view with the name ${otherDescriptor.name} and description '${existing.description}' and InstrumentSelector ${selectorString}`;\n}\nexports.getDescriptionResolutionRecipe = getDescriptionResolutionRecipe;\nfunction getConflictResolutionRecipe(existing, otherDescriptor) {\n // Conflicts that cannot be solved via views.\n if (existing.valueType !== otherDescriptor.valueType) {\n return getValueTypeConflictResolutionRecipe(existing, otherDescriptor);\n }\n if (existing.unit !== otherDescriptor.unit) {\n return getUnitConflictResolutionRecipe(existing, otherDescriptor);\n }\n // Conflicts that can be solved via views.\n if (existing.type !== otherDescriptor.type) {\n // this will automatically solve possible description conflicts.\n return getTypeConflictResolutionRecipe(existing, otherDescriptor);\n }\n if (existing.description !== otherDescriptor.description) {\n return getDescriptionResolutionRecipe(existing, otherDescriptor);\n }\n return '';\n}\nexports.getConflictResolutionRecipe = getConflictResolutionRecipe;\n//# sourceMappingURL=RegistrationConflicts.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.View = void 0;\nconst Predicate_1 = require(\"./Predicate\");\nconst AttributesProcessor_1 = require(\"./AttributesProcessor\");\nconst InstrumentSelector_1 = require(\"./InstrumentSelector\");\nconst MeterSelector_1 = require(\"./MeterSelector\");\nconst Aggregation_1 = require(\"./Aggregation\");\nfunction isSelectorNotProvided(options) {\n return (options.instrumentName == null &&\n options.instrumentType == null &&\n options.instrumentUnit == null &&\n options.meterName == null &&\n options.meterVersion == null &&\n options.meterSchemaUrl == null);\n}\n/**\n * Can be passed to a {@link MeterProvider} to select instruments and alter their metric stream.\n */\nclass View {\n /**\n * Create a new {@link View} instance.\n *\n * Parameters can be categorized as two types:\n * Instrument selection criteria: Used to describe the instrument(s) this view will be applied to.\n * Will be treated as additive (the Instrument has to meet all the provided criteria to be selected).\n *\n * Metric stream altering: Alter the metric stream of instruments selected by instrument selection criteria.\n *\n * @param viewOptions {@link ViewOptions} for altering the metric stream and instrument selection.\n * @param viewOptions.name\n * Alters the metric stream:\n * This will be used as the name of the metrics stream.\n * If not provided, the original Instrument name will be used.\n * @param viewOptions.description\n * Alters the metric stream:\n * This will be used as the description of the metrics stream.\n * If not provided, the original Instrument description will be used by default.\n * @param viewOptions.attributeKeys\n * Alters the metric stream:\n * If provided, the attributes that are not in the list will be ignored.\n * If not provided, all attribute keys will be used by default.\n * @param viewOptions.aggregation\n * Alters the metric stream:\n * Alters the {@link Aggregation} of the metric stream.\n * @param viewOptions.instrumentName\n * Instrument selection criteria:\n * Original name of the Instrument(s) with wildcard support.\n * @param viewOptions.instrumentType\n * Instrument selection criteria:\n * The original type of the Instrument(s).\n * @param viewOptions.instrumentUnit\n * Instrument selection criteria:\n * The unit of the Instrument(s).\n * @param viewOptions.meterName\n * Instrument selection criteria:\n * The name of the Meter. No wildcard support, name must match the meter exactly.\n * @param viewOptions.meterVersion\n * Instrument selection criteria:\n * The version of the Meter. No wildcard support, version must match exactly.\n * @param viewOptions.meterSchemaUrl\n * Instrument selection criteria:\n * The schema URL of the Meter. No wildcard support, schema URL must match exactly.\n *\n * @example\n * // Create a view that changes the Instrument 'my.instrument' to use to an\n * // ExplicitBucketHistogramAggregation with the boundaries [20, 30, 40]\n * new View({\n * aggregation: new ExplicitBucketHistogramAggregation([20, 30, 40]),\n * instrumentName: 'my.instrument'\n * })\n */\n constructor(viewOptions) {\n var _a;\n // If no criteria is provided, the SDK SHOULD treat it as an error.\n // It is recommended that the SDK implementations fail fast.\n if (isSelectorNotProvided(viewOptions)) {\n throw new Error('Cannot create view with no selector arguments supplied');\n }\n // the SDK SHOULD NOT allow Views with a specified name to be declared with instrument selectors that\n // may select more than one instrument (e.g. wild card instrument name) in the same Meter.\n if (viewOptions.name != null &&\n ((viewOptions === null || viewOptions === void 0 ? void 0 : viewOptions.instrumentName) == null ||\n Predicate_1.PatternPredicate.hasWildcard(viewOptions.instrumentName))) {\n throw new Error('Views with a specified name must be declared with an instrument selector that selects at most one instrument per meter.');\n }\n // Create AttributesProcessor if attributeKeys are defined set.\n if (viewOptions.attributeKeys != null) {\n this.attributesProcessor = new AttributesProcessor_1.FilteringAttributesProcessor(viewOptions.attributeKeys);\n }\n else {\n this.attributesProcessor = AttributesProcessor_1.AttributesProcessor.Noop();\n }\n this.name = viewOptions.name;\n this.description = viewOptions.description;\n this.aggregation = (_a = viewOptions.aggregation) !== null && _a !== void 0 ? _a : Aggregation_1.Aggregation.Default();\n this.instrumentSelector = new InstrumentSelector_1.InstrumentSelector({\n name: viewOptions.instrumentName,\n type: viewOptions.instrumentType,\n unit: viewOptions.instrumentUnit,\n });\n this.meterSelector = new MeterSelector_1.MeterSelector({\n name: viewOptions.meterName,\n version: viewOptions.meterVersion,\n schemaUrl: viewOptions.meterSchemaUrl,\n });\n }\n}\nexports.View = View;\n//# sourceMappingURL=View.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ViewRegistry = void 0;\nclass ViewRegistry {\n constructor() {\n this._registeredViews = [];\n }\n addView(view) {\n this._registeredViews.push(view);\n }\n findViews(instrument, meter) {\n const views = this._registeredViews.filter(registeredView => {\n return (this._matchInstrument(registeredView.instrumentSelector, instrument) &&\n this._matchMeter(registeredView.meterSelector, meter));\n });\n return views;\n }\n _matchInstrument(selector, instrument) {\n return ((selector.getType() === undefined ||\n instrument.type === selector.getType()) &&\n selector.getNameFilter().match(instrument.name) &&\n selector.getUnitFilter().match(instrument.unit));\n }\n _matchMeter(selector, meter) {\n return (selector.getNameFilter().match(meter.name) &&\n (meter.version === undefined ||\n selector.getVersionFilter().match(meter.version)) &&\n (meter.schemaUrl === undefined ||\n selector.getSchemaUrlFilter().match(meter.schemaUrl)));\n }\n}\nexports.ViewRegistry = ViewRegistry;\n//# sourceMappingURL=ViewRegistry.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BasicTracerProvider = exports.ForceFlushState = void 0;\nconst api_1 = require(\"@opentelemetry/api\");\nconst core_1 = require(\"@opentelemetry/core\");\nconst resources_1 = require(\"@opentelemetry/resources\");\nconst _1 = require(\".\");\nconst config_1 = require(\"./config\");\nconst MultiSpanProcessor_1 = require(\"./MultiSpanProcessor\");\nconst NoopSpanProcessor_1 = require(\"./export/NoopSpanProcessor\");\nconst platform_1 = require(\"./platform\");\nconst utility_1 = require(\"./utility\");\nvar ForceFlushState;\n(function (ForceFlushState) {\n ForceFlushState[ForceFlushState[\"resolved\"] = 0] = \"resolved\";\n ForceFlushState[ForceFlushState[\"timeout\"] = 1] = \"timeout\";\n ForceFlushState[ForceFlushState[\"error\"] = 2] = \"error\";\n ForceFlushState[ForceFlushState[\"unresolved\"] = 3] = \"unresolved\";\n})(ForceFlushState = exports.ForceFlushState || (exports.ForceFlushState = {}));\n/**\n * This class represents a basic tracer provider which platform libraries can extend\n */\nclass BasicTracerProvider {\n constructor(config = {}) {\n var _a;\n this._registeredSpanProcessors = [];\n this._tracers = new Map();\n const mergedConfig = (0, core_1.merge)({}, (0, config_1.loadDefaultConfig)(), (0, utility_1.reconfigureLimits)(config));\n this.resource = (_a = mergedConfig.resource) !== null && _a !== void 0 ? _a : resources_1.Resource.empty();\n this.resource = resources_1.Resource.default().merge(this.resource);\n this._config = Object.assign({}, mergedConfig, {\n resource: this.resource,\n });\n const defaultExporter = this._buildExporterFromEnv();\n if (defaultExporter !== undefined) {\n const batchProcessor = new platform_1.BatchSpanProcessor(defaultExporter);\n this.activeSpanProcessor = batchProcessor;\n }\n else {\n this.activeSpanProcessor = new NoopSpanProcessor_1.NoopSpanProcessor();\n }\n }\n getTracer(name, version, options) {\n const key = `${name}@${version || ''}:${(options === null || options === void 0 ? void 0 : options.schemaUrl) || ''}`;\n if (!this._tracers.has(key)) {\n this._tracers.set(key, new _1.Tracer({ name, version, schemaUrl: options === null || options === void 0 ? void 0 : options.schemaUrl }, this._config, this));\n }\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n return this._tracers.get(key);\n }\n /**\n * Adds a new {@link SpanProcessor} to this tracer.\n * @param spanProcessor the new SpanProcessor to be added.\n */\n addSpanProcessor(spanProcessor) {\n if (this._registeredSpanProcessors.length === 0) {\n // since we might have enabled by default a batchProcessor, we disable it\n // before adding the new one\n this.activeSpanProcessor\n .shutdown()\n .catch(err => api_1.diag.error('Error while trying to shutdown current span processor', err));\n }\n this._registeredSpanProcessors.push(spanProcessor);\n this.activeSpanProcessor = new MultiSpanProcessor_1.MultiSpanProcessor(this._registeredSpanProcessors);\n }\n getActiveSpanProcessor() {\n return this.activeSpanProcessor;\n }\n /**\n * Register this TracerProvider for use with the OpenTelemetry API.\n * Undefined values may be replaced with defaults, and\n * null values will be skipped.\n *\n * @param config Configuration object for SDK registration\n */\n register(config = {}) {\n api_1.trace.setGlobalTracerProvider(this);\n if (config.propagator === undefined) {\n config.propagator = this._buildPropagatorFromEnv();\n }\n if (config.contextManager) {\n api_1.context.setGlobalContextManager(config.contextManager);\n }\n if (config.propagator) {\n api_1.propagation.setGlobalPropagator(config.propagator);\n }\n }\n forceFlush() {\n const timeout = this._config.forceFlushTimeoutMillis;\n const promises = this._registeredSpanProcessors.map((spanProcessor) => {\n return new Promise(resolve => {\n let state;\n const timeoutInterval = setTimeout(() => {\n resolve(new Error(`Span processor did not completed within timeout period of ${timeout} ms`));\n state = ForceFlushState.timeout;\n }, timeout);\n spanProcessor\n .forceFlush()\n .then(() => {\n clearTimeout(timeoutInterval);\n if (state !== ForceFlushState.timeout) {\n state = ForceFlushState.resolved;\n resolve(state);\n }\n })\n .catch(error => {\n clearTimeout(timeoutInterval);\n state = ForceFlushState.error;\n resolve(error);\n });\n });\n });\n return new Promise((resolve, reject) => {\n Promise.all(promises)\n .then(results => {\n const errors = results.filter(result => result !== ForceFlushState.resolved);\n if (errors.length > 0) {\n reject(errors);\n }\n else {\n resolve();\n }\n })\n .catch(error => reject([error]));\n });\n }\n shutdown() {\n return this.activeSpanProcessor.shutdown();\n }\n /**\n * TS cannot yet infer the type of this.constructor:\n * https://github.com/Microsoft/TypeScript/issues/3841#issuecomment-337560146\n * There is no need to override either of the getters in your child class.\n * The type of the registered component maps should be the same across all\n * classes in the inheritance tree.\n */\n _getPropagator(name) {\n var _a;\n return (_a = this.constructor._registeredPropagators.get(name)) === null || _a === void 0 ? void 0 : _a();\n }\n _getSpanExporter(name) {\n var _a;\n return (_a = this.constructor._registeredExporters.get(name)) === null || _a === void 0 ? void 0 : _a();\n }\n _buildPropagatorFromEnv() {\n // per spec, propagators from env must be deduplicated\n const uniquePropagatorNames = Array.from(new Set((0, core_1.getEnv)().OTEL_PROPAGATORS));\n const propagators = uniquePropagatorNames.map(name => {\n const propagator = this._getPropagator(name);\n if (!propagator) {\n api_1.diag.warn(`Propagator \"${name}\" requested through environment variable is unavailable.`);\n }\n return propagator;\n });\n const validPropagators = propagators.reduce((list, item) => {\n if (item) {\n list.push(item);\n }\n return list;\n }, []);\n if (validPropagators.length === 0) {\n return;\n }\n else if (uniquePropagatorNames.length === 1) {\n return validPropagators[0];\n }\n else {\n return new core_1.CompositePropagator({\n propagators: validPropagators,\n });\n }\n }\n _buildExporterFromEnv() {\n const exporterName = (0, core_1.getEnv)().OTEL_TRACES_EXPORTER;\n if (exporterName === 'none' || exporterName === '')\n return;\n const exporter = this._getSpanExporter(exporterName);\n if (!exporter) {\n api_1.diag.error(`Exporter \"${exporterName}\" requested through environment variable is unavailable.`);\n }\n return exporter;\n }\n}\nexports.BasicTracerProvider = BasicTracerProvider;\nBasicTracerProvider._registeredPropagators = new Map([\n ['tracecontext', () => new core_1.W3CTraceContextPropagator()],\n ['baggage', () => new core_1.W3CBaggagePropagator()],\n]);\nBasicTracerProvider._registeredExporters = new Map();\n//# sourceMappingURL=BasicTracerProvider.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=IdGenerator.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MultiSpanProcessor = void 0;\nconst core_1 = require(\"@opentelemetry/core\");\n/**\n * Implementation of the {@link SpanProcessor} that simply forwards all\n * received events to a list of {@link SpanProcessor}s.\n */\nclass MultiSpanProcessor {\n constructor(_spanProcessors) {\n this._spanProcessors = _spanProcessors;\n }\n forceFlush() {\n const promises = [];\n for (const spanProcessor of this._spanProcessors) {\n promises.push(spanProcessor.forceFlush());\n }\n return new Promise(resolve => {\n Promise.all(promises)\n .then(() => {\n resolve();\n })\n .catch(error => {\n (0, core_1.globalErrorHandler)(error || new Error('MultiSpanProcessor: forceFlush failed'));\n resolve();\n });\n });\n }\n onStart(span, context) {\n for (const spanProcessor of this._spanProcessors) {\n spanProcessor.onStart(span, context);\n }\n }\n onEnd(span) {\n for (const spanProcessor of this._spanProcessors) {\n spanProcessor.onEnd(span);\n }\n }\n shutdown() {\n const promises = [];\n for (const spanProcessor of this._spanProcessors) {\n promises.push(spanProcessor.shutdown());\n }\n return new Promise((resolve, reject) => {\n Promise.all(promises).then(() => {\n resolve();\n }, reject);\n });\n }\n}\nexports.MultiSpanProcessor = MultiSpanProcessor;\n//# sourceMappingURL=MultiSpanProcessor.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SamplingDecision = void 0;\n/**\n * A sampling decision that determines how a {@link Span} will be recorded\n * and collected.\n */\nvar SamplingDecision;\n(function (SamplingDecision) {\n /**\n * `Span.isRecording() === false`, span will not be recorded and all events\n * and attributes will be dropped.\n */\n SamplingDecision[SamplingDecision[\"NOT_RECORD\"] = 0] = \"NOT_RECORD\";\n /**\n * `Span.isRecording() === true`, but `Sampled` flag in {@link TraceFlags}\n * MUST NOT be set.\n */\n SamplingDecision[SamplingDecision[\"RECORD\"] = 1] = \"RECORD\";\n /**\n * `Span.isRecording() === true` AND `Sampled` flag in {@link TraceFlags}\n * MUST be set.\n */\n SamplingDecision[SamplingDecision[\"RECORD_AND_SAMPLED\"] = 2] = \"RECORD_AND_SAMPLED\";\n})(SamplingDecision = exports.SamplingDecision || (exports.SamplingDecision = {}));\n//# sourceMappingURL=Sampler.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Span = void 0;\nconst api_1 = require(\"@opentelemetry/api\");\nconst core_1 = require(\"@opentelemetry/core\");\nconst semantic_conventions_1 = require(\"@opentelemetry/semantic-conventions\");\nconst enums_1 = require(\"./enums\");\n/**\n * This class represents a span.\n */\nclass Span {\n /**\n * Constructs a new Span instance.\n *\n * @deprecated calling Span constructor directly is not supported. Please use tracer.startSpan.\n * */\n constructor(parentTracer, context, spanName, spanContext, kind, parentSpanId, links = [], startTime, _deprecatedClock, // keeping this argument even though it is unused to ensure backwards compatibility\n attributes) {\n this.attributes = {};\n this.links = [];\n this.events = [];\n this._droppedAttributesCount = 0;\n this._droppedEventsCount = 0;\n this._droppedLinksCount = 0;\n this.status = {\n code: api_1.SpanStatusCode.UNSET,\n };\n this.endTime = [0, 0];\n this._ended = false;\n this._duration = [-1, -1];\n this.name = spanName;\n this._spanContext = spanContext;\n this.parentSpanId = parentSpanId;\n this.kind = kind;\n this.links = links;\n const now = Date.now();\n this._performanceStartTime = core_1.otperformance.now();\n this._performanceOffset =\n now - (this._performanceStartTime + (0, core_1.getTimeOrigin)());\n this._startTimeProvided = startTime != null;\n this.startTime = this._getTime(startTime !== null && startTime !== void 0 ? startTime : now);\n this.resource = parentTracer.resource;\n this.instrumentationLibrary = parentTracer.instrumentationLibrary;\n this._spanLimits = parentTracer.getSpanLimits();\n this._attributeValueLengthLimit =\n this._spanLimits.attributeValueLengthLimit || 0;\n if (attributes != null) {\n this.setAttributes(attributes);\n }\n this._spanProcessor = parentTracer.getActiveSpanProcessor();\n this._spanProcessor.onStart(this, context);\n }\n spanContext() {\n return this._spanContext;\n }\n setAttribute(key, value) {\n if (value == null || this._isSpanEnded())\n return this;\n if (key.length === 0) {\n api_1.diag.warn(`Invalid attribute key: ${key}`);\n return this;\n }\n if (!(0, core_1.isAttributeValue)(value)) {\n api_1.diag.warn(`Invalid attribute value set for key: ${key}`);\n return this;\n }\n if (Object.keys(this.attributes).length >=\n this._spanLimits.attributeCountLimit &&\n !Object.prototype.hasOwnProperty.call(this.attributes, key)) {\n this._droppedAttributesCount++;\n return this;\n }\n this.attributes[key] = this._truncateToSize(value);\n return this;\n }\n setAttributes(attributes) {\n for (const [k, v] of Object.entries(attributes)) {\n this.setAttribute(k, v);\n }\n return this;\n }\n /**\n *\n * @param name Span Name\n * @param [attributesOrStartTime] Span attributes or start time\n * if type is {@type TimeInput} and 3rd param is undefined\n * @param [timeStamp] Specified time stamp for the event\n */\n addEvent(name, attributesOrStartTime, timeStamp) {\n if (this._isSpanEnded())\n return this;\n if (this._spanLimits.eventCountLimit === 0) {\n api_1.diag.warn('No events allowed.');\n this._droppedEventsCount++;\n return this;\n }\n if (this.events.length >= this._spanLimits.eventCountLimit) {\n if (this._droppedEventsCount === 0) {\n api_1.diag.debug('Dropping extra events.');\n }\n this.events.shift();\n this._droppedEventsCount++;\n }\n if ((0, core_1.isTimeInput)(attributesOrStartTime)) {\n if (!(0, core_1.isTimeInput)(timeStamp)) {\n timeStamp = attributesOrStartTime;\n }\n attributesOrStartTime = undefined;\n }\n const attributes = (0, core_1.sanitizeAttributes)(attributesOrStartTime);\n this.events.push({\n name,\n attributes,\n time: this._getTime(timeStamp),\n droppedAttributesCount: 0,\n });\n return this;\n }\n setStatus(status) {\n if (this._isSpanEnded())\n return this;\n this.status = status;\n return this;\n }\n updateName(name) {\n if (this._isSpanEnded())\n return this;\n this.name = name;\n return this;\n }\n end(endTime) {\n if (this._isSpanEnded()) {\n api_1.diag.error(`${this.name} ${this._spanContext.traceId}-${this._spanContext.spanId} - You can only call end() on a span once.`);\n return;\n }\n this._ended = true;\n this.endTime = this._getTime(endTime);\n this._duration = (0, core_1.hrTimeDuration)(this.startTime, this.endTime);\n if (this._duration[0] < 0) {\n api_1.diag.warn('Inconsistent start and end time, startTime > endTime. Setting span duration to 0ms.', this.startTime, this.endTime);\n this.endTime = this.startTime.slice();\n this._duration = [0, 0];\n }\n if (this._droppedEventsCount > 0) {\n api_1.diag.warn(`Dropped ${this._droppedEventsCount} events because eventCountLimit reached`);\n }\n this._spanProcessor.onEnd(this);\n }\n _getTime(inp) {\n if (typeof inp === 'number' && inp < core_1.otperformance.now()) {\n // must be a performance timestamp\n // apply correction and convert to hrtime\n return (0, core_1.hrTime)(inp + this._performanceOffset);\n }\n if (typeof inp === 'number') {\n return (0, core_1.millisToHrTime)(inp);\n }\n if (inp instanceof Date) {\n return (0, core_1.millisToHrTime)(inp.getTime());\n }\n if ((0, core_1.isTimeInputHrTime)(inp)) {\n return inp;\n }\n if (this._startTimeProvided) {\n // if user provided a time for the start manually\n // we can't use duration to calculate event/end times\n return (0, core_1.millisToHrTime)(Date.now());\n }\n const msDuration = core_1.otperformance.now() - this._performanceStartTime;\n return (0, core_1.addHrTimes)(this.startTime, (0, core_1.millisToHrTime)(msDuration));\n }\n isRecording() {\n return this._ended === false;\n }\n recordException(exception, time) {\n const attributes = {};\n if (typeof exception === 'string') {\n attributes[semantic_conventions_1.SemanticAttributes.EXCEPTION_MESSAGE] = exception;\n }\n else if (exception) {\n if (exception.code) {\n attributes[semantic_conventions_1.SemanticAttributes.EXCEPTION_TYPE] =\n exception.code.toString();\n }\n else if (exception.name) {\n attributes[semantic_conventions_1.SemanticAttributes.EXCEPTION_TYPE] = exception.name;\n }\n if (exception.message) {\n attributes[semantic_conventions_1.SemanticAttributes.EXCEPTION_MESSAGE] = exception.message;\n }\n if (exception.stack) {\n attributes[semantic_conventions_1.SemanticAttributes.EXCEPTION_STACKTRACE] = exception.stack;\n }\n }\n // these are minimum requirements from spec\n if (attributes[semantic_conventions_1.SemanticAttributes.EXCEPTION_TYPE] ||\n attributes[semantic_conventions_1.SemanticAttributes.EXCEPTION_MESSAGE]) {\n this.addEvent(enums_1.ExceptionEventName, attributes, time);\n }\n else {\n api_1.diag.warn(`Failed to record an exception ${exception}`);\n }\n }\n get duration() {\n return this._duration;\n }\n get ended() {\n return this._ended;\n }\n get droppedAttributesCount() {\n return this._droppedAttributesCount;\n }\n get droppedEventsCount() {\n return this._droppedEventsCount;\n }\n get droppedLinksCount() {\n return this._droppedLinksCount;\n }\n _isSpanEnded() {\n if (this._ended) {\n api_1.diag.warn(`Can not execute the operation on ended Span {traceId: ${this._spanContext.traceId}, spanId: ${this._spanContext.spanId}}`);\n }\n return this._ended;\n }\n // Utility function to truncate given value within size\n // for value type of string, will truncate to given limit\n // for type of non-string, will return same value\n _truncateToLimitUtil(value, limit) {\n if (value.length <= limit) {\n return value;\n }\n return value.substr(0, limit);\n }\n /**\n * If the given attribute value is of type string and has more characters than given {@code attributeValueLengthLimit} then\n * return string with truncated to {@code attributeValueLengthLimit} characters\n *\n * If the given attribute value is array of strings then\n * return new array of strings with each element truncated to {@code attributeValueLengthLimit} characters\n *\n * Otherwise return same Attribute {@code value}\n *\n * @param value Attribute value\n * @returns truncated attribute value if required, otherwise same value\n */\n _truncateToSize(value) {\n const limit = this._attributeValueLengthLimit;\n // Check limit\n if (limit <= 0) {\n // Negative values are invalid, so do not truncate\n api_1.diag.warn(`Attribute value limit must be positive, got ${limit}`);\n return value;\n }\n // String\n if (typeof value === 'string') {\n return this._truncateToLimitUtil(value, limit);\n }\n // Array of strings\n if (Array.isArray(value)) {\n return value.map(val => typeof val === 'string' ? this._truncateToLimitUtil(val, limit) : val);\n }\n // Other types, no need to apply value length limit\n return value;\n }\n}\nexports.Span = Span;\n//# sourceMappingURL=Span.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=SpanProcessor.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=TimedEvent.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Tracer = void 0;\nconst api = require(\"@opentelemetry/api\");\nconst core_1 = require(\"@opentelemetry/core\");\nconst Span_1 = require(\"./Span\");\nconst utility_1 = require(\"./utility\");\nconst platform_1 = require(\"./platform\");\n/**\n * This class represents a basic tracer.\n */\nclass Tracer {\n /**\n * Constructs a new Tracer instance.\n */\n constructor(instrumentationLibrary, config, _tracerProvider) {\n this._tracerProvider = _tracerProvider;\n const localConfig = (0, utility_1.mergeConfig)(config);\n this._sampler = localConfig.sampler;\n this._generalLimits = localConfig.generalLimits;\n this._spanLimits = localConfig.spanLimits;\n this._idGenerator = config.idGenerator || new platform_1.RandomIdGenerator();\n this.resource = _tracerProvider.resource;\n this.instrumentationLibrary = instrumentationLibrary;\n }\n /**\n * Starts a new Span or returns the default NoopSpan based on the sampling\n * decision.\n */\n startSpan(name, options = {}, context = api.context.active()) {\n var _a, _b, _c;\n // remove span from context in case a root span is requested via options\n if (options.root) {\n context = api.trace.deleteSpan(context);\n }\n const parentSpan = api.trace.getSpan(context);\n if ((0, core_1.isTracingSuppressed)(context)) {\n api.diag.debug('Instrumentation suppressed, returning Noop Span');\n const nonRecordingSpan = api.trace.wrapSpanContext(api.INVALID_SPAN_CONTEXT);\n return nonRecordingSpan;\n }\n const parentSpanContext = parentSpan === null || parentSpan === void 0 ? void 0 : parentSpan.spanContext();\n const spanId = this._idGenerator.generateSpanId();\n let traceId;\n let traceState;\n let parentSpanId;\n if (!parentSpanContext ||\n !api.trace.isSpanContextValid(parentSpanContext)) {\n // New root span.\n traceId = this._idGenerator.generateTraceId();\n }\n else {\n // New child span.\n traceId = parentSpanContext.traceId;\n traceState = parentSpanContext.traceState;\n parentSpanId = parentSpanContext.spanId;\n }\n const spanKind = (_a = options.kind) !== null && _a !== void 0 ? _a : api.SpanKind.INTERNAL;\n const links = ((_b = options.links) !== null && _b !== void 0 ? _b : []).map(link => {\n return {\n context: link.context,\n attributes: (0, core_1.sanitizeAttributes)(link.attributes),\n };\n });\n const attributes = (0, core_1.sanitizeAttributes)(options.attributes);\n // make sampling decision\n const samplingResult = this._sampler.shouldSample(context, traceId, name, spanKind, attributes, links);\n traceState = (_c = samplingResult.traceState) !== null && _c !== void 0 ? _c : traceState;\n const traceFlags = samplingResult.decision === api.SamplingDecision.RECORD_AND_SAMPLED\n ? api.TraceFlags.SAMPLED\n : api.TraceFlags.NONE;\n const spanContext = { traceId, spanId, traceFlags, traceState };\n if (samplingResult.decision === api.SamplingDecision.NOT_RECORD) {\n api.diag.debug('Recording is off, propagating context in a non-recording span');\n const nonRecordingSpan = api.trace.wrapSpanContext(spanContext);\n return nonRecordingSpan;\n }\n // Set initial span attributes. The attributes object may have been mutated\n // by the sampler, so we sanitize the merged attributes before setting them.\n const initAttributes = (0, core_1.sanitizeAttributes)(Object.assign(attributes, samplingResult.attributes));\n const span = new Span_1.Span(this, context, name, spanContext, spanKind, parentSpanId, links, options.startTime, undefined, initAttributes);\n return span;\n }\n startActiveSpan(name, arg2, arg3, arg4) {\n let opts;\n let ctx;\n let fn;\n if (arguments.length < 2) {\n return;\n }\n else if (arguments.length === 2) {\n fn = arg2;\n }\n else if (arguments.length === 3) {\n opts = arg2;\n fn = arg3;\n }\n else {\n opts = arg2;\n ctx = arg3;\n fn = arg4;\n }\n const parentContext = ctx !== null && ctx !== void 0 ? ctx : api.context.active();\n const span = this.startSpan(name, opts, parentContext);\n const contextWithSpanSet = api.trace.setSpan(parentContext, span);\n return api.context.with(contextWithSpanSet, fn, undefined, span);\n }\n /** Returns the active {@link GeneralLimits}. */\n getGeneralLimits() {\n return this._generalLimits;\n }\n /** Returns the active {@link SpanLimits}. */\n getSpanLimits() {\n return this._spanLimits;\n }\n getActiveSpanProcessor() {\n return this._tracerProvider.getActiveSpanProcessor();\n }\n}\nexports.Tracer = Tracer;\n//# sourceMappingURL=Tracer.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.buildSamplerFromEnv = exports.loadDefaultConfig = void 0;\nconst api_1 = require(\"@opentelemetry/api\");\nconst core_1 = require(\"@opentelemetry/core\");\nconst AlwaysOffSampler_1 = require(\"./sampler/AlwaysOffSampler\");\nconst AlwaysOnSampler_1 = require(\"./sampler/AlwaysOnSampler\");\nconst ParentBasedSampler_1 = require(\"./sampler/ParentBasedSampler\");\nconst TraceIdRatioBasedSampler_1 = require(\"./sampler/TraceIdRatioBasedSampler\");\nconst env = (0, core_1.getEnv)();\nconst FALLBACK_OTEL_TRACES_SAMPLER = core_1.TracesSamplerValues.AlwaysOn;\nconst DEFAULT_RATIO = 1;\n/**\n * Load default configuration. For fields with primitive values, any user-provided\n * value will override the corresponding default value. For fields with\n * non-primitive values (like `spanLimits`), the user-provided value will be\n * used to extend the default value.\n */\n// object needs to be wrapped in this function and called when needed otherwise\n// envs are parsed before tests are ran - causes tests using these envs to fail\nfunction loadDefaultConfig() {\n return {\n sampler: buildSamplerFromEnv(env),\n forceFlushTimeoutMillis: 30000,\n generalLimits: {\n attributeValueLengthLimit: (0, core_1.getEnv)().OTEL_ATTRIBUTE_VALUE_LENGTH_LIMIT,\n attributeCountLimit: (0, core_1.getEnv)().OTEL_ATTRIBUTE_COUNT_LIMIT,\n },\n spanLimits: {\n attributeValueLengthLimit: (0, core_1.getEnv)().OTEL_SPAN_ATTRIBUTE_VALUE_LENGTH_LIMIT,\n attributeCountLimit: (0, core_1.getEnv)().OTEL_SPAN_ATTRIBUTE_COUNT_LIMIT,\n linkCountLimit: (0, core_1.getEnv)().OTEL_SPAN_LINK_COUNT_LIMIT,\n eventCountLimit: (0, core_1.getEnv)().OTEL_SPAN_EVENT_COUNT_LIMIT,\n attributePerEventCountLimit: (0, core_1.getEnv)().OTEL_SPAN_ATTRIBUTE_PER_EVENT_COUNT_LIMIT,\n attributePerLinkCountLimit: (0, core_1.getEnv)().OTEL_SPAN_ATTRIBUTE_PER_LINK_COUNT_LIMIT,\n },\n };\n}\nexports.loadDefaultConfig = loadDefaultConfig;\n/**\n * Based on environment, builds a sampler, complies with specification.\n * @param environment optional, by default uses getEnv(), but allows passing a value to reuse parsed environment\n */\nfunction buildSamplerFromEnv(environment = (0, core_1.getEnv)()) {\n switch (environment.OTEL_TRACES_SAMPLER) {\n case core_1.TracesSamplerValues.AlwaysOn:\n return new AlwaysOnSampler_1.AlwaysOnSampler();\n case core_1.TracesSamplerValues.AlwaysOff:\n return new AlwaysOffSampler_1.AlwaysOffSampler();\n case core_1.TracesSamplerValues.ParentBasedAlwaysOn:\n return new ParentBasedSampler_1.ParentBasedSampler({\n root: new AlwaysOnSampler_1.AlwaysOnSampler(),\n });\n case core_1.TracesSamplerValues.ParentBasedAlwaysOff:\n return new ParentBasedSampler_1.ParentBasedSampler({\n root: new AlwaysOffSampler_1.AlwaysOffSampler(),\n });\n case core_1.TracesSamplerValues.TraceIdRatio:\n return new TraceIdRatioBasedSampler_1.TraceIdRatioBasedSampler(getSamplerProbabilityFromEnv(environment));\n case core_1.TracesSamplerValues.ParentBasedTraceIdRatio:\n return new ParentBasedSampler_1.ParentBasedSampler({\n root: new TraceIdRatioBasedSampler_1.TraceIdRatioBasedSampler(getSamplerProbabilityFromEnv(environment)),\n });\n default:\n api_1.diag.error(`OTEL_TRACES_SAMPLER value \"${environment.OTEL_TRACES_SAMPLER} invalid, defaulting to ${FALLBACK_OTEL_TRACES_SAMPLER}\".`);\n return new AlwaysOnSampler_1.AlwaysOnSampler();\n }\n}\nexports.buildSamplerFromEnv = buildSamplerFromEnv;\nfunction getSamplerProbabilityFromEnv(environment) {\n if (environment.OTEL_TRACES_SAMPLER_ARG === undefined ||\n environment.OTEL_TRACES_SAMPLER_ARG === '') {\n api_1.diag.error(`OTEL_TRACES_SAMPLER_ARG is blank, defaulting to ${DEFAULT_RATIO}.`);\n return DEFAULT_RATIO;\n }\n const probability = Number(environment.OTEL_TRACES_SAMPLER_ARG);\n if (isNaN(probability)) {\n api_1.diag.error(`OTEL_TRACES_SAMPLER_ARG=${environment.OTEL_TRACES_SAMPLER_ARG} was given, but it is invalid, defaulting to ${DEFAULT_RATIO}.`);\n return DEFAULT_RATIO;\n }\n if (probability < 0 || probability > 1) {\n api_1.diag.error(`OTEL_TRACES_SAMPLER_ARG=${environment.OTEL_TRACES_SAMPLER_ARG} was given, but it is out of range ([0..1]), defaulting to ${DEFAULT_RATIO}.`);\n return DEFAULT_RATIO;\n }\n return probability;\n}\n//# sourceMappingURL=config.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ExceptionEventName = void 0;\n// Event name definitions\nexports.ExceptionEventName = 'exception';\n//# sourceMappingURL=enums.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BatchSpanProcessorBase = void 0;\nconst api_1 = require(\"@opentelemetry/api\");\nconst core_1 = require(\"@opentelemetry/core\");\n/**\n * Implementation of the {@link SpanProcessor} that batches spans exported by\n * the SDK then pushes them to the exporter pipeline.\n */\nclass BatchSpanProcessorBase {\n constructor(_exporter, config) {\n this._exporter = _exporter;\n this._isExporting = false;\n this._finishedSpans = [];\n this._droppedSpansCount = 0;\n const env = (0, core_1.getEnv)();\n this._maxExportBatchSize =\n typeof (config === null || config === void 0 ? void 0 : config.maxExportBatchSize) === 'number'\n ? config.maxExportBatchSize\n : env.OTEL_BSP_MAX_EXPORT_BATCH_SIZE;\n this._maxQueueSize =\n typeof (config === null || config === void 0 ? void 0 : config.maxQueueSize) === 'number'\n ? config.maxQueueSize\n : env.OTEL_BSP_MAX_QUEUE_SIZE;\n this._scheduledDelayMillis =\n typeof (config === null || config === void 0 ? void 0 : config.scheduledDelayMillis) === 'number'\n ? config.scheduledDelayMillis\n : env.OTEL_BSP_SCHEDULE_DELAY;\n this._exportTimeoutMillis =\n typeof (config === null || config === void 0 ? void 0 : config.exportTimeoutMillis) === 'number'\n ? config.exportTimeoutMillis\n : env.OTEL_BSP_EXPORT_TIMEOUT;\n this._shutdownOnce = new core_1.BindOnceFuture(this._shutdown, this);\n if (this._maxExportBatchSize > this._maxQueueSize) {\n api_1.diag.warn('BatchSpanProcessor: maxExportBatchSize must be smaller or equal to maxQueueSize, setting maxExportBatchSize to match maxQueueSize');\n this._maxExportBatchSize = this._maxQueueSize;\n }\n }\n forceFlush() {\n if (this._shutdownOnce.isCalled) {\n return this._shutdownOnce.promise;\n }\n return this._flushAll();\n }\n // does nothing.\n onStart(_span, _parentContext) { }\n onEnd(span) {\n if (this._shutdownOnce.isCalled) {\n return;\n }\n if ((span.spanContext().traceFlags & api_1.TraceFlags.SAMPLED) === 0) {\n return;\n }\n this._addToBuffer(span);\n }\n shutdown() {\n return this._shutdownOnce.call();\n }\n _shutdown() {\n return Promise.resolve()\n .then(() => {\n return this.onShutdown();\n })\n .then(() => {\n return this._flushAll();\n })\n .then(() => {\n return this._exporter.shutdown();\n });\n }\n /** Add a span in the buffer. */\n _addToBuffer(span) {\n if (this._finishedSpans.length >= this._maxQueueSize) {\n // limit reached, drop span\n if (this._droppedSpansCount === 0) {\n api_1.diag.debug('maxQueueSize reached, dropping spans');\n }\n this._droppedSpansCount++;\n return;\n }\n if (this._droppedSpansCount > 0) {\n // some spans were dropped, log once with count of spans dropped\n api_1.diag.warn(`Dropped ${this._droppedSpansCount} spans because maxQueueSize reached`);\n this._droppedSpansCount = 0;\n }\n this._finishedSpans.push(span);\n this._maybeStartTimer();\n }\n /**\n * Send all spans to the exporter respecting the batch size limit\n * This function is used only on forceFlush or shutdown,\n * for all other cases _flush should be used\n * */\n _flushAll() {\n return new Promise((resolve, reject) => {\n const promises = [];\n // calculate number of batches\n const count = Math.ceil(this._finishedSpans.length / this._maxExportBatchSize);\n for (let i = 0, j = count; i < j; i++) {\n promises.push(this._flushOneBatch());\n }\n Promise.all(promises)\n .then(() => {\n resolve();\n })\n .catch(reject);\n });\n }\n _flushOneBatch() {\n this._clearTimer();\n if (this._finishedSpans.length === 0) {\n return Promise.resolve();\n }\n return new Promise((resolve, reject) => {\n const timer = setTimeout(() => {\n // don't wait anymore for export, this way the next batch can start\n reject(new Error('Timeout'));\n }, this._exportTimeoutMillis);\n // prevent downstream exporter calls from generating spans\n api_1.context.with((0, core_1.suppressTracing)(api_1.context.active()), () => {\n // Reset the finished spans buffer here because the next invocations of the _flush method\n // could pass the same finished spans to the exporter if the buffer is cleared\n // outside the execution of this callback.\n let spans;\n if (this._finishedSpans.length <= this._maxExportBatchSize) {\n spans = this._finishedSpans;\n this._finishedSpans = [];\n }\n else {\n spans = this._finishedSpans.splice(0, this._maxExportBatchSize);\n }\n const doExport = () => this._exporter.export(spans, result => {\n var _a;\n clearTimeout(timer);\n if (result.code === core_1.ExportResultCode.SUCCESS) {\n resolve();\n }\n else {\n reject((_a = result.error) !== null && _a !== void 0 ? _a : new Error('BatchSpanProcessor: span export failed'));\n }\n });\n let pendingResources = null;\n for (let i = 0, len = spans.length; i < len; i++) {\n const span = spans[i];\n if (span.resource.asyncAttributesPending &&\n span.resource.waitForAsyncAttributes) {\n pendingResources !== null && pendingResources !== void 0 ? pendingResources : (pendingResources = []);\n pendingResources.push(span.resource.waitForAsyncAttributes());\n }\n }\n // Avoid scheduling a promise to make the behavior more predictable and easier to test\n if (pendingResources === null) {\n doExport();\n }\n else {\n Promise.all(pendingResources).then(doExport, err => {\n (0, core_1.globalErrorHandler)(err);\n reject(err);\n });\n }\n });\n });\n }\n _maybeStartTimer() {\n if (this._isExporting)\n return;\n const flush = () => {\n this._isExporting = true;\n this._flushOneBatch()\n .finally(() => {\n this._isExporting = false;\n if (this._finishedSpans.length > 0) {\n this._clearTimer();\n this._maybeStartTimer();\n }\n })\n .catch(e => {\n this._isExporting = false;\n (0, core_1.globalErrorHandler)(e);\n });\n };\n // we only wait if the queue doesn't have enough elements yet\n if (this._finishedSpans.length >= this._maxExportBatchSize) {\n return flush();\n }\n if (this._timer !== undefined)\n return;\n this._timer = setTimeout(() => flush(), this._scheduledDelayMillis);\n (0, core_1.unrefTimer)(this._timer);\n }\n _clearTimer() {\n if (this._timer !== undefined) {\n clearTimeout(this._timer);\n this._timer = undefined;\n }\n }\n}\nexports.BatchSpanProcessorBase = BatchSpanProcessorBase;\n//# sourceMappingURL=BatchSpanProcessorBase.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ConsoleSpanExporter = void 0;\nconst core_1 = require(\"@opentelemetry/core\");\n/**\n * This is implementation of {@link SpanExporter} that prints spans to the\n * console. This class can be used for diagnostic purposes.\n */\n/* eslint-disable no-console */\nclass ConsoleSpanExporter {\n /**\n * Export spans.\n * @param spans\n * @param resultCallback\n */\n export(spans, resultCallback) {\n return this._sendSpans(spans, resultCallback);\n }\n /**\n * Shutdown the exporter.\n */\n shutdown() {\n this._sendSpans([]);\n return this.forceFlush();\n }\n /**\n * Exports any pending spans in exporter\n */\n forceFlush() {\n return Promise.resolve();\n }\n /**\n * converts span info into more readable format\n * @param span\n */\n _exportInfo(span) {\n var _a;\n return {\n resource: {\n attributes: span.resource.attributes,\n },\n traceId: span.spanContext().traceId,\n parentId: span.parentSpanId,\n traceState: (_a = span.spanContext().traceState) === null || _a === void 0 ? void 0 : _a.serialize(),\n name: span.name,\n id: span.spanContext().spanId,\n kind: span.kind,\n timestamp: (0, core_1.hrTimeToMicroseconds)(span.startTime),\n duration: (0, core_1.hrTimeToMicroseconds)(span.duration),\n attributes: span.attributes,\n status: span.status,\n events: span.events,\n links: span.links,\n };\n }\n /**\n * Showing spans in console\n * @param spans\n * @param done\n */\n _sendSpans(spans, done) {\n for (const span of spans) {\n console.dir(this._exportInfo(span), { depth: 3 });\n }\n if (done) {\n return done({ code: core_1.ExportResultCode.SUCCESS });\n }\n }\n}\nexports.ConsoleSpanExporter = ConsoleSpanExporter;\n//# sourceMappingURL=ConsoleSpanExporter.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.InMemorySpanExporter = void 0;\nconst core_1 = require(\"@opentelemetry/core\");\n/**\n * This class can be used for testing purposes. It stores the exported spans\n * in a list in memory that can be retrieved using the `getFinishedSpans()`\n * method.\n */\nclass InMemorySpanExporter {\n constructor() {\n this._finishedSpans = [];\n /**\n * Indicates if the exporter has been \"shutdown.\"\n * When false, exported spans will not be stored in-memory.\n */\n this._stopped = false;\n }\n export(spans, resultCallback) {\n if (this._stopped)\n return resultCallback({\n code: core_1.ExportResultCode.FAILED,\n error: new Error('Exporter has been stopped'),\n });\n this._finishedSpans.push(...spans);\n setTimeout(() => resultCallback({ code: core_1.ExportResultCode.SUCCESS }), 0);\n }\n shutdown() {\n this._stopped = true;\n this._finishedSpans = [];\n return this.forceFlush();\n }\n /**\n * Exports any pending spans in the exporter\n */\n forceFlush() {\n return Promise.resolve();\n }\n reset() {\n this._finishedSpans = [];\n }\n getFinishedSpans() {\n return this._finishedSpans;\n }\n}\nexports.InMemorySpanExporter = InMemorySpanExporter;\n//# sourceMappingURL=InMemorySpanExporter.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NoopSpanProcessor = void 0;\n/** No-op implementation of SpanProcessor */\nclass NoopSpanProcessor {\n onStart(_span, _context) { }\n onEnd(_span) { }\n shutdown() {\n return Promise.resolve();\n }\n forceFlush() {\n return Promise.resolve();\n }\n}\nexports.NoopSpanProcessor = NoopSpanProcessor;\n//# sourceMappingURL=NoopSpanProcessor.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=ReadableSpan.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SimpleSpanProcessor = void 0;\nconst api_1 = require(\"@opentelemetry/api\");\nconst core_1 = require(\"@opentelemetry/core\");\n/**\n * An implementation of the {@link SpanProcessor} that converts the {@link Span}\n * to {@link ReadableSpan} and passes it to the configured exporter.\n *\n * Only spans that are sampled are converted.\n */\nclass SimpleSpanProcessor {\n constructor(_exporter) {\n this._exporter = _exporter;\n this._shutdownOnce = new core_1.BindOnceFuture(this._shutdown, this);\n this._unresolvedExports = new Set();\n }\n async forceFlush() {\n // await unresolved resources before resolving\n await Promise.all(Array.from(this._unresolvedExports));\n if (this._exporter.forceFlush) {\n await this._exporter.forceFlush();\n }\n }\n onStart(_span, _parentContext) { }\n onEnd(span) {\n var _a, _b;\n if (this._shutdownOnce.isCalled) {\n return;\n }\n if ((span.spanContext().traceFlags & api_1.TraceFlags.SAMPLED) === 0) {\n return;\n }\n const doExport = () => core_1.internal\n ._export(this._exporter, [span])\n .then((result) => {\n var _a;\n if (result.code !== core_1.ExportResultCode.SUCCESS) {\n (0, core_1.globalErrorHandler)((_a = result.error) !== null && _a !== void 0 ? _a : new Error(`SimpleSpanProcessor: span export failed (status ${result})`));\n }\n })\n .catch(error => {\n (0, core_1.globalErrorHandler)(error);\n });\n // Avoid scheduling a promise to make the behavior more predictable and easier to test\n if (span.resource.asyncAttributesPending) {\n const exportPromise = (_b = (_a = span.resource).waitForAsyncAttributes) === null || _b === void 0 ? void 0 : _b.call(_a).then(() => {\n if (exportPromise != null) {\n this._unresolvedExports.delete(exportPromise);\n }\n return doExport();\n }, err => (0, core_1.globalErrorHandler)(err));\n // store the unresolved exports\n if (exportPromise != null) {\n this._unresolvedExports.add(exportPromise);\n }\n }\n else {\n void doExport();\n }\n }\n shutdown() {\n return this._shutdownOnce.call();\n }\n _shutdown() {\n return this._exporter.shutdown();\n }\n}\nexports.SimpleSpanProcessor = SimpleSpanProcessor;\n//# sourceMappingURL=SimpleSpanProcessor.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=SpanExporter.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./Tracer\"), exports);\n__exportStar(require(\"./BasicTracerProvider\"), exports);\n__exportStar(require(\"./platform\"), exports);\n__exportStar(require(\"./export/ConsoleSpanExporter\"), exports);\n__exportStar(require(\"./export/InMemorySpanExporter\"), exports);\n__exportStar(require(\"./export/ReadableSpan\"), exports);\n__exportStar(require(\"./export/SimpleSpanProcessor\"), exports);\n__exportStar(require(\"./export/SpanExporter\"), exports);\n__exportStar(require(\"./export/NoopSpanProcessor\"), exports);\n__exportStar(require(\"./sampler/AlwaysOffSampler\"), exports);\n__exportStar(require(\"./sampler/AlwaysOnSampler\"), exports);\n__exportStar(require(\"./sampler/ParentBasedSampler\"), exports);\n__exportStar(require(\"./sampler/TraceIdRatioBasedSampler\"), exports);\n__exportStar(require(\"./Sampler\"), exports);\n__exportStar(require(\"./Span\"), exports);\n__exportStar(require(\"./SpanProcessor\"), exports);\n__exportStar(require(\"./TimedEvent\"), exports);\n__exportStar(require(\"./types\"), exports);\n__exportStar(require(\"./IdGenerator\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./node\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RandomIdGenerator = void 0;\nconst SPAN_ID_BYTES = 8;\nconst TRACE_ID_BYTES = 16;\nclass RandomIdGenerator {\n constructor() {\n /**\n * Returns a random 16-byte trace ID formatted/encoded as a 32 lowercase hex\n * characters corresponding to 128 bits.\n */\n this.generateTraceId = getIdGenerator(TRACE_ID_BYTES);\n /**\n * Returns a random 8-byte span ID formatted/encoded as a 16 lowercase hex\n * characters corresponding to 64 bits.\n */\n this.generateSpanId = getIdGenerator(SPAN_ID_BYTES);\n }\n}\nexports.RandomIdGenerator = RandomIdGenerator;\nconst SHARED_BUFFER = Buffer.allocUnsafe(TRACE_ID_BYTES);\nfunction getIdGenerator(bytes) {\n return function generateId() {\n for (let i = 0; i < bytes / 4; i++) {\n // unsigned right shift drops decimal part of the number\n // it is required because if a number between 2**32 and 2**32 - 1 is generated, an out of range error is thrown by writeUInt32BE\n SHARED_BUFFER.writeUInt32BE((Math.random() * 2 ** 32) >>> 0, i * 4);\n }\n // If buffer is all 0, set the last byte to 1 to guarantee a valid w3c id is generated\n for (let i = 0; i < bytes; i++) {\n if (SHARED_BUFFER[i] > 0) {\n break;\n }\n else if (i === bytes - 1) {\n SHARED_BUFFER[bytes - 1] = 1;\n }\n }\n return SHARED_BUFFER.toString('hex', 0, bytes);\n };\n}\n//# sourceMappingURL=RandomIdGenerator.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BatchSpanProcessor = void 0;\nconst BatchSpanProcessorBase_1 = require(\"../../../export/BatchSpanProcessorBase\");\nclass BatchSpanProcessor extends BatchSpanProcessorBase_1.BatchSpanProcessorBase {\n onShutdown() { }\n}\nexports.BatchSpanProcessor = BatchSpanProcessor;\n//# sourceMappingURL=BatchSpanProcessor.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./export/BatchSpanProcessor\"), exports);\n__exportStar(require(\"./RandomIdGenerator\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AlwaysOffSampler = void 0;\nconst Sampler_1 = require(\"../Sampler\");\n/** Sampler that samples no traces. */\nclass AlwaysOffSampler {\n shouldSample() {\n return {\n decision: Sampler_1.SamplingDecision.NOT_RECORD,\n };\n }\n toString() {\n return 'AlwaysOffSampler';\n }\n}\nexports.AlwaysOffSampler = AlwaysOffSampler;\n//# sourceMappingURL=AlwaysOffSampler.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AlwaysOnSampler = void 0;\nconst Sampler_1 = require(\"../Sampler\");\n/** Sampler that samples all traces. */\nclass AlwaysOnSampler {\n shouldSample() {\n return {\n decision: Sampler_1.SamplingDecision.RECORD_AND_SAMPLED,\n };\n }\n toString() {\n return 'AlwaysOnSampler';\n }\n}\nexports.AlwaysOnSampler = AlwaysOnSampler;\n//# sourceMappingURL=AlwaysOnSampler.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ParentBasedSampler = void 0;\nconst api_1 = require(\"@opentelemetry/api\");\nconst core_1 = require(\"@opentelemetry/core\");\nconst AlwaysOffSampler_1 = require(\"./AlwaysOffSampler\");\nconst AlwaysOnSampler_1 = require(\"./AlwaysOnSampler\");\n/**\n * A composite sampler that either respects the parent span's sampling decision\n * or delegates to `delegateSampler` for root spans.\n */\nclass ParentBasedSampler {\n constructor(config) {\n var _a, _b, _c, _d;\n this._root = config.root;\n if (!this._root) {\n (0, core_1.globalErrorHandler)(new Error('ParentBasedSampler must have a root sampler configured'));\n this._root = new AlwaysOnSampler_1.AlwaysOnSampler();\n }\n this._remoteParentSampled =\n (_a = config.remoteParentSampled) !== null && _a !== void 0 ? _a : new AlwaysOnSampler_1.AlwaysOnSampler();\n this._remoteParentNotSampled =\n (_b = config.remoteParentNotSampled) !== null && _b !== void 0 ? _b : new AlwaysOffSampler_1.AlwaysOffSampler();\n this._localParentSampled =\n (_c = config.localParentSampled) !== null && _c !== void 0 ? _c : new AlwaysOnSampler_1.AlwaysOnSampler();\n this._localParentNotSampled =\n (_d = config.localParentNotSampled) !== null && _d !== void 0 ? _d : new AlwaysOffSampler_1.AlwaysOffSampler();\n }\n shouldSample(context, traceId, spanName, spanKind, attributes, links) {\n const parentContext = api_1.trace.getSpanContext(context);\n if (!parentContext || !(0, api_1.isSpanContextValid)(parentContext)) {\n return this._root.shouldSample(context, traceId, spanName, spanKind, attributes, links);\n }\n if (parentContext.isRemote) {\n if (parentContext.traceFlags & api_1.TraceFlags.SAMPLED) {\n return this._remoteParentSampled.shouldSample(context, traceId, spanName, spanKind, attributes, links);\n }\n return this._remoteParentNotSampled.shouldSample(context, traceId, spanName, spanKind, attributes, links);\n }\n if (parentContext.traceFlags & api_1.TraceFlags.SAMPLED) {\n return this._localParentSampled.shouldSample(context, traceId, spanName, spanKind, attributes, links);\n }\n return this._localParentNotSampled.shouldSample(context, traceId, spanName, spanKind, attributes, links);\n }\n toString() {\n return `ParentBased{root=${this._root.toString()}, remoteParentSampled=${this._remoteParentSampled.toString()}, remoteParentNotSampled=${this._remoteParentNotSampled.toString()}, localParentSampled=${this._localParentSampled.toString()}, localParentNotSampled=${this._localParentNotSampled.toString()}}`;\n }\n}\nexports.ParentBasedSampler = ParentBasedSampler;\n//# sourceMappingURL=ParentBasedSampler.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TraceIdRatioBasedSampler = void 0;\nconst api_1 = require(\"@opentelemetry/api\");\nconst Sampler_1 = require(\"../Sampler\");\n/** Sampler that samples a given fraction of traces based of trace id deterministically. */\nclass TraceIdRatioBasedSampler {\n constructor(_ratio = 0) {\n this._ratio = _ratio;\n this._ratio = this._normalize(_ratio);\n this._upperBound = Math.floor(this._ratio * 0xffffffff);\n }\n shouldSample(context, traceId) {\n return {\n decision: (0, api_1.isValidTraceId)(traceId) && this._accumulate(traceId) < this._upperBound\n ? Sampler_1.SamplingDecision.RECORD_AND_SAMPLED\n : Sampler_1.SamplingDecision.NOT_RECORD,\n };\n }\n toString() {\n return `TraceIdRatioBased{${this._ratio}}`;\n }\n _normalize(ratio) {\n if (typeof ratio !== 'number' || isNaN(ratio))\n return 0;\n return ratio >= 1 ? 1 : ratio <= 0 ? 0 : ratio;\n }\n _accumulate(traceId) {\n let accumulation = 0;\n for (let i = 0; i < traceId.length / 8; i++) {\n const pos = i * 8;\n const part = parseInt(traceId.slice(pos, pos + 8), 16);\n accumulation = (accumulation ^ part) >>> 0;\n }\n return accumulation;\n }\n}\nexports.TraceIdRatioBasedSampler = TraceIdRatioBasedSampler;\n//# sourceMappingURL=TraceIdRatioBasedSampler.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=types.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.reconfigureLimits = exports.mergeConfig = void 0;\nconst config_1 = require(\"./config\");\nconst core_1 = require(\"@opentelemetry/core\");\n/**\n * Function to merge Default configuration (as specified in './config') with\n * user provided configurations.\n */\nfunction mergeConfig(userConfig) {\n const perInstanceDefaults = {\n sampler: (0, config_1.buildSamplerFromEnv)(),\n };\n const DEFAULT_CONFIG = (0, config_1.loadDefaultConfig)();\n const target = Object.assign({}, DEFAULT_CONFIG, perInstanceDefaults, userConfig);\n target.generalLimits = Object.assign({}, DEFAULT_CONFIG.generalLimits, userConfig.generalLimits || {});\n target.spanLimits = Object.assign({}, DEFAULT_CONFIG.spanLimits, userConfig.spanLimits || {});\n return target;\n}\nexports.mergeConfig = mergeConfig;\n/**\n * When general limits are provided and model specific limits are not,\n * configures the model specific limits by using the values from the general ones.\n * @param userConfig User provided tracer configuration\n */\nfunction reconfigureLimits(userConfig) {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;\n const spanLimits = Object.assign({}, userConfig.spanLimits);\n const parsedEnvConfig = (0, core_1.getEnvWithoutDefaults)();\n /**\n * Reassign span attribute count limit to use first non null value defined by user or use default value\n */\n spanLimits.attributeCountLimit =\n (_f = (_e = (_d = (_b = (_a = userConfig.spanLimits) === null || _a === void 0 ? void 0 : _a.attributeCountLimit) !== null && _b !== void 0 ? _b : (_c = userConfig.generalLimits) === null || _c === void 0 ? void 0 : _c.attributeCountLimit) !== null && _d !== void 0 ? _d : parsedEnvConfig.OTEL_SPAN_ATTRIBUTE_COUNT_LIMIT) !== null && _e !== void 0 ? _e : parsedEnvConfig.OTEL_ATTRIBUTE_COUNT_LIMIT) !== null && _f !== void 0 ? _f : core_1.DEFAULT_ATTRIBUTE_COUNT_LIMIT;\n /**\n * Reassign span attribute value length limit to use first non null value defined by user or use default value\n */\n spanLimits.attributeValueLengthLimit =\n (_m = (_l = (_k = (_h = (_g = userConfig.spanLimits) === null || _g === void 0 ? void 0 : _g.attributeValueLengthLimit) !== null && _h !== void 0 ? _h : (_j = userConfig.generalLimits) === null || _j === void 0 ? void 0 : _j.attributeValueLengthLimit) !== null && _k !== void 0 ? _k : parsedEnvConfig.OTEL_SPAN_ATTRIBUTE_VALUE_LENGTH_LIMIT) !== null && _l !== void 0 ? _l : parsedEnvConfig.OTEL_ATTRIBUTE_VALUE_LENGTH_LIMIT) !== null && _m !== void 0 ? _m : core_1.DEFAULT_ATTRIBUTE_VALUE_LENGTH_LIMIT;\n return Object.assign({}, userConfig, { spanLimits });\n}\nexports.reconfigureLimits = reconfigureLimits;\n//# sourceMappingURL=utility.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./trace\"), exports);\n__exportStar(require(\"./resource\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createConstMap = void 0;\n/**\n * Creates a const map from the given values\n * @param values - An array of values to be used as keys and values in the map.\n * @returns A populated version of the map with the values and keys derived from the values.\n */\n/*#__NO_SIDE_EFFECTS__*/\nfunction createConstMap(values) {\n // eslint-disable-next-line prefer-const, @typescript-eslint/no-explicit-any\n let res = {};\n const len = values.length;\n for (let lp = 0; lp < len; lp++) {\n const val = values[lp];\n if (val) {\n res[String(val).toUpperCase().replace(/[-.]/g, '_')] = val;\n }\n }\n return res;\n}\nexports.createConstMap = createConstMap;\n//# sourceMappingURL=utils.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SEMRESATTRS_K8S_STATEFULSET_NAME = exports.SEMRESATTRS_K8S_STATEFULSET_UID = exports.SEMRESATTRS_K8S_DEPLOYMENT_NAME = exports.SEMRESATTRS_K8S_DEPLOYMENT_UID = exports.SEMRESATTRS_K8S_REPLICASET_NAME = exports.SEMRESATTRS_K8S_REPLICASET_UID = exports.SEMRESATTRS_K8S_CONTAINER_NAME = exports.SEMRESATTRS_K8S_POD_NAME = exports.SEMRESATTRS_K8S_POD_UID = exports.SEMRESATTRS_K8S_NAMESPACE_NAME = exports.SEMRESATTRS_K8S_NODE_UID = exports.SEMRESATTRS_K8S_NODE_NAME = exports.SEMRESATTRS_K8S_CLUSTER_NAME = exports.SEMRESATTRS_HOST_IMAGE_VERSION = exports.SEMRESATTRS_HOST_IMAGE_ID = exports.SEMRESATTRS_HOST_IMAGE_NAME = exports.SEMRESATTRS_HOST_ARCH = exports.SEMRESATTRS_HOST_TYPE = exports.SEMRESATTRS_HOST_NAME = exports.SEMRESATTRS_HOST_ID = exports.SEMRESATTRS_FAAS_MAX_MEMORY = exports.SEMRESATTRS_FAAS_INSTANCE = exports.SEMRESATTRS_FAAS_VERSION = exports.SEMRESATTRS_FAAS_ID = exports.SEMRESATTRS_FAAS_NAME = exports.SEMRESATTRS_DEVICE_MODEL_NAME = exports.SEMRESATTRS_DEVICE_MODEL_IDENTIFIER = exports.SEMRESATTRS_DEVICE_ID = exports.SEMRESATTRS_DEPLOYMENT_ENVIRONMENT = exports.SEMRESATTRS_CONTAINER_IMAGE_TAG = exports.SEMRESATTRS_CONTAINER_IMAGE_NAME = exports.SEMRESATTRS_CONTAINER_RUNTIME = exports.SEMRESATTRS_CONTAINER_ID = exports.SEMRESATTRS_CONTAINER_NAME = exports.SEMRESATTRS_AWS_LOG_STREAM_ARNS = exports.SEMRESATTRS_AWS_LOG_STREAM_NAMES = exports.SEMRESATTRS_AWS_LOG_GROUP_ARNS = exports.SEMRESATTRS_AWS_LOG_GROUP_NAMES = exports.SEMRESATTRS_AWS_EKS_CLUSTER_ARN = exports.SEMRESATTRS_AWS_ECS_TASK_REVISION = exports.SEMRESATTRS_AWS_ECS_TASK_FAMILY = exports.SEMRESATTRS_AWS_ECS_TASK_ARN = exports.SEMRESATTRS_AWS_ECS_LAUNCHTYPE = exports.SEMRESATTRS_AWS_ECS_CLUSTER_ARN = exports.SEMRESATTRS_AWS_ECS_CONTAINER_ARN = exports.SEMRESATTRS_CLOUD_PLATFORM = exports.SEMRESATTRS_CLOUD_AVAILABILITY_ZONE = exports.SEMRESATTRS_CLOUD_REGION = exports.SEMRESATTRS_CLOUD_ACCOUNT_ID = exports.SEMRESATTRS_CLOUD_PROVIDER = void 0;\nexports.CLOUDPLATFORMVALUES_GCP_COMPUTE_ENGINE = exports.CLOUDPLATFORMVALUES_AZURE_APP_SERVICE = exports.CLOUDPLATFORMVALUES_AZURE_FUNCTIONS = exports.CLOUDPLATFORMVALUES_AZURE_AKS = exports.CLOUDPLATFORMVALUES_AZURE_CONTAINER_INSTANCES = exports.CLOUDPLATFORMVALUES_AZURE_VM = exports.CLOUDPLATFORMVALUES_AWS_ELASTIC_BEANSTALK = exports.CLOUDPLATFORMVALUES_AWS_LAMBDA = exports.CLOUDPLATFORMVALUES_AWS_EKS = exports.CLOUDPLATFORMVALUES_AWS_ECS = exports.CLOUDPLATFORMVALUES_AWS_EC2 = exports.CLOUDPLATFORMVALUES_ALIBABA_CLOUD_FC = exports.CLOUDPLATFORMVALUES_ALIBABA_CLOUD_ECS = exports.CloudProviderValues = exports.CLOUDPROVIDERVALUES_GCP = exports.CLOUDPROVIDERVALUES_AZURE = exports.CLOUDPROVIDERVALUES_AWS = exports.CLOUDPROVIDERVALUES_ALIBABA_CLOUD = exports.SemanticResourceAttributes = exports.SEMRESATTRS_WEBENGINE_DESCRIPTION = exports.SEMRESATTRS_WEBENGINE_VERSION = exports.SEMRESATTRS_WEBENGINE_NAME = exports.SEMRESATTRS_TELEMETRY_AUTO_VERSION = exports.SEMRESATTRS_TELEMETRY_SDK_VERSION = exports.SEMRESATTRS_TELEMETRY_SDK_LANGUAGE = exports.SEMRESATTRS_TELEMETRY_SDK_NAME = exports.SEMRESATTRS_SERVICE_VERSION = exports.SEMRESATTRS_SERVICE_INSTANCE_ID = exports.SEMRESATTRS_SERVICE_NAMESPACE = exports.SEMRESATTRS_SERVICE_NAME = exports.SEMRESATTRS_PROCESS_RUNTIME_DESCRIPTION = exports.SEMRESATTRS_PROCESS_RUNTIME_VERSION = exports.SEMRESATTRS_PROCESS_RUNTIME_NAME = exports.SEMRESATTRS_PROCESS_OWNER = exports.SEMRESATTRS_PROCESS_COMMAND_ARGS = exports.SEMRESATTRS_PROCESS_COMMAND_LINE = exports.SEMRESATTRS_PROCESS_COMMAND = exports.SEMRESATTRS_PROCESS_EXECUTABLE_PATH = exports.SEMRESATTRS_PROCESS_EXECUTABLE_NAME = exports.SEMRESATTRS_PROCESS_PID = exports.SEMRESATTRS_OS_VERSION = exports.SEMRESATTRS_OS_NAME = exports.SEMRESATTRS_OS_DESCRIPTION = exports.SEMRESATTRS_OS_TYPE = exports.SEMRESATTRS_K8S_CRONJOB_NAME = exports.SEMRESATTRS_K8S_CRONJOB_UID = exports.SEMRESATTRS_K8S_JOB_NAME = exports.SEMRESATTRS_K8S_JOB_UID = exports.SEMRESATTRS_K8S_DAEMONSET_NAME = exports.SEMRESATTRS_K8S_DAEMONSET_UID = void 0;\nexports.TelemetrySdkLanguageValues = exports.TELEMETRYSDKLANGUAGEVALUES_WEBJS = exports.TELEMETRYSDKLANGUAGEVALUES_RUBY = exports.TELEMETRYSDKLANGUAGEVALUES_PYTHON = exports.TELEMETRYSDKLANGUAGEVALUES_PHP = exports.TELEMETRYSDKLANGUAGEVALUES_NODEJS = exports.TELEMETRYSDKLANGUAGEVALUES_JAVA = exports.TELEMETRYSDKLANGUAGEVALUES_GO = exports.TELEMETRYSDKLANGUAGEVALUES_ERLANG = exports.TELEMETRYSDKLANGUAGEVALUES_DOTNET = exports.TELEMETRYSDKLANGUAGEVALUES_CPP = exports.OsTypeValues = exports.OSTYPEVALUES_Z_OS = exports.OSTYPEVALUES_SOLARIS = exports.OSTYPEVALUES_AIX = exports.OSTYPEVALUES_HPUX = exports.OSTYPEVALUES_DRAGONFLYBSD = exports.OSTYPEVALUES_OPENBSD = exports.OSTYPEVALUES_NETBSD = exports.OSTYPEVALUES_FREEBSD = exports.OSTYPEVALUES_DARWIN = exports.OSTYPEVALUES_LINUX = exports.OSTYPEVALUES_WINDOWS = exports.HostArchValues = exports.HOSTARCHVALUES_X86 = exports.HOSTARCHVALUES_PPC64 = exports.HOSTARCHVALUES_PPC32 = exports.HOSTARCHVALUES_IA64 = exports.HOSTARCHVALUES_ARM64 = exports.HOSTARCHVALUES_ARM32 = exports.HOSTARCHVALUES_AMD64 = exports.AwsEcsLaunchtypeValues = exports.AWSECSLAUNCHTYPEVALUES_FARGATE = exports.AWSECSLAUNCHTYPEVALUES_EC2 = exports.CloudPlatformValues = exports.CLOUDPLATFORMVALUES_GCP_APP_ENGINE = exports.CLOUDPLATFORMVALUES_GCP_CLOUD_FUNCTIONS = exports.CLOUDPLATFORMVALUES_GCP_KUBERNETES_ENGINE = exports.CLOUDPLATFORMVALUES_GCP_CLOUD_RUN = void 0;\nconst utils_1 = require(\"../internal/utils\");\n//----------------------------------------------------------------------------------------------------------\n// DO NOT EDIT, this is an Auto-generated file from scripts/semconv/templates//templates/SemanticAttributes.ts.j2\n//----------------------------------------------------------------------------------------------------------\n//----------------------------------------------------------------------------------------------------------\n// Constant values for SemanticResourceAttributes\n//----------------------------------------------------------------------------------------------------------\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifable export names for some package types\nconst TMP_CLOUD_PROVIDER = 'cloud.provider';\nconst TMP_CLOUD_ACCOUNT_ID = 'cloud.account.id';\nconst TMP_CLOUD_REGION = 'cloud.region';\nconst TMP_CLOUD_AVAILABILITY_ZONE = 'cloud.availability_zone';\nconst TMP_CLOUD_PLATFORM = 'cloud.platform';\nconst TMP_AWS_ECS_CONTAINER_ARN = 'aws.ecs.container.arn';\nconst TMP_AWS_ECS_CLUSTER_ARN = 'aws.ecs.cluster.arn';\nconst TMP_AWS_ECS_LAUNCHTYPE = 'aws.ecs.launchtype';\nconst TMP_AWS_ECS_TASK_ARN = 'aws.ecs.task.arn';\nconst TMP_AWS_ECS_TASK_FAMILY = 'aws.ecs.task.family';\nconst TMP_AWS_ECS_TASK_REVISION = 'aws.ecs.task.revision';\nconst TMP_AWS_EKS_CLUSTER_ARN = 'aws.eks.cluster.arn';\nconst TMP_AWS_LOG_GROUP_NAMES = 'aws.log.group.names';\nconst TMP_AWS_LOG_GROUP_ARNS = 'aws.log.group.arns';\nconst TMP_AWS_LOG_STREAM_NAMES = 'aws.log.stream.names';\nconst TMP_AWS_LOG_STREAM_ARNS = 'aws.log.stream.arns';\nconst TMP_CONTAINER_NAME = 'container.name';\nconst TMP_CONTAINER_ID = 'container.id';\nconst TMP_CONTAINER_RUNTIME = 'container.runtime';\nconst TMP_CONTAINER_IMAGE_NAME = 'container.image.name';\nconst TMP_CONTAINER_IMAGE_TAG = 'container.image.tag';\nconst TMP_DEPLOYMENT_ENVIRONMENT = 'deployment.environment';\nconst TMP_DEVICE_ID = 'device.id';\nconst TMP_DEVICE_MODEL_IDENTIFIER = 'device.model.identifier';\nconst TMP_DEVICE_MODEL_NAME = 'device.model.name';\nconst TMP_FAAS_NAME = 'faas.name';\nconst TMP_FAAS_ID = 'faas.id';\nconst TMP_FAAS_VERSION = 'faas.version';\nconst TMP_FAAS_INSTANCE = 'faas.instance';\nconst TMP_FAAS_MAX_MEMORY = 'faas.max_memory';\nconst TMP_HOST_ID = 'host.id';\nconst TMP_HOST_NAME = 'host.name';\nconst TMP_HOST_TYPE = 'host.type';\nconst TMP_HOST_ARCH = 'host.arch';\nconst TMP_HOST_IMAGE_NAME = 'host.image.name';\nconst TMP_HOST_IMAGE_ID = 'host.image.id';\nconst TMP_HOST_IMAGE_VERSION = 'host.image.version';\nconst TMP_K8S_CLUSTER_NAME = 'k8s.cluster.name';\nconst TMP_K8S_NODE_NAME = 'k8s.node.name';\nconst TMP_K8S_NODE_UID = 'k8s.node.uid';\nconst TMP_K8S_NAMESPACE_NAME = 'k8s.namespace.name';\nconst TMP_K8S_POD_UID = 'k8s.pod.uid';\nconst TMP_K8S_POD_NAME = 'k8s.pod.name';\nconst TMP_K8S_CONTAINER_NAME = 'k8s.container.name';\nconst TMP_K8S_REPLICASET_UID = 'k8s.replicaset.uid';\nconst TMP_K8S_REPLICASET_NAME = 'k8s.replicaset.name';\nconst TMP_K8S_DEPLOYMENT_UID = 'k8s.deployment.uid';\nconst TMP_K8S_DEPLOYMENT_NAME = 'k8s.deployment.name';\nconst TMP_K8S_STATEFULSET_UID = 'k8s.statefulset.uid';\nconst TMP_K8S_STATEFULSET_NAME = 'k8s.statefulset.name';\nconst TMP_K8S_DAEMONSET_UID = 'k8s.daemonset.uid';\nconst TMP_K8S_DAEMONSET_NAME = 'k8s.daemonset.name';\nconst TMP_K8S_JOB_UID = 'k8s.job.uid';\nconst TMP_K8S_JOB_NAME = 'k8s.job.name';\nconst TMP_K8S_CRONJOB_UID = 'k8s.cronjob.uid';\nconst TMP_K8S_CRONJOB_NAME = 'k8s.cronjob.name';\nconst TMP_OS_TYPE = 'os.type';\nconst TMP_OS_DESCRIPTION = 'os.description';\nconst TMP_OS_NAME = 'os.name';\nconst TMP_OS_VERSION = 'os.version';\nconst TMP_PROCESS_PID = 'process.pid';\nconst TMP_PROCESS_EXECUTABLE_NAME = 'process.executable.name';\nconst TMP_PROCESS_EXECUTABLE_PATH = 'process.executable.path';\nconst TMP_PROCESS_COMMAND = 'process.command';\nconst TMP_PROCESS_COMMAND_LINE = 'process.command_line';\nconst TMP_PROCESS_COMMAND_ARGS = 'process.command_args';\nconst TMP_PROCESS_OWNER = 'process.owner';\nconst TMP_PROCESS_RUNTIME_NAME = 'process.runtime.name';\nconst TMP_PROCESS_RUNTIME_VERSION = 'process.runtime.version';\nconst TMP_PROCESS_RUNTIME_DESCRIPTION = 'process.runtime.description';\nconst TMP_SERVICE_NAME = 'service.name';\nconst TMP_SERVICE_NAMESPACE = 'service.namespace';\nconst TMP_SERVICE_INSTANCE_ID = 'service.instance.id';\nconst TMP_SERVICE_VERSION = 'service.version';\nconst TMP_TELEMETRY_SDK_NAME = 'telemetry.sdk.name';\nconst TMP_TELEMETRY_SDK_LANGUAGE = 'telemetry.sdk.language';\nconst TMP_TELEMETRY_SDK_VERSION = 'telemetry.sdk.version';\nconst TMP_TELEMETRY_AUTO_VERSION = 'telemetry.auto.version';\nconst TMP_WEBENGINE_NAME = 'webengine.name';\nconst TMP_WEBENGINE_VERSION = 'webengine.version';\nconst TMP_WEBENGINE_DESCRIPTION = 'webengine.description';\n/**\n * Name of the cloud provider.\n */\nexports.SEMRESATTRS_CLOUD_PROVIDER = TMP_CLOUD_PROVIDER;\n/**\n * The cloud account ID the resource is assigned to.\n */\nexports.SEMRESATTRS_CLOUD_ACCOUNT_ID = TMP_CLOUD_ACCOUNT_ID;\n/**\n * The geographical region the resource is running. Refer to your provider's docs to see the available regions, for example [Alibaba Cloud regions](https://www.alibabacloud.com/help/doc-detail/40654.htm), [AWS regions](https://aws.amazon.com/about-aws/global-infrastructure/regions_az/), [Azure regions](https://azure.microsoft.com/en-us/global-infrastructure/geographies/), or [Google Cloud regions](https://cloud.google.com/about/locations).\n */\nexports.SEMRESATTRS_CLOUD_REGION = TMP_CLOUD_REGION;\n/**\n * Cloud regions often have multiple, isolated locations known as zones to increase availability. Availability zone represents the zone where the resource is running.\n *\n * Note: Availability zones are called "zones" on Alibaba Cloud and Google Cloud.\n */\nexports.SEMRESATTRS_CLOUD_AVAILABILITY_ZONE = TMP_CLOUD_AVAILABILITY_ZONE;\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n */\nexports.SEMRESATTRS_CLOUD_PLATFORM = TMP_CLOUD_PLATFORM;\n/**\n * The Amazon Resource Name (ARN) of an [ECS container instance](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ECS_instances.html).\n */\nexports.SEMRESATTRS_AWS_ECS_CONTAINER_ARN = TMP_AWS_ECS_CONTAINER_ARN;\n/**\n * The ARN of an [ECS cluster](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/clusters.html).\n */\nexports.SEMRESATTRS_AWS_ECS_CLUSTER_ARN = TMP_AWS_ECS_CLUSTER_ARN;\n/**\n * The [launch type](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/launch_types.html) for an ECS task.\n */\nexports.SEMRESATTRS_AWS_ECS_LAUNCHTYPE = TMP_AWS_ECS_LAUNCHTYPE;\n/**\n * The ARN of an [ECS task definition](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definitions.html).\n */\nexports.SEMRESATTRS_AWS_ECS_TASK_ARN = TMP_AWS_ECS_TASK_ARN;\n/**\n * The task definition family this task definition is a member of.\n */\nexports.SEMRESATTRS_AWS_ECS_TASK_FAMILY = TMP_AWS_ECS_TASK_FAMILY;\n/**\n * The revision for this task definition.\n */\nexports.SEMRESATTRS_AWS_ECS_TASK_REVISION = TMP_AWS_ECS_TASK_REVISION;\n/**\n * The ARN of an EKS cluster.\n */\nexports.SEMRESATTRS_AWS_EKS_CLUSTER_ARN = TMP_AWS_EKS_CLUSTER_ARN;\n/**\n * The name(s) of the AWS log group(s) an application is writing to.\n *\n * Note: Multiple log groups must be supported for cases like multi-container applications, where a single application has sidecar containers, and each write to their own log group.\n */\nexports.SEMRESATTRS_AWS_LOG_GROUP_NAMES = TMP_AWS_LOG_GROUP_NAMES;\n/**\n * The Amazon Resource Name(s) (ARN) of the AWS log group(s).\n *\n * Note: See the [log group ARN format documentation](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/iam-access-control-overview-cwl.html#CWL_ARN_Format).\n */\nexports.SEMRESATTRS_AWS_LOG_GROUP_ARNS = TMP_AWS_LOG_GROUP_ARNS;\n/**\n * The name(s) of the AWS log stream(s) an application is writing to.\n */\nexports.SEMRESATTRS_AWS_LOG_STREAM_NAMES = TMP_AWS_LOG_STREAM_NAMES;\n/**\n * The ARN(s) of the AWS log stream(s).\n *\n * Note: See the [log stream ARN format documentation](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/iam-access-control-overview-cwl.html#CWL_ARN_Format). One log group can contain several log streams, so these ARNs necessarily identify both a log group and a log stream.\n */\nexports.SEMRESATTRS_AWS_LOG_STREAM_ARNS = TMP_AWS_LOG_STREAM_ARNS;\n/**\n * Container name.\n */\nexports.SEMRESATTRS_CONTAINER_NAME = TMP_CONTAINER_NAME;\n/**\n * Container ID. Usually a UUID, as for example used to [identify Docker containers](https://docs.docker.com/engine/reference/run/#container-identification). The UUID might be abbreviated.\n */\nexports.SEMRESATTRS_CONTAINER_ID = TMP_CONTAINER_ID;\n/**\n * The container runtime managing this container.\n */\nexports.SEMRESATTRS_CONTAINER_RUNTIME = TMP_CONTAINER_RUNTIME;\n/**\n * Name of the image the container was built on.\n */\nexports.SEMRESATTRS_CONTAINER_IMAGE_NAME = TMP_CONTAINER_IMAGE_NAME;\n/**\n * Container image tag.\n */\nexports.SEMRESATTRS_CONTAINER_IMAGE_TAG = TMP_CONTAINER_IMAGE_TAG;\n/**\n * Name of the [deployment environment](https://en.wikipedia.org/wiki/Deployment_environment) (aka deployment tier).\n */\nexports.SEMRESATTRS_DEPLOYMENT_ENVIRONMENT = TMP_DEPLOYMENT_ENVIRONMENT;\n/**\n * A unique identifier representing the device.\n *\n * Note: The device identifier MUST only be defined using the values outlined below. This value is not an advertising identifier and MUST NOT be used as such. On iOS (Swift or Objective-C), this value MUST be equal to the [vendor identifier](https://developer.apple.com/documentation/uikit/uidevice/1620059-identifierforvendor). On Android (Java or Kotlin), this value MUST be equal to the Firebase Installation ID or a globally unique UUID which is persisted across sessions in your application. More information can be found [here](https://developer.android.com/training/articles/user-data-ids) on best practices and exact implementation details. Caution should be taken when storing personal data or anything which can identify a user. GDPR and data protection laws may apply, ensure you do your own due diligence.\n */\nexports.SEMRESATTRS_DEVICE_ID = TMP_DEVICE_ID;\n/**\n * The model identifier for the device.\n *\n * Note: It's recommended this value represents a machine readable version of the model identifier rather than the market or consumer-friendly name of the device.\n */\nexports.SEMRESATTRS_DEVICE_MODEL_IDENTIFIER = TMP_DEVICE_MODEL_IDENTIFIER;\n/**\n * The marketing name for the device model.\n *\n * Note: It's recommended this value represents a human readable version of the device model rather than a machine readable alternative.\n */\nexports.SEMRESATTRS_DEVICE_MODEL_NAME = TMP_DEVICE_MODEL_NAME;\n/**\n * The name of the single function that this runtime instance executes.\n *\n * Note: This is the name of the function as configured/deployed on the FaaS platform and is usually different from the name of the callback function (which may be stored in the [`code.namespace`/`code.function`](../../trace/semantic_conventions/span-general.md#source-code-attributes) span attributes).\n */\nexports.SEMRESATTRS_FAAS_NAME = TMP_FAAS_NAME;\n/**\n* The unique ID of the single function that this runtime instance executes.\n*\n* Note: Depending on the cloud provider, use:\n\n* **AWS Lambda:** The function [ARN](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html).\nTake care not to use the "invoked ARN" directly but replace any\n[alias suffix](https://docs.aws.amazon.com/lambda/latest/dg/configuration-aliases.html) with the resolved function version, as the same runtime instance may be invokable with multiple\ndifferent aliases.\n* **GCP:** The [URI of the resource](https://cloud.google.com/iam/docs/full-resource-names)\n* **Azure:** The [Fully Qualified Resource ID](https://docs.microsoft.com/en-us/rest/api/resources/resources/get-by-id).\n\nOn some providers, it may not be possible to determine the full ID at startup,\nwhich is why this field cannot be made required. For example, on AWS the account ID\npart of the ARN is not available without calling another AWS API\nwhich may be deemed too slow for a short-running lambda function.\nAs an alternative, consider setting `faas.id` as a span attribute instead.\n*/\nexports.SEMRESATTRS_FAAS_ID = TMP_FAAS_ID;\n/**\n* The immutable version of the function being executed.\n*\n* Note: Depending on the cloud provider and platform, use:\n\n* **AWS Lambda:** The [function version](https://docs.aws.amazon.com/lambda/latest/dg/configuration-versions.html)\n (an integer represented as a decimal string).\n* **Google Cloud Run:** The [revision](https://cloud.google.com/run/docs/managing/revisions)\n (i.e., the function name plus the revision suffix).\n* **Google Cloud Functions:** The value of the\n [`K_REVISION` environment variable](https://cloud.google.com/functions/docs/env-var#runtime_environment_variables_set_automatically).\n* **Azure Functions:** Not applicable. Do not set this attribute.\n*/\nexports.SEMRESATTRS_FAAS_VERSION = TMP_FAAS_VERSION;\n/**\n * The execution environment ID as a string, that will be potentially reused for other invocations to the same function/function version.\n *\n * Note: * **AWS Lambda:** Use the (full) log stream name.\n */\nexports.SEMRESATTRS_FAAS_INSTANCE = TMP_FAAS_INSTANCE;\n/**\n * The amount of memory available to the serverless function in MiB.\n *\n * Note: It's recommended to set this attribute since e.g. too little memory can easily stop a Java AWS Lambda function from working correctly. On AWS Lambda, the environment variable `AWS_LAMBDA_FUNCTION_MEMORY_SIZE` provides this information.\n */\nexports.SEMRESATTRS_FAAS_MAX_MEMORY = TMP_FAAS_MAX_MEMORY;\n/**\n * Unique host ID. For Cloud, this must be the instance_id assigned by the cloud provider.\n */\nexports.SEMRESATTRS_HOST_ID = TMP_HOST_ID;\n/**\n * Name of the host. On Unix systems, it may contain what the hostname command returns, or the fully qualified hostname, or another name specified by the user.\n */\nexports.SEMRESATTRS_HOST_NAME = TMP_HOST_NAME;\n/**\n * Type of host. For Cloud, this must be the machine type.\n */\nexports.SEMRESATTRS_HOST_TYPE = TMP_HOST_TYPE;\n/**\n * The CPU architecture the host system is running on.\n */\nexports.SEMRESATTRS_HOST_ARCH = TMP_HOST_ARCH;\n/**\n * Name of the VM image or OS install the host was instantiated from.\n */\nexports.SEMRESATTRS_HOST_IMAGE_NAME = TMP_HOST_IMAGE_NAME;\n/**\n * VM image ID. For Cloud, this value is from the provider.\n */\nexports.SEMRESATTRS_HOST_IMAGE_ID = TMP_HOST_IMAGE_ID;\n/**\n * The version string of the VM image as defined in [Version Attributes](README.md#version-attributes).\n */\nexports.SEMRESATTRS_HOST_IMAGE_VERSION = TMP_HOST_IMAGE_VERSION;\n/**\n * The name of the cluster.\n */\nexports.SEMRESATTRS_K8S_CLUSTER_NAME = TMP_K8S_CLUSTER_NAME;\n/**\n * The name of the Node.\n */\nexports.SEMRESATTRS_K8S_NODE_NAME = TMP_K8S_NODE_NAME;\n/**\n * The UID of the Node.\n */\nexports.SEMRESATTRS_K8S_NODE_UID = TMP_K8S_NODE_UID;\n/**\n * The name of the namespace that the pod is running in.\n */\nexports.SEMRESATTRS_K8S_NAMESPACE_NAME = TMP_K8S_NAMESPACE_NAME;\n/**\n * The UID of the Pod.\n */\nexports.SEMRESATTRS_K8S_POD_UID = TMP_K8S_POD_UID;\n/**\n * The name of the Pod.\n */\nexports.SEMRESATTRS_K8S_POD_NAME = TMP_K8S_POD_NAME;\n/**\n * The name of the Container in a Pod template.\n */\nexports.SEMRESATTRS_K8S_CONTAINER_NAME = TMP_K8S_CONTAINER_NAME;\n/**\n * The UID of the ReplicaSet.\n */\nexports.SEMRESATTRS_K8S_REPLICASET_UID = TMP_K8S_REPLICASET_UID;\n/**\n * The name of the ReplicaSet.\n */\nexports.SEMRESATTRS_K8S_REPLICASET_NAME = TMP_K8S_REPLICASET_NAME;\n/**\n * The UID of the Deployment.\n */\nexports.SEMRESATTRS_K8S_DEPLOYMENT_UID = TMP_K8S_DEPLOYMENT_UID;\n/**\n * The name of the Deployment.\n */\nexports.SEMRESATTRS_K8S_DEPLOYMENT_NAME = TMP_K8S_DEPLOYMENT_NAME;\n/**\n * The UID of the StatefulSet.\n */\nexports.SEMRESATTRS_K8S_STATEFULSET_UID = TMP_K8S_STATEFULSET_UID;\n/**\n * The name of the StatefulSet.\n */\nexports.SEMRESATTRS_K8S_STATEFULSET_NAME = TMP_K8S_STATEFULSET_NAME;\n/**\n * The UID of the DaemonSet.\n */\nexports.SEMRESATTRS_K8S_DAEMONSET_UID = TMP_K8S_DAEMONSET_UID;\n/**\n * The name of the DaemonSet.\n */\nexports.SEMRESATTRS_K8S_DAEMONSET_NAME = TMP_K8S_DAEMONSET_NAME;\n/**\n * The UID of the Job.\n */\nexports.SEMRESATTRS_K8S_JOB_UID = TMP_K8S_JOB_UID;\n/**\n * The name of the Job.\n */\nexports.SEMRESATTRS_K8S_JOB_NAME = TMP_K8S_JOB_NAME;\n/**\n * The UID of the CronJob.\n */\nexports.SEMRESATTRS_K8S_CRONJOB_UID = TMP_K8S_CRONJOB_UID;\n/**\n * The name of the CronJob.\n */\nexports.SEMRESATTRS_K8S_CRONJOB_NAME = TMP_K8S_CRONJOB_NAME;\n/**\n * The operating system type.\n */\nexports.SEMRESATTRS_OS_TYPE = TMP_OS_TYPE;\n/**\n * Human readable (not intended to be parsed) OS version information, like e.g. reported by `ver` or `lsb_release -a` commands.\n */\nexports.SEMRESATTRS_OS_DESCRIPTION = TMP_OS_DESCRIPTION;\n/**\n * Human readable operating system name.\n */\nexports.SEMRESATTRS_OS_NAME = TMP_OS_NAME;\n/**\n * The version string of the operating system as defined in [Version Attributes](../../resource/semantic_conventions/README.md#version-attributes).\n */\nexports.SEMRESATTRS_OS_VERSION = TMP_OS_VERSION;\n/**\n * Process identifier (PID).\n */\nexports.SEMRESATTRS_PROCESS_PID = TMP_PROCESS_PID;\n/**\n * The name of the process executable. On Linux based systems, can be set to the `Name` in `proc/[pid]/status`. On Windows, can be set to the base name of `GetProcessImageFileNameW`.\n */\nexports.SEMRESATTRS_PROCESS_EXECUTABLE_NAME = TMP_PROCESS_EXECUTABLE_NAME;\n/**\n * The full path to the process executable. On Linux based systems, can be set to the target of `proc/[pid]/exe`. On Windows, can be set to the result of `GetProcessImageFileNameW`.\n */\nexports.SEMRESATTRS_PROCESS_EXECUTABLE_PATH = TMP_PROCESS_EXECUTABLE_PATH;\n/**\n * The command used to launch the process (i.e. the command name). On Linux based systems, can be set to the zeroth string in `proc/[pid]/cmdline`. On Windows, can be set to the first parameter extracted from `GetCommandLineW`.\n */\nexports.SEMRESATTRS_PROCESS_COMMAND = TMP_PROCESS_COMMAND;\n/**\n * The full command used to launch the process as a single string representing the full command. On Windows, can be set to the result of `GetCommandLineW`. Do not set this if you have to assemble it just for monitoring; use `process.command_args` instead.\n */\nexports.SEMRESATTRS_PROCESS_COMMAND_LINE = TMP_PROCESS_COMMAND_LINE;\n/**\n * All the command arguments (including the command/executable itself) as received by the process. On Linux-based systems (and some other Unixoid systems supporting procfs), can be set according to the list of null-delimited strings extracted from `proc/[pid]/cmdline`. For libc-based executables, this would be the full argv vector passed to `main`.\n */\nexports.SEMRESATTRS_PROCESS_COMMAND_ARGS = TMP_PROCESS_COMMAND_ARGS;\n/**\n * The username of the user that owns the process.\n */\nexports.SEMRESATTRS_PROCESS_OWNER = TMP_PROCESS_OWNER;\n/**\n * The name of the runtime of this process. For compiled native binaries, this SHOULD be the name of the compiler.\n */\nexports.SEMRESATTRS_PROCESS_RUNTIME_NAME = TMP_PROCESS_RUNTIME_NAME;\n/**\n * The version of the runtime of this process, as returned by the runtime without modification.\n */\nexports.SEMRESATTRS_PROCESS_RUNTIME_VERSION = TMP_PROCESS_RUNTIME_VERSION;\n/**\n * An additional description about the runtime of the process, for example a specific vendor customization of the runtime environment.\n */\nexports.SEMRESATTRS_PROCESS_RUNTIME_DESCRIPTION = TMP_PROCESS_RUNTIME_DESCRIPTION;\n/**\n * Logical name of the service.\n *\n * Note: MUST be the same for all instances of horizontally scaled services. If the value was not specified, SDKs MUST fallback to `unknown_service:` concatenated with [`process.executable.name`](process.md#process), e.g. `unknown_service:bash`. If `process.executable.name` is not available, the value MUST be set to `unknown_service`.\n */\nexports.SEMRESATTRS_SERVICE_NAME = TMP_SERVICE_NAME;\n/**\n * A namespace for `service.name`.\n *\n * Note: A string value having a meaning that helps to distinguish a group of services, for example the team name that owns a group of services. `service.name` is expected to be unique within the same namespace. If `service.namespace` is not specified in the Resource then `service.name` is expected to be unique for all services that have no explicit namespace defined (so the empty/unspecified namespace is simply one more valid namespace). Zero-length namespace string is assumed equal to unspecified namespace.\n */\nexports.SEMRESATTRS_SERVICE_NAMESPACE = TMP_SERVICE_NAMESPACE;\n/**\n * The string ID of the service instance.\n *\n * Note: MUST be unique for each instance of the same `service.namespace,service.name` pair (in other words `service.namespace,service.name,service.instance.id` triplet MUST be globally unique). The ID helps to distinguish instances of the same service that exist at the same time (e.g. instances of a horizontally scaled service). It is preferable for the ID to be persistent and stay the same for the lifetime of the service instance, however it is acceptable that the ID is ephemeral and changes during important lifetime events for the service (e.g. service restarts). If the service has no inherent unique ID that can be used as the value of this attribute it is recommended to generate a random Version 1 or Version 4 RFC 4122 UUID (services aiming for reproducible UUIDs may also use Version 5, see RFC 4122 for more recommendations).\n */\nexports.SEMRESATTRS_SERVICE_INSTANCE_ID = TMP_SERVICE_INSTANCE_ID;\n/**\n * The version string of the service API or implementation.\n */\nexports.SEMRESATTRS_SERVICE_VERSION = TMP_SERVICE_VERSION;\n/**\n * The name of the telemetry SDK as defined above.\n */\nexports.SEMRESATTRS_TELEMETRY_SDK_NAME = TMP_TELEMETRY_SDK_NAME;\n/**\n * The language of the telemetry SDK.\n */\nexports.SEMRESATTRS_TELEMETRY_SDK_LANGUAGE = TMP_TELEMETRY_SDK_LANGUAGE;\n/**\n * The version string of the telemetry SDK.\n */\nexports.SEMRESATTRS_TELEMETRY_SDK_VERSION = TMP_TELEMETRY_SDK_VERSION;\n/**\n * The version string of the auto instrumentation agent, if used.\n */\nexports.SEMRESATTRS_TELEMETRY_AUTO_VERSION = TMP_TELEMETRY_AUTO_VERSION;\n/**\n * The name of the web engine.\n */\nexports.SEMRESATTRS_WEBENGINE_NAME = TMP_WEBENGINE_NAME;\n/**\n * The version of the web engine.\n */\nexports.SEMRESATTRS_WEBENGINE_VERSION = TMP_WEBENGINE_VERSION;\n/**\n * Additional description of the web engine (e.g. detailed version and edition information).\n */\nexports.SEMRESATTRS_WEBENGINE_DESCRIPTION = TMP_WEBENGINE_DESCRIPTION;\n/**\n * Create exported Value Map for SemanticResourceAttributes values\n * @deprecated Use the SEMRESATTRS_XXXXX constants rather than the SemanticResourceAttributes.XXXXX for bundle minification\n */\nexports.SemanticResourceAttributes = \n/*#__PURE__*/ (0, utils_1.createConstMap)([\n TMP_CLOUD_PROVIDER,\n TMP_CLOUD_ACCOUNT_ID,\n TMP_CLOUD_REGION,\n TMP_CLOUD_AVAILABILITY_ZONE,\n TMP_CLOUD_PLATFORM,\n TMP_AWS_ECS_CONTAINER_ARN,\n TMP_AWS_ECS_CLUSTER_ARN,\n TMP_AWS_ECS_LAUNCHTYPE,\n TMP_AWS_ECS_TASK_ARN,\n TMP_AWS_ECS_TASK_FAMILY,\n TMP_AWS_ECS_TASK_REVISION,\n TMP_AWS_EKS_CLUSTER_ARN,\n TMP_AWS_LOG_GROUP_NAMES,\n TMP_AWS_LOG_GROUP_ARNS,\n TMP_AWS_LOG_STREAM_NAMES,\n TMP_AWS_LOG_STREAM_ARNS,\n TMP_CONTAINER_NAME,\n TMP_CONTAINER_ID,\n TMP_CONTAINER_RUNTIME,\n TMP_CONTAINER_IMAGE_NAME,\n TMP_CONTAINER_IMAGE_TAG,\n TMP_DEPLOYMENT_ENVIRONMENT,\n TMP_DEVICE_ID,\n TMP_DEVICE_MODEL_IDENTIFIER,\n TMP_DEVICE_MODEL_NAME,\n TMP_FAAS_NAME,\n TMP_FAAS_ID,\n TMP_FAAS_VERSION,\n TMP_FAAS_INSTANCE,\n TMP_FAAS_MAX_MEMORY,\n TMP_HOST_ID,\n TMP_HOST_NAME,\n TMP_HOST_TYPE,\n TMP_HOST_ARCH,\n TMP_HOST_IMAGE_NAME,\n TMP_HOST_IMAGE_ID,\n TMP_HOST_IMAGE_VERSION,\n TMP_K8S_CLUSTER_NAME,\n TMP_K8S_NODE_NAME,\n TMP_K8S_NODE_UID,\n TMP_K8S_NAMESPACE_NAME,\n TMP_K8S_POD_UID,\n TMP_K8S_POD_NAME,\n TMP_K8S_CONTAINER_NAME,\n TMP_K8S_REPLICASET_UID,\n TMP_K8S_REPLICASET_NAME,\n TMP_K8S_DEPLOYMENT_UID,\n TMP_K8S_DEPLOYMENT_NAME,\n TMP_K8S_STATEFULSET_UID,\n TMP_K8S_STATEFULSET_NAME,\n TMP_K8S_DAEMONSET_UID,\n TMP_K8S_DAEMONSET_NAME,\n TMP_K8S_JOB_UID,\n TMP_K8S_JOB_NAME,\n TMP_K8S_CRONJOB_UID,\n TMP_K8S_CRONJOB_NAME,\n TMP_OS_TYPE,\n TMP_OS_DESCRIPTION,\n TMP_OS_NAME,\n TMP_OS_VERSION,\n TMP_PROCESS_PID,\n TMP_PROCESS_EXECUTABLE_NAME,\n TMP_PROCESS_EXECUTABLE_PATH,\n TMP_PROCESS_COMMAND,\n TMP_PROCESS_COMMAND_LINE,\n TMP_PROCESS_COMMAND_ARGS,\n TMP_PROCESS_OWNER,\n TMP_PROCESS_RUNTIME_NAME,\n TMP_PROCESS_RUNTIME_VERSION,\n TMP_PROCESS_RUNTIME_DESCRIPTION,\n TMP_SERVICE_NAME,\n TMP_SERVICE_NAMESPACE,\n TMP_SERVICE_INSTANCE_ID,\n TMP_SERVICE_VERSION,\n TMP_TELEMETRY_SDK_NAME,\n TMP_TELEMETRY_SDK_LANGUAGE,\n TMP_TELEMETRY_SDK_VERSION,\n TMP_TELEMETRY_AUTO_VERSION,\n TMP_WEBENGINE_NAME,\n TMP_WEBENGINE_VERSION,\n TMP_WEBENGINE_DESCRIPTION,\n]);\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for CloudProviderValues enum definition\n *\n * Name of the cloud provider.\n * ---------------------------------------------------------------------------------------------------------- */\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifable export names for some package types\nconst TMP_CLOUDPROVIDERVALUES_ALIBABA_CLOUD = 'alibaba_cloud';\nconst TMP_CLOUDPROVIDERVALUES_AWS = 'aws';\nconst TMP_CLOUDPROVIDERVALUES_AZURE = 'azure';\nconst TMP_CLOUDPROVIDERVALUES_GCP = 'gcp';\n/**\n * Name of the cloud provider.\n */\nexports.CLOUDPROVIDERVALUES_ALIBABA_CLOUD = TMP_CLOUDPROVIDERVALUES_ALIBABA_CLOUD;\n/**\n * Name of the cloud provider.\n */\nexports.CLOUDPROVIDERVALUES_AWS = TMP_CLOUDPROVIDERVALUES_AWS;\n/**\n * Name of the cloud provider.\n */\nexports.CLOUDPROVIDERVALUES_AZURE = TMP_CLOUDPROVIDERVALUES_AZURE;\n/**\n * Name of the cloud provider.\n */\nexports.CLOUDPROVIDERVALUES_GCP = TMP_CLOUDPROVIDERVALUES_GCP;\n/**\n * The constant map of values for CloudProviderValues.\n * @deprecated Use the CLOUDPROVIDERVALUES_XXXXX constants rather than the CloudProviderValues.XXXXX for bundle minification.\n */\nexports.CloudProviderValues = \n/*#__PURE__*/ (0, utils_1.createConstMap)([\n TMP_CLOUDPROVIDERVALUES_ALIBABA_CLOUD,\n TMP_CLOUDPROVIDERVALUES_AWS,\n TMP_CLOUDPROVIDERVALUES_AZURE,\n TMP_CLOUDPROVIDERVALUES_GCP,\n]);\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for CloudPlatformValues enum definition\n *\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n * ---------------------------------------------------------------------------------------------------------- */\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifable export names for some package types\nconst TMP_CLOUDPLATFORMVALUES_ALIBABA_CLOUD_ECS = 'alibaba_cloud_ecs';\nconst TMP_CLOUDPLATFORMVALUES_ALIBABA_CLOUD_FC = 'alibaba_cloud_fc';\nconst TMP_CLOUDPLATFORMVALUES_AWS_EC2 = 'aws_ec2';\nconst TMP_CLOUDPLATFORMVALUES_AWS_ECS = 'aws_ecs';\nconst TMP_CLOUDPLATFORMVALUES_AWS_EKS = 'aws_eks';\nconst TMP_CLOUDPLATFORMVALUES_AWS_LAMBDA = 'aws_lambda';\nconst TMP_CLOUDPLATFORMVALUES_AWS_ELASTIC_BEANSTALK = 'aws_elastic_beanstalk';\nconst TMP_CLOUDPLATFORMVALUES_AZURE_VM = 'azure_vm';\nconst TMP_CLOUDPLATFORMVALUES_AZURE_CONTAINER_INSTANCES = 'azure_container_instances';\nconst TMP_CLOUDPLATFORMVALUES_AZURE_AKS = 'azure_aks';\nconst TMP_CLOUDPLATFORMVALUES_AZURE_FUNCTIONS = 'azure_functions';\nconst TMP_CLOUDPLATFORMVALUES_AZURE_APP_SERVICE = 'azure_app_service';\nconst TMP_CLOUDPLATFORMVALUES_GCP_COMPUTE_ENGINE = 'gcp_compute_engine';\nconst TMP_CLOUDPLATFORMVALUES_GCP_CLOUD_RUN = 'gcp_cloud_run';\nconst TMP_CLOUDPLATFORMVALUES_GCP_KUBERNETES_ENGINE = 'gcp_kubernetes_engine';\nconst TMP_CLOUDPLATFORMVALUES_GCP_CLOUD_FUNCTIONS = 'gcp_cloud_functions';\nconst TMP_CLOUDPLATFORMVALUES_GCP_APP_ENGINE = 'gcp_app_engine';\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n */\nexports.CLOUDPLATFORMVALUES_ALIBABA_CLOUD_ECS = TMP_CLOUDPLATFORMVALUES_ALIBABA_CLOUD_ECS;\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n */\nexports.CLOUDPLATFORMVALUES_ALIBABA_CLOUD_FC = TMP_CLOUDPLATFORMVALUES_ALIBABA_CLOUD_FC;\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n */\nexports.CLOUDPLATFORMVALUES_AWS_EC2 = TMP_CLOUDPLATFORMVALUES_AWS_EC2;\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n */\nexports.CLOUDPLATFORMVALUES_AWS_ECS = TMP_CLOUDPLATFORMVALUES_AWS_ECS;\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n */\nexports.CLOUDPLATFORMVALUES_AWS_EKS = TMP_CLOUDPLATFORMVALUES_AWS_EKS;\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n */\nexports.CLOUDPLATFORMVALUES_AWS_LAMBDA = TMP_CLOUDPLATFORMVALUES_AWS_LAMBDA;\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n */\nexports.CLOUDPLATFORMVALUES_AWS_ELASTIC_BEANSTALK = TMP_CLOUDPLATFORMVALUES_AWS_ELASTIC_BEANSTALK;\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n */\nexports.CLOUDPLATFORMVALUES_AZURE_VM = TMP_CLOUDPLATFORMVALUES_AZURE_VM;\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n */\nexports.CLOUDPLATFORMVALUES_AZURE_CONTAINER_INSTANCES = TMP_CLOUDPLATFORMVALUES_AZURE_CONTAINER_INSTANCES;\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n */\nexports.CLOUDPLATFORMVALUES_AZURE_AKS = TMP_CLOUDPLATFORMVALUES_AZURE_AKS;\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n */\nexports.CLOUDPLATFORMVALUES_AZURE_FUNCTIONS = TMP_CLOUDPLATFORMVALUES_AZURE_FUNCTIONS;\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n */\nexports.CLOUDPLATFORMVALUES_AZURE_APP_SERVICE = TMP_CLOUDPLATFORMVALUES_AZURE_APP_SERVICE;\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n */\nexports.CLOUDPLATFORMVALUES_GCP_COMPUTE_ENGINE = TMP_CLOUDPLATFORMVALUES_GCP_COMPUTE_ENGINE;\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n */\nexports.CLOUDPLATFORMVALUES_GCP_CLOUD_RUN = TMP_CLOUDPLATFORMVALUES_GCP_CLOUD_RUN;\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n */\nexports.CLOUDPLATFORMVALUES_GCP_KUBERNETES_ENGINE = TMP_CLOUDPLATFORMVALUES_GCP_KUBERNETES_ENGINE;\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n */\nexports.CLOUDPLATFORMVALUES_GCP_CLOUD_FUNCTIONS = TMP_CLOUDPLATFORMVALUES_GCP_CLOUD_FUNCTIONS;\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n */\nexports.CLOUDPLATFORMVALUES_GCP_APP_ENGINE = TMP_CLOUDPLATFORMVALUES_GCP_APP_ENGINE;\n/**\n * The constant map of values for CloudPlatformValues.\n * @deprecated Use the CLOUDPLATFORMVALUES_XXXXX constants rather than the CloudPlatformValues.XXXXX for bundle minification.\n */\nexports.CloudPlatformValues = \n/*#__PURE__*/ (0, utils_1.createConstMap)([\n TMP_CLOUDPLATFORMVALUES_ALIBABA_CLOUD_ECS,\n TMP_CLOUDPLATFORMVALUES_ALIBABA_CLOUD_FC,\n TMP_CLOUDPLATFORMVALUES_AWS_EC2,\n TMP_CLOUDPLATFORMVALUES_AWS_ECS,\n TMP_CLOUDPLATFORMVALUES_AWS_EKS,\n TMP_CLOUDPLATFORMVALUES_AWS_LAMBDA,\n TMP_CLOUDPLATFORMVALUES_AWS_ELASTIC_BEANSTALK,\n TMP_CLOUDPLATFORMVALUES_AZURE_VM,\n TMP_CLOUDPLATFORMVALUES_AZURE_CONTAINER_INSTANCES,\n TMP_CLOUDPLATFORMVALUES_AZURE_AKS,\n TMP_CLOUDPLATFORMVALUES_AZURE_FUNCTIONS,\n TMP_CLOUDPLATFORMVALUES_AZURE_APP_SERVICE,\n TMP_CLOUDPLATFORMVALUES_GCP_COMPUTE_ENGINE,\n TMP_CLOUDPLATFORMVALUES_GCP_CLOUD_RUN,\n TMP_CLOUDPLATFORMVALUES_GCP_KUBERNETES_ENGINE,\n TMP_CLOUDPLATFORMVALUES_GCP_CLOUD_FUNCTIONS,\n TMP_CLOUDPLATFORMVALUES_GCP_APP_ENGINE,\n]);\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for AwsEcsLaunchtypeValues enum definition\n *\n * The [launch type](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/launch_types.html) for an ECS task.\n * ---------------------------------------------------------------------------------------------------------- */\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifable export names for some package types\nconst TMP_AWSECSLAUNCHTYPEVALUES_EC2 = 'ec2';\nconst TMP_AWSECSLAUNCHTYPEVALUES_FARGATE = 'fargate';\n/**\n * The [launch type](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/launch_types.html) for an ECS task.\n */\nexports.AWSECSLAUNCHTYPEVALUES_EC2 = TMP_AWSECSLAUNCHTYPEVALUES_EC2;\n/**\n * The [launch type](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/launch_types.html) for an ECS task.\n */\nexports.AWSECSLAUNCHTYPEVALUES_FARGATE = TMP_AWSECSLAUNCHTYPEVALUES_FARGATE;\n/**\n * The constant map of values for AwsEcsLaunchtypeValues.\n * @deprecated Use the AWSECSLAUNCHTYPEVALUES_XXXXX constants rather than the AwsEcsLaunchtypeValues.XXXXX for bundle minification.\n */\nexports.AwsEcsLaunchtypeValues = \n/*#__PURE__*/ (0, utils_1.createConstMap)([\n TMP_AWSECSLAUNCHTYPEVALUES_EC2,\n TMP_AWSECSLAUNCHTYPEVALUES_FARGATE,\n]);\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for HostArchValues enum definition\n *\n * The CPU architecture the host system is running on.\n * ---------------------------------------------------------------------------------------------------------- */\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifable export names for some package types\nconst TMP_HOSTARCHVALUES_AMD64 = 'amd64';\nconst TMP_HOSTARCHVALUES_ARM32 = 'arm32';\nconst TMP_HOSTARCHVALUES_ARM64 = 'arm64';\nconst TMP_HOSTARCHVALUES_IA64 = 'ia64';\nconst TMP_HOSTARCHVALUES_PPC32 = 'ppc32';\nconst TMP_HOSTARCHVALUES_PPC64 = 'ppc64';\nconst TMP_HOSTARCHVALUES_X86 = 'x86';\n/**\n * The CPU architecture the host system is running on.\n */\nexports.HOSTARCHVALUES_AMD64 = TMP_HOSTARCHVALUES_AMD64;\n/**\n * The CPU architecture the host system is running on.\n */\nexports.HOSTARCHVALUES_ARM32 = TMP_HOSTARCHVALUES_ARM32;\n/**\n * The CPU architecture the host system is running on.\n */\nexports.HOSTARCHVALUES_ARM64 = TMP_HOSTARCHVALUES_ARM64;\n/**\n * The CPU architecture the host system is running on.\n */\nexports.HOSTARCHVALUES_IA64 = TMP_HOSTARCHVALUES_IA64;\n/**\n * The CPU architecture the host system is running on.\n */\nexports.HOSTARCHVALUES_PPC32 = TMP_HOSTARCHVALUES_PPC32;\n/**\n * The CPU architecture the host system is running on.\n */\nexports.HOSTARCHVALUES_PPC64 = TMP_HOSTARCHVALUES_PPC64;\n/**\n * The CPU architecture the host system is running on.\n */\nexports.HOSTARCHVALUES_X86 = TMP_HOSTARCHVALUES_X86;\n/**\n * The constant map of values for HostArchValues.\n * @deprecated Use the HOSTARCHVALUES_XXXXX constants rather than the HostArchValues.XXXXX for bundle minification.\n */\nexports.HostArchValues = \n/*#__PURE__*/ (0, utils_1.createConstMap)([\n TMP_HOSTARCHVALUES_AMD64,\n TMP_HOSTARCHVALUES_ARM32,\n TMP_HOSTARCHVALUES_ARM64,\n TMP_HOSTARCHVALUES_IA64,\n TMP_HOSTARCHVALUES_PPC32,\n TMP_HOSTARCHVALUES_PPC64,\n TMP_HOSTARCHVALUES_X86,\n]);\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for OsTypeValues enum definition\n *\n * The operating system type.\n * ---------------------------------------------------------------------------------------------------------- */\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifable export names for some package types\nconst TMP_OSTYPEVALUES_WINDOWS = 'windows';\nconst TMP_OSTYPEVALUES_LINUX = 'linux';\nconst TMP_OSTYPEVALUES_DARWIN = 'darwin';\nconst TMP_OSTYPEVALUES_FREEBSD = 'freebsd';\nconst TMP_OSTYPEVALUES_NETBSD = 'netbsd';\nconst TMP_OSTYPEVALUES_OPENBSD = 'openbsd';\nconst TMP_OSTYPEVALUES_DRAGONFLYBSD = 'dragonflybsd';\nconst TMP_OSTYPEVALUES_HPUX = 'hpux';\nconst TMP_OSTYPEVALUES_AIX = 'aix';\nconst TMP_OSTYPEVALUES_SOLARIS = 'solaris';\nconst TMP_OSTYPEVALUES_Z_OS = 'z_os';\n/**\n * The operating system type.\n */\nexports.OSTYPEVALUES_WINDOWS = TMP_OSTYPEVALUES_WINDOWS;\n/**\n * The operating system type.\n */\nexports.OSTYPEVALUES_LINUX = TMP_OSTYPEVALUES_LINUX;\n/**\n * The operating system type.\n */\nexports.OSTYPEVALUES_DARWIN = TMP_OSTYPEVALUES_DARWIN;\n/**\n * The operating system type.\n */\nexports.OSTYPEVALUES_FREEBSD = TMP_OSTYPEVALUES_FREEBSD;\n/**\n * The operating system type.\n */\nexports.OSTYPEVALUES_NETBSD = TMP_OSTYPEVALUES_NETBSD;\n/**\n * The operating system type.\n */\nexports.OSTYPEVALUES_OPENBSD = TMP_OSTYPEVALUES_OPENBSD;\n/**\n * The operating system type.\n */\nexports.OSTYPEVALUES_DRAGONFLYBSD = TMP_OSTYPEVALUES_DRAGONFLYBSD;\n/**\n * The operating system type.\n */\nexports.OSTYPEVALUES_HPUX = TMP_OSTYPEVALUES_HPUX;\n/**\n * The operating system type.\n */\nexports.OSTYPEVALUES_AIX = TMP_OSTYPEVALUES_AIX;\n/**\n * The operating system type.\n */\nexports.OSTYPEVALUES_SOLARIS = TMP_OSTYPEVALUES_SOLARIS;\n/**\n * The operating system type.\n */\nexports.OSTYPEVALUES_Z_OS = TMP_OSTYPEVALUES_Z_OS;\n/**\n * The constant map of values for OsTypeValues.\n * @deprecated Use the OSTYPEVALUES_XXXXX constants rather than the OsTypeValues.XXXXX for bundle minification.\n */\nexports.OsTypeValues = \n/*#__PURE__*/ (0, utils_1.createConstMap)([\n TMP_OSTYPEVALUES_WINDOWS,\n TMP_OSTYPEVALUES_LINUX,\n TMP_OSTYPEVALUES_DARWIN,\n TMP_OSTYPEVALUES_FREEBSD,\n TMP_OSTYPEVALUES_NETBSD,\n TMP_OSTYPEVALUES_OPENBSD,\n TMP_OSTYPEVALUES_DRAGONFLYBSD,\n TMP_OSTYPEVALUES_HPUX,\n TMP_OSTYPEVALUES_AIX,\n TMP_OSTYPEVALUES_SOLARIS,\n TMP_OSTYPEVALUES_Z_OS,\n]);\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for TelemetrySdkLanguageValues enum definition\n *\n * The language of the telemetry SDK.\n * ---------------------------------------------------------------------------------------------------------- */\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifable export names for some package types\nconst TMP_TELEMETRYSDKLANGUAGEVALUES_CPP = 'cpp';\nconst TMP_TELEMETRYSDKLANGUAGEVALUES_DOTNET = 'dotnet';\nconst TMP_TELEMETRYSDKLANGUAGEVALUES_ERLANG = 'erlang';\nconst TMP_TELEMETRYSDKLANGUAGEVALUES_GO = 'go';\nconst TMP_TELEMETRYSDKLANGUAGEVALUES_JAVA = 'java';\nconst TMP_TELEMETRYSDKLANGUAGEVALUES_NODEJS = 'nodejs';\nconst TMP_TELEMETRYSDKLANGUAGEVALUES_PHP = 'php';\nconst TMP_TELEMETRYSDKLANGUAGEVALUES_PYTHON = 'python';\nconst TMP_TELEMETRYSDKLANGUAGEVALUES_RUBY = 'ruby';\nconst TMP_TELEMETRYSDKLANGUAGEVALUES_WEBJS = 'webjs';\n/**\n * The language of the telemetry SDK.\n */\nexports.TELEMETRYSDKLANGUAGEVALUES_CPP = TMP_TELEMETRYSDKLANGUAGEVALUES_CPP;\n/**\n * The language of the telemetry SDK.\n */\nexports.TELEMETRYSDKLANGUAGEVALUES_DOTNET = TMP_TELEMETRYSDKLANGUAGEVALUES_DOTNET;\n/**\n * The language of the telemetry SDK.\n */\nexports.TELEMETRYSDKLANGUAGEVALUES_ERLANG = TMP_TELEMETRYSDKLANGUAGEVALUES_ERLANG;\n/**\n * The language of the telemetry SDK.\n */\nexports.TELEMETRYSDKLANGUAGEVALUES_GO = TMP_TELEMETRYSDKLANGUAGEVALUES_GO;\n/**\n * The language of the telemetry SDK.\n */\nexports.TELEMETRYSDKLANGUAGEVALUES_JAVA = TMP_TELEMETRYSDKLANGUAGEVALUES_JAVA;\n/**\n * The language of the telemetry SDK.\n */\nexports.TELEMETRYSDKLANGUAGEVALUES_NODEJS = TMP_TELEMETRYSDKLANGUAGEVALUES_NODEJS;\n/**\n * The language of the telemetry SDK.\n */\nexports.TELEMETRYSDKLANGUAGEVALUES_PHP = TMP_TELEMETRYSDKLANGUAGEVALUES_PHP;\n/**\n * The language of the telemetry SDK.\n */\nexports.TELEMETRYSDKLANGUAGEVALUES_PYTHON = TMP_TELEMETRYSDKLANGUAGEVALUES_PYTHON;\n/**\n * The language of the telemetry SDK.\n */\nexports.TELEMETRYSDKLANGUAGEVALUES_RUBY = TMP_TELEMETRYSDKLANGUAGEVALUES_RUBY;\n/**\n * The language of the telemetry SDK.\n */\nexports.TELEMETRYSDKLANGUAGEVALUES_WEBJS = TMP_TELEMETRYSDKLANGUAGEVALUES_WEBJS;\n/**\n * The constant map of values for TelemetrySdkLanguageValues.\n * @deprecated Use the TELEMETRYSDKLANGUAGEVALUES_XXXXX constants rather than the TelemetrySdkLanguageValues.XXXXX for bundle minification.\n */\nexports.TelemetrySdkLanguageValues = \n/*#__PURE__*/ (0, utils_1.createConstMap)([\n TMP_TELEMETRYSDKLANGUAGEVALUES_CPP,\n TMP_TELEMETRYSDKLANGUAGEVALUES_DOTNET,\n TMP_TELEMETRYSDKLANGUAGEVALUES_ERLANG,\n TMP_TELEMETRYSDKLANGUAGEVALUES_GO,\n TMP_TELEMETRYSDKLANGUAGEVALUES_JAVA,\n TMP_TELEMETRYSDKLANGUAGEVALUES_NODEJS,\n TMP_TELEMETRYSDKLANGUAGEVALUES_PHP,\n TMP_TELEMETRYSDKLANGUAGEVALUES_PYTHON,\n TMP_TELEMETRYSDKLANGUAGEVALUES_RUBY,\n TMP_TELEMETRYSDKLANGUAGEVALUES_WEBJS,\n]);\n//# sourceMappingURL=SemanticResourceAttributes.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n__exportStar(require(\"./SemanticResourceAttributes\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SEMATTRS_NET_HOST_CARRIER_ICC = exports.SEMATTRS_NET_HOST_CARRIER_MNC = exports.SEMATTRS_NET_HOST_CARRIER_MCC = exports.SEMATTRS_NET_HOST_CARRIER_NAME = exports.SEMATTRS_NET_HOST_CONNECTION_SUBTYPE = exports.SEMATTRS_NET_HOST_CONNECTION_TYPE = exports.SEMATTRS_NET_HOST_NAME = exports.SEMATTRS_NET_HOST_PORT = exports.SEMATTRS_NET_HOST_IP = exports.SEMATTRS_NET_PEER_NAME = exports.SEMATTRS_NET_PEER_PORT = exports.SEMATTRS_NET_PEER_IP = exports.SEMATTRS_NET_TRANSPORT = exports.SEMATTRS_FAAS_INVOKED_REGION = exports.SEMATTRS_FAAS_INVOKED_PROVIDER = exports.SEMATTRS_FAAS_INVOKED_NAME = exports.SEMATTRS_FAAS_COLDSTART = exports.SEMATTRS_FAAS_CRON = exports.SEMATTRS_FAAS_TIME = exports.SEMATTRS_FAAS_DOCUMENT_NAME = exports.SEMATTRS_FAAS_DOCUMENT_TIME = exports.SEMATTRS_FAAS_DOCUMENT_OPERATION = exports.SEMATTRS_FAAS_DOCUMENT_COLLECTION = exports.SEMATTRS_FAAS_EXECUTION = exports.SEMATTRS_FAAS_TRIGGER = exports.SEMATTRS_EXCEPTION_ESCAPED = exports.SEMATTRS_EXCEPTION_STACKTRACE = exports.SEMATTRS_EXCEPTION_MESSAGE = exports.SEMATTRS_EXCEPTION_TYPE = exports.SEMATTRS_DB_SQL_TABLE = exports.SEMATTRS_DB_MONGODB_COLLECTION = exports.SEMATTRS_DB_REDIS_DATABASE_INDEX = exports.SEMATTRS_DB_HBASE_NAMESPACE = exports.SEMATTRS_DB_CASSANDRA_COORDINATOR_DC = exports.SEMATTRS_DB_CASSANDRA_COORDINATOR_ID = exports.SEMATTRS_DB_CASSANDRA_SPECULATIVE_EXECUTION_COUNT = exports.SEMATTRS_DB_CASSANDRA_IDEMPOTENCE = exports.SEMATTRS_DB_CASSANDRA_TABLE = exports.SEMATTRS_DB_CASSANDRA_CONSISTENCY_LEVEL = exports.SEMATTRS_DB_CASSANDRA_PAGE_SIZE = exports.SEMATTRS_DB_CASSANDRA_KEYSPACE = exports.SEMATTRS_DB_MSSQL_INSTANCE_NAME = exports.SEMATTRS_DB_OPERATION = exports.SEMATTRS_DB_STATEMENT = exports.SEMATTRS_DB_NAME = exports.SEMATTRS_DB_JDBC_DRIVER_CLASSNAME = exports.SEMATTRS_DB_USER = exports.SEMATTRS_DB_CONNECTION_STRING = exports.SEMATTRS_DB_SYSTEM = exports.SEMATTRS_AWS_LAMBDA_INVOKED_ARN = void 0;\nexports.SEMATTRS_MESSAGING_DESTINATION_KIND = exports.SEMATTRS_MESSAGING_DESTINATION = exports.SEMATTRS_MESSAGING_SYSTEM = exports.SEMATTRS_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEX_UPDATES = exports.SEMATTRS_AWS_DYNAMODB_ATTRIBUTE_DEFINITIONS = exports.SEMATTRS_AWS_DYNAMODB_SCANNED_COUNT = exports.SEMATTRS_AWS_DYNAMODB_COUNT = exports.SEMATTRS_AWS_DYNAMODB_TOTAL_SEGMENTS = exports.SEMATTRS_AWS_DYNAMODB_SEGMENT = exports.SEMATTRS_AWS_DYNAMODB_SCAN_FORWARD = exports.SEMATTRS_AWS_DYNAMODB_TABLE_COUNT = exports.SEMATTRS_AWS_DYNAMODB_EXCLUSIVE_START_TABLE = exports.SEMATTRS_AWS_DYNAMODB_LOCAL_SECONDARY_INDEXES = exports.SEMATTRS_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEXES = exports.SEMATTRS_AWS_DYNAMODB_SELECT = exports.SEMATTRS_AWS_DYNAMODB_INDEX_NAME = exports.SEMATTRS_AWS_DYNAMODB_ATTRIBUTES_TO_GET = exports.SEMATTRS_AWS_DYNAMODB_LIMIT = exports.SEMATTRS_AWS_DYNAMODB_PROJECTION = exports.SEMATTRS_AWS_DYNAMODB_CONSISTENT_READ = exports.SEMATTRS_AWS_DYNAMODB_PROVISIONED_WRITE_CAPACITY = exports.SEMATTRS_AWS_DYNAMODB_PROVISIONED_READ_CAPACITY = exports.SEMATTRS_AWS_DYNAMODB_ITEM_COLLECTION_METRICS = exports.SEMATTRS_AWS_DYNAMODB_CONSUMED_CAPACITY = exports.SEMATTRS_AWS_DYNAMODB_TABLE_NAMES = exports.SEMATTRS_HTTP_CLIENT_IP = exports.SEMATTRS_HTTP_ROUTE = exports.SEMATTRS_HTTP_SERVER_NAME = exports.SEMATTRS_HTTP_RESPONSE_CONTENT_LENGTH_UNCOMPRESSED = exports.SEMATTRS_HTTP_RESPONSE_CONTENT_LENGTH = exports.SEMATTRS_HTTP_REQUEST_CONTENT_LENGTH_UNCOMPRESSED = exports.SEMATTRS_HTTP_REQUEST_CONTENT_LENGTH = exports.SEMATTRS_HTTP_USER_AGENT = exports.SEMATTRS_HTTP_FLAVOR = exports.SEMATTRS_HTTP_STATUS_CODE = exports.SEMATTRS_HTTP_SCHEME = exports.SEMATTRS_HTTP_HOST = exports.SEMATTRS_HTTP_TARGET = exports.SEMATTRS_HTTP_URL = exports.SEMATTRS_HTTP_METHOD = exports.SEMATTRS_CODE_LINENO = exports.SEMATTRS_CODE_FILEPATH = exports.SEMATTRS_CODE_NAMESPACE = exports.SEMATTRS_CODE_FUNCTION = exports.SEMATTRS_THREAD_NAME = exports.SEMATTRS_THREAD_ID = exports.SEMATTRS_ENDUSER_SCOPE = exports.SEMATTRS_ENDUSER_ROLE = exports.SEMATTRS_ENDUSER_ID = exports.SEMATTRS_PEER_SERVICE = void 0;\nexports.DBSYSTEMVALUES_FILEMAKER = exports.DBSYSTEMVALUES_DERBY = exports.DBSYSTEMVALUES_FIREBIRD = exports.DBSYSTEMVALUES_ADABAS = exports.DBSYSTEMVALUES_CACHE = exports.DBSYSTEMVALUES_EDB = exports.DBSYSTEMVALUES_FIRSTSQL = exports.DBSYSTEMVALUES_INGRES = exports.DBSYSTEMVALUES_HANADB = exports.DBSYSTEMVALUES_MAXDB = exports.DBSYSTEMVALUES_PROGRESS = exports.DBSYSTEMVALUES_HSQLDB = exports.DBSYSTEMVALUES_CLOUDSCAPE = exports.DBSYSTEMVALUES_HIVE = exports.DBSYSTEMVALUES_REDSHIFT = exports.DBSYSTEMVALUES_POSTGRESQL = exports.DBSYSTEMVALUES_DB2 = exports.DBSYSTEMVALUES_ORACLE = exports.DBSYSTEMVALUES_MYSQL = exports.DBSYSTEMVALUES_MSSQL = exports.DBSYSTEMVALUES_OTHER_SQL = exports.SemanticAttributes = exports.SEMATTRS_MESSAGE_UNCOMPRESSED_SIZE = exports.SEMATTRS_MESSAGE_COMPRESSED_SIZE = exports.SEMATTRS_MESSAGE_ID = exports.SEMATTRS_MESSAGE_TYPE = exports.SEMATTRS_RPC_JSONRPC_ERROR_MESSAGE = exports.SEMATTRS_RPC_JSONRPC_ERROR_CODE = exports.SEMATTRS_RPC_JSONRPC_REQUEST_ID = exports.SEMATTRS_RPC_JSONRPC_VERSION = exports.SEMATTRS_RPC_GRPC_STATUS_CODE = exports.SEMATTRS_RPC_METHOD = exports.SEMATTRS_RPC_SERVICE = exports.SEMATTRS_RPC_SYSTEM = exports.SEMATTRS_MESSAGING_KAFKA_TOMBSTONE = exports.SEMATTRS_MESSAGING_KAFKA_PARTITION = exports.SEMATTRS_MESSAGING_KAFKA_CLIENT_ID = exports.SEMATTRS_MESSAGING_KAFKA_CONSUMER_GROUP = exports.SEMATTRS_MESSAGING_KAFKA_MESSAGE_KEY = exports.SEMATTRS_MESSAGING_RABBITMQ_ROUTING_KEY = exports.SEMATTRS_MESSAGING_CONSUMER_ID = exports.SEMATTRS_MESSAGING_OPERATION = exports.SEMATTRS_MESSAGING_MESSAGE_PAYLOAD_COMPRESSED_SIZE_BYTES = exports.SEMATTRS_MESSAGING_MESSAGE_PAYLOAD_SIZE_BYTES = exports.SEMATTRS_MESSAGING_CONVERSATION_ID = exports.SEMATTRS_MESSAGING_MESSAGE_ID = exports.SEMATTRS_MESSAGING_URL = exports.SEMATTRS_MESSAGING_PROTOCOL_VERSION = exports.SEMATTRS_MESSAGING_PROTOCOL = exports.SEMATTRS_MESSAGING_TEMP_DESTINATION = void 0;\nexports.FAASINVOKEDPROVIDERVALUES_ALIBABA_CLOUD = exports.FaasDocumentOperationValues = exports.FAASDOCUMENTOPERATIONVALUES_DELETE = exports.FAASDOCUMENTOPERATIONVALUES_EDIT = exports.FAASDOCUMENTOPERATIONVALUES_INSERT = exports.FaasTriggerValues = exports.FAASTRIGGERVALUES_OTHER = exports.FAASTRIGGERVALUES_TIMER = exports.FAASTRIGGERVALUES_PUBSUB = exports.FAASTRIGGERVALUES_HTTP = exports.FAASTRIGGERVALUES_DATASOURCE = exports.DbCassandraConsistencyLevelValues = exports.DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_SERIAL = exports.DBCASSANDRACONSISTENCYLEVELVALUES_SERIAL = exports.DBCASSANDRACONSISTENCYLEVELVALUES_ANY = exports.DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_ONE = exports.DBCASSANDRACONSISTENCYLEVELVALUES_THREE = exports.DBCASSANDRACONSISTENCYLEVELVALUES_TWO = exports.DBCASSANDRACONSISTENCYLEVELVALUES_ONE = exports.DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_QUORUM = exports.DBCASSANDRACONSISTENCYLEVELVALUES_QUORUM = exports.DBCASSANDRACONSISTENCYLEVELVALUES_EACH_QUORUM = exports.DBCASSANDRACONSISTENCYLEVELVALUES_ALL = exports.DbSystemValues = exports.DBSYSTEMVALUES_COCKROACHDB = exports.DBSYSTEMVALUES_MEMCACHED = exports.DBSYSTEMVALUES_ELASTICSEARCH = exports.DBSYSTEMVALUES_GEODE = exports.DBSYSTEMVALUES_NEO4J = exports.DBSYSTEMVALUES_DYNAMODB = exports.DBSYSTEMVALUES_COSMOSDB = exports.DBSYSTEMVALUES_COUCHDB = exports.DBSYSTEMVALUES_COUCHBASE = exports.DBSYSTEMVALUES_REDIS = exports.DBSYSTEMVALUES_MONGODB = exports.DBSYSTEMVALUES_HBASE = exports.DBSYSTEMVALUES_CASSANDRA = exports.DBSYSTEMVALUES_COLDFUSION = exports.DBSYSTEMVALUES_H2 = exports.DBSYSTEMVALUES_VERTICA = exports.DBSYSTEMVALUES_TERADATA = exports.DBSYSTEMVALUES_SYBASE = exports.DBSYSTEMVALUES_SQLITE = exports.DBSYSTEMVALUES_POINTBASE = exports.DBSYSTEMVALUES_PERVASIVE = exports.DBSYSTEMVALUES_NETEZZA = exports.DBSYSTEMVALUES_MARIADB = exports.DBSYSTEMVALUES_INTERBASE = exports.DBSYSTEMVALUES_INSTANTDB = exports.DBSYSTEMVALUES_INFORMIX = void 0;\nexports.MESSAGINGOPERATIONVALUES_RECEIVE = exports.MessagingDestinationKindValues = exports.MESSAGINGDESTINATIONKINDVALUES_TOPIC = exports.MESSAGINGDESTINATIONKINDVALUES_QUEUE = exports.HttpFlavorValues = exports.HTTPFLAVORVALUES_QUIC = exports.HTTPFLAVORVALUES_SPDY = exports.HTTPFLAVORVALUES_HTTP_2_0 = exports.HTTPFLAVORVALUES_HTTP_1_1 = exports.HTTPFLAVORVALUES_HTTP_1_0 = exports.NetHostConnectionSubtypeValues = exports.NETHOSTCONNECTIONSUBTYPEVALUES_LTE_CA = exports.NETHOSTCONNECTIONSUBTYPEVALUES_NRNSA = exports.NETHOSTCONNECTIONSUBTYPEVALUES_NR = exports.NETHOSTCONNECTIONSUBTYPEVALUES_IWLAN = exports.NETHOSTCONNECTIONSUBTYPEVALUES_TD_SCDMA = exports.NETHOSTCONNECTIONSUBTYPEVALUES_GSM = exports.NETHOSTCONNECTIONSUBTYPEVALUES_HSPAP = exports.NETHOSTCONNECTIONSUBTYPEVALUES_EHRPD = exports.NETHOSTCONNECTIONSUBTYPEVALUES_LTE = exports.NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_B = exports.NETHOSTCONNECTIONSUBTYPEVALUES_IDEN = exports.NETHOSTCONNECTIONSUBTYPEVALUES_HSPA = exports.NETHOSTCONNECTIONSUBTYPEVALUES_HSUPA = exports.NETHOSTCONNECTIONSUBTYPEVALUES_HSDPA = exports.NETHOSTCONNECTIONSUBTYPEVALUES_CDMA2000_1XRTT = exports.NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_A = exports.NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_0 = exports.NETHOSTCONNECTIONSUBTYPEVALUES_CDMA = exports.NETHOSTCONNECTIONSUBTYPEVALUES_UMTS = exports.NETHOSTCONNECTIONSUBTYPEVALUES_EDGE = exports.NETHOSTCONNECTIONSUBTYPEVALUES_GPRS = exports.NetHostConnectionTypeValues = exports.NETHOSTCONNECTIONTYPEVALUES_UNKNOWN = exports.NETHOSTCONNECTIONTYPEVALUES_UNAVAILABLE = exports.NETHOSTCONNECTIONTYPEVALUES_CELL = exports.NETHOSTCONNECTIONTYPEVALUES_WIRED = exports.NETHOSTCONNECTIONTYPEVALUES_WIFI = exports.NetTransportValues = exports.NETTRANSPORTVALUES_OTHER = exports.NETTRANSPORTVALUES_INPROC = exports.NETTRANSPORTVALUES_PIPE = exports.NETTRANSPORTVALUES_UNIX = exports.NETTRANSPORTVALUES_IP = exports.NETTRANSPORTVALUES_IP_UDP = exports.NETTRANSPORTVALUES_IP_TCP = exports.FaasInvokedProviderValues = exports.FAASINVOKEDPROVIDERVALUES_GCP = exports.FAASINVOKEDPROVIDERVALUES_AZURE = exports.FAASINVOKEDPROVIDERVALUES_AWS = void 0;\nexports.MessageTypeValues = exports.MESSAGETYPEVALUES_RECEIVED = exports.MESSAGETYPEVALUES_SENT = exports.RpcGrpcStatusCodeValues = exports.RPCGRPCSTATUSCODEVALUES_UNAUTHENTICATED = exports.RPCGRPCSTATUSCODEVALUES_DATA_LOSS = exports.RPCGRPCSTATUSCODEVALUES_UNAVAILABLE = exports.RPCGRPCSTATUSCODEVALUES_INTERNAL = exports.RPCGRPCSTATUSCODEVALUES_UNIMPLEMENTED = exports.RPCGRPCSTATUSCODEVALUES_OUT_OF_RANGE = exports.RPCGRPCSTATUSCODEVALUES_ABORTED = exports.RPCGRPCSTATUSCODEVALUES_FAILED_PRECONDITION = exports.RPCGRPCSTATUSCODEVALUES_RESOURCE_EXHAUSTED = exports.RPCGRPCSTATUSCODEVALUES_PERMISSION_DENIED = exports.RPCGRPCSTATUSCODEVALUES_ALREADY_EXISTS = exports.RPCGRPCSTATUSCODEVALUES_NOT_FOUND = exports.RPCGRPCSTATUSCODEVALUES_DEADLINE_EXCEEDED = exports.RPCGRPCSTATUSCODEVALUES_INVALID_ARGUMENT = exports.RPCGRPCSTATUSCODEVALUES_UNKNOWN = exports.RPCGRPCSTATUSCODEVALUES_CANCELLED = exports.RPCGRPCSTATUSCODEVALUES_OK = exports.MessagingOperationValues = exports.MESSAGINGOPERATIONVALUES_PROCESS = void 0;\nconst utils_1 = require(\"../internal/utils\");\n//----------------------------------------------------------------------------------------------------------\n// DO NOT EDIT, this is an Auto-generated file from scripts/semconv/templates//templates/SemanticAttributes.ts.j2\n//----------------------------------------------------------------------------------------------------------\n//----------------------------------------------------------------------------------------------------------\n// Constant values for SemanticAttributes\n//----------------------------------------------------------------------------------------------------------\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifable export names for some package types\nconst TMP_AWS_LAMBDA_INVOKED_ARN = 'aws.lambda.invoked_arn';\nconst TMP_DB_SYSTEM = 'db.system';\nconst TMP_DB_CONNECTION_STRING = 'db.connection_string';\nconst TMP_DB_USER = 'db.user';\nconst TMP_DB_JDBC_DRIVER_CLASSNAME = 'db.jdbc.driver_classname';\nconst TMP_DB_NAME = 'db.name';\nconst TMP_DB_STATEMENT = 'db.statement';\nconst TMP_DB_OPERATION = 'db.operation';\nconst TMP_DB_MSSQL_INSTANCE_NAME = 'db.mssql.instance_name';\nconst TMP_DB_CASSANDRA_KEYSPACE = 'db.cassandra.keyspace';\nconst TMP_DB_CASSANDRA_PAGE_SIZE = 'db.cassandra.page_size';\nconst TMP_DB_CASSANDRA_CONSISTENCY_LEVEL = 'db.cassandra.consistency_level';\nconst TMP_DB_CASSANDRA_TABLE = 'db.cassandra.table';\nconst TMP_DB_CASSANDRA_IDEMPOTENCE = 'db.cassandra.idempotence';\nconst TMP_DB_CASSANDRA_SPECULATIVE_EXECUTION_COUNT = 'db.cassandra.speculative_execution_count';\nconst TMP_DB_CASSANDRA_COORDINATOR_ID = 'db.cassandra.coordinator.id';\nconst TMP_DB_CASSANDRA_COORDINATOR_DC = 'db.cassandra.coordinator.dc';\nconst TMP_DB_HBASE_NAMESPACE = 'db.hbase.namespace';\nconst TMP_DB_REDIS_DATABASE_INDEX = 'db.redis.database_index';\nconst TMP_DB_MONGODB_COLLECTION = 'db.mongodb.collection';\nconst TMP_DB_SQL_TABLE = 'db.sql.table';\nconst TMP_EXCEPTION_TYPE = 'exception.type';\nconst TMP_EXCEPTION_MESSAGE = 'exception.message';\nconst TMP_EXCEPTION_STACKTRACE = 'exception.stacktrace';\nconst TMP_EXCEPTION_ESCAPED = 'exception.escaped';\nconst TMP_FAAS_TRIGGER = 'faas.trigger';\nconst TMP_FAAS_EXECUTION = 'faas.execution';\nconst TMP_FAAS_DOCUMENT_COLLECTION = 'faas.document.collection';\nconst TMP_FAAS_DOCUMENT_OPERATION = 'faas.document.operation';\nconst TMP_FAAS_DOCUMENT_TIME = 'faas.document.time';\nconst TMP_FAAS_DOCUMENT_NAME = 'faas.document.name';\nconst TMP_FAAS_TIME = 'faas.time';\nconst TMP_FAAS_CRON = 'faas.cron';\nconst TMP_FAAS_COLDSTART = 'faas.coldstart';\nconst TMP_FAAS_INVOKED_NAME = 'faas.invoked_name';\nconst TMP_FAAS_INVOKED_PROVIDER = 'faas.invoked_provider';\nconst TMP_FAAS_INVOKED_REGION = 'faas.invoked_region';\nconst TMP_NET_TRANSPORT = 'net.transport';\nconst TMP_NET_PEER_IP = 'net.peer.ip';\nconst TMP_NET_PEER_PORT = 'net.peer.port';\nconst TMP_NET_PEER_NAME = 'net.peer.name';\nconst TMP_NET_HOST_IP = 'net.host.ip';\nconst TMP_NET_HOST_PORT = 'net.host.port';\nconst TMP_NET_HOST_NAME = 'net.host.name';\nconst TMP_NET_HOST_CONNECTION_TYPE = 'net.host.connection.type';\nconst TMP_NET_HOST_CONNECTION_SUBTYPE = 'net.host.connection.subtype';\nconst TMP_NET_HOST_CARRIER_NAME = 'net.host.carrier.name';\nconst TMP_NET_HOST_CARRIER_MCC = 'net.host.carrier.mcc';\nconst TMP_NET_HOST_CARRIER_MNC = 'net.host.carrier.mnc';\nconst TMP_NET_HOST_CARRIER_ICC = 'net.host.carrier.icc';\nconst TMP_PEER_SERVICE = 'peer.service';\nconst TMP_ENDUSER_ID = 'enduser.id';\nconst TMP_ENDUSER_ROLE = 'enduser.role';\nconst TMP_ENDUSER_SCOPE = 'enduser.scope';\nconst TMP_THREAD_ID = 'thread.id';\nconst TMP_THREAD_NAME = 'thread.name';\nconst TMP_CODE_FUNCTION = 'code.function';\nconst TMP_CODE_NAMESPACE = 'code.namespace';\nconst TMP_CODE_FILEPATH = 'code.filepath';\nconst TMP_CODE_LINENO = 'code.lineno';\nconst TMP_HTTP_METHOD = 'http.method';\nconst TMP_HTTP_URL = 'http.url';\nconst TMP_HTTP_TARGET = 'http.target';\nconst TMP_HTTP_HOST = 'http.host';\nconst TMP_HTTP_SCHEME = 'http.scheme';\nconst TMP_HTTP_STATUS_CODE = 'http.status_code';\nconst TMP_HTTP_FLAVOR = 'http.flavor';\nconst TMP_HTTP_USER_AGENT = 'http.user_agent';\nconst TMP_HTTP_REQUEST_CONTENT_LENGTH = 'http.request_content_length';\nconst TMP_HTTP_REQUEST_CONTENT_LENGTH_UNCOMPRESSED = 'http.request_content_length_uncompressed';\nconst TMP_HTTP_RESPONSE_CONTENT_LENGTH = 'http.response_content_length';\nconst TMP_HTTP_RESPONSE_CONTENT_LENGTH_UNCOMPRESSED = 'http.response_content_length_uncompressed';\nconst TMP_HTTP_SERVER_NAME = 'http.server_name';\nconst TMP_HTTP_ROUTE = 'http.route';\nconst TMP_HTTP_CLIENT_IP = 'http.client_ip';\nconst TMP_AWS_DYNAMODB_TABLE_NAMES = 'aws.dynamodb.table_names';\nconst TMP_AWS_DYNAMODB_CONSUMED_CAPACITY = 'aws.dynamodb.consumed_capacity';\nconst TMP_AWS_DYNAMODB_ITEM_COLLECTION_METRICS = 'aws.dynamodb.item_collection_metrics';\nconst TMP_AWS_DYNAMODB_PROVISIONED_READ_CAPACITY = 'aws.dynamodb.provisioned_read_capacity';\nconst TMP_AWS_DYNAMODB_PROVISIONED_WRITE_CAPACITY = 'aws.dynamodb.provisioned_write_capacity';\nconst TMP_AWS_DYNAMODB_CONSISTENT_READ = 'aws.dynamodb.consistent_read';\nconst TMP_AWS_DYNAMODB_PROJECTION = 'aws.dynamodb.projection';\nconst TMP_AWS_DYNAMODB_LIMIT = 'aws.dynamodb.limit';\nconst TMP_AWS_DYNAMODB_ATTRIBUTES_TO_GET = 'aws.dynamodb.attributes_to_get';\nconst TMP_AWS_DYNAMODB_INDEX_NAME = 'aws.dynamodb.index_name';\nconst TMP_AWS_DYNAMODB_SELECT = 'aws.dynamodb.select';\nconst TMP_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEXES = 'aws.dynamodb.global_secondary_indexes';\nconst TMP_AWS_DYNAMODB_LOCAL_SECONDARY_INDEXES = 'aws.dynamodb.local_secondary_indexes';\nconst TMP_AWS_DYNAMODB_EXCLUSIVE_START_TABLE = 'aws.dynamodb.exclusive_start_table';\nconst TMP_AWS_DYNAMODB_TABLE_COUNT = 'aws.dynamodb.table_count';\nconst TMP_AWS_DYNAMODB_SCAN_FORWARD = 'aws.dynamodb.scan_forward';\nconst TMP_AWS_DYNAMODB_SEGMENT = 'aws.dynamodb.segment';\nconst TMP_AWS_DYNAMODB_TOTAL_SEGMENTS = 'aws.dynamodb.total_segments';\nconst TMP_AWS_DYNAMODB_COUNT = 'aws.dynamodb.count';\nconst TMP_AWS_DYNAMODB_SCANNED_COUNT = 'aws.dynamodb.scanned_count';\nconst TMP_AWS_DYNAMODB_ATTRIBUTE_DEFINITIONS = 'aws.dynamodb.attribute_definitions';\nconst TMP_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEX_UPDATES = 'aws.dynamodb.global_secondary_index_updates';\nconst TMP_MESSAGING_SYSTEM = 'messaging.system';\nconst TMP_MESSAGING_DESTINATION = 'messaging.destination';\nconst TMP_MESSAGING_DESTINATION_KIND = 'messaging.destination_kind';\nconst TMP_MESSAGING_TEMP_DESTINATION = 'messaging.temp_destination';\nconst TMP_MESSAGING_PROTOCOL = 'messaging.protocol';\nconst TMP_MESSAGING_PROTOCOL_VERSION = 'messaging.protocol_version';\nconst TMP_MESSAGING_URL = 'messaging.url';\nconst TMP_MESSAGING_MESSAGE_ID = 'messaging.message_id';\nconst TMP_MESSAGING_CONVERSATION_ID = 'messaging.conversation_id';\nconst TMP_MESSAGING_MESSAGE_PAYLOAD_SIZE_BYTES = 'messaging.message_payload_size_bytes';\nconst TMP_MESSAGING_MESSAGE_PAYLOAD_COMPRESSED_SIZE_BYTES = 'messaging.message_payload_compressed_size_bytes';\nconst TMP_MESSAGING_OPERATION = 'messaging.operation';\nconst TMP_MESSAGING_CONSUMER_ID = 'messaging.consumer_id';\nconst TMP_MESSAGING_RABBITMQ_ROUTING_KEY = 'messaging.rabbitmq.routing_key';\nconst TMP_MESSAGING_KAFKA_MESSAGE_KEY = 'messaging.kafka.message_key';\nconst TMP_MESSAGING_KAFKA_CONSUMER_GROUP = 'messaging.kafka.consumer_group';\nconst TMP_MESSAGING_KAFKA_CLIENT_ID = 'messaging.kafka.client_id';\nconst TMP_MESSAGING_KAFKA_PARTITION = 'messaging.kafka.partition';\nconst TMP_MESSAGING_KAFKA_TOMBSTONE = 'messaging.kafka.tombstone';\nconst TMP_RPC_SYSTEM = 'rpc.system';\nconst TMP_RPC_SERVICE = 'rpc.service';\nconst TMP_RPC_METHOD = 'rpc.method';\nconst TMP_RPC_GRPC_STATUS_CODE = 'rpc.grpc.status_code';\nconst TMP_RPC_JSONRPC_VERSION = 'rpc.jsonrpc.version';\nconst TMP_RPC_JSONRPC_REQUEST_ID = 'rpc.jsonrpc.request_id';\nconst TMP_RPC_JSONRPC_ERROR_CODE = 'rpc.jsonrpc.error_code';\nconst TMP_RPC_JSONRPC_ERROR_MESSAGE = 'rpc.jsonrpc.error_message';\nconst TMP_MESSAGE_TYPE = 'message.type';\nconst TMP_MESSAGE_ID = 'message.id';\nconst TMP_MESSAGE_COMPRESSED_SIZE = 'message.compressed_size';\nconst TMP_MESSAGE_UNCOMPRESSED_SIZE = 'message.uncompressed_size';\n/**\n * The full invoked ARN as provided on the `Context` passed to the function (`Lambda-Runtime-Invoked-Function-Arn` header on the `/runtime/invocation/next` applicable).\n *\n * Note: This may be different from `faas.id` if an alias is involved.\n */\nexports.SEMATTRS_AWS_LAMBDA_INVOKED_ARN = TMP_AWS_LAMBDA_INVOKED_ARN;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n */\nexports.SEMATTRS_DB_SYSTEM = TMP_DB_SYSTEM;\n/**\n * The connection string used to connect to the database. It is recommended to remove embedded credentials.\n */\nexports.SEMATTRS_DB_CONNECTION_STRING = TMP_DB_CONNECTION_STRING;\n/**\n * Username for accessing the database.\n */\nexports.SEMATTRS_DB_USER = TMP_DB_USER;\n/**\n * The fully-qualified class name of the [Java Database Connectivity (JDBC)](https://docs.oracle.com/javase/8/docs/technotes/guides/jdbc/) driver used to connect.\n */\nexports.SEMATTRS_DB_JDBC_DRIVER_CLASSNAME = TMP_DB_JDBC_DRIVER_CLASSNAME;\n/**\n * If no [tech-specific attribute](#call-level-attributes-for-specific-technologies) is defined, this attribute is used to report the name of the database being accessed. For commands that switch the database, this should be set to the target database (even if the command fails).\n *\n * Note: In some SQL databases, the database name to be used is called "schema name".\n */\nexports.SEMATTRS_DB_NAME = TMP_DB_NAME;\n/**\n * The database statement being executed.\n *\n * Note: The value may be sanitized to exclude sensitive information.\n */\nexports.SEMATTRS_DB_STATEMENT = TMP_DB_STATEMENT;\n/**\n * The name of the operation being executed, e.g. the [MongoDB command name](https://docs.mongodb.com/manual/reference/command/#database-operations) such as `findAndModify`, or the SQL keyword.\n *\n * Note: When setting this to an SQL keyword, it is not recommended to attempt any client-side parsing of `db.statement` just to get this property, but it should be set if the operation name is provided by the library being instrumented. If the SQL statement has an ambiguous operation, or performs more than one operation, this value may be omitted.\n */\nexports.SEMATTRS_DB_OPERATION = TMP_DB_OPERATION;\n/**\n * The Microsoft SQL Server [instance name](https://docs.microsoft.com/en-us/sql/connect/jdbc/building-the-connection-url?view=sql-server-ver15) connecting to. This name is used to determine the port of a named instance.\n *\n * Note: If setting a `db.mssql.instance_name`, `net.peer.port` is no longer required (but still recommended if non-standard).\n */\nexports.SEMATTRS_DB_MSSQL_INSTANCE_NAME = TMP_DB_MSSQL_INSTANCE_NAME;\n/**\n * The name of the keyspace being accessed. To be used instead of the generic `db.name` attribute.\n */\nexports.SEMATTRS_DB_CASSANDRA_KEYSPACE = TMP_DB_CASSANDRA_KEYSPACE;\n/**\n * The fetch size used for paging, i.e. how many rows will be returned at once.\n */\nexports.SEMATTRS_DB_CASSANDRA_PAGE_SIZE = TMP_DB_CASSANDRA_PAGE_SIZE;\n/**\n * The consistency level of the query. Based on consistency values from [CQL](https://docs.datastax.com/en/cassandra-oss/3.0/cassandra/dml/dmlConfigConsistency.html).\n */\nexports.SEMATTRS_DB_CASSANDRA_CONSISTENCY_LEVEL = TMP_DB_CASSANDRA_CONSISTENCY_LEVEL;\n/**\n * The name of the primary table that the operation is acting upon, including the schema name (if applicable).\n *\n * Note: This mirrors the db.sql.table attribute but references cassandra rather than sql. It is not recommended to attempt any client-side parsing of `db.statement` just to get this property, but it should be set if it is provided by the library being instrumented. If the operation is acting upon an anonymous table, or more than one table, this value MUST NOT be set.\n */\nexports.SEMATTRS_DB_CASSANDRA_TABLE = TMP_DB_CASSANDRA_TABLE;\n/**\n * Whether or not the query is idempotent.\n */\nexports.SEMATTRS_DB_CASSANDRA_IDEMPOTENCE = TMP_DB_CASSANDRA_IDEMPOTENCE;\n/**\n * The number of times a query was speculatively executed. Not set or `0` if the query was not executed speculatively.\n */\nexports.SEMATTRS_DB_CASSANDRA_SPECULATIVE_EXECUTION_COUNT = TMP_DB_CASSANDRA_SPECULATIVE_EXECUTION_COUNT;\n/**\n * The ID of the coordinating node for a query.\n */\nexports.SEMATTRS_DB_CASSANDRA_COORDINATOR_ID = TMP_DB_CASSANDRA_COORDINATOR_ID;\n/**\n * The data center of the coordinating node for a query.\n */\nexports.SEMATTRS_DB_CASSANDRA_COORDINATOR_DC = TMP_DB_CASSANDRA_COORDINATOR_DC;\n/**\n * The [HBase namespace](https://hbase.apache.org/book.html#_namespace) being accessed. To be used instead of the generic `db.name` attribute.\n */\nexports.SEMATTRS_DB_HBASE_NAMESPACE = TMP_DB_HBASE_NAMESPACE;\n/**\n * The index of the database being accessed as used in the [`SELECT` command](https://redis.io/commands/select), provided as an integer. To be used instead of the generic `db.name` attribute.\n */\nexports.SEMATTRS_DB_REDIS_DATABASE_INDEX = TMP_DB_REDIS_DATABASE_INDEX;\n/**\n * The collection being accessed within the database stated in `db.name`.\n */\nexports.SEMATTRS_DB_MONGODB_COLLECTION = TMP_DB_MONGODB_COLLECTION;\n/**\n * The name of the primary table that the operation is acting upon, including the schema name (if applicable).\n *\n * Note: It is not recommended to attempt any client-side parsing of `db.statement` just to get this property, but it should be set if it is provided by the library being instrumented. If the operation is acting upon an anonymous table, or more than one table, this value MUST NOT be set.\n */\nexports.SEMATTRS_DB_SQL_TABLE = TMP_DB_SQL_TABLE;\n/**\n * The type of the exception (its fully-qualified class name, if applicable). The dynamic type of the exception should be preferred over the static type in languages that support it.\n */\nexports.SEMATTRS_EXCEPTION_TYPE = TMP_EXCEPTION_TYPE;\n/**\n * The exception message.\n */\nexports.SEMATTRS_EXCEPTION_MESSAGE = TMP_EXCEPTION_MESSAGE;\n/**\n * A stacktrace as a string in the natural representation for the language runtime. The representation is to be determined and documented by each language SIG.\n */\nexports.SEMATTRS_EXCEPTION_STACKTRACE = TMP_EXCEPTION_STACKTRACE;\n/**\n* SHOULD be set to true if the exception event is recorded at a point where it is known that the exception is escaping the scope of the span.\n*\n* Note: An exception is considered to have escaped (or left) the scope of a span,\nif that span is ended while the exception is still logically "in flight".\nThis may be actually "in flight" in some languages (e.g. if the exception\nis passed to a Context manager's `__exit__` method in Python) but will\nusually be caught at the point of recording the exception in most languages.\n\nIt is usually not possible to determine at the point where an exception is thrown\nwhether it will escape the scope of a span.\nHowever, it is trivial to know that an exception\nwill escape, if one checks for an active exception just before ending the span,\nas done in the [example above](#exception-end-example).\n\nIt follows that an exception may still escape the scope of the span\neven if the `exception.escaped` attribute was not set or set to false,\nsince the event might have been recorded at a time where it was not\nclear whether the exception will escape.\n*/\nexports.SEMATTRS_EXCEPTION_ESCAPED = TMP_EXCEPTION_ESCAPED;\n/**\n * Type of the trigger on which the function is executed.\n */\nexports.SEMATTRS_FAAS_TRIGGER = TMP_FAAS_TRIGGER;\n/**\n * The execution ID of the current function execution.\n */\nexports.SEMATTRS_FAAS_EXECUTION = TMP_FAAS_EXECUTION;\n/**\n * The name of the source on which the triggering operation was performed. For example, in Cloud Storage or S3 corresponds to the bucket name, and in Cosmos DB to the database name.\n */\nexports.SEMATTRS_FAAS_DOCUMENT_COLLECTION = TMP_FAAS_DOCUMENT_COLLECTION;\n/**\n * Describes the type of the operation that was performed on the data.\n */\nexports.SEMATTRS_FAAS_DOCUMENT_OPERATION = TMP_FAAS_DOCUMENT_OPERATION;\n/**\n * A string containing the time when the data was accessed in the [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format expressed in [UTC](https://www.w3.org/TR/NOTE-datetime).\n */\nexports.SEMATTRS_FAAS_DOCUMENT_TIME = TMP_FAAS_DOCUMENT_TIME;\n/**\n * The document name/table subjected to the operation. For example, in Cloud Storage or S3 is the name of the file, and in Cosmos DB the table name.\n */\nexports.SEMATTRS_FAAS_DOCUMENT_NAME = TMP_FAAS_DOCUMENT_NAME;\n/**\n * A string containing the function invocation time in the [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format expressed in [UTC](https://www.w3.org/TR/NOTE-datetime).\n */\nexports.SEMATTRS_FAAS_TIME = TMP_FAAS_TIME;\n/**\n * A string containing the schedule period as [Cron Expression](https://docs.oracle.com/cd/E12058_01/doc/doc.1014/e12030/cron_expressions.htm).\n */\nexports.SEMATTRS_FAAS_CRON = TMP_FAAS_CRON;\n/**\n * A boolean that is true if the serverless function is executed for the first time (aka cold-start).\n */\nexports.SEMATTRS_FAAS_COLDSTART = TMP_FAAS_COLDSTART;\n/**\n * The name of the invoked function.\n *\n * Note: SHOULD be equal to the `faas.name` resource attribute of the invoked function.\n */\nexports.SEMATTRS_FAAS_INVOKED_NAME = TMP_FAAS_INVOKED_NAME;\n/**\n * The cloud provider of the invoked function.\n *\n * Note: SHOULD be equal to the `cloud.provider` resource attribute of the invoked function.\n */\nexports.SEMATTRS_FAAS_INVOKED_PROVIDER = TMP_FAAS_INVOKED_PROVIDER;\n/**\n * The cloud region of the invoked function.\n *\n * Note: SHOULD be equal to the `cloud.region` resource attribute of the invoked function.\n */\nexports.SEMATTRS_FAAS_INVOKED_REGION = TMP_FAAS_INVOKED_REGION;\n/**\n * Transport protocol used. See note below.\n */\nexports.SEMATTRS_NET_TRANSPORT = TMP_NET_TRANSPORT;\n/**\n * Remote address of the peer (dotted decimal for IPv4 or [RFC5952](https://tools.ietf.org/html/rfc5952) for IPv6).\n */\nexports.SEMATTRS_NET_PEER_IP = TMP_NET_PEER_IP;\n/**\n * Remote port number.\n */\nexports.SEMATTRS_NET_PEER_PORT = TMP_NET_PEER_PORT;\n/**\n * Remote hostname or similar, see note below.\n */\nexports.SEMATTRS_NET_PEER_NAME = TMP_NET_PEER_NAME;\n/**\n * Like `net.peer.ip` but for the host IP. Useful in case of a multi-IP host.\n */\nexports.SEMATTRS_NET_HOST_IP = TMP_NET_HOST_IP;\n/**\n * Like `net.peer.port` but for the host port.\n */\nexports.SEMATTRS_NET_HOST_PORT = TMP_NET_HOST_PORT;\n/**\n * Local hostname or similar, see note below.\n */\nexports.SEMATTRS_NET_HOST_NAME = TMP_NET_HOST_NAME;\n/**\n * The internet connection type currently being used by the host.\n */\nexports.SEMATTRS_NET_HOST_CONNECTION_TYPE = TMP_NET_HOST_CONNECTION_TYPE;\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n */\nexports.SEMATTRS_NET_HOST_CONNECTION_SUBTYPE = TMP_NET_HOST_CONNECTION_SUBTYPE;\n/**\n * The name of the mobile carrier.\n */\nexports.SEMATTRS_NET_HOST_CARRIER_NAME = TMP_NET_HOST_CARRIER_NAME;\n/**\n * The mobile carrier country code.\n */\nexports.SEMATTRS_NET_HOST_CARRIER_MCC = TMP_NET_HOST_CARRIER_MCC;\n/**\n * The mobile carrier network code.\n */\nexports.SEMATTRS_NET_HOST_CARRIER_MNC = TMP_NET_HOST_CARRIER_MNC;\n/**\n * The ISO 3166-1 alpha-2 2-character country code associated with the mobile carrier network.\n */\nexports.SEMATTRS_NET_HOST_CARRIER_ICC = TMP_NET_HOST_CARRIER_ICC;\n/**\n * The [`service.name`](../../resource/semantic_conventions/README.md#service) of the remote service. SHOULD be equal to the actual `service.name` resource attribute of the remote service if any.\n */\nexports.SEMATTRS_PEER_SERVICE = TMP_PEER_SERVICE;\n/**\n * Username or client_id extracted from the access token or [Authorization](https://tools.ietf.org/html/rfc7235#section-4.2) header in the inbound request from outside the system.\n */\nexports.SEMATTRS_ENDUSER_ID = TMP_ENDUSER_ID;\n/**\n * Actual/assumed role the client is making the request under extracted from token or application security context.\n */\nexports.SEMATTRS_ENDUSER_ROLE = TMP_ENDUSER_ROLE;\n/**\n * Scopes or granted authorities the client currently possesses extracted from token or application security context. The value would come from the scope associated with an [OAuth 2.0 Access Token](https://tools.ietf.org/html/rfc6749#section-3.3) or an attribute value in a [SAML 2.0 Assertion](http://docs.oasis-open.org/security/saml/Post2.0/sstc-saml-tech-overview-2.0.html).\n */\nexports.SEMATTRS_ENDUSER_SCOPE = TMP_ENDUSER_SCOPE;\n/**\n * Current "managed" thread ID (as opposed to OS thread ID).\n */\nexports.SEMATTRS_THREAD_ID = TMP_THREAD_ID;\n/**\n * Current thread name.\n */\nexports.SEMATTRS_THREAD_NAME = TMP_THREAD_NAME;\n/**\n * The method or function name, or equivalent (usually rightmost part of the code unit's name).\n */\nexports.SEMATTRS_CODE_FUNCTION = TMP_CODE_FUNCTION;\n/**\n * The "namespace" within which `code.function` is defined. Usually the qualified class or module name, such that `code.namespace` + some separator + `code.function` form a unique identifier for the code unit.\n */\nexports.SEMATTRS_CODE_NAMESPACE = TMP_CODE_NAMESPACE;\n/**\n * The source code file name that identifies the code unit as uniquely as possible (preferably an absolute file path).\n */\nexports.SEMATTRS_CODE_FILEPATH = TMP_CODE_FILEPATH;\n/**\n * The line number in `code.filepath` best representing the operation. It SHOULD point within the code unit named in `code.function`.\n */\nexports.SEMATTRS_CODE_LINENO = TMP_CODE_LINENO;\n/**\n * HTTP request method.\n */\nexports.SEMATTRS_HTTP_METHOD = TMP_HTTP_METHOD;\n/**\n * Full HTTP request URL in the form `scheme://host[:port]/path?query[#fragment]`. Usually the fragment is not transmitted over HTTP, but if it is known, it should be included nevertheless.\n *\n * Note: `http.url` MUST NOT contain credentials passed via URL in form of `https://username:password@www.example.com/`. In such case the attribute's value should be `https://www.example.com/`.\n */\nexports.SEMATTRS_HTTP_URL = TMP_HTTP_URL;\n/**\n * The full request target as passed in a HTTP request line or equivalent.\n */\nexports.SEMATTRS_HTTP_TARGET = TMP_HTTP_TARGET;\n/**\n * The value of the [HTTP host header](https://tools.ietf.org/html/rfc7230#section-5.4). An empty Host header should also be reported, see note.\n *\n * Note: When the header is present but empty the attribute SHOULD be set to the empty string. Note that this is a valid situation that is expected in certain cases, according the aforementioned [section of RFC 7230](https://tools.ietf.org/html/rfc7230#section-5.4). When the header is not set the attribute MUST NOT be set.\n */\nexports.SEMATTRS_HTTP_HOST = TMP_HTTP_HOST;\n/**\n * The URI scheme identifying the used protocol.\n */\nexports.SEMATTRS_HTTP_SCHEME = TMP_HTTP_SCHEME;\n/**\n * [HTTP response status code](https://tools.ietf.org/html/rfc7231#section-6).\n */\nexports.SEMATTRS_HTTP_STATUS_CODE = TMP_HTTP_STATUS_CODE;\n/**\n * Kind of HTTP protocol used.\n *\n * Note: If `net.transport` is not specified, it can be assumed to be `IP.TCP` except if `http.flavor` is `QUIC`, in which case `IP.UDP` is assumed.\n */\nexports.SEMATTRS_HTTP_FLAVOR = TMP_HTTP_FLAVOR;\n/**\n * Value of the [HTTP User-Agent](https://tools.ietf.org/html/rfc7231#section-5.5.3) header sent by the client.\n */\nexports.SEMATTRS_HTTP_USER_AGENT = TMP_HTTP_USER_AGENT;\n/**\n * The size of the request payload body in bytes. This is the number of bytes transferred excluding headers and is often, but not always, present as the [Content-Length](https://tools.ietf.org/html/rfc7230#section-3.3.2) header. For requests using transport encoding, this should be the compressed size.\n */\nexports.SEMATTRS_HTTP_REQUEST_CONTENT_LENGTH = TMP_HTTP_REQUEST_CONTENT_LENGTH;\n/**\n * The size of the uncompressed request payload body after transport decoding. Not set if transport encoding not used.\n */\nexports.SEMATTRS_HTTP_REQUEST_CONTENT_LENGTH_UNCOMPRESSED = TMP_HTTP_REQUEST_CONTENT_LENGTH_UNCOMPRESSED;\n/**\n * The size of the response payload body in bytes. This is the number of bytes transferred excluding headers and is often, but not always, present as the [Content-Length](https://tools.ietf.org/html/rfc7230#section-3.3.2) header. For requests using transport encoding, this should be the compressed size.\n */\nexports.SEMATTRS_HTTP_RESPONSE_CONTENT_LENGTH = TMP_HTTP_RESPONSE_CONTENT_LENGTH;\n/**\n * The size of the uncompressed response payload body after transport decoding. Not set if transport encoding not used.\n */\nexports.SEMATTRS_HTTP_RESPONSE_CONTENT_LENGTH_UNCOMPRESSED = TMP_HTTP_RESPONSE_CONTENT_LENGTH_UNCOMPRESSED;\n/**\n * The primary server name of the matched virtual host. This should be obtained via configuration. If no such configuration can be obtained, this attribute MUST NOT be set ( `net.host.name` should be used instead).\n *\n * Note: `http.url` is usually not readily available on the server side but would have to be assembled in a cumbersome and sometimes lossy process from other information (see e.g. open-telemetry/opentelemetry-python/pull/148). It is thus preferred to supply the raw data that is available.\n */\nexports.SEMATTRS_HTTP_SERVER_NAME = TMP_HTTP_SERVER_NAME;\n/**\n * The matched route (path template).\n */\nexports.SEMATTRS_HTTP_ROUTE = TMP_HTTP_ROUTE;\n/**\n* The IP address of the original client behind all proxies, if known (e.g. from [X-Forwarded-For](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Forwarded-For)).\n*\n* Note: This is not necessarily the same as `net.peer.ip`, which would\nidentify the network-level peer, which may be a proxy.\n\nThis attribute should be set when a source of information different\nfrom the one used for `net.peer.ip`, is available even if that other\nsource just confirms the same value as `net.peer.ip`.\nRationale: For `net.peer.ip`, one typically does not know if it\ncomes from a proxy, reverse proxy, or the actual client. Setting\n`http.client_ip` when it's the same as `net.peer.ip` means that\none is at least somewhat confident that the address is not that of\nthe closest proxy.\n*/\nexports.SEMATTRS_HTTP_CLIENT_IP = TMP_HTTP_CLIENT_IP;\n/**\n * The keys in the `RequestItems` object field.\n */\nexports.SEMATTRS_AWS_DYNAMODB_TABLE_NAMES = TMP_AWS_DYNAMODB_TABLE_NAMES;\n/**\n * The JSON-serialized value of each item in the `ConsumedCapacity` response field.\n */\nexports.SEMATTRS_AWS_DYNAMODB_CONSUMED_CAPACITY = TMP_AWS_DYNAMODB_CONSUMED_CAPACITY;\n/**\n * The JSON-serialized value of the `ItemCollectionMetrics` response field.\n */\nexports.SEMATTRS_AWS_DYNAMODB_ITEM_COLLECTION_METRICS = TMP_AWS_DYNAMODB_ITEM_COLLECTION_METRICS;\n/**\n * The value of the `ProvisionedThroughput.ReadCapacityUnits` request parameter.\n */\nexports.SEMATTRS_AWS_DYNAMODB_PROVISIONED_READ_CAPACITY = TMP_AWS_DYNAMODB_PROVISIONED_READ_CAPACITY;\n/**\n * The value of the `ProvisionedThroughput.WriteCapacityUnits` request parameter.\n */\nexports.SEMATTRS_AWS_DYNAMODB_PROVISIONED_WRITE_CAPACITY = TMP_AWS_DYNAMODB_PROVISIONED_WRITE_CAPACITY;\n/**\n * The value of the `ConsistentRead` request parameter.\n */\nexports.SEMATTRS_AWS_DYNAMODB_CONSISTENT_READ = TMP_AWS_DYNAMODB_CONSISTENT_READ;\n/**\n * The value of the `ProjectionExpression` request parameter.\n */\nexports.SEMATTRS_AWS_DYNAMODB_PROJECTION = TMP_AWS_DYNAMODB_PROJECTION;\n/**\n * The value of the `Limit` request parameter.\n */\nexports.SEMATTRS_AWS_DYNAMODB_LIMIT = TMP_AWS_DYNAMODB_LIMIT;\n/**\n * The value of the `AttributesToGet` request parameter.\n */\nexports.SEMATTRS_AWS_DYNAMODB_ATTRIBUTES_TO_GET = TMP_AWS_DYNAMODB_ATTRIBUTES_TO_GET;\n/**\n * The value of the `IndexName` request parameter.\n */\nexports.SEMATTRS_AWS_DYNAMODB_INDEX_NAME = TMP_AWS_DYNAMODB_INDEX_NAME;\n/**\n * The value of the `Select` request parameter.\n */\nexports.SEMATTRS_AWS_DYNAMODB_SELECT = TMP_AWS_DYNAMODB_SELECT;\n/**\n * The JSON-serialized value of each item of the `GlobalSecondaryIndexes` request field.\n */\nexports.SEMATTRS_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEXES = TMP_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEXES;\n/**\n * The JSON-serialized value of each item of the `LocalSecondaryIndexes` request field.\n */\nexports.SEMATTRS_AWS_DYNAMODB_LOCAL_SECONDARY_INDEXES = TMP_AWS_DYNAMODB_LOCAL_SECONDARY_INDEXES;\n/**\n * The value of the `ExclusiveStartTableName` request parameter.\n */\nexports.SEMATTRS_AWS_DYNAMODB_EXCLUSIVE_START_TABLE = TMP_AWS_DYNAMODB_EXCLUSIVE_START_TABLE;\n/**\n * The the number of items in the `TableNames` response parameter.\n */\nexports.SEMATTRS_AWS_DYNAMODB_TABLE_COUNT = TMP_AWS_DYNAMODB_TABLE_COUNT;\n/**\n * The value of the `ScanIndexForward` request parameter.\n */\nexports.SEMATTRS_AWS_DYNAMODB_SCAN_FORWARD = TMP_AWS_DYNAMODB_SCAN_FORWARD;\n/**\n * The value of the `Segment` request parameter.\n */\nexports.SEMATTRS_AWS_DYNAMODB_SEGMENT = TMP_AWS_DYNAMODB_SEGMENT;\n/**\n * The value of the `TotalSegments` request parameter.\n */\nexports.SEMATTRS_AWS_DYNAMODB_TOTAL_SEGMENTS = TMP_AWS_DYNAMODB_TOTAL_SEGMENTS;\n/**\n * The value of the `Count` response parameter.\n */\nexports.SEMATTRS_AWS_DYNAMODB_COUNT = TMP_AWS_DYNAMODB_COUNT;\n/**\n * The value of the `ScannedCount` response parameter.\n */\nexports.SEMATTRS_AWS_DYNAMODB_SCANNED_COUNT = TMP_AWS_DYNAMODB_SCANNED_COUNT;\n/**\n * The JSON-serialized value of each item in the `AttributeDefinitions` request field.\n */\nexports.SEMATTRS_AWS_DYNAMODB_ATTRIBUTE_DEFINITIONS = TMP_AWS_DYNAMODB_ATTRIBUTE_DEFINITIONS;\n/**\n * The JSON-serialized value of each item in the the `GlobalSecondaryIndexUpdates` request field.\n */\nexports.SEMATTRS_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEX_UPDATES = TMP_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEX_UPDATES;\n/**\n * A string identifying the messaging system.\n */\nexports.SEMATTRS_MESSAGING_SYSTEM = TMP_MESSAGING_SYSTEM;\n/**\n * The message destination name. This might be equal to the span name but is required nevertheless.\n */\nexports.SEMATTRS_MESSAGING_DESTINATION = TMP_MESSAGING_DESTINATION;\n/**\n * The kind of message destination.\n */\nexports.SEMATTRS_MESSAGING_DESTINATION_KIND = TMP_MESSAGING_DESTINATION_KIND;\n/**\n * A boolean that is true if the message destination is temporary.\n */\nexports.SEMATTRS_MESSAGING_TEMP_DESTINATION = TMP_MESSAGING_TEMP_DESTINATION;\n/**\n * The name of the transport protocol.\n */\nexports.SEMATTRS_MESSAGING_PROTOCOL = TMP_MESSAGING_PROTOCOL;\n/**\n * The version of the transport protocol.\n */\nexports.SEMATTRS_MESSAGING_PROTOCOL_VERSION = TMP_MESSAGING_PROTOCOL_VERSION;\n/**\n * Connection string.\n */\nexports.SEMATTRS_MESSAGING_URL = TMP_MESSAGING_URL;\n/**\n * A value used by the messaging system as an identifier for the message, represented as a string.\n */\nexports.SEMATTRS_MESSAGING_MESSAGE_ID = TMP_MESSAGING_MESSAGE_ID;\n/**\n * The [conversation ID](#conversations) identifying the conversation to which the message belongs, represented as a string. Sometimes called "Correlation ID".\n */\nexports.SEMATTRS_MESSAGING_CONVERSATION_ID = TMP_MESSAGING_CONVERSATION_ID;\n/**\n * The (uncompressed) size of the message payload in bytes. Also use this attribute if it is unknown whether the compressed or uncompressed payload size is reported.\n */\nexports.SEMATTRS_MESSAGING_MESSAGE_PAYLOAD_SIZE_BYTES = TMP_MESSAGING_MESSAGE_PAYLOAD_SIZE_BYTES;\n/**\n * The compressed size of the message payload in bytes.\n */\nexports.SEMATTRS_MESSAGING_MESSAGE_PAYLOAD_COMPRESSED_SIZE_BYTES = TMP_MESSAGING_MESSAGE_PAYLOAD_COMPRESSED_SIZE_BYTES;\n/**\n * A string identifying the kind of message consumption as defined in the [Operation names](#operation-names) section above. If the operation is "send", this attribute MUST NOT be set, since the operation can be inferred from the span kind in that case.\n */\nexports.SEMATTRS_MESSAGING_OPERATION = TMP_MESSAGING_OPERATION;\n/**\n * The identifier for the consumer receiving a message. For Kafka, set it to `{messaging.kafka.consumer_group} - {messaging.kafka.client_id}`, if both are present, or only `messaging.kafka.consumer_group`. For brokers, such as RabbitMQ and Artemis, set it to the `client_id` of the client consuming the message.\n */\nexports.SEMATTRS_MESSAGING_CONSUMER_ID = TMP_MESSAGING_CONSUMER_ID;\n/**\n * RabbitMQ message routing key.\n */\nexports.SEMATTRS_MESSAGING_RABBITMQ_ROUTING_KEY = TMP_MESSAGING_RABBITMQ_ROUTING_KEY;\n/**\n * Message keys in Kafka are used for grouping alike messages to ensure they're processed on the same partition. They differ from `messaging.message_id` in that they're not unique. If the key is `null`, the attribute MUST NOT be set.\n *\n * Note: If the key type is not string, it's string representation has to be supplied for the attribute. If the key has no unambiguous, canonical string form, don't include its value.\n */\nexports.SEMATTRS_MESSAGING_KAFKA_MESSAGE_KEY = TMP_MESSAGING_KAFKA_MESSAGE_KEY;\n/**\n * Name of the Kafka Consumer Group that is handling the message. Only applies to consumers, not producers.\n */\nexports.SEMATTRS_MESSAGING_KAFKA_CONSUMER_GROUP = TMP_MESSAGING_KAFKA_CONSUMER_GROUP;\n/**\n * Client Id for the Consumer or Producer that is handling the message.\n */\nexports.SEMATTRS_MESSAGING_KAFKA_CLIENT_ID = TMP_MESSAGING_KAFKA_CLIENT_ID;\n/**\n * Partition the message is sent to.\n */\nexports.SEMATTRS_MESSAGING_KAFKA_PARTITION = TMP_MESSAGING_KAFKA_PARTITION;\n/**\n * A boolean that is true if the message is a tombstone.\n */\nexports.SEMATTRS_MESSAGING_KAFKA_TOMBSTONE = TMP_MESSAGING_KAFKA_TOMBSTONE;\n/**\n * A string identifying the remoting system.\n */\nexports.SEMATTRS_RPC_SYSTEM = TMP_RPC_SYSTEM;\n/**\n * The full (logical) name of the service being called, including its package name, if applicable.\n *\n * Note: This is the logical name of the service from the RPC interface perspective, which can be different from the name of any implementing class. The `code.namespace` attribute may be used to store the latter (despite the attribute name, it may include a class name; e.g., class with method actually executing the call on the server side, RPC client stub class on the client side).\n */\nexports.SEMATTRS_RPC_SERVICE = TMP_RPC_SERVICE;\n/**\n * The name of the (logical) method being called, must be equal to the $method part in the span name.\n *\n * Note: This is the logical name of the method from the RPC interface perspective, which can be different from the name of any implementing method/function. The `code.function` attribute may be used to store the latter (e.g., method actually executing the call on the server side, RPC client stub method on the client side).\n */\nexports.SEMATTRS_RPC_METHOD = TMP_RPC_METHOD;\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n */\nexports.SEMATTRS_RPC_GRPC_STATUS_CODE = TMP_RPC_GRPC_STATUS_CODE;\n/**\n * Protocol version as in `jsonrpc` property of request/response. Since JSON-RPC 1.0 does not specify this, the value can be omitted.\n */\nexports.SEMATTRS_RPC_JSONRPC_VERSION = TMP_RPC_JSONRPC_VERSION;\n/**\n * `id` property of request or response. Since protocol allows id to be int, string, `null` or missing (for notifications), value is expected to be cast to string for simplicity. Use empty string in case of `null` value. Omit entirely if this is a notification.\n */\nexports.SEMATTRS_RPC_JSONRPC_REQUEST_ID = TMP_RPC_JSONRPC_REQUEST_ID;\n/**\n * `error.code` property of response if it is an error response.\n */\nexports.SEMATTRS_RPC_JSONRPC_ERROR_CODE = TMP_RPC_JSONRPC_ERROR_CODE;\n/**\n * `error.message` property of response if it is an error response.\n */\nexports.SEMATTRS_RPC_JSONRPC_ERROR_MESSAGE = TMP_RPC_JSONRPC_ERROR_MESSAGE;\n/**\n * Whether this is a received or sent message.\n */\nexports.SEMATTRS_MESSAGE_TYPE = TMP_MESSAGE_TYPE;\n/**\n * MUST be calculated as two different counters starting from `1` one for sent messages and one for received message.\n *\n * Note: This way we guarantee that the values will be consistent between different implementations.\n */\nexports.SEMATTRS_MESSAGE_ID = TMP_MESSAGE_ID;\n/**\n * Compressed size of the message in bytes.\n */\nexports.SEMATTRS_MESSAGE_COMPRESSED_SIZE = TMP_MESSAGE_COMPRESSED_SIZE;\n/**\n * Uncompressed size of the message in bytes.\n */\nexports.SEMATTRS_MESSAGE_UNCOMPRESSED_SIZE = TMP_MESSAGE_UNCOMPRESSED_SIZE;\n/**\n * Create exported Value Map for SemanticAttributes values\n * @deprecated Use the SEMATTRS_XXXXX constants rather than the SemanticAttributes.XXXXX for bundle minification\n */\nexports.SemanticAttributes = \n/*#__PURE__*/ (0, utils_1.createConstMap)([\n TMP_AWS_LAMBDA_INVOKED_ARN,\n TMP_DB_SYSTEM,\n TMP_DB_CONNECTION_STRING,\n TMP_DB_USER,\n TMP_DB_JDBC_DRIVER_CLASSNAME,\n TMP_DB_NAME,\n TMP_DB_STATEMENT,\n TMP_DB_OPERATION,\n TMP_DB_MSSQL_INSTANCE_NAME,\n TMP_DB_CASSANDRA_KEYSPACE,\n TMP_DB_CASSANDRA_PAGE_SIZE,\n TMP_DB_CASSANDRA_CONSISTENCY_LEVEL,\n TMP_DB_CASSANDRA_TABLE,\n TMP_DB_CASSANDRA_IDEMPOTENCE,\n TMP_DB_CASSANDRA_SPECULATIVE_EXECUTION_COUNT,\n TMP_DB_CASSANDRA_COORDINATOR_ID,\n TMP_DB_CASSANDRA_COORDINATOR_DC,\n TMP_DB_HBASE_NAMESPACE,\n TMP_DB_REDIS_DATABASE_INDEX,\n TMP_DB_MONGODB_COLLECTION,\n TMP_DB_SQL_TABLE,\n TMP_EXCEPTION_TYPE,\n TMP_EXCEPTION_MESSAGE,\n TMP_EXCEPTION_STACKTRACE,\n TMP_EXCEPTION_ESCAPED,\n TMP_FAAS_TRIGGER,\n TMP_FAAS_EXECUTION,\n TMP_FAAS_DOCUMENT_COLLECTION,\n TMP_FAAS_DOCUMENT_OPERATION,\n TMP_FAAS_DOCUMENT_TIME,\n TMP_FAAS_DOCUMENT_NAME,\n TMP_FAAS_TIME,\n TMP_FAAS_CRON,\n TMP_FAAS_COLDSTART,\n TMP_FAAS_INVOKED_NAME,\n TMP_FAAS_INVOKED_PROVIDER,\n TMP_FAAS_INVOKED_REGION,\n TMP_NET_TRANSPORT,\n TMP_NET_PEER_IP,\n TMP_NET_PEER_PORT,\n TMP_NET_PEER_NAME,\n TMP_NET_HOST_IP,\n TMP_NET_HOST_PORT,\n TMP_NET_HOST_NAME,\n TMP_NET_HOST_CONNECTION_TYPE,\n TMP_NET_HOST_CONNECTION_SUBTYPE,\n TMP_NET_HOST_CARRIER_NAME,\n TMP_NET_HOST_CARRIER_MCC,\n TMP_NET_HOST_CARRIER_MNC,\n TMP_NET_HOST_CARRIER_ICC,\n TMP_PEER_SERVICE,\n TMP_ENDUSER_ID,\n TMP_ENDUSER_ROLE,\n TMP_ENDUSER_SCOPE,\n TMP_THREAD_ID,\n TMP_THREAD_NAME,\n TMP_CODE_FUNCTION,\n TMP_CODE_NAMESPACE,\n TMP_CODE_FILEPATH,\n TMP_CODE_LINENO,\n TMP_HTTP_METHOD,\n TMP_HTTP_URL,\n TMP_HTTP_TARGET,\n TMP_HTTP_HOST,\n TMP_HTTP_SCHEME,\n TMP_HTTP_STATUS_CODE,\n TMP_HTTP_FLAVOR,\n TMP_HTTP_USER_AGENT,\n TMP_HTTP_REQUEST_CONTENT_LENGTH,\n TMP_HTTP_REQUEST_CONTENT_LENGTH_UNCOMPRESSED,\n TMP_HTTP_RESPONSE_CONTENT_LENGTH,\n TMP_HTTP_RESPONSE_CONTENT_LENGTH_UNCOMPRESSED,\n TMP_HTTP_SERVER_NAME,\n TMP_HTTP_ROUTE,\n TMP_HTTP_CLIENT_IP,\n TMP_AWS_DYNAMODB_TABLE_NAMES,\n TMP_AWS_DYNAMODB_CONSUMED_CAPACITY,\n TMP_AWS_DYNAMODB_ITEM_COLLECTION_METRICS,\n TMP_AWS_DYNAMODB_PROVISIONED_READ_CAPACITY,\n TMP_AWS_DYNAMODB_PROVISIONED_WRITE_CAPACITY,\n TMP_AWS_DYNAMODB_CONSISTENT_READ,\n TMP_AWS_DYNAMODB_PROJECTION,\n TMP_AWS_DYNAMODB_LIMIT,\n TMP_AWS_DYNAMODB_ATTRIBUTES_TO_GET,\n TMP_AWS_DYNAMODB_INDEX_NAME,\n TMP_AWS_DYNAMODB_SELECT,\n TMP_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEXES,\n TMP_AWS_DYNAMODB_LOCAL_SECONDARY_INDEXES,\n TMP_AWS_DYNAMODB_EXCLUSIVE_START_TABLE,\n TMP_AWS_DYNAMODB_TABLE_COUNT,\n TMP_AWS_DYNAMODB_SCAN_FORWARD,\n TMP_AWS_DYNAMODB_SEGMENT,\n TMP_AWS_DYNAMODB_TOTAL_SEGMENTS,\n TMP_AWS_DYNAMODB_COUNT,\n TMP_AWS_DYNAMODB_SCANNED_COUNT,\n TMP_AWS_DYNAMODB_ATTRIBUTE_DEFINITIONS,\n TMP_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEX_UPDATES,\n TMP_MESSAGING_SYSTEM,\n TMP_MESSAGING_DESTINATION,\n TMP_MESSAGING_DESTINATION_KIND,\n TMP_MESSAGING_TEMP_DESTINATION,\n TMP_MESSAGING_PROTOCOL,\n TMP_MESSAGING_PROTOCOL_VERSION,\n TMP_MESSAGING_URL,\n TMP_MESSAGING_MESSAGE_ID,\n TMP_MESSAGING_CONVERSATION_ID,\n TMP_MESSAGING_MESSAGE_PAYLOAD_SIZE_BYTES,\n TMP_MESSAGING_MESSAGE_PAYLOAD_COMPRESSED_SIZE_BYTES,\n TMP_MESSAGING_OPERATION,\n TMP_MESSAGING_CONSUMER_ID,\n TMP_MESSAGING_RABBITMQ_ROUTING_KEY,\n TMP_MESSAGING_KAFKA_MESSAGE_KEY,\n TMP_MESSAGING_KAFKA_CONSUMER_GROUP,\n TMP_MESSAGING_KAFKA_CLIENT_ID,\n TMP_MESSAGING_KAFKA_PARTITION,\n TMP_MESSAGING_KAFKA_TOMBSTONE,\n TMP_RPC_SYSTEM,\n TMP_RPC_SERVICE,\n TMP_RPC_METHOD,\n TMP_RPC_GRPC_STATUS_CODE,\n TMP_RPC_JSONRPC_VERSION,\n TMP_RPC_JSONRPC_REQUEST_ID,\n TMP_RPC_JSONRPC_ERROR_CODE,\n TMP_RPC_JSONRPC_ERROR_MESSAGE,\n TMP_MESSAGE_TYPE,\n TMP_MESSAGE_ID,\n TMP_MESSAGE_COMPRESSED_SIZE,\n TMP_MESSAGE_UNCOMPRESSED_SIZE,\n]);\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for DbSystemValues enum definition\n *\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n * ---------------------------------------------------------------------------------------------------------- */\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifable export names for some package types\nconst TMP_DBSYSTEMVALUES_OTHER_SQL = 'other_sql';\nconst TMP_DBSYSTEMVALUES_MSSQL = 'mssql';\nconst TMP_DBSYSTEMVALUES_MYSQL = 'mysql';\nconst TMP_DBSYSTEMVALUES_ORACLE = 'oracle';\nconst TMP_DBSYSTEMVALUES_DB2 = 'db2';\nconst TMP_DBSYSTEMVALUES_POSTGRESQL = 'postgresql';\nconst TMP_DBSYSTEMVALUES_REDSHIFT = 'redshift';\nconst TMP_DBSYSTEMVALUES_HIVE = 'hive';\nconst TMP_DBSYSTEMVALUES_CLOUDSCAPE = 'cloudscape';\nconst TMP_DBSYSTEMVALUES_HSQLDB = 'hsqldb';\nconst TMP_DBSYSTEMVALUES_PROGRESS = 'progress';\nconst TMP_DBSYSTEMVALUES_MAXDB = 'maxdb';\nconst TMP_DBSYSTEMVALUES_HANADB = 'hanadb';\nconst TMP_DBSYSTEMVALUES_INGRES = 'ingres';\nconst TMP_DBSYSTEMVALUES_FIRSTSQL = 'firstsql';\nconst TMP_DBSYSTEMVALUES_EDB = 'edb';\nconst TMP_DBSYSTEMVALUES_CACHE = 'cache';\nconst TMP_DBSYSTEMVALUES_ADABAS = 'adabas';\nconst TMP_DBSYSTEMVALUES_FIREBIRD = 'firebird';\nconst TMP_DBSYSTEMVALUES_DERBY = 'derby';\nconst TMP_DBSYSTEMVALUES_FILEMAKER = 'filemaker';\nconst TMP_DBSYSTEMVALUES_INFORMIX = 'informix';\nconst TMP_DBSYSTEMVALUES_INSTANTDB = 'instantdb';\nconst TMP_DBSYSTEMVALUES_INTERBASE = 'interbase';\nconst TMP_DBSYSTEMVALUES_MARIADB = 'mariadb';\nconst TMP_DBSYSTEMVALUES_NETEZZA = 'netezza';\nconst TMP_DBSYSTEMVALUES_PERVASIVE = 'pervasive';\nconst TMP_DBSYSTEMVALUES_POINTBASE = 'pointbase';\nconst TMP_DBSYSTEMVALUES_SQLITE = 'sqlite';\nconst TMP_DBSYSTEMVALUES_SYBASE = 'sybase';\nconst TMP_DBSYSTEMVALUES_TERADATA = 'teradata';\nconst TMP_DBSYSTEMVALUES_VERTICA = 'vertica';\nconst TMP_DBSYSTEMVALUES_H2 = 'h2';\nconst TMP_DBSYSTEMVALUES_COLDFUSION = 'coldfusion';\nconst TMP_DBSYSTEMVALUES_CASSANDRA = 'cassandra';\nconst TMP_DBSYSTEMVALUES_HBASE = 'hbase';\nconst TMP_DBSYSTEMVALUES_MONGODB = 'mongodb';\nconst TMP_DBSYSTEMVALUES_REDIS = 'redis';\nconst TMP_DBSYSTEMVALUES_COUCHBASE = 'couchbase';\nconst TMP_DBSYSTEMVALUES_COUCHDB = 'couchdb';\nconst TMP_DBSYSTEMVALUES_COSMOSDB = 'cosmosdb';\nconst TMP_DBSYSTEMVALUES_DYNAMODB = 'dynamodb';\nconst TMP_DBSYSTEMVALUES_NEO4J = 'neo4j';\nconst TMP_DBSYSTEMVALUES_GEODE = 'geode';\nconst TMP_DBSYSTEMVALUES_ELASTICSEARCH = 'elasticsearch';\nconst TMP_DBSYSTEMVALUES_MEMCACHED = 'memcached';\nconst TMP_DBSYSTEMVALUES_COCKROACHDB = 'cockroachdb';\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n */\nexports.DBSYSTEMVALUES_OTHER_SQL = TMP_DBSYSTEMVALUES_OTHER_SQL;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n */\nexports.DBSYSTEMVALUES_MSSQL = TMP_DBSYSTEMVALUES_MSSQL;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n */\nexports.DBSYSTEMVALUES_MYSQL = TMP_DBSYSTEMVALUES_MYSQL;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n */\nexports.DBSYSTEMVALUES_ORACLE = TMP_DBSYSTEMVALUES_ORACLE;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n */\nexports.DBSYSTEMVALUES_DB2 = TMP_DBSYSTEMVALUES_DB2;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n */\nexports.DBSYSTEMVALUES_POSTGRESQL = TMP_DBSYSTEMVALUES_POSTGRESQL;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n */\nexports.DBSYSTEMVALUES_REDSHIFT = TMP_DBSYSTEMVALUES_REDSHIFT;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n */\nexports.DBSYSTEMVALUES_HIVE = TMP_DBSYSTEMVALUES_HIVE;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n */\nexports.DBSYSTEMVALUES_CLOUDSCAPE = TMP_DBSYSTEMVALUES_CLOUDSCAPE;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n */\nexports.DBSYSTEMVALUES_HSQLDB = TMP_DBSYSTEMVALUES_HSQLDB;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n */\nexports.DBSYSTEMVALUES_PROGRESS = TMP_DBSYSTEMVALUES_PROGRESS;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n */\nexports.DBSYSTEMVALUES_MAXDB = TMP_DBSYSTEMVALUES_MAXDB;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n */\nexports.DBSYSTEMVALUES_HANADB = TMP_DBSYSTEMVALUES_HANADB;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n */\nexports.DBSYSTEMVALUES_INGRES = TMP_DBSYSTEMVALUES_INGRES;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n */\nexports.DBSYSTEMVALUES_FIRSTSQL = TMP_DBSYSTEMVALUES_FIRSTSQL;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n */\nexports.DBSYSTEMVALUES_EDB = TMP_DBSYSTEMVALUES_EDB;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n */\nexports.DBSYSTEMVALUES_CACHE = TMP_DBSYSTEMVALUES_CACHE;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n */\nexports.DBSYSTEMVALUES_ADABAS = TMP_DBSYSTEMVALUES_ADABAS;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n */\nexports.DBSYSTEMVALUES_FIREBIRD = TMP_DBSYSTEMVALUES_FIREBIRD;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n */\nexports.DBSYSTEMVALUES_DERBY = TMP_DBSYSTEMVALUES_DERBY;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n */\nexports.DBSYSTEMVALUES_FILEMAKER = TMP_DBSYSTEMVALUES_FILEMAKER;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n */\nexports.DBSYSTEMVALUES_INFORMIX = TMP_DBSYSTEMVALUES_INFORMIX;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n */\nexports.DBSYSTEMVALUES_INSTANTDB = TMP_DBSYSTEMVALUES_INSTANTDB;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n */\nexports.DBSYSTEMVALUES_INTERBASE = TMP_DBSYSTEMVALUES_INTERBASE;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n */\nexports.DBSYSTEMVALUES_MARIADB = TMP_DBSYSTEMVALUES_MARIADB;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n */\nexports.DBSYSTEMVALUES_NETEZZA = TMP_DBSYSTEMVALUES_NETEZZA;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n */\nexports.DBSYSTEMVALUES_PERVASIVE = TMP_DBSYSTEMVALUES_PERVASIVE;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n */\nexports.DBSYSTEMVALUES_POINTBASE = TMP_DBSYSTEMVALUES_POINTBASE;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n */\nexports.DBSYSTEMVALUES_SQLITE = TMP_DBSYSTEMVALUES_SQLITE;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n */\nexports.DBSYSTEMVALUES_SYBASE = TMP_DBSYSTEMVALUES_SYBASE;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n */\nexports.DBSYSTEMVALUES_TERADATA = TMP_DBSYSTEMVALUES_TERADATA;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n */\nexports.DBSYSTEMVALUES_VERTICA = TMP_DBSYSTEMVALUES_VERTICA;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n */\nexports.DBSYSTEMVALUES_H2 = TMP_DBSYSTEMVALUES_H2;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n */\nexports.DBSYSTEMVALUES_COLDFUSION = TMP_DBSYSTEMVALUES_COLDFUSION;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n */\nexports.DBSYSTEMVALUES_CASSANDRA = TMP_DBSYSTEMVALUES_CASSANDRA;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n */\nexports.DBSYSTEMVALUES_HBASE = TMP_DBSYSTEMVALUES_HBASE;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n */\nexports.DBSYSTEMVALUES_MONGODB = TMP_DBSYSTEMVALUES_MONGODB;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n */\nexports.DBSYSTEMVALUES_REDIS = TMP_DBSYSTEMVALUES_REDIS;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n */\nexports.DBSYSTEMVALUES_COUCHBASE = TMP_DBSYSTEMVALUES_COUCHBASE;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n */\nexports.DBSYSTEMVALUES_COUCHDB = TMP_DBSYSTEMVALUES_COUCHDB;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n */\nexports.DBSYSTEMVALUES_COSMOSDB = TMP_DBSYSTEMVALUES_COSMOSDB;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n */\nexports.DBSYSTEMVALUES_DYNAMODB = TMP_DBSYSTEMVALUES_DYNAMODB;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n */\nexports.DBSYSTEMVALUES_NEO4J = TMP_DBSYSTEMVALUES_NEO4J;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n */\nexports.DBSYSTEMVALUES_GEODE = TMP_DBSYSTEMVALUES_GEODE;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n */\nexports.DBSYSTEMVALUES_ELASTICSEARCH = TMP_DBSYSTEMVALUES_ELASTICSEARCH;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n */\nexports.DBSYSTEMVALUES_MEMCACHED = TMP_DBSYSTEMVALUES_MEMCACHED;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n */\nexports.DBSYSTEMVALUES_COCKROACHDB = TMP_DBSYSTEMVALUES_COCKROACHDB;\n/**\n * The constant map of values for DbSystemValues.\n * @deprecated Use the DBSYSTEMVALUES_XXXXX constants rather than the DbSystemValues.XXXXX for bundle minification.\n */\nexports.DbSystemValues = \n/*#__PURE__*/ (0, utils_1.createConstMap)([\n TMP_DBSYSTEMVALUES_OTHER_SQL,\n TMP_DBSYSTEMVALUES_MSSQL,\n TMP_DBSYSTEMVALUES_MYSQL,\n TMP_DBSYSTEMVALUES_ORACLE,\n TMP_DBSYSTEMVALUES_DB2,\n TMP_DBSYSTEMVALUES_POSTGRESQL,\n TMP_DBSYSTEMVALUES_REDSHIFT,\n TMP_DBSYSTEMVALUES_HIVE,\n TMP_DBSYSTEMVALUES_CLOUDSCAPE,\n TMP_DBSYSTEMVALUES_HSQLDB,\n TMP_DBSYSTEMVALUES_PROGRESS,\n TMP_DBSYSTEMVALUES_MAXDB,\n TMP_DBSYSTEMVALUES_HANADB,\n TMP_DBSYSTEMVALUES_INGRES,\n TMP_DBSYSTEMVALUES_FIRSTSQL,\n TMP_DBSYSTEMVALUES_EDB,\n TMP_DBSYSTEMVALUES_CACHE,\n TMP_DBSYSTEMVALUES_ADABAS,\n TMP_DBSYSTEMVALUES_FIREBIRD,\n TMP_DBSYSTEMVALUES_DERBY,\n TMP_DBSYSTEMVALUES_FILEMAKER,\n TMP_DBSYSTEMVALUES_INFORMIX,\n TMP_DBSYSTEMVALUES_INSTANTDB,\n TMP_DBSYSTEMVALUES_INTERBASE,\n TMP_DBSYSTEMVALUES_MARIADB,\n TMP_DBSYSTEMVALUES_NETEZZA,\n TMP_DBSYSTEMVALUES_PERVASIVE,\n TMP_DBSYSTEMVALUES_POINTBASE,\n TMP_DBSYSTEMVALUES_SQLITE,\n TMP_DBSYSTEMVALUES_SYBASE,\n TMP_DBSYSTEMVALUES_TERADATA,\n TMP_DBSYSTEMVALUES_VERTICA,\n TMP_DBSYSTEMVALUES_H2,\n TMP_DBSYSTEMVALUES_COLDFUSION,\n TMP_DBSYSTEMVALUES_CASSANDRA,\n TMP_DBSYSTEMVALUES_HBASE,\n TMP_DBSYSTEMVALUES_MONGODB,\n TMP_DBSYSTEMVALUES_REDIS,\n TMP_DBSYSTEMVALUES_COUCHBASE,\n TMP_DBSYSTEMVALUES_COUCHDB,\n TMP_DBSYSTEMVALUES_COSMOSDB,\n TMP_DBSYSTEMVALUES_DYNAMODB,\n TMP_DBSYSTEMVALUES_NEO4J,\n TMP_DBSYSTEMVALUES_GEODE,\n TMP_DBSYSTEMVALUES_ELASTICSEARCH,\n TMP_DBSYSTEMVALUES_MEMCACHED,\n TMP_DBSYSTEMVALUES_COCKROACHDB,\n]);\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for DbCassandraConsistencyLevelValues enum definition\n *\n * The consistency level of the query. Based on consistency values from [CQL](https://docs.datastax.com/en/cassandra-oss/3.0/cassandra/dml/dmlConfigConsistency.html).\n * ---------------------------------------------------------------------------------------------------------- */\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifable export names for some package types\nconst TMP_DBCASSANDRACONSISTENCYLEVELVALUES_ALL = 'all';\nconst TMP_DBCASSANDRACONSISTENCYLEVELVALUES_EACH_QUORUM = 'each_quorum';\nconst TMP_DBCASSANDRACONSISTENCYLEVELVALUES_QUORUM = 'quorum';\nconst TMP_DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_QUORUM = 'local_quorum';\nconst TMP_DBCASSANDRACONSISTENCYLEVELVALUES_ONE = 'one';\nconst TMP_DBCASSANDRACONSISTENCYLEVELVALUES_TWO = 'two';\nconst TMP_DBCASSANDRACONSISTENCYLEVELVALUES_THREE = 'three';\nconst TMP_DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_ONE = 'local_one';\nconst TMP_DBCASSANDRACONSISTENCYLEVELVALUES_ANY = 'any';\nconst TMP_DBCASSANDRACONSISTENCYLEVELVALUES_SERIAL = 'serial';\nconst TMP_DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_SERIAL = 'local_serial';\n/**\n * The consistency level of the query. Based on consistency values from [CQL](https://docs.datastax.com/en/cassandra-oss/3.0/cassandra/dml/dmlConfigConsistency.html).\n */\nexports.DBCASSANDRACONSISTENCYLEVELVALUES_ALL = TMP_DBCASSANDRACONSISTENCYLEVELVALUES_ALL;\n/**\n * The consistency level of the query. Based on consistency values from [CQL](https://docs.datastax.com/en/cassandra-oss/3.0/cassandra/dml/dmlConfigConsistency.html).\n */\nexports.DBCASSANDRACONSISTENCYLEVELVALUES_EACH_QUORUM = TMP_DBCASSANDRACONSISTENCYLEVELVALUES_EACH_QUORUM;\n/**\n * The consistency level of the query. Based on consistency values from [CQL](https://docs.datastax.com/en/cassandra-oss/3.0/cassandra/dml/dmlConfigConsistency.html).\n */\nexports.DBCASSANDRACONSISTENCYLEVELVALUES_QUORUM = TMP_DBCASSANDRACONSISTENCYLEVELVALUES_QUORUM;\n/**\n * The consistency level of the query. Based on consistency values from [CQL](https://docs.datastax.com/en/cassandra-oss/3.0/cassandra/dml/dmlConfigConsistency.html).\n */\nexports.DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_QUORUM = TMP_DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_QUORUM;\n/**\n * The consistency level of the query. Based on consistency values from [CQL](https://docs.datastax.com/en/cassandra-oss/3.0/cassandra/dml/dmlConfigConsistency.html).\n */\nexports.DBCASSANDRACONSISTENCYLEVELVALUES_ONE = TMP_DBCASSANDRACONSISTENCYLEVELVALUES_ONE;\n/**\n * The consistency level of the query. Based on consistency values from [CQL](https://docs.datastax.com/en/cassandra-oss/3.0/cassandra/dml/dmlConfigConsistency.html).\n */\nexports.DBCASSANDRACONSISTENCYLEVELVALUES_TWO = TMP_DBCASSANDRACONSISTENCYLEVELVALUES_TWO;\n/**\n * The consistency level of the query. Based on consistency values from [CQL](https://docs.datastax.com/en/cassandra-oss/3.0/cassandra/dml/dmlConfigConsistency.html).\n */\nexports.DBCASSANDRACONSISTENCYLEVELVALUES_THREE = TMP_DBCASSANDRACONSISTENCYLEVELVALUES_THREE;\n/**\n * The consistency level of the query. Based on consistency values from [CQL](https://docs.datastax.com/en/cassandra-oss/3.0/cassandra/dml/dmlConfigConsistency.html).\n */\nexports.DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_ONE = TMP_DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_ONE;\n/**\n * The consistency level of the query. Based on consistency values from [CQL](https://docs.datastax.com/en/cassandra-oss/3.0/cassandra/dml/dmlConfigConsistency.html).\n */\nexports.DBCASSANDRACONSISTENCYLEVELVALUES_ANY = TMP_DBCASSANDRACONSISTENCYLEVELVALUES_ANY;\n/**\n * The consistency level of the query. Based on consistency values from [CQL](https://docs.datastax.com/en/cassandra-oss/3.0/cassandra/dml/dmlConfigConsistency.html).\n */\nexports.DBCASSANDRACONSISTENCYLEVELVALUES_SERIAL = TMP_DBCASSANDRACONSISTENCYLEVELVALUES_SERIAL;\n/**\n * The consistency level of the query. Based on consistency values from [CQL](https://docs.datastax.com/en/cassandra-oss/3.0/cassandra/dml/dmlConfigConsistency.html).\n */\nexports.DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_SERIAL = TMP_DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_SERIAL;\n/**\n * The constant map of values for DbCassandraConsistencyLevelValues.\n * @deprecated Use the DBCASSANDRACONSISTENCYLEVELVALUES_XXXXX constants rather than the DbCassandraConsistencyLevelValues.XXXXX for bundle minification.\n */\nexports.DbCassandraConsistencyLevelValues = \n/*#__PURE__*/ (0, utils_1.createConstMap)([\n TMP_DBCASSANDRACONSISTENCYLEVELVALUES_ALL,\n TMP_DBCASSANDRACONSISTENCYLEVELVALUES_EACH_QUORUM,\n TMP_DBCASSANDRACONSISTENCYLEVELVALUES_QUORUM,\n TMP_DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_QUORUM,\n TMP_DBCASSANDRACONSISTENCYLEVELVALUES_ONE,\n TMP_DBCASSANDRACONSISTENCYLEVELVALUES_TWO,\n TMP_DBCASSANDRACONSISTENCYLEVELVALUES_THREE,\n TMP_DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_ONE,\n TMP_DBCASSANDRACONSISTENCYLEVELVALUES_ANY,\n TMP_DBCASSANDRACONSISTENCYLEVELVALUES_SERIAL,\n TMP_DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_SERIAL,\n]);\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for FaasTriggerValues enum definition\n *\n * Type of the trigger on which the function is executed.\n * ---------------------------------------------------------------------------------------------------------- */\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifable export names for some package types\nconst TMP_FAASTRIGGERVALUES_DATASOURCE = 'datasource';\nconst TMP_FAASTRIGGERVALUES_HTTP = 'http';\nconst TMP_FAASTRIGGERVALUES_PUBSUB = 'pubsub';\nconst TMP_FAASTRIGGERVALUES_TIMER = 'timer';\nconst TMP_FAASTRIGGERVALUES_OTHER = 'other';\n/**\n * Type of the trigger on which the function is executed.\n */\nexports.FAASTRIGGERVALUES_DATASOURCE = TMP_FAASTRIGGERVALUES_DATASOURCE;\n/**\n * Type of the trigger on which the function is executed.\n */\nexports.FAASTRIGGERVALUES_HTTP = TMP_FAASTRIGGERVALUES_HTTP;\n/**\n * Type of the trigger on which the function is executed.\n */\nexports.FAASTRIGGERVALUES_PUBSUB = TMP_FAASTRIGGERVALUES_PUBSUB;\n/**\n * Type of the trigger on which the function is executed.\n */\nexports.FAASTRIGGERVALUES_TIMER = TMP_FAASTRIGGERVALUES_TIMER;\n/**\n * Type of the trigger on which the function is executed.\n */\nexports.FAASTRIGGERVALUES_OTHER = TMP_FAASTRIGGERVALUES_OTHER;\n/**\n * The constant map of values for FaasTriggerValues.\n * @deprecated Use the FAASTRIGGERVALUES_XXXXX constants rather than the FaasTriggerValues.XXXXX for bundle minification.\n */\nexports.FaasTriggerValues = \n/*#__PURE__*/ (0, utils_1.createConstMap)([\n TMP_FAASTRIGGERVALUES_DATASOURCE,\n TMP_FAASTRIGGERVALUES_HTTP,\n TMP_FAASTRIGGERVALUES_PUBSUB,\n TMP_FAASTRIGGERVALUES_TIMER,\n TMP_FAASTRIGGERVALUES_OTHER,\n]);\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for FaasDocumentOperationValues enum definition\n *\n * Describes the type of the operation that was performed on the data.\n * ---------------------------------------------------------------------------------------------------------- */\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifable export names for some package types\nconst TMP_FAASDOCUMENTOPERATIONVALUES_INSERT = 'insert';\nconst TMP_FAASDOCUMENTOPERATIONVALUES_EDIT = 'edit';\nconst TMP_FAASDOCUMENTOPERATIONVALUES_DELETE = 'delete';\n/**\n * Describes the type of the operation that was performed on the data.\n */\nexports.FAASDOCUMENTOPERATIONVALUES_INSERT = TMP_FAASDOCUMENTOPERATIONVALUES_INSERT;\n/**\n * Describes the type of the operation that was performed on the data.\n */\nexports.FAASDOCUMENTOPERATIONVALUES_EDIT = TMP_FAASDOCUMENTOPERATIONVALUES_EDIT;\n/**\n * Describes the type of the operation that was performed on the data.\n */\nexports.FAASDOCUMENTOPERATIONVALUES_DELETE = TMP_FAASDOCUMENTOPERATIONVALUES_DELETE;\n/**\n * The constant map of values for FaasDocumentOperationValues.\n * @deprecated Use the FAASDOCUMENTOPERATIONVALUES_XXXXX constants rather than the FaasDocumentOperationValues.XXXXX for bundle minification.\n */\nexports.FaasDocumentOperationValues = \n/*#__PURE__*/ (0, utils_1.createConstMap)([\n TMP_FAASDOCUMENTOPERATIONVALUES_INSERT,\n TMP_FAASDOCUMENTOPERATIONVALUES_EDIT,\n TMP_FAASDOCUMENTOPERATIONVALUES_DELETE,\n]);\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for FaasInvokedProviderValues enum definition\n *\n * The cloud provider of the invoked function.\n *\n * Note: SHOULD be equal to the `cloud.provider` resource attribute of the invoked function.\n * ---------------------------------------------------------------------------------------------------------- */\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifable export names for some package types\nconst TMP_FAASINVOKEDPROVIDERVALUES_ALIBABA_CLOUD = 'alibaba_cloud';\nconst TMP_FAASINVOKEDPROVIDERVALUES_AWS = 'aws';\nconst TMP_FAASINVOKEDPROVIDERVALUES_AZURE = 'azure';\nconst TMP_FAASINVOKEDPROVIDERVALUES_GCP = 'gcp';\n/**\n * The cloud provider of the invoked function.\n *\n * Note: SHOULD be equal to the `cloud.provider` resource attribute of the invoked function.\n */\nexports.FAASINVOKEDPROVIDERVALUES_ALIBABA_CLOUD = TMP_FAASINVOKEDPROVIDERVALUES_ALIBABA_CLOUD;\n/**\n * The cloud provider of the invoked function.\n *\n * Note: SHOULD be equal to the `cloud.provider` resource attribute of the invoked function.\n */\nexports.FAASINVOKEDPROVIDERVALUES_AWS = TMP_FAASINVOKEDPROVIDERVALUES_AWS;\n/**\n * The cloud provider of the invoked function.\n *\n * Note: SHOULD be equal to the `cloud.provider` resource attribute of the invoked function.\n */\nexports.FAASINVOKEDPROVIDERVALUES_AZURE = TMP_FAASINVOKEDPROVIDERVALUES_AZURE;\n/**\n * The cloud provider of the invoked function.\n *\n * Note: SHOULD be equal to the `cloud.provider` resource attribute of the invoked function.\n */\nexports.FAASINVOKEDPROVIDERVALUES_GCP = TMP_FAASINVOKEDPROVIDERVALUES_GCP;\n/**\n * The constant map of values for FaasInvokedProviderValues.\n * @deprecated Use the FAASINVOKEDPROVIDERVALUES_XXXXX constants rather than the FaasInvokedProviderValues.XXXXX for bundle minification.\n */\nexports.FaasInvokedProviderValues = \n/*#__PURE__*/ (0, utils_1.createConstMap)([\n TMP_FAASINVOKEDPROVIDERVALUES_ALIBABA_CLOUD,\n TMP_FAASINVOKEDPROVIDERVALUES_AWS,\n TMP_FAASINVOKEDPROVIDERVALUES_AZURE,\n TMP_FAASINVOKEDPROVIDERVALUES_GCP,\n]);\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for NetTransportValues enum definition\n *\n * Transport protocol used. See note below.\n * ---------------------------------------------------------------------------------------------------------- */\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifable export names for some package types\nconst TMP_NETTRANSPORTVALUES_IP_TCP = 'ip_tcp';\nconst TMP_NETTRANSPORTVALUES_IP_UDP = 'ip_udp';\nconst TMP_NETTRANSPORTVALUES_IP = 'ip';\nconst TMP_NETTRANSPORTVALUES_UNIX = 'unix';\nconst TMP_NETTRANSPORTVALUES_PIPE = 'pipe';\nconst TMP_NETTRANSPORTVALUES_INPROC = 'inproc';\nconst TMP_NETTRANSPORTVALUES_OTHER = 'other';\n/**\n * Transport protocol used. See note below.\n */\nexports.NETTRANSPORTVALUES_IP_TCP = TMP_NETTRANSPORTVALUES_IP_TCP;\n/**\n * Transport protocol used. See note below.\n */\nexports.NETTRANSPORTVALUES_IP_UDP = TMP_NETTRANSPORTVALUES_IP_UDP;\n/**\n * Transport protocol used. See note below.\n */\nexports.NETTRANSPORTVALUES_IP = TMP_NETTRANSPORTVALUES_IP;\n/**\n * Transport protocol used. See note below.\n */\nexports.NETTRANSPORTVALUES_UNIX = TMP_NETTRANSPORTVALUES_UNIX;\n/**\n * Transport protocol used. See note below.\n */\nexports.NETTRANSPORTVALUES_PIPE = TMP_NETTRANSPORTVALUES_PIPE;\n/**\n * Transport protocol used. See note below.\n */\nexports.NETTRANSPORTVALUES_INPROC = TMP_NETTRANSPORTVALUES_INPROC;\n/**\n * Transport protocol used. See note below.\n */\nexports.NETTRANSPORTVALUES_OTHER = TMP_NETTRANSPORTVALUES_OTHER;\n/**\n * The constant map of values for NetTransportValues.\n * @deprecated Use the NETTRANSPORTVALUES_XXXXX constants rather than the NetTransportValues.XXXXX for bundle minification.\n */\nexports.NetTransportValues = \n/*#__PURE__*/ (0, utils_1.createConstMap)([\n TMP_NETTRANSPORTVALUES_IP_TCP,\n TMP_NETTRANSPORTVALUES_IP_UDP,\n TMP_NETTRANSPORTVALUES_IP,\n TMP_NETTRANSPORTVALUES_UNIX,\n TMP_NETTRANSPORTVALUES_PIPE,\n TMP_NETTRANSPORTVALUES_INPROC,\n TMP_NETTRANSPORTVALUES_OTHER,\n]);\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for NetHostConnectionTypeValues enum definition\n *\n * The internet connection type currently being used by the host.\n * ---------------------------------------------------------------------------------------------------------- */\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifable export names for some package types\nconst TMP_NETHOSTCONNECTIONTYPEVALUES_WIFI = 'wifi';\nconst TMP_NETHOSTCONNECTIONTYPEVALUES_WIRED = 'wired';\nconst TMP_NETHOSTCONNECTIONTYPEVALUES_CELL = 'cell';\nconst TMP_NETHOSTCONNECTIONTYPEVALUES_UNAVAILABLE = 'unavailable';\nconst TMP_NETHOSTCONNECTIONTYPEVALUES_UNKNOWN = 'unknown';\n/**\n * The internet connection type currently being used by the host.\n */\nexports.NETHOSTCONNECTIONTYPEVALUES_WIFI = TMP_NETHOSTCONNECTIONTYPEVALUES_WIFI;\n/**\n * The internet connection type currently being used by the host.\n */\nexports.NETHOSTCONNECTIONTYPEVALUES_WIRED = TMP_NETHOSTCONNECTIONTYPEVALUES_WIRED;\n/**\n * The internet connection type currently being used by the host.\n */\nexports.NETHOSTCONNECTIONTYPEVALUES_CELL = TMP_NETHOSTCONNECTIONTYPEVALUES_CELL;\n/**\n * The internet connection type currently being used by the host.\n */\nexports.NETHOSTCONNECTIONTYPEVALUES_UNAVAILABLE = TMP_NETHOSTCONNECTIONTYPEVALUES_UNAVAILABLE;\n/**\n * The internet connection type currently being used by the host.\n */\nexports.NETHOSTCONNECTIONTYPEVALUES_UNKNOWN = TMP_NETHOSTCONNECTIONTYPEVALUES_UNKNOWN;\n/**\n * The constant map of values for NetHostConnectionTypeValues.\n * @deprecated Use the NETHOSTCONNECTIONTYPEVALUES_XXXXX constants rather than the NetHostConnectionTypeValues.XXXXX for bundle minification.\n */\nexports.NetHostConnectionTypeValues = \n/*#__PURE__*/ (0, utils_1.createConstMap)([\n TMP_NETHOSTCONNECTIONTYPEVALUES_WIFI,\n TMP_NETHOSTCONNECTIONTYPEVALUES_WIRED,\n TMP_NETHOSTCONNECTIONTYPEVALUES_CELL,\n TMP_NETHOSTCONNECTIONTYPEVALUES_UNAVAILABLE,\n TMP_NETHOSTCONNECTIONTYPEVALUES_UNKNOWN,\n]);\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for NetHostConnectionSubtypeValues enum definition\n *\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n * ---------------------------------------------------------------------------------------------------------- */\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifable export names for some package types\nconst TMP_NETHOSTCONNECTIONSUBTYPEVALUES_GPRS = 'gprs';\nconst TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EDGE = 'edge';\nconst TMP_NETHOSTCONNECTIONSUBTYPEVALUES_UMTS = 'umts';\nconst TMP_NETHOSTCONNECTIONSUBTYPEVALUES_CDMA = 'cdma';\nconst TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_0 = 'evdo_0';\nconst TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_A = 'evdo_a';\nconst TMP_NETHOSTCONNECTIONSUBTYPEVALUES_CDMA2000_1XRTT = 'cdma2000_1xrtt';\nconst TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSDPA = 'hsdpa';\nconst TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSUPA = 'hsupa';\nconst TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSPA = 'hspa';\nconst TMP_NETHOSTCONNECTIONSUBTYPEVALUES_IDEN = 'iden';\nconst TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_B = 'evdo_b';\nconst TMP_NETHOSTCONNECTIONSUBTYPEVALUES_LTE = 'lte';\nconst TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EHRPD = 'ehrpd';\nconst TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSPAP = 'hspap';\nconst TMP_NETHOSTCONNECTIONSUBTYPEVALUES_GSM = 'gsm';\nconst TMP_NETHOSTCONNECTIONSUBTYPEVALUES_TD_SCDMA = 'td_scdma';\nconst TMP_NETHOSTCONNECTIONSUBTYPEVALUES_IWLAN = 'iwlan';\nconst TMP_NETHOSTCONNECTIONSUBTYPEVALUES_NR = 'nr';\nconst TMP_NETHOSTCONNECTIONSUBTYPEVALUES_NRNSA = 'nrnsa';\nconst TMP_NETHOSTCONNECTIONSUBTYPEVALUES_LTE_CA = 'lte_ca';\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n */\nexports.NETHOSTCONNECTIONSUBTYPEVALUES_GPRS = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_GPRS;\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n */\nexports.NETHOSTCONNECTIONSUBTYPEVALUES_EDGE = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EDGE;\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n */\nexports.NETHOSTCONNECTIONSUBTYPEVALUES_UMTS = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_UMTS;\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n */\nexports.NETHOSTCONNECTIONSUBTYPEVALUES_CDMA = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_CDMA;\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n */\nexports.NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_0 = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_0;\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n */\nexports.NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_A = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_A;\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n */\nexports.NETHOSTCONNECTIONSUBTYPEVALUES_CDMA2000_1XRTT = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_CDMA2000_1XRTT;\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n */\nexports.NETHOSTCONNECTIONSUBTYPEVALUES_HSDPA = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSDPA;\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n */\nexports.NETHOSTCONNECTIONSUBTYPEVALUES_HSUPA = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSUPA;\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n */\nexports.NETHOSTCONNECTIONSUBTYPEVALUES_HSPA = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSPA;\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n */\nexports.NETHOSTCONNECTIONSUBTYPEVALUES_IDEN = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_IDEN;\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n */\nexports.NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_B = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_B;\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n */\nexports.NETHOSTCONNECTIONSUBTYPEVALUES_LTE = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_LTE;\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n */\nexports.NETHOSTCONNECTIONSUBTYPEVALUES_EHRPD = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EHRPD;\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n */\nexports.NETHOSTCONNECTIONSUBTYPEVALUES_HSPAP = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSPAP;\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n */\nexports.NETHOSTCONNECTIONSUBTYPEVALUES_GSM = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_GSM;\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n */\nexports.NETHOSTCONNECTIONSUBTYPEVALUES_TD_SCDMA = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_TD_SCDMA;\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n */\nexports.NETHOSTCONNECTIONSUBTYPEVALUES_IWLAN = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_IWLAN;\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n */\nexports.NETHOSTCONNECTIONSUBTYPEVALUES_NR = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_NR;\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n */\nexports.NETHOSTCONNECTIONSUBTYPEVALUES_NRNSA = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_NRNSA;\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n */\nexports.NETHOSTCONNECTIONSUBTYPEVALUES_LTE_CA = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_LTE_CA;\n/**\n * The constant map of values for NetHostConnectionSubtypeValues.\n * @deprecated Use the NETHOSTCONNECTIONSUBTYPEVALUES_XXXXX constants rather than the NetHostConnectionSubtypeValues.XXXXX for bundle minification.\n */\nexports.NetHostConnectionSubtypeValues = \n/*#__PURE__*/ (0, utils_1.createConstMap)([\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_GPRS,\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EDGE,\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_UMTS,\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_CDMA,\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_0,\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_A,\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_CDMA2000_1XRTT,\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSDPA,\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSUPA,\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSPA,\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_IDEN,\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_B,\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_LTE,\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EHRPD,\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSPAP,\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_GSM,\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_TD_SCDMA,\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_IWLAN,\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_NR,\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_NRNSA,\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_LTE_CA,\n]);\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for HttpFlavorValues enum definition\n *\n * Kind of HTTP protocol used.\n *\n * Note: If `net.transport` is not specified, it can be assumed to be `IP.TCP` except if `http.flavor` is `QUIC`, in which case `IP.UDP` is assumed.\n * ---------------------------------------------------------------------------------------------------------- */\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifable export names for some package types\nconst TMP_HTTPFLAVORVALUES_HTTP_1_0 = '1.0';\nconst TMP_HTTPFLAVORVALUES_HTTP_1_1 = '1.1';\nconst TMP_HTTPFLAVORVALUES_HTTP_2_0 = '2.0';\nconst TMP_HTTPFLAVORVALUES_SPDY = 'SPDY';\nconst TMP_HTTPFLAVORVALUES_QUIC = 'QUIC';\n/**\n * Kind of HTTP protocol used.\n *\n * Note: If `net.transport` is not specified, it can be assumed to be `IP.TCP` except if `http.flavor` is `QUIC`, in which case `IP.UDP` is assumed.\n */\nexports.HTTPFLAVORVALUES_HTTP_1_0 = TMP_HTTPFLAVORVALUES_HTTP_1_0;\n/**\n * Kind of HTTP protocol used.\n *\n * Note: If `net.transport` is not specified, it can be assumed to be `IP.TCP` except if `http.flavor` is `QUIC`, in which case `IP.UDP` is assumed.\n */\nexports.HTTPFLAVORVALUES_HTTP_1_1 = TMP_HTTPFLAVORVALUES_HTTP_1_1;\n/**\n * Kind of HTTP protocol used.\n *\n * Note: If `net.transport` is not specified, it can be assumed to be `IP.TCP` except if `http.flavor` is `QUIC`, in which case `IP.UDP` is assumed.\n */\nexports.HTTPFLAVORVALUES_HTTP_2_0 = TMP_HTTPFLAVORVALUES_HTTP_2_0;\n/**\n * Kind of HTTP protocol used.\n *\n * Note: If `net.transport` is not specified, it can be assumed to be `IP.TCP` except if `http.flavor` is `QUIC`, in which case `IP.UDP` is assumed.\n */\nexports.HTTPFLAVORVALUES_SPDY = TMP_HTTPFLAVORVALUES_SPDY;\n/**\n * Kind of HTTP protocol used.\n *\n * Note: If `net.transport` is not specified, it can be assumed to be `IP.TCP` except if `http.flavor` is `QUIC`, in which case `IP.UDP` is assumed.\n */\nexports.HTTPFLAVORVALUES_QUIC = TMP_HTTPFLAVORVALUES_QUIC;\n/**\n * The constant map of values for HttpFlavorValues.\n * @deprecated Use the HTTPFLAVORVALUES_XXXXX constants rather than the HttpFlavorValues.XXXXX for bundle minification.\n */\nexports.HttpFlavorValues = {\n HTTP_1_0: TMP_HTTPFLAVORVALUES_HTTP_1_0,\n HTTP_1_1: TMP_HTTPFLAVORVALUES_HTTP_1_1,\n HTTP_2_0: TMP_HTTPFLAVORVALUES_HTTP_2_0,\n SPDY: TMP_HTTPFLAVORVALUES_SPDY,\n QUIC: TMP_HTTPFLAVORVALUES_QUIC,\n};\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for MessagingDestinationKindValues enum definition\n *\n * The kind of message destination.\n * ---------------------------------------------------------------------------------------------------------- */\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifable export names for some package types\nconst TMP_MESSAGINGDESTINATIONKINDVALUES_QUEUE = 'queue';\nconst TMP_MESSAGINGDESTINATIONKINDVALUES_TOPIC = 'topic';\n/**\n * The kind of message destination.\n */\nexports.MESSAGINGDESTINATIONKINDVALUES_QUEUE = TMP_MESSAGINGDESTINATIONKINDVALUES_QUEUE;\n/**\n * The kind of message destination.\n */\nexports.MESSAGINGDESTINATIONKINDVALUES_TOPIC = TMP_MESSAGINGDESTINATIONKINDVALUES_TOPIC;\n/**\n * The constant map of values for MessagingDestinationKindValues.\n * @deprecated Use the MESSAGINGDESTINATIONKINDVALUES_XXXXX constants rather than the MessagingDestinationKindValues.XXXXX for bundle minification.\n */\nexports.MessagingDestinationKindValues = \n/*#__PURE__*/ (0, utils_1.createConstMap)([\n TMP_MESSAGINGDESTINATIONKINDVALUES_QUEUE,\n TMP_MESSAGINGDESTINATIONKINDVALUES_TOPIC,\n]);\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for MessagingOperationValues enum definition\n *\n * A string identifying the kind of message consumption as defined in the [Operation names](#operation-names) section above. If the operation is "send", this attribute MUST NOT be set, since the operation can be inferred from the span kind in that case.\n * ---------------------------------------------------------------------------------------------------------- */\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifable export names for some package types\nconst TMP_MESSAGINGOPERATIONVALUES_RECEIVE = 'receive';\nconst TMP_MESSAGINGOPERATIONVALUES_PROCESS = 'process';\n/**\n * A string identifying the kind of message consumption as defined in the [Operation names](#operation-names) section above. If the operation is "send", this attribute MUST NOT be set, since the operation can be inferred from the span kind in that case.\n */\nexports.MESSAGINGOPERATIONVALUES_RECEIVE = TMP_MESSAGINGOPERATIONVALUES_RECEIVE;\n/**\n * A string identifying the kind of message consumption as defined in the [Operation names](#operation-names) section above. If the operation is "send", this attribute MUST NOT be set, since the operation can be inferred from the span kind in that case.\n */\nexports.MESSAGINGOPERATIONVALUES_PROCESS = TMP_MESSAGINGOPERATIONVALUES_PROCESS;\n/**\n * The constant map of values for MessagingOperationValues.\n * @deprecated Use the MESSAGINGOPERATIONVALUES_XXXXX constants rather than the MessagingOperationValues.XXXXX for bundle minification.\n */\nexports.MessagingOperationValues = \n/*#__PURE__*/ (0, utils_1.createConstMap)([\n TMP_MESSAGINGOPERATIONVALUES_RECEIVE,\n TMP_MESSAGINGOPERATIONVALUES_PROCESS,\n]);\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for RpcGrpcStatusCodeValues enum definition\n *\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n * ---------------------------------------------------------------------------------------------------------- */\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifable export names for some package types\nconst TMP_RPCGRPCSTATUSCODEVALUES_OK = 0;\nconst TMP_RPCGRPCSTATUSCODEVALUES_CANCELLED = 1;\nconst TMP_RPCGRPCSTATUSCODEVALUES_UNKNOWN = 2;\nconst TMP_RPCGRPCSTATUSCODEVALUES_INVALID_ARGUMENT = 3;\nconst TMP_RPCGRPCSTATUSCODEVALUES_DEADLINE_EXCEEDED = 4;\nconst TMP_RPCGRPCSTATUSCODEVALUES_NOT_FOUND = 5;\nconst TMP_RPCGRPCSTATUSCODEVALUES_ALREADY_EXISTS = 6;\nconst TMP_RPCGRPCSTATUSCODEVALUES_PERMISSION_DENIED = 7;\nconst TMP_RPCGRPCSTATUSCODEVALUES_RESOURCE_EXHAUSTED = 8;\nconst TMP_RPCGRPCSTATUSCODEVALUES_FAILED_PRECONDITION = 9;\nconst TMP_RPCGRPCSTATUSCODEVALUES_ABORTED = 10;\nconst TMP_RPCGRPCSTATUSCODEVALUES_OUT_OF_RANGE = 11;\nconst TMP_RPCGRPCSTATUSCODEVALUES_UNIMPLEMENTED = 12;\nconst TMP_RPCGRPCSTATUSCODEVALUES_INTERNAL = 13;\nconst TMP_RPCGRPCSTATUSCODEVALUES_UNAVAILABLE = 14;\nconst TMP_RPCGRPCSTATUSCODEVALUES_DATA_LOSS = 15;\nconst TMP_RPCGRPCSTATUSCODEVALUES_UNAUTHENTICATED = 16;\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n */\nexports.RPCGRPCSTATUSCODEVALUES_OK = TMP_RPCGRPCSTATUSCODEVALUES_OK;\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n */\nexports.RPCGRPCSTATUSCODEVALUES_CANCELLED = TMP_RPCGRPCSTATUSCODEVALUES_CANCELLED;\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n */\nexports.RPCGRPCSTATUSCODEVALUES_UNKNOWN = TMP_RPCGRPCSTATUSCODEVALUES_UNKNOWN;\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n */\nexports.RPCGRPCSTATUSCODEVALUES_INVALID_ARGUMENT = TMP_RPCGRPCSTATUSCODEVALUES_INVALID_ARGUMENT;\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n */\nexports.RPCGRPCSTATUSCODEVALUES_DEADLINE_EXCEEDED = TMP_RPCGRPCSTATUSCODEVALUES_DEADLINE_EXCEEDED;\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n */\nexports.RPCGRPCSTATUSCODEVALUES_NOT_FOUND = TMP_RPCGRPCSTATUSCODEVALUES_NOT_FOUND;\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n */\nexports.RPCGRPCSTATUSCODEVALUES_ALREADY_EXISTS = TMP_RPCGRPCSTATUSCODEVALUES_ALREADY_EXISTS;\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n */\nexports.RPCGRPCSTATUSCODEVALUES_PERMISSION_DENIED = TMP_RPCGRPCSTATUSCODEVALUES_PERMISSION_DENIED;\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n */\nexports.RPCGRPCSTATUSCODEVALUES_RESOURCE_EXHAUSTED = TMP_RPCGRPCSTATUSCODEVALUES_RESOURCE_EXHAUSTED;\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n */\nexports.RPCGRPCSTATUSCODEVALUES_FAILED_PRECONDITION = TMP_RPCGRPCSTATUSCODEVALUES_FAILED_PRECONDITION;\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n */\nexports.RPCGRPCSTATUSCODEVALUES_ABORTED = TMP_RPCGRPCSTATUSCODEVALUES_ABORTED;\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n */\nexports.RPCGRPCSTATUSCODEVALUES_OUT_OF_RANGE = TMP_RPCGRPCSTATUSCODEVALUES_OUT_OF_RANGE;\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n */\nexports.RPCGRPCSTATUSCODEVALUES_UNIMPLEMENTED = TMP_RPCGRPCSTATUSCODEVALUES_UNIMPLEMENTED;\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n */\nexports.RPCGRPCSTATUSCODEVALUES_INTERNAL = TMP_RPCGRPCSTATUSCODEVALUES_INTERNAL;\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n */\nexports.RPCGRPCSTATUSCODEVALUES_UNAVAILABLE = TMP_RPCGRPCSTATUSCODEVALUES_UNAVAILABLE;\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n */\nexports.RPCGRPCSTATUSCODEVALUES_DATA_LOSS = TMP_RPCGRPCSTATUSCODEVALUES_DATA_LOSS;\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n */\nexports.RPCGRPCSTATUSCODEVALUES_UNAUTHENTICATED = TMP_RPCGRPCSTATUSCODEVALUES_UNAUTHENTICATED;\n/**\n * The constant map of values for RpcGrpcStatusCodeValues.\n * @deprecated Use the RPCGRPCSTATUSCODEVALUES_XXXXX constants rather than the RpcGrpcStatusCodeValues.XXXXX for bundle minification.\n */\nexports.RpcGrpcStatusCodeValues = {\n OK: TMP_RPCGRPCSTATUSCODEVALUES_OK,\n CANCELLED: TMP_RPCGRPCSTATUSCODEVALUES_CANCELLED,\n UNKNOWN: TMP_RPCGRPCSTATUSCODEVALUES_UNKNOWN,\n INVALID_ARGUMENT: TMP_RPCGRPCSTATUSCODEVALUES_INVALID_ARGUMENT,\n DEADLINE_EXCEEDED: TMP_RPCGRPCSTATUSCODEVALUES_DEADLINE_EXCEEDED,\n NOT_FOUND: TMP_RPCGRPCSTATUSCODEVALUES_NOT_FOUND,\n ALREADY_EXISTS: TMP_RPCGRPCSTATUSCODEVALUES_ALREADY_EXISTS,\n PERMISSION_DENIED: TMP_RPCGRPCSTATUSCODEVALUES_PERMISSION_DENIED,\n RESOURCE_EXHAUSTED: TMP_RPCGRPCSTATUSCODEVALUES_RESOURCE_EXHAUSTED,\n FAILED_PRECONDITION: TMP_RPCGRPCSTATUSCODEVALUES_FAILED_PRECONDITION,\n ABORTED: TMP_RPCGRPCSTATUSCODEVALUES_ABORTED,\n OUT_OF_RANGE: TMP_RPCGRPCSTATUSCODEVALUES_OUT_OF_RANGE,\n UNIMPLEMENTED: TMP_RPCGRPCSTATUSCODEVALUES_UNIMPLEMENTED,\n INTERNAL: TMP_RPCGRPCSTATUSCODEVALUES_INTERNAL,\n UNAVAILABLE: TMP_RPCGRPCSTATUSCODEVALUES_UNAVAILABLE,\n DATA_LOSS: TMP_RPCGRPCSTATUSCODEVALUES_DATA_LOSS,\n UNAUTHENTICATED: TMP_RPCGRPCSTATUSCODEVALUES_UNAUTHENTICATED,\n};\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for MessageTypeValues enum definition\n *\n * Whether this is a received or sent message.\n * ---------------------------------------------------------------------------------------------------------- */\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifable export names for some package types\nconst TMP_MESSAGETYPEVALUES_SENT = 'SENT';\nconst TMP_MESSAGETYPEVALUES_RECEIVED = 'RECEIVED';\n/**\n * Whether this is a received or sent message.\n */\nexports.MESSAGETYPEVALUES_SENT = TMP_MESSAGETYPEVALUES_SENT;\n/**\n * Whether this is a received or sent message.\n */\nexports.MESSAGETYPEVALUES_RECEIVED = TMP_MESSAGETYPEVALUES_RECEIVED;\n/**\n * The constant map of values for MessageTypeValues.\n * @deprecated Use the MESSAGETYPEVALUES_XXXXX constants rather than the MessageTypeValues.XXXXX for bundle minification.\n */\nexports.MessageTypeValues = \n/*#__PURE__*/ (0, utils_1.createConstMap)([\n TMP_MESSAGETYPEVALUES_SENT,\n TMP_MESSAGETYPEVALUES_RECEIVED,\n]);\n//# sourceMappingURL=SemanticAttributes.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n__exportStar(require(\"./SemanticAttributes\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\r\nmodule.exports = asPromise;\r\n\r\n/**\r\n * Callback as used by {@link util.asPromise}.\r\n * @typedef asPromiseCallback\r\n * @type {function}\r\n * @param {Error|null} error Error, if any\r\n * @param {...*} params Additional arguments\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Returns a promise from a node-style callback function.\r\n * @memberof util\r\n * @param {asPromiseCallback} fn Function to call\r\n * @param {*} ctx Function context\r\n * @param {...*} params Function arguments\r\n * @returns {Promise<*>} Promisified function\r\n */\r\nfunction asPromise(fn, ctx/*, varargs */) {\r\n var params = new Array(arguments.length - 1),\r\n offset = 0,\r\n index = 2,\r\n pending = true;\r\n while (index < arguments.length)\r\n params[offset++] = arguments[index++];\r\n return new Promise(function executor(resolve, reject) {\r\n params[offset] = function callback(err/*, varargs */) {\r\n if (pending) {\r\n pending = false;\r\n if (err)\r\n reject(err);\r\n else {\r\n var params = new Array(arguments.length - 1),\r\n offset = 0;\r\n while (offset < params.length)\r\n params[offset++] = arguments[offset];\r\n resolve.apply(null, params);\r\n }\r\n }\r\n };\r\n try {\r\n fn.apply(ctx || null, params);\r\n } catch (err) {\r\n if (pending) {\r\n pending = false;\r\n reject(err);\r\n }\r\n }\r\n });\r\n}\r\n","\"use strict\";\r\n\r\n/**\r\n * A minimal base64 implementation for number arrays.\r\n * @memberof util\r\n * @namespace\r\n */\r\nvar base64 = exports;\r\n\r\n/**\r\n * Calculates the byte length of a base64 encoded string.\r\n * @param {string} string Base64 encoded string\r\n * @returns {number} Byte length\r\n */\r\nbase64.length = function length(string) {\r\n var p = string.length;\r\n if (!p)\r\n return 0;\r\n var n = 0;\r\n while (--p % 4 > 1 && string.charAt(p) === \"=\")\r\n ++n;\r\n return Math.ceil(string.length * 3) / 4 - n;\r\n};\r\n\r\n// Base64 encoding table\r\nvar b64 = new Array(64);\r\n\r\n// Base64 decoding table\r\nvar s64 = new Array(123);\r\n\r\n// 65..90, 97..122, 48..57, 43, 47\r\nfor (var i = 0; i < 64;)\r\n s64[b64[i] = i < 26 ? i + 65 : i < 52 ? i + 71 : i < 62 ? i - 4 : i - 59 | 43] = i++;\r\n\r\n/**\r\n * Encodes a buffer to a base64 encoded string.\r\n * @param {Uint8Array} buffer Source buffer\r\n * @param {number} start Source start\r\n * @param {number} end Source end\r\n * @returns {string} Base64 encoded string\r\n */\r\nbase64.encode = function encode(buffer, start, end) {\r\n var parts = null,\r\n chunk = [];\r\n var i = 0, // output index\r\n j = 0, // goto index\r\n t; // temporary\r\n while (start < end) {\r\n var b = buffer[start++];\r\n switch (j) {\r\n case 0:\r\n chunk[i++] = b64[b >> 2];\r\n t = (b & 3) << 4;\r\n j = 1;\r\n break;\r\n case 1:\r\n chunk[i++] = b64[t | b >> 4];\r\n t = (b & 15) << 2;\r\n j = 2;\r\n break;\r\n case 2:\r\n chunk[i++] = b64[t | b >> 6];\r\n chunk[i++] = b64[b & 63];\r\n j = 0;\r\n break;\r\n }\r\n if (i > 8191) {\r\n (parts || (parts = [])).push(String.fromCharCode.apply(String, chunk));\r\n i = 0;\r\n }\r\n }\r\n if (j) {\r\n chunk[i++] = b64[t];\r\n chunk[i++] = 61;\r\n if (j === 1)\r\n chunk[i++] = 61;\r\n }\r\n if (parts) {\r\n if (i)\r\n parts.push(String.fromCharCode.apply(String, chunk.slice(0, i)));\r\n return parts.join(\"\");\r\n }\r\n return String.fromCharCode.apply(String, chunk.slice(0, i));\r\n};\r\n\r\nvar invalidEncoding = \"invalid encoding\";\r\n\r\n/**\r\n * Decodes a base64 encoded string to a buffer.\r\n * @param {string} string Source string\r\n * @param {Uint8Array} buffer Destination buffer\r\n * @param {number} offset Destination offset\r\n * @returns {number} Number of bytes written\r\n * @throws {Error} If encoding is invalid\r\n */\r\nbase64.decode = function decode(string, buffer, offset) {\r\n var start = offset;\r\n var j = 0, // goto index\r\n t; // temporary\r\n for (var i = 0; i < string.length;) {\r\n var c = string.charCodeAt(i++);\r\n if (c === 61 && j > 1)\r\n break;\r\n if ((c = s64[c]) === undefined)\r\n throw Error(invalidEncoding);\r\n switch (j) {\r\n case 0:\r\n t = c;\r\n j = 1;\r\n break;\r\n case 1:\r\n buffer[offset++] = t << 2 | (c & 48) >> 4;\r\n t = c;\r\n j = 2;\r\n break;\r\n case 2:\r\n buffer[offset++] = (t & 15) << 4 | (c & 60) >> 2;\r\n t = c;\r\n j = 3;\r\n break;\r\n case 3:\r\n buffer[offset++] = (t & 3) << 6 | c;\r\n j = 0;\r\n break;\r\n }\r\n }\r\n if (j === 1)\r\n throw Error(invalidEncoding);\r\n return offset - start;\r\n};\r\n\r\n/**\r\n * Tests if the specified string appears to be base64 encoded.\r\n * @param {string} string String to test\r\n * @returns {boolean} `true` if probably base64 encoded, otherwise false\r\n */\r\nbase64.test = function test(string) {\r\n return /^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(string);\r\n};\r\n","\"use strict\";\r\nmodule.exports = codegen;\r\n\r\n/**\r\n * Begins generating a function.\r\n * @memberof util\r\n * @param {string[]} functionParams Function parameter names\r\n * @param {string} [functionName] Function name if not anonymous\r\n * @returns {Codegen} Appender that appends code to the function's body\r\n */\r\nfunction codegen(functionParams, functionName) {\r\n\r\n /* istanbul ignore if */\r\n if (typeof functionParams === \"string\") {\r\n functionName = functionParams;\r\n functionParams = undefined;\r\n }\r\n\r\n var body = [];\r\n\r\n /**\r\n * Appends code to the function's body or finishes generation.\r\n * @typedef Codegen\r\n * @type {function}\r\n * @param {string|Object.} [formatStringOrScope] Format string or, to finish the function, an object of additional scope variables, if any\r\n * @param {...*} [formatParams] Format parameters\r\n * @returns {Codegen|Function} Itself or the generated function if finished\r\n * @throws {Error} If format parameter counts do not match\r\n */\r\n\r\n function Codegen(formatStringOrScope) {\r\n // note that explicit array handling below makes this ~50% faster\r\n\r\n // finish the function\r\n if (typeof formatStringOrScope !== \"string\") {\r\n var source = toString();\r\n if (codegen.verbose)\r\n console.log(\"codegen: \" + source); // eslint-disable-line no-console\r\n source = \"return \" + source;\r\n if (formatStringOrScope) {\r\n var scopeKeys = Object.keys(formatStringOrScope),\r\n scopeParams = new Array(scopeKeys.length + 1),\r\n scopeValues = new Array(scopeKeys.length),\r\n scopeOffset = 0;\r\n while (scopeOffset < scopeKeys.length) {\r\n scopeParams[scopeOffset] = scopeKeys[scopeOffset];\r\n scopeValues[scopeOffset] = formatStringOrScope[scopeKeys[scopeOffset++]];\r\n }\r\n scopeParams[scopeOffset] = source;\r\n return Function.apply(null, scopeParams).apply(null, scopeValues); // eslint-disable-line no-new-func\r\n }\r\n return Function(source)(); // eslint-disable-line no-new-func\r\n }\r\n\r\n // otherwise append to body\r\n var formatParams = new Array(arguments.length - 1),\r\n formatOffset = 0;\r\n while (formatOffset < formatParams.length)\r\n formatParams[formatOffset] = arguments[++formatOffset];\r\n formatOffset = 0;\r\n formatStringOrScope = formatStringOrScope.replace(/%([%dfijs])/g, function replace($0, $1) {\r\n var value = formatParams[formatOffset++];\r\n switch ($1) {\r\n case \"d\": case \"f\": return String(Number(value));\r\n case \"i\": return String(Math.floor(value));\r\n case \"j\": return JSON.stringify(value);\r\n case \"s\": return String(value);\r\n }\r\n return \"%\";\r\n });\r\n if (formatOffset !== formatParams.length)\r\n throw Error(\"parameter count mismatch\");\r\n body.push(formatStringOrScope);\r\n return Codegen;\r\n }\r\n\r\n function toString(functionNameOverride) {\r\n return \"function \" + (functionNameOverride || functionName || \"\") + \"(\" + (functionParams && functionParams.join(\",\") || \"\") + \"){\\n \" + body.join(\"\\n \") + \"\\n}\";\r\n }\r\n\r\n Codegen.toString = toString;\r\n return Codegen;\r\n}\r\n\r\n/**\r\n * Begins generating a function.\r\n * @memberof util\r\n * @function codegen\r\n * @param {string} [functionName] Function name if not anonymous\r\n * @returns {Codegen} Appender that appends code to the function's body\r\n * @variation 2\r\n */\r\n\r\n/**\r\n * When set to `true`, codegen will log generated code to console. Useful for debugging.\r\n * @name util.codegen.verbose\r\n * @type {boolean}\r\n */\r\ncodegen.verbose = false;\r\n","\"use strict\";\r\nmodule.exports = EventEmitter;\r\n\r\n/**\r\n * Constructs a new event emitter instance.\r\n * @classdesc A minimal event emitter.\r\n * @memberof util\r\n * @constructor\r\n */\r\nfunction EventEmitter() {\r\n\r\n /**\r\n * Registered listeners.\r\n * @type {Object.}\r\n * @private\r\n */\r\n this._listeners = {};\r\n}\r\n\r\n/**\r\n * Registers an event listener.\r\n * @param {string} evt Event name\r\n * @param {function} fn Listener\r\n * @param {*} [ctx] Listener context\r\n * @returns {util.EventEmitter} `this`\r\n */\r\nEventEmitter.prototype.on = function on(evt, fn, ctx) {\r\n (this._listeners[evt] || (this._listeners[evt] = [])).push({\r\n fn : fn,\r\n ctx : ctx || this\r\n });\r\n return this;\r\n};\r\n\r\n/**\r\n * Removes an event listener or any matching listeners if arguments are omitted.\r\n * @param {string} [evt] Event name. Removes all listeners if omitted.\r\n * @param {function} [fn] Listener to remove. Removes all listeners of `evt` if omitted.\r\n * @returns {util.EventEmitter} `this`\r\n */\r\nEventEmitter.prototype.off = function off(evt, fn) {\r\n if (evt === undefined)\r\n this._listeners = {};\r\n else {\r\n if (fn === undefined)\r\n this._listeners[evt] = [];\r\n else {\r\n var listeners = this._listeners[evt];\r\n for (var i = 0; i < listeners.length;)\r\n if (listeners[i].fn === fn)\r\n listeners.splice(i, 1);\r\n else\r\n ++i;\r\n }\r\n }\r\n return this;\r\n};\r\n\r\n/**\r\n * Emits an event by calling its listeners with the specified arguments.\r\n * @param {string} evt Event name\r\n * @param {...*} args Arguments\r\n * @returns {util.EventEmitter} `this`\r\n */\r\nEventEmitter.prototype.emit = function emit(evt) {\r\n var listeners = this._listeners[evt];\r\n if (listeners) {\r\n var args = [],\r\n i = 1;\r\n for (; i < arguments.length;)\r\n args.push(arguments[i++]);\r\n for (i = 0; i < listeners.length;)\r\n listeners[i].fn.apply(listeners[i++].ctx, args);\r\n }\r\n return this;\r\n};\r\n","\"use strict\";\r\nmodule.exports = fetch;\r\n\r\nvar asPromise = require(\"@protobufjs/aspromise\"),\r\n inquire = require(\"@protobufjs/inquire\");\r\n\r\nvar fs = inquire(\"fs\");\r\n\r\n/**\r\n * Node-style callback as used by {@link util.fetch}.\r\n * @typedef FetchCallback\r\n * @type {function}\r\n * @param {?Error} error Error, if any, otherwise `null`\r\n * @param {string} [contents] File contents, if there hasn't been an error\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Options as used by {@link util.fetch}.\r\n * @typedef FetchOptions\r\n * @type {Object}\r\n * @property {boolean} [binary=false] Whether expecting a binary response\r\n * @property {boolean} [xhr=false] If `true`, forces the use of XMLHttpRequest\r\n */\r\n\r\n/**\r\n * Fetches the contents of a file.\r\n * @memberof util\r\n * @param {string} filename File path or url\r\n * @param {FetchOptions} options Fetch options\r\n * @param {FetchCallback} callback Callback function\r\n * @returns {undefined}\r\n */\r\nfunction fetch(filename, options, callback) {\r\n if (typeof options === \"function\") {\r\n callback = options;\r\n options = {};\r\n } else if (!options)\r\n options = {};\r\n\r\n if (!callback)\r\n return asPromise(fetch, this, filename, options); // eslint-disable-line no-invalid-this\r\n\r\n // if a node-like filesystem is present, try it first but fall back to XHR if nothing is found.\r\n if (!options.xhr && fs && fs.readFile)\r\n return fs.readFile(filename, function fetchReadFileCallback(err, contents) {\r\n return err && typeof XMLHttpRequest !== \"undefined\"\r\n ? fetch.xhr(filename, options, callback)\r\n : err\r\n ? callback(err)\r\n : callback(null, options.binary ? contents : contents.toString(\"utf8\"));\r\n });\r\n\r\n // use the XHR version otherwise.\r\n return fetch.xhr(filename, options, callback);\r\n}\r\n\r\n/**\r\n * Fetches the contents of a file.\r\n * @name util.fetch\r\n * @function\r\n * @param {string} path File path or url\r\n * @param {FetchCallback} callback Callback function\r\n * @returns {undefined}\r\n * @variation 2\r\n */\r\n\r\n/**\r\n * Fetches the contents of a file.\r\n * @name util.fetch\r\n * @function\r\n * @param {string} path File path or url\r\n * @param {FetchOptions} [options] Fetch options\r\n * @returns {Promise} Promise\r\n * @variation 3\r\n */\r\n\r\n/**/\r\nfetch.xhr = function fetch_xhr(filename, options, callback) {\r\n var xhr = new XMLHttpRequest();\r\n xhr.onreadystatechange /* works everywhere */ = function fetchOnReadyStateChange() {\r\n\r\n if (xhr.readyState !== 4)\r\n return undefined;\r\n\r\n // local cors security errors return status 0 / empty string, too. afaik this cannot be\r\n // reliably distinguished from an actually empty file for security reasons. feel free\r\n // to send a pull request if you are aware of a solution.\r\n if (xhr.status !== 0 && xhr.status !== 200)\r\n return callback(Error(\"status \" + xhr.status));\r\n\r\n // if binary data is expected, make sure that some sort of array is returned, even if\r\n // ArrayBuffers are not supported. the binary string fallback, however, is unsafe.\r\n if (options.binary) {\r\n var buffer = xhr.response;\r\n if (!buffer) {\r\n buffer = [];\r\n for (var i = 0; i < xhr.responseText.length; ++i)\r\n buffer.push(xhr.responseText.charCodeAt(i) & 255);\r\n }\r\n return callback(null, typeof Uint8Array !== \"undefined\" ? new Uint8Array(buffer) : buffer);\r\n }\r\n return callback(null, xhr.responseText);\r\n };\r\n\r\n if (options.binary) {\r\n // ref: https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/Sending_and_Receiving_Binary_Data#Receiving_binary_data_in_older_browsers\r\n if (\"overrideMimeType\" in xhr)\r\n xhr.overrideMimeType(\"text/plain; charset=x-user-defined\");\r\n xhr.responseType = \"arraybuffer\";\r\n }\r\n\r\n xhr.open(\"GET\", filename);\r\n xhr.send();\r\n};\r\n","\"use strict\";\r\n\r\nmodule.exports = factory(factory);\r\n\r\n/**\r\n * Reads / writes floats / doubles from / to buffers.\r\n * @name util.float\r\n * @namespace\r\n */\r\n\r\n/**\r\n * Writes a 32 bit float to a buffer using little endian byte order.\r\n * @name util.float.writeFloatLE\r\n * @function\r\n * @param {number} val Value to write\r\n * @param {Uint8Array} buf Target buffer\r\n * @param {number} pos Target buffer offset\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Writes a 32 bit float to a buffer using big endian byte order.\r\n * @name util.float.writeFloatBE\r\n * @function\r\n * @param {number} val Value to write\r\n * @param {Uint8Array} buf Target buffer\r\n * @param {number} pos Target buffer offset\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Reads a 32 bit float from a buffer using little endian byte order.\r\n * @name util.float.readFloatLE\r\n * @function\r\n * @param {Uint8Array} buf Source buffer\r\n * @param {number} pos Source buffer offset\r\n * @returns {number} Value read\r\n */\r\n\r\n/**\r\n * Reads a 32 bit float from a buffer using big endian byte order.\r\n * @name util.float.readFloatBE\r\n * @function\r\n * @param {Uint8Array} buf Source buffer\r\n * @param {number} pos Source buffer offset\r\n * @returns {number} Value read\r\n */\r\n\r\n/**\r\n * Writes a 64 bit double to a buffer using little endian byte order.\r\n * @name util.float.writeDoubleLE\r\n * @function\r\n * @param {number} val Value to write\r\n * @param {Uint8Array} buf Target buffer\r\n * @param {number} pos Target buffer offset\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Writes a 64 bit double to a buffer using big endian byte order.\r\n * @name util.float.writeDoubleBE\r\n * @function\r\n * @param {number} val Value to write\r\n * @param {Uint8Array} buf Target buffer\r\n * @param {number} pos Target buffer offset\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Reads a 64 bit double from a buffer using little endian byte order.\r\n * @name util.float.readDoubleLE\r\n * @function\r\n * @param {Uint8Array} buf Source buffer\r\n * @param {number} pos Source buffer offset\r\n * @returns {number} Value read\r\n */\r\n\r\n/**\r\n * Reads a 64 bit double from a buffer using big endian byte order.\r\n * @name util.float.readDoubleBE\r\n * @function\r\n * @param {Uint8Array} buf Source buffer\r\n * @param {number} pos Source buffer offset\r\n * @returns {number} Value read\r\n */\r\n\r\n// Factory function for the purpose of node-based testing in modified global environments\r\nfunction factory(exports) {\r\n\r\n // float: typed array\r\n if (typeof Float32Array !== \"undefined\") (function() {\r\n\r\n var f32 = new Float32Array([ -0 ]),\r\n f8b = new Uint8Array(f32.buffer),\r\n le = f8b[3] === 128;\r\n\r\n function writeFloat_f32_cpy(val, buf, pos) {\r\n f32[0] = val;\r\n buf[pos ] = f8b[0];\r\n buf[pos + 1] = f8b[1];\r\n buf[pos + 2] = f8b[2];\r\n buf[pos + 3] = f8b[3];\r\n }\r\n\r\n function writeFloat_f32_rev(val, buf, pos) {\r\n f32[0] = val;\r\n buf[pos ] = f8b[3];\r\n buf[pos + 1] = f8b[2];\r\n buf[pos + 2] = f8b[1];\r\n buf[pos + 3] = f8b[0];\r\n }\r\n\r\n /* istanbul ignore next */\r\n exports.writeFloatLE = le ? writeFloat_f32_cpy : writeFloat_f32_rev;\r\n /* istanbul ignore next */\r\n exports.writeFloatBE = le ? writeFloat_f32_rev : writeFloat_f32_cpy;\r\n\r\n function readFloat_f32_cpy(buf, pos) {\r\n f8b[0] = buf[pos ];\r\n f8b[1] = buf[pos + 1];\r\n f8b[2] = buf[pos + 2];\r\n f8b[3] = buf[pos + 3];\r\n return f32[0];\r\n }\r\n\r\n function readFloat_f32_rev(buf, pos) {\r\n f8b[3] = buf[pos ];\r\n f8b[2] = buf[pos + 1];\r\n f8b[1] = buf[pos + 2];\r\n f8b[0] = buf[pos + 3];\r\n return f32[0];\r\n }\r\n\r\n /* istanbul ignore next */\r\n exports.readFloatLE = le ? readFloat_f32_cpy : readFloat_f32_rev;\r\n /* istanbul ignore next */\r\n exports.readFloatBE = le ? readFloat_f32_rev : readFloat_f32_cpy;\r\n\r\n // float: ieee754\r\n })(); else (function() {\r\n\r\n function writeFloat_ieee754(writeUint, val, buf, pos) {\r\n var sign = val < 0 ? 1 : 0;\r\n if (sign)\r\n val = -val;\r\n if (val === 0)\r\n writeUint(1 / val > 0 ? /* positive */ 0 : /* negative 0 */ 2147483648, buf, pos);\r\n else if (isNaN(val))\r\n writeUint(2143289344, buf, pos);\r\n else if (val > 3.4028234663852886e+38) // +-Infinity\r\n writeUint((sign << 31 | 2139095040) >>> 0, buf, pos);\r\n else if (val < 1.1754943508222875e-38) // denormal\r\n writeUint((sign << 31 | Math.round(val / 1.401298464324817e-45)) >>> 0, buf, pos);\r\n else {\r\n var exponent = Math.floor(Math.log(val) / Math.LN2),\r\n mantissa = Math.round(val * Math.pow(2, -exponent) * 8388608) & 8388607;\r\n writeUint((sign << 31 | exponent + 127 << 23 | mantissa) >>> 0, buf, pos);\r\n }\r\n }\r\n\r\n exports.writeFloatLE = writeFloat_ieee754.bind(null, writeUintLE);\r\n exports.writeFloatBE = writeFloat_ieee754.bind(null, writeUintBE);\r\n\r\n function readFloat_ieee754(readUint, buf, pos) {\r\n var uint = readUint(buf, pos),\r\n sign = (uint >> 31) * 2 + 1,\r\n exponent = uint >>> 23 & 255,\r\n mantissa = uint & 8388607;\r\n return exponent === 255\r\n ? mantissa\r\n ? NaN\r\n : sign * Infinity\r\n : exponent === 0 // denormal\r\n ? sign * 1.401298464324817e-45 * mantissa\r\n : sign * Math.pow(2, exponent - 150) * (mantissa + 8388608);\r\n }\r\n\r\n exports.readFloatLE = readFloat_ieee754.bind(null, readUintLE);\r\n exports.readFloatBE = readFloat_ieee754.bind(null, readUintBE);\r\n\r\n })();\r\n\r\n // double: typed array\r\n if (typeof Float64Array !== \"undefined\") (function() {\r\n\r\n var f64 = new Float64Array([-0]),\r\n f8b = new Uint8Array(f64.buffer),\r\n le = f8b[7] === 128;\r\n\r\n function writeDouble_f64_cpy(val, buf, pos) {\r\n f64[0] = val;\r\n buf[pos ] = f8b[0];\r\n buf[pos + 1] = f8b[1];\r\n buf[pos + 2] = f8b[2];\r\n buf[pos + 3] = f8b[3];\r\n buf[pos + 4] = f8b[4];\r\n buf[pos + 5] = f8b[5];\r\n buf[pos + 6] = f8b[6];\r\n buf[pos + 7] = f8b[7];\r\n }\r\n\r\n function writeDouble_f64_rev(val, buf, pos) {\r\n f64[0] = val;\r\n buf[pos ] = f8b[7];\r\n buf[pos + 1] = f8b[6];\r\n buf[pos + 2] = f8b[5];\r\n buf[pos + 3] = f8b[4];\r\n buf[pos + 4] = f8b[3];\r\n buf[pos + 5] = f8b[2];\r\n buf[pos + 6] = f8b[1];\r\n buf[pos + 7] = f8b[0];\r\n }\r\n\r\n /* istanbul ignore next */\r\n exports.writeDoubleLE = le ? writeDouble_f64_cpy : writeDouble_f64_rev;\r\n /* istanbul ignore next */\r\n exports.writeDoubleBE = le ? writeDouble_f64_rev : writeDouble_f64_cpy;\r\n\r\n function readDouble_f64_cpy(buf, pos) {\r\n f8b[0] = buf[pos ];\r\n f8b[1] = buf[pos + 1];\r\n f8b[2] = buf[pos + 2];\r\n f8b[3] = buf[pos + 3];\r\n f8b[4] = buf[pos + 4];\r\n f8b[5] = buf[pos + 5];\r\n f8b[6] = buf[pos + 6];\r\n f8b[7] = buf[pos + 7];\r\n return f64[0];\r\n }\r\n\r\n function readDouble_f64_rev(buf, pos) {\r\n f8b[7] = buf[pos ];\r\n f8b[6] = buf[pos + 1];\r\n f8b[5] = buf[pos + 2];\r\n f8b[4] = buf[pos + 3];\r\n f8b[3] = buf[pos + 4];\r\n f8b[2] = buf[pos + 5];\r\n f8b[1] = buf[pos + 6];\r\n f8b[0] = buf[pos + 7];\r\n return f64[0];\r\n }\r\n\r\n /* istanbul ignore next */\r\n exports.readDoubleLE = le ? readDouble_f64_cpy : readDouble_f64_rev;\r\n /* istanbul ignore next */\r\n exports.readDoubleBE = le ? readDouble_f64_rev : readDouble_f64_cpy;\r\n\r\n // double: ieee754\r\n })(); else (function() {\r\n\r\n function writeDouble_ieee754(writeUint, off0, off1, val, buf, pos) {\r\n var sign = val < 0 ? 1 : 0;\r\n if (sign)\r\n val = -val;\r\n if (val === 0) {\r\n writeUint(0, buf, pos + off0);\r\n writeUint(1 / val > 0 ? /* positive */ 0 : /* negative 0 */ 2147483648, buf, pos + off1);\r\n } else if (isNaN(val)) {\r\n writeUint(0, buf, pos + off0);\r\n writeUint(2146959360, buf, pos + off1);\r\n } else if (val > 1.7976931348623157e+308) { // +-Infinity\r\n writeUint(0, buf, pos + off0);\r\n writeUint((sign << 31 | 2146435072) >>> 0, buf, pos + off1);\r\n } else {\r\n var mantissa;\r\n if (val < 2.2250738585072014e-308) { // denormal\r\n mantissa = val / 5e-324;\r\n writeUint(mantissa >>> 0, buf, pos + off0);\r\n writeUint((sign << 31 | mantissa / 4294967296) >>> 0, buf, pos + off1);\r\n } else {\r\n var exponent = Math.floor(Math.log(val) / Math.LN2);\r\n if (exponent === 1024)\r\n exponent = 1023;\r\n mantissa = val * Math.pow(2, -exponent);\r\n writeUint(mantissa * 4503599627370496 >>> 0, buf, pos + off0);\r\n writeUint((sign << 31 | exponent + 1023 << 20 | mantissa * 1048576 & 1048575) >>> 0, buf, pos + off1);\r\n }\r\n }\r\n }\r\n\r\n exports.writeDoubleLE = writeDouble_ieee754.bind(null, writeUintLE, 0, 4);\r\n exports.writeDoubleBE = writeDouble_ieee754.bind(null, writeUintBE, 4, 0);\r\n\r\n function readDouble_ieee754(readUint, off0, off1, buf, pos) {\r\n var lo = readUint(buf, pos + off0),\r\n hi = readUint(buf, pos + off1);\r\n var sign = (hi >> 31) * 2 + 1,\r\n exponent = hi >>> 20 & 2047,\r\n mantissa = 4294967296 * (hi & 1048575) + lo;\r\n return exponent === 2047\r\n ? mantissa\r\n ? NaN\r\n : sign * Infinity\r\n : exponent === 0 // denormal\r\n ? sign * 5e-324 * mantissa\r\n : sign * Math.pow(2, exponent - 1075) * (mantissa + 4503599627370496);\r\n }\r\n\r\n exports.readDoubleLE = readDouble_ieee754.bind(null, readUintLE, 0, 4);\r\n exports.readDoubleBE = readDouble_ieee754.bind(null, readUintBE, 4, 0);\r\n\r\n })();\r\n\r\n return exports;\r\n}\r\n\r\n// uint helpers\r\n\r\nfunction writeUintLE(val, buf, pos) {\r\n buf[pos ] = val & 255;\r\n buf[pos + 1] = val >>> 8 & 255;\r\n buf[pos + 2] = val >>> 16 & 255;\r\n buf[pos + 3] = val >>> 24;\r\n}\r\n\r\nfunction writeUintBE(val, buf, pos) {\r\n buf[pos ] = val >>> 24;\r\n buf[pos + 1] = val >>> 16 & 255;\r\n buf[pos + 2] = val >>> 8 & 255;\r\n buf[pos + 3] = val & 255;\r\n}\r\n\r\nfunction readUintLE(buf, pos) {\r\n return (buf[pos ]\r\n | buf[pos + 1] << 8\r\n | buf[pos + 2] << 16\r\n | buf[pos + 3] << 24) >>> 0;\r\n}\r\n\r\nfunction readUintBE(buf, pos) {\r\n return (buf[pos ] << 24\r\n | buf[pos + 1] << 16\r\n | buf[pos + 2] << 8\r\n | buf[pos + 3]) >>> 0;\r\n}\r\n","\"use strict\";\r\nmodule.exports = inquire;\r\n\r\n/**\r\n * Requires a module only if available.\r\n * @memberof util\r\n * @param {string} moduleName Module to require\r\n * @returns {?Object} Required module if available and not empty, otherwise `null`\r\n */\r\nfunction inquire(moduleName) {\r\n try {\r\n var mod = eval(\"quire\".replace(/^/,\"re\"))(moduleName); // eslint-disable-line no-eval\r\n if (mod && (mod.length || Object.keys(mod).length))\r\n return mod;\r\n } catch (e) {} // eslint-disable-line no-empty\r\n return null;\r\n}\r\n","\"use strict\";\r\n\r\n/**\r\n * A minimal path module to resolve Unix, Windows and URL paths alike.\r\n * @memberof util\r\n * @namespace\r\n */\r\nvar path = exports;\r\n\r\nvar isAbsolute =\r\n/**\r\n * Tests if the specified path is absolute.\r\n * @param {string} path Path to test\r\n * @returns {boolean} `true` if path is absolute\r\n */\r\npath.isAbsolute = function isAbsolute(path) {\r\n return /^(?:\\/|\\w+:)/.test(path);\r\n};\r\n\r\nvar normalize =\r\n/**\r\n * Normalizes the specified path.\r\n * @param {string} path Path to normalize\r\n * @returns {string} Normalized path\r\n */\r\npath.normalize = function normalize(path) {\r\n path = path.replace(/\\\\/g, \"/\")\r\n .replace(/\\/{2,}/g, \"/\");\r\n var parts = path.split(\"/\"),\r\n absolute = isAbsolute(path),\r\n prefix = \"\";\r\n if (absolute)\r\n prefix = parts.shift() + \"/\";\r\n for (var i = 0; i < parts.length;) {\r\n if (parts[i] === \"..\") {\r\n if (i > 0 && parts[i - 1] !== \"..\")\r\n parts.splice(--i, 2);\r\n else if (absolute)\r\n parts.splice(i, 1);\r\n else\r\n ++i;\r\n } else if (parts[i] === \".\")\r\n parts.splice(i, 1);\r\n else\r\n ++i;\r\n }\r\n return prefix + parts.join(\"/\");\r\n};\r\n\r\n/**\r\n * Resolves the specified include path against the specified origin path.\r\n * @param {string} originPath Path to the origin file\r\n * @param {string} includePath Include path relative to origin path\r\n * @param {boolean} [alreadyNormalized=false] `true` if both paths are already known to be normalized\r\n * @returns {string} Path to the include file\r\n */\r\npath.resolve = function resolve(originPath, includePath, alreadyNormalized) {\r\n if (!alreadyNormalized)\r\n includePath = normalize(includePath);\r\n if (isAbsolute(includePath))\r\n return includePath;\r\n if (!alreadyNormalized)\r\n originPath = normalize(originPath);\r\n return (originPath = originPath.replace(/(?:\\/|^)[^/]+$/, \"\")).length ? normalize(originPath + \"/\" + includePath) : includePath;\r\n};\r\n","\"use strict\";\r\nmodule.exports = pool;\r\n\r\n/**\r\n * An allocator as used by {@link util.pool}.\r\n * @typedef PoolAllocator\r\n * @type {function}\r\n * @param {number} size Buffer size\r\n * @returns {Uint8Array} Buffer\r\n */\r\n\r\n/**\r\n * A slicer as used by {@link util.pool}.\r\n * @typedef PoolSlicer\r\n * @type {function}\r\n * @param {number} start Start offset\r\n * @param {number} end End offset\r\n * @returns {Uint8Array} Buffer slice\r\n * @this {Uint8Array}\r\n */\r\n\r\n/**\r\n * A general purpose buffer pool.\r\n * @memberof util\r\n * @function\r\n * @param {PoolAllocator} alloc Allocator\r\n * @param {PoolSlicer} slice Slicer\r\n * @param {number} [size=8192] Slab size\r\n * @returns {PoolAllocator} Pooled allocator\r\n */\r\nfunction pool(alloc, slice, size) {\r\n var SIZE = size || 8192;\r\n var MAX = SIZE >>> 1;\r\n var slab = null;\r\n var offset = SIZE;\r\n return function pool_alloc(size) {\r\n if (size < 1 || size > MAX)\r\n return alloc(size);\r\n if (offset + size > SIZE) {\r\n slab = alloc(SIZE);\r\n offset = 0;\r\n }\r\n var buf = slice.call(slab, offset, offset += size);\r\n if (offset & 7) // align to 32 bit\r\n offset = (offset | 7) + 1;\r\n return buf;\r\n };\r\n}\r\n","\"use strict\";\r\n\r\n/**\r\n * A minimal UTF8 implementation for number arrays.\r\n * @memberof util\r\n * @namespace\r\n */\r\nvar utf8 = exports;\r\n\r\n/**\r\n * Calculates the UTF8 byte length of a string.\r\n * @param {string} string String\r\n * @returns {number} Byte length\r\n */\r\nutf8.length = function utf8_length(string) {\r\n var len = 0,\r\n c = 0;\r\n for (var i = 0; i < string.length; ++i) {\r\n c = string.charCodeAt(i);\r\n if (c < 128)\r\n len += 1;\r\n else if (c < 2048)\r\n len += 2;\r\n else if ((c & 0xFC00) === 0xD800 && (string.charCodeAt(i + 1) & 0xFC00) === 0xDC00) {\r\n ++i;\r\n len += 4;\r\n } else\r\n len += 3;\r\n }\r\n return len;\r\n};\r\n\r\n/**\r\n * Reads UTF8 bytes as a string.\r\n * @param {Uint8Array} buffer Source buffer\r\n * @param {number} start Source start\r\n * @param {number} end Source end\r\n * @returns {string} String read\r\n */\r\nutf8.read = function utf8_read(buffer, start, end) {\r\n var len = end - start;\r\n if (len < 1)\r\n return \"\";\r\n var parts = null,\r\n chunk = [],\r\n i = 0, // char offset\r\n t; // temporary\r\n while (start < end) {\r\n t = buffer[start++];\r\n if (t < 128)\r\n chunk[i++] = t;\r\n else if (t > 191 && t < 224)\r\n chunk[i++] = (t & 31) << 6 | buffer[start++] & 63;\r\n else if (t > 239 && t < 365) {\r\n t = ((t & 7) << 18 | (buffer[start++] & 63) << 12 | (buffer[start++] & 63) << 6 | buffer[start++] & 63) - 0x10000;\r\n chunk[i++] = 0xD800 + (t >> 10);\r\n chunk[i++] = 0xDC00 + (t & 1023);\r\n } else\r\n chunk[i++] = (t & 15) << 12 | (buffer[start++] & 63) << 6 | buffer[start++] & 63;\r\n if (i > 8191) {\r\n (parts || (parts = [])).push(String.fromCharCode.apply(String, chunk));\r\n i = 0;\r\n }\r\n }\r\n if (parts) {\r\n if (i)\r\n parts.push(String.fromCharCode.apply(String, chunk.slice(0, i)));\r\n return parts.join(\"\");\r\n }\r\n return String.fromCharCode.apply(String, chunk.slice(0, i));\r\n};\r\n\r\n/**\r\n * Writes a string as UTF8 bytes.\r\n * @param {string} string Source string\r\n * @param {Uint8Array} buffer Destination buffer\r\n * @param {number} offset Destination offset\r\n * @returns {number} Bytes written\r\n */\r\nutf8.write = function utf8_write(string, buffer, offset) {\r\n var start = offset,\r\n c1, // character 1\r\n c2; // character 2\r\n for (var i = 0; i < string.length; ++i) {\r\n c1 = string.charCodeAt(i);\r\n if (c1 < 128) {\r\n buffer[offset++] = c1;\r\n } else if (c1 < 2048) {\r\n buffer[offset++] = c1 >> 6 | 192;\r\n buffer[offset++] = c1 & 63 | 128;\r\n } else if ((c1 & 0xFC00) === 0xD800 && ((c2 = string.charCodeAt(i + 1)) & 0xFC00) === 0xDC00) {\r\n c1 = 0x10000 + ((c1 & 0x03FF) << 10) + (c2 & 0x03FF);\r\n ++i;\r\n buffer[offset++] = c1 >> 18 | 240;\r\n buffer[offset++] = c1 >> 12 & 63 | 128;\r\n buffer[offset++] = c1 >> 6 & 63 | 128;\r\n buffer[offset++] = c1 & 63 | 128;\r\n } else {\r\n buffer[offset++] = c1 >> 12 | 224;\r\n buffer[offset++] = c1 >> 6 & 63 | 128;\r\n buffer[offset++] = c1 & 63 | 128;\r\n }\r\n }\r\n return offset - start;\r\n};\r\n","var register = require('./lib/register')\nvar addHook = require('./lib/add')\nvar removeHook = require('./lib/remove')\n\n// bind with array of arguments: https://stackoverflow.com/a/21792913\nvar bind = Function.bind\nvar bindable = bind.bind(bind)\n\nfunction bindApi (hook, state, name) {\n var removeHookRef = bindable(removeHook, null).apply(null, name ? [state, name] : [state])\n hook.api = { remove: removeHookRef }\n hook.remove = removeHookRef\n\n ;['before', 'error', 'after', 'wrap'].forEach(function (kind) {\n var args = name ? [state, kind, name] : [state, kind]\n hook[kind] = hook.api[kind] = bindable(addHook, null).apply(null, args)\n })\n}\n\nfunction HookSingular () {\n var singularHookName = 'h'\n var singularHookState = {\n registry: {}\n }\n var singularHook = register.bind(null, singularHookState, singularHookName)\n bindApi(singularHook, singularHookState, singularHookName)\n return singularHook\n}\n\nfunction HookCollection () {\n var state = {\n registry: {}\n }\n\n var hook = register.bind(null, state)\n bindApi(hook, state)\n\n return hook\n}\n\nvar collectionHookDeprecationMessageDisplayed = false\nfunction Hook () {\n if (!collectionHookDeprecationMessageDisplayed) {\n console.warn('[before-after-hook]: \"Hook()\" repurposing warning, use \"Hook.Collection()\". Read more: https://git.io/upgrade-before-after-hook-to-1.4')\n collectionHookDeprecationMessageDisplayed = true\n }\n return HookCollection()\n}\n\nHook.Singular = HookSingular.bind()\nHook.Collection = HookCollection.bind()\n\nmodule.exports = Hook\n// expose constructors as a named property for TypeScript\nmodule.exports.Hook = Hook\nmodule.exports.Singular = Hook.Singular\nmodule.exports.Collection = Hook.Collection\n","module.exports = addHook;\n\nfunction addHook(state, kind, name, hook) {\n var orig = hook;\n if (!state.registry[name]) {\n state.registry[name] = [];\n }\n\n if (kind === \"before\") {\n hook = function (method, options) {\n return Promise.resolve()\n .then(orig.bind(null, options))\n .then(method.bind(null, options));\n };\n }\n\n if (kind === \"after\") {\n hook = function (method, options) {\n var result;\n return Promise.resolve()\n .then(method.bind(null, options))\n .then(function (result_) {\n result = result_;\n return orig(result, options);\n })\n .then(function () {\n return result;\n });\n };\n }\n\n if (kind === \"error\") {\n hook = function (method, options) {\n return Promise.resolve()\n .then(method.bind(null, options))\n .catch(function (error) {\n return orig(error, options);\n });\n };\n }\n\n state.registry[name].push({\n hook: hook,\n orig: orig,\n });\n}\n","module.exports = register;\n\nfunction register(state, name, method, options) {\n if (typeof method !== \"function\") {\n throw new Error(\"method for before hook must be a function\");\n }\n\n if (!options) {\n options = {};\n }\n\n if (Array.isArray(name)) {\n return name.reverse().reduce(function (callback, name) {\n return register.bind(null, state, name, callback, options);\n }, method)();\n }\n\n return Promise.resolve().then(function () {\n if (!state.registry[name]) {\n return method(options);\n }\n\n return state.registry[name].reduce(function (method, registered) {\n return registered.hook.bind(null, method, options);\n }, method)();\n });\n}\n","module.exports = removeHook;\n\nfunction removeHook(state, name, method) {\n if (!state.registry[name]) {\n return;\n }\n\n var index = state.registry[name]\n .map(function (registered) {\n return registered.orig;\n })\n .indexOf(method);\n\n if (index === -1) {\n return;\n }\n\n state.registry[name].splice(index, 1);\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\n\nfunction isArray(arg) {\n if (Array.isArray) {\n return Array.isArray(arg);\n }\n return objectToString(arg) === '[object Array]';\n}\nexports.isArray = isArray;\n\nfunction isBoolean(arg) {\n return typeof arg === 'boolean';\n}\nexports.isBoolean = isBoolean;\n\nfunction isNull(arg) {\n return arg === null;\n}\nexports.isNull = isNull;\n\nfunction isNullOrUndefined(arg) {\n return arg == null;\n}\nexports.isNullOrUndefined = isNullOrUndefined;\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\nexports.isNumber = isNumber;\n\nfunction isString(arg) {\n return typeof arg === 'string';\n}\nexports.isString = isString;\n\nfunction isSymbol(arg) {\n return typeof arg === 'symbol';\n}\nexports.isSymbol = isSymbol;\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\nexports.isUndefined = isUndefined;\n\nfunction isRegExp(re) {\n return objectToString(re) === '[object RegExp]';\n}\nexports.isRegExp = isRegExp;\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\nexports.isObject = isObject;\n\nfunction isDate(d) {\n return objectToString(d) === '[object Date]';\n}\nexports.isDate = isDate;\n\nfunction isError(e) {\n return (objectToString(e) === '[object Error]' || e instanceof Error);\n}\nexports.isError = isError;\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\nexports.isFunction = isFunction;\n\nfunction isPrimitive(arg) {\n return arg === null ||\n typeof arg === 'boolean' ||\n typeof arg === 'number' ||\n typeof arg === 'string' ||\n typeof arg === 'symbol' || // ES6 symbol\n typeof arg === 'undefined';\n}\nexports.isPrimitive = isPrimitive;\n\nexports.isBuffer = require('buffer').Buffer.isBuffer;\n\nfunction objectToString(o) {\n return Object.prototype.toString.call(o);\n}\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nclass Deprecation extends Error {\n constructor(message) {\n super(message); // Maintains proper stack trace (only available on V8)\n\n /* istanbul ignore next */\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n }\n\n this.name = 'Deprecation';\n }\n\n}\n\nexports.Deprecation = Deprecation;\n","'use strict';\nvar Mutation = global.MutationObserver || global.WebKitMutationObserver;\n\nvar scheduleDrain;\n\nif (process.browser) {\n if (Mutation) {\n var called = 0;\n var observer = new Mutation(nextTick);\n var element = global.document.createTextNode('');\n observer.observe(element, {\n characterData: true\n });\n scheduleDrain = function () {\n element.data = (called = ++called % 2);\n };\n } else if (!global.setImmediate && typeof global.MessageChannel !== 'undefined') {\n var channel = new global.MessageChannel();\n channel.port1.onmessage = nextTick;\n scheduleDrain = function () {\n channel.port2.postMessage(0);\n };\n } else if ('document' in global && 'onreadystatechange' in global.document.createElement('script')) {\n scheduleDrain = function () {\n\n // Create a