@pipeline-builder/api-core 5.2.6 → 5.2.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/constants/ai-providers.js +1 -1
- package/lib/constants/http-status.js +1 -1
- package/lib/constants/index.js +1 -1
- package/lib/constants/time.js +1 -1
- package/lib/errors/app-errors.js +1 -1
- package/lib/errors/index.js +1 -1
- package/lib/helpers/access-helpers.d.ts +19 -0
- package/lib/helpers/access-helpers.js +24 -4
- package/lib/helpers/content-disposition.js +1 -1
- package/lib/helpers/crud-helpers.js +1 -1
- package/lib/helpers/index.d.ts +1 -1
- package/lib/helpers/index.js +2 -2
- package/lib/helpers/org-hierarchy-http.js +1 -1
- package/lib/helpers/org-hierarchy.js +1 -1
- package/lib/helpers/restore-helpers.js +1 -1
- package/lib/helpers/sse-helpers.js +13 -2
- package/lib/helpers/support-calendar.js +1 -1
- package/lib/index.js +1 -1
- package/lib/middleware/ask-provenance.js +1 -1
- package/lib/middleware/assurance.js +1 -1
- package/lib/middleware/auth.js +3 -2
- package/lib/middleware/client-version.d.ts +45 -0
- package/lib/middleware/client-version.js +97 -0
- package/lib/middleware/deferred-quota-check.js +1 -1
- package/lib/middleware/ecosystem-guard.js +1 -1
- package/lib/middleware/index.d.ts +1 -0
- package/lib/middleware/index.js +2 -1
- package/lib/middleware/jwt-verify.js +1 -1
- package/lib/middleware/mongo-sanitize.js +1 -1
- package/lib/middleware/on-behalf.js +1 -1
- package/lib/middleware/permission-gates.js +1 -1
- package/lib/middleware/quota-exempt-routes.js +1 -1
- package/lib/middleware/revocation.js +1 -1
- package/lib/middleware/route-table.js +16 -1
- package/lib/middleware/service-tokens.js +1 -1
- package/lib/middleware/step-up.js +1 -1
- package/lib/middleware/system-org.d.ts +18 -5
- package/lib/middleware/system-org.js +19 -6
- package/lib/openapi/extend-zod.js +1 -1
- package/lib/openapi/index.js +1 -1
- package/lib/openapi/registry.js +1 -1
- package/lib/openapi/routes/ask-routes.js +1 -1
- package/lib/openapi/routes/billing-routes.js +1 -1
- package/lib/openapi/routes/image-registry-routes.js +1 -1
- package/lib/openapi/routes/index.js +1 -1
- package/lib/openapi/routes/message-routes.js +1 -1
- package/lib/openapi/routes/pipeline-routes.js +1 -1
- package/lib/openapi/routes/pipeline-template-routes.js +1 -1
- package/lib/openapi/routes/plugin-routes.js +1 -1
- package/lib/openapi/routes/quota-routes.js +1 -1
- package/lib/openapi/schema-registry.js +1 -1
- package/lib/routes/health.js +1 -1
- package/lib/routes/index.js +1 -1
- package/lib/services/ai-call-weight.js +1 -1
- package/lib/services/alert-delivery.js +1 -1
- package/lib/services/api-key-exchange.d.ts +4 -2
- package/lib/services/api-key-exchange.js +15 -8
- package/lib/services/audit-context.d.ts +3 -0
- package/lib/services/audit-context.js +2 -1
- package/lib/services/audit-spool.js +1 -1
- package/lib/services/cache-service.js +1 -1
- package/lib/services/circuit-breaker.js +1 -1
- package/lib/services/compliance-client.js +1 -1
- package/lib/services/compliance-event-subscriber.js +1 -1
- package/lib/services/durable-event-bus.js +1 -1
- package/lib/services/ecosystem-notify-client.d.ts +7 -1
- package/lib/services/ecosystem-notify-client.js +9 -3
- package/lib/services/entity-events.js +1 -1
- package/lib/services/env-redis.js +1 -1
- package/lib/services/http-client.js +19 -3
- package/lib/services/index.d.ts +1 -1
- package/lib/services/index.js +2 -2
- package/lib/services/jwks-cache.js +1 -1
- package/lib/services/leader-lock.js +1 -1
- package/lib/services/notification-channels.js +1 -1
- package/lib/services/org-ai-client.js +1 -1
- package/lib/services/pagerduty-inbound.js +1 -1
- package/lib/services/pagerduty.js +1 -1
- package/lib/services/quota-increment-batcher.js +1 -1
- package/lib/services/quota.js +1 -1
- package/lib/services/remote-audit-client.js +1 -1
- package/lib/services/retry-forever.js +1 -1
- package/lib/services/retry-strategy.js +1 -1
- package/lib/services/s3-client.js +1 -1
- package/lib/services/scheduler.js +1 -1
- package/lib/services/service-boot.js +1 -1
- package/lib/services/service-keys.js +2 -2
- package/lib/services/sse-ticket-store.js +1 -1
- package/lib/services/system-notification.js +1 -1
- package/lib/services/token-revocation.js +1 -1
- package/lib/services/version-vuln-policy.d.ts +11 -0
- package/lib/services/version-vuln-policy.js +33 -7
- package/lib/types/ai-catalog.js +1 -1
- package/lib/types/ask-proposals.d.ts +23 -0
- package/lib/types/ask-proposals.js +29 -1
- package/lib/types/audit-events.js +1 -1
- package/lib/types/build-catalog.d.ts +65 -0
- package/lib/types/build-catalog.js +95 -1
- package/lib/types/catalog-metadata.js +1 -1
- package/lib/types/common.js +1 -1
- package/lib/types/compliance-exemption.js +1 -1
- package/lib/types/ecosystem-notifications.d.ts +9 -0
- package/lib/types/ecosystem-notifications.js +15 -6
- package/lib/types/ecosystem.d.ts +1 -6
- package/lib/types/ecosystem.js +18 -5
- package/lib/types/error-codes.d.ts +3 -0
- package/lib/types/error-codes.js +6 -1
- package/lib/types/feature-flags.d.ts +17 -1
- package/lib/types/feature-flags.js +1 -1
- package/lib/types/http.js +1 -1
- package/lib/types/index.d.ts +3 -3
- package/lib/types/index.js +4 -4
- package/lib/types/metadata-keys.js +1 -1
- package/lib/types/permissions.d.ts +60 -13
- package/lib/types/permissions.js +63 -14
- package/lib/types/pipeline-template.js +1 -1
- package/lib/types/pipeline.js +1 -1
- package/lib/types/plugin-catalog.js +1 -1
- package/lib/types/plugin-health.js +1 -1
- package/lib/types/plugin-scan.d.ts +69 -0
- package/lib/types/plugin-scan.js +77 -1
- package/lib/types/quota-catalog.js +15 -2
- package/lib/types/quota-tiers.d.ts +27 -160
- package/lib/types/quota-tiers.js +47 -255
- package/lib/types/remote-audit-actions.d.ts +1 -1
- package/lib/types/remote-audit-actions.js +9 -1
- package/lib/types/reserved-tags.js +1 -1
- package/lib/types/tier-limits.d.ts +210 -0
- package/lib/types/tier-limits.js +254 -0
- package/lib/types/usage-projection.js +1 -1
- package/lib/types/visibility.js +1 -1
- package/lib/types/wire-vocabulary.d.ts +7 -0
- package/lib/types/wire-vocabulary.js +7 -1
- package/lib/utils/alias-resolver.js +1 -1
- package/lib/utils/api-key.js +1 -1
- package/lib/utils/audit.js +1 -1
- package/lib/utils/aws-scrub.js +1 -1
- package/lib/utils/compliance-attributes.js +1 -1
- package/lib/utils/concurrency-gate.d.ts +98 -0
- package/lib/utils/concurrency-gate.js +110 -0
- package/lib/utils/concurrency.js +1 -1
- package/lib/utils/crash-handlers.js +1 -1
- package/lib/utils/date.js +1 -1
- package/lib/utils/dsse.js +1 -1
- package/lib/utils/env.d.ts +11 -0
- package/lib/utils/env.js +14 -1
- package/lib/utils/headers.js +1 -1
- package/lib/utils/identity.js +1 -1
- package/lib/utils/index.d.ts +2 -0
- package/lib/utils/index.js +3 -1
- package/lib/utils/jwk.js +2 -2
- package/lib/utils/logger.js +1 -1
- package/lib/utils/metric-emitter.js +1 -1
- package/lib/utils/object.js +1 -1
- package/lib/utils/params.js +1 -1
- package/lib/utils/plugin-compliance.d.ts +9 -1
- package/lib/utils/plugin-compliance.js +1 -1
- package/lib/utils/proof-of-work.js +1 -1
- package/lib/utils/response.js +1 -1
- package/lib/utils/retention.js +1 -1
- package/lib/utils/safe-require.js +1 -1
- package/lib/utils/secret-encryption.js +1 -1
- package/lib/utils/secret-rotation.js +1 -1
- package/lib/utils/secure-compare.js +1 -1
- package/lib/utils/semver.d.ts +18 -0
- package/lib/utils/semver.js +120 -0
- package/lib/utils/sensitive-patterns.js +1 -1
- package/lib/utils/service-registry.js +1 -1
- package/lib/utils/ssrf.js +1 -1
- package/lib/validation/ai-schemas.js +1 -1
- package/lib/validation/common-schemas.js +1 -1
- package/lib/validation/dockerfile-static.js +1 -1
- package/lib/validation/index.d.ts +1 -1
- package/lib/validation/index.js +2 -2
- package/lib/validation/message-schemas.d.ts +73 -0
- package/lib/validation/message-schemas.js +63 -2
- package/lib/validation/middleware.js +1 -1
- package/lib/validation/pipeline-schemas.js +1 -1
- package/lib/validation/pipeline-template-schemas.js +1 -1
- package/lib/validation/plugin-base-images.js +1 -1
- package/lib/validation/plugin-catalog-detect.js +1 -1
- package/lib/validation/plugin-catalog-metadata.js +1 -1
- package/lib/validation/plugin-heuristics.js +1 -1
- package/lib/validation/plugin-lint.js +1 -1
- package/lib/validation/plugin-name-confusable.js +1 -1
- package/lib/validation/plugin-schemas.js +1 -1
- package/lib/validation/plugin-spec-schema.js +1 -1
- package/lib/validation/plugin-template-contract.js +1 -1
- package/package.json +11 -4
|
@@ -120,4 +120,4 @@ export function createChannelRegistry(channels) {
|
|
|
120
120
|
const byName = new Map(channels.map((c) => [c.channel, c]));
|
|
121
121
|
return (channel) => byName.get(channel) ?? null;
|
|
122
122
|
}
|
|
123
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9uLWNoYW5uZWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NlcnZpY2VzL25vdGlmaWNhdGlvbi1jaGFubmVscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBRXRDOzs7Ozs7Ozs7Ozs7Ozs7O0dBZ0JHO0FBRUgsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUVwQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDcEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBdUU3Qzs7Ozs7Ozs7O0dBU0c7QUFDSCxNQUFNLFVBQVUsb0JBQW9CLENBQ2xDLElBQUksR0FBNkIsRUFBRTtJQUVuQyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQyxHQUFNLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN4RCxPQUFPO1FBQ0wsT0FBTyxFQUFFLElBQUksQ0FBQyxJQUFJLElBQUksU0FBUztRQUMvQixLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsTUFBTTtZQUMvQixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUs7Z0JBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLGdCQUFnQixFQUFFLENBQUM7WUFDakUsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUN6QyxNQUFNLE9BQU8sR0FBMkIsRUFBRSxjQUFjLEVBQUUsa0JBQWtCLEVBQUUsQ0FBQztZQUMvRSxJQUFJLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDbEIsT0FBTyxDQUFDLGdCQUFnQixDQUFDLEdBQUcsVUFBVSxVQUFVLENBQUMsUUFBUSxFQUFFLE1B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ZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuLyoqXG4gKiBTaGFyZWQgbm90aWZpY2F0aW9uLWNoYW5uZWwgY29udHJhY3QgKyB0aGUgdHJhbnNwb3J0cyB0aGF0IGFyZSBnZW51aW5lbHkgdGhlXG4gKiBzYW1lIGV2ZXJ5d2hlcmUuXG4gKlxuICogVHdvIHNlcnZpY2VzIGhhZCBncm93biB0aGVpciBvd24gY29weSBvZiB0aGlzIChwbGF0Zm9ybSdzIGFsZXJ0IHJlbGF5IGFuZFxuICogY29tcGxpYW5jZSdzIG5vdGlmaWVyKSB3aXRoIElOQ09NUEFUSUJMRSBjb250cmFjdHMg4oCUIGB0YXJnZXQudmFsdWVgIHZzXG4gKiBgdGFyZ2V0LnVybGAsIGEgc2V2ZXJpdHkgZW51bSB2cyBhIHByaW9yaXR5IGVudW0sIGBza2lwcGVkYCBwcmVzZW50IGluIG9uZVxuICogcmVzdWx0IHNoYXBlIGFuZCBhYnNlbnQgaW4gdGhlIG90aGVyLCBhbmQgdHdvIHNlcGFyYXRlIFNTUkYgcG9zdHVyZXMgaW4gdGhlXG4gKiB0d28gd2ViaG9vayBzZW5kZXJzLiBUaGlzIG1vZHVsZSBpcyB0aGUgc2luZ2xlIGNvbnRyYWN0OyB0aGUgd2ViaG9vayBhbmRcbiAqIGVtYWlsIHRyYW5zcG9ydHMgbGl2ZSBoZXJlLlxuICpcbiAqIFdoYXQgc3RheXMgcGVyLXNlcnZpY2U6IHRoZSBgaW4tYXBwYCB0cmFuc3BvcnQgb25seS4gQ29tcGxpYW5jZSBwb3N0cyB0byB0aGVcbiAqIG1lc3NhZ2Ugc2VydmljZSBvdmVyIEhUVFA7IHBsYXRmb3JtICh3aGljaCBpcyB0aGUgYWxlcnQgaW5ncmVzcyBhbmQgbXVzdCBub3RcbiAqIGFkZCBhIG5ldHdvcmsgaG9wIHRvIGFuIGFsZXJ0IGZhbi1vdXQpIHdyaXRlcyB0aGUgc2hhcmVkIGBtZXNzYWdlc2AgdGFibGVcbiAqIGRpcmVjdGx5IHVuZGVyIGEgc3VwZXJhZG1pbiB0ZW5hbnQgY29udGV4dC4gVGhvc2UgYXJlIGdlbnVpbmVseSBkaWZmZXJlbnRcbiAqIHRyYW5zcG9ydHMsIG5vdCBkdXBsaWNhdGlvbi5cbiAqL1xuXG5pbXBvcnQgeyBjcmVhdGVIbWFjIH0gZnJvbSAnY3J5cHRvJztcblxuaW1wb3J0IHsgZXJyb3JNZXNzYWdlIH0gZnJvbSAnLi4vdXRpbHMvcmVzcG9uc2UuanMnO1xuaW1wb3J0IHsgc2FmZUZldGNoIH0gZnJvbSAnLi4vdXRpbHMvc3NyZi5qcyc7XG5cbi8qKiBJbmJveCBwcmlvcml0eSBldmVyeSBjaGFubmVsIHJlbmRlcnMgZnJvbS4gKi9cbmV4cG9ydCB0eXBlIE5vdGlmaWNhdGlvblByaW9yaXR5ID0gJ3VyZ2VudCcgfCAnaGlnaCcgfCAnbm9ybWFsJztcblxuLyoqXG4gKiBUcmFuc3BvcnQtYWdub3N0aWMgbm90aWZpY2F0aW9uIHBheWxvYWQuIENoYW5uZWxzIHJlbmRlciBmcm9tIHRoZXNlIGZpZWxkcztcbiAqIGBwYXlsb2FkYCBpcyB0aGUgZXhhY3QgSlNPTiB0aGUgZ2VuZXJpYyBgd2ViaG9va2AgY2hhbm5lbCBmb3J3YXJkcyB1bmNoYW5nZWRcbiAqIChzbyBhbiBleGlzdGluZyB3ZWJob29rIGNvbnN1bWVyIGtlZXBzIHJlY2VpdmluZyB0aGUgc2hhcGUgaXQgZXhwZWN0cykuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTm90aWZpY2F0aW9uTWVzc2FnZSB7XG4gIC8qKiBPcmcgd2hvc2UgaW5ib3ggLyBkZXN0aW5hdGlvbiByZWNlaXZlcyB0aGlzLiAqL1xuICByZWNpcGllbnRPcmdJZDogc3RyaW5nO1xuICAvKiogU2hvcnQgc3ViamVjdCBsaW5lLCBhbHJlYWR5IHByZWZpeGVkL2RlY29yYXRlZCBieSB0aGUgY2FsbGVyLiAqL1xuICBzdWJqZWN0OiBzdHJpbmc7XG4gIC8qKiBQbGFpbi10ZXh0IGJvZHkuICovXG4gIGJvZHk6IHN0cmluZztcbiAgcHJpb3JpdHk6IE5vdGlmaWNhdGlvblByaW9yaXR5O1xuICBtZXNzYWdlVHlwZTogJ2Fubm91bmNlbWVudCcgfCAnY29udmVyc2F0aW9uJztcbiAgLyoqIFN0cnVjdHVyZWQgYm9keSBmb3J3YXJkZWQgdmVyYmF0aW0gYnkgdGhlIHdlYmhvb2sgY2hhbm5lbC4gKi9cbiAgcGF5bG9hZDogdW5rbm93bjtcbiAgLyoqIFN0YWJsZSBrZXkgZm9yIGF0LWxlYXN0LW9uY2UgY2hhbm5lbHMgKGVtYWlsKSB0byBkZWR1cGUgcmV0cmllcy4gKi9cbiAgZGVkdXBlS2V5Pzogc3RyaW5nO1xufVxuXG4vKipcbiAqIENoYW5uZWwtc3BlY2lmaWMgZGVsaXZlcnkgdGFyZ2V0LiBgdmFsdWVgIGlzIHRoZSBVUkwgKHdlYmhvb2svc2xhY2spIG9yIHRoZVxuICogZW1haWwgYWRkcmVzczsgYHNlY3JldGAgaXMgdGhlIHdlYmhvb2sgSE1BQyBrZXk7IGB0YXJnZXRVc2Vyc2AgbmFycm93cyBhblxuICogZW1haWwgZmFuLW91dCAobnVsbC9hYnNlbnQgPSBldmVyeSBvcmcgYWRtaW4pLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENoYW5uZWxUYXJnZXQge1xuICB2YWx1ZT86IHN0cmluZztcbiAgc2VjcmV0Pzogc3RyaW5nO1xuICB0YXJnZXRVc2Vycz86IHN0cmluZ1tdIHwgbnVsbDtcbiAgb3JnSWQ/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogT3V0Y29tZSBvZiBvbmUgZGVsaXZlcnkuIGBza2lwcGVkYCBkaXN0aW5ndWlzaGVzIFwiaW50ZW50aW9uYWxseSBub3Qgc2VudFwiXG4gKiAoZW1haWwgZGlzYWJsZWQsIGRlZHVwZSBoaXQpIGZyb20gYSByZWFsIGZhaWx1cmUgc28gdGhlIGNhbGxlciBjYW4gY291bnQgdGhlbVxuICogYXBhcnQ7IGBjb2RlYC9gZXJyb3JgIGZlZWQgc3RydWN0dXJlZCBsb2dnaW5nIGFuZCB0aGUgYXVkaXQgdHJhaWwuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGVsaXZlcnlSZXN1bHQge1xuICBvazogYm9vbGVhbjtcbiAgc2tpcHBlZD86IGJvb2xlYW47XG4gIGNvZGU/OiBudW1iZXI7XG4gIGVycm9yPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIE9uZSBkZWxpdmVyeSB0cmFuc3BvcnQuIEdlbmVyaWMgaW4gdGhlIG1lc3NhZ2UgdHlwZSBzbyBhIHNlcnZpY2UgY2FuIGNhcnJ5XG4gKiBleHRyYSByZW5kZXJpbmcgZmllbGRzIChwbGF0Zm9ybSdzIGFsZXJ0IHNldmVyaXR5L2xhYmVscykgd2l0aG91dCBsb29zZW5pbmdcbiAqIHRoZSBzaGFyZWQgY29udHJhY3Qgb3IgY2FzdGluZy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBOb3RpZmljYXRpb25DaGFubmVsPE0gZXh0ZW5kcyBOb3RpZmljYXRpb25NZXNzYWdlID0gTm90aWZpY2F0aW9uTWVzc2FnZT4ge1xuICByZWFkb25seSBjaGFubmVsOiBzdHJpbmc7XG4gIGRlbGl2ZXIobXNnOiBNLCB0YXJnZXQ6IENoYW5uZWxUYXJnZXQsIHNpZ25hbD86IEFib3J0U2lnbmFsKTogUHJvbWlzZTxEZWxpdmVyeVJlc3VsdD47XG59XG5cbi8qKiBPcHRpb25zIGZvciB7QGxpbmsgY3JlYXRlV2ViaG9va0NoYW5uZWx9LiAqL1xuZXhwb3J0IGludGVyZmFjZSBXZWJob29rQ2hhbm5lbE9wdGlvbnM8TSBleHRlbmRzIE5vdGlmaWNhdGlvbk1lc3NhZ2UgPSBOb3RpZmljYXRpb25NZXNzYWdlPiB7XG4gIC8qKiBDaGFubmVsIG5hbWUgKGRlZmF1bHQgYCd3ZWJob29rJ2ApLiAqL1xuICBuYW1lPzogc3RyaW5nO1xuICAvKiogQWxsb3dlZCBVUkwgcHJvdG9jb2xzIChkZWZhdWx0IGh0dHBzLW9ubHkpLiAqL1xuICBwcm90b2NvbHM/OiBzdHJpbmdbXTtcbiAgLyoqIFBlci1kZWxpdmVyeSB3YWxsLWNsb2NrIGNhcCBpbiBtcy4gKi9cbiAgdGltZW91dE1zPzogbnVtYmVyO1xuICAvKiogUmVuZGVyIHRoZSBKU09OIGJvZHk7IGRlZmF1bHRzIHRvIGBtc2cucGF5bG9hZGAgZm9yd2FyZGVkIHZlcmJhdGltLiAqL1xuICByZW5kZXI/OiAobXNnOiBNKSA9PiB1bmtub3duO1xufVxuXG4vKipcbiAqIEdlbmVyaWMgb3V0Ym91bmQgd2ViaG9vayB0cmFuc3BvcnQuXG4gKlxuICogVGhlIFVSTCBpcyBvcmctY29udHJvbGxlZCwgc28gZGVsaXZlcnkgZ29lcyB0aHJvdWdoIHtAbGluayBzYWZlRmV0Y2h9OiB0aGVcbiAqIGhvc3QgaXMgcmVzb2x2ZWQgYW5kIHZldHRlZCwgdGhlIHZldHRlZCBJUCBpcyBQSU5ORUQgaW50byB0aGUgc29ja2V0IChub1xuICogRE5TLXJlYmluZGluZyB3aW5kb3cgYmV0d2VlbiB0aGUgY2hlY2sgYW5kIHRoZSBjb25uZWN0KSwgYW5kIHJlZGlyZWN0cyBhcmVcbiAqIHJlZnVzZWQg4oCUIGEgM3h4IGlzIGEgRkFJTEVEIGRlbGl2ZXJ5LCBuZXZlciBhIHBpdm90IHRvIGFuIHVudmV0dGVkIGhvc3QgYW5kXG4gKiBuZXZlciByZWNvcmRlZCBncmVlbi4gU2lnbmVkIHdpdGggYFgtUEItU2lnbmF0dXJlYCB3aGVuIHRoZSB0YXJnZXQgY2FycmllcyBhXG4gKiBzZWNyZXQ7IHRhcmdldHMgd2l0aG91dCBvbmUgKGFsZXJ0IGRlc3RpbmF0aW9ucykgc3RheSB1bnNpZ25lZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVdlYmhvb2tDaGFubmVsPE0gZXh0ZW5kcyBOb3RpZmljYXRpb25NZXNzYWdlID0gTm90aWZpY2F0aW9uTWVzc2FnZT4oXG4gIG9wdHM6IFdlYmhvb2tDaGFubmVsT3B0aW9uczxNPiA9IHt9LFxuKTogTm90aWZpY2F0aW9uQ2hhbm5lbDxNPiB7XG4gIGNvbnN0IHJlbmRlciA9IG9wdHMucmVuZGVyID8/ICgobXNnOiBNKSA9PiBtc2cucGF5bG9hZCk7XG4gIHJldHVybiB7XG4gICAgY2hhbm5lbDogb3B0cy5uYW1lID8/ICd3ZWJob29rJyxcbiAgICBhc3luYyBkZWxpdmVyKG1zZywgdGFyZ2V0LCBzaWduYWwpIHtcbiAgICAgIGlmICghdGFyZ2V0LnZhbHVlKSByZXR1cm4geyBvazogZmFsc2UsIGVycm9yOiAnbm8gd2ViaG9vayB1cmwnIH07XG4gICAgICBjb25zdCBib2R5ID0gSlNPTi5zdHJpbmdpZnkocmVuZGVyKG1zZykpO1xuICAgICAgY29uc3QgaGVhZGVyczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHsgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyB9O1xuICAgICAgaWYgKHRhcmdldC5zZWNyZXQpIHtcbiAgICAgICAgaGVhZGVyc1snWC1QQi1TaWduYXR1cmUnXSA9IGBzaGEyNTY9JHtjcmVhdGVIbWFjKCdzaGEyNTYnLCB0YXJnZXQuc2VjcmV0KS51cGRhdGUoYm9keSkuZGlnZXN0KCdoZXgnKX1gO1xuICAgICAgfVxuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgcmVzcCA9IGF3YWl0IHNhZmVGZXRjaCh0YXJnZXQudmFsdWUsIHtcbiAgICAgICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgICAgICBoZWFkZXJzLFxuICAgICAgICAgIGJvZHksXG4gICAgICAgICAgc2lnbmFsLFxuICAgICAgICAgIHByb3RvY29sczogb3B0cy5wcm90b2NvbHMsXG4gICAgICAgICAgdGltZW91dE1zOiBvcHRzLnRpbWVvdXRNcyxcbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChyZXNwLnJlZGlyZWN0ZWQpIHtcbiAgICAgICAgICByZXR1cm4geyBvazogZmFsc2UsIGNvZGU6IHJlc3Auc3RhdHVzLCBlcnJvcjogJ3dlYmhvb2sgdXJsIHJlZGlyZWN0ZWQgKHJlZnVzZWQpJyB9O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXNwLm9rID8geyBvazogdHJ1ZSwgY29kZTogcmVzcC5zdGF0dXMgfSA6IHsgb2s6IGZhbHNlLCBjb2RlOiByZXNwLnN0YXR1cyB9O1xuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIHJldHVybiB7IG9rOiBmYWxzZSwgZXJyb3I6IGVycm9yTWVzc2FnZShlcnIpIH07XG4gICAgICB9XG4gICAgfSxcbiAgfTtcbn1cblxuLyoqIEFyZ3VtZW50cyBoYW5kZWQgdG8gYW4ge0BsaW5rIEVtYWlsQ2hhbm5lbE9wdGlvbnMuc2VuZH0gaW1wbGVtZW50YXRpb24uICovXG5leHBvcnQgaW50ZXJmYWNlIEVtYWlsU2VuZFJlcXVlc3Qge1xuICAvKiogVGhlIHRhcmdldCBhZGRyZXNzLCB3aGVuIHRoZSB0cmFuc3BvcnQgYWRkcmVzc2VzIG9uZSByZWNpcGllbnQgZGlyZWN0bHkuICovXG4gIHRvPzogc3RyaW5nO1xuICAvKiogT3JnIHdob3NlIGFkbWlucy91c2VycyByZWNlaXZlIGl0LCB3aGVuIHRoZSB0cmFuc3BvcnQgcmVzb2x2ZXMgcmVjaXBpZW50cy4gKi9cbiAgb3JnSWQ6IHN0cmluZztcbiAgLyoqIE5hcnJvd2VkIHJlY2lwaWVudCBsaXN0LCBvciBudWxsIGZvciBcImV2ZXJ5IG9yZyBhZG1pblwiLiAqL1xuICB0YXJnZXRVc2Vycz86IHN0cmluZ1tdIHwgbnVsbDtcbiAgc3ViamVjdDogc3RyaW5nO1xuICB0ZXh0OiBzdHJpbmc7XG59XG5cbi8qKiBPcHRpb25zIGZvciB7QGxpbmsgY3JlYXRlRW1haWxDaGFubmVsfS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRW1haWxDaGFubmVsT3B0aW9ucyB7XG4gIC8qKiBQZXJmb3JtIHRoZSBzZW5kOyByZXNvbHZlIGZhbHNlIGZvciBhIHRyYW5zcG9ydC1sZXZlbCBmYWlsdXJlLiAqL1xuICBzZW5kOiAocmVxOiBFbWFpbFNlbmRSZXF1ZXN0KSA9PiBQcm9taXNlPGJvb2xlYW4+O1xuICAvKiogUmVwb3J0IHdoZXRoZXIgZW1haWwgaXMgY29uZmlndXJlZCBhdCBhbGwgb24gdGhpcyBkZXBsb3kgKGRlZmF1bHQ6IHllcykuICovXG4gIGVuYWJsZWQ/OiAoKSA9PiBib29sZWFuO1xuICAvKipcbiAgICogQXQtbGVhc3Qtb25jZSBkZWR1cGUgd2luZG93LiBBIHJlcGVhdCBvZiB0aGUgc2FtZSBgKGRlZHVwZUtleSwgdGFyZ2V0KWBcbiAgICogaW5zaWRlIHRoZSB3aW5kb3cgaXMgcmVwb3J0ZWQgYHsgb2s6IHRydWUsIHNraXBwZWQ6IHRydWUgfWAgcmF0aGVyIHRoYW5cbiAgICogcmUtc2VudC4gT21pdC8wIHRvIGRpc2FibGUuXG4gICAqL1xuICBkZWR1cGVUdGxNcz86IG51bWJlcjtcbn1cblxuLyoqXG4gKiBFbWFpbCB0cmFuc3BvcnQuIFRoZSBhY3R1YWwgZGVsaXZlcnkgbWVjaGFuaXNtIGlzIGluamVjdGVkIChgc2VuZGApIGJlY2F1c2VcbiAqIGl0IGxlZ2l0aW1hdGVseSBkaWZmZXJzIOKAlCBwbGF0Zm9ybSBoYXMgU01UUC9TRVMsIGNvbXBsaWFuY2UgYXNrcyBwbGF0Zm9ybSB0b1xuICogc2VuZCBvbiBpdHMgYmVoYWxmIOKAlCBidXQgdGhlIHBhcnRzIHRoYXQgd2VyZSBkdXBsaWNhdGVkLWFuZC1kcmlmdGluZyBhcmVcbiAqIGhlcmU6IHRoZSBlbmFibGVkL3NraXBwZWQgc2VtYW50aWNzIGFuZCB0aGUgYXQtbGVhc3Qtb25jZSBkZWR1cGUgd2luZG93IChhXG4gKiB3ZWJob29rLXJldHJ5aW5nIGFsZXJ0IHNvdXJjZSB3b3VsZCBvdGhlcndpc2UgcmUtbWFpbCB0aGUgc2FtZSBldmVudCkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVFbWFpbENoYW5uZWw8TSBleHRlbmRzIE5vdGlmaWNhdGlvbk1lc3NhZ2UgPSBOb3RpZmljYXRpb25NZXNzYWdlPihcbiAgb3B0czogRW1haWxDaGFubmVsT3B0aW9ucyxcbik6IE5vdGlmaWNhdGlvbkNoYW5uZWw8TT4ge1xuICBjb25zdCB0dGwgPSBvcHRzLmRlZHVwZVR0bE1zID8/IDA7XG4gIGNvbnN0IHJlY2VudCA9IG5ldyBNYXA8c3RyaW5nLCBudW1iZXI+KCk7IC8vIGRlZHVwZSBrZXkgLT4gZXhwaXJ5IChlcG9jaCBtcylcblxuICBjb25zdCBzZWVuUmVjZW50bHkgPSAoa2V5OiBzdHJpbmcpOiBib29sZWFuID0+IHtcbiAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuICAgIGZvciAoY29uc3QgW2ssIGV4cF0gb2YgcmVjZW50KSB7XG4gICAgICBpZiAoZXhwIDw9IG5vdykgcmVjZW50LmRlbGV0ZShrKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlY2VudC5oYXMoa2V5KTtcbiAgfTtcblxuICByZXR1cm4ge1xuICAgIGNoYW5uZWw6ICdlbWFpbCcsXG4gICAgYXN5bmMgZGVsaXZlcihtc2csIHRhcmdldCkge1xuICAgICAgLy8gRW1haWwgdW5jb25maWd1cmVkIG9uIHRoaXMgZGVwbG95IOKGkiByZXBvcnQgU0tJUFBFRCAobm90IGRlbGl2ZXJlZCkgc28gYVxuICAgICAgLy8gY2FsbGVyIG5ldmVyIGNsYWltcyBpdCBzZW50IHNvbWV0aGluZyBpdCBkaWRuJ3QuXG4gICAgICBpZiAob3B0cy5lbmFibGVkICYmICFvcHRzLmVuYWJsZWQoKSkge1xuICAgICAgICByZXR1cm4geyBvazogZmFsc2UsIHNraXBwZWQ6IHRydWUsIGVycm9yOiAnZW1haWwtZGlzYWJsZWQnIH07XG4gICAgICB9XG4gICAgICBjb25zdCBkZWR1cGVLZXkgPSB0dGwgPiAwICYmIG1zZy5kZWR1cGVLZXkgPyBgJHttc2cuZGVkdXBlS2V5fToke3RhcmdldC52YWx1ZSA/PyBtc2cucmVjaXBpZW50T3JnSWR9YCA6IG51bGw7XG4gICAgICBpZiAoZGVkdXBlS2V5ICYmIHNlZW5SZWNlbnRseShkZWR1cGVLZXkpKSB7XG4gICAgICAgIHJldHVybiB7IG9rOiB0cnVlLCBza2lwcGVkOiB0cnVlIH07XG4gICAgICB9XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBzZW50ID0gYXdhaXQgb3B0cy5zZW5kKHtcbiAgICAgICAgICB0bzogdGFyZ2V0LnZhbHVlLFxuICAgICAgICAgIG9yZ0lkOiBtc2cucmVjaXBpZW50T3JnSWQsXG4gICAgICAgICAgdGFyZ2V0VXNlcnM6IHRhcmdldC50YXJnZXRVc2VycyA/PyBudWxsLFxuICAgICAgICAgIHN1YmplY3Q6IG1zZy5zdWJqZWN0LFxuICAgICAgICAgIHRleHQ6IG1zZy5ib2R5LFxuICAgICAgICB9KTtcbiAgICAgICAgLy8gUmVjb3JkIG9ubHkgb24gc3VjY2Vzcywgc28gYSBmYWlsZWQgc2VuZCBpcyByZXRyaWVkIGJ5IHRoZSBuZXh0IGV2ZW50LlxuICAgICAgICBpZiAoc2VudCAmJiBkZWR1cGVLZXkpIHJlY2VudC5zZXQoZGVkdXBlS2V5LCBEYXRlLm5vdygpICsgdHRsKTtcbiAgICAgICAgcmV0dXJuIHNlbnQgPyB7IG9rOiB0cnVlIH0gOiB7IG9rOiBmYWxzZSwgZXJyb3I6ICdlbWFpbC1zZW5kLWZhaWxlZCcgfTtcbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICByZXR1cm4geyBvazogZmFsc2UsIGVycm9yOiBlcnJvck1lc3NhZ2UoZXJyKSB9O1xuICAgICAgfVxuICAgIH0sXG4gIH07XG59XG5cbi8qKlxuICogQnVpbGQgdGhlIHBlci1zZXJ2aWNlIGNoYW5uZWwgcmVnaXN0cnkuIFJldHVybnMgYSByZXNvbHZlciB0aGF0IHlpZWxkcyBgbnVsbGBcbiAqIGZvciBhbiB1bmtub3duIG5hbWUg4oCUIHRoZSBjaGFubmVsIGlzIERCIGRhdGEsIHNvIGFuIHVua25vd24gdmFsdWUgaXMgcG9zc2libGVcbiAqIGFuZCB0aGUgY2FsbGVyIGxvZ3MvY291bnRzIGl0IHJhdGhlciB0aGFuIHRocm93aW5nLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQ2hhbm5lbFJlZ2lzdHJ5PE0gZXh0ZW5kcyBOb3RpZmljYXRpb25NZXNzYWdlID0gTm90aWZpY2F0aW9uTWVzc2FnZT4oXG4gIGNoYW5uZWxzOiBOb3RpZmljYXRpb25DaGFubmVsPE0+W10sXG4pOiAoY2hhbm5lbDogc3RyaW5nKSA9PiBOb3RpZmljYXRpb25DaGFubmVsPE0+IHwgbnVsbCB7XG4gIGNvbnN0IGJ5TmFtZSA9IG5ldyBNYXAoY2hhbm5lbHMubWFwKChjKSA9PiBbYy5jaGFubmVsLCBjXSkpO1xuICByZXR1cm4gKGNoYW5uZWw6IHN0cmluZykgPT4gYnlOYW1lLmdldChjaGFubmVsKSA/PyBudWxsO1xufVxuIl19
|
|
123
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9uLWNoYW5uZWxzLmpzIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2VydmljZXMvbm90aWZpY2F0aW9uLWNoYW5uZWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7QUFFdEM7Ozs7Ozs7Ozs7Ozs7Ozs7R0FnQkc7QUFFSCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBRXBDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNwRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUF1RTdDOzs7Ozs7Ozs7R0FTRztBQUNILE1BQU0sVUFBVSxvQkFBb0IsQ0FDbEMsSUFBSSxHQUE2QixFQUFFO0lBRW5DLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDLEdBQU0sRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3hELE9BQU87UUFDTCxPQUFPLEVBQUUsSUFBSSxDQUFDLElBQUksSUFBSSxTQUFTO1FBQy9CLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxNQUFNO1lBQy9CLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSztnQkFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsQ0FBQztZQUNqRSxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQ3pDLE1BQU0sT0FBTyxHQUEyQixFQUFFLGNBQWMsRUFBRSxrQkFBa0IsRUFBRSxDQUFDO1lBQy9FLElBQUksTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUNsQixPQUFPLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxVQUFVLFVBQVUsQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FB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YnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG4vKipcbiAqIFNoYXJlZCBub3RpZmljYXRpb24tY2hhbm5lbCBjb250cmFjdCArIHRoZSB0cmFuc3BvcnRzIHRoYXQgYXJlIGdlbnVpbmVseSB0aGVcbiAqIHNhbWUgZXZlcnl3aGVyZS5cbiAqXG4gKiBUd28gc2VydmljZXMgaGFkIGdyb3duIHRoZWlyIG93biBjb3B5IG9mIHRoaXMgKHBsYXRmb3JtJ3MgYWxlcnQgcmVsYXkgYW5kXG4gKiBjb21wbGlhbmNlJ3Mgbm90aWZpZXIpIHdpdGggSU5DT01QQVRJQkxFIGNvbnRyYWN0cyDigJQgYHRhcmdldC52YWx1ZWAgdnNcbiAqIGB0YXJnZXQudXJsYCwgYSBzZXZlcml0eSBlbnVtIHZzIGEgcHJpb3JpdHkgZW51bSwgYHNraXBwZWRgIHByZXNlbnQgaW4gb25lXG4gKiByZXN1bHQgc2hhcGUgYW5kIGFic2VudCBpbiB0aGUgb3RoZXIsIGFuZCB0d28gc2VwYXJhdGUgU1NSRiBwb3N0dXJlcyBpbiB0aGVcbiAqIHR3byB3ZWJob29rIHNlbmRlcnMuIFRoaXMgbW9kdWxlIGlzIHRoZSBzaW5nbGUgY29udHJhY3Q7IHRoZSB3ZWJob29rIGFuZFxuICogZW1haWwgdHJhbnNwb3J0cyBsaXZlIGhlcmUuXG4gKlxuICogV2hhdCBzdGF5cyBwZXItc2VydmljZTogdGhlIGBpbi1hcHBgIHRyYW5zcG9ydCBvbmx5LiBDb21wbGlhbmNlIHBvc3RzIHRvIHRoZVxuICogbWVzc2FnZSBzZXJ2aWNlIG92ZXIgSFRUUDsgcGxhdGZvcm0gKHdoaWNoIGlzIHRoZSBhbGVydCBpbmdyZXNzIGFuZCBtdXN0IG5vdFxuICogYWRkIGEgbmV0d29yayBob3AgdG8gYW4gYWxlcnQgZmFuLW91dCkgd3JpdGVzIHRoZSBzaGFyZWQgYG1lc3NhZ2VzYCB0YWJsZVxuICogZGlyZWN0bHkgdW5kZXIgYSBzdXBlcmFkbWluIHRlbmFudCBjb250ZXh0LiBUaG9zZSBhcmUgZ2VudWluZWx5IGRpZmZlcmVudFxuICogdHJhbnNwb3J0cywgbm90IGR1cGxpY2F0aW9uLlxuICovXG5cbmltcG9ydCB7IGNyZWF0ZUhtYWMgfSBmcm9tICdjcnlwdG8nO1xuXG5pbXBvcnQgeyBlcnJvck1lc3NhZ2UgfSBmcm9tICcuLi91dGlscy9yZXNwb25zZS5qcyc7XG5pbXBvcnQgeyBzYWZlRmV0Y2ggfSBmcm9tICcuLi91dGlscy9zc3JmLmpzJztcblxuLyoqIEluYm94IHByaW9yaXR5IGV2ZXJ5IGNoYW5uZWwgcmVuZGVycyBmcm9tLiAqL1xuZXhwb3J0IHR5cGUgTm90aWZpY2F0aW9uUHJpb3JpdHkgPSAndXJnZW50JyB8ICdoaWdoJyB8ICdub3JtYWwnO1xuXG4vKipcbiAqIFRyYW5zcG9ydC1hZ25vc3RpYyBub3RpZmljYXRpb24gcGF5bG9hZC4gQ2hhbm5lbHMgcmVuZGVyIGZyb20gdGhlc2UgZmllbGRzO1xuICogYHBheWxvYWRgIGlzIHRoZSBleGFjdCBKU09OIHRoZSBnZW5lcmljIGB3ZWJob29rYCBjaGFubmVsIGZvcndhcmRzIHVuY2hhbmdlZFxuICogKHNvIGFuIGV4aXN0aW5nIHdlYmhvb2sgY29uc3VtZXIga2VlcHMgcmVjZWl2aW5nIHRoZSBzaGFwZSBpdCBleHBlY3RzKS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBOb3RpZmljYXRpb25NZXNzYWdlIHtcbiAgLyoqIE9yZyB3aG9zZSBpbmJveCAvIGRlc3RpbmF0aW9uIHJlY2VpdmVzIHRoaXMuICovXG4gIHJlY2lwaWVudE9yZ0lkOiBzdHJpbmc7XG4gIC8qKiBTaG9ydCBzdWJqZWN0IGxpbmUsIGFscmVhZHkgcHJlZml4ZWQvZGVjb3JhdGVkIGJ5IHRoZSBjYWxsZXIuICovXG4gIHN1YmplY3Q6IHN0cmluZztcbiAgLyoqIFBsYWluLXRleHQgYm9keS4gKi9cbiAgYm9keTogc3RyaW5nO1xuICBwcmlvcml0eTogTm90aWZpY2F0aW9uUHJpb3JpdHk7XG4gIG1lc3NhZ2VUeXBlOiAnYW5ub3VuY2VtZW50JyB8ICdjb252ZXJzYXRpb24nO1xuICAvKiogU3RydWN0dXJlZCBib2R5IGZvcndhcmRlZCB2ZXJiYXRpbSBieSB0aGUgd2ViaG9vayBjaGFubmVsLiAqL1xuICBwYXlsb2FkOiB1bmtub3duO1xuICAvKiogU3RhYmxlIGtleSBmb3IgYXQtbGVhc3Qtb25jZSBjaGFubmVscyAoZW1haWwpIHRvIGRlZHVwZSByZXRyaWVzLiAqL1xuICBkZWR1cGVLZXk/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogQ2hhbm5lbC1zcGVjaWZpYyBkZWxpdmVyeSB0YXJnZXQuIGB2YWx1ZWAgaXMgdGhlIFVSTCAod2ViaG9vay9zbGFjaykgb3IgdGhlXG4gKiBlbWFpbCBhZGRyZXNzOyBgc2VjcmV0YCBpcyB0aGUgd2ViaG9vayBITUFDIGtleTsgYHRhcmdldFVzZXJzYCBuYXJyb3dzIGFuXG4gKiBlbWFpbCBmYW4tb3V0IChudWxsL2Fic2VudCA9IGV2ZXJ5IG9yZyBhZG1pbikuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2hhbm5lbFRhcmdldCB7XG4gIHZhbHVlPzogc3RyaW5nO1xuICBzZWNyZXQ/OiBzdHJpbmc7XG4gIHRhcmdldFVzZXJzPzogc3RyaW5nW10gfCBudWxsO1xuICBvcmdJZD86IHN0cmluZztcbn1cblxuLyoqXG4gKiBPdXRjb21lIG9mIG9uZSBkZWxpdmVyeS4gYHNraXBwZWRgIGRpc3Rpbmd1aXNoZXMgXCJpbnRlbnRpb25hbGx5IG5vdCBzZW50XCJcbiAqIChlbWFpbCBkaXNhYmxlZCwgZGVkdXBlIGhpdCkgZnJvbSBhIHJlYWwgZmFpbHVyZSBzbyB0aGUgY2FsbGVyIGNhbiBjb3VudCB0aGVtXG4gKiBhcGFydDsgYGNvZGVgL2BlcnJvcmAgZmVlZCBzdHJ1Y3R1cmVkIGxvZ2dpbmcgYW5kIHRoZSBhdWRpdCB0cmFpbC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEZWxpdmVyeVJlc3VsdCB7XG4gIG9rOiBib29sZWFuO1xuICBza2lwcGVkPzogYm9vbGVhbjtcbiAgY29kZT86IG51bWJlcjtcbiAgZXJyb3I/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogT25lIGRlbGl2ZXJ5IHRyYW5zcG9ydC4gR2VuZXJpYyBpbiB0aGUgbWVzc2FnZSB0eXBlIHNvIGEgc2VydmljZSBjYW4gY2FycnlcbiAqIGV4dHJhIHJlbmRlcmluZyBmaWVsZHMgKHBsYXRmb3JtJ3MgYWxlcnQgc2V2ZXJpdHkvbGFiZWxzKSB3aXRob3V0IGxvb3NlbmluZ1xuICogdGhlIHNoYXJlZCBjb250cmFjdCBvciBjYXN0aW5nLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE5vdGlmaWNhdGlvbkNoYW5uZWw8TSBleHRlbmRzIE5vdGlmaWNhdGlvbk1lc3NhZ2UgPSBOb3RpZmljYXRpb25NZXNzYWdlPiB7XG4gIHJlYWRvbmx5IGNoYW5uZWw6IHN0cmluZztcbiAgZGVsaXZlcihtc2c6IE0sIHRhcmdldDogQ2hhbm5lbFRhcmdldCwgc2lnbmFsPzogQWJvcnRTaWduYWwpOiBQcm9taXNlPERlbGl2ZXJ5UmVzdWx0Pjtcbn1cblxuLyoqIE9wdGlvbnMgZm9yIHtAbGluayBjcmVhdGVXZWJob29rQ2hhbm5lbH0uICovXG5leHBvcnQgaW50ZXJmYWNlIFdlYmhvb2tDaGFubmVsT3B0aW9uczxNIGV4dGVuZHMgTm90aWZpY2F0aW9uTWVzc2FnZSA9IE5vdGlmaWNhdGlvbk1lc3NhZ2U+IHtcbiAgLyoqIENoYW5uZWwgbmFtZSAoZGVmYXVsdCBgJ3dlYmhvb2snYCkuICovXG4gIG5hbWU/OiBzdHJpbmc7XG4gIC8qKiBBbGxvd2VkIFVSTCBwcm90b2NvbHMgKGRlZmF1bHQgaHR0cHMtb25seSkuICovXG4gIHByb3RvY29scz86IHN0cmluZ1tdO1xuICAvKiogUGVyLWRlbGl2ZXJ5IHdhbGwtY2xvY2sgY2FwIGluIG1zLiAqL1xuICB0aW1lb3V0TXM/OiBudW1iZXI7XG4gIC8qKiBSZW5kZXIgdGhlIEpTT04gYm9keTsgZGVmYXVsdHMgdG8gYG1zZy5wYXlsb2FkYCBmb3J3YXJkZWQgdmVyYmF0aW0uICovXG4gIHJlbmRlcj86IChtc2c6IE0pID0+IHVua25vd247XG59XG5cbi8qKlxuICogR2VuZXJpYyBvdXRib3VuZCB3ZWJob29rIHRyYW5zcG9ydC5cbiAqXG4gKiBUaGUgVVJMIGlzIG9yZy1jb250cm9sbGVkLCBzbyBkZWxpdmVyeSBnb2VzIHRocm91Z2gge0BsaW5rIHNhZmVGZXRjaH06IHRoZVxuICogaG9zdCBpcyByZXNvbHZlZCBhbmQgdmV0dGVkLCB0aGUgdmV0dGVkIElQIGlzIFBJTk5FRCBpbnRvIHRoZSBzb2NrZXQgKG5vXG4gKiBETlMtcmViaW5kaW5nIHdpbmRvdyBiZXR3ZWVuIHRoZSBjaGVjayBhbmQgdGhlIGNvbm5lY3QpLCBhbmQgcmVkaXJlY3RzIGFyZVxuICogcmVmdXNlZCDigJQgYSAzeHggaXMgYSBGQUlMRUQgZGVsaXZlcnksIG5ldmVyIGEgcGl2b3QgdG8gYW4gdW52ZXR0ZWQgaG9zdCBhbmRcbiAqIG5ldmVyIHJlY29yZGVkIGdyZWVuLiBTaWduZWQgd2l0aCBgWC1QQi1TaWduYXR1cmVgIHdoZW4gdGhlIHRhcmdldCBjYXJyaWVzIGFcbiAqIHNlY3JldDsgdGFyZ2V0cyB3aXRob3V0IG9uZSAoYWxlcnQgZGVzdGluYXRpb25zKSBzdGF5IHVuc2lnbmVkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlV2ViaG9va0NoYW5uZWw8TSBleHRlbmRzIE5vdGlmaWNhdGlvbk1lc3NhZ2UgPSBOb3RpZmljYXRpb25NZXNzYWdlPihcbiAgb3B0czogV2ViaG9va0NoYW5uZWxPcHRpb25zPE0+ID0ge30sXG4pOiBOb3RpZmljYXRpb25DaGFubmVsPE0+IHtcbiAgY29uc3QgcmVuZGVyID0gb3B0cy5yZW5kZXIgPz8gKChtc2c6IE0pID0+IG1zZy5wYXlsb2FkKTtcbiAgcmV0dXJuIHtcbiAgICBjaGFubmVsOiBvcHRzLm5hbWUgPz8gJ3dlYmhvb2snLFxuICAgIGFzeW5jIGRlbGl2ZXIobXNnLCB0YXJnZXQsIHNpZ25hbCkge1xuICAgICAgaWYgKCF0YXJnZXQudmFsdWUpIHJldHVybiB7IG9rOiBmYWxzZSwgZXJyb3I6ICdubyB3ZWJob29rIHVybCcgfTtcbiAgICAgIGNvbnN0IGJvZHkgPSBKU09OLnN0cmluZ2lmeShyZW5kZXIobXNnKSk7XG4gICAgICBjb25zdCBoZWFkZXJzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0geyAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nIH07XG4gICAgICBpZiAodGFyZ2V0LnNlY3JldCkge1xuICAgICAgICBoZWFkZXJzWydYLVBCLVNpZ25hdHVyZSddID0gYHNoYTI1Nj0ke2NyZWF0ZUhtYWMoJ3NoYTI1NicsIHRhcmdldC5zZWNyZXQpLnVwZGF0ZShib2R5KS5kaWdlc3QoJ2hleCcpfWA7XG4gICAgICB9XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCByZXNwID0gYXdhaXQgc2FmZUZldGNoKHRhcmdldC52YWx1ZSwge1xuICAgICAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgICAgIGhlYWRlcnMsXG4gICAgICAgICAgYm9keSxcbiAgICAgICAgICBzaWduYWwsXG4gICAgICAgICAgcHJvdG9jb2xzOiBvcHRzLnByb3RvY29scyxcbiAgICAgICAgICB0aW1lb3V0TXM6IG9wdHMudGltZW91dE1zLFxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKHJlc3AucmVkaXJlY3RlZCkge1xuICAgICAgICAgIHJldHVybiB7IG9rOiBmYWxzZSwgY29kZTogcmVzcC5zdGF0dXMsIGVycm9yOiAnd2ViaG9vayB1cmwgcmVkaXJlY3RlZCAocmVmdXNlZCknIH07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3Aub2sgPyB7IG9rOiB0cnVlLCBjb2RlOiByZXNwLnN0YXR1cyB9IDogeyBvazogZmFsc2UsIGNvZGU6IHJlc3Auc3RhdHVzIH07XG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgcmV0dXJuIHsgb2s6IGZhbHNlLCBlcnJvcjogZXJyb3JNZXNzYWdlKGVycikgfTtcbiAgICAgIH1cbiAgICB9LFxuICB9O1xufVxuXG4vKiogQXJndW1lbnRzIGhhbmRlZCB0byBhbiB7QGxpbmsgRW1haWxDaGFubmVsT3B0aW9ucy5zZW5kfSBpbXBsZW1lbnRhdGlvbi4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRW1haWxTZW5kUmVxdWVzdCB7XG4gIC8qKiBUaGUgdGFyZ2V0IGFkZHJlc3MsIHdoZW4gdGhlIHRyYW5zcG9ydCBhZGRyZXNzZXMgb25lIHJlY2lwaWVudCBkaXJlY3RseS4gKi9cbiAgdG8/OiBzdHJpbmc7XG4gIC8qKiBPcmcgd2hvc2UgYWRtaW5zL3VzZXJzIHJlY2VpdmUgaXQsIHdoZW4gdGhlIHRyYW5zcG9ydCByZXNvbHZlcyByZWNpcGllbnRzLiAqL1xuICBvcmdJZDogc3RyaW5nO1xuICAvKiogTmFycm93ZWQgcmVjaXBpZW50IGxpc3QsIG9yIG51bGwgZm9yIFwiZXZlcnkgb3JnIGFkbWluXCIuICovXG4gIHRhcmdldFVzZXJzPzogc3RyaW5nW10gfCBudWxsO1xuICBzdWJqZWN0OiBzdHJpbmc7XG4gIHRleHQ6IHN0cmluZztcbn1cblxuLyoqIE9wdGlvbnMgZm9yIHtAbGluayBjcmVhdGVFbWFpbENoYW5uZWx9LiAqL1xuZXhwb3J0IGludGVyZmFjZSBFbWFpbENoYW5uZWxPcHRpb25zIHtcbiAgLyoqIFBlcmZvcm0gdGhlIHNlbmQ7IHJlc29sdmUgZmFsc2UgZm9yIGEgdHJhbnNwb3J0LWxldmVsIGZhaWx1cmUuICovXG4gIHNlbmQ6IChyZXE6IEVtYWlsU2VuZFJlcXVlc3QpID0+IFByb21pc2U8Ym9vbGVhbj47XG4gIC8qKiBSZXBvcnQgd2hldGhlciBlbWFpbCBpcyBjb25maWd1cmVkIGF0IGFsbCBvbiB0aGlzIGRlcGxveSAoZGVmYXVsdDogeWVzKS4gKi9cbiAgZW5hYmxlZD86ICgpID0+IGJvb2xlYW47XG4gIC8qKlxuICAgKiBBdC1sZWFzdC1vbmNlIGRlZHVwZSB3aW5kb3cuIEEgcmVwZWF0IG9mIHRoZSBzYW1lIGAoZGVkdXBlS2V5LCB0YXJnZXQpYFxuICAgKiBpbnNpZGUgdGhlIHdpbmRvdyBpcyByZXBvcnRlZCBgeyBvazogdHJ1ZSwgc2tpcHBlZDogdHJ1ZSB9YCByYXRoZXIgdGhhblxuICAgKiByZS1zZW50LiBPbWl0LzAgdG8gZGlzYWJsZS5cbiAgICovXG4gIGRlZHVwZVR0bE1zPzogbnVtYmVyO1xufVxuXG4vKipcbiAqIEVtYWlsIHRyYW5zcG9ydC4gVGhlIGFjdHVhbCBkZWxpdmVyeSBtZWNoYW5pc20gaXMgaW5qZWN0ZWQgKGBzZW5kYCkgYmVjYXVzZVxuICogaXQgbGVnaXRpbWF0ZWx5IGRpZmZlcnMg4oCUIHBsYXRmb3JtIGhhcyBTTVRQL1NFUywgY29tcGxpYW5jZSBhc2tzIHBsYXRmb3JtIHRvXG4gKiBzZW5kIG9uIGl0cyBiZWhhbGYg4oCUIGJ1dCB0aGUgcGFydHMgdGhhdCB3ZXJlIGR1cGxpY2F0ZWQtYW5kLWRyaWZ0aW5nIGFyZVxuICogaGVyZTogdGhlIGVuYWJsZWQvc2tpcHBlZCBzZW1hbnRpY3MgYW5kIHRoZSBhdC1sZWFzdC1vbmNlIGRlZHVwZSB3aW5kb3cgKGFcbiAqIHdlYmhvb2stcmV0cnlpbmcgYWxlcnQgc291cmNlIHdvdWxkIG90aGVyd2lzZSByZS1tYWlsIHRoZSBzYW1lIGV2ZW50KS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUVtYWlsQ2hhbm5lbDxNIGV4dGVuZHMgTm90aWZpY2F0aW9uTWVzc2FnZSA9IE5vdGlmaWNhdGlvbk1lc3NhZ2U+KFxuICBvcHRzOiBFbWFpbENoYW5uZWxPcHRpb25zLFxuKTogTm90aWZpY2F0aW9uQ2hhbm5lbDxNPiB7XG4gIGNvbnN0IHR0bCA9IG9wdHMuZGVkdXBlVHRsTXMgPz8gMDtcbiAgY29uc3QgcmVjZW50ID0gbmV3IE1hcDxzdHJpbmcsIG51bWJlcj4oKTsgLy8gZGVkdXBlIGtleSAtPiBleHBpcnkgKGVwb2NoIG1zKVxuXG4gIGNvbnN0IHNlZW5SZWNlbnRseSA9IChrZXk6IHN0cmluZyk6IGJvb2xlYW4gPT4ge1xuICAgIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG4gICAgZm9yIChjb25zdCBbaywgZXhwXSBvZiByZWNlbnQpIHtcbiAgICAgIGlmIChleHAgPD0gbm93KSByZWNlbnQuZGVsZXRlKGspO1xuICAgIH1cbiAgICByZXR1cm4gcmVjZW50LmhhcyhrZXkpO1xuICB9O1xuXG4gIHJldHVybiB7XG4gICAgY2hhbm5lbDogJ2VtYWlsJyxcbiAgICBhc3luYyBkZWxpdmVyKG1zZywgdGFyZ2V0KSB7XG4gICAgICAvLyBFbWFpbCB1bmNvbmZpZ3VyZWQgb24gdGhpcyBkZXBsb3kg4oaSIHJlcG9ydCBTS0lQUEVEIChub3QgZGVsaXZlcmVkKSBzbyBhXG4gICAgICAvLyBjYWxsZXIgbmV2ZXIgY2xhaW1zIGl0IHNlbnQgc29tZXRoaW5nIGl0IGRpZG4ndC5cbiAgICAgIGlmIChvcHRzLmVuYWJsZWQgJiYgIW9wdHMuZW5hYmxlZCgpKSB7XG4gICAgICAgIHJldHVybiB7IG9rOiBmYWxzZSwgc2tpcHBlZDogdHJ1ZSwgZXJyb3I6ICdlbWFpbC1kaXNhYmxlZCcgfTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGRlZHVwZUtleSA9IHR0bCA+IDAgJiYgbXNnLmRlZHVwZUtleSA/IGAke21zZy5kZWR1cGVLZXl9OiR7dGFyZ2V0LnZhbHVlID8/IG1zZy5yZWNpcGllbnRPcmdJZH1gIDogbnVsbDtcbiAgICAgIGlmIChkZWR1cGVLZXkgJiYgc2VlblJlY2VudGx5KGRlZHVwZUtleSkpIHtcbiAgICAgICAgcmV0dXJuIHsgb2s6IHRydWUsIHNraXBwZWQ6IHRydWUgfTtcbiAgICAgIH1cbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHNlbnQgPSBhd2FpdCBvcHRzLnNlbmQoe1xuICAgICAgICAgIHRvOiB0YXJnZXQudmFsdWUsXG4gICAgICAgICAgb3JnSWQ6IG1zZy5yZWNpcGllbnRPcmdJZCxcbiAgICAgICAgICB0YXJnZXRVc2VyczogdGFyZ2V0LnRhcmdldFVzZXJzID8/IG51bGwsXG4gICAgICAgICAgc3ViamVjdDogbXNnLnN1YmplY3QsXG4gICAgICAgICAgdGV4dDogbXNnLmJvZHksXG4gICAgICAgIH0pO1xuICAgICAgICAvLyBSZWNvcmQgb25seSBvbiBzdWNjZXNzLCBzbyBhIGZhaWxlZCBzZW5kIGlzIHJldHJpZWQgYnkgdGhlIG5leHQgZXZlbnQuXG4gICAgICAgIGlmIChzZW50ICYmIGRlZHVwZUtleSkgcmVjZW50LnNldChkZWR1cGVLZXksIERhdGUubm93KCkgKyB0dGwpO1xuICAgICAgICByZXR1cm4gc2VudCA/IHsgb2s6IHRydWUgfSA6IHsgb2s6IGZhbHNlLCBlcnJvcjogJ2VtYWlsLXNlbmQtZmFpbGVkJyB9O1xuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIHJldHVybiB7IG9rOiBmYWxzZSwgZXJyb3I6IGVycm9yTWVzc2FnZShlcnIpIH07XG4gICAgICB9XG4gICAgfSxcbiAgfTtcbn1cblxuLyoqXG4gKiBCdWlsZCB0aGUgcGVyLXNlcnZpY2UgY2hhbm5lbCByZWdpc3RyeS4gUmV0dXJucyBhIHJlc29sdmVyIHRoYXQgeWllbGRzIGBudWxsYFxuICogZm9yIGFuIHVua25vd24gbmFtZSDigJQgdGhlIGNoYW5uZWwgaXMgREIgZGF0YSwgc28gYW4gdW5rbm93biB2YWx1ZSBpcyBwb3NzaWJsZVxuICogYW5kIHRoZSBjYWxsZXIgbG9ncy9jb3VudHMgaXQgcmF0aGVyIHRoYW4gdGhyb3dpbmcuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVDaGFubmVsUmVnaXN0cnk8TSBleHRlbmRzIE5vdGlmaWNhdGlvbk1lc3NhZ2UgPSBOb3RpZmljYXRpb25NZXNzYWdlPihcbiAgY2hhbm5lbHM6IE5vdGlmaWNhdGlvbkNoYW5uZWw8TT5bXSxcbik6IChjaGFubmVsOiBzdHJpbmcpID0+IE5vdGlmaWNhdGlvbkNoYW5uZWw8TT4gfCBudWxsIHtcbiAgY29uc3QgYnlOYW1lID0gbmV3IE1hcChjaGFubmVscy5tYXAoKGMpID0+IFtjLmNoYW5uZWwsIGNdKSk7XG4gIHJldHVybiAoY2hhbm5lbDogc3RyaW5nKSA9PiBieU5hbWUuZ2V0KGNoYW5uZWwpID8/IG51bGw7XG59XG4iXX0=
|
|
@@ -109,4 +109,4 @@ export function resetOrgAICache(orgId) {
|
|
|
109
109
|
if (k.startsWith(`${orgId}\u0000`))
|
|
110
110
|
keyCache.delete(k);
|
|
111
111
|
}
|
|
112
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JnLWFpLWNsaWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZXJ2aWNlcy9vcmctYWktY2xpZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7QUE0QnRDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsZUFBZSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDaEYsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDdkUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3BELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDakQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBRS9ELHFGQUFxRjtBQUNyRixNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxxQkFBcUIsQ0FBQztBQUN4RCxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxtQkFBbUIsQ0FBQztBQUVwRCxtRkFBbUY7QUFDbkYsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsTUFBTSxDQUFDLHNCQUFzQixFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ3ZGLHdGQUF3RjtBQUN4RixNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxNQUFNLENBQUMsbUJBQW1CLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztBQVkvRixNQUFNLFdBQVcsR0FBRyxJQUFJLEdBQUcsRUFBK0Is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LHdCQUF3QixDQUFDLENBQUM7UUFDeEcsT0FBTztJQUNULENBQUM7SUFDRCxJQUFJLENBQUM7UUFDSCxNQUFNLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ3hDLElBQUksRUFBRSxDQUFDO0lBQ1QsQ0FBQztJQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7UUFDYixNQUFNLENBQUMsR0FBRyxHQUE2QyxDQUFDO1FBQ3hELFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLFVBQVUsSUFBSSxHQUFHLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDekQsQ0FBQztBQUNILENBQUM7QUFFRCx5RkFBeUY7QUFDekYsTUFBTSxVQUFVLGVBQWUsQ0FBQyxLQUFjO0lBQzVDLElBQUksS0FBSyxLQUFLLFNBQVMsRUFBRSxDQUFDO1FBQ3hCLFdBQVcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNwQixRQUFRLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDakIsT0FBTztJQUNULENBQUM7SUFDRCxXQUFXLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzFCLEtBQUssTUFBTSxDQUFDLElBQUksUUFBUSxDQUFDLElBQUksRUFBRTtRQUFFLElBQUksQ0FBQyxDQUFDLFVBQVUsQ0FBQyxHQUFHLEtBQUssUUFBUSxDQUFDO1lBQUUsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMxRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbi8qKlxuICogVGhlIG9yZyBoYWxmIG9mIGV2ZXJ5IEFJIGNhbGw6IGlzIEFJIHN3aXRjaGVkIG9uIGZvciB0aGlzIG9yZ2FuaXphdGlvbiwgd2hpY2hcbiAqIHByb3ZpZGVycyBoYXMgaXQgY29uZmlndXJlZCBpdHMgT1dOIGtleSBmb3IsIGFuZCDigJQgd2hlbiB0aGUgY2FsbCBpcyBnb2luZyB0b1xuICogdXNlIG9uZSDigJQgdGhlIGRlY3J5cHRlZCBrZXkuXG4gKlxuICogUGxhdGZvcm0gaG9sZHMgYm90aCBmYWN0cyAodGhlIG9yZydzIGBhaUVuYWJsZWRgIHN3aXRjaCBhbmQgaXRzIGVuY3J5cHRlZFxuICogYGFpUHJvdmlkZXJLZXlzYCksIHNvIHRoZXkgYXJlIHR3byBJTlRFUk5BTCByZWFkcyBvbiBwbGF0Zm9ybSwgZ2F0ZWQgYnlcbiAqIGByZXF1aXJlSW50ZXJuYWxTZXJ2aWNlYCB0byB0aGUgZm91ciBBSSBjYWxsZXJzIChhc2ssIHBpcGVsaW5lLCBwbHVnaW4sXG4gKiByZXBvcnRpbmcpIGFuZCBieSB0aGUgbWVzaCBvbiB0aGUgSXN0aW8gdGFyZ2V0czpcbiAqXG4gKiAgLSBgR0VUIC9pbnRlcm5hbC9haS9hY2Nlc3MvOm9yZ0lkYCAgICAgICAgIOKGkiBgeyBhaUVuYWJsZWQsIHByb3ZpZGVyczogc3RyaW5nW10gfWBcbiAqICAtIGBHRVQgL2ludGVybmFsL2FpL2tleXMvOm9yZ0lkLzpwcm92aWRlcmAg4oaSIGB7IHByb3ZpZGVyLCBhcGlLZXkgfWAgKGF1ZGl0ZWQgb24gcGxhdGZvcm0pXG4gKlxuICogS0VZIE1BVEVSSUFMIEhBTkRMSU5HLiBBIGtleSBmZXRjaGVkIGhlcmUgaXMgaGVsZCBpbiBwcm9jZXNzIG1lbW9yeSBmb3IgYXQgbW9zdFxuICoge0BsaW5rIE9SR19BSV9LRVlfVFRMX01TfSAoc28gYSByb3RhdGVkIG9yIGNsZWFyZWQga2V5IHN0b3BzIGJlaW5nIHVzZWQgd2l0aGluXG4gKiB0aGF0IHdpbmRvdywgYW5kIHBsYXRmb3JtJ3MgcmVhZCBhdWRpdCBpcyBub3Qgb25lIHJvdyBwZXIgbW9kZWwgY2FsbCksIGlzIG5ldmVyXG4gKiBsb2dnZWQsIG5ldmVyIHdyaXR0ZW4gdG8gUmVkaXMgb3IgYW55IHNoYXJlZCBjYWNoZSwgYW5kIG5ldmVyIHBsYWNlZCBpbiBhbiBlcnJvclxuICogbWVzc2FnZS4gQ2FsbGVycyBoYW5kIGl0IHN0cmFpZ2h0IHRvIGEgbW9kZWwgZmFjdG9yeS5cbiAqXG4gKiBGQUlMVVJFIElTIE5PVCBBIEZBTExCQUNLLiBBbiB1bnJlYWNoYWJsZSBwbGF0Zm9ybSBtYWtlcyB7QGxpbmsgZmV0Y2hPcmdBSUFjY2Vzc31cbiAqIHRocm93IGFuIHtAbGluayBBSUNvbmZpZ3VyYXRpb25FcnJvcn0gcmF0aGVyIHRoYW4gYW5zd2VyIFwiZW5hYmxlZCwgbm8gb3JnIGtleXNcIjpcbiAqIHRoYXQgYW5zd2VyIHdvdWxkIHNpbGVudGx5IGJpbGwgdGhlIHBsYXRmb3JtJ3Mga2V5IGZvciBhbiBvcmcgdGhhdCBjb25maWd1cmVkIGl0c1xuICogb3duLCBhbmQgd291bGQgcnVuIEFJIGZvciBhbiBvcmcgd2hvc2UgYWRtaW5pc3RyYXRvcnMgc3dpdGNoZWQgaXQgb2ZmLlxuICovXG5cbmltcG9ydCB0eXBlIHsgTmV4dEZ1bmN0aW9uLCBSZXF1ZXN0LCBSZXNwb25zZSB9IGZyb20gJ2V4cHJlc3MnO1xuaW1wb3J0IHsgY3JlYXRlU2FmZUNsaWVudCB9IGZyb20gJy4vaHR0cC1jbGllbnQuanMnO1xuaW1wb3J0IHsgc2VydmljZUlkZW50aXR5IH0gZnJvbSAnLi9zZXJ2aWNlLWtleXMuanMnO1xuaW1wb3J0IHsgQUlDb25maWd1cmF0aW9uRXJyb3IsIEFJRGlzYWJsZWRFcnJvciB9IGZyb20gJy4uL2Vycm9ycy9hcHAtZXJyb3JzLmpzJztcbmltcG9ydCB7IGdldFNlcnZpY2VBdXRoSGVhZGVyIH0gZnJvbSAnLi4vbWlkZGxld2FyZS9zZXJ2aWNlLXRva2Vucy5qcyc7XG5pbXBvcnQgeyBFcnJvckNvZGUgfSBmcm9tICcuLi90eXBlcy9lcnJvci1jb2Rlcy5qcyc7XG5pbXBvcnQgeyBlbnZJbnQgfSBmcm9tICcuLi91dGlscy9lbnYuanMnO1xuaW1wb3J0IHsgc2VuZEVycm9yIH0gZnJvbSAnLi4vdXRpbHMvcmVzcG9uc2UuanMnO1xuaW1wb3J0IHsgc2VydmljZUVuZHBvaW50IH0gZnJvbSAnLi4vdXRpbHMvc2VydmljZS1yZWdpc3RyeS5qcyc7XG5cbi8qKiBQbGF0Zm9ybSBwYXRocyAoZXhwb3J0ZWQgZm9yIHRoZSBwbGF0Zm9ybSByb3V0ZS1jb3ZlcmFnZSArIG1lc2ggZGVjbGFyYXRpb25zKS4gKi9cbmV4cG9ydCBjb25zdCBPUkdfQUlfQUNDRVNTX1BBVEggPSAnL2ludGVybmFsL2FpL2FjY2Vzcyc7XG5leHBvcnQgY29uc3QgT1JHX0FJX0tFWVNfUEFUSCA9ICcvaW50ZXJuYWwvYWkva2V5cyc7XG5cbi8qKiBIb3cgbG9uZyBhbiBvcmcncyBzd2l0Y2ggKyBjb25maWd1cmVkLXByb3ZpZGVyIGxpc3QgaXMgcmV1c2VkIChkZWZhdWx0IDMwcykuICovXG5leHBvcnQgY29uc3QgT1JHX0FJX0FDQ0VTU19UVExfTVMgPSBlbnZJbnQoJ09SR19BSV9BQ0NFU1NfVFRMX01TJywgMzBfMDAwLCB7IG1pbjogMCB9KTtcbi8qKiBIb3cgbG9uZyBhIGRlY3J5cHRlZCBvcmcga2V5IGlzIGhlbGQgaW4gbWVtb3J5IChkZWZhdWx0IDYwczsgMCBkaXNhYmxlcyBjYWNoaW5nKS4gKi9cbmV4cG9ydCBjb25zdCBPUkdfQUlfS0VZX1RUTF9NUyA9IGVudkludCgnT1JHX0FJX0tFWV9UVExfTVMnLCA2MF8wMDAsIHsgbWluOiAwLCBtYXg6IDMwMF8wMDAgfSk7XG5cbi8qKiBBbiBvcmcncyBBSSBwb3N0dXJlLCBhcyBwbGF0Zm9ybSByZXBvcnRzIGl0LiAqL1xuZXhwb3J0IGludGVyZmFjZSBPcmdBSUFjY2VzcyB7XG4gIC8qKiBGYWxzZSB3aGVuIHRoZSBvcmcncyBhZG1pbmlzdHJhdG9ycyBzd2l0Y2hlZCBBSSBmZWF0dXJlcyBvZmYuICovXG4gIGFpRW5hYmxlZDogYm9vbGVhbjtcbiAgLyoqIFByb3ZpZGVyIGlkcyB0aGUgb3JnIGhhcyBjb25maWd1cmVkIGl0cyBPV04ga2V5IGZvciAoY2F0YWxvZyBpZHMpLiAqL1xuICBwcm92aWRlcnM6IHN0cmluZ1tdO1xufVxuXG5pbnRlcmZhY2UgQ2FjaGVkPFQ+IHsgdmFsdWU6IFQ7IGV4cGlyZXNBdDogbnVtYmVyIH1cblxuY29uc3QgYWNjZXNzQ2FjaGUgPSBuZXcgTWFwPHN0cmluZywgQ2FjaGVkPE9yZ0FJQWNjZXNzPj4oKTtcbmNvbnN0IGtleUNhY2hlID0gbmV3IE1hcDxzdHJpbmcsIENhY2hlZDxzdHJpbmc+PigpO1xuXG5sZXQgY2xpZW50OiBSZXR1cm5UeXBlPHR5cGVvZiBjcmVhdGVTYWZlQ2xpZW50PiB8IHVuZGVmaW5lZDtcbmZ1bmN0aW9uIHBsYXRmb3JtKCk6IFJldHVyblR5cGU8dHlwZW9mIGNyZWF0ZVNhZmVDbGllbnQ+IHtcbiAgY2xpZW50ID8/PSBjcmVhdGVTYWZlQ2xpZW50KHsgLi4uc2VydmljZUVuZHBvaW50KCdwbGF0Zm9ybScpLCB0aW1lb3V0OiA1XzAwMCB9KTtcbiAgcmV0dXJuIGNsaWVudDtcbn1cblxuLyoqIEEgc2VydmljZSB0b2tlbiBzY29wZWQgdG8gdGhlIG9yZyBiZWluZyBhc2tlZCBhYm91dCDigJQgcGxhdGZvcm0gYmluZHMgdGhlIHJlYWQgdG8gaXQuICovXG5mdW5jdGlvbiBhdXRoRm9yKG9yZ0lkOiBzdHJpbmcpOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHtcbiAgcmV0dXJuIHsgQXV0aG9yaXphdGlvbjogZ2V0U2VydmljZUF1dGhIZWFkZXIoeyBzZXJ2aWNlTmFtZTogc2VydmljZUlkZW50aXR5KCksIG9yZ0lkLCByb2xlOiAnbWVtYmVyJyB9KSB9O1xufVxuXG4vKipcbiAqIFRoZSBvcmcncyBBSSBzd2l0Y2ggYW5kIHRoZSBwcm92aWRlcnMgaXQgaGFzIGl0cyBvd24ga2V5IGZvci4gQ2FjaGVkXG4gKiB7QGxpbmsgT1JHX0FJX0FDQ0VTU19UVExfTVN9LiBUaHJvd3Mge0BsaW5rIEFJQ29uZmlndXJhdGlvbkVycm9yfSAoNTAzKSB3aGVuIHBsYXRmb3JtXG4gKiBjYW5ub3QgYW5zd2VyIOKAlCBzZWUgdGhlIG1vZHVsZSBjb21tZW50IGZvciB3aHkgdGhhdCBpcyBub3QgXCJlbmFibGVkXCIuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBmZXRjaE9yZ0FJQWNjZXNzKG9yZ0lkOiBzdHJpbmcpOiBQcm9taXNlPE9yZ0FJQWNjZXNzPiB7XG4gIGNvbnN0IGhpdCA9IGFjY2Vzc0NhY2hlLmdldChvcmdJZCk7XG4gIGlmIChoaXQgJiYgaGl0LmV4cGlyZXNBdCA+IERhdGUubm93KCkpIHJldHVybiBoaXQudmFsdWU7XG5cbiAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBwbGF0Zm9ybSgpLmdldDx7IGRhdGE/OiBQYXJ0aWFsPE9yZ0FJQWNjZXNzPiB9ICYgUGFydGlhbDxPcmdBSUFjY2Vzcz4+KFxuICAgIGAke09SR19BSV9BQ0NFU1NfUEFUSH0vJHtlbmNvZGVVUklDb21wb25lbnQob3JnSWQpfWAsIHsgaGVhZGVyczogYXV0aEZvcihvcmdJZCkgfSxcbiAgKTtcbiAgY29uc3QgYm9keSA9IHJlc3BvbnNlPy5ib2R5O1xuICBjb25zdCBkYXRhID0gYm9keT8uZGF0YSA/PyBib2R5O1xuICBpZiAoIXJlc3BvbnNlIHx8IHJlc3BvbnNlLnN0YXR1c0NvZGUgIT09IDIwMCB8fCB0eXBlb2YgZGF0YT8uYWlFbmFibGVkICE9PSAnYm9vbGVhbicpIHtcbiAgICB0aHJvdyBuZXcgQUlDb25maWd1cmF0aW9uRXJyb3IoJ1RoZSBvcmdhbml6YXRpb25cXCdzIEFJIHNldHRpbmdzIGNvdWxkIG5vdCBiZSByZWFkLCBzbyBubyBBSSByZXF1ZXN0IHdhcyBtYWRlLiBUcnkgYWdhaW4gc2hvcnRseS4nKTtcbiAgfVxuICBjb25zdCB2YWx1ZTogT3JnQUlBY2Nlc3MgPSB7XG4gICAgYWlFbmFibGVkOiBkYXRhLmFpRW5hYmxlZCxcbiAgICBwcm92aWRlcnM6IEFycmF5LmlzQXJyYXkoZGF0YS5wcm92aWRlcnMpID8gZGF0YS5wcm92aWRlcnMuZmlsdGVyKChwKTogcCBpcyBzdHJpbmcgPT4gdHlwZW9mIHAgPT09ICdzdHJpbmcnKSA6IFtdLFxuICB9O1xuICBpZiAoT1JHX0FJX0FDQ0VTU19UVExfTVMgPiAwKSBhY2Nlc3NDYWNoZS5zZXQob3JnSWQsIHsgdmFsdWUsIGV4cGlyZXNBdDogRGF0ZS5ub3coKSArIE9SR19BSV9BQ0NFU1NfVFRMX01TIH0pO1xuICByZXR1cm4gdmFsdWU7XG59XG5cbi8qKlxuICogVGhlIG9yZydzIGRlY3J5cHRlZCBrZXkgZm9yIGBwcm92aWRlcmAuIENhbGwgT05MWSBhZnRlciB7QGxpbmsgZmV0Y2hPcmdBSUFjY2Vzc31cbiAqIGxpc3RlZCB0aGUgcHJvdmlkZXIuIFRocm93cyB7QGxpbmsgQUlDb25maWd1cmF0aW9uRXJyb3J9IHdoZW4gdGhlIGtleSBjYW5ub3QgYmVcbiAqIGxvYWRlZCDigJQgdGhlIGNhbGxlciBtdXN0IHRoZW4gZmFpbCB0aGUgcmVxdWVzdCwgbmV2ZXIgZmFsbCBiYWNrIHRvIHRoZSBwbGF0Zm9ybSBrZXkuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBmZXRjaE9yZ0FJS2V5KG9yZ0lkOiBzdHJpbmcsIHByb3ZpZGVyOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xuICBjb25zdCBjYWNoZUtleSA9IGAke29yZ0lkfVxcdTAwMDAke3Byb3ZpZGVyfWA7XG4gIGNvbnN0IGhpdCA9IGtleUNhY2hlLmdldChjYWNoZUtleSk7XG4gIGlmIChoaXQgJiYgaGl0LmV4cGlyZXNBdCA+IERhdGUubm93KCkpIHJldHVybiBoaXQudmFsdWU7XG5cbiAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBwbGF0Zm9ybSgpLmdldDx7IGRhdGE/OiB7IGFwaUtleT86IHVua25vd24gfTsgYXBpS2V5PzogdW5rbm93biB9PihcbiAgICBgJHtPUkdfQUlfS0VZU19QQVRIfS8ke2VuY29kZVVSSUNvbXBvbmVudChvcmdJZCl9LyR7ZW5jb2RlVVJJQ29tcG9uZW50KHByb3ZpZGVyKX1gLCB7IGhlYWRlcnM6IGF1dGhGb3Iob3JnSWQpIH0sXG4gICk7XG4gIGNvbnN0IGFwaUtleSA9IHJlc3BvbnNlPy5ib2R5Py5kYXRhPy5hcGlLZXkgPz8gcmVzcG9uc2U/LmJvZHk/LmFwaUtleTtcbiAgaWYgKCFyZXNwb25zZSB8fCByZXNwb25zZS5zdGF0dXNDb2RlICE9PSAyMDAgfHwgdHlwZW9mIGFwaUtleSAhPT0gJ3N0cmluZycgfHwgYXBpS2V5Lmxlbmd0aCA9PT0gMCkge1xuICAgIC8vIFN0YXR1cyBvbmx5OiB0aGUgYm9keSBpcyBuZXZlciBlY2hvZWQsIGFuZCB0aGUga2V5IGlzIG5ldmVyIGluIGEgbWVzc2FnZS5cbiAgICB0aHJvdyBuZXcgQUlDb25maWd1cmF0aW9uRXJyb3IoXG4gICAgICBgVGhlIG9yZ2FuaXphdGlvbidzICR7cHJvdmlkZXJ9IEFQSSBrZXkgY291bGQgbm90IGJlIGxvYWRlZCwgc28gdGhlIHJlcXVlc3Qgd2FzIG5vdCBzZW50LiBgXG4gICAgICArICdJdCB3YXMgTk9UIHJldHJpZWQgb24gdGhlIHBsYXRmb3JtXFwncyBrZXkg4oCUIHJlLXNhdmUgdGhlIGtleSBpbiBTZXR0aW5ncywgb3IgdHJ5IGFnYWluIHNob3J0bHkuJyxcbiAgICApO1xuICB9XG4gIGlmIChPUkdfQUlfS0VZX1RUTF9NUyA+IDApIGtleUNhY2hlLnNldChjYWNoZUtleSwgeyB2YWx1ZTogYXBpS2V5LCBleHBpcmVzQXQ6IERhdGUubm93KCkgKyBPUkdfQUlfS0VZX1RUTF9NUyB9KTtcbiAgcmV0dXJuIGFwaUtleTtcbn1cblxuLyoqIFRocm93IHtAbGluayBBSURpc2FibGVkRXJyb3J9ICg0MDMgYEFJX0RJU0FCTEVEYCkgd2hlbiB0aGUgb3JnIHN3aXRjaGVkIEFJIG9mZi4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBhc3NlcnRPcmdBSUVuYWJsZWQob3JnSWQ6IHN0cmluZyk6IFByb21pc2U8T3JnQUlBY2Nlc3M+IHtcbiAgY29uc3QgYWNjZXNzID0gYXdhaXQgZmV0Y2hPcmdBSUFjY2VzcyhvcmdJZCk7XG4gIGlmICghYWNjZXNzLmFpRW5hYmxlZCkgdGhyb3cgbmV3IEFJRGlzYWJsZWRFcnJvcigpO1xuICByZXR1cm4gYWNjZXNzO1xufVxuXG4vKipcbiAqIFJvdXRlIGd1YXJkOiByZWZ1c2UgZXZlcnkgQUkgZW50cnkgcG9pbnQgZm9yIGFuIG9yZyB3aG9zZSBhZG1pbmlzdHJhdG9ycyBzd2l0Y2hlZFxuICogQUkgb2ZmICg0MDMgYEFJX0RJU0FCTEVEYCksIG9yIHdob3NlIHNldHRpbmdzIHBsYXRmb3JtIGNhbm5vdCBjb25maXJtICg1MDMpLiBNb3VudFxuICogQUZURVIgYXV0aCBhbmQgQkVGT1JFIGFueSBxdW90YSByZXNlcnZhdGlvbiwgc28gYSBkaXNhYmxlZCBvcmcgaXMgbmV2ZXIgY2hhcmdlZC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlcXVpcmVPcmdBSUVuYWJsZWQocmVxOiBSZXF1ZXN0LCByZXM6IFJlc3BvbnNlLCBuZXh0OiBOZXh0RnVuY3Rpb24pOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3Qgb3JnSWQgPSByZXEudXNlcj8ub3JnYW5pemF0aW9uSWQ7XG4gIGlmICghb3JnSWQpIHtcbiAgICBzZW5kRXJyb3IocmVzLCA0MDMsICdObyBvcmdhbml6YXRpb24gYXNzb2NpYXRlZCB3aXRoIHRoaXMgcmVxdWVzdCcsIEVycm9yQ29kZS5JTlNVRkZJQ0lFTlRfUEVSTUlTU0lPTlMpO1xuICAgIHJldHVybjtcbiAgfVxuICB0cnkge1xuICAgIGF3YWl0IGFzc2VydE9yZ0FJRW5hYmxlZChTdHJpbmcob3JnSWQpKTtcbiAgICBuZXh0KCk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGNvbnN0IGUgPSBlcnIgYXMgQUlEaXNhYmxlZEVycm9yIHwgQUlDb25maWd1cmF0aW9uRXJyb3I7XG4gICAgc2VuZEVycm9yKHJlcywgZS5zdGF0dXNDb2RlID8/IDUwMywgZS5tZXNzYWdlLCBlLmNvZGUpO1xuICB9XG59XG5cbi8qKiBEcm9wIHRoZSBjYWNoZWQgb3JnIEFJIHBvc3R1cmUgKyBrZXlzICh0ZXN0czsgYW4gb3JnIHdob3NlIHNldHRpbmdzIGp1c3QgY2hhbmdlZCkuICovXG5leHBvcnQgZnVuY3Rpb24gcmVzZXRPcmdBSUNhY2hlKG9yZ0lkPzogc3RyaW5nKTogdm9pZCB7XG4gIGlmIChvcmdJZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgYWNjZXNzQ2FjaGUuY2xlYXIoKTtcbiAgICBrZXlDYWNoZS5jbGVhcigpO1xuICAgIHJldHVybjtcbiAgfVxuICBhY2Nlc3NDYWNoZS5kZWxldGUob3JnSWQpO1xuICBmb3IgKGNvbnN0IGsgb2Yga2V5Q2FjaGUua2V5cygpKSBpZiAoay5zdGFydHNXaXRoKGAke29yZ0lkfVxcdTAwMDBgKSkga2V5Q2FjaGUuZGVsZXRlKGspO1xufVxuIl19
|
|
112
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JnLWFpLWNsaWVudC5qcyIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NlcnZpY2VzL29yZy1haS1jbGllbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQTRCdEMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDcEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxlQUFlLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNoRixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUN2RSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDcEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFFL0QscUZBQXFGO0FBQ3JGLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLHFCQUFxQixDQUFDO0FBQ3hELE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLG1CQUFtQixDQUFDO0FBRXBELG1GQUFtRjtBQUNuRixNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxNQUFNLENBQUMsc0JBQXNCLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDdkYsd0ZBQXdGO0FBQ3hGLE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLE1BQU0sQ0FBQyxtQkFBbUIsRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDO0FBWS9GLE1BQU0sV0FBVyxHQUFHLElBQUksR0FBRyxFQUErQixDQUFDO0FBQzNELE1BQU0s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QztRQUN4RyxPQUFPO0lBQ1QsQ0FBQztJQUNELElBQUksQ0FBQztRQUNILE1BQU0sa0JBQWtCLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDeEMsSUFBSSxFQUFFLENBQUM7SUFDVCxDQUFDO0lBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztRQUNiLE1BQU0sQ0FBQyxHQUFHLEdBQTZDLENBQUM7UUFDeEQsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsVUFBVSxJQUFJLEdBQUcsRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN6RCxDQUFDO0FBQ0gsQ0FBQztBQUVELHlGQUF5RjtBQUN6RixNQUFNLFVBQVUsZUFBZSxDQUFDLEtBQWM7SUFDNUMsSUFBSSxLQUFLLEtBQUssU0FBUyxFQUFFLENBQUM7UUFDeEIsV0FBVyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ3BCLFFBQVEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNqQixPQUFPO0lBQ1QsQ0FBQztJQUNELFdBQVcsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDMUIsS0FBSyxNQUFNLENBQUMsSUFBSSxRQUFRLENBQUMsSUFBSSxFQUFFO1FBQUUsSUFBSSxDQUFDLENBQUMsVUFBVSxDQUFDLEdBQUcsS0FBSyxRQUFRLENBQUM7WUFBRSxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzFGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuLyoqXG4gKiBUaGUgb3JnIGhhbGYgb2YgZXZlcnkgQUkgY2FsbDogaXMgQUkgc3dpdGNoZWQgb24gZm9yIHRoaXMgb3JnYW5pemF0aW9uLCB3aGljaFxuICogcHJvdmlkZXJzIGhhcyBpdCBjb25maWd1cmVkIGl0cyBPV04ga2V5IGZvciwgYW5kIOKAlCB3aGVuIHRoZSBjYWxsIGlzIGdvaW5nIHRvXG4gKiB1c2Ugb25lIOKAlCB0aGUgZGVjcnlwdGVkIGtleS5cbiAqXG4gKiBQbGF0Zm9ybSBob2xkcyBib3RoIGZhY3RzICh0aGUgb3JnJ3MgYGFpRW5hYmxlZGAgc3dpdGNoIGFuZCBpdHMgZW5jcnlwdGVkXG4gKiBgYWlQcm92aWRlcktleXNgKSwgc28gdGhleSBhcmUgdHdvIElOVEVSTkFMIHJlYWRzIG9uIHBsYXRmb3JtLCBnYXRlZCBieVxuICogYHJlcXVpcmVJbnRlcm5hbFNlcnZpY2VgIHRvIHRoZSBmb3VyIEFJIGNhbGxlcnMgKGFzaywgcGlwZWxpbmUsIHBsdWdpbixcbiAqIHJlcG9ydGluZykgYW5kIGJ5IHRoZSBtZXNoIG9uIHRoZSBJc3RpbyB0YXJnZXRzOlxuICpcbiAqICAtIGBHRVQgL2ludGVybmFsL2FpL2FjY2Vzcy86b3JnSWRgICAgICAgICAg4oaSIGB7IGFpRW5hYmxlZCwgcHJvdmlkZXJzOiBzdHJpbmdbXSB9YFxuICogIC0gYEdFVCAvaW50ZXJuYWwvYWkva2V5cy86b3JnSWQvOnByb3ZpZGVyYCDihpIgYHsgcHJvdmlkZXIsIGFwaUtleSB9YCAoYXVkaXRlZCBvbiBwbGF0Zm9ybSlcbiAqXG4gKiBLRVkgTUFURVJJQUwgSEFORExJTkcuIEEga2V5IGZldGNoZWQgaGVyZSBpcyBoZWxkIGluIHByb2Nlc3MgbWVtb3J5IGZvciBhdCBtb3N0XG4gKiB7QGxpbmsgT1JHX0FJX0tFWV9UVExfTVN9IChzbyBhIHJvdGF0ZWQgb3IgY2xlYXJlZCBrZXkgc3RvcHMgYmVpbmcgdXNlZCB3aXRoaW5cbiAqIHRoYXQgd2luZG93LCBhbmQgcGxhdGZvcm0ncyByZWFkIGF1ZGl0IGlzIG5vdCBvbmUgcm93IHBlciBtb2RlbCBjYWxsKSwgaXMgbmV2ZXJcbiAqIGxvZ2dlZCwgbmV2ZXIgd3JpdHRlbiB0byBSZWRpcyBvciBhbnkgc2hhcmVkIGNhY2hlLCBhbmQgbmV2ZXIgcGxhY2VkIGluIGFuIGVycm9yXG4gKiBtZXNzYWdlLiBDYWxsZXJzIGhhbmQgaXQgc3RyYWlnaHQgdG8gYSBtb2RlbCBmYWN0b3J5LlxuICpcbiAqIEZBSUxVUkUgSVMgTk9UIEEgRkFMTEJBQ0suIEFuIHVucmVhY2hhYmxlIHBsYXRmb3JtIG1ha2VzIHtAbGluayBmZXRjaE9yZ0FJQWNjZXNzfVxuICogdGhyb3cgYW4ge0BsaW5rIEFJQ29uZmlndXJhdGlvbkVycm9yfSByYXRoZXIgdGhhbiBhbnN3ZXIgXCJlbmFibGVkLCBubyBvcmcga2V5c1wiOlxuICogdGhhdCBhbnN3ZXIgd291bGQgc2lsZW50bHkgYmlsbCB0aGUgcGxhdGZvcm0ncyBrZXkgZm9yIGFuIG9yZyB0aGF0IGNvbmZpZ3VyZWQgaXRzXG4gKiBvd24sIGFuZCB3b3VsZCBydW4gQUkgZm9yIGFuIG9yZyB3aG9zZSBhZG1pbmlzdHJhdG9ycyBzd2l0Y2hlZCBpdCBvZmYuXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBOZXh0RnVuY3Rpb24sIFJlcXVlc3QsIFJlc3BvbnNlIH0gZnJvbSAnZXhwcmVzcyc7XG5pbXBvcnQgeyBjcmVhdGVTYWZlQ2xpZW50IH0gZnJvbSAnLi9odHRwLWNsaWVudC5qcyc7XG5pbXBvcnQgeyBzZXJ2aWNlSWRlbnRpdHkgfSBmcm9tICcuL3NlcnZpY2Uta2V5cy5qcyc7XG5pbXBvcnQgeyBBSUNvbmZpZ3VyYXRpb25FcnJvciwgQUlEaXNhYmxlZEVycm9yIH0gZnJvbSAnLi4vZXJyb3JzL2FwcC1lcnJvcnMuanMnO1xuaW1wb3J0IHsgZ2V0U2VydmljZUF1dGhIZWFkZXIgfSBmcm9tICcuLi9taWRkbGV3YXJlL3NlcnZpY2UtdG9rZW5zLmpzJztcbmltcG9ydCB7IEVycm9yQ29kZSB9IGZyb20gJy4uL3R5cGVzL2Vycm9yLWNvZGVzLmpzJztcbmltcG9ydCB7IGVudkludCB9IGZyb20gJy4uL3V0aWxzL2Vudi5qcyc7XG5pbXBvcnQgeyBzZW5kRXJyb3IgfSBmcm9tICcuLi91dGlscy9yZXNwb25zZS5qcyc7XG5pbXBvcnQgeyBzZXJ2aWNlRW5kcG9pbnQgfSBmcm9tICcuLi91dGlscy9zZXJ2aWNlLXJlZ2lzdHJ5LmpzJztcblxuLyoqIFBsYXRmb3JtIHBhdGhzIChleHBvcnRlZCBmb3IgdGhlIHBsYXRmb3JtIHJvdXRlLWNvdmVyYWdlICsgbWVzaCBkZWNsYXJhdGlvbnMpLiAqL1xuZXhwb3J0IGNvbnN0IE9SR19BSV9BQ0NFU1NfUEFUSCA9ICcvaW50ZXJuYWwvYWkvYWNjZXNzJztcbmV4cG9ydCBjb25zdCBPUkdfQUlfS0VZU19QQVRIID0gJy9pbnRlcm5hbC9haS9rZXlzJztcblxuLyoqIEhvdyBsb25nIGFuIG9yZydzIHN3aXRjaCArIGNvbmZpZ3VyZWQtcHJvdmlkZXIgbGlzdCBpcyByZXVzZWQgKGRlZmF1bHQgMzBzKS4gKi9cbmV4cG9ydCBjb25zdCBPUkdfQUlfQUNDRVNTX1RUTF9NUyA9IGVudkludCgnT1JHX0FJX0FDQ0VTU19UVExfTVMnLCAzMF8wMDAsIHsgbWluOiAwIH0pO1xuLyoqIEhvdyBsb25nIGEgZGVjcnlwdGVkIG9yZyBrZXkgaXMgaGVsZCBpbiBtZW1vcnkgKGRlZmF1bHQgNjBzOyAwIGRpc2FibGVzIGNhY2hpbmcpLiAqL1xuZXhwb3J0IGNvbnN0IE9SR19BSV9LRVlfVFRMX01TID0gZW52SW50KCdPUkdfQUlfS0VZX1RUTF9NUycsIDYwXzAwMCwgeyBtaW46IDAsIG1heDogMzAwXzAwMCB9KTtcblxuLyoqIEFuIG9yZydzIEFJIHBvc3R1cmUsIGFzIHBsYXRmb3JtIHJlcG9ydHMgaXQuICovXG5leHBvcnQgaW50ZXJmYWNlIE9yZ0FJQWNjZXNzIHtcbiAgLyoqIEZhbHNlIHdoZW4gdGhlIG9yZydzIGFkbWluaXN0cmF0b3JzIHN3aXRjaGVkIEFJIGZlYXR1cmVzIG9mZi4gKi9cbiAgYWlFbmFibGVkOiBib29sZWFuO1xuICAvKiogUHJvdmlkZXIgaWRzIHRoZSBvcmcgaGFzIGNvbmZpZ3VyZWQgaXRzIE9XTiBrZXkgZm9yIChjYXRhbG9nIGlkcykuICovXG4gIHByb3ZpZGVyczogc3RyaW5nW107XG59XG5cbmludGVyZmFjZSBDYWNoZWQ8VD4geyB2YWx1ZTogVDsgZXhwaXJlc0F0OiBudW1iZXIgfVxuXG5jb25zdCBhY2Nlc3NDYWNoZSA9IG5ldyBNYXA8c3RyaW5nLCBDYWNoZWQ8T3JnQUlBY2Nlc3M+PigpO1xuY29uc3Qga2V5Q2FjaGUgPSBuZXcgTWFwPHN0cmluZywgQ2FjaGVkPHN0cmluZz4+KCk7XG5cbmxldCBjbGllbnQ6IFJldHVyblR5cGU8dHlwZW9mIGNyZWF0ZVNhZmVDbGllbnQ+IHwgdW5kZWZpbmVkO1xuZnVuY3Rpb24gcGxhdGZvcm0oKTogUmV0dXJuVHlwZTx0eXBlb2YgY3JlYXRlU2FmZUNsaWVudD4ge1xuICBjbGllbnQgPz89IGNyZWF0ZVNhZmVDbGllbnQoeyAuLi5zZXJ2aWNlRW5kcG9pbnQoJ3BsYXRmb3JtJyksIHRpbWVvdXQ6IDVfMDAwIH0pO1xuICByZXR1cm4gY2xpZW50O1xufVxuXG4vKiogQSBzZXJ2aWNlIHRva2VuIHNjb3BlZCB0byB0aGUgb3JnIGJlaW5nIGFza2VkIGFib3V0IOKAlCBwbGF0Zm9ybSBiaW5kcyB0aGUgcmVhZCB0byBpdC4gKi9cbmZ1bmN0aW9uIGF1dGhGb3Iob3JnSWQ6IHN0cmluZyk6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4ge1xuICByZXR1cm4geyBBdXRob3JpemF0aW9uOiBnZXRTZXJ2aWNlQXV0aEhlYWRlcih7IHNlcnZpY2VOYW1lOiBzZXJ2aWNlSWRlbnRpdHkoKSwgb3JnSWQsIHJvbGU6ICdtZW1iZXInIH0pIH07XG59XG5cbi8qKlxuICogVGhlIG9yZydzIEFJIHN3aXRjaCBhbmQgdGhlIHByb3ZpZGVycyBpdCBoYXMgaXRzIG93biBrZXkgZm9yLiBDYWNoZWRcbiAqIHtAbGluayBPUkdfQUlfQUNDRVNTX1RUTF9NU30uIFRocm93cyB7QGxpbmsgQUlDb25maWd1cmF0aW9uRXJyb3J9ICg1MDMpIHdoZW4gcGxhdGZvcm1cbiAqIGNhbm5vdCBhbnN3ZXIg4oCUIHNlZSB0aGUgbW9kdWxlIGNvbW1lbnQgZm9yIHdoeSB0aGF0IGlzIG5vdCBcImVuYWJsZWRcIi5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGZldGNoT3JnQUlBY2Nlc3Mob3JnSWQ6IHN0cmluZyk6IFByb21pc2U8T3JnQUlBY2Nlc3M+IHtcbiAgY29uc3QgaGl0ID0gYWNjZXNzQ2FjaGUuZ2V0KG9yZ0lkKTtcbiAgaWYgKGhpdCAmJiBoaXQuZXhwaXJlc0F0ID4gRGF0ZS5ub3coKSkgcmV0dXJuIGhpdC52YWx1ZTtcblxuICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHBsYXRmb3JtKCkuZ2V0PHsgZGF0YT86IFBhcnRpYWw8T3JnQUlBY2Nlc3M+IH0gJiBQYXJ0aWFsPE9yZ0FJQWNjZXNzPj4oXG4gICAgYCR7T1JHX0FJX0FDQ0VTU19QQVRIfS8ke2VuY29kZVVSSUNvbXBvbmVudChvcmdJZCl9YCwgeyBoZWFkZXJzOiBhdXRoRm9yKG9yZ0lkKSB9LFxuICApO1xuICBjb25zdCBib2R5ID0gcmVzcG9uc2U/LmJvZHk7XG4gIGNvbnN0IGRhdGEgPSBib2R5Py5kYXRhID8/IGJvZHk7XG4gIGlmICghcmVzcG9uc2UgfHwgcmVzcG9uc2Uuc3RhdHVzQ29kZSAhPT0gMjAwIHx8IHR5cGVvZiBkYXRhPy5haUVuYWJsZWQgIT09ICdib29sZWFuJykge1xuICAgIHRocm93IG5ldyBBSUNvbmZpZ3VyYXRpb25FcnJvcignVGhlIG9yZ2FuaXphdGlvblxcJ3MgQUkgc2V0dGluZ3MgY291bGQgbm90IGJlIHJlYWQsIHNvIG5vIEFJIHJlcXVlc3Qgd2FzIG1hZGUuIFRyeSBhZ2FpbiBzaG9ydGx5LicpO1xuICB9XG4gIGNvbnN0IHZhbHVlOiBPcmdBSUFjY2VzcyA9IHtcbiAgICBhaUVuYWJsZWQ6IGRhdGEuYWlFbmFibGVkLFxuICAgIHByb3ZpZGVyczogQXJyYXkuaXNBcnJheShkYXRhLnByb3ZpZGVycykgPyBkYXRhLnByb3ZpZGVycy5maWx0ZXIoKHApOiBwIGlzIHN0cmluZyA9PiB0eXBlb2YgcCA9PT0gJ3N0cmluZycpIDogW10sXG4gIH07XG4gIGlmIChPUkdfQUlfQUNDRVNTX1RUTF9NUyA+IDApIGFjY2Vzc0NhY2hlLnNldChvcmdJZCwgeyB2YWx1ZSwgZXhwaXJlc0F0OiBEYXRlLm5vdygpICsgT1JHX0FJX0FDQ0VTU19UVExfTVMgfSk7XG4gIHJldHVybiB2YWx1ZTtcbn1cblxuLyoqXG4gKiBUaGUgb3JnJ3MgZGVjcnlwdGVkIGtleSBmb3IgYHByb3ZpZGVyYC4gQ2FsbCBPTkxZIGFmdGVyIHtAbGluayBmZXRjaE9yZ0FJQWNjZXNzfVxuICogbGlzdGVkIHRoZSBwcm92aWRlci4gVGhyb3dzIHtAbGluayBBSUNvbmZpZ3VyYXRpb25FcnJvcn0gd2hlbiB0aGUga2V5IGNhbm5vdCBiZVxuICogbG9hZGVkIOKAlCB0aGUgY2FsbGVyIG11c3QgdGhlbiBmYWlsIHRoZSByZXF1ZXN0LCBuZXZlciBmYWxsIGJhY2sgdG8gdGhlIHBsYXRmb3JtIGtleS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGZldGNoT3JnQUlLZXkob3JnSWQ6IHN0cmluZywgcHJvdmlkZXI6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gIGNvbnN0IGNhY2hlS2V5ID0gYCR7b3JnSWR9XFx1MDAwMCR7cHJvdmlkZXJ9YDtcbiAgY29uc3QgaGl0ID0ga2V5Q2FjaGUuZ2V0KGNhY2hlS2V5KTtcbiAgaWYgKGhpdCAmJiBoaXQuZXhwaXJlc0F0ID4gRGF0ZS5ub3coKSkgcmV0dXJuIGhpdC52YWx1ZTtcblxuICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHBsYXRmb3JtKCkuZ2V0PHsgZGF0YT86IHsgYXBpS2V5PzogdW5rbm93biB9OyBhcGlLZXk/OiB1bmtub3duIH0+KFxuICAgIGAke09SR19BSV9LRVlTX1BBVEh9LyR7ZW5jb2RlVVJJQ29tcG9uZW50KG9yZ0lkKX0vJHtlbmNvZGVVUklDb21wb25lbnQocHJvdmlkZXIpfWAsIHsgaGVhZGVyczogYXV0aEZvcihvcmdJZCkgfSxcbiAgKTtcbiAgY29uc3QgYXBpS2V5ID0gcmVzcG9uc2U/LmJvZHk/LmRhdGE/LmFwaUtleSA/PyByZXNwb25zZT8uYm9keT8uYXBpS2V5O1xuICBpZiAoIXJlc3BvbnNlIHx8IHJlc3BvbnNlLnN0YXR1c0NvZGUgIT09IDIwMCB8fCB0eXBlb2YgYXBpS2V5ICE9PSAnc3RyaW5nJyB8fCBhcGlLZXkubGVuZ3RoID09PSAwKSB7XG4gICAgLy8gU3RhdHVzIG9ubHk6IHRoZSBib2R5IGlzIG5ldmVyIGVjaG9lZCwgYW5kIHRoZSBrZXkgaXMgbmV2ZXIgaW4gYSBtZXNzYWdlLlxuICAgIHRocm93IG5ldyBBSUNvbmZpZ3VyYXRpb25FcnJvcihcbiAgICAgIGBUaGUgb3JnYW5pemF0aW9uJ3MgJHtwcm92aWRlcn0gQVBJIGtleSBjb3VsZCBub3QgYmUgbG9hZGVkLCBzbyB0aGUgcmVxdWVzdCB3YXMgbm90IHNlbnQuIGBcbiAgICAgICsgJ0l0IHdhcyBOT1QgcmV0cmllZCBvbiB0aGUgcGxhdGZvcm1cXCdzIGtleSDigJQgcmUtc2F2ZSB0aGUga2V5IGluIFNldHRpbmdzLCBvciB0cnkgYWdhaW4gc2hvcnRseS4nLFxuICAgICk7XG4gIH1cbiAgaWYgKE9SR19BSV9LRVlfVFRMX01TID4gMCkga2V5Q2FjaGUuc2V0KGNhY2hlS2V5LCB7IHZhbHVlOiBhcGlLZXksIGV4cGlyZXNBdDogRGF0ZS5ub3coKSArIE9SR19BSV9LRVlfVFRMX01TIH0pO1xuICByZXR1cm4gYXBpS2V5O1xufVxuXG4vKiogVGhyb3cge0BsaW5rIEFJRGlzYWJsZWRFcnJvcn0gKDQwMyBgQUlfRElTQUJMRURgKSB3aGVuIHRoZSBvcmcgc3dpdGNoZWQgQUkgb2ZmLiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGFzc2VydE9yZ0FJRW5hYmxlZChvcmdJZDogc3RyaW5nKTogUHJvbWlzZTxPcmdBSUFjY2Vzcz4ge1xuICBjb25zdCBhY2Nlc3MgPSBhd2FpdCBmZXRjaE9yZ0FJQWNjZXNzKG9yZ0lkKTtcbiAgaWYgKCFhY2Nlc3MuYWlFbmFibGVkKSB0aHJvdyBuZXcgQUlEaXNhYmxlZEVycm9yKCk7XG4gIHJldHVybiBhY2Nlc3M7XG59XG5cbi8qKlxuICogUm91dGUgZ3VhcmQ6IHJlZnVzZSBldmVyeSBBSSBlbnRyeSBwb2ludCBmb3IgYW4gb3JnIHdob3NlIGFkbWluaXN0cmF0b3JzIHN3aXRjaGVkXG4gKiBBSSBvZmYgKDQwMyBgQUlfRElTQUJMRURgKSwgb3Igd2hvc2Ugc2V0dGluZ3MgcGxhdGZvcm0gY2Fubm90IGNvbmZpcm0gKDUwMykuIE1vdW50XG4gKiBBRlRFUiBhdXRoIGFuZCBCRUZPUkUgYW55IHF1b3RhIHJlc2VydmF0aW9uLCBzbyBhIGRpc2FibGVkIG9yZyBpcyBuZXZlciBjaGFyZ2VkLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVxdWlyZU9yZ0FJRW5hYmxlZChyZXE6IFJlcXVlc3QsIHJlczogUmVzcG9uc2UsIG5leHQ6IE5leHRGdW5jdGlvbik6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCBvcmdJZCA9IHJlcS51c2VyPy5vcmdhbml6YXRpb25JZDtcbiAgaWYgKCFvcmdJZCkge1xuICAgIHNlbmRFcnJvcihyZXMsIDQwMywgJ05vIG9yZ2FuaXphdGlvbiBhc3NvY2lhdGVkIHdpdGggdGhpcyByZXF1ZXN0JywgRXJyb3JDb2RlLklOU1VGRklDSUVOVF9QRVJNSVNTSU9OUyk7XG4gICAgcmV0dXJuO1xuICB9XG4gIHRyeSB7XG4gICAgYXdhaXQgYXNzZXJ0T3JnQUlFbmFibGVkKFN0cmluZyhvcmdJZCkpO1xuICAgIG5leHQoKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgY29uc3QgZSA9IGVyciBhcyBBSURpc2FibGVkRXJyb3IgfCBBSUNvbmZpZ3VyYXRpb25FcnJvcjtcbiAgICBzZW5kRXJyb3IocmVzLCBlLnN0YXR1c0NvZGUgPz8gNTAzLCBlLm1lc3NhZ2UsIGUuY29kZSk7XG4gIH1cbn1cblxuLyoqIERyb3AgdGhlIGNhY2hlZCBvcmcgQUkgcG9zdHVyZSArIGtleXMgKHRlc3RzOyBhbiBvcmcgd2hvc2Ugc2V0dGluZ3MganVzdCBjaGFuZ2VkKS4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXNldE9yZ0FJQ2FjaGUob3JnSWQ/OiBzdHJpbmcpOiB2b2lkIHtcbiAgaWYgKG9yZ0lkID09PSB1bmRlZmluZWQpIHtcbiAgICBhY2Nlc3NDYWNoZS5jbGVhcigpO1xuICAgIGtleUNhY2hlLmNsZWFyKCk7XG4gICAgcmV0dXJuO1xuICB9XG4gIGFjY2Vzc0NhY2hlLmRlbGV0ZShvcmdJZCk7XG4gIGZvciAoY29uc3QgayBvZiBrZXlDYWNoZS5rZXlzKCkpIGlmIChrLnN0YXJ0c1dpdGgoYCR7b3JnSWR9XFx1MDAwMGApKSBrZXlDYWNoZS5kZWxldGUoayk7XG59XG4iXX0=
|
|
@@ -192,4 +192,4 @@ export function ackLatencySeconds(event) {
|
|
|
192
192
|
return undefined;
|
|
193
193
|
return (to - from) / 1000;
|
|
194
194
|
}
|
|
195
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnZXJkdXR5LWluYm91bmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2VydmljZXMvcGFnZXJkdXR5LWluYm91bmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQUV0Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBMkJHO0FBRUgsT0FBTyxFQUFFLFVBQVUsRUFBRSxlQUFlLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDckQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDbEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUU3QyxNQUFNLE1BQU0sR0FBRyxZQUFZLENBQUMsbUJBQW1CLENBQUMsQ0FBQztBQUVqRCxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRywyQkFBMkIsQ0FBQztBQUU3RDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F1Qkc7QUFDSCxNQUFNLFVBQVUsd0JBQXdCLENBQUMsT0FBd0IsRUFBRSxNQUEwQixFQUFFLE1BQWM7SUFDM0csSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLE1BQU07UUFBRSxPQUFPLEtBQUssQ0FBQztJQUNyQyxNQUFNLFFBQVEsR0FBRyxVQUFVLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDNUUsTUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDbEQsS0FBSyxNQUFNLElBQUksSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFF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QUM7QUFFRDs7Ozs7OztHQU9HO0FBQ0gsTUFBTSxVQUFVLGlCQUFpQixDQUFDLEtBQXlCO0lBQ3pELElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVU7UUFBRSxPQUFPLFNBQVMsQ0FBQztJQUM1RCxNQUFNLElBQUksR0FBRyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDakQsTUFBTSxFQUFFLEdBQUcsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ2hELElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLEdBQUcsSUFBSTtRQUFFLE9BQU8sU0FBUyxDQUFDO0lBQ2xGLE9BQU8sQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDO0FBQzVCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuLyoqXG4gKiBUaGUgSU5CT1VORCBoYWxmIG9mIG9uLWNhbGw6IHdoYXQgdGhlIHByb3ZpZGVyIHRlbGxzIHVzIGJhY2suXG4gKlxuICogRXZlcnl0aGluZyBlbHNlIGluIHRoaXMgZmVhdHVyZSBwdXNoZXMgb3V0d2FyZCDigJQgYW4gYWxlcnQgZmlyZXMsIGEgY2FzZVxuICogYXBwcm9hY2hlcyBpdHMgZGVhZGxpbmUsIGFuIGV2ZW50IGdvZXMgdG8gRXZlbnRzIHYyLiBUaGF0IGRpcmVjdGlvbiBjYW4gb25seVxuICogZXZlciByZXBvcnQgdGhhdCBhIHBhZ2Ugd2FzIEFDQ0VQVEVELCB3aGljaCBpcyBhIDIwMiBhbmQgbm90IGEgcGhvbmUgcmluZ2luZy5cbiAqIFRoaXMgbW9kdWxlIGlzIHRoZSBvbmx5IHNvdXJjZSBvZiB0aGUgdHdvIGZhY3RzIHRoYXQgYWN0dWFsbHkgbWF0dGVyOlxuICpcbiAqICAtIFNPTUVCT0RZIFBJQ0tFRCBJVCBVUCwgYW5kIHdoby4gYG9uY2FsbF9wYWdlc190b3RhbHtvdXRjb21lPVwiYWNjZXB0ZWRcIn1gXG4gKiAgICBjYW5ub3QgYW5zd2VyIFwid2FzIGFueW9uZSBhd2FrZSBhdCAwMzoxNFwiOyBhbiBhY2tub3dsZWRnZW1lbnQgY2FuLCBhbmRcbiAqICAgIGJvdW5kIHRvIGEgdXNlciBpZCBpdCBiZWNvbWVzIGFuIGF1ZGl0IHJlY29yZCByYXRoZXIgdGhhbiBhIGhpbnQuIFRoZVxuICogICAgcHJvdmlkZXIncyBvd24gYWNrIHZpZXcgaXMgbm90IGF1ZGl0YWJsZSBoZXJlIOKAlCBhIGNsaWNrIG9uIGEgbGluayBpbiB0aGVpclxuICogICAgVUkgaXMgbm90IGFuIGlkZW50aXR5IHRoaXMgc3lzdGVtIGNhbiBhdHRlc3QgdG8g4oCUIHNvIHRoZSB3ZWJob29rIGlzIHdoYXRcbiAqICAgIHR1cm5zIHRoZWlyIHN0YXRlIGNoYW5nZSBpbnRvIG91ciByZWNvcmQuXG4gKiAgLSBOT0JPRFkgSVMgU0NIRURVTEVELiBBIHJvdGEgd2l0aCBhIGhvbGUgbmV4dCBUdWVzZGF5IGhhcyB0byBiZSB2aXNpYmxlIG9uXG4gKiAgICBNT05EQVksIG5vdCBhdCAwMjowMCBUdWVzZGF5LiBUaGF0IGlzIGFuIGFic2VuY2UgY2hlY2ssIGFuZCBhYnNlbmNlIGNoZWNrc1xuICogICAgYXJlIHRoZSBvbmVzIHRoaXMgY29kZWJhc2Uga2VlcHMgZmluZGluZyBpdCBoYWQgbWlzc2VkLiBJdCBpcyBhbnN3ZXJlZCBieVxuICogICAgUkVBRElORyB0aGUgcHJvdmlkZXIncyBzY2hlZHVsZSByYXRoZXIgdGhhbiBvd25pbmcgb25lLlxuICpcbiAqIFRXTyBDUkVERU5USUFMUywgREVMSUJFUkFURUxZIFNFUEFSQVRFIEFORCBCT1RIIE9QVElPTkFMLlxuICogYFBBR0VSRFVUWV9XRUJIT09LX1NFQ1JFVGAgdmVyaWZpZXMgd2hhdCB0aGV5IHNlbmQgdXMuIGBQQUdFUkRVVFlfQVBJX1RPS0VOYFxuICogaXMgYSBSRVNUIHRva2VuIGZvciByZWFkaW5nIHRoZSByb3RhIGFuZCBpcyBzdHJpY3RseSBtb3JlIHBvd2VyZnVsIHRoYW4gdGhlXG4gKiBwZXItc2VydmljZSBpbnRlZ3JhdGlvbiBrZXkgdXNlZCBmb3Igc2VuZGluZyDigJQgYW4gaW50ZWdyYXRpb24ga2V5IGNhbiBvbmx5XG4gKiBjcmVhdGUgZXZlbnRzIG9uIG9uZSBzZXJ2aWNlLCB3aGlsZSBhIFJFU1QgdG9rZW4gcmVhZHMgaW5jaWRlbnRzLCBzY2hlZHVsZXNcbiAqIGFuZCB1c2VycyBhY2NvdW50LXdpZGUuIFNvIHRoZSByb3RhIGNoZWNrIGlzIG9wdC1pbiBvbiBpdHMgb3duIGNyZWRlbnRpYWwsXG4gKiBhbmQgYSBkZXBsb3ltZW50IHRoYXQgZG9lcyBub3Qgd2FudCB0byBoYW5kIG92ZXIgYSBSRVNUIHRva2VuIHNpbXBseSBkb2VzIG5vdFxuICogZ2V0IHRoZSBnYXVnZS4gSXQgbXVzdCBuZXZlciBiZSBpbmZlcnJlZCBmcm9tIHRoZSByb3V0aW5nIGtleS5cbiAqL1xuXG5pbXBvcnQgeyBjcmVhdGVIbWFjLCB0aW1pbmdTYWZlRXF1YWwgfSBmcm9tICdjcnlwdG8nO1xuaW1wb3J0IHsgZW52SW50LCBlbnZTdHIgfSBmcm9tICcuLi91dGlscy9lbnYuanMnO1xuaW1wb3J0IHsgY3JlYXRlTG9nZ2VyIH0gZnJvbSAnLi4vdXRpbHMvbG9nZ2VyLmpzJztcbmltcG9ydCB7IGVycm9yTWVzc2FnZSB9IGZyb20gJy4uL3V0aWxzL3Jlc3BvbnNlLmpzJztcbmltcG9ydCB7IHNhZmVGZXRjaCB9IGZyb20gJy4uL3V0aWxzL3NzcmYuanMnO1xuXG5jb25zdCBsb2dnZXIgPSBjcmVhdGVMb2dnZXIoJ3BhZ2VyZHV0eS1pbmJvdW5kJyk7XG5cbmV4cG9ydCBjb25zdCBQQUdFUkRVVFlfQVBJX1VSTCA9ICdodHRwczovL2FwaS5wYWdlcmR1dHkuY29tJztcblxuLyoqXG4gKiBWZXJpZnkgYSBQYWdlckR1dHkgdjMgd2ViaG9vayBzaWduYXR1cmUuXG4gKlxuICogVGhlIHNjaGVtZTogYFgtUGFnZXJEdXR5LVNpZ25hdHVyZTogdjE9PGxvd2VyY2FzZSBoZXg+YCwgYW4gSE1BQy1TSEEyNTYgb3ZlclxuICogdGhlIFJBVyByZXF1ZXN0IGJvZHkuIFRocmVlIHByb3BlcnRpZXMgb2YgaXQgYXJlIGVhc3kgdG8gZ2V0IHdyb25nIGFuZCBlYWNoXG4gKiBvbmUgaXMgYSBob2xlOlxuICpcbiAqICAtIFRIRSBSQVcgQk9EWSwgbm90IGEgcmUtc2VyaWFsaXplZCBvYmplY3QuIGBKU09OLnN0cmluZ2lmeShyZXEuYm9keSlgIGFmdGVyXG4gKiAgICBhIEpTT04gcGFyc2VyIGhhcyBydW4gcHJvZHVjZXMgZGlmZmVyZW50IGJ5dGVzIChrZXkgb3JkZXIsIHdoaXRlc3BhY2UsXG4gKiAgICBudW1iZXIgZm9ybWF0dGluZyksIHNvIGV2ZXJ5IHNpZ25hdHVyZSBmYWlscyBhbmQgdGhlIG9idmlvdXMgXCJmaXhcIiBpcyB0b1xuICogICAgc3RvcCBjaGVja2luZy4gVGhlIHJvdXRlIHRoZXJlZm9yZSBtb3VudHMgYGV4cHJlc3MucmF3YC5cbiAqICAtIE1VTFRJUExFIFNJR05BVFVSRVMuIFRoZSBoZWFkZXIgbWF5IGNhcnJ5IHNldmVyYWwgY29tbWEtc2VwYXJhdGVkIGB2MT1gXG4gKiAgICB2YWx1ZXMsIHdoaWNoIGlzIGhvdyBQYWdlckR1dHkgcm90YXRlcyBhIHNlY3JldCB3aXRob3V0IGRvd250aW1lLiBDaGVja2luZ1xuICogICAgb25seSB0aGUgZmlyc3QgYnJlYWtzIGR1cmluZyB0aGVpciByb3RhdGlvbiwgc28gQU5ZIG1hdGNoIGlzIGFjY2VwdGVkIOKAlFxuICogICAgdGhlIHNhbWUgb3ZlcmxhcCB0aGlzIHJlcG8gYWxyZWFkeSBydW5zIGZvciBpdHMgb3duIHJlbGF5IHRva2VuLlxuICogIC0gQ09OU1RBTlQgVElNRS4gQ29tcGFyZWQgd2l0aCBgdGltaW5nU2FmZUVxdWFsYCBvbiBlcXVhbC1sZW5ndGggYnVmZmVycyxcbiAqICAgIGJlY2F1c2UgYSBieXRlLWF0LWEtdGltZSBjb21wYXJpc29uIGxlYWtzIHRoZSBleHBlY3RlZCBkaWdlc3QgdG8gYW55b25lXG4gKiAgICB3aG8gY2FuIHBvc3QgaGVyZSByZXBlYXRlZGx5LlxuICpcbiAqIE5PIFNFQ1JFVCBNRUFOUyBOTy4gQW4gdW52ZXJpZmllZCB3ZWJob29rIHRoYXQgbW92ZXMgYW4gYXVkaXQgcmVjb3JkIGFuZCBhXG4gKiBtZXRyaWMgaXMgYSB3YXkgZm9yIGFueW9uZSB3aG8gbGVhcm5zIHRoZSBVUkwgdG8gYXNzZXJ0IHRoYXQgYSBwYWdlIHdhc1xuICogaGFuZGxlZCDigJQgdGhlIG9uZSBsaWUgdGhhdCB3b3VsZCBtYWtlIHRoZSB3aG9sZSBmZWF0dXJlIHJlcG9ydCBjb3ZlcmFnZSBpdFxuICogZG9lcyBub3QgaGF2ZS4gRmFpbHMgY2xvc2VkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdmVyaWZ5UGFnZXJEdXR5U2lnbmF0dXJlKHJhd0JvZHk6IEJ1ZmZlciB8IHN0cmluZywgaGVhZGVyOiBzdHJpbmcgfCB1bmRlZmluZWQsIHNlY3JldDogc3RyaW5nKTogYm9vbGVhbiB7XG4gIGlmICghc2VjcmV0IHx8ICFoZWFkZXIpIHJldHVybiBmYWxzZTtcbiAgY29uc3QgZXhwZWN0ZWQgPSBjcmVhdGVIbWFjKCdzaGEyNTYnLCBzZWNyZXQpLnVwZGF0ZShyYXdCb2R5KS5kaWdlc3QoJ2hleCcpO1xuICBjb25zdCBleHBlY3RlZEJ1ZiA9IEJ1ZmZlci5mcm9tKGV4cGVjdGVkLCAndXRmOCcpO1xuICBmb3IgKGNvbnN0IHBhcnQgb2YgaGVhZGVyLnNwbGl0KCcsJykpIHtcbiAgICBjb25zdCB2YWx1ZSA9IHBhcnQudHJpbSgpO1xuICAgIGlmICghdmFsdWUuc3RhcnRzV2l0aCgndjE9JykpIGNvbnRpbnVlO1xuICAgIGNvbnN0IGdpdmVuID0gQnVmZmVyLmZyb20odmFsdWUuc2xpY2UoMyksICd1dGY4Jyk7XG4gICAgLy8gTGVuZ3RoLWd1YXJkZWQ6IHRpbWluZ1NhZmVFcXVhbCBUSFJPV1Mgb24gYSBsZW5ndGggbWlzbWF0Y2gsIGFuZCBhblxuICAgIC8vIGF0dGFja2VyIGNvbnRyb2xzIHRoaXMgbGVuZ3RoLlxuICAgIGlmIChnaXZlbi5sZW5ndGggPT09IGV4cGVjdGVkQnVmLmxlbmd0aCAmJiB0aW1pbmdTYWZlRXF1YWwoZ2l2ZW4sIGV4cGVjdGVkQnVmKSkgcmV0dXJuIHRydWU7XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE9uQ2FsbEluYm91bmRDb25maWcge1xuICB3ZWJob29rU2VjcmV0OiBzdHJpbmc7XG4gIGFwaVRva2VuOiBzdHJpbmc7XG4gIGFwaVVybDogc3RyaW5nO1xuICAvKiogSG93IGZhciBhaGVhZCB0aGUgcm90YSBjaGVjayBsb29rcy4gVGhlIGdhcCBhbGVydCBpcyBvbmx5IGFzIHVzZWZ1bCBhcyB0aGlzLiAqL1xuICBsb29rYWhlYWRIb3VyczogbnVtYmVyO1xuICAvKiogRXNjYWxhdGlvbiBwb2xpY3kgaWRzIHRvIGNoZWNrIGNvdmVyYWdlIGZvcjsgZW1wdHkgbWVhbnMgdGhlIHdob2xlIGFjY291bnQuICovXG4gIGVzY2FsYXRpb25Qb2xpY3lJZHM6IHN0cmluZ1tdO1xuICB0aW1lb3V0TXM6IG51bWJlcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG9uQ2FsbEluYm91bmRDb25maWcoKTogT25DYWxsSW5ib3VuZENvbmZpZyB7XG4gIHJldHVybiB7XG4gICAgd2ViaG9va1NlY3JldDogZW52U3RyKCdQQUdFUkRVVFlfV0VCSE9PS19TRUNSRVQnLCAnJyksXG4gICAgYXBpVG9rZW46IGVudlN0cignUEFHRVJEVVRZX0FQSV9UT0tFTicsICcnKSxcbiAgICBhcGlVcmw6IGVudlN0cignUEFHRVJEVVRZX0FQSV9VUkwnLCBQQUdFUkRVVFlfQVBJX1VSTCksXG4gICAgLy8gNDggaG91cnM6IGZhciBlbm91Z2ggdG8gY2F0Y2ggYSBob2xlIG92ZXIgYSB3ZWVrZW5kIG9uIHRoZSBGcmlkYXksIGFuZFxuICAgIC8vIHNob3J0IGVub3VnaCB0aGF0IGEgcm90YSBtYWludGFpbmVkIGEgd2VlayBvdXQgZG9lcyBub3QgYWxlcnQgZm9yZXZlci5cbiAgICBsb29rYWhlYWRIb3VyczogZW52SW50KCdPTkNBTExfU0NIRURVTEVfR0FQX0xPT0tBSEVBRF9IT1VSUycsIDQ4LCB7IG1pbjogMSwgbWF4OiAyMTYwIH0pLFxuICAgIGVzY2FsYXRpb25Qb2xpY3lJZHM6IGVudlN0cignUEFHRVJEVVRZX0VTQ0FMQVRJT05fUE9MSUNZX0lEUycsICcnKVxuICAgICAgLnNwbGl0KCcsJykubWFwKCh4KSA9PiB4LnRyaW0oKSkuZmlsdGVyKEJvb2xlYW4pLFxuICAgIHRpbWVvdXRNczogZW52SW50KCdPTkNBTExfRVZFTlRTX1RJTUVPVVRfTVMnLCA1MDAwLCB7IG1pbjogMSB9KSxcbiAgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSb3RhQ292ZXJhZ2Uge1xuICAvKiogV2hldGhlciB0aGUgcXVlc3Rpb24gY291bGQgYmUgYW5zd2VyZWQgYXQgYWxsLiAqL1xuICBrbm93bjogYm9vbGVhbjtcbiAgLyoqIERpc3RpbmN0IG9uLWNhbGwgZW50cmllcyBjb3ZlcmluZyBhbnkgcGFydCBvZiB0aGUgd2luZG93LiAqL1xuICBlbnRyaWVzOiBudW1iZXI7XG4gIC8qKiBTZWNvbmRzIG9mIHRoZSBsb29rYWhlYWQgd2luZG93IHdpdGggbm9ib2R5IG9uIGNhbGwsIDAgd2hlbiBmdWxseSBjb3ZlcmVkLiAqL1xuICB1bmNvdmVyZWRTZWNvbmRzOiBudW1iZXI7XG59XG5cbi8qKlxuICogQXNrIHRoZSBwcm92aWRlciB3aGV0aGVyIGFueW9uZSBpcyBvbiBjYWxsIGFjcm9zcyB0aGUgbG9va2FoZWFkIHdpbmRvdy5cbiAqXG4gKiBXSEFUIFRISVMgQ0FOIEFORCBDQU5OT1QgQ09OQ0xVREUsIGJlY2F1c2UgdGhlIGRpZmZlcmVuY2UgZGVjaWRlcyB3aGV0aGVyIHRoZVxuICogYWxlcnQgYnVpbHQgb24gaXQgaXMgaG9uZXN0LiBgR0VUIC9vbmNhbGxzP3NpbmNlJnVudGlsYCByZXR1cm5zIHRoZSBvbi1jYWxsXG4gKiBlbnRyaWVzIE9WRVJMQVBQSU5HIGEgd2luZG93OyBpdCBkb2VzIG5vdCByZXR1cm4gdGhlIGhvbGVzLiBSZWNvbnN0cnVjdGluZ1xuICogZXhhY3QgaG9sZXMgd291bGQgbWVhbiBzdGl0Y2hpbmcgZXZlcnkgZW50cnkncyBpbnRlcnZhbCwgYW5kIGFuIGVudHJ5J3NcbiAqIGBzdGFydGAvYGVuZGAgYXJlIG51bGwgZm9yIGFuIGFsd2F5cy1vbiBwb2xpY3kg4oCUIHNvIGEgcHJlY2lzZVxuICogXCJ1bmNvdmVyZWQgc2Vjb25kc1wiIGlzIG5vdCBhdmFpbGFibGUgZnJvbSB0aGlzIGVuZHBvaW50IHdpdGhvdXQgYSBsb3Qgb2ZcbiAqIGFyaXRobWV0aWMgdGhhdCB3b3VsZCBiZSB3cm9uZyBpbiB0aGUgYWx3YXlzLW9uIGNhc2UuXG4gKlxuICogU28gdGhpcyBhbnN3ZXJzIHRoZSBxdWVzdGlvbiBpdCBDQU4gYW5zd2VyIGV4YWN0bHk6IGlzIHRoZSB3aW5kb3cgY292ZXJlZCBhdFxuICogYWxsLiBaZXJvIGVudHJpZXMgb3ZlciB0aGUgbmV4dCBOIGhvdXJzIG1lYW5zIG5vYm9keSBpcyBzY2hlZHVsZWQsIHdoaWNoIGlzXG4gKiB0aGUgZmFpbHVyZSB3b3J0aCBwYWdpbmcgYWJvdXQgYW5kIHRoZSBvbmUgYSByb3RhIG1haW50YWluZXIgYWN0dWFsbHkgbWFrZXMuXG4gKiBgdW5jb3ZlcmVkU2Vjb25kc2AgaXMgdGhlcmVmb3JlIHRoZSB3aG9sZSB3aW5kb3cgb3Igbm90aGluZywgYW5kIGl0IGlzIGFcbiAqIGRlbGliZXJhdGUgdW5kZXItcmVwb3J0IHJhdGhlciB0aGFuIGEgZ3Vlc3Mg4oCUIGEgcGFydGlhbCBob2xlIHJlYWRzIGFzIGNvdmVyZWRcbiAqIGhlcmUsIGFuZCBjbGFpbWluZyBvdGhlcndpc2Ugd291bGQgYmUgaW52ZW50aW5nIHByZWNpc2lvbi5cbiAqXG4gKiBga25vd246IGZhbHNlYCB3aGVuIHRoZXJlIGlzIG5vIEFQSSB0b2tlbiBvciB0aGUgY2FsbCBmYWlscywgYW5kIHRoZSBjYWxsZXJcbiAqIG11c3QgcHVibGlzaCBOT1RISU5HIGluIHRoYXQgY2FzZS4gQSBnYXVnZSBvZiAwIHdvdWxkIHNheSBcImZ1bGx5IGNvdmVyZWRcIixcbiAqIHdoaWNoIGlzIGV4YWN0bHkgdGhlIGxpZSB0aGlzIGNoZWNrIGV4aXN0cyB0byBwcmV2ZW50LlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZmV0Y2hSb3RhQ292ZXJhZ2UoY2ZnOiBPbkNhbGxJbmJvdW5kQ29uZmlnID0gb25DYWxsSW5ib3VuZENvbmZpZygpKTogUHJvbWlzZTxSb3RhQ292ZXJhZ2U+IHtcbiAgY29uc3Qgd2luZG93U2Vjb25kcyA9IGNmZy5sb29rYWhlYWRIb3VycyAqIDM2MDA7XG4gIGlmICghY2ZnLmFwaVRva2VuKSByZXR1cm4geyBrbm93bjogZmFsc2UsIGVudHJpZXM6IDAsIHVuY292ZXJlZFNlY29uZHM6IDAgfTtcblxuICBjb25zdCBzaW5jZSA9IG5ldyBEYXRlKCk7XG4gIGNvbnN0IHVudGlsID0gbmV3IERhdGUoc2luY2UuZ2V0VGltZSgpICsgd2luZG93U2Vjb25kcyAqIDEwMDApO1xuICBjb25zdCBwYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKHtcbiAgICBzaW5jZTogc2luY2UudG9JU09TdHJpbmcoKSxcbiAgICB1bnRpbDogdW50aWwudG9JU09TdHJpbmcoKSxcbiAgICBsaW1pdDogJzUwJyxcbiAgfSk7XG4gIGZvciAoY29uc3QgaWQgb2YgY2ZnLmVzY2FsYXRpb25Qb2xpY3lJZHMpIHBhcmFtcy5hcHBlbmQoJ2VzY2FsYXRpb25fcG9saWN5X2lkc1tdJywgaWQpO1xuXG4gIHRyeSB7XG4gICAgY29uc3QgcmVzcCA9IGF3YWl0IHNhZmVGZXRjaChgJHtjZmcuYXBpVXJsfS9vbmNhbGxzPyR7cGFyYW1zLnRvU3RyaW5nKCl9YCwge1xuICAgICAgbWV0aG9kOiAnR0VUJyxcbiAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgLy8gUGFnZXJEdXR5J3MgUkVTVCBzY2hlbWUuIGBBY2NlcHRgIHBpbnMgdGhlIEFQSSB2ZXJzaW9uOyB3aXRob3V0IGl0XG4gICAgICAgIC8vIHRoZSByZXNwb25zZSBzaGFwZSBpcyB3aGF0ZXZlciB0aGVpciBkZWZhdWx0IGhhcHBlbnMgdG8gYmUuXG4gICAgICAgIEF1dGhvcml6YXRpb246IGBUb2tlbiB0b2tlbj0ke2NmZy5hcGlUb2tlbn1gLFxuICAgICAgICBBY2NlcHQ6ICdhcHBsaWNhdGlvbi92bmQucGFnZXJkdXR5K2pzb247dmVyc2lvbj0yJyxcbiAgICAgIH0sXG4gICAgICB0aW1lb3V0TXM6IGNmZy50aW1lb3V0TXMsXG4gICAgfSk7XG4gICAgaWYgKHJlc3AucmVkaXJlY3RlZCB8fCAhcmVzcC5vaykge1xuICAgICAgbG9nZ2VyLndhcm4oJ0NvdWxkIG5vdCByZWFkIHRoZSBvbi1jYWxsIHJvdGEnLCB7IHN0YXR1czogcmVzcC5zdGF0dXMsIHJlZGlyZWN0ZWQ6IHJlc3AucmVkaXJlY3RlZCB9KTtcbiAgICAgIHJldHVybiB7IGtub3duOiBmYWxzZSwgZW50cmllczogMCwgdW5jb3ZlcmVkU2Vjb25kczogMCB9O1xuICAgIH1cbiAgICBjb25zdCBib2R5ID0gYXdhaXQgcmVzcC5qc29uKCkgYXMgeyBvbmNhbGxzPzogdW5rbm93bltdIH07XG4gICAgY29uc3QgZW50cmllcyA9IEFycmF5LmlzQXJyYXkoYm9keS5vbmNhbGxzKSA/IGJvZHkub25jYWxscy5sZW5ndGggOiAwO1xuICAgIHJldHVybiB7IGtub3duOiB0cnVlLCBlbnRyaWVzLCB1bmNvdmVyZWRTZWNvbmRzOiBlbnRyaWVzID4gMCA/IDAgOiB3aW5kb3dTZWNvbmRzIH07XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGxvZ2dlci53YXJuKCdDb3VsZCBub3QgcmVhY2ggdGhlIG9uLWNhbGwgcm90YSBBUEknLCB7IGVycm9yOiBlcnJvck1lc3NhZ2UoZXJyKSB9KTtcbiAgICByZXR1cm4geyBrbm93bjogZmFsc2UsIGVudHJpZXM6IDAsIHVuY292ZXJlZFNlY29uZHM6IDAgfTtcbiAgfVxufVxuXG4vKiogVGhlIHdlYmhvb2sgZXZlbnRzIHRoaXMgc3lzdGVtIGFjdHMgb24uIEV2ZXJ5dGhpbmcgZWxzZSBpcyBjb3VudGVkIGFuZCBkcm9wcGVkLiAqL1xuZXhwb3J0IHR5cGUgT25DYWxsV2ViaG9va0V2ZW50VHlwZSA9XG4gIHwgJ2luY2lkZW50LmFja25vd2xlZGdlZCdcbiAgfCAnaW5jaWRlbnQuZXNjYWxhdGVkJ1xuICB8ICdpbmNpZGVudC5yZXNvbHZlZCdcbiAgfCAnaW5jaWRlbnQudW5hY2tub3dsZWRnZWQnO1xuXG5leHBvcnQgaW50ZXJmYWNlIE9uQ2FsbFdlYmhvb2tFdmVudCB7XG4gIGV2ZW50VHlwZTogc3RyaW5nO1xuICAvKiogUHJvdmlkZXIgaW5jaWRlbnQgaWQg4oCUIHRoZSBqb2luIGJhY2sgdG8gd2hhdCB3ZSBzZW50LiAqL1xuICBpbmNpZGVudElkPzogc3RyaW5nO1xuICAvKiogT3VyIG93biBgZGVkdXBfa2V5YCwgd2hlbiB0aGUgcHJvdmlkZXIgZWNob2VzIGl0LiAqL1xuICBkZWR1cEtleT86IHN0cmluZztcbiAgLyoqIFdobyBhY3RlZCwgYXMgdGhlIHByb3ZpZGVyIGtub3dzIHRoZW0uIEFuIGlkIGFuZCBhbiBlbWFpbCwgbmV2ZXIgYSBzZXNzaW9uLiAqL1xuICBhZ2VudElkPzogc3RyaW5nO1xuICBhZ2VudFN1bW1hcnk/OiBzdHJpbmc7XG4gIC8qKiBXaGVuIHRoZSBpbmNpZGVudCB3YXMgY3JlYXRlZCwgZm9yIHRoZSBhY2stbGF0ZW5jeSBtZWFzdXJlbWVudC4gKi9cbiAgY3JlYXRlZEF0Pzogc3RyaW5nO1xuICBvY2N1cnJlZEF0Pzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFJlZHVjZSBhIHYzIHdlYmhvb2sgYm9keSB0byB0aGUgZmllbGRzIHRoaXMgc3lzdGVtIHVzZXMuXG4gKlxuICogUmV0dXJucyBgbnVsbGAgZm9yIGFueXRoaW5nIHRoYXQgaXMgbm90IGEgcmVjb2duaXNlZCBpbmNpZGVudCBldmVudCwgd2hpY2hcbiAqIHRoZSBjYWxsZXIgQ09VTlRTIHJhdGhlciB0aGFuIGRyb3BzIHNpbGVudGx5IOKAlCBhbiB1bnJlY29nbmlzZWQgZXZlbnQgdHlwZSBpc1xuICogdXN1YWxseSBhIHN1YnNjcmlwdGlvbiBjb25maWd1cmVkIHdpZGVyIHRoYW4gdGhlIGhhbmRsZXIsIGFuZCBhIGNvdW50IGlzIGhvd1xuICogdGhhdCBiZWNvbWVzIHZpc2libGUgaW5zdGVhZCBvZiBiZWluZyBpbmZlcnJlZCBmcm9tIG5vdGhpbmcgaGFwcGVuaW5nLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VPbkNhbGxXZWJob29rKGJvZHk6IHVua25vd24pOiBPbkNhbGxXZWJob29rRXZlbnQgfCBudWxsIHtcbiAgY29uc3QgZXZlbnQgPSAoYm9keSBhcyB7IGV2ZW50PzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gfSk/LmV2ZW50O1xuICBpZiAoIWV2ZW50IHx8IHR5cGVvZiBldmVudC5ldmVudF90eXBlICE9PSAnc3RyaW5nJykgcmV0dXJuIG51bGw7XG4gIGNvbnN0IGRhdGEgPSAoZXZlbnQuZGF0YSA/PyB7fSkgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIGNvbnN0IGFnZW5jeSA9IChldmVudC5hZ2VudCA/PyB7fSkgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIHJldHVybiB7XG4gICAgZXZlbnRUeXBlOiBldmVudC5ldmVudF90eXBlLFxuICAgIGluY2lkZW50SWQ6IHR5cGVvZiBkYXRhLmlkID09PSAnc3RyaW5nJyA/IGRhdGEuaWQgOiB1bmRlZmluZWQsXG4gICAgLy8gUGFnZXJEdXR5IGVjaG9lcyB0aGUgdHJpZ2dlcidzIGRlZHVwX2tleSBvbiB0aGUgaW5jaWRlbnQsIHdoaWNoIGlzIHRoZVxuICAgIC8vIG9ubHkgbGluayBiYWNrIHRvIFdISUNIIGNhc2Ugb3IgYWxlcnQgdGhpcyB3YXMg4oCUIHRoZWlyIGluY2lkZW50IGlkIGlzXG4gICAgLy8gdGhlaXJzIGFuZCBtZWFucyBub3RoaW5nIG9uIHRoaXMgc2lkZS5cbiAgICBkZWR1cEtleTogdHlwZW9mIGRhdGEuZGVkdXBfa2V5ID09PSAnc3RyaW5nJyA/IGRhdGEuZGVkdXBfa2V5IDogdW5kZWZpbmVkLFxuICAgIGFnZW50SWQ6IHR5cGVvZiBhZ2VuY3kuaWQgPT09ICdzdHJpbmcnID8gYWdlbmN5LmlkIDogdW5kZWZpbmVkLFxuICAgIGFnZW50U3VtbWFyeTogdHlwZW9mIGFnZW5jeS5zdW1tYXJ5ID09PSAnc3RyaW5nJyA/IGFnZW5jeS5zdW1tYXJ5IDogdW5kZWZpbmVkLFxuICAgIGNyZWF0ZWRBdDogdHlwZW9mIGRhdGEuY3JlYXRlZF9hdCA9PT0gJ3N0cmluZycgPyBkYXRhLmNyZWF0ZWRfYXQgOiB1bmRlZmluZWQsXG4gICAgb2NjdXJyZWRBdDogdHlwZW9mIGV2ZW50Lm9jY3VycmVkX2F0ID09PSAnc3RyaW5nJyA/IGV2ZW50Lm9jY3VycmVkX2F0IDogdW5kZWZpbmVkLFxuICB9O1xufVxuXG4vKipcbiAqIFNlY29uZHMgYmV0d2VlbiB0aGUgaW5jaWRlbnQgYmVpbmcgcmFpc2VkIGFuZCB0aGlzIGV2ZW50LlxuICpcbiAqIFJldHVybnMgYHVuZGVmaW5lZGAgcmF0aGVyIHRoYW4gMCB3aGVuIGVpdGhlciB0aW1lc3RhbXAgaXMgbWlzc2luZyBvciB0aGVcbiAqIGFyaXRobWV0aWMgaXMgbm9uc2Vuc2U6IGEgMCB3b3VsZCBsYW5kIGluIHRoZSBmaXJzdCBoaXN0b2dyYW0gYnVja2V0IGFuZCByZWFkXG4gKiBhcyBhbiBpbnN0YW50IGFja25vd2xlZGdlbWVudCwgd2hpY2ggaXMgdGhlIG1vc3QgZmxhdHRlcmluZyBwb3NzaWJsZSBsaWVcbiAqIGFib3V0IHJlc3BvbnNlIHRpbWUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhY2tMYXRlbmN5U2Vjb25kcyhldmVudDogT25DYWxsV2ViaG9va0V2ZW50KTogbnVtYmVyIHwgdW5kZWZpbmVkIHtcbiAgaWYgKCFldmVudC5jcmVhdGVkQXQgfHwgIWV2ZW50Lm9jY3VycmVkQXQpIHJldHVybiB1bmRlZmluZWQ7XG4gIGNvbnN0IGZyb20gPSBuZXcgRGF0ZShldmVudC5jcmVhdGVkQXQpLmdldFRpbWUoKTtcbiAgY29uc3QgdG8gPSBuZXcgRGF0ZShldmVudC5vY2N1cnJlZEF0KS5nZXRUaW1lKCk7XG4gIGlmICghTnVtYmVyLmlzRmluaXRlKGZyb20pIHx8ICFOdW1iZXIuaXNGaW5pdGUodG8pIHx8IHRvIDwgZnJvbSkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgcmV0dXJuICh0byAtIGZyb20pIC8gMTAwMDtcbn1cbiJdfQ==
|
|
195
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnZXJkdXR5LWluYm91bmQuanMiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZXJ2aWNlcy9wYWdlcmR1dHktaW5ib3VuZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBRXRDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0EyQkc7QUFFSCxPQUFPLEVBQUUsVUFBVSxFQUFFLGVBQWUsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUNyRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDcEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRTdDLE1BQU0sTUFBTSxHQUFHLFlBQVksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0FBRWpELE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLDJCQUEyQixDQUFDO0FBRTdEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXVCRztBQUNILE1BQU0sVUFBVSx3QkFBd0IsQ0FBQyxPQUF3QixFQUFFLE1BQTBCLEVBQUUsTUFBYztJQUMzRyxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsTUFBTTtRQUFFLE9BQU8sS0FBSyxDQUFDO0lBQ3JDLE1BQU0sUUFBUSxHQUFHLFVBQVUsQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM1RSxNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNsRCxLQUFLLE1BQU0sSUFBSSxJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUNyQyxNQUFN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T0c7QUFDSCxNQUFNLFVBQVUsaUJBQWlCLENBQUMsS0FBeUI7SUFDekQsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVTtRQUFFLE9BQU8sU0FBUyxDQUFDO0lBQzVELE1BQU0sSUFBSSxHQUFHLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNqRCxNQUFNLEVBQUUsR0FBRyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDaEQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsR0FBRyxJQUFJO1FBQUUsT0FBTyxTQUFTLENBQUM7SUFDbEYsT0FBTyxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUM7QUFDNUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG4vKipcbiAqIFRoZSBJTkJPVU5EIGhhbGYgb2Ygb24tY2FsbDogd2hhdCB0aGUgcHJvdmlkZXIgdGVsbHMgdXMgYmFjay5cbiAqXG4gKiBFdmVyeXRoaW5nIGVsc2UgaW4gdGhpcyBmZWF0dXJlIHB1c2hlcyBvdXR3YXJkIOKAlCBhbiBhbGVydCBmaXJlcywgYSBjYXNlXG4gKiBhcHByb2FjaGVzIGl0cyBkZWFkbGluZSwgYW4gZXZlbnQgZ29lcyB0byBFdmVudHMgdjIuIFRoYXQgZGlyZWN0aW9uIGNhbiBvbmx5XG4gKiBldmVyIHJlcG9ydCB0aGF0IGEgcGFnZSB3YXMgQUNDRVBURUQsIHdoaWNoIGlzIGEgMjAyIGFuZCBub3QgYSBwaG9uZSByaW5naW5nLlxuICogVGhpcyBtb2R1bGUgaXMgdGhlIG9ubHkgc291cmNlIG9mIHRoZSB0d28gZmFjdHMgdGhhdCBhY3R1YWxseSBtYXR0ZXI6XG4gKlxuICogIC0gU09NRUJPRFkgUElDS0VEIElUIFVQLCBhbmQgd2hvLiBgb25jYWxsX3BhZ2VzX3RvdGFse291dGNvbWU9XCJhY2NlcHRlZFwifWBcbiAqICAgIGNhbm5vdCBhbnN3ZXIgXCJ3YXMgYW55b25lIGF3YWtlIGF0IDAzOjE0XCI7IGFuIGFja25vd2xlZGdlbWVudCBjYW4sIGFuZFxuICogICAgYm91bmQgdG8gYSB1c2VyIGlkIGl0IGJlY29tZXMgYW4gYXVkaXQgcmVjb3JkIHJhdGhlciB0aGFuIGEgaGludC4gVGhlXG4gKiAgICBwcm92aWRlcidzIG93biBhY2sgdmlldyBpcyBub3QgYXVkaXRhYmxlIGhlcmUg4oCUIGEgY2xpY2sgb24gYSBsaW5rIGluIHRoZWlyXG4gKiAgICBVSSBpcyBub3QgYW4gaWRlbnRpdHkgdGhpcyBzeXN0ZW0gY2FuIGF0dGVzdCB0byDigJQgc28gdGhlIHdlYmhvb2sgaXMgd2hhdFxuICogICAgdHVybnMgdGhlaXIgc3RhdGUgY2hhbmdlIGludG8gb3VyIHJlY29yZC5cbiAqICAtIE5PQk9EWSBJUyBTQ0hFRFVMRUQuIEEgcm90YSB3aXRoIGEgaG9sZSBuZXh0IFR1ZXNkYXkgaGFzIHRvIGJlIHZpc2libGUgb25cbiAqICAgIE1PTkRBWSwgbm90IGF0IDAyOjAwIFR1ZXNkYXkuIFRoYXQgaXMgYW4gYWJzZW5jZSBjaGVjaywgYW5kIGFic2VuY2UgY2hlY2tzXG4gKiAgICBhcmUgdGhlIG9uZXMgdGhpcyBjb2RlYmFzZSBrZWVwcyBmaW5kaW5nIGl0IGhhZCBtaXNzZWQuIEl0IGlzIGFuc3dlcmVkIGJ5XG4gKiAgICBSRUFESU5HIHRoZSBwcm92aWRlcidzIHNjaGVkdWxlIHJhdGhlciB0aGFuIG93bmluZyBvbmUuXG4gKlxuICogVFdPIENSRURFTlRJQUxTLCBERUxJQkVSQVRFTFkgU0VQQVJBVEUgQU5EIEJPVEggT1BUSU9OQUwuXG4gKiBgUEFHRVJEVVRZX1dFQkhPT0tfU0VDUkVUYCB2ZXJpZmllcyB3aGF0IHRoZXkgc2VuZCB1cy4gYFBBR0VSRFVUWV9BUElfVE9LRU5gXG4gKiBpcyBhIFJFU1QgdG9rZW4gZm9yIHJlYWRpbmcgdGhlIHJvdGEgYW5kIGlzIHN0cmljdGx5IG1vcmUgcG93ZXJmdWwgdGhhbiB0aGVcbiAqIHBlci1zZXJ2aWNlIGludGVncmF0aW9uIGtleSB1c2VkIGZvciBzZW5kaW5nIOKAlCBhbiBpbnRlZ3JhdGlvbiBrZXkgY2FuIG9ubHlcbiAqIGNyZWF0ZSBldmVudHMgb24gb25lIHNlcnZpY2UsIHdoaWxlIGEgUkVTVCB0b2tlbiByZWFkcyBpbmNpZGVudHMsIHNjaGVkdWxlc1xuICogYW5kIHVzZXJzIGFjY291bnQtd2lkZS4gU28gdGhlIHJvdGEgY2hlY2sgaXMgb3B0LWluIG9uIGl0cyBvd24gY3JlZGVudGlhbCxcbiAqIGFuZCBhIGRlcGxveW1lbnQgdGhhdCBkb2VzIG5vdCB3YW50IHRvIGhhbmQgb3ZlciBhIFJFU1QgdG9rZW4gc2ltcGx5IGRvZXMgbm90XG4gKiBnZXQgdGhlIGdhdWdlLiBJdCBtdXN0IG5ldmVyIGJlIGluZmVycmVkIGZyb20gdGhlIHJvdXRpbmcga2V5LlxuICovXG5cbmltcG9ydCB7IGNyZWF0ZUhtYWMsIHRpbWluZ1NhZmVFcXVhbCB9IGZyb20gJ2NyeXB0byc7XG5pbXBvcnQgeyBlbnZJbnQsIGVudlN0ciB9IGZyb20gJy4uL3V0aWxzL2Vudi5qcyc7XG5pbXBvcnQgeyBjcmVhdGVMb2dnZXIgfSBmcm9tICcuLi91dGlscy9sb2dnZXIuanMnO1xuaW1wb3J0IHsgZXJyb3JNZXNzYWdlIH0gZnJvbSAnLi4vdXRpbHMvcmVzcG9uc2UuanMnO1xuaW1wb3J0IHsgc2FmZUZldGNoIH0gZnJvbSAnLi4vdXRpbHMvc3NyZi5qcyc7XG5cbmNvbnN0IGxvZ2dlciA9IGNyZWF0ZUxvZ2dlcigncGFnZXJkdXR5LWluYm91bmQnKTtcblxuZXhwb3J0IGNvbnN0IFBBR0VSRFVUWV9BUElfVVJMID0gJ2h0dHBzOi8vYXBpLnBhZ2VyZHV0eS5jb20nO1xuXG4vKipcbiAqIFZlcmlmeSBhIFBhZ2VyRHV0eSB2MyB3ZWJob29rIHNpZ25hdHVyZS5cbiAqXG4gKiBUaGUgc2NoZW1lOiBgWC1QYWdlckR1dHktU2lnbmF0dXJlOiB2MT08bG93ZXJjYXNlIGhleD5gLCBhbiBITUFDLVNIQTI1NiBvdmVyXG4gKiB0aGUgUkFXIHJlcXVlc3QgYm9keS4gVGhyZWUgcHJvcGVydGllcyBvZiBpdCBhcmUgZWFzeSB0byBnZXQgd3JvbmcgYW5kIGVhY2hcbiAqIG9uZSBpcyBhIGhvbGU6XG4gKlxuICogIC0gVEhFIFJBVyBCT0RZLCBub3QgYSByZS1zZXJpYWxpemVkIG9iamVjdC4gYEpTT04uc3RyaW5naWZ5KHJlcS5ib2R5KWAgYWZ0ZXJcbiAqICAgIGEgSlNPTiBwYXJzZXIgaGFzIHJ1biBwcm9kdWNlcyBkaWZmZXJlbnQgYnl0ZXMgKGtleSBvcmRlciwgd2hpdGVzcGFjZSxcbiAqICAgIG51bWJlciBmb3JtYXR0aW5nKSwgc28gZXZlcnkgc2lnbmF0dXJlIGZhaWxzIGFuZCB0aGUgb2J2aW91cyBcImZpeFwiIGlzIHRvXG4gKiAgICBzdG9wIGNoZWNraW5nLiBUaGUgcm91dGUgdGhlcmVmb3JlIG1vdW50cyBgZXhwcmVzcy5yYXdgLlxuICogIC0gTVVMVElQTEUgU0lHTkFUVVJFUy4gVGhlIGhlYWRlciBtYXkgY2Fycnkgc2V2ZXJhbCBjb21tYS1zZXBhcmF0ZWQgYHYxPWBcbiAqICAgIHZhbHVlcywgd2hpY2ggaXMgaG93IFBhZ2VyRHV0eSByb3RhdGVzIGEgc2VjcmV0IHdpdGhvdXQgZG93bnRpbWUuIENoZWNraW5nXG4gKiAgICBvbmx5IHRoZSBmaXJzdCBicmVha3MgZHVyaW5nIHRoZWlyIHJvdGF0aW9uLCBzbyBBTlkgbWF0Y2ggaXMgYWNjZXB0ZWQg4oCUXG4gKiAgICB0aGUgc2FtZSBvdmVybGFwIHRoaXMgcmVwbyBhbHJlYWR5IHJ1bnMgZm9yIGl0cyBvd24gcmVsYXkgdG9rZW4uXG4gKiAgLSBDT05TVEFOVCBUSU1FLiBDb21wYXJlZCB3aXRoIGB0aW1pbmdTYWZlRXF1YWxgIG9uIGVxdWFsLWxlbmd0aCBidWZmZXJzLFxuICogICAgYmVjYXVzZSBhIGJ5dGUtYXQtYS10aW1lIGNvbXBhcmlzb24gbGVha3MgdGhlIGV4cGVjdGVkIGRpZ2VzdCB0byBhbnlvbmVcbiAqICAgIHdobyBjYW4gcG9zdCBoZXJlIHJlcGVhdGVkbHkuXG4gKlxuICogTk8gU0VDUkVUIE1FQU5TIE5PLiBBbiB1bnZlcmlmaWVkIHdlYmhvb2sgdGhhdCBtb3ZlcyBhbiBhdWRpdCByZWNvcmQgYW5kIGFcbiAqIG1ldHJpYyBpcyBhIHdheSBmb3IgYW55b25lIHdobyBsZWFybnMgdGhlIFVSTCB0byBhc3NlcnQgdGhhdCBhIHBhZ2Ugd2FzXG4gKiBoYW5kbGVkIOKAlCB0aGUgb25lIGxpZSB0aGF0IHdvdWxkIG1ha2UgdGhlIHdob2xlIGZlYXR1cmUgcmVwb3J0IGNvdmVyYWdlIGl0XG4gKiBkb2VzIG5vdCBoYXZlLiBGYWlscyBjbG9zZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB2ZXJpZnlQYWdlckR1dHlTaWduYXR1cmUocmF3Qm9keTogQnVmZmVyIHwgc3RyaW5nLCBoZWFkZXI6IHN0cmluZyB8IHVuZGVmaW5lZCwgc2VjcmV0OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgaWYgKCFzZWNyZXQgfHwgIWhlYWRlcikgcmV0dXJuIGZhbHNlO1xuICBjb25zdCBleHBlY3RlZCA9IGNyZWF0ZUhtYWMoJ3NoYTI1NicsIHNlY3JldCkudXBkYXRlKHJhd0JvZHkpLmRpZ2VzdCgnaGV4Jyk7XG4gIGNvbnN0IGV4cGVjdGVkQnVmID0gQnVmZmVyLmZyb20oZXhwZWN0ZWQsICd1dGY4Jyk7XG4gIGZvciAoY29uc3QgcGFydCBvZiBoZWFkZXIuc3BsaXQoJywnKSkge1xuICAgIGNvbnN0IHZhbHVlID0gcGFydC50cmltKCk7XG4gICAgaWYgKCF2YWx1ZS5zdGFydHNXaXRoKCd2MT0nKSkgY29udGludWU7XG4gICAgY29uc3QgZ2l2ZW4gPSBCdWZmZXIuZnJvbSh2YWx1ZS5zbGljZSgzKSwgJ3V0ZjgnKTtcbiAgICAvLyBMZW5ndGgtZ3VhcmRlZDogdGltaW5nU2FmZUVxdWFsIFRIUk9XUyBvbiBhIGxlbmd0aCBtaXNtYXRjaCwgYW5kIGFuXG4gICAgLy8gYXR0YWNrZXIgY29udHJvbHMgdGhpcyBsZW5ndGguXG4gICAgaWYgKGdpdmVuLmxlbmd0aCA9PT0gZXhwZWN0ZWRCdWYubGVuZ3RoICYmIHRpbWluZ1NhZmVFcXVhbChnaXZlbiwgZXhwZWN0ZWRCdWYpKSByZXR1cm4gdHJ1ZTtcbiAgfVxuICByZXR1cm4gZmFsc2U7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgT25DYWxsSW5ib3VuZENvbmZpZyB7XG4gIHdlYmhvb2tTZWNyZXQ6IHN0cmluZztcbiAgYXBpVG9rZW46IHN0cmluZztcbiAgYXBpVXJsOiBzdHJpbmc7XG4gIC8qKiBIb3cgZmFyIGFoZWFkIHRoZSByb3RhIGNoZWNrIGxvb2tzLiBUaGUgZ2FwIGFsZXJ0IGlzIG9ubHkgYXMgdXNlZnVsIGFzIHRoaXMuICovXG4gIGxvb2thaGVhZEhvdXJzOiBudW1iZXI7XG4gIC8qKiBFc2NhbGF0aW9uIHBvbGljeSBpZHMgdG8gY2hlY2sgY292ZXJhZ2UgZm9yOyBlbXB0eSBtZWFucyB0aGUgd2hvbGUgYWNjb3VudC4gKi9cbiAgZXNjYWxhdGlvblBvbGljeUlkczogc3RyaW5nW107XG4gIHRpbWVvdXRNczogbnVtYmVyO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gb25DYWxsSW5ib3VuZENvbmZpZygpOiBPbkNhbGxJbmJvdW5kQ29uZmlnIHtcbiAgcmV0dXJuIHtcbiAgICB3ZWJob29rU2VjcmV0OiBlbnZTdHIoJ1BBR0VSRFVUWV9XRUJIT09LX1NFQ1JFVCcsICcnKSxcbiAgICBhcGlUb2tlbjogZW52U3RyKCdQQUdFUkRVVFlfQVBJX1RPS0VOJywgJycpLFxuICAgIGFwaVVybDogZW52U3RyKCdQQUdFUkRVVFlfQVBJX1VSTCcsIFBBR0VSRFVUWV9BUElfVVJMKSxcbiAgICAvLyA0OCBob3VyczogZmFyIGVub3VnaCB0byBjYXRjaCBhIGhvbGUgb3ZlciBhIHdlZWtlbmQgb24gdGhlIEZyaWRheSwgYW5kXG4gICAgLy8gc2hvcnQgZW5vdWdoIHRoYXQgYSByb3RhIG1haW50YWluZWQgYSB3ZWVrIG91dCBkb2VzIG5vdCBhbGVydCBmb3JldmVyLlxuICAgIGxvb2thaGVhZEhvdXJzOiBlbnZJbnQoJ09OQ0FMTF9TQ0hFRFVMRV9HQVBfTE9PS0FIRUFEX0hPVVJTJywgNDgsIHsgbWluOiAxLCBtYXg6IDIxNjAgfSksXG4gICAgZXNjYWxhdGlvblBvbGljeUlkczogZW52U3RyKCdQQUdFUkRVVFlfRVNDQUxBVElPTl9QT0xJQ1lfSURTJywgJycpXG4gICAgICAuc3BsaXQoJywnKS5tYXAoKHgpID0+IHgudHJpbSgpKS5maWx0ZXIoQm9vbGVhbiksXG4gICAgdGltZW91dE1zOiBlbnZJbnQoJ09OQ0FMTF9FVkVOVFNfVElNRU9VVF9NUycsIDUwMDAsIHsgbWluOiAxIH0pLFxuICB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJvdGFDb3ZlcmFnZSB7XG4gIC8qKiBXaGV0aGVyIHRoZSBxdWVzdGlvbiBjb3VsZCBiZSBhbnN3ZXJlZCBhdCBhbGwuICovXG4gIGtub3duOiBib29sZWFuO1xuICAvKiogRGlzdGluY3Qgb24tY2FsbCBlbnRyaWVzIGNvdmVyaW5nIGFueSBwYXJ0IG9mIHRoZSB3aW5kb3cuICovXG4gIGVudHJpZXM6IG51bWJlcjtcbiAgLyoqIFNlY29uZHMgb2YgdGhlIGxvb2thaGVhZCB3aW5kb3cgd2l0aCBub2JvZHkgb24gY2FsbCwgMCB3aGVuIGZ1bGx5IGNvdmVyZWQuICovXG4gIHVuY292ZXJlZFNlY29uZHM6IG51bWJlcjtcbn1cblxuLyoqXG4gKiBBc2sgdGhlIHByb3ZpZGVyIHdoZXRoZXIgYW55b25lIGlzIG9uIGNhbGwgYWNyb3NzIHRoZSBsb29rYWhlYWQgd2luZG93LlxuICpcbiAqIFdIQVQgVEhJUyBDQU4gQU5EIENBTk5PVCBDT05DTFVERSwgYmVjYXVzZSB0aGUgZGlmZmVyZW5jZSBkZWNpZGVzIHdoZXRoZXIgdGhlXG4gKiBhbGVydCBidWlsdCBvbiBpdCBpcyBob25lc3QuIGBHRVQgL29uY2FsbHM/c2luY2UmdW50aWxgIHJldHVybnMgdGhlIG9uLWNhbGxcbiAqIGVudHJpZXMgT1ZFUkxBUFBJTkcgYSB3aW5kb3c7IGl0IGRvZXMgbm90IHJldHVybiB0aGUgaG9sZXMuIFJlY29uc3RydWN0aW5nXG4gKiBleGFjdCBob2xlcyB3b3VsZCBtZWFuIHN0aXRjaGluZyBldmVyeSBlbnRyeSdzIGludGVydmFsLCBhbmQgYW4gZW50cnknc1xuICogYHN0YXJ0YC9gZW5kYCBhcmUgbnVsbCBmb3IgYW4gYWx3YXlzLW9uIHBvbGljeSDigJQgc28gYSBwcmVjaXNlXG4gKiBcInVuY292ZXJlZCBzZWNvbmRzXCIgaXMgbm90IGF2YWlsYWJsZSBmcm9tIHRoaXMgZW5kcG9pbnQgd2l0aG91dCBhIGxvdCBvZlxuICogYXJpdGhtZXRpYyB0aGF0IHdvdWxkIGJlIHdyb25nIGluIHRoZSBhbHdheXMtb24gY2FzZS5cbiAqXG4gKiBTbyB0aGlzIGFuc3dlcnMgdGhlIHF1ZXN0aW9uIGl0IENBTiBhbnN3ZXIgZXhhY3RseTogaXMgdGhlIHdpbmRvdyBjb3ZlcmVkIGF0XG4gKiBhbGwuIFplcm8gZW50cmllcyBvdmVyIHRoZSBuZXh0IE4gaG91cnMgbWVhbnMgbm9ib2R5IGlzIHNjaGVkdWxlZCwgd2hpY2ggaXNcbiAqIHRoZSBmYWlsdXJlIHdvcnRoIHBhZ2luZyBhYm91dCBhbmQgdGhlIG9uZSBhIHJvdGEgbWFpbnRhaW5lciBhY3R1YWxseSBtYWtlcy5cbiAqIGB1bmNvdmVyZWRTZWNvbmRzYCBpcyB0aGVyZWZvcmUgdGhlIHdob2xlIHdpbmRvdyBvciBub3RoaW5nLCBhbmQgaXQgaXMgYVxuICogZGVsaWJlcmF0ZSB1bmRlci1yZXBvcnQgcmF0aGVyIHRoYW4gYSBndWVzcyDigJQgYSBwYXJ0aWFsIGhvbGUgcmVhZHMgYXMgY292ZXJlZFxuICogaGVyZSwgYW5kIGNsYWltaW5nIG90aGVyd2lzZSB3b3VsZCBiZSBpbnZlbnRpbmcgcHJlY2lzaW9uLlxuICpcbiAqIGBrbm93bjogZmFsc2VgIHdoZW4gdGhlcmUgaXMgbm8gQVBJIHRva2VuIG9yIHRoZSBjYWxsIGZhaWxzLCBhbmQgdGhlIGNhbGxlclxuICogbXVzdCBwdWJsaXNoIE5PVEhJTkcgaW4gdGhhdCBjYXNlLiBBIGdhdWdlIG9mIDAgd291bGQgc2F5IFwiZnVsbHkgY292ZXJlZFwiLFxuICogd2hpY2ggaXMgZXhhY3RseSB0aGUgbGllIHRoaXMgY2hlY2sgZXhpc3RzIHRvIHByZXZlbnQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBmZXRjaFJvdGFDb3ZlcmFnZShjZmc6IE9uQ2FsbEluYm91bmRDb25maWcgPSBvbkNhbGxJbmJvdW5kQ29uZmlnKCkpOiBQcm9taXNlPFJvdGFDb3ZlcmFnZT4ge1xuICBjb25zdCB3aW5kb3dTZWNvbmRzID0gY2ZnLmxvb2thaGVhZEhvdXJzICogMzYwMDtcbiAgaWYgKCFjZmcuYXBpVG9rZW4pIHJldHVybiB7IGtub3duOiBmYWxzZSwgZW50cmllczogMCwgdW5jb3ZlcmVkU2Vjb25kczogMCB9O1xuXG4gIGNvbnN0IHNpbmNlID0gbmV3IERhdGUoKTtcbiAgY29uc3QgdW50aWwgPSBuZXcgRGF0ZShzaW5jZS5nZXRUaW1lKCkgKyB3aW5kb3dTZWNvbmRzICogMTAwMCk7XG4gIGNvbnN0IHBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoe1xuICAgIHNpbmNlOiBzaW5jZS50b0lTT1N0cmluZygpLFxuICAgIHVudGlsOiB1bnRpbC50b0lTT1N0cmluZygpLFxuICAgIGxpbWl0OiAnNTAnLFxuICB9KTtcbiAgZm9yIChjb25zdCBpZCBvZiBjZmcuZXNjYWxhdGlvblBvbGljeUlkcykgcGFyYW1zLmFwcGVuZCgnZXNjYWxhdGlvbl9wb2xpY3lfaWRzW10nLCBpZCk7XG5cbiAgdHJ5IHtcbiAgICBjb25zdCByZXNwID0gYXdhaXQgc2FmZUZldGNoKGAke2NmZy5hcGlVcmx9L29uY2FsbHM/JHtwYXJhbXMudG9TdHJpbmcoKX1gLCB7XG4gICAgICBtZXRob2Q6ICdHRVQnLFxuICAgICAgaGVhZGVyczoge1xuICAgICAgICAvLyBQYWdlckR1dHkncyBSRVNUIHNjaGVtZS4gYEFjY2VwdGAgcGlucyB0aGUgQVBJIHZlcnNpb247IHdpdGhvdXQgaXRcbiAgICAgICAgLy8gdGhlIHJlc3BvbnNlIHNoYXBlIGlzIHdoYXRldmVyIHRoZWlyIGRlZmF1bHQgaGFwcGVucyB0byBiZS5cbiAgICAgICAgQXV0aG9yaXphdGlvbjogYFRva2VuIHRva2VuPSR7Y2ZnLmFwaVRva2VufWAsXG4gICAgICAgIEFjY2VwdDogJ2FwcGxpY2F0aW9uL3ZuZC5wYWdlcmR1dHkranNvbjt2ZXJzaW9uPTInLFxuICAgICAgfSxcbiAgICAgIHRpbWVvdXRNczogY2ZnLnRpbWVvdXRNcyxcbiAgICB9KTtcbiAgICBpZiAocmVzcC5yZWRpcmVjdGVkIHx8ICFyZXNwLm9rKSB7XG4gICAgICBsb2dnZXIud2FybignQ291bGQgbm90IHJlYWQgdGhlIG9uLWNhbGwgcm90YScsIHsgc3RhdHVzOiByZXNwLnN0YXR1cywgcmVkaXJlY3RlZDogcmVzcC5yZWRpcmVjdGVkIH0pO1xuICAgICAgcmV0dXJuIHsga25vd246IGZhbHNlLCBlbnRyaWVzOiAwLCB1bmNvdmVyZWRTZWNvbmRzOiAwIH07XG4gICAgfVxuICAgIGNvbnN0IGJvZHkgPSBhd2FpdCByZXNwLmpzb24oKSBhcyB7IG9uY2FsbHM/OiB1bmtub3duW10gfTtcbiAgICBjb25zdCBlbnRyaWVzID0gQXJyYXkuaXNBcnJheShib2R5Lm9uY2FsbHMpID8gYm9keS5vbmNhbGxzLmxlbmd0aCA6IDA7XG4gICAgcmV0dXJuIHsga25vd246IHRydWUsIGVudHJpZXMsIHVuY292ZXJlZFNlY29uZHM6IGVudHJpZXMgPiAwID8gMCA6IHdpbmRvd1NlY29uZHMgfTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgbG9nZ2VyLndhcm4oJ0NvdWxkIG5vdCByZWFjaCB0aGUgb24tY2FsbCByb3RhIEFQSScsIHsgZXJyb3I6IGVycm9yTWVzc2FnZShlcnIpIH0pO1xuICAgIHJldHVybiB7IGtub3duOiBmYWxzZSwgZW50cmllczogMCwgdW5jb3ZlcmVkU2Vjb25kczogMCB9O1xuICB9XG59XG5cbi8qKiBUaGUgd2ViaG9vayBldmVudHMgdGhpcyBzeXN0ZW0gYWN0cyBvbi4gRXZlcnl0aGluZyBlbHNlIGlzIGNvdW50ZWQgYW5kIGRyb3BwZWQuICovXG5leHBvcnQgdHlwZSBPbkNhbGxXZWJob29rRXZlbnRUeXBlID1cbiAgfCAnaW5jaWRlbnQuYWNrbm93bGVkZ2VkJ1xuICB8ICdpbmNpZGVudC5lc2NhbGF0ZWQnXG4gIHwgJ2luY2lkZW50LnJlc29sdmVkJ1xuICB8ICdpbmNpZGVudC51bmFja25vd2xlZGdlZCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgT25DYWxsV2ViaG9va0V2ZW50IHtcbiAgZXZlbnRUeXBlOiBzdHJpbmc7XG4gIC8qKiBQcm92aWRlciBpbmNpZGVudCBpZCDigJQgdGhlIGpvaW4gYmFjayB0byB3aGF0IHdlIHNlbnQuICovXG4gIGluY2lkZW50SWQ/OiBzdHJpbmc7XG4gIC8qKiBPdXIgb3duIGBkZWR1cF9rZXlgLCB3aGVuIHRoZSBwcm92aWRlciBlY2hvZXMgaXQuICovXG4gIGRlZHVwS2V5Pzogc3RyaW5nO1xuICAvKiogV2hvIGFjdGVkLCBhcyB0aGUgcHJvdmlkZXIga25vd3MgdGhlbS4gQW4gaWQgYW5kIGFuIGVtYWlsLCBuZXZlciBhIHNlc3Npb24uICovXG4gIGFnZW50SWQ/OiBzdHJpbmc7XG4gIGFnZW50U3VtbWFyeT86IHN0cmluZztcbiAgLyoqIFdoZW4gdGhlIGluY2lkZW50IHdhcyBjcmVhdGVkLCBmb3IgdGhlIGFjay1sYXRlbmN5IG1lYXN1cmVtZW50LiAqL1xuICBjcmVhdGVkQXQ/OiBzdHJpbmc7XG4gIG9jY3VycmVkQXQ/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUmVkdWNlIGEgdjMgd2ViaG9vayBib2R5IHRvIHRoZSBmaWVsZHMgdGhpcyBzeXN0ZW0gdXNlcy5cbiAqXG4gKiBSZXR1cm5zIGBudWxsYCBmb3IgYW55dGhpbmcgdGhhdCBpcyBub3QgYSByZWNvZ25pc2VkIGluY2lkZW50IGV2ZW50LCB3aGljaFxuICogdGhlIGNhbGxlciBDT1VOVFMgcmF0aGVyIHRoYW4gZHJvcHMgc2lsZW50bHkg4oCUIGFuIHVucmVjb2duaXNlZCBldmVudCB0eXBlIGlzXG4gKiB1c3VhbGx5IGEgc3Vic2NyaXB0aW9uIGNvbmZpZ3VyZWQgd2lkZXIgdGhhbiB0aGUgaGFuZGxlciwgYW5kIGEgY291bnQgaXMgaG93XG4gKiB0aGF0IGJlY29tZXMgdmlzaWJsZSBpbnN0ZWFkIG9mIGJlaW5nIGluZmVycmVkIGZyb20gbm90aGluZyBoYXBwZW5pbmcuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZU9uQ2FsbFdlYmhvb2soYm9keTogdW5rbm93bik6IE9uQ2FsbFdlYmhvb2tFdmVudCB8IG51bGwge1xuICBjb25zdCBldmVudCA9IChib2R5IGFzIHsgZXZlbnQ/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB9KT8uZXZlbnQ7XG4gIGlmICghZXZlbnQgfHwgdHlwZW9mIGV2ZW50LmV2ZW50X3R5cGUgIT09ICdzdHJpbmcnKSByZXR1cm4gbnVsbDtcbiAgY29uc3QgZGF0YSA9IChldmVudC5kYXRhID8/IHt9KSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgY29uc3QgYWdlbmN5ID0gKGV2ZW50LmFnZW50ID8/IHt9KSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgcmV0dXJuIHtcbiAgICBldmVudFR5cGU6IGV2ZW50LmV2ZW50X3R5cGUsXG4gICAgaW5jaWRlbnRJZDogdHlwZW9mIGRhdGEuaWQgPT09ICdzdHJpbmcnID8gZGF0YS5pZCA6IHVuZGVmaW5lZCxcbiAgICAvLyBQYWdlckR1dHkgZWNob2VzIHRoZSB0cmlnZ2VyJ3MgZGVkdXBfa2V5IG9uIHRoZSBpbmNpZGVudCwgd2hpY2ggaXMgdGhlXG4gICAgLy8gb25seSBsaW5rIGJhY2sgdG8gV0hJQ0ggY2FzZSBvciBhbGVydCB0aGlzIHdhcyDigJQgdGhlaXIgaW5jaWRlbnQgaWQgaXNcbiAgICAvLyB0aGVpcnMgYW5kIG1lYW5zIG5vdGhpbmcgb24gdGhpcyBzaWRlLlxuICAgIGRlZHVwS2V5OiB0eXBlb2YgZGF0YS5kZWR1cF9rZXkgPT09ICdzdHJpbmcnID8gZGF0YS5kZWR1cF9rZXkgOiB1bmRlZmluZWQsXG4gICAgYWdlbnRJZDogdHlwZW9mIGFnZW5jeS5pZCA9PT0gJ3N0cmluZycgPyBhZ2VuY3kuaWQgOiB1bmRlZmluZWQsXG4gICAgYWdlbnRTdW1tYXJ5OiB0eXBlb2YgYWdlbmN5LnN1bW1hcnkgPT09ICdzdHJpbmcnID8gYWdlbmN5LnN1bW1hcnkgOiB1bmRlZmluZWQsXG4gICAgY3JlYXRlZEF0OiB0eXBlb2YgZGF0YS5jcmVhdGVkX2F0ID09PSAnc3RyaW5nJyA/IGRhdGEuY3JlYXRlZF9hdCA6IHVuZGVmaW5lZCxcbiAgICBvY2N1cnJlZEF0OiB0eXBlb2YgZXZlbnQub2NjdXJyZWRfYXQgPT09ICdzdHJpbmcnID8gZXZlbnQub2NjdXJyZWRfYXQgOiB1bmRlZmluZWQsXG4gIH07XG59XG5cbi8qKlxuICogU2Vjb25kcyBiZXR3ZWVuIHRoZSBpbmNpZGVudCBiZWluZyByYWlzZWQgYW5kIHRoaXMgZXZlbnQuXG4gKlxuICogUmV0dXJucyBgdW5kZWZpbmVkYCByYXRoZXIgdGhhbiAwIHdoZW4gZWl0aGVyIHRpbWVzdGFtcCBpcyBtaXNzaW5nIG9yIHRoZVxuICogYXJpdGhtZXRpYyBpcyBub25zZW5zZTogYSAwIHdvdWxkIGxhbmQgaW4gdGhlIGZpcnN0IGhpc3RvZ3JhbSBidWNrZXQgYW5kIHJlYWRcbiAqIGFzIGFuIGluc3RhbnQgYWNrbm93bGVkZ2VtZW50LCB3aGljaCBpcyB0aGUgbW9zdCBmbGF0dGVyaW5nIHBvc3NpYmxlIGxpZVxuICogYWJvdXQgcmVzcG9uc2UgdGltZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFja0xhdGVuY3lTZWNvbmRzKGV2ZW50OiBPbkNhbGxXZWJob29rRXZlbnQpOiBudW1iZXIgfCB1bmRlZmluZWQge1xuICBpZiAoIWV2ZW50LmNyZWF0ZWRBdCB8fCAhZXZlbnQub2NjdXJyZWRBdCkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgY29uc3QgZnJvbSA9IG5ldyBEYXRlKGV2ZW50LmNyZWF0ZWRBdCkuZ2V0VGltZSgpO1xuICBjb25zdCB0byA9IG5ldyBEYXRlKGV2ZW50Lm9jY3VycmVkQXQpLmdldFRpbWUoKTtcbiAgaWYgKCFOdW1iZXIuaXNGaW5pdGUoZnJvbSkgfHwgIU51bWJlci5pc0Zpbml0ZSh0bykgfHwgdG8gPCBmcm9tKSByZXR1cm4gdW5kZWZpbmVkO1xuICByZXR1cm4gKHRvIC0gZnJvbSkgLyAxMDAwO1xufVxuIl19
|
|
@@ -183,4 +183,4 @@ export async function sendPagerDutyEvent(event, cfg = pagerDutyConfig()) {
|
|
|
183
183
|
return { ok: false, error: errorMessage(err) };
|
|
184
184
|
}
|
|
185
185
|
}
|
|
186
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnZXJkdXR5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NlcnZpY2VzL3BhZ2VyZHV0eS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBRXRDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBa0NHO0FBRUgsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDcEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRTdDLE1BQU0sTUFBTSxHQUFHLFlBQVksQ0FBQyxXQUFXLENBQUMsQ0FBQztBQWdGekMsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcseUNBQXlDLENBQUM7QUFtQjlFOzs7Ozs7O0dBT0c7QUFDSCxNQUFNLFVBQVUscUJBQXFCLENBQUMsUUFBd0IsRUFBRSxRQUFnQjtJQUM5RSxJQUFJLFFBQVE7UUFBRSxPQUFPLFFBQVEsQ0FBQztJQUM5QixPQUFPLFFBQVEsS0FBSyxXQUFXLENBQUMsQ0FBQyxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7QUFDOUQsQ0FBQztBQUVEOzs7Ozs7Ozs7Ozs7Ozs7R0FlRztBQUNILFNBQVMsdUJBQXVCO0lBQzlCLElBQUksQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLEVBQUUsS0FBSyxDQUFDO1FBQUUsT0FBTyxLQUFLLENBQUM7SUFDcEQsSUFBSSxPQUFPLENBQUMsaUJBQWlCLEVBQUUsSUFBSSxDQUFDO1FBQUUsT0FBTyxJQUFJLENBQUM7SUFDbEQsTUFBTSxDQUFDLEtBQUssQ0FBQyxtRUFB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Q25FLE1BQU0sQ0FBQyxLQUFLLENBQUMsMkJBQTJCLEVBQUUsRUFBRSxLQUFLLEVBQUUsWUFBWSxDQUFDLEdBQUcsQ0FBQyxFQUFFLFFBQVEsRUFBRSxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUNsRyxPQUFPLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsWUFBWSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7SUFDakQsQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuLyoqXG4gKiBQYWdlckR1dHkgRXZlbnRzIEFQSSB2MiDigJQgdGhlIG9ubHkgdGhpbmcgaW4gdGhpcyByZXBvIHRoYXQgY2FuIHdha2UgYSBodW1hbi5cbiAqXG4gKiBXSFkgVEhJUyBFWElTVFMuIGBTVVBQT1JUX1BSRU1JVU1fRU5BQkxFRGAgc2hpcHMgb24sIGFuZCBwcmVtaXVtIHNlbGxzIGEgZmlyc3RcbiAqIHJlc3BvbnNlIFwid2l0aGluIDggaG91cnMsIGFueSBkYXlcIiDigJQgdGhlIG9uZSByZXNwb25zZSB0YXJnZXQgaW5cbiAqIGBTVVBQT1JUX1JFU1BPTlNFX1RBUkdFVFNgIHdpdGggbm8gYnVzaW5lc3MtaG91cnMgZXhlbXB0aW9uLCBzbyBpdHMgY2xvY2sgcnVuc1xuICogdGhyb3VnaCBuaWdodHMgYW5kIHdlZWtlbmRzLiBCZWZvcmUgdGhpcywgdGhlIG9ubHkgdGhpbmcgd2F0Y2hpbmcgaXQgd2FzXG4gKiBgU3VwcG9ydFByZW1pdW1GaXJzdFJlc3BvbnNlQXRSaXNrYCByb3V0ZWQgdG8gYSBTbGFjayBjaGFubmVsLCB3aGljaCBzYXRpc2ZpZXNcbiAqIHRoZSByb3V0aW5nIGFuZCBub3QgdGhlIG9ibGlnYXRpb246IHRoZSBhbGVydCdzIG93biBkZXNjcmlwdGlvbiBzYXlzIFwiaWYgbm9cbiAqIHJvdGEgaXMgYXdha2UsIHRoYXQgaXMgdGhlIGNhdXNlXCIuXG4gKlxuICogV0hZIE5PIFNESy4gVGhlIHdob2xlIHByb3RvY29sIGlzIG9uZSBIVFRQUyBQT1NUIG9mIEpTT04gdG8gYSBmaXhlZCBlbmRwb2ludC5cbiAqIEFuIFNESyBmb3IgdGhhdCBpcyBhIGRlcGVuZGVuY3kgZm9yIG5vdGhpbmcgaW4gYSByZXBvIHRoYXQgZGlnZXN0LXBpbnMsXG4gKiBPU1Ytc2NhbnMgYW5kIGVuZm9yY2VzIGBtaW5pbXVtUmVsZWFzZUFnZWAuXG4gKlxuICogV0hBVCBUSEUgUFJPVklERVIgT1dOUywgQU5EIFdIWSBUSEFUIERFQ0lERUQgVEhFIERFU0lHTi4gYGRlZHVwS2V5YCBwbHVzXG4gKiBgZXZlbnRfYWN0aW9uYCBtZWFucyBQYWdlckR1dHkgaG9sZHMgdGhlIGluY2lkZW50IHN0YXRlLCBzbyB0aHJlZSB0aGluZ3MgdGhpc1xuICogcmVwbyB3b3VsZCBvdGhlcndpc2UgaGF2ZSBoYWQgdG8gYnVpbGQgYXJlIHNpbXBseSB0aGVpcnM6XG4gKlxuICogIC0gREVEVVBMSUNBVElPTi4gRmlmdHkgcHJlbWl1bSBjYXNlcyBicmVhY2hpbmcgdG9nZXRoZXIg4oCUIHRoZSBub3JtYWwgc2hhcGVcbiAqICAgIGFmdGVyIGFueSBvdXRhZ2Ug4oCUIGlzIG9uZSBpbmNpZGVudCwgbm90IGZpZnR5IHBhZ2VzLiBGaWZ0eSBwYWdlcyBhbmQgbm9cbiAqICAgIHBhZ2VzIGFyZSB0aGUgc2FtZSB0aGluZy5cbiAqICAtIFJFU09MVVRJT04uIGByZXNvbHZlYCBvbiB0aGUgc2FtZSBrZXkgY2xvc2VzIGl0LCBzbyBhIGNhc2UgdGhhdCBmaW5hbGx5XG4gKiAgICBnZXRzIGEgZmlyc3QgcmVzcG9uc2Ugc3RvcHMgcGFnaW5nIHdpdGhvdXQgYSBsb2NhbCBzdGF0ZSBtYWNoaW5lLlxuICogIC0gQ09OVEFDVCBNRVRIT0RTIGFuZCB0aGVpciB2ZXJpZmljYXRpb24sIHRoZSByb3RhLCBhbmQgZXNjYWxhdGlvbi5cbiAqXG4gKiBTbyB0aGVyZSBpcyBubyByb3RhIGluIHRoaXMgY29kZWJhc2Ugb24gcHVycG9zZS4gV2hhdCBzdGF5cyBoZXJlIGlzIHRoZVxuICogVFJJR0dFUiwgYmVjYXVzZSB0aGUgcHJvZHVjdCBrbm93cyBzb21ldGhpbmcgUGFnZXJEdXR5IGNhbm5vdDogYSBzdXBwb3J0IGNhc2VcbiAqIGNhcnJpZXMgYW4gZXhhY3QgYHJlc3BvbnNlX2R1ZV9hdGAsIHdoaWNoIGJlYXRzIGEgcDkwIGhpc3RvZ3JhbSB0aGF0IGNhbiBvbmx5XG4gKiBzYXkgdGhlIGRpc3RyaWJ1dGlvbiBhbHJlYWR5IGRyaWZ0ZWQuXG4gKlxuICogTkVWRVIgVEhST1dTLiBFdmVyeSBjYWxsZXIgaXMgb24gYW4gYWxlcnRpbmcgcGF0aCDigJQgYSB3ZWJob29rIGhhbmRsZXIgb3IgYVxuICogc3dlZXAg4oCUIGFuZCBhbiBleGNlcHRpb24gdGhlcmUgdHVybnMgXCJjb3VsZCBub3QgcGFnZVwiIGludG8gXCJjcmFzaGVkIGluc3RlYWQgb2ZcbiAqIHBhZ2luZ1wiLiBGYWlsdXJlcyBjb21lIGJhY2sgYXMgYSB0eXBlZCByZXN1bHQgYW5kIGFyZSBjb3VudGVkLlxuICovXG5cbmltcG9ydCB7IGVudkJvb2wsIGVudkludCwgZW52U3RyIH0gZnJvbSAnLi4vdXRpbHMvZW52LmpzJztcbmltcG9ydCB7IGNyZWF0ZUxvZ2dlciB9IGZyb20gJy4uL3V0aWxzL2xvZ2dlci5qcyc7XG5pbXBvcnQgeyBlbWl0Q291bnRlciB9IGZyb20gJy4uL3V0aWxzL21ldHJpYy1lbWl0dGVyLmpzJztcbmltcG9ydCB7IGVycm9yTWVzc2FnZSB9IGZyb20gJy4uL3V0aWxzL3Jlc3BvbnNlLmpzJztcbmltcG9ydCB7IHNhZmVGZXRjaCB9IGZyb20gJy4uL3V0aWxzL3NzcmYuanMnO1xuXG5jb25zdCBsb2dnZXIgPSBjcmVhdGVMb2dnZXIoJ3BhZ2VyZHV0eScpO1xuXG4vKiogUGFnZXJEdXR5J3Mgb3duIHNldmVyaXR5IGVudW0uIE91cnMgbWFwIHN0cmFpZ2h0IG9udG8gaXQuICovXG5leHBvcnQgdHlwZSBQYWdlckR1dHlTZXZlcml0eSA9ICdjcml0aWNhbCcgfCAnZXJyb3InIHwgJ3dhcm5pbmcnIHwgJ2luZm8nO1xuXG4vKiogVGhlIHRocmVlIGZvbGxvdy11cCBhY3Rpb25zIGEgc2luZ2xlIGBkZWR1cEtleWAgbW92ZXMgdGhyb3VnaC4gKi9cbmV4cG9ydCB0eXBlIFBhZ2VyRHV0eUFjdGlvbiA9ICd0cmlnZ2VyJyB8ICdhY2tub3dsZWRnZScgfCAncmVzb2x2ZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGFnZXJEdXR5RXZlbnQge1xuICAvKipcbiAgICogVGhlIGtleSB0aGF0IHRpZXMgYSB0cmlnZ2VyIHRvIGl0cyBsYXRlciBhY2tub3dsZWRnZS9yZXNvbHZlLiBTdGFibGUgYW5kXG4gICAqIGRlcml2ZWQsIG5ldmVyIHJhbmRvbTogYGNhc2U6PGNhc2VJZD5gIGZvciB0aGUgcGVyLWNhc2Ugc3dlZXAsXG4gICAqIEFsZXJ0bWFuYWdlcidzIG93biBncm91cCBmaW5nZXJwcmludCBmb3IgdGhlIGFsZXJ0IGxlZyDigJQgc28gaXRzIGdyb3VwaW5nIGFuZFxuICAgKiBvdXJzIGNhbm5vdCBmaWdodCBvdmVyIHRoZSBzYW1lIGluY2lkZW50LlxuICAgKi9cbiAgZGVkdXBLZXk6IHN0cmluZztcbiAgYWN0aW9uOiBQYWdlckR1dHlBY3Rpb247XG4gIC8qKlxuICAgKiBXSElDSCBsZWcgcmFpc2VkIHRoaXMsIGFzIGEgbWV0cmljIGRpbWVuc2lvbiBvbmx5IOKAlCBuZXZlciBzZW50IHRvIFBhZ2VyRHV0eS5cbiAgICpcbiAgICogVGhlIHR3byBsZWdzIGhhdmUgZGlmZmVyZW50IGZhaWx1cmUgbW9kZXMgYW5kIG11c3QgYmUgc2VwYXJhYmxlIGluIG9uZVxuICAgKiBjb3VudGVyOiBgYWxlcnRtYW5hZ2VyYCBkZXBlbmRzIG9uIFByb21ldGhldXMgZXZhbHVhdGluZyBhbmQgQWxlcnRtYW5hZ2VyXG4gICAqIGRlbGl2ZXJpbmcsIGBjYXNlYCBkZXBlbmRzIG9uIHRoaXMgcHJvZHVjdCdzIG93biBzd2VlcCBiZWluZyBhbGl2ZS4gQ29sbGFwc2VkXG4gICAqIGludG8gb25lIHNlcmllcywgYSBkZWFkIHN3ZWVwIGlzIGludmlzaWJsZSBmb3IgYXMgbG9uZyBhcyB0aGUgZmxlZXQgYWxlcnRcbiAgICogc3RpbGwgZmlyZXMg4oCUIHdoaWNoIGlzIHByZWNpc2VseSB0aGUgd2luZG93IHRoZSBwZXItY2FzZSB0cmlnZ2VyIGV4aXN0cyB0b1xuICAgKiBjb3Zlci5cbiAgICovXG4gIHRyaWdnZXI/OiAnYWxlcnRtYW5hZ2VyJyB8ICdjYXNlJztcbiAgLyoqIFJlcXVpcmVkIGJ5IHRoZSBBUEkgb24gYSBgdHJpZ2dlcmA7IGlnbm9yZWQgb24gcmVzb2x2ZS4gKi9cbiAgc3VtbWFyeT86IHN0cmluZztcbiAgc2V2ZXJpdHk/OiBQYWdlckR1dHlTZXZlcml0eTtcbiAgLyoqIEh1bWFuLXJlYWRhYmxlIG9yaWdpbi4gUmVxdWlyZWQgb24gYSBgdHJpZ2dlcmAuICovXG4gIHNvdXJjZT86IHN0cmluZztcbiAgY29tcG9uZW50Pzogc3RyaW5nO1xuICAvKipcbiAgICogUGFnZXJEdXR5J3MgZ3JvdXBpbmcgZGltZW5zaW9uLiBXZSBwdXQgdGhlIE9SRyBJRCBoZXJlIGFuZCBub3RoaW5nIGVsc2Ug4oCUXG4gICAqIHNlZSB0aGUgbm90ZSBvbiBgY3VzdG9tRGV0YWlsc2AuXG4gICAqL1xuICBncm91cD86IHN0cmluZztcbiAgY2xhc3M/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBGcmVlLWZvcm0gZGV0YWlsLiBJRFMgQU5EIFRJTUVTVEFNUFMgT05MWSDigJQgbmV2ZXIgY2FzZSBjb250ZW50LlxuICAgKlxuICAgKiBUaGlzIGlzIGFuIGF1dGhvcml6YXRpb24gYm91bmRhcnksIG5vdCBhIHN0eWxlIHByZWZlcmVuY2UuIFRoZSBvbi1jYWxsXG4gICAqIHBlcm1pc3Npb24gaXMgc3lzdGVtLW9yZyBzY29wZWQgYW5kIGdyYW50cyBubyB0ZW5hbnQgYWNjZXNzIGF0IGFsbFxuICAgKiAoYGlzU3lzdGVtT3JnSWRgIGlzIGEgY29udGVudC1vd25lciBjaGVjaywgbm90IGEgcHJpdmlsZWdlIGdhdGUpLCBzbyBwdXR0aW5nXG4gICAqIGEgY2FzZSBzdWJqZWN0IG9yIGJvZHkgaGVyZSB3b3VsZCByb3V0ZSB0ZW5hbnQgY29udGVudCB0byBhIHRoaXJkIHBhcnR5XG4gICAqIHRocm91Z2ggYSBjaGFubmVsIHRoYXQgZGVsaWJlcmF0ZWx5IGhhcyBubyByaWdodCB0byByZWFkIGl0LlxuICAgKi9cbiAgY3VzdG9tRGV0YWlscz86IFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCBudWxsPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQYWdlckR1dHlSZXN1bHQge1xuICBvazogYm9vbGVhbjtcbiAgLyoqIEhUVFAgc3RhdHVzIHdoZW4gdGhlIHJlcXVlc3QgY29tcGxldGVkLiAqL1xuICBzdGF0dXM/OiBudW1iZXI7XG4gIC8qKiBXaHkgaXQgZmFpbGVkLCBmb3IgdGhlIGxvZyBsaW5lIOKAlCBuZXZlciBzdXJmYWNlZCB0byBhIHRlbmFudC4gKi9cbiAgZXJyb3I/OiBzdHJpbmc7XG4gIC8qKiBUcnVlIHdoZW4gcGFnaW5nIGlzIGNvbmZpZ3VyZWQgb2ZmLCBzbyBhIGNhbGxlciBjYW4gdGVsbCBcIm9mZlwiIGZyb20gXCJicm9rZVwiLiAqL1xuICBza2lwcGVkPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBXaGljaCBwcm92aWRlciB0aGUgRXZlbnRzIHYyIGNhbGxzIGdvIHRvLlxuICpcbiAqIGBwYWdlcmR1dHlgIHBpbnMgdGhlIGtub3duIGVuZHBvaW50LiBgY3VzdG9tYCBtZWFucyBcInNvbWV0aGluZyBlbHNlIHRoYXRcbiAqIGltcGxlbWVudHMgdGhpcyB3aXJlIGZvcm1hdFwiIGFuZCBSRVFVSVJFUyBgT05DQUxMX0VWRU5UU19VUkxgIOKAlCBpdCBkb2VzIG5vdFxuICogZmFsbCBiYWNrLCBiZWNhdXNlIGZhbGxpbmcgYmFjayBpcyBob3cgYSB0eXBvJ2QgVVJMIHF1aWV0bHkgcGFnZXMgdGhlIHdyb25nXG4gKiBhY2NvdW50LCBvciBwYWdlcyBub2JvZHkgd2hpbGUgcmVwb3J0aW5nIHN1Y2Nlc3MuXG4gKlxuICogV0hZIFRIRVJFIElTIE5PIGBvcHNnZW5pZWAgSEVSRSwgYWx0aG91Z2ggdGhlIGRlc2lnbiBub3RlcyBwcm9wb3NlZCBvbmU6XG4gKiBub3RoaW5nIGRvY3VtZW50cyBPcHNnZW5pZSBhY2NlcHRpbmcgdGhlIEV2ZW50cyB2MiBzaGFwZS4gSXRzIG93biBhbGVydCBBUElcbiAqIHRha2VzIGBtZXNzYWdlYC9gYWxpYXNgL2Bwcmlvcml0eWAsIG5vdCBgc3VtbWFyeWAvYHNldmVyaXR5YC9gZGVkdXBfa2V5YCwgc29cbiAqIGFuIGBvcHNnZW5pZWAgdmFsdWUgd291bGQgbmFtZSBhIHByb3ZpZGVyIHRoaXMgY2xpZW50IGNhbm5vdCBhY3R1YWxseSB0YWxrIHRvXG4gKiDigJQgYSBjb25maWcgb3B0aW9uIHRoYXQgZmFpbHMgYXQgM2FtIG9uIHRoZSBvbmUgY2FsbCB0aGF0IGhhZCB0byB3b3JrLiBBXG4gKiBnZW51aW5lbHkgRXZlbnRzLXYyLWNvbXBhdGlibGUgdmVuZG9yIGlzIHJlYWNoYWJsZSB0aHJvdWdoIGBjdXN0b21gIHdpdGggaXRzXG4gKiBlbmRwb2ludCBzdGF0ZWQsIHdoaWNoIGlzIGhvbmVzdCBhYm91dCB3aG8gdmVyaWZpZWQgdGhlIGNvbXBhdGliaWxpdHkuXG4gKi9cbmV4cG9ydCB0eXBlIE9uQ2FsbFByb3ZpZGVyID0gJ3BhZ2VyZHV0eScgfCAnY3VzdG9tJztcblxuZXhwb3J0IGNvbnN0IFBBR0VSRFVUWV9FVkVOVFNfVVJMID0gJ2h0dHBzOi8vZXZlbnRzLnBhZ2VyZHV0eS5jb20vdjIvZW5xdWV1ZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGFnZXJEdXR5Q29uZmlnIHtcbiAgLyoqXG4gICAqIFdoZXRoZXIgcGFnaW5nIHJ1bnMgYXQgYWxsLiBPUFQtSU4sIGFnYWluc3QgdGhpcyByZXBvJ3MgdXN1YWwgb3B0LW91dCBncmFpblxuICAgKiAoYFNVUFBPUlRfRU5BQkxFRGAsIGBCSUxMSU5HX0RJU0NPVU5UU19FTkFCTEVEYCk6IGEgZmVhdHVyZSBuZWVkaW5nIGFuXG4gICAqIGV4dGVybmFsIGNyZWRlbnRpYWwgZGVmYXVsdHMgb2ZmIGhlcmUsIHRoZSB3YXkgYEJJTExJTkdfTUVURVJJTkdfRU5BQkxFRGBcbiAgICogZG9lcywgYW5kIGEgcGFnZXIgd2l0aCBubyByb3V0aW5nIGtleSB3b3VsZCBwYWdlIG5vYm9keSB3aGlsZSByZXBvcnRpbmdcbiAgICogc3VjY2Vzcy5cbiAgICovXG4gIGVuYWJsZWQ6IGJvb2xlYW47XG4gIC8qKiBQZXItU0VSVklDRSBpbnRlZ3JhdGlvbiBrZXkuIE5PVCBhIFJFU1QgQVBJIGtleSDigJQgc2VlIGRvY3Mvb25jYWxsLXBhZ2luZy5tZC4gKi9cbiAgcm91dGluZ0tleTogc3RyaW5nO1xuICBwcm92aWRlcjogT25DYWxsUHJvdmlkZXI7XG4gIC8qKiBSZXNvbHZlZCBmcm9tIGBwcm92aWRlcmAgKyBgT05DQUxMX0VWRU5UU19VUkxgLiBFbXB0eSBtZWFucyBtaXNjb25maWd1cmVkLiAqL1xuICBlbmRwb2ludDogc3RyaW5nO1xuICB0aW1lb3V0TXM6IG51bWJlcjtcbn1cblxuLyoqXG4gKiBSZXNvbHZlIHRoZSBlbmRwb2ludCBmcm9tIHRoZSBwcm92aWRlciBhbmQgdGhlIG92ZXJyaWRlLlxuICpcbiAqIEV4cG9ydGVkIGJlY2F1c2UgdGhlIHJlc29sdXRpb24gaGFzIGEgZmFpbHVyZSBjYXNlIHdvcnRoIHRlc3RpbmcgZGlyZWN0bHk6XG4gKiBgY3VzdG9tYCB3aXRoIG5vIFVSTCByZXR1cm5zIEVNUFRZLCBhbmQgdGhlIGNhbGxlciB0cmVhdHMgdGhhdCBhc1xuICogdW5jb25maWd1cmVkIHJhdGhlciB0aGFuIHNpbGVudGx5IHJlYWNoaW5nIGZvciBQYWdlckR1dHkncyBlbmRwb2ludCB3aXRoXG4gKiBzb21lYm9keSBlbHNlJ3Mgcm91dGluZyBrZXkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlRXZlbnRzRW5kcG9pbnQocHJvdmlkZXI6IE9uQ2FsbFByb3ZpZGVyLCBvdmVycmlkZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgaWYgKG92ZXJyaWRlKSByZXR1cm4gb3ZlcnJpZGU7XG4gIHJldHVybiBwcm92aWRlciA9PT0gJ3BhZ2VyZHV0eScgPyBQQUdFUkRVVFlfRVZFTlRTX1VSTCA6ICcnO1xufVxuXG4vKipcbiAqIFdoZXRoZXIgcGFnaW5nIGlzIEJPVEggYXNrZWQgZm9yIGFuZCBjb2hlcmVudC5cbiAqXG4gKiBPTi1DQUxMIFJFUVVJUkVTIFNVUFBPUlQuIGBPTkNBTExfRU5BQkxFRGAgZXhpc3RzIHRvIHBhZ2UgYWJvdXQgYSBzdXBwb3J0XG4gKiByZXNwb25zZSB0YXJnZXQsIHNvIHdpdGggYFNVUFBPUlRfRU5BQkxFRD1mYWxzZWAgdGhlcmUgaXMgbm8gcHJvZHVjdCB0byBwYWdlXG4gKiBhYm91dCDigJQgdGhlIGJ1bmRsZXMgYXJlIGluYWN0aXZlLCBubyBjYXNlIGNhbiBiZSBvcGVuZWQsIGFuZCB0aGUgb25seSB0aGluZ1xuICogbGVmdCBpcyBhIGRlcGxveW1lbnQgcGF5aW5nIHBlciBzZWF0IGZvciBhIHBhZ2VyIHdpcmVkIHRvIG5vdGhpbmcuXG4gKlxuICogVkFMSURBVEVEIEZPUiBUSEUgQUNUSVZFIEZFQVRVUkUgT05MWSwgd2hpY2ggaXMgdGhlIHByZWNlZGVudCB0aGF0IG1hdHRlcnNcbiAqIGhlcmU6IGEgYnVuZGxlIHZhbGlkYXRvciBvbmNlIGNyYXNoZWQgYmlsbGluZyBhdCBib290IGJ5IGNoZWNraW5nIGV2ZXJ5XG4gKiBidW5kbGUgcmF0aGVyIHRoYW4gZXZlcnkgQUNUSVZFIG9uZS4gU28gdGhpcyBuZWl0aGVyIHRocm93cyBub3Igd2FybnMgd2hlblxuICogcGFnaW5nIGlzIG9mZiDigJQgaXQgaXMgbm90IGEgY29uZmxpY3QgdW50aWwgc29tZWJvZHkgYXNrcyBmb3IgdGhlIHRoaW5nLiBXaGVuXG4gKiB0aGV5IGRvLCB0aGUgcHJlcmVxdWlzaXRlIGlzIHJlcG9ydGVkIG9uY2UgYW5kIHBhZ2luZyBzdGF5cyBvZmYgcmF0aGVyIHRoYW5cbiAqIGhhbGYtb24sIGJlY2F1c2UgYSBwYWdlciB0aGF0IGZpcmVzIGZvciBhIHByb2R1Y3Qgbm9ib2R5IHNlbGxzIGlzIHRoZSBzYW1lXG4gKiBmYWlsdXJlIGFzIGEgcGFnZXIgd2l0aCBubyBrZXk6IGl0IHJlcG9ydHMgY292ZXJhZ2Ugb2Ygbm90aGluZy5cbiAqL1xuZnVuY3Rpb24gb25DYWxsQ29oZXJlbnRseUVuYWJsZWQoKTogYm9vbGVhbiB7XG4gIGlmICghZW52Qm9vbCgnT05DQUxMX0VOQUJMRUQnLCBmYWxzZSkpIHJldHVybiBmYWxzZTtcbiAgaWYgKGVudkJvb2woJ1NVUFBPUlRfRU5BQkxFRCcsIHRydWUpKSByZXR1cm4gdHJ1ZTtcbiAgbG9nZ2VyLmVycm9yKCdPTkNBTExfRU5BQkxFRD10cnVlIHdpdGggU1VQUE9SVF9FTkFCTEVEPWZhbHNlIOKAlCBwYWdpbmcgc3RheXMgT0ZGJywge1xuICAgIHdoeTogJ29uLWNhbGwgcGFnZXMgYWJvdXQgYSBzdXBwb3J0IHJlc3BvbnNlIHRhcmdldDsgd2l0aCBzdXBwb3J0IG9mZiB0aGVyZSBhcmUgbm8gY2FzZXMgYW5kIG5vIHRhcmdldCcsXG4gIH0pO1xuICByZXR1cm4gZmFsc2U7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYWdlckR1dHlDb25maWcoKTogUGFnZXJEdXR5Q29uZmlnIHtcbiAgY29uc3QgcHJvdmlkZXIgPSBlbnZTdHIoJ09OQ0FMTF9QUk9WSURFUicsICdwYWdlcmR1dHknKSA9PT0gJ2N1c3RvbScgPyAnY3VzdG9tJyA6ICdwYWdlcmR1dHknO1xuICByZXR1cm4ge1xuICAgIGVuYWJsZWQ6IG9uQ2FsbENvaGVyZW50bHlFbmFibGVkKCksXG4gICAgLy8gUmVhZCBmcm9tIHRoZSBlbnZpcm9ubWVudCByYXRoZXIgdGhhbiBhIG1vdW50ZWQgZmlsZTogdW5saWtlIHRoZVxuICAgIC8vIEFsZXJ0bWFuYWdlciBTbGFjayBVUkxzIChhcGlfdXJsX2ZpbGUpLCB0aGlzIGtleSBpcyBjb25zdW1lZCBieSBPVVJcbiAgICAvLyBwcm9jZXNzLCB3aGljaCBhbHJlYWR5IHJlY2VpdmVzIGl0cyBzZWNyZXRzIGFzIGVudiBmcm9tIGEgU2VjcmV0LlxuICAgIHJvdXRpbmdLZXk6IGVudlN0cignUEFHRVJEVVRZX1JPVVRJTkdfS0VZJywgJycpLFxuICAgIHByb3ZpZGVyLFxuICAgIGVuZHBvaW50OiByZXNvbHZlRXZlbnRzRW5kcG9pbnQocHJvdmlkZXIsIGVudlN0cignT05DQUxMX0VWRU5UU19VUkwnLCAnJykpLFxuICAgIHRpbWVvdXRNczogZW52SW50KCdPTkNBTExfRVZFTlRTX1RJTUVPVVRfTVMnLCA1MDAwLCB7IG1pbjogMSB9KSxcbiAgfTtcbn1cblxuLyoqXG4gKiBTZW5kIG9uZSBldmVudC4gUmV0dXJucyBgeyBvazogdHJ1ZSB9YCBvbmx5IHdoZW4gUGFnZXJEdXR5IEFDQ0VQVEVEIGl0LlxuICpcbiAqIEEgMjAyIGlzIGFuIGFjY2VwdGFuY2UgYW5kIG5vdCBhIGRlbGl2ZXJ5IHJlY2VpcHQg4oCUIGl0IHNheXMgUGFnZXJEdXR5IGhhcyB0aGVcbiAqIGV2ZW50LCBub3RoaW5nIGFib3V0IHdoZXRoZXIgYSBwaG9uZSByYW5nLiBgb25jYWxsX3BhZ2VzX3RvdGFse291dGNvbWV9YFxuICogcmVjb3JkcyB3aGF0IHdlIGtub3csIHdoaWNoIGlzIHRoaXMgYW5kIG5vIG1vcmU7IHRoZSBvbmx5IGhvbmVzdCBldmlkZW5jZSBvZlxuICogY292ZXJhZ2UgaXMgYSBodW1hbiBhY2tub3dsZWRnaW5nLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gc2VuZFBhZ2VyRHV0eUV2ZW50KFxuICBldmVudDogUGFnZXJEdXR5RXZlbnQsXG4gIGNmZzogUGFnZXJEdXR5Q29uZmlnID0gcGFnZXJEdXR5Q29uZmlnKCksXG4pOiBQcm9taXNlPFBhZ2VyRHV0eVJlc3VsdD4ge1xuICBjb25zdCBsYWJlbHMgPSB7IGFjdGlvbjogZXZlbnQuYWN0aW9uLCB0cmlnZ2VyOiBldmVudC50cmlnZ2VyID8/ICdhbGVydG1hbmFnZXInIH07XG5cbiAgLy8gQ29uZmlndXJlZCBPRkYgaXMgYSBTS0lQLCBkaXN0aW5jdCBmcm9tIGEgZmFpbHVyZS4gVGhlIEFsZXJ0bWFuYWdlciBsZWdcbiAgLy8gcmVsaWVzIG9uIHRoaXM6IGl0cyByb3V0ZSBpcyBhbHdheXMgcHJlc2VudCAoYWxlcnRtYW5hZ2VyLnltbCBpcyBhc3NlcnRlZFxuICAvLyBieXRlLWlkZW50aWNhbCBhY3Jvc3MgdGFyZ2V0cywgc28gaXQgY2Fubm90IGJlIHRvZ2dsZWQgcGVyIGRlcGxveW1lbnQpLCBhbmRcbiAgLy8gdGhpcyBlbmRwb2ludCBhY2NlcHRpbmctYW5kLWRyb3BwaW5nIGlzIHdoYXQgbWFrZXMgdGhlIGtub2Igd29yayB3aXRob3V0IGFcbiAgLy8gc2Vjb25kIGNvbmZpZyBmaWxlIGFuZCB3aXRob3V0IGEgc3RyZWFtIG9mIG5vdGlmaWNhdGlvbiBmYWlsdXJlcy5cbiAgaWYgKCFjZmcuZW5hYmxlZCkge1xuICAgIGVtaXRDb3VudGVyKCdvbmNhbGxfcGFnZXNfdG90YWwnLCB7IC4uLmxhYmVscywgb3V0Y29tZTogJ2Rpc2FibGVkJyB9KTtcbiAgICByZXR1cm4geyBvazogdHJ1ZSwgc2tpcHBlZDogdHJ1ZSB9O1xuICB9XG4gIGlmICghY2ZnLmVuZHBvaW50KSB7XG4gICAgLy8gYE9OQ0FMTF9QUk9WSURFUj1jdXN0b21gIHdpdGggbm8gYE9OQ0FMTF9FVkVOVFNfVVJMYC4gQ291bnRlZCB1bmRlciB0aGVcbiAgICAvLyBzYW1lIG91dGNvbWUgYXMgYSBtaXNzaW5nIGtleSBiZWNhdXNlIGl0IGlzIHRoZSBzYW1lIGNsYXNzIG9mIGZhaWx1cmUg4oCUXG4gICAgLy8gc29tZWJvZHkgYXNrZWQgZm9yIHBhZ2luZyBhbmQgdGhlIGNsaWVudCBoYXMgbm93aGVyZSB0byBzZW5kIGl0IOKAlCBhbmRcbiAgICAvLyBiZWNhdXNlIHF1aWV0bHkgcmVhY2hpbmcgZm9yIFBhZ2VyRHV0eSdzIGVuZHBvaW50IGluc3RlYWQgd291bGQgc2VuZCB0aGlzXG4gICAgLy8gZGVwbG95bWVudCdzIHJvdXRpbmcga2V5IHRvIGEgcHJvdmlkZXIgbm9ib2R5IGNob3NlLlxuICAgIGVtaXRDb3VudGVyKCdvbmNhbGxfcGFnZXNfdG90YWwnLCB7IC4uLmxhYmVscywgb3V0Y29tZTogJ3VuY29uZmlndXJlZCcgfSk7XG4gICAgbG9nZ2VyLmVycm9yKCdPTkNBTExfUFJPVklERVI9Y3VzdG9tIGJ1dCBPTkNBTExfRVZFTlRTX1VSTCBpcyBlbXB0eSDigJQgbm9ib2R5IHdpbGwgYmUgcGFnZWQnLCB7XG4gICAgICBkZWR1cEtleTogZXZlbnQuZGVkdXBLZXksXG4gICAgfSk7XG4gICAgcmV0dXJuIHsgb2s6IGZhbHNlLCBlcnJvcjogJ25vIGV2ZW50cyBlbmRwb2ludCcgfTtcbiAgfVxuICBpZiAoIWNmZy5yb3V0aW5nS2V5KSB7XG4gICAgLy8gRW5hYmxlZCB3aXRoIG5vIGtleSBpcyB0aGUgaGFsZi1jb25maWd1cmVkIHN0YXRlIHRoZSBrbm9iIGV4aXN0cyB0b1xuICAgIC8vIHByZXZlbnQsIGFuZCBpdCBpcyB0aGUgb25lIGZhaWx1cmUgd29ydGggc2hvdXRpbmcgYWJvdXQ6IHNvbWVib2R5IGFza2VkXG4gICAgLy8gZm9yIHBhZ2luZyBhbmQgaXMgbm90IGdldHRpbmcgaXQuXG4gICAgZW1pdENvdW50ZXIoJ29uY2FsbF9wYWdlc190b3RhbCcsIHsgLi4ubGFiZWxzLCBvdXRjb21lOiAndW5jb25maWd1cmVkJyB9KTtcbiAgICBsb2dnZXIuZXJyb3IoJ09OQ0FMTF9FTkFCTEVEIGlzIHRydWUgYnV0IFBBR0VSRFVUWV9ST1VUSU5HX0tFWSBpcyBlbXB0eSDigJQgbm9ib2R5IHdpbGwgYmUgcGFnZWQnLCB7XG4gICAgICBkZWR1cEtleTogZXZlbnQuZGVkdXBLZXksXG4gICAgfSk7XG4gICAgcmV0dXJuIHsgb2s6IGZhbHNlLCBlcnJvcjogJ25vIHJvdXRpbmcga2V5JyB9O1xuICB9XG5cbiAgLy8gYHJlc29sdmVgIGFuZCBgYWNrbm93bGVkZ2VgIG5lZWQgb25seSB0aGUga2V5IGFuZCB0aGUgYWN0aW9uOyBhIHRyaWdnZXJcbiAgLy8gbmVlZHMgc3VtbWFyeS9zZXZlcml0eS9zb3VyY2UuIEJ1aWx0IGNvbmRpdGlvbmFsbHkgc28gYSByZXNvbHZlIGNhbm5vdCBiZVxuICAvLyByZWplY3RlZCBmb3IgYSBtaXNzaW5nIGZpZWxkIGl0IG5ldmVyIHJlcXVpcmVkLlxuICBjb25zdCBib2R5OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHtcbiAgICByb3V0aW5nX2tleTogY2ZnLnJvdXRpbmdLZXksXG4gICAgZXZlbnRfYWN0aW9uOiBldmVudC5hY3Rpb24sXG4gICAgZGVkdXBfa2V5OiBldmVudC5kZWR1cEtleSxcbiAgfTtcbiAgaWYgKGV2ZW50LmFjdGlvbiA9PT0gJ3RyaWdnZXInKSB7XG4gICAgYm9keS5wYXlsb2FkID0ge1xuICAgICAgc3VtbWFyeTogZXZlbnQuc3VtbWFyeSA/PyAnUGlwZWxpbmUgQnVpbGRlciBhbGVydCcsXG4gICAgICBzZXZlcml0eTogZXZlbnQuc2V2ZXJpdHkgPz8gJ2NyaXRpY2FsJyxcbiAgICAgIHNvdXJjZTogZXZlbnQuc291cmNlID8/ICdwaXBlbGluZS1idWlsZGVyJyxcbiAgICAgIC4uLihldmVudC5jb21wb25lbnQgPyB7IGNvbXBvbmVudDogZXZlbnQuY29tcG9uZW50IH0gOiB7fSksXG4gICAgICAuLi4oZXZlbnQuZ3JvdXAgPyB7IGdyb3VwOiBldmVudC5ncm91cCB9IDoge30pLFxuICAgICAgLi4uKGV2ZW50LmNsYXNzID8geyBjbGFzczogZXZlbnQuY2xhc3MgfSA6IHt9KSxcbiAgICAgIC4uLihldmVudC5jdXN0b21EZXRhaWxzID8geyBjdXN0b21fZGV0YWlsczogZXZlbnQuY3VzdG9tRGV0YWlscyB9IDoge30pLFxuICAgIH07XG4gIH1cblxuICB0cnkge1xuICAgIGNvbnN0IHJlc3AgPSBhd2FpdCBzYWZlRmV0Y2goY2ZnLmVuZHBvaW50LCB7XG4gICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgIGhlYWRlcnM6IHsgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyB9LFxuICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoYm9keSksXG4gICAgICB0aW1lb3V0TXM6IGNmZy50aW1lb3V0TXMsXG4gICAgfSk7XG4gICAgLy8gYHNhZmVGZXRjaGAgcmVmdXNlcyByZWRpcmVjdHMgcmF0aGVyIHRoYW4gZm9sbG93aW5nIHRoZW0sIHNvIGEgM3h4IGFycml2ZXNcbiAgICAvLyBhcyBgcmVkaXJlY3RlZGAgYW5kIGlzIGEgRkFJTEVEIHNlbmQg4oCUIG5ldmVyIGEgcGl2b3QgdG8gYW4gdW52ZXR0ZWQgaG9zdFxuICAgIC8vIGFuZCBuZXZlciByZWNvcmRlZCBncmVlbi5cbiAgICBpZiAocmVzcC5yZWRpcmVjdGVkKSB7XG4gICAgICBlbWl0Q291bnRlcignb25jYWxsX3BhZ2VzX3RvdGFsJywgeyAuLi5sYWJlbHMsIG91dGNvbWU6ICdyZWRpcmVjdGVkJyB9KTtcbiAgICAgIGxvZ2dlci5lcnJvcignUGFnZXJEdXR5IGVuZHBvaW50IHJlZGlyZWN0ZWQg4oCUIHJlZnVzZWQnLCB7IHN0YXR1czogcmVzcC5zdGF0dXMgfSk7XG4gICAgICByZXR1cm4geyBvazogZmFsc2UsIHN0YXR1czogcmVzcC5zdGF0dXMsIGVycm9yOiAnZW5kcG9pbnQgcmVkaXJlY3RlZCAocmVmdXNlZCknIH07XG4gICAgfVxuICAgIGlmICghcmVzcC5vaykge1xuICAgICAgZW1pdENvdW50ZXIoJ29uY2FsbF9wYWdlc190b3RhbCcsIHsgLi4ubGFiZWxzLCBvdXRjb21lOiAncmVqZWN0ZWQnIH0pO1xuICAgICAgbG9nZ2VyLmVycm9yKCdQYWdlckR1dHkgcmVqZWN0ZWQgYW4gZXZlbnQnLCB7IHN0YXR1czogcmVzcC5zdGF0dXMsIGRlZHVwS2V5OiBldmVudC5kZWR1cEtleSB9KTtcbiAgICAgIHJldHVybiB7IG9rOiBmYWxzZSwgc3RhdHVzOiByZXNwLnN0YXR1cywgZXJyb3I6IGBzdGF0dXMgJHtyZXNwLnN0YXR1c31gIH07XG4gICAgfVxuICAgIGVtaXRDb3VudGVyKCdvbmNhbGxfcGFnZXNfdG90YWwnLCB7IC4uLmxhYmVscywgb3V0Y29tZTogJ2FjY2VwdGVkJyB9KTtcbiAgICByZXR1cm4geyBvazogdHJ1ZSwgc3RhdHVzOiByZXNwLnN0YXR1cyB9O1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBlbWl0Q291bnRlcignb25jYWxsX3BhZ2VzX3RvdGFsJywgeyAuLi5sYWJlbHMsIG91dGNvbWU6ICdlcnJvcicgfSk7XG4gICAgbG9nZ2VyLmVycm9yKCdDb3VsZCBub3QgcmVhY2ggUGFnZXJEdXR5JywgeyBlcnJvcjogZXJyb3JNZXNzYWdlKGVyciksIGRlZHVwS2V5OiBldmVudC5kZWR1cEtleSB9KTtcbiAgICByZXR1cm4geyBvazogZmFsc2UsIGVycm9yOiBlcnJvck1lc3NhZ2UoZXJyKSB9O1xuICB9XG59XG4iXX0=
|
|
186
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnZXJkdXR5LmpzIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2VydmljZXMvcGFnZXJkdXR5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7QUFFdEM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FrQ0c7QUFFSCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDbEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNwRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFN0MsTUFBTSxNQUFNLEdBQUcsWUFBWSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0FBZ0Z6QyxNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyx5Q0FBeUMsQ0FBQztBQW1COUU7Ozs7Ozs7R0FPRztBQUNILE1BQU0sVUFBVSxxQkFBcUIsQ0FBQyxRQUF3QixFQUFFLFFBQWdCO0lBQzlFLElBQUksUUFBUTtRQUFFLE9BQU8sUUFBUSxDQUFDO0lBQzlCLE9BQU8sUUFBUSxLQUFLLFdBQVcsQ0FBQyxDQUFDLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztBQUM5RCxDQUFDO0FBRUQ7Ozs7Ozs7Ozs7Ozs7OztHQWVHO0FBQ0gsU0FBUyx1QkFBdUI7SUFDOUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRSxLQUFLLENBQUM7UUFBRSxPQUFPLEtBQUssQ0FBQztJQUNwRCxJQUFJLE9BQU8sQ0FBQyxpQkFBaUIsRUFBRSxJQUFJLENBQUM7UUFBRSxPQUFPLElBQUksQ0FBQztJQUNsRCxNQUFNLENBQUMsS0FBSyxDQUFDLG1FQUFtRSxFQUFFO1FBQ2hGLEdB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QUssQ0FBQywyQkFBMkIsRUFBRSxFQUFFLEtBQUssRUFBRSxZQUFZLENBQUMsR0FBRyxDQUFDLEVBQUUsUUFBUSxFQUFFLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQ2xHLE9BQU8sRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxZQUFZLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztJQUNqRCxDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG4vKipcbiAqIFBhZ2VyRHV0eSBFdmVudHMgQVBJIHYyIOKAlCB0aGUgb25seSB0aGluZyBpbiB0aGlzIHJlcG8gdGhhdCBjYW4gd2FrZSBhIGh1bWFuLlxuICpcbiAqIFdIWSBUSElTIEVYSVNUUy4gYFNVUFBPUlRfUFJFTUlVTV9FTkFCTEVEYCBzaGlwcyBvbiwgYW5kIHByZW1pdW0gc2VsbHMgYSBmaXJzdFxuICogcmVzcG9uc2UgXCJ3aXRoaW4gOCBob3VycywgYW55IGRheVwiIOKAlCB0aGUgb25lIHJlc3BvbnNlIHRhcmdldCBpblxuICogYFNVUFBPUlRfUkVTUE9OU0VfVEFSR0VUU2Agd2l0aCBubyBidXNpbmVzcy1ob3VycyBleGVtcHRpb24sIHNvIGl0cyBjbG9jayBydW5zXG4gKiB0aHJvdWdoIG5pZ2h0cyBhbmQgd2Vla2VuZHMuIEJlZm9yZSB0aGlzLCB0aGUgb25seSB0aGluZyB3YXRjaGluZyBpdCB3YXNcbiAqIGBTdXBwb3J0UHJlbWl1bUZpcnN0UmVzcG9uc2VBdFJpc2tgIHJvdXRlZCB0byBhIFNsYWNrIGNoYW5uZWwsIHdoaWNoIHNhdGlzZmllc1xuICogdGhlIHJvdXRpbmcgYW5kIG5vdCB0aGUgb2JsaWdhdGlvbjogdGhlIGFsZXJ0J3Mgb3duIGRlc2NyaXB0aW9uIHNheXMgXCJpZiBub1xuICogcm90YSBpcyBhd2FrZSwgdGhhdCBpcyB0aGUgY2F1c2VcIi5cbiAqXG4gKiBXSFkgTk8gU0RLLiBUaGUgd2hvbGUgcHJvdG9jb2wgaXMgb25lIEhUVFBTIFBPU1Qgb2YgSlNPTiB0byBhIGZpeGVkIGVuZHBvaW50LlxuICogQW4gU0RLIGZvciB0aGF0IGlzIGEgZGVwZW5kZW5jeSBmb3Igbm90aGluZyBpbiBhIHJlcG8gdGhhdCBkaWdlc3QtcGlucyxcbiAqIE9TVi1zY2FucyBhbmQgZW5mb3JjZXMgYG1pbmltdW1SZWxlYXNlQWdlYC5cbiAqXG4gKiBXSEFUIFRIRSBQUk9WSURFUiBPV05TLCBBTkQgV0hZIFRIQVQgREVDSURFRCBUSEUgREVTSUdOLiBgZGVkdXBLZXlgIHBsdXNcbiAqIGBldmVudF9hY3Rpb25gIG1lYW5zIFBhZ2VyRHV0eSBob2xkcyB0aGUgaW5jaWRlbnQgc3RhdGUsIHNvIHRocmVlIHRoaW5ncyB0aGlzXG4gKiByZXBvIHdvdWxkIG90aGVyd2lzZSBoYXZlIGhhZCB0byBidWlsZCBhcmUgc2ltcGx5IHRoZWlyczpcbiAqXG4gKiAgLSBERURVUExJQ0FUSU9OLiBGaWZ0eSBwcmVtaXVtIGNhc2VzIGJyZWFjaGluZyB0b2dldGhlciDigJQgdGhlIG5vcm1hbCBzaGFwZVxuICogICAgYWZ0ZXIgYW55IG91dGFnZSDigJQgaXMgb25lIGluY2lkZW50LCBub3QgZmlmdHkgcGFnZXMuIEZpZnR5IHBhZ2VzIGFuZCBub1xuICogICAgcGFnZXMgYXJlIHRoZSBzYW1lIHRoaW5nLlxuICogIC0gUkVTT0xVVElPTi4gYHJlc29sdmVgIG9uIHRoZSBzYW1lIGtleSBjbG9zZXMgaXQsIHNvIGEgY2FzZSB0aGF0IGZpbmFsbHlcbiAqICAgIGdldHMgYSBmaXJzdCByZXNwb25zZSBzdG9wcyBwYWdpbmcgd2l0aG91dCBhIGxvY2FsIHN0YXRlIG1hY2hpbmUuXG4gKiAgLSBDT05UQUNUIE1FVEhPRFMgYW5kIHRoZWlyIHZlcmlmaWNhdGlvbiwgdGhlIHJvdGEsIGFuZCBlc2NhbGF0aW9uLlxuICpcbiAqIFNvIHRoZXJlIGlzIG5vIHJvdGEgaW4gdGhpcyBjb2RlYmFzZSBvbiBwdXJwb3NlLiBXaGF0IHN0YXlzIGhlcmUgaXMgdGhlXG4gKiBUUklHR0VSLCBiZWNhdXNlIHRoZSBwcm9kdWN0IGtub3dzIHNvbWV0aGluZyBQYWdlckR1dHkgY2Fubm90OiBhIHN1cHBvcnQgY2FzZVxuICogY2FycmllcyBhbiBleGFjdCBgcmVzcG9uc2VfZHVlX2F0YCwgd2hpY2ggYmVhdHMgYSBwOTAgaGlzdG9ncmFtIHRoYXQgY2FuIG9ubHlcbiAqIHNheSB0aGUgZGlzdHJpYnV0aW9uIGFscmVhZHkgZHJpZnRlZC5cbiAqXG4gKiBORVZFUiBUSFJPV1MuIEV2ZXJ5IGNhbGxlciBpcyBvbiBhbiBhbGVydGluZyBwYXRoIOKAlCBhIHdlYmhvb2sgaGFuZGxlciBvciBhXG4gKiBzd2VlcCDigJQgYW5kIGFuIGV4Y2VwdGlvbiB0aGVyZSB0dXJucyBcImNvdWxkIG5vdCBwYWdlXCIgaW50byBcImNyYXNoZWQgaW5zdGVhZCBvZlxuICogcGFnaW5nXCIuIEZhaWx1cmVzIGNvbWUgYmFjayBhcyBhIHR5cGVkIHJlc3VsdCBhbmQgYXJlIGNvdW50ZWQuXG4gKi9cblxuaW1wb3J0IHsgZW52Qm9vbCwgZW52SW50LCBlbnZTdHIgfSBmcm9tICcuLi91dGlscy9lbnYuanMnO1xuaW1wb3J0IHsgY3JlYXRlTG9nZ2VyIH0gZnJvbSAnLi4vdXRpbHMvbG9nZ2VyLmpzJztcbmltcG9ydCB7IGVtaXRDb3VudGVyIH0gZnJvbSAnLi4vdXRpbHMvbWV0cmljLWVtaXR0ZXIuanMnO1xuaW1wb3J0IHsgZXJyb3JNZXNzYWdlIH0gZnJvbSAnLi4vdXRpbHMvcmVzcG9uc2UuanMnO1xuaW1wb3J0IHsgc2FmZUZldGNoIH0gZnJvbSAnLi4vdXRpbHMvc3NyZi5qcyc7XG5cbmNvbnN0IGxvZ2dlciA9IGNyZWF0ZUxvZ2dlcigncGFnZXJkdXR5Jyk7XG5cbi8qKiBQYWdlckR1dHkncyBvd24gc2V2ZXJpdHkgZW51bS4gT3VycyBtYXAgc3RyYWlnaHQgb250byBpdC4gKi9cbmV4cG9ydCB0eXBlIFBhZ2VyRHV0eVNldmVyaXR5ID0gJ2NyaXRpY2FsJyB8ICdlcnJvcicgfCAnd2FybmluZycgfCAnaW5mbyc7XG5cbi8qKiBUaGUgdGhyZWUgZm9sbG93LXVwIGFjdGlvbnMgYSBzaW5nbGUgYGRlZHVwS2V5YCBtb3ZlcyB0aHJvdWdoLiAqL1xuZXhwb3J0IHR5cGUgUGFnZXJEdXR5QWN0aW9uID0gJ3RyaWdnZXInIHwgJ2Fja25vd2xlZGdlJyB8ICdyZXNvbHZlJztcblxuZXhwb3J0IGludGVyZmFjZSBQYWdlckR1dHlFdmVudCB7XG4gIC8qKlxuICAgKiBUaGUga2V5IHRoYXQgdGllcyBhIHRyaWdnZXIgdG8gaXRzIGxhdGVyIGFja25vd2xlZGdlL3Jlc29sdmUuIFN0YWJsZSBhbmRcbiAgICogZGVyaXZlZCwgbmV2ZXIgcmFuZG9tOiBgY2FzZTo8Y2FzZUlkPmAgZm9yIHRoZSBwZXItY2FzZSBzd2VlcCxcbiAgICogQWxlcnRtYW5hZ2VyJ3Mgb3duIGdyb3VwIGZpbmdlcnByaW50IGZvciB0aGUgYWxlcnQgbGVnIOKAlCBzbyBpdHMgZ3JvdXBpbmcgYW5kXG4gICAqIG91cnMgY2Fubm90IGZpZ2h0IG92ZXIgdGhlIHNhbWUgaW5jaWRlbnQuXG4gICAqL1xuICBkZWR1cEtleTogc3RyaW5nO1xuICBhY3Rpb246IFBhZ2VyRHV0eUFjdGlvbjtcbiAgLyoqXG4gICAqIFdISUNIIGxlZyByYWlzZWQgdGhpcywgYXMgYSBtZXRyaWMgZGltZW5zaW9uIG9ubHkg4oCUIG5ldmVyIHNlbnQgdG8gUGFnZXJEdXR5LlxuICAgKlxuICAgKiBUaGUgdHdvIGxlZ3MgaGF2ZSBkaWZmZXJlbnQgZmFpbHVyZSBtb2RlcyBhbmQgbXVzdCBiZSBzZXBhcmFibGUgaW4gb25lXG4gICAqIGNvdW50ZXI6IGBhbGVydG1hbmFnZXJgIGRlcGVuZHMgb24gUHJvbWV0aGV1cyBldmFsdWF0aW5nIGFuZCBBbGVydG1hbmFnZXJcbiAgICogZGVsaXZlcmluZywgYGNhc2VgIGRlcGVuZHMgb24gdGhpcyBwcm9kdWN0J3Mgb3duIHN3ZWVwIGJlaW5nIGFsaXZlLiBDb2xsYXBzZWRcbiAgICogaW50byBvbmUgc2VyaWVzLCBhIGRlYWQgc3dlZXAgaXMgaW52aXNpYmxlIGZvciBhcyBsb25nIGFzIHRoZSBmbGVldCBhbGVydFxuICAgKiBzdGlsbCBmaXJlcyDigJQgd2hpY2ggaXMgcHJlY2lzZWx5IHRoZSB3aW5kb3cgdGhlIHBlci1jYXNlIHRyaWdnZXIgZXhpc3RzIHRvXG4gICAqIGNvdmVyLlxuICAgKi9cbiAgdHJpZ2dlcj86ICdhbGVydG1hbmFnZXInIHwgJ2Nhc2UnO1xuICAvKiogUmVxdWlyZWQgYnkgdGhlIEFQSSBvbiBhIGB0cmlnZ2VyYDsgaWdub3JlZCBvbiByZXNvbHZlLiAqL1xuICBzdW1tYXJ5Pzogc3RyaW5nO1xuICBzZXZlcml0eT86IFBhZ2VyRHV0eVNldmVyaXR5O1xuICAvKiogSHVtYW4tcmVhZGFibGUgb3JpZ2luLiBSZXF1aXJlZCBvbiBhIGB0cmlnZ2VyYC4gKi9cbiAgc291cmNlPzogc3RyaW5nO1xuICBjb21wb25lbnQ/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBQYWdlckR1dHkncyBncm91cGluZyBkaW1lbnNpb24uIFdlIHB1dCB0aGUgT1JHIElEIGhlcmUgYW5kIG5vdGhpbmcgZWxzZSDigJRcbiAgICogc2VlIHRoZSBub3RlIG9uIGBjdXN0b21EZXRhaWxzYC5cbiAgICovXG4gIGdyb3VwPzogc3RyaW5nO1xuICBjbGFzcz86IHN0cmluZztcbiAgLyoqXG4gICAqIEZyZWUtZm9ybSBkZXRhaWwuIElEUyBBTkQgVElNRVNUQU1QUyBPTkxZIOKAlCBuZXZlciBjYXNlIGNvbnRlbnQuXG4gICAqXG4gICAqIFRoaXMgaXMgYW4gYXV0aG9yaXphdGlvbiBib3VuZGFyeSwgbm90IGEgc3R5bGUgcHJlZmVyZW5jZS4gVGhlIG9uLWNhbGxcbiAgICogcGVybWlzc2lvbiBpcyBzeXN0ZW0tb3JnIHNjb3BlZCBhbmQgZ3JhbnRzIG5vIHRlbmFudCBhY2Nlc3MgYXQgYWxsXG4gICAqIChgaXNTeXN0ZW1PcmdJZGAgaXMgYSBjb250ZW50LW93bmVyIGNoZWNrLCBub3QgYSBwcml2aWxlZ2UgZ2F0ZSksIHNvIHB1dHRpbmdcbiAgICogYSBjYXNlIHN1YmplY3Qgb3IgYm9keSBoZXJlIHdvdWxkIHJvdXRlIHRlbmFudCBjb250ZW50IHRvIGEgdGhpcmQgcGFydHlcbiAgICogdGhyb3VnaCBhIGNoYW5uZWwgdGhhdCBkZWxpYmVyYXRlbHkgaGFzIG5vIHJpZ2h0IHRvIHJlYWQgaXQuXG4gICAqL1xuICBjdXN0b21EZXRhaWxzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB8IG51bGw+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBhZ2VyRHV0eVJlc3VsdCB7XG4gIG9rOiBib29sZWFuO1xuICAvKiogSFRUUCBzdGF0dXMgd2hlbiB0aGUgcmVxdWVzdCBjb21wbGV0ZWQuICovXG4gIHN0YXR1cz86IG51bWJlcjtcbiAgLyoqIFdoeSBpdCBmYWlsZWQsIGZvciB0aGUgbG9nIGxpbmUg4oCUIG5ldmVyIHN1cmZhY2VkIHRvIGEgdGVuYW50LiAqL1xuICBlcnJvcj86IHN0cmluZztcbiAgLyoqIFRydWUgd2hlbiBwYWdpbmcgaXMgY29uZmlndXJlZCBvZmYsIHNvIGEgY2FsbGVyIGNhbiB0ZWxsIFwib2ZmXCIgZnJvbSBcImJyb2tlXCIuICovXG4gIHNraXBwZWQ/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIFdoaWNoIHByb3ZpZGVyIHRoZSBFdmVudHMgdjIgY2FsbHMgZ28gdG8uXG4gKlxuICogYHBhZ2VyZHV0eWAgcGlucyB0aGUga25vd24gZW5kcG9pbnQuIGBjdXN0b21gIG1lYW5zIFwic29tZXRoaW5nIGVsc2UgdGhhdFxuICogaW1wbGVtZW50cyB0aGlzIHdpcmUgZm9ybWF0XCIgYW5kIFJFUVVJUkVTIGBPTkNBTExfRVZFTlRTX1VSTGAg4oCUIGl0IGRvZXMgbm90XG4gKiBmYWxsIGJhY2ssIGJlY2F1c2UgZmFsbGluZyBiYWNrIGlzIGhvdyBhIHR5cG8nZCBVUkwgcXVpZXRseSBwYWdlcyB0aGUgd3JvbmdcbiAqIGFjY291bnQsIG9yIHBhZ2VzIG5vYm9keSB3aGlsZSByZXBvcnRpbmcgc3VjY2Vzcy5cbiAqXG4gKiBXSFkgVEhFUkUgSVMgTk8gYG9wc2dlbmllYCBIRVJFLCBhbHRob3VnaCB0aGUgZGVzaWduIG5vdGVzIHByb3Bvc2VkIG9uZTpcbiAqIG5vdGhpbmcgZG9jdW1lbnRzIE9wc2dlbmllIGFjY2VwdGluZyB0aGUgRXZlbnRzIHYyIHNoYXBlLiBJdHMgb3duIGFsZXJ0IEFQSVxuICogdGFrZXMgYG1lc3NhZ2VgL2BhbGlhc2AvYHByaW9yaXR5YCwgbm90IGBzdW1tYXJ5YC9gc2V2ZXJpdHlgL2BkZWR1cF9rZXlgLCBzb1xuICogYW4gYG9wc2dlbmllYCB2YWx1ZSB3b3VsZCBuYW1lIGEgcHJvdmlkZXIgdGhpcyBjbGllbnQgY2Fubm90IGFjdHVhbGx5IHRhbGsgdG9cbiAqIOKAlCBhIGNvbmZpZyBvcHRpb24gdGhhdCBmYWlscyBhdCAzYW0gb24gdGhlIG9uZSBjYWxsIHRoYXQgaGFkIHRvIHdvcmsuIEFcbiAqIGdlbnVpbmVseSBFdmVudHMtdjItY29tcGF0aWJsZSB2ZW5kb3IgaXMgcmVhY2hhYmxlIHRocm91Z2ggYGN1c3RvbWAgd2l0aCBpdHNcbiAqIGVuZHBvaW50IHN0YXRlZCwgd2hpY2ggaXMgaG9uZXN0IGFib3V0IHdobyB2ZXJpZmllZCB0aGUgY29tcGF0aWJpbGl0eS5cbiAqL1xuZXhwb3J0IHR5cGUgT25DYWxsUHJvdmlkZXIgPSAncGFnZXJkdXR5JyB8ICdjdXN0b20nO1xuXG5leHBvcnQgY29uc3QgUEFHRVJEVVRZX0VWRU5UU19VUkwgPSAnaHR0cHM6Ly9ldmVudHMucGFnZXJkdXR5LmNvbS92Mi9lbnF1ZXVlJztcblxuZXhwb3J0IGludGVyZmFjZSBQYWdlckR1dHlDb25maWcge1xuICAvKipcbiAgICogV2hldGhlciBwYWdpbmcgcnVucyBhdCBhbGwuIE9QVC1JTiwgYWdhaW5zdCB0aGlzIHJlcG8ncyB1c3VhbCBvcHQtb3V0IGdyYWluXG4gICAqIChgU1VQUE9SVF9FTkFCTEVEYCwgYEJJTExJTkdfRElTQ09VTlRTX0VOQUJMRURgKTogYSBmZWF0dXJlIG5lZWRpbmcgYW5cbiAgICogZXh0ZXJuYWwgY3JlZGVudGlhbCBkZWZhdWx0cyBvZmYgaGVyZSwgdGhlIHdheSBgQklMTElOR19NRVRFUklOR19FTkFCTEVEYFxuICAgKiBkb2VzLCBhbmQgYSBwYWdlciB3aXRoIG5vIHJvdXRpbmcga2V5IHdvdWxkIHBhZ2Ugbm9ib2R5IHdoaWxlIHJlcG9ydGluZ1xuICAgKiBzdWNjZXNzLlxuICAgKi9cbiAgZW5hYmxlZDogYm9vbGVhbjtcbiAgLyoqIFBlci1TRVJWSUNFIGludGVncmF0aW9uIGtleS4gTk9UIGEgUkVTVCBBUEkga2V5IOKAlCBzZWUgZG9jcy9vbmNhbGwtcGFnaW5nLm1kLiAqL1xuICByb3V0aW5nS2V5OiBzdHJpbmc7XG4gIHByb3ZpZGVyOiBPbkNhbGxQcm92aWRlcjtcbiAgLyoqIFJlc29sdmVkIGZyb20gYHByb3ZpZGVyYCArIGBPTkNBTExfRVZFTlRTX1VSTGAuIEVtcHR5IG1lYW5zIG1pc2NvbmZpZ3VyZWQuICovXG4gIGVuZHBvaW50OiBzdHJpbmc7XG4gIHRpbWVvdXRNczogbnVtYmVyO1xufVxuXG4vKipcbiAqIFJlc29sdmUgdGhlIGVuZHBvaW50IGZyb20gdGhlIHByb3ZpZGVyIGFuZCB0aGUgb3ZlcnJpZGUuXG4gKlxuICogRXhwb3J0ZWQgYmVjYXVzZSB0aGUgcmVzb2x1dGlvbiBoYXMgYSBmYWlsdXJlIGNhc2Ugd29ydGggdGVzdGluZyBkaXJlY3RseTpcbiAqIGBjdXN0b21gIHdpdGggbm8gVVJMIHJldHVybnMgRU1QVFksIGFuZCB0aGUgY2FsbGVyIHRyZWF0cyB0aGF0IGFzXG4gKiB1bmNvbmZpZ3VyZWQgcmF0aGVyIHRoYW4gc2lsZW50bHkgcmVhY2hpbmcgZm9yIFBhZ2VyRHV0eSdzIGVuZHBvaW50IHdpdGhcbiAqIHNvbWVib2R5IGVsc2UncyByb3V0aW5nIGtleS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVFdmVudHNFbmRwb2ludChwcm92aWRlcjogT25DYWxsUHJvdmlkZXIsIG92ZXJyaWRlOiBzdHJpbmcpOiBzdHJpbmcge1xuICBpZiAob3ZlcnJpZGUpIHJldHVybiBvdmVycmlkZTtcbiAgcmV0dXJuIHByb3ZpZGVyID09PSAncGFnZXJkdXR5JyA/IFBBR0VSRFVUWV9FVkVOVFNfVVJMIDogJyc7XG59XG5cbi8qKlxuICogV2hldGhlciBwYWdpbmcgaXMgQk9USCBhc2tlZCBmb3IgYW5kIGNvaGVyZW50LlxuICpcbiAqIE9OLUNBTEwgUkVRVUlSRVMgU1VQUE9SVC4gYE9OQ0FMTF9FTkFCTEVEYCBleGlzdHMgdG8gcGFnZSBhYm91dCBhIHN1cHBvcnRcbiAqIHJlc3BvbnNlIHRhcmdldCwgc28gd2l0aCBgU1VQUE9SVF9FTkFCTEVEPWZhbHNlYCB0aGVyZSBpcyBubyBwcm9kdWN0IHRvIHBhZ2VcbiAqIGFib3V0IOKAlCB0aGUgYnVuZGxlcyBhcmUgaW5hY3RpdmUsIG5vIGNhc2UgY2FuIGJlIG9wZW5lZCwgYW5kIHRoZSBvbmx5IHRoaW5nXG4gKiBsZWZ0IGlzIGEgZGVwbG95bWVudCBwYXlpbmcgcGVyIHNlYXQgZm9yIGEgcGFnZXIgd2lyZWQgdG8gbm90aGluZy5cbiAqXG4gKiBWQUxJREFURUQgRk9SIFRIRSBBQ1RJVkUgRkVBVFVSRSBPTkxZLCB3aGljaCBpcyB0aGUgcHJlY2VkZW50IHRoYXQgbWF0dGVyc1xuICogaGVyZTogYSBidW5kbGUgdmFsaWRhdG9yIG9uY2UgY3Jhc2hlZCBiaWxsaW5nIGF0IGJvb3QgYnkgY2hlY2tpbmcgZXZlcnlcbiAqIGJ1bmRsZSByYXRoZXIgdGhhbiBldmVyeSBBQ1RJVkUgb25lLiBTbyB0aGlzIG5laXRoZXIgdGhyb3dzIG5vciB3YXJucyB3aGVuXG4gKiBwYWdpbmcgaXMgb2ZmIOKAlCBpdCBpcyBub3QgYSBjb25mbGljdCB1bnRpbCBzb21lYm9keSBhc2tzIGZvciB0aGUgdGhpbmcuIFdoZW5cbiAqIHRoZXkgZG8sIHRoZSBwcmVyZXF1aXNpdGUgaXMgcmVwb3J0ZWQgb25jZSBhbmQgcGFnaW5nIHN0YXlzIG9mZiByYXRoZXIgdGhhblxuICogaGFsZi1vbiwgYmVjYXVzZSBhIHBhZ2VyIHRoYXQgZmlyZXMgZm9yIGEgcHJvZHVjdCBub2JvZHkgc2VsbHMgaXMgdGhlIHNhbWVcbiAqIGZhaWx1cmUgYXMgYSBwYWdlciB3aXRoIG5vIGtleTogaXQgcmVwb3J0cyBjb3ZlcmFnZSBvZiBub3RoaW5nLlxuICovXG5mdW5jdGlvbiBvbkNhbGxDb2hlcmVudGx5RW5hYmxlZCgpOiBib29sZWFuIHtcbiAgaWYgKCFlbnZCb29sKCdPTkNBTExfRU5BQkxFRCcsIGZhbHNlKSkgcmV0dXJuIGZhbHNlO1xuICBpZiAoZW52Qm9vbCgnU1VQUE9SVF9FTkFCTEVEJywgdHJ1ZSkpIHJldHVybiB0cnVlO1xuICBsb2dnZXIuZXJyb3IoJ09OQ0FMTF9FTkFCTEVEPXRydWUgd2l0aCBTVVBQT1JUX0VOQUJMRUQ9ZmFsc2Ug4oCUIHBhZ2luZyBzdGF5cyBPRkYnLCB7XG4gICAgd2h5OiAnb24tY2FsbCBwYWdlcyBhYm91dCBhIHN1cHBvcnQgcmVzcG9uc2UgdGFyZ2V0OyB3aXRoIHN1cHBvcnQgb2ZmIHRoZXJlIGFyZSBubyBjYXNlcyBhbmQgbm8gdGFyZ2V0JyxcbiAgfSk7XG4gIHJldHVybiBmYWxzZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhZ2VyRHV0eUNvbmZpZygpOiBQYWdlckR1dHlDb25maWcge1xuICBjb25zdCBwcm92aWRlciA9IGVudlN0cignT05DQUxMX1BST1ZJREVSJywgJ3BhZ2VyZHV0eScpID09PSAnY3VzdG9tJyA/ICdjdXN0b20nIDogJ3BhZ2VyZHV0eSc7XG4gIHJldHVybiB7XG4gICAgZW5hYmxlZDogb25DYWxsQ29oZXJlbnRseUVuYWJsZWQoKSxcbiAgICAvLyBSZWFkIGZyb20gdGhlIGVudmlyb25tZW50IHJhdGhlciB0aGFuIGEgbW91bnRlZCBmaWxlOiB1bmxpa2UgdGhlXG4gICAgLy8gQWxlcnRtYW5hZ2VyIFNsYWNrIFVSTHMgKGFwaV91cmxfZmlsZSksIHRoaXMga2V5IGlzIGNvbnN1bWVkIGJ5IE9VUlxuICAgIC8vIHByb2Nlc3MsIHdoaWNoIGFscmVhZHkgcmVjZWl2ZXMgaXRzIHNlY3JldHMgYXMgZW52IGZyb20gYSBTZWNyZXQuXG4gICAgcm91dGluZ0tleTogZW52U3RyKCdQQUdFUkRVVFlfUk9VVElOR19LRVknLCAnJyksXG4gICAgcHJvdmlkZXIsXG4gICAgZW5kcG9pbnQ6IHJlc29sdmVFdmVudHNFbmRwb2ludChwcm92aWRlciwgZW52U3RyKCdPTkNBTExfRVZFTlRTX1VSTCcsICcnKSksXG4gICAgdGltZW91dE1zOiBlbnZJbnQoJ09OQ0FMTF9FVkVOVFNfVElNRU9VVF9NUycsIDUwMDAsIHsgbWluOiAxIH0pLFxuICB9O1xufVxuXG4vKipcbiAqIFNlbmQgb25lIGV2ZW50LiBSZXR1cm5zIGB7IG9rOiB0cnVlIH1gIG9ubHkgd2hlbiBQYWdlckR1dHkgQUNDRVBURUQgaXQuXG4gKlxuICogQSAyMDIgaXMgYW4gYWNjZXB0YW5jZSBhbmQgbm90IGEgZGVsaXZlcnkgcmVjZWlwdCDigJQgaXQgc2F5cyBQYWdlckR1dHkgaGFzIHRoZVxuICogZXZlbnQsIG5vdGhpbmcgYWJvdXQgd2hldGhlciBhIHBob25lIHJhbmcuIGBvbmNhbGxfcGFnZXNfdG90YWx7b3V0Y29tZX1gXG4gKiByZWNvcmRzIHdoYXQgd2Uga25vdywgd2hpY2ggaXMgdGhpcyBhbmQgbm8gbW9yZTsgdGhlIG9ubHkgaG9uZXN0IGV2aWRlbmNlIG9mXG4gKiBjb3ZlcmFnZSBpcyBhIGh1bWFuIGFja25vd2xlZGdpbmcuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBzZW5kUGFnZXJEdXR5RXZlbnQoXG4gIGV2ZW50OiBQYWdlckR1dHlFdmVudCxcbiAgY2ZnOiBQYWdlckR1dHlDb25maWcgPSBwYWdlckR1dHlDb25maWcoKSxcbik6IFByb21pc2U8UGFnZXJEdXR5UmVzdWx0PiB7XG4gIGNvbnN0IGxhYmVscyA9IHsgYWN0aW9uOiBldmVudC5hY3Rpb24sIHRyaWdnZXI6IGV2ZW50LnRyaWdnZXIgPz8gJ2FsZXJ0bWFuYWdlcicgfTtcblxuICAvLyBDb25maWd1cmVkIE9GRiBpcyBhIFNLSVAsIGRpc3RpbmN0IGZyb20gYSBmYWlsdXJlLiBUaGUgQWxlcnRtYW5hZ2VyIGxlZ1xuICAvLyByZWxpZXMgb24gdGhpczogaXRzIHJvdXRlIGlzIGFsd2F5cyBwcmVzZW50IChhbGVydG1hbmFnZXIueW1sIGlzIGFzc2VydGVkXG4gIC8vIGJ5dGUtaWRlbnRpY2FsIGFjcm9zcyB0YXJnZXRzLCBzbyBpdCBjYW5ub3QgYmUgdG9nZ2xlZCBwZXIgZGVwbG95bWVudCksIGFuZFxuICAvLyB0aGlzIGVuZHBvaW50IGFjY2VwdGluZy1hbmQtZHJvcHBpbmcgaXMgd2hhdCBtYWtlcyB0aGUga25vYiB3b3JrIHdpdGhvdXQgYVxuICAvLyBzZWNvbmQgY29uZmlnIGZpbGUgYW5kIHdpdGhvdXQgYSBzdHJlYW0gb2Ygbm90aWZpY2F0aW9uIGZhaWx1cmVzLlxuICBpZiAoIWNmZy5lbmFibGVkKSB7XG4gICAgZW1pdENvdW50ZXIoJ29uY2FsbF9wYWdlc190b3RhbCcsIHsgLi4ubGFiZWxzLCBvdXRjb21lOiAnZGlzYWJsZWQnIH0pO1xuICAgIHJldHVybiB7IG9rOiB0cnVlLCBza2lwcGVkOiB0cnVlIH07XG4gIH1cbiAgaWYgKCFjZmcuZW5kcG9pbnQpIHtcbiAgICAvLyBgT05DQUxMX1BST1ZJREVSPWN1c3RvbWAgd2l0aCBubyBgT05DQUxMX0VWRU5UU19VUkxgLiBDb3VudGVkIHVuZGVyIHRoZVxuICAgIC8vIHNhbWUgb3V0Y29tZSBhcyBhIG1pc3Npbmcga2V5IGJlY2F1c2UgaXQgaXMgdGhlIHNhbWUgY2xhc3Mgb2YgZmFpbHVyZSDigJRcbiAgICAvLyBzb21lYm9keSBhc2tlZCBmb3IgcGFnaW5nIGFuZCB0aGUgY2xpZW50IGhhcyBub3doZXJlIHRvIHNlbmQgaXQg4oCUIGFuZFxuICAgIC8vIGJlY2F1c2UgcXVpZXRseSByZWFjaGluZyBmb3IgUGFnZXJEdXR5J3MgZW5kcG9pbnQgaW5zdGVhZCB3b3VsZCBzZW5kIHRoaXNcbiAgICAvLyBkZXBsb3ltZW50J3Mgcm91dGluZyBrZXkgdG8gYSBwcm92aWRlciBub2JvZHkgY2hvc2UuXG4gICAgZW1pdENvdW50ZXIoJ29uY2FsbF9wYWdlc190b3RhbCcsIHsgLi4ubGFiZWxzLCBvdXRjb21lOiAndW5jb25maWd1cmVkJyB9KTtcbiAgICBsb2dnZXIuZXJyb3IoJ09OQ0FMTF9QUk9WSURFUj1jdXN0b20gYnV0IE9OQ0FMTF9FVkVOVFNfVVJMIGlzIGVtcHR5IOKAlCBub2JvZHkgd2lsbCBiZSBwYWdlZCcsIHtcbiAgICAgIGRlZHVwS2V5OiBldmVudC5kZWR1cEtleSxcbiAgICB9KTtcbiAgICByZXR1cm4geyBvazogZmFsc2UsIGVycm9yOiAnbm8gZXZlbnRzIGVuZHBvaW50JyB9O1xuICB9XG4gIGlmICghY2ZnLnJvdXRpbmdLZXkpIHtcbiAgICAvLyBFbmFibGVkIHdpdGggbm8ga2V5IGlzIHRoZSBoYWxmLWNvbmZpZ3VyZWQgc3RhdGUgdGhlIGtub2IgZXhpc3RzIHRvXG4gICAgLy8gcHJldmVudCwgYW5kIGl0IGlzIHRoZSBvbmUgZmFpbHVyZSB3b3J0aCBzaG91dGluZyBhYm91dDogc29tZWJvZHkgYXNrZWRcbiAgICAvLyBmb3IgcGFnaW5nIGFuZCBpcyBub3QgZ2V0dGluZyBpdC5cbiAgICBlbWl0Q291bnRlcignb25jYWxsX3BhZ2VzX3RvdGFsJywgeyAuLi5sYWJlbHMsIG91dGNvbWU6ICd1bmNvbmZpZ3VyZWQnIH0pO1xuICAgIGxvZ2dlci5lcnJvcignT05DQUxMX0VOQUJMRUQgaXMgdHJ1ZSBidXQgUEFHRVJEVVRZX1JPVVRJTkdfS0VZIGlzIGVtcHR5IOKAlCBub2JvZHkgd2lsbCBiZSBwYWdlZCcsIHtcbiAgICAgIGRlZHVwS2V5OiBldmVudC5kZWR1cEtleSxcbiAgICB9KTtcbiAgICByZXR1cm4geyBvazogZmFsc2UsIGVycm9yOiAnbm8gcm91dGluZyBrZXknIH07XG4gIH1cblxuICAvLyBgcmVzb2x2ZWAgYW5kIGBhY2tub3dsZWRnZWAgbmVlZCBvbmx5IHRoZSBrZXkgYW5kIHRoZSBhY3Rpb247IGEgdHJpZ2dlclxuICAvLyBuZWVkcyBzdW1tYXJ5L3NldmVyaXR5L3NvdXJjZS4gQnVpbHQgY29uZGl0aW9uYWxseSBzbyBhIHJlc29sdmUgY2Fubm90IGJlXG4gIC8vIHJlamVjdGVkIGZvciBhIG1pc3NpbmcgZmllbGQgaXQgbmV2ZXIgcmVxdWlyZWQuXG4gIGNvbnN0IGJvZHk6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge1xuICAgIHJvdXRpbmdfa2V5OiBjZmcucm91dGluZ0tleSxcbiAgICBldmVudF9hY3Rpb246IGV2ZW50LmFjdGlvbixcbiAgICBkZWR1cF9rZXk6IGV2ZW50LmRlZHVwS2V5LFxuICB9O1xuICBpZiAoZXZlbnQuYWN0aW9uID09PSAndHJpZ2dlcicpIHtcbiAgICBib2R5LnBheWxvYWQgPSB7XG4gICAgICBzdW1tYXJ5OiBldmVudC5zdW1tYXJ5ID8/ICdQaXBlbGluZSBCdWlsZGVyIGFsZXJ0JyxcbiAgICAgIHNldmVyaXR5OiBldmVudC5zZXZlcml0eSA/PyAnY3JpdGljYWwnLFxuICAgICAgc291cmNlOiBldmVudC5zb3VyY2UgPz8gJ3BpcGVsaW5lLWJ1aWxkZXInLFxuICAgICAgLi4uKGV2ZW50LmNvbXBvbmVudCA/IHsgY29tcG9uZW50OiBldmVudC5jb21wb25lbnQgfSA6IHt9KSxcbiAgICAgIC4uLihldmVudC5ncm91cCA/IHsgZ3JvdXA6IGV2ZW50Lmdyb3VwIH0gOiB7fSksXG4gICAgICAuLi4oZXZlbnQuY2xhc3MgPyB7IGNsYXNzOiBldmVudC5jbGFzcyB9IDoge30pLFxuICAgICAgLi4uKGV2ZW50LmN1c3RvbURldGFpbHMgPyB7IGN1c3RvbV9kZXRhaWxzOiBldmVudC5jdXN0b21EZXRhaWxzIH0gOiB7fSksXG4gICAgfTtcbiAgfVxuXG4gIHRyeSB7XG4gICAgY29uc3QgcmVzcCA9IGF3YWl0IHNhZmVGZXRjaChjZmcuZW5kcG9pbnQsIHtcbiAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgaGVhZGVyczogeyAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nIH0sXG4gICAgICBib2R5OiBKU09OLnN0cmluZ2lmeShib2R5KSxcbiAgICAgIHRpbWVvdXRNczogY2ZnLnRpbWVvdXRNcyxcbiAgICB9KTtcbiAgICAvLyBgc2FmZUZldGNoYCByZWZ1c2VzIHJlZGlyZWN0cyByYXRoZXIgdGhhbiBmb2xsb3dpbmcgdGhlbSwgc28gYSAzeHggYXJyaXZlc1xuICAgIC8vIGFzIGByZWRpcmVjdGVkYCBhbmQgaXMgYSBGQUlMRUQgc2VuZCDigJQgbmV2ZXIgYSBwaXZvdCB0byBhbiB1bnZldHRlZCBob3N0XG4gICAgLy8gYW5kIG5ldmVyIHJlY29yZGVkIGdyZWVuLlxuICAgIGlmIChyZXNwLnJlZGlyZWN0ZWQpIHtcbiAgICAgIGVtaXRDb3VudGVyKCdvbmNhbGxfcGFnZXNfdG90YWwnLCB7IC4uLmxhYmVscywgb3V0Y29tZTogJ3JlZGlyZWN0ZWQnIH0pO1xuICAgICAgbG9nZ2VyLmVycm9yKCdQYWdlckR1dHkgZW5kcG9pbnQgcmVkaXJlY3RlZCDigJQgcmVmdXNlZCcsIHsgc3RhdHVzOiByZXNwLnN0YXR1cyB9KTtcbiAgICAgIHJldHVybiB7IG9rOiBmYWxzZSwgc3RhdHVzOiByZXNwLnN0YXR1cywgZXJyb3I6ICdlbmRwb2ludCByZWRpcmVjdGVkIChyZWZ1c2VkKScgfTtcbiAgICB9XG4gICAgaWYgKCFyZXNwLm9rKSB7XG4gICAgICBlbWl0Q291bnRlcignb25jYWxsX3BhZ2VzX3RvdGFsJywgeyAuLi5sYWJlbHMsIG91dGNvbWU6ICdyZWplY3RlZCcgfSk7XG4gICAgICBsb2dnZXIuZXJyb3IoJ1BhZ2VyRHV0eSByZWplY3RlZCBhbiBldmVudCcsIHsgc3RhdHVzOiByZXNwLnN0YXR1cywgZGVkdXBLZXk6IGV2ZW50LmRlZHVwS2V5IH0pO1xuICAgICAgcmV0dXJuIHsgb2s6IGZhbHNlLCBzdGF0dXM6IHJlc3Auc3RhdHVzLCBlcnJvcjogYHN0YXR1cyAke3Jlc3Auc3RhdHVzfWAgfTtcbiAgICB9XG4gICAgZW1pdENvdW50ZXIoJ29uY2FsbF9wYWdlc190b3RhbCcsIHsgLi4ubGFiZWxzLCBvdXRjb21lOiAnYWNjZXB0ZWQnIH0pO1xuICAgIHJldHVybiB7IG9rOiB0cnVlLCBzdGF0dXM6IHJlc3Auc3RhdHVzIH07XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGVtaXRDb3VudGVyKCdvbmNhbGxfcGFnZXNfdG90YWwnLCB7IC4uLmxhYmVscywgb3V0Y29tZTogJ2Vycm9yJyB9KTtcbiAgICBsb2dnZXIuZXJyb3IoJ0NvdWxkIG5vdCByZWFjaCBQYWdlckR1dHknLCB7IGVycm9yOiBlcnJvck1lc3NhZ2UoZXJyKSwgZGVkdXBLZXk6IGV2ZW50LmRlZHVwS2V5IH0pO1xuICAgIHJldHVybiB7IG9rOiBmYWxzZSwgZXJyb3I6IGVycm9yTWVzc2FnZShlcnIpIH07XG4gIH1cbn1cbiJdfQ==
|
|
@@ -163,4 +163,4 @@ function armShutdownFlush() {
|
|
|
163
163
|
shutdownArmed = true;
|
|
164
164
|
process.once('SIGTERM', () => { void flushQuotaIncrements(); });
|
|
165
165
|
}
|
|
166
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVvdGEtaW5jcmVtZW50LWJhdGNoZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2VydmljZXMvcXVvdGEtaW5jcmVtZW50LWJhdGNoZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQXVDdEMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDbEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRXpELE1BQU0sTUFBTSxHQUFHLFlBQVksQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO0FBRXZELHNGQUFzRjtBQUN0RixNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBRyxNQUFNLENBQUMsMEJBQTBCLEVBQUUsSUFBSSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztBQUUxRyxzRUFBc0U7QUFDdEUsTUFBTSxDQUFDLE1BQU0sMEJBQTBCLEdBQUcsTUFBTSxDQUFDLDRCQUE0QixFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBRW5HLDZGQUE2RjtBQUM3RixNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBRyxHQUFHLENBQUM7QUFFNUMsa0NBQWtDO0FBQ2xDLE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxDQUFDO0FBaUI1QixpRkFBaUY7QUFDakYsU0FBUyxnQkFBZ0IsQ0FBQyxDQUFvQztJQUM1RCxJQUFJLENBQUMsQ0FBQztRQUFFLE9BQU8sU0FBUyxDQUFDO0lBQ3pCLE1BQU0sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLEdBQUcsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQzdDLE9B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b0I7SUFDeEMsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzVFLENBQUM7QUFFRCxJQUFJLGFBQWEsR0FBRyxLQUFLLENBQUM7QUFFMUI7Ozs7Ozs7R0FPRztBQUNILFNBQVMsZ0JBQWdCO0lBQ3ZCLElBQUksYUFBYSxJQUFJLE9BQU8sQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQztRQUFFLE9BQU87SUFDcEUsYUFBYSxHQUFHLElBQUksQ0FBQztJQUNyQixPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxHQUFHLEVBQUUsR0FBRyxLQUFLLG9CQUFvQixFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNsRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbi8qKlxuICogUGVyLXBvZCBhZ2dyZWdhdGlvbiBvZiBNRVRFUklORyBpbmNyZW1lbnRzIChhcGlDYWxscyAvIGF1dG9tYXRpb25DYWxscykuXG4gKlxuICogTWV0ZXJpbmcgdXNlZCB0byBiZSBvbmUgUE9TVCB0byB0aGUgcXVvdGEgc2VydmljZSBwZXIgc3VjY2Vzc2Z1bCByZXF1ZXN0LFxuICogYW5kIGVhY2ggUE9TVCB3YXMgYSBjb25kaXRpb25hbCBgZmluZE9uZUFuZFVwZGF0ZWAgb24gdGhlIG9yZydzIGhvdCBkb2N1bWVudCxcbiAqIGEgdGVhbSBjb3VudGVyIHVwZGF0ZSwgYSBsZWRnZXIgaW5zZXJ0IGFuZCBhIHRocmVzaG9sZCBjaGVjay4gQXQgdGhlIHJlcXVlc3RcbiAqIHJhdGVzIHRoZSBtZXRlciBleGlzdHMgZm9yLCB0aGUgcXVvdGEgc2VydmljZSB3YXMgZG9pbmcgbW9yZSB3b3JrIHRoYW4gdGhlXG4gKiByZXF1ZXN0IGl0IHdhcyBjb3VudGluZy5cbiAqXG4gKiBJbmNyZW1lbnRzIGFyZSBub3cgc3VtbWVkIGluIG1lbW9yeSBwZXIgKG9yZywgcXVvdGEgdHlwZSkgYW5kLCBpbnNpZGUgdGhhdCxcbiAqIHBlciBhdHRyaWJ1dGlvbiBncm91cCAocHJpbmNpcGFsLCBrZXksIHJvdXRlIHBhdHRlcm4sIHBpcGVsaW5lKSwgdGhlbiBzZW50XG4gKiBldmVyeSBgUVVPVEFfSU5DUkVNRU5UX0ZMVVNIX01TYCAoZGVmYXVsdCAxMDAwKSBhcyBPTkUgbWV0ZXJlZCBpbmNyZW1lbnQgcGVyXG4gKiAob3JnLCB0eXBlKSBjYXJyeWluZyBpdHMgZ3JvdXBzLiBUaGUgcXVvdGEgc2VydmljZSBhcHBsaWVzIHRoZSBzdW0gYXRvbWljYWxseVxuICogYWdhaW5zdCB0aGUgKHBvb2xlZCkgY2FwIHdpdGggcGFydGlhbCBhZG1pc3Npb246IHRoZSBjb3VudGVyIG1vdmVzIGJ5IGFzIG11Y2hcbiAqIGFzIGZpdHMgYW5kIG5ldmVyIHBhc3QgdGhlIGxpbWl0LCBhbmQgdGhlIHJlc3QgaXMgcmVjb3JkZWQgYXMgYG92ZXJzaG9vdGAgaW5cbiAqIHRoZSBsZWRnZXIgKGFwaS9xdW90YSBgaW5jcmVtZW50TWV0ZXJlZGApLlxuICpcbiAqIEd1YXJhbnRlZXMsIGFuZCB0aGVpciBsaW1pdHM6XG4gKiAgLSB0aGUgY291bnRlciBtYXkgTEFHIHJlYWwgdXNhZ2UgYnkgdXAgdG8gb25lIGZsdXNoIGludGVydmFsIChwbHVzIHRoZSBIVFRQXG4gKiAgICBob3ApOyBlbmZvcmNlbWVudCBpcyB1bmFmZmVjdGVkIGJleW9uZCB0aGF0IGxhZywgYmVjYXVzZSB0aGUgY291bnRlclxuICogICAgc3RpbGwgbmV2ZXIgZXhjZWVkcyB0aGUgY2FwO1xuICogIC0gdGhlIGJ1ZmZlciBpcyBib3VuZGVkIChgUVVPVEFfSU5DUkVNRU5UX0JVRkZFUl9NQVhgIGF0dHJpYnV0aW9uIGdyb3VwcykuXG4gKiAgICBSZWFjaGluZyBpdCBmbHVzaGVzIGltbWVkaWF0ZWx5OyBvbmx5IHdoaWxlIGEgZmx1c2ggaXMgYWxyZWFkeSBpbiBmbGlnaHRcbiAqICAgIGlzIGEgTkVXIGdyb3VwIGRyb3BwZWQsIGNvdW50ZWQgb24gYHF1b3RhX2luY3JlbWVudF9kcm9wcGVkX3RvdGFsYDtcbiAqICAtIGEgZmx1c2ggdGhhdCBmYWlscyBpcyBjb3VudGVkIG9uIGBxdW90YV9pbmNyZW1lbnRfZmFpbHVyZXNfdG90YWxgICh0aGVcbiAqICAgIFF1b3RhSW5jcmVtZW50RmFpbHVyZXMgYWxlcnQpIGFuZCBOT1QgcmV0cmllZDogdGhlIFBPU1QgbWF5IGhhdmUgbGFuZGVkLFxuICogICAgYW5kIGEgcmV0cnkgd291bGQgZG91YmxlLWNvdW50O1xuICogIC0gZ3JhY2VmdWwgc2h1dGRvd24gZmx1c2hlczogYHJ1blNlcnZlcmAgYXdhaXRzIHtAbGluayBmbHVzaFF1b3RhSW5jcmVtZW50c31cbiAqICAgIGFmdGVyIHRoZSBIVFRQIHNlcnZlciBoYXMgZHJhaW5lZCwgYW5kIGEgU0lHVEVSTSBmbHVzaCBjb3ZlcnMgcHJvY2Vzc2VzXG4gKiAgICB3aXRoIHRoZWlyIG93biBzaHV0ZG93biBwYXRoLlxuICpcbiAqIFJlc2VydmF0aW9ucyAoYWlDYWxscywgcGlwZWxpbmVzLCBwbHVnaW5zIOKApikgbmV2ZXIgY29tZSB0aHJvdWdoIGhlcmUg4oCUIHRoZXlcbiAqIG5lZWQgdGhlIHN5bmNocm9ub3VzIGFuc3dlciBhbmQga2VlcCBgcmVzZXJ2ZVF1b3RhYC5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IFF1b3RhU2VydmljZSwgUXVvdGFVc2FnZUF0dHJpYnV0aW9uIH0gZnJvbSAnLi9xdW90YS5qcyc7XG5pbXBvcnQgdHlwZSB7IFF1b3RhVHlwZSB9IGZyb20gJy4uL3R5cGVzL2NvbW1vbi5qcyc7XG5pbXBvcnQgeyBydW5Db25jdXJyZW50IH0gZnJvbSAnLi4vdXRpbHMvY29uY3VycmVuY3kuanMnO1xuaW1wb3J0IHsgZW52SW50IH0gZnJvbSAnLi4vdXRpbHMvZW52LmpzJztcbmltcG9ydCB7IGNyZWF0ZUxvZ2dlciB9IGZyb20gJy4uL3V0aWxzL2xvZ2dlci5qcyc7XG5pbXBvcnQgeyBlbWl0Q291bnRlciB9IGZyb20gJy4uL3V0aWxzL21ldHJpYy1lbWl0dGVyLmpzJztcblxuY29uc3QgbG9nZ2VyID0gY3JlYXRlTG9nZ2VyKCdxdW90YS1pbmNyZW1lbnQtYmF0Y2hlcicpO1xuXG4vKiogRmx1c2ggaW50ZXJ2YWwgKG1zKS4gYDBgIGRpc2FibGVzIGJhdGNoaW5nOiBldmVyeSBpbmNyZW1lbnQgaXMgc2VudCBvbiBpdHMgb3duLiAqL1xuZXhwb3J0IGNvbnN0IFFVT1RBX0lOQ1JFTUVOVF9GTFVTSF9NUyA9IGVudkludCgnUVVPVEFfSU5DUkVNRU5UX0ZMVVNIX01TJywgMTAwMCwgeyBtaW46IDAsIG1heDogNjBfMDAwIH0pO1xuXG4vKiogTW9zdCBhdHRyaWJ1dGlvbiBncm91cHMgaGVsZCBiZXR3ZWVuIGZsdXNoZXMsIGFjcm9zcyBldmVyeSBvcmcuICovXG5leHBvcnQgY29uc3QgUVVPVEFfSU5DUkVNRU5UX0JVRkZFUl9NQVggPSBlbnZJbnQoJ1FVT1RBX0lOQ1JFTUVOVF9CVUZGRVJfTUFYJywgMTBfMDAwLCB7IG1pbjogMSB9KTtcblxuLyoqIE1vc3QgZ3JvdXBzIG9uZSBtZXRlcmVkIGluY3JlbWVudCBjYXJyaWVzICh0aGUgcXVvdGEgc2VydmljZSBlbmZvcmNlcyB0aGUgc2FtZSBib3VuZCkuICovXG5leHBvcnQgY29uc3QgTUFYX0dST1VQU19QRVJfSU5DUkVNRU5UID0gNTAwO1xuXG4vKiogQ29uY3VycmVudCBQT1NUcyBwZXIgZmx1c2guICovXG5jb25zdCBGTFVTSF9DT05DVVJSRU5DWSA9IDg7XG5cbi8qKiBPbmUgYXR0cmlidXRpb24gZ3JvdXAgb2YgYSBtZXRlcmVkIGluY3JlbWVudDogd2hvIHNwZW50IGBhbW91bnRgIHVuaXRzLiAqL1xuZXhwb3J0IGludGVyZmFjZSBNZXRlcmVkSW5jcmVtZW50R3JvdXAge1xuICBhbW91bnQ6IG51bWJlcjtcbiAgYXR0cmlidXRpb24/OiBPbWl0PFF1b3RhVXNhZ2VBdHRyaWJ1dGlvbiwgJ3JlcXVlc3RJZCc+O1xufVxuXG4vKiogU2VuZHMgb25lIChvcmcsIHR5cGUpJ3MgZ3JvdXBzLiBSZXNvbHZlcyB3aGVuIHRoZSBxdW90YSBzZXJ2aWNlIGFuc3dlcmVkIChvciBub3QpLiAqL1xuZXhwb3J0IHR5cGUgTWV0ZXJlZEluY3JlbWVudFNlbmRlciA9IChvcmdJZDogc3RyaW5nLCBxdW90YVR5cGU6IFF1b3RhVHlwZSwgZ3JvdXBzOiBNZXRlcmVkSW5jcmVtZW50R3JvdXBbXSkgPT4gUHJvbWlzZTx2b2lkPjtcblxuaW50ZXJmYWNlIFBlbmRpbmdTZXJpZXMge1xuICBvcmdJZDogc3RyaW5nO1xuICBxdW90YVR5cGU6IFF1b3RhVHlwZTtcbiAgZ3JvdXBzOiBNYXA8c3RyaW5nLCBNZXRlcmVkSW5jcmVtZW50R3JvdXA+O1xufVxuXG4vKiogVGhlIGF0dHJpYnV0aW9uIGEgZ3JvdXAgYWdncmVnYXRlcyBvbiDigJQgZXZlcnl0aGluZyBidXQgdGhlIHBlci1yZXF1ZXN0IGlkLiAqL1xuZnVuY3Rpb24gZ3JvdXBBdHRyaWJ1dGlvbihhOiBRdW90YVVzYWdlQXR0cmlidXRpb24gfCB1bmRlZmluZWQpOiBNZXRlcmVkSW5jcmVtZW50R3JvdXBbJ2F0dHJpYnV0aW9uJ10ge1xuICBpZiAoIWEpIHJldHVybiB1bmRlZmluZWQ7XG4gIGNvbnN0IHsgcmVxdWVzdElkOiBfcmVxdWVzdElkLCAuLi5yZXN0IH0gPSBhO1xuICByZXR1cm4gT2JqZWN0LmtleXMocmVzdCkubGVuZ3RoID4gMCA/IHJlc3QgOiB1bmRlZmluZWQ7XG59XG5cbmZ1bmN0aW9uIGdyb3VwS2V5KGE6IE1ldGVyZWRJbmNyZW1lbnRHcm91cFsnYXR0cmlidXRpb24nXSk6IHN0cmluZyB7XG4gIHJldHVybiBhID8gSlNPTi5zdHJpbmdpZnkoW2EucHJpbmNpcGFsVHlwZSwgYS5wcmluY2lwYWxJZCwgYS5rZXlJZCwgYS5yb3V0ZSwgYS5waXBlbGluZUlkXSkgOiAnJztcbn1cblxuLyoqIEEgcGVyLXBvZCBpbmNyZW1lbnQgYWdncmVnYXRvciBvdmVyIG9uZSBzZW5kZXIuIEV4cG9ydGVkIGZvciB0ZXN0cy4gKi9cbmV4cG9ydCBjbGFzcyBRdW90YUluY3JlbWVudEJhdGNoZXIge1xuICBwcml2YXRlIGJ1ZmZlciA9IG5ldyBNYXA8c3RyaW5nLCBQZW5kaW5nU2VyaWVzPigpO1xuICBwcml2YXRlIGdyb3VwQ291bnQgPSAwO1xuICBwcml2YXRlIGluRmxpZ2h0OiBQcm9taXNlPHZvaWQ+IHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgdGltZXI6IE5vZGVKUy5UaW1lb3V0IHwgbnVsbCA9IG51bGw7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBzZW5kOiBNZXRlcmVkSW5jcmVtZW50U2VuZGVyLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgb3B0czogeyBmbHVzaE1zOiBudW1iZXI7IG1heEdyb3VwczogbnVtYmVyIH0gPSB7IGZsdXNoTXM6IFFVT1RBX0lOQ1JFTUVOVF9GTFVTSF9NUywgbWF4R3JvdXBzOiBRVU9UQV9JTkNSRU1FTlRfQlVGRkVSX01BWCB9LFxuICApIHt9XG5cbiAgLyoqIFVuaXRzIHdhaXRpbmcgZm9yIHRoZSBuZXh0IGZsdXNoICh0ZXN0cywgbWV0cmljcykuICovXG4gIHBlbmRpbmdVbml0cygpOiBudW1iZXIge1xuICAgIGxldCBuID0gMDtcbiAgICBmb3IgKGNvbnN0IHMgb2YgdGhpcy5idWZmZXIudmFsdWVzKCkpIGZvciAoY29uc3QgZyBvZiBzLmdyb3Vwcy52YWx1ZXMoKSkgbiArPSBnLmFtb3VudDtcbiAgICByZXR1cm4gbjtcbiAgfVxuXG4gIC8qKiBDb3VudCBgYW1vdW50YCB1bml0cyBmb3IgKG9yZywgdHlwZSkuIE5ldmVyIHRocm93cywgbmV2ZXIgYXdhaXRzLiAqL1xuICBhZGQob3JnSWQ6IHN0cmluZywgcXVvdGFUeXBlOiBRdW90YVR5cGUsIGF0dHJpYnV0aW9uPzogUXVvdGFVc2FnZUF0dHJpYnV0aW9uLCBhbW91bnQ6IG51bWJlciA9IDEpOiB2b2lkIHtcbiAgICBjb25zdCBhdHRyID0gZ3JvdXBBdHRyaWJ1dGlvbihhdHRyaWJ1dGlvbik7XG4gICAgaWYgKHRoaXMub3B0cy5mbHVzaE1zID09PSAwKSB7XG4gICAgICB0aGlzLmRpc3BhdGNoKG9yZ0lkLCBxdW90YVR5cGUsIFt7IGFtb3VudCwgLi4uKGF0dHIgJiYgeyBhdHRyaWJ1dGlvbjogYXR0ciB9KSB9XSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHNlcmllc0tleSA9IGAke29yZ0lkfVxcdTAwMDAke3F1b3RhVHlwZX1gO1xuICAgIGNvbnN0IGtleSA9IGdyb3VwS2V5KGF0dHIpO1xuICAgIGNvbnN0IGV4aXN0aW5nID0gdGhpcy5idWZmZXIuZ2V0KHNlcmllc0tleSk/Lmdyb3Vwcy5nZXQoa2V5KTtcbiAgICBpZiAoZXhpc3RpbmcpIHtcbiAgICAgIGV4aXN0aW5nLmFtb3VudCArPSBhbW91bnQ7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICh0aGlzLmdyb3VwQ291bnQgPj0gdGhpcy5vcHRzLm1heEdyb3Vwcykge1xuICAgICAgaWYgKHRoaXMuaW5GbGlnaHQpIHtcbiAgICAgICAgZW1pdENvdW50ZXIoJ3F1b3RhX2luY3JlbWVudF9kcm9wcGVkX3RvdGFsJywgeyBxdW90YVR5cGUgfSwgYW1vdW50KTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdm9pZCB0aGlzLmZsdXNoKCk7XG4gICAgfVxuICAgIGxldCBzZXJpZXMgPSB0aGlzLmJ1ZmZlci5nZXQoc2VyaWVzS2V5KTtcbiAgICBpZiAoIXNlcmllcykge1xuICAgICAgc2VyaWVzID0geyBvcmdJZCwgcXVvdGFUeXBlLCBncm91cHM6IG5ldyBNYXAoKSB9O1xuICAgICAgdGhpcy5idWZmZXIuc2V0KHNlcmllc0tleSwgc2VyaWVzKTtcbiAgICB9XG4gICAgc2VyaWVzLmdyb3Vwcy5zZXQoa2V5LCB7IGFtb3VudCwgLi4uKGF0dHIgJiYgeyBhdHRyaWJ1dGlvbjogYXR0ciB9KSB9KTtcbiAgICB0aGlzLmdyb3VwQ291bnQgKz0gMTtcbiAgICB0aGlzLmFybSgpO1xuICB9XG5cbiAgLyoqIFNlbmQgZXZlcnl0aGluZyBidWZmZXJlZCBub3cuIFJlc29sdmVzIG9uY2UgZXZlcnkgUE9TVCBoYXMgc2V0dGxlZC4gKi9cbiAgYXN5bmMgZmx1c2goKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKHRoaXMuYnVmZmVyLnNpemUgPT09IDApIHJldHVybiB0aGlzLmluRmxpZ2h0ID8/IHVuZGVmaW5lZDtcbiAgICBjb25zdCBiYXRjaCA9IFsuLi50aGlzLmJ1ZmZlci52YWx1ZXMoKV07XG4gICAgdGhpcy5idWZmZXIgPSBuZXcgTWFwKCk7XG4gICAgdGhpcy5ncm91cENvdW50ID0gMDtcbiAgICBjb25zdCBwcmV2aW91cyA9IHRoaXMuaW5GbGlnaHQ7XG4gICAgY29uc3QgcnVuID0gKGFzeW5jICgpID0+IHtcbiAgICAgIGF3YWl0IHJ1bkNvbmN1cnJlbnQoYmF0Y2gsIEZMVVNIX0NPTkNVUlJFTkNZLCBhc3luYyAoc2VyaWVzKSA9PiB7XG4gICAgICAgIGNvbnN0IGdyb3VwcyA9IFsuLi5zZXJpZXMuZ3JvdXBzLnZhbHVlcygpXTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBncm91cHMubGVuZ3RoOyBpICs9IE1BWF9HUk9VUFNfUEVSX0lOQ1JFTUVOVCkge1xuICAgICAgICAgIGF3YWl0IHRoaXMuc2VuZFNhZmVseShzZXJpZXMub3JnSWQsIHNlcmllcy5xdW90YVR5cGUsIGdyb3Vwcy5zbGljZShpLCBpICsgTUFYX0dST1VQU19QRVJfSU5DUkVNRU5UKSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgaWYgKHByZXZpb3VzKSBhd2FpdCBwcmV2aW91cztcbiAgICB9KSgpO1xuICAgIHRoaXMuaW5GbGlnaHQgPSBydW47XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHJ1bjtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgaWYgKHRoaXMuaW5GbGlnaHQgPT09IHJ1bikgdGhpcy5pbkZsaWdodCA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgLyoqIFN0b3AgdGhlIHRpbWVyICh0ZXN0czsgcHJvY2VzcyB0ZWFyZG93bikuIEJ1ZmZlcmVkIHVuaXRzIHN0YXkgdW50aWwge0BsaW5rIGZsdXNofS4gKi9cbiAgc3RvcCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy50aW1lcikgY2xlYXJJbnRlcnZhbCh0aGlzLnRpbWVyKTtcbiAgICB0aGlzLnRpbWVyID0gbnVsbDtcbiAgfVxuXG4gIHByaXZhdGUgYXJtKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnRpbWVyKSByZXR1cm47XG4gICAgdGhpcy50aW1lciA9IHNldEludGVydmFsKCgpID0+IHsgdm9pZCB0aGlzLmZsdXNoKCk7IH0sIHRoaXMub3B0cy5mbHVzaE1zKTtcbiAgICB0aGlzLnRpbWVyLnVucmVmPy4oKTtcbiAgICBhcm1TaHV0ZG93bkZsdXNoKCk7XG4gIH1cblxuICBwcml2YXRlIGRpc3BhdGNoKG9yZ0lkOiBzdHJpbmcsIHF1b3RhVHlwZTogUXVvdGFUeXBlLCBncm91cHM6IE1ldGVyZWRJbmNyZW1lbnRHcm91cFtdKTogdm9pZCB7XG4gICAgdm9pZCB0aGlzLnNlbmRTYWZlbHkob3JnSWQsIHF1b3RhVHlwZSwgZ3JvdXBzKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgc2VuZFNhZmVseShvcmdJZDogc3RyaW5nLCBxdW90YVR5cGU6IFF1b3RhVHlwZSwgZ3JvdXBzOiBNZXRlcmVkSW5jcmVtZW50R3JvdXBbXSk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLnNlbmQob3JnSWQsIHF1b3RhVHlwZSwgZ3JvdXBzKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGxvZ2dlci53YXJuKCdNZXRlcmVkIHF1b3RhIGluY3JlbWVudCBmYWlsZWQnLCB7IG9yZ0lkLCBxdW90YVR5cGUsIGVycm9yOiBTdHJpbmcoZXJyKSB9KTtcbiAgICAgIGVtaXRDb3VudGVyKCdxdW90YV9pbmNyZW1lbnRfZmFpbHVyZXNfdG90YWwnLCB7IHJlYXNvbjogJ2V4Y2VwdGlvbicsIHF1b3RhVHlwZSB9KTtcbiAgICB9XG4gIH1cbn1cblxuLyoqIE9uZSBiYXRjaGVyIHBlciBxdW90YSBjbGllbnQsIHNvIGEgdGVzdCdzIGZha2UgY2xpZW50IG5ldmVyIHNoYXJlcyBhIGJ1ZmZlci4gKi9cbmNvbnN0IGJhdGNoZXJzID0gbmV3IFdlYWtNYXA8UXVvdGFTZXJ2aWNlLCBRdW90YUluY3JlbWVudEJhdGNoZXI+KCk7XG5cbi8qKiBUaGUgbGl2ZSBiYXRjaGVycywgZm9yIHRoZSBzaHV0ZG93biBmbHVzaCAoYSBXZWFrTWFwIGNhbm5vdCBiZSBpdGVyYXRlZCkuICovXG5jb25zdCBsaXZlID0gbmV3IFNldDxRdW90YUluY3JlbWVudEJhdGNoZXI+KCk7XG5cbi8qKiBUaGUgYmF0Y2hlciBmZWVkaW5nIGBxdW90YVNlcnZpY2UuaW5jcmVtZW50TWV0ZXJlZGAuICovXG5leHBvcnQgZnVuY3Rpb24gYmF0Y2hlckZvcihxdW90YVNlcnZpY2U6IFF1b3RhU2VydmljZSwgc2VuZGVyOiBNZXRlcmVkSW5jcmVtZW50U2VuZGVyKTogUXVvdGFJbmNyZW1lbnRCYXRjaGVyIHtcbiAgbGV0IGIgPSBiYXRjaGVycy5nZXQocXVvdGFTZXJ2aWNlKTtcbiAgaWYgKCFiKSB7XG4gICAgYiA9IG5ldyBRdW90YUluY3JlbWVudEJhdGNoZXIoc2VuZGVyKTtcbiAgICBiYXRjaGVycy5zZXQocXVvdGFTZXJ2aWNlLCBiKTtcbiAgICBsaXZlLmFkZChiKTtcbiAgfVxuICByZXR1cm4gYjtcbn1cblxuLyoqXG4gKiBGbHVzaCBldmVyeSBwb2QtbG9jYWwgYmF0Y2hlci4gQ2FsbGVkIGJ5IGBydW5TZXJ2ZXJgIG9uY2UgdGhlIEhUVFAgc2VydmVyIGhhc1xuICogc3RvcHBlZCBhY2NlcHRpbmcgYW5kIGluLWZsaWdodCByZXF1ZXN0cyBoYXZlIGZpbmlzaGVkICh0aGVpciBgZmluaXNoYFxuICogbWV0ZXJzIGFyZSB0aGVuIGFsbCBidWZmZXJlZCkuIE5ldmVyIHJlamVjdHMuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBmbHVzaFF1b3RhSW5jcmVtZW50cygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgYXdhaXQgUHJvbWlzZS5hbGwoWy4uLmxpdmVdLm1hcCgoYikgPT4gYi5mbHVzaCgpLmNhdGNoKCgpID0+IHVuZGVmaW5lZCkpKTtcbn1cblxubGV0IHNodXRkb3duQXJtZWQgPSBmYWxzZTtcblxuLyoqXG4gKiBTSUdURVJNIGZsdXNoIGZvciBwcm9jZXNzZXMgdGhhdCBkb24ndCBzaHV0IGRvd24gdGhyb3VnaCBgcnVuU2VydmVyYC5cbiAqXG4gKiBBcm1lZCBvbmx5IHdoZW4gdGhlIHByb2Nlc3MgQUxSRUFEWSBoYW5kbGVzIFNJR1RFUk0gKGV2ZXJ5IHNlcnZpY2UgcmVnaXN0ZXJzXG4gKiBpdHMgc2h1dGRvd24gYXQgc3RhcnR1cCwgYmVmb3JlIHRoZSBmaXJzdCByZXF1ZXN0IGlzIG1ldGVyZWQpOiBhZGRpbmcgdGhlXG4gKiBmaXJzdCBsaXN0ZW5lciB3b3VsZCBzd2l0Y2ggb2ZmIE5vZGUncyBkZWZhdWx0IGV4aXQtb24tU0lHVEVSTSBmb3IgYSBwcm9jZXNzXG4gKiB0aGF0IHJlbGllZCBvbiBpdCAoYSBDTEksIGEgdGVzdCB3b3JrZXIpLlxuICovXG5mdW5jdGlvbiBhcm1TaHV0ZG93bkZsdXNoKCk6IHZvaWQge1xuICBpZiAoc2h1dGRvd25Bcm1lZCB8fCBwcm9jZXNzLmxpc3RlbmVyQ291bnQoJ1NJR1RFUk0nKSA9PT0gMCkgcmV0dXJuO1xuICBzaHV0ZG93bkFybWVkID0gdHJ1ZTtcbiAgcHJvY2Vzcy5vbmNlKCdTSUdURVJNJywgKCkgPT4geyB2b2lkIGZsdXNoUXVvdGFJbmNyZW1lbnRzKCk7IH0pO1xufVxuIl19
|
|
166
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVvdGEtaW5jcmVtZW50LWJhdGNoZXIuanMiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZXJ2aWNlcy9xdW90YS1pbmNyZW1lbnQtYmF0Y2hlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBdUN0QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDeEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFekQsTUFBTSxNQUFNLEdBQUcsWUFBWSxDQUFDLHlCQUF5QixDQUFDLENBQUM7QUFFdkQsc0ZBQXNGO0FBQ3RGLE1BQU0sQ0FBQyxNQUFNLHdCQUF3QixHQUFHLE1BQU0sQ0FBQywwQkFBMEIsRUFBRSxJQUFJLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO0FBRTFHLHNFQUFzRTtBQUN0RSxNQUFNLENBQUMsTUFBTSwwQkFBMEIsR0FBRyxNQUFNLENBQUMsNEJBQTRCLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7QUFFbkcsNkZBQTZGO0FBQzdGLE1BQU0sQ0FBQyxNQUFNLHdCQUF3QixHQUFHLEdBQUcsQ0FBQztBQUU1QyxrQ0FBa0M7QUFDbEMsTUFBTSxpQkFBaUIsR0FBRyxDQUFDLENBQUM7QUFpQjVCLGlGQUFpRjtBQUNqRixTQUFTLGdCQUFnQixDQUFDLENBQW9DO0lBQzVELElBQUksQ0FBQyxDQUFDO1FBQUUsT0FBTyxTQUFTLENBQUM7SUFDekIsTUFBTSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsR0FBRyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDN0MsT0FBTyxNQUFNLENBQUMsSUFB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QU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDNUUsQ0FBQztBQUVELElBQUksYUFBYSxHQUFHLEtBQUssQ0FBQztBQUUxQjs7Ozs7OztHQU9HO0FBQ0gsU0FBUyxnQkFBZ0I7SUFDdkIsSUFBSSxhQUFhLElBQUksT0FBTyxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDO1FBQUUsT0FBTztJQUNwRSxhQUFhLEdBQUcsSUFBSSxDQUFDO0lBQ3JCLE9BQU8sQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLEdBQUcsRUFBRSxHQUFHLEtBQUssb0JBQW9CLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2xFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuLyoqXG4gKiBQZXItcG9kIGFnZ3JlZ2F0aW9uIG9mIE1FVEVSSU5HIGluY3JlbWVudHMgKGFwaUNhbGxzIC8gYXV0b21hdGlvbkNhbGxzKS5cbiAqXG4gKiBNZXRlcmluZyB1c2VkIHRvIGJlIG9uZSBQT1NUIHRvIHRoZSBxdW90YSBzZXJ2aWNlIHBlciBzdWNjZXNzZnVsIHJlcXVlc3QsXG4gKiBhbmQgZWFjaCBQT1NUIHdhcyBhIGNvbmRpdGlvbmFsIGBmaW5kT25lQW5kVXBkYXRlYCBvbiB0aGUgb3JnJ3MgaG90IGRvY3VtZW50LFxuICogYSB0ZWFtIGNvdW50ZXIgdXBkYXRlLCBhIGxlZGdlciBpbnNlcnQgYW5kIGEgdGhyZXNob2xkIGNoZWNrLiBBdCB0aGUgcmVxdWVzdFxuICogcmF0ZXMgdGhlIG1ldGVyIGV4aXN0cyBmb3IsIHRoZSBxdW90YSBzZXJ2aWNlIHdhcyBkb2luZyBtb3JlIHdvcmsgdGhhbiB0aGVcbiAqIHJlcXVlc3QgaXQgd2FzIGNvdW50aW5nLlxuICpcbiAqIEluY3JlbWVudHMgYXJlIG5vdyBzdW1tZWQgaW4gbWVtb3J5IHBlciAob3JnLCBxdW90YSB0eXBlKSBhbmQsIGluc2lkZSB0aGF0LFxuICogcGVyIGF0dHJpYnV0aW9uIGdyb3VwIChwcmluY2lwYWwsIGtleSwgcm91dGUgcGF0dGVybiwgcGlwZWxpbmUpLCB0aGVuIHNlbnRcbiAqIGV2ZXJ5IGBRVU9UQV9JTkNSRU1FTlRfRkxVU0hfTVNgIChkZWZhdWx0IDEwMDApIGFzIE9ORSBtZXRlcmVkIGluY3JlbWVudCBwZXJcbiAqIChvcmcsIHR5cGUpIGNhcnJ5aW5nIGl0cyBncm91cHMuIFRoZSBxdW90YSBzZXJ2aWNlIGFwcGxpZXMgdGhlIHN1bSBhdG9taWNhbGx5XG4gKiBhZ2FpbnN0IHRoZSAocG9vbGVkKSBjYXAgd2l0aCBwYXJ0aWFsIGFkbWlzc2lvbjogdGhlIGNvdW50ZXIgbW92ZXMgYnkgYXMgbXVjaFxuICogYXMgZml0cyBhbmQgbmV2ZXIgcGFzdCB0aGUgbGltaXQsIGFuZCB0aGUgcmVzdCBpcyByZWNvcmRlZCBhcyBgb3ZlcnNob290YCBpblxuICogdGhlIGxlZGdlciAoYXBpL3F1b3RhIGBpbmNyZW1lbnRNZXRlcmVkYCkuXG4gKlxuICogR3VhcmFudGVlcywgYW5kIHRoZWlyIGxpbWl0czpcbiAqICAtIHRoZSBjb3VudGVyIG1heSBMQUcgcmVhbCB1c2FnZSBieSB1cCB0byBvbmUgZmx1c2ggaW50ZXJ2YWwgKHBsdXMgdGhlIEhUVFBcbiAqICAgIGhvcCk7IGVuZm9yY2VtZW50IGlzIHVuYWZmZWN0ZWQgYmV5b25kIHRoYXQgbGFnLCBiZWNhdXNlIHRoZSBjb3VudGVyXG4gKiAgICBzdGlsbCBuZXZlciBleGNlZWRzIHRoZSBjYXA7XG4gKiAgLSB0aGUgYnVmZmVyIGlzIGJvdW5kZWQgKGBRVU9UQV9JTkNSRU1FTlRfQlVGRkVSX01BWGAgYXR0cmlidXRpb24gZ3JvdXBzKS5cbiAqICAgIFJlYWNoaW5nIGl0IGZsdXNoZXMgaW1tZWRpYXRlbHk7IG9ubHkgd2hpbGUgYSBmbHVzaCBpcyBhbHJlYWR5IGluIGZsaWdodFxuICogICAgaXMgYSBORVcgZ3JvdXAgZHJvcHBlZCwgY291bnRlZCBvbiBgcXVvdGFfaW5jcmVtZW50X2Ryb3BwZWRfdG90YWxgO1xuICogIC0gYSBmbHVzaCB0aGF0IGZhaWxzIGlzIGNvdW50ZWQgb24gYHF1b3RhX2luY3JlbWVudF9mYWlsdXJlc190b3RhbGAgKHRoZVxuICogICAgUXVvdGFJbmNyZW1lbnRGYWlsdXJlcyBhbGVydCkgYW5kIE5PVCByZXRyaWVkOiB0aGUgUE9TVCBtYXkgaGF2ZSBsYW5kZWQsXG4gKiAgICBhbmQgYSByZXRyeSB3b3VsZCBkb3VibGUtY291bnQ7XG4gKiAgLSBncmFjZWZ1bCBzaHV0ZG93biBmbHVzaGVzOiBgcnVuU2VydmVyYCBhd2FpdHMge0BsaW5rIGZsdXNoUXVvdGFJbmNyZW1lbnRzfVxuICogICAgYWZ0ZXIgdGhlIEhUVFAgc2VydmVyIGhhcyBkcmFpbmVkLCBhbmQgYSBTSUdURVJNIGZsdXNoIGNvdmVycyBwcm9jZXNzZXNcbiAqICAgIHdpdGggdGhlaXIgb3duIHNodXRkb3duIHBhdGguXG4gKlxuICogUmVzZXJ2YXRpb25zIChhaUNhbGxzLCBwaXBlbGluZXMsIHBsdWdpbnMg4oCmKSBuZXZlciBjb21lIHRocm91Z2ggaGVyZSDigJQgdGhleVxuICogbmVlZCB0aGUgc3luY2hyb25vdXMgYW5zd2VyIGFuZCBrZWVwIGByZXNlcnZlUXVvdGFgLlxuICovXG5cbmltcG9ydCB0eXBlIHsgUXVvdGFTZXJ2aWNlLCBRdW90YVVzYWdlQXR0cmlidXRpb24gfSBmcm9tICcuL3F1b3RhLmpzJztcbmltcG9ydCB0eXBlIHsgUXVvdGFUeXBlIH0gZnJvbSAnLi4vdHlwZXMvY29tbW9uLmpzJztcbmltcG9ydCB7IHJ1bkNvbmN1cnJlbnQgfSBmcm9tICcuLi91dGlscy9jb25jdXJyZW5jeS5qcyc7XG5pbXBvcnQgeyBlbnZJbnQgfSBmcm9tICcuLi91dGlscy9lbnYuanMnO1xuaW1wb3J0IHsgY3JlYXRlTG9nZ2VyIH0gZnJvbSAnLi4vdXRpbHMvbG9nZ2VyLmpzJztcbmltcG9ydCB7IGVtaXRDb3VudGVyIH0gZnJvbSAnLi4vdXRpbHMvbWV0cmljLWVtaXR0ZXIuanMnO1xuXG5jb25zdCBsb2dnZXIgPSBjcmVhdGVMb2dnZXIoJ3F1b3RhLWluY3JlbWVudC1iYXRjaGVyJyk7XG5cbi8qKiBGbHVzaCBpbnRlcnZhbCAobXMpLiBgMGAgZGlzYWJsZXMgYmF0Y2hpbmc6IGV2ZXJ5IGluY3JlbWVudCBpcyBzZW50IG9uIGl0cyBvd24uICovXG5leHBvcnQgY29uc3QgUVVPVEFfSU5DUkVNRU5UX0ZMVVNIX01TID0gZW52SW50KCdRVU9UQV9JTkNSRU1FTlRfRkxVU0hfTVMnLCAxMDAwLCB7IG1pbjogMCwgbWF4OiA2MF8wMDAgfSk7XG5cbi8qKiBNb3N0IGF0dHJpYnV0aW9uIGdyb3VwcyBoZWxkIGJldHdlZW4gZmx1c2hlcywgYWNyb3NzIGV2ZXJ5IG9yZy4gKi9cbmV4cG9ydCBjb25zdCBRVU9UQV9JTkNSRU1FTlRfQlVGRkVSX01BWCA9IGVudkludCgnUVVPVEFfSU5DUkVNRU5UX0JVRkZFUl9NQVgnLCAxMF8wMDAsIHsgbWluOiAxIH0pO1xuXG4vKiogTW9zdCBncm91cHMgb25lIG1ldGVyZWQgaW5jcmVtZW50IGNhcnJpZXMgKHRoZSBxdW90YSBzZXJ2aWNlIGVuZm9yY2VzIHRoZSBzYW1lIGJvdW5kKS4gKi9cbmV4cG9ydCBjb25zdCBNQVhfR1JPVVBTX1BFUl9JTkNSRU1FTlQgPSA1MDA7XG5cbi8qKiBDb25jdXJyZW50IFBPU1RzIHBlciBmbHVzaC4gKi9cbmNvbnN0IEZMVVNIX0NPTkNVUlJFTkNZID0gODtcblxuLyoqIE9uZSBhdHRyaWJ1dGlvbiBncm91cCBvZiBhIG1ldGVyZWQgaW5jcmVtZW50OiB3aG8gc3BlbnQgYGFtb3VudGAgdW5pdHMuICovXG5leHBvcnQgaW50ZXJmYWNlIE1ldGVyZWRJbmNyZW1lbnRHcm91cCB7XG4gIGFtb3VudDogbnVtYmVyO1xuICBhdHRyaWJ1dGlvbj86IE9taXQ8UXVvdGFVc2FnZUF0dHJpYnV0aW9uLCAncmVxdWVzdElkJz47XG59XG5cbi8qKiBTZW5kcyBvbmUgKG9yZywgdHlwZSkncyBncm91cHMuIFJlc29sdmVzIHdoZW4gdGhlIHF1b3RhIHNlcnZpY2UgYW5zd2VyZWQgKG9yIG5vdCkuICovXG5leHBvcnQgdHlwZSBNZXRlcmVkSW5jcmVtZW50U2VuZGVyID0gKG9yZ0lkOiBzdHJpbmcsIHF1b3RhVHlwZTogUXVvdGFUeXBlLCBncm91cHM6IE1ldGVyZWRJbmNyZW1lbnRHcm91cFtdKSA9PiBQcm9taXNlPHZvaWQ+O1xuXG5pbnRlcmZhY2UgUGVuZGluZ1NlcmllcyB7XG4gIG9yZ0lkOiBzdHJpbmc7XG4gIHF1b3RhVHlwZTogUXVvdGFUeXBlO1xuICBncm91cHM6IE1hcDxzdHJpbmcsIE1ldGVyZWRJbmNyZW1lbnRHcm91cD47XG59XG5cbi8qKiBUaGUgYXR0cmlidXRpb24gYSBncm91cCBhZ2dyZWdhdGVzIG9uIOKAlCBldmVyeXRoaW5nIGJ1dCB0aGUgcGVyLXJlcXVlc3QgaWQuICovXG5mdW5jdGlvbiBncm91cEF0dHJpYnV0aW9uKGE6IFF1b3RhVXNhZ2VBdHRyaWJ1dGlvbiB8IHVuZGVmaW5lZCk6IE1ldGVyZWRJbmNyZW1lbnRHcm91cFsnYXR0cmlidXRpb24nXSB7XG4gIGlmICghYSkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgY29uc3QgeyByZXF1ZXN0SWQ6IF9yZXF1ZXN0SWQsIC4uLnJlc3QgfSA9IGE7XG4gIHJldHVybiBPYmplY3Qua2V5cyhyZXN0KS5sZW5ndGggPiAwID8gcmVzdCA6IHVuZGVmaW5lZDtcbn1cblxuZnVuY3Rpb24gZ3JvdXBLZXkoYTogTWV0ZXJlZEluY3JlbWVudEdyb3VwWydhdHRyaWJ1dGlvbiddKTogc3RyaW5nIHtcbiAgcmV0dXJuIGEgPyBKU09OLnN0cmluZ2lmeShbYS5wcmluY2lwYWxUeXBlLCBhLnByaW5jaXBhbElkLCBhLmtleUlkLCBhLnJvdXRlLCBhLnBpcGVsaW5lSWRdKSA6ICcnO1xufVxuXG4vKiogQSBwZXItcG9kIGluY3JlbWVudCBhZ2dyZWdhdG9yIG92ZXIgb25lIHNlbmRlci4gRXhwb3J0ZWQgZm9yIHRlc3RzLiAqL1xuZXhwb3J0IGNsYXNzIFF1b3RhSW5jcmVtZW50QmF0Y2hlciB7XG4gIHByaXZhdGUgYnVmZmVyID0gbmV3IE1hcDxzdHJpbmcsIFBlbmRpbmdTZXJpZXM+KCk7XG4gIHByaXZhdGUgZ3JvdXBDb3VudCA9IDA7XG4gIHByaXZhdGUgaW5GbGlnaHQ6IFByb21pc2U8dm9pZD4gfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSB0aW1lcjogTm9kZUpTLlRpbWVvdXQgfCBudWxsID0gbnVsbDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IHNlbmQ6IE1ldGVyZWRJbmNyZW1lbnRTZW5kZXIsXG4gICAgcHJpdmF0ZSByZWFkb25seSBvcHRzOiB7IGZsdXNoTXM6IG51bWJlcjsgbWF4R3JvdXBzOiBudW1iZXIgfSA9IHsgZmx1c2hNczogUVVPVEFfSU5DUkVNRU5UX0ZMVVNIX01TLCBtYXhHcm91cHM6IFFVT1RBX0lOQ1JFTUVOVF9CVUZGRVJfTUFYIH0sXG4gICkge31cblxuICAvKiogVW5pdHMgd2FpdGluZyBmb3IgdGhlIG5leHQgZmx1c2ggKHRlc3RzLCBtZXRyaWNzKS4gKi9cbiAgcGVuZGluZ1VuaXRzKCk6IG51bWJlciB7XG4gICAgbGV0IG4gPSAwO1xuICAgIGZvciAoY29uc3QgcyBvZiB0aGlzLmJ1ZmZlci52YWx1ZXMoKSkgZm9yIChjb25zdCBnIG9mIHMuZ3JvdXBzLnZhbHVlcygpKSBuICs9IGcuYW1vdW50O1xuICAgIHJldHVybiBuO1xuICB9XG5cbiAgLyoqIENvdW50IGBhbW91bnRgIHVuaXRzIGZvciAob3JnLCB0eXBlKS4gTmV2ZXIgdGhyb3dzLCBuZXZlciBhd2FpdHMuICovXG4gIGFkZChvcmdJZDogc3RyaW5nLCBxdW90YVR5cGU6IFF1b3RhVHlwZSwgYXR0cmlidXRpb24/OiBRdW90YVVzYWdlQXR0cmlidXRpb24sIGFtb3VudDogbnVtYmVyID0gMSk6IHZvaWQge1xuICAgIGNvbnN0IGF0dHIgPSBncm91cEF0dHJpYnV0aW9uKGF0dHJpYnV0aW9uKTtcbiAgICBpZiAodGhpcy5vcHRzLmZsdXNoTXMgPT09IDApIHtcbiAgICAgIHRoaXMuZGlzcGF0Y2gob3JnSWQsIHF1b3RhVHlwZSwgW3sgYW1vdW50LCAuLi4oYXR0ciAmJiB7IGF0dHJpYnV0aW9uOiBhdHRyIH0pIH1dKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3Qgc2VyaWVzS2V5ID0gYCR7b3JnSWR9XFx1MDAwMCR7cXVvdGFUeXBlfWA7XG4gICAgY29uc3Qga2V5ID0gZ3JvdXBLZXkoYXR0cik7XG4gICAgY29uc3QgZXhpc3RpbmcgPSB0aGlzLmJ1ZmZlci5nZXQoc2VyaWVzS2V5KT8uZ3JvdXBzLmdldChrZXkpO1xuICAgIGlmIChleGlzdGluZykge1xuICAgICAgZXhpc3RpbmcuYW1vdW50ICs9IGFtb3VudDtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMuZ3JvdXBDb3VudCA+PSB0aGlzLm9wdHMubWF4R3JvdXBzKSB7XG4gICAgICBpZiAodGhpcy5pbkZsaWdodCkge1xuICAgICAgICBlbWl0Q291bnRlcigncXVvdGFfaW5jcmVtZW50X2Ryb3BwZWRfdG90YWwnLCB7IHF1b3RhVHlwZSB9LCBhbW91bnQpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB2b2lkIHRoaXMuZmx1c2goKTtcbiAgICB9XG4gICAgbGV0IHNlcmllcyA9IHRoaXMuYnVmZmVyLmdldChzZXJpZXNLZXkpO1xuICAgIGlmICghc2VyaWVzKSB7XG4gICAgICBzZXJpZXMgPSB7IG9yZ0lkLCBxdW90YVR5cGUsIGdyb3VwczogbmV3IE1hcCgpIH07XG4gICAgICB0aGlzLmJ1ZmZlci5zZXQoc2VyaWVzS2V5LCBzZXJpZXMpO1xuICAgIH1cbiAgICBzZXJpZXMuZ3JvdXBzLnNldChrZXksIHsgYW1vdW50LCAuLi4oYXR0ciAmJiB7IGF0dHJpYnV0aW9uOiBhdHRyIH0pIH0pO1xuICAgIHRoaXMuZ3JvdXBDb3VudCArPSAxO1xuICAgIHRoaXMuYXJtKCk7XG4gIH1cblxuICAvKiogU2VuZCBldmVyeXRoaW5nIGJ1ZmZlcmVkIG5vdy4gUmVzb2x2ZXMgb25jZSBldmVyeSBQT1NUIGhhcyBzZXR0bGVkLiAqL1xuICBhc3luYyBmbHVzaCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAodGhpcy5idWZmZXIuc2l6ZSA9PT0gMCkgcmV0dXJuIHRoaXMuaW5GbGlnaHQgPz8gdW5kZWZpbmVkO1xuICAgIGNvbnN0IGJhdGNoID0gWy4uLnRoaXMuYnVmZmVyLnZhbHVlcygpXTtcbiAgICB0aGlzLmJ1ZmZlciA9IG5ldyBNYXAoKTtcbiAgICB0aGlzLmdyb3VwQ291bnQgPSAwO1xuICAgIGNvbnN0IHByZXZpb3VzID0gdGhpcy5pbkZsaWdodDtcbiAgICBjb25zdCBydW4gPSAoYXN5bmMgKCkgPT4ge1xuICAgICAgYXdhaXQgcnVuQ29uY3VycmVudChiYXRjaCwgRkxVU0hfQ09OQ1VSUkVOQ1ksIGFzeW5jIChzZXJpZXMpID0+IHtcbiAgICAgICAgY29uc3QgZ3JvdXBzID0gWy4uLnNlcmllcy5ncm91cHMudmFsdWVzKCldO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGdyb3Vwcy5sZW5ndGg7IGkgKz0gTUFYX0dST1VQU19QRVJfSU5DUkVNRU5UKSB7XG4gICAgICAgICAgYXdhaXQgdGhpcy5zZW5kU2FmZWx5KHNlcmllcy5vcmdJZCwgc2VyaWVzLnF1b3RhVHlwZSwgZ3JvdXBzLnNsaWNlKGksIGkgKyBNQVhfR1JPVVBTX1BFUl9JTkNSRU1FTlQpKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBpZiAocHJldmlvdXMpIGF3YWl0IHByZXZpb3VzO1xuICAgIH0pKCk7XG4gICAgdGhpcy5pbkZsaWdodCA9IHJ1bjtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgcnVuO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBpZiAodGhpcy5pbkZsaWdodCA9PT0gcnVuKSB0aGlzLmluRmxpZ2h0ID0gbnVsbDtcbiAgICB9XG4gIH1cblxuICAvKiogU3RvcCB0aGUgdGltZXIgKHRlc3RzOyBwcm9jZXNzIHRlYXJkb3duKS4gQnVmZmVyZWQgdW5pdHMgc3RheSB1bnRpbCB7QGxpbmsgZmx1c2h9LiAqL1xuICBzdG9wKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnRpbWVyKSBjbGVhckludGVydmFsKHRoaXMudGltZXIpO1xuICAgIHRoaXMudGltZXIgPSBudWxsO1xuICB9XG5cbiAgcHJpdmF0ZSBhcm0oKTogdm9pZCB7XG4gICAgaWYgKHRoaXMudGltZXIpIHJldHVybjtcbiAgICB0aGlzLnRpbWVyID0gc2V0SW50ZXJ2YWwoKCkgPT4geyB2b2lkIHRoaXMuZmx1c2goKTsgfSwgdGhpcy5vcHRzLmZsdXNoTXMpO1xuICAgIHRoaXMudGltZXIudW5yZWY/LigpO1xuICAgIGFybVNodXRkb3duRmx1c2goKTtcbiAgfVxuXG4gIHByaXZhdGUgZGlzcGF0Y2gob3JnSWQ6IHN0cmluZywgcXVvdGFUeXBlOiBRdW90YVR5cGUsIGdyb3VwczogTWV0ZXJlZEluY3JlbWVudEdyb3VwW10pOiB2b2lkIHtcbiAgICB2b2lkIHRoaXMuc2VuZFNhZmVseShvcmdJZCwgcXVvdGFUeXBlLCBncm91cHMpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBzZW5kU2FmZWx5KG9yZ0lkOiBzdHJpbmcsIHF1b3RhVHlwZTogUXVvdGFUeXBlLCBncm91cHM6IE1ldGVyZWRJbmNyZW1lbnRHcm91cFtdKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHRoaXMuc2VuZChvcmdJZCwgcXVvdGFUeXBlLCBncm91cHMpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgbG9nZ2VyLndhcm4oJ01ldGVyZWQgcXVvdGEgaW5jcmVtZW50IGZhaWxlZCcsIHsgb3JnSWQsIHF1b3RhVHlwZSwgZXJyb3I6IFN0cmluZyhlcnIpIH0pO1xuICAgICAgZW1pdENvdW50ZXIoJ3F1b3RhX2luY3JlbWVudF9mYWlsdXJlc190b3RhbCcsIHsgcmVhc29uOiAnZXhjZXB0aW9uJywgcXVvdGFUeXBlIH0pO1xuICAgIH1cbiAgfVxufVxuXG4vKiogT25lIGJhdGNoZXIgcGVyIHF1b3RhIGNsaWVudCwgc28gYSB0ZXN0J3MgZmFrZSBjbGllbnQgbmV2ZXIgc2hhcmVzIGEgYnVmZmVyLiAqL1xuY29uc3QgYmF0Y2hlcnMgPSBuZXcgV2Vha01hcDxRdW90YVNlcnZpY2UsIFF1b3RhSW5jcmVtZW50QmF0Y2hlcj4oKTtcblxuLyoqIFRoZSBsaXZlIGJhdGNoZXJzLCBmb3IgdGhlIHNodXRkb3duIGZsdXNoIChhIFdlYWtNYXAgY2Fubm90IGJlIGl0ZXJhdGVkKS4gKi9cbmNvbnN0IGxpdmUgPSBuZXcgU2V0PFF1b3RhSW5jcmVtZW50QmF0Y2hlcj4oKTtcblxuLyoqIFRoZSBiYXRjaGVyIGZlZWRpbmcgYHF1b3RhU2VydmljZS5pbmNyZW1lbnRNZXRlcmVkYC4gKi9cbmV4cG9ydCBmdW5jdGlvbiBiYXRjaGVyRm9yKHF1b3RhU2VydmljZTogUXVvdGFTZXJ2aWNlLCBzZW5kZXI6IE1ldGVyZWRJbmNyZW1lbnRTZW5kZXIpOiBRdW90YUluY3JlbWVudEJhdGNoZXIge1xuICBsZXQgYiA9IGJhdGNoZXJzLmdldChxdW90YVNlcnZpY2UpO1xuICBpZiAoIWIpIHtcbiAgICBiID0gbmV3IFF1b3RhSW5jcmVtZW50QmF0Y2hlcihzZW5kZXIpO1xuICAgIGJhdGNoZXJzLnNldChxdW90YVNlcnZpY2UsIGIpO1xuICAgIGxpdmUuYWRkKGIpO1xuICB9XG4gIHJldHVybiBiO1xufVxuXG4vKipcbiAqIEZsdXNoIGV2ZXJ5IHBvZC1sb2NhbCBiYXRjaGVyLiBDYWxsZWQgYnkgYHJ1blNlcnZlcmAgb25jZSB0aGUgSFRUUCBzZXJ2ZXIgaGFzXG4gKiBzdG9wcGVkIGFjY2VwdGluZyBhbmQgaW4tZmxpZ2h0IHJlcXVlc3RzIGhhdmUgZmluaXNoZWQgKHRoZWlyIGBmaW5pc2hgXG4gKiBtZXRlcnMgYXJlIHRoZW4gYWxsIGJ1ZmZlcmVkKS4gTmV2ZXIgcmVqZWN0cy5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGZsdXNoUXVvdGFJbmNyZW1lbnRzKCk6IFByb21pc2U8dm9pZD4ge1xuICBhd2FpdCBQcm9taXNlLmFsbChbLi4ubGl2ZV0ubWFwKChiKSA9PiBiLmZsdXNoKCkuY2F0Y2goKCkgPT4gdW5kZWZpbmVkKSkpO1xufVxuXG5sZXQgc2h1dGRvd25Bcm1lZCA9IGZhbHNlO1xuXG4vKipcbiAqIFNJR1RFUk0gZmx1c2ggZm9yIHByb2Nlc3NlcyB0aGF0IGRvbid0IHNodXQgZG93biB0aHJvdWdoIGBydW5TZXJ2ZXJgLlxuICpcbiAqIEFybWVkIG9ubHkgd2hlbiB0aGUgcHJvY2VzcyBBTFJFQURZIGhhbmRsZXMgU0lHVEVSTSAoZXZlcnkgc2VydmljZSByZWdpc3RlcnNcbiAqIGl0cyBzaHV0ZG93biBhdCBzdGFydHVwLCBiZWZvcmUgdGhlIGZpcnN0IHJlcXVlc3QgaXMgbWV0ZXJlZCk6IGFkZGluZyB0aGVcbiAqIGZpcnN0IGxpc3RlbmVyIHdvdWxkIHN3aXRjaCBvZmYgTm9kZSdzIGRlZmF1bHQgZXhpdC1vbi1TSUdURVJNIGZvciBhIHByb2Nlc3NcbiAqIHRoYXQgcmVsaWVkIG9uIGl0IChhIENMSSwgYSB0ZXN0IHdvcmtlcikuXG4gKi9cbmZ1bmN0aW9uIGFybVNodXRkb3duRmx1c2goKTogdm9pZCB7XG4gIGlmIChzaHV0ZG93bkFybWVkIHx8IHByb2Nlc3MubGlzdGVuZXJDb3VudCgnU0lHVEVSTScpID09PSAwKSByZXR1cm47XG4gIHNodXRkb3duQXJtZWQgPSB0cnVlO1xuICBwcm9jZXNzLm9uY2UoJ1NJR1RFUk0nLCAoKSA9PiB7IHZvaWQgZmx1c2hRdW90YUluY3JlbWVudHMoKTsgfSk7XG59XG4iXX0=
|