@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
package/lib/utils/jwk.js
CHANGED
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
* chains therefore share these primitives, and a bearer token is routed by which
|
|
18
18
|
* key set owns its `kid` rather than by its algorithm — see `middleware/auth.ts`.
|
|
19
19
|
*/
|
|
20
|
-
import crypto
|
|
20
|
+
import crypto from 'crypto';
|
|
21
21
|
/** The ONLY algorithm a user token may be signed with. */
|
|
22
22
|
export const USER_TOKEN_ALGORITHM = 'ES256';
|
|
23
23
|
/** The curve ES256 pins (`ECDSA_NIST_P256` / `prime256v1` / `ECC_NIST_P256` in KMS terms). */
|
|
@@ -148,4 +148,4 @@ export function encodeJwsSigningInput(kid, body) {
|
|
|
148
148
|
export function compactJws(signingInput, signature) {
|
|
149
149
|
return `${signingInput}.${signature.toString('base64url')}`;
|
|
150
150
|
}
|
|
151
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiandrLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL2p3ay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBRXRDOzs7Ozs7Ozs7Ozs7Ozs7O0dBZ0JHO0FBRUgsT0FBTyxNQUFNLEVBQUUsRUFBa0IsTUFBTSxRQUFRLENBQUM7QUFFaEQsMERBQTBEO0FBQzFELE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHLE9BQU8sQ0FBQztBQUU1Qyw4RkFBOEY7QUFDOUYsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsT0FBTyxDQUFDO0FBRXhDLHFGQUFxRjtBQUNyRixNQUFNLENBQUMsTUFBTSxTQUFTLEdBQUcsd0JBQXdCLENBQUM7QUE0QmxEOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsZUFBZSxDQUFDLEtBQWE7SUFDM0MsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMvQixJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUFFLE9BQU8sSUFBSSxDQUFDO0lBQ2pELElBQUksQ0FBQztRQUNILE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsV0FBVyxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFZLENBQUM7UUFDM0YsSUFBSSxDQUFDLE1BQU0sSUFBSSxPQUFPLE1BQU0sS0FBSyxRQUFRLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUM7WUFBRSxPQUFPLElBQUksQ0FBQztRQUNoRixPQUFPLE1BQW1CLENBQUM7SUFDN0IsQ0FBQztJQUFDLE1BQU0sQ0FBQztRQUNQLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztBQUNILENBQUM7QUFFRDs7Ozs7Ozs7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bi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbi8qKlxuICogSldLIHByaW1pdGl2ZXMgZm9yIHRoZSBBU1lNTUVUUklDIHVzZXItdG9rZW4gY2hhaW4uXG4gKlxuICogRXZlcnkgdG9rZW4gdGhhdCBzcGVha3MgZm9yIGEgUEVSU09OIChhY2Nlc3MsIHJlZnJlc2gsIHN0ZXAtdXAsIGFuZCB0aGVcbiAqIHNob3J0LWxpdmVkIHRva2VuIGFuIG9wYXF1ZSBhY2Nlc3Mga2V5IGlzIGV4Y2hhbmdlZCBmb3IpIGlzIHNpZ25lZCBieVxuICogKipwbGF0Zm9ybSBhbG9uZSoqLCB3aXRoIEVTMjU2IGFuZCBhIGBraWRgLCBhbmQgdmVyaWZpZWQgYnkgZXZlcnlvbmUgZWxzZVxuICogYWdhaW5zdCB0aGUgcHVibGljIGtleXMgcGxhdGZvcm0gcHVibGlzaGVzIGF0IGAvLndlbGwta25vd24vandrcy5qc29uYC4gTm9cbiAqIHNlcnZpY2UgaG9sZHMgYSBrZXkgdGhhdCBjYW4gbWludCBhIHVzZXIgdG9rZW4gYW55IG1vcmUuXG4gKlxuICogT25seSBOb2RlJ3MgYGNyeXB0b2AgaXMgdXNlZCDigJQgYGNyZWF0ZVB1YmxpY0tleWAvYGV4cG9ydGAgYWxyZWFkeSBzcGVhayBKV0ssXG4gKiBzbyBub3RoaW5nIGhlcmUgbmVlZHMgYSBKT1NFIGxpYnJhcnkuXG4gKlxuICogSW50ZXJuYWwgU0VSVklDRSB0b2tlbnMgKGBwcmluY2lwYWxUeXBlOiAnc2VydmljZSdgKSBhcmUgRVMyNTYgdG9vLCBzaWduZWQgYnlcbiAqIHRoZSBDQUxMSU5HIHNlcnZpY2Ugd2l0aCBpdHMgb3duIGtleSAoIzE0LCBgc2VydmljZXMvc2VydmljZS1rZXlzLnRzYCkuIEJvdGhcbiAqIGNoYWlucyB0aGVyZWZvcmUgc2hhcmUgdGhlc2UgcHJpbWl0aXZlcywgYW5kIGEgYmVhcmVyIHRva2VuIGlzIHJvdXRlZCBieSB3aGljaFxuICoga2V5IHNldCBvd25zIGl0cyBga2lkYCByYXRoZXIgdGhhbiBieSBpdHMgYWxnb3JpdGhtIOKAlCBzZWUgYG1pZGRsZXdhcmUvYXV0aC50c2AuXG4gKi9cblxuaW1wb3J0IGNyeXB0bywgeyB0eXBlIEtleU9iamVjdCB9IGZyb20gJ2NyeXB0byc7XG5cbi8qKiBUaGUgT05MWSBhbGdvcml0aG0gYSB1c2VyIHRva2VuIG1heSBiZSBzaWduZWQgd2l0aC4gKi9cbmV4cG9ydCBjb25zdCBVU0VSX1RPS0VOX0FMR09SSVRITSA9ICdFUzI1Nic7XG5cbi8qKiBUaGUgY3VydmUgRVMyNTYgcGlucyAoYEVDRFNBX05JU1RfUDI1NmAgLyBgcHJpbWUyNTZ2MWAgLyBgRUNDX05JU1RfUDI1NmAgaW4gS01TIHRlcm1zKS4gKi9cbmV4cG9ydCBjb25zdCBVU0VSX1RPS0VOX0NVUlZFID0gJ1AtMjU2JztcblxuLyoqIFBhdGggdGhlIHB1YmxpYyBrZXkgc2V0IGlzIHNlcnZlZCBmcm9tIChwbGF0Zm9ybSBtb3VudHMgaXQ7IG5naW54IHByb3hpZXMgaXQpLiAqL1xuZXhwb3J0IGNvbnN0IEpXS1NfUEFUSCA9ICcvLndlbGwta25vd24vandrcy5qc29uJztcblxuLyoqIE9uZSBwdWJsaXNoZWQgRUMgcHVibGljIGtleS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUHVibGljSndrIHtcbiAga3R5OiAnRUMnO1xuICBjcnY6ICdQLTI1Nic7XG4gIC8qKiBiYXNlNjR1cmwgWCBjb29yZGluYXRlLiAqL1xuICB4OiBzdHJpbmc7XG4gIC8qKiBiYXNlNjR1cmwgWSBjb29yZGluYXRlLiAqL1xuICB5OiBzdHJpbmc7XG4gIC8qKiBSRkMgNzYzOCB0aHVtYnByaW50IOKAlCBzdGFibGUgZm9yIHRoZSBrZXksIHNvIHJvdGF0aW9uIGlzIGEgYGtpZGAgY2hhbmdlLiAqL1xuICBraWQ6IHN0cmluZztcbiAgdXNlOiAnc2lnJztcbiAgYWxnOiAnRVMyNTYnO1xufVxuXG4vKiogVGhlIGRvY3VtZW50IHNlcnZlZCBhdCB7QGxpbmsgSldLU19QQVRIfS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSndrc0RvY3VtZW50IHtcbiAga2V5czogUHVibGljSndrW107XG59XG5cbi8qKiBUaGUgaGVhZGVyIGZpZWxkcyBhIHZlcmlmaWVyIG5lZWRzIGJlZm9yZSBpdCBjYW4gcGljayBhIGtleS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSnd0SGVhZGVyIHtcbiAgYWxnPzogc3RyaW5nO1xuICBraWQ/OiBzdHJpbmc7XG4gIHR5cD86IHN0cmluZztcbn1cblxuLyoqXG4gKiBEZWNvZGUgYSBKV1QncyBoZWFkZXIgV0lUSE9VVCB2ZXJpZnlpbmcgYW55dGhpbmcuIFJldHVybnMgYG51bGxgIGZvciBhbnl0aGluZ1xuICogdGhhdCBpcyBub3QgYSB0aHJlZS1wYXJ0IHRva2VuIHdpdGggYSBKU09OIG9iamVjdCBoZWFkZXIg4oCUIHRoZSBjYWxsZXIgdGhlblxuICogcmVqZWN0cywgc28gdGhpcyBuZXZlciB3aWRlbnMgd2hhdCBpcyBhY2NlcHRlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlY29kZUp3dEhlYWRlcih0b2tlbjogc3RyaW5nKTogSnd0SGVhZGVyIHwgbnVsbCB7XG4gIGNvbnN0IHBhcnRzID0gdG9rZW4uc3BsaXQoJy4nKTtcbiAgaWYgKHBhcnRzLmxlbmd0aCAhPT0gMyB8fCAhcGFydHNbMF0pIHJldHVybiBudWxsO1xuICB0cnkge1xuICAgIGNvbnN0IGhlYWRlciA9IEpTT04ucGFyc2UoQnVmZmVyLmZyb20ocGFydHNbMF0sICdiYXNlNjR1cmwnKS50b1N0cmluZygndXRmLTgnKSkgYXMgdW5rbm93bjtcbiAgICBpZiAoIWhlYWRlciB8fCB0eXBlb2YgaGVhZGVyICE9PSAnb2JqZWN0JyB8fCBBcnJheS5pc0FycmF5KGhlYWRlcikpIHJldHVybiBudWxsO1xuICAgIHJldHVybiBoZWFkZXIgYXMgSnd0SGVhZGVyO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxufVxuXG4vKipcbiAqIFRoZSBSRkMgNzYzOCB0aHVtYnByaW50IG9mIGFuIEVDIHB1YmxpYyBrZXksIGJhc2U2NHVybC1lbmNvZGVkIOKAlCB1c2VkIGFzIHRoZVxuICogYGtpZGAgZXZlcnl3aGVyZS5cbiAqXG4gKiBEZXJpdmluZyB0aGUgaWQgRlJPTSB0aGUga2V5IChyYXRoZXIgdGhhbiBuYW1pbmcga2V5cyBieSBoYW5kLCBvciBieSB0aGVpciBLTVNcbiAqIEFSTikgbWVhbnMgdGhlIHNhbWUga2V5IGFsd2F5cyBwdWJsaXNoZXMgdW5kZXIgdGhlIHNhbWUgYGtpZGAgd2hhdGV2ZXIgc2lnbmVyXG4gKiBob2xkcyBpdCwgYSByb3RhdGVkLWluIGtleSBjYW4gbmV2ZXIgY29sbGlkZSB3aXRoIHRoZSBvbmUgaXQgcmVwbGFjZXMsIGFuZCBub1xuICogQVdTIGFjY291bnQgaWQgZXZlciByZWFjaGVzIGEgdG9rZW4gb3IgdGhlIHB1YmxpYyBKV0tTLlxuICpcbiAqIFRoZSBoYXNoZWQgZm9ybSBpcyB0aGUgY2Fub25pY2FsIEpTT04gb2YgZXhhY3RseSBgY3J2YCwgYGt0eWAsIGB4YCwgYHlgLCBpblxuICogbGV4aWNvZ3JhcGhpYyBvcmRlciBhbmQgd2l0aCBubyB3aGl0ZXNwYWNlIOKAlCB0aGUgc3BlYydzIHJlcXVpcmVkIG1lbWJlcnMgZm9yXG4gKiBhbiBFQyBrZXkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBqd2tUaHVtYnByaW50KGp3azogeyBjcnY6IHN0cmluZzsga3R5OiBzdHJpbmc7IHg6IHN0cmluZzsgeTogc3RyaW5nIH0pOiBzdHJpbmcge1xuICBjb25zdCBjYW5vbmljYWwgPSBKU09OLnN0cmluZ2lmeSh7IGNydjogandrLmNydiwga3R5OiBqd2sua3R5LCB4OiBqd2sueCwgeTogandrLnkgfSk7XG4gIHJldHVybiBjcnlwdG8uY3JlYXRlSGFzaCgnc2hhMjU2JykudXBkYXRlKGNhbm9uaWNhbCkuZGlnZXN0KCdiYXNlNjR1cmwnKTtcbn1cblxuLyoqXG4gKiBQcm9qZWN0IGFuIEVDIFAtMjU2IHB1YmxpYyBrZXkgb250byB0aGUgcHVibGlzaGVkIEpXSyBzaGFwZSwgd2l0aCBpdHNcbiAqIHRodW1icHJpbnQgYXMgYGtpZGAuIFRocm93cyB3aGVuIHRoZSBrZXkgaXMgbm90IGEgUC0yNTYgRUMga2V5IOKAlCBhIHNpZ25lclxuICogY29uZmlndXJlZCB3aXRoIHRoZSB3cm9uZyBrZXkgdHlwZSBtdXN0IGZhaWwgYXQgYm9vdCwgbm90IG1pbnQgdG9rZW5zIG5vYm9keVxuICogY2FuIHZlcmlmeS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHB1YmxpY0p3a0Zyb20oa2V5OiBLZXlPYmplY3QpOiBQdWJsaWNKd2sge1xuICBjb25zdCBleHBvcnRlZCA9IGtleS5leHBvcnQoeyBmb3JtYXQ6ICdqd2snIH0pIGFzIHsga3R5Pzogc3RyaW5nOyBjcnY/OiBzdHJpbmc7IHg/OiBzdHJpbmc7IHk/OiBzdHJpbmcgfTtcbiAgaWYgKGV4cG9ydGVkLmt0eSAhPT0gJ0VDJyB8fCBleHBvcnRlZC5jcnYgIT09IFVTRVJfVE9LRU5fQ1VSVkUgfHwgIWV4cG9ydGVkLnggfHwgIWV4cG9ydGVkLnkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFRva2VuIHNpZ25pbmcga2V5IG11c3QgYmUgYW4gRUMgJHtVU0VSX1RPS0VOX0NVUlZFfSBwdWJsaWMga2V5IChnb3QgJHtleHBvcnRlZC5rdHkgPz8gJ3Vua25vd24nfS8ke2V4cG9ydGVkLmNydiA/PyAndW5rbm93bid9KWApO1xuICB9XG4gIGNvbnN0IGJhc2UgPSB7IGt0eTogJ0VDJyBhcyBjb25zdCwgY3J2OiBVU0VSX1RPS0VOX0NVUlZFIGFzICdQLTI1NicsIHg6IGV4cG9ydGVkLngsIHk6IGV4cG9ydGVkLnkgfTtcbiAgcmV0dXJuIHsgLi4uYmFzZSwga2lkOiBqd2tUaHVtYnByaW50KGJhc2UpLCB1c2U6ICdzaWcnLCBhbGc6ICdFUzI1NicgfTtcbn1cblxuLyoqXG4gKiBUdXJuIGEgcHVibGlzaGVkIEpXSyBiYWNrIGludG8gYSB2ZXJpZmljYXRpb24ga2V5LiBUaHJvd3MgZm9yIGFueXRoaW5nIHRoYXQgaXNcbiAqIG5vdCBhbiBFUzI1Ni11c2FibGUgUC0yNTYga2V5LCBzbyBhIEpXS1MgZG9jdW1lbnQgd2l0aCBhIHN1cnByaXNlIGVudHJ5XG4gKiAoYSBmdXR1cmUgUlNBIGtleSwgYSBgdXNlOiAnZW5jJ2Aga2V5KSBjYW4gbmV2ZXIgYmUgcHJlc3NlZCBpbnRvIHZlcmlmeWluZyBhXG4gKiB1c2VyIHRva2VuLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcHVibGljS2V5RnJvbUp3ayhqd2s6IFB1YmxpY0p3ayk6IEtleU9iamVjdCB7XG4gIGlmIChqd2sua3R5ICE9PSAnRUMnIHx8IGp3ay5jcnYgIT09IFVTRVJfVE9LRU5fQ1VSVkUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFVuc3VwcG9ydGVkIEpXS1MgZW50cnk6ICR7andrLmt0eX0vJHtqd2suY3J2fWApO1xuICB9XG4gIGlmIChqd2sudXNlICE9PSB1bmRlZmluZWQgJiYgandrLnVzZSAhPT0gJ3NpZycpIHRocm93IG5ldyBFcnJvcignSldLUyBlbnRyeSBpcyBub3QgYSBzaWduaW5nIGtleScpO1xuICBpZiAoandrLmFsZyAhPT0gdW5kZWZpbmVkICYmIGp3ay5hbGcgIT09IFVTRVJfVE9LRU5fQUxHT1JJVEhNKSB0aHJvdyBuZXcgRXJyb3IoYEpXS1MgZW50cnkgYWxnb3JpdGhtIGlzIG5vdCAke1VTRVJfVE9LRU5fQUxHT1JJVEhNfWApO1xuICByZXR1cm4gY3J5cHRvLmNyZWF0ZVB1YmxpY0tleSh7IGtleTogeyBrdHk6ICdFQycsIGNydjogandrLmNydiwgeDogandrLngsIHk6IGp3ay55IH0sIGZvcm1hdDogJ2p3aycgfSk7XG59XG5cbi8qKiBUcnVlIHdoZW4gYHZhbHVlYCBpcyBzaGFwZWQgbGlrZSB0aGUgSldLUyBkb2N1bWVudCAoa2V5cyBhcnJheSBvZiBvYmplY3RzKS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0p3a3NEb2N1bWVudCh2YWx1ZTogdW5rbm93bik6IHZhbHVlIGlzIEp3a3NEb2N1bWVudCB7XG4gIHJldHVybiAhIXZhbHVlXG4gICAgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0J1xuICAgICYmIEFycmF5LmlzQXJyYXkoKHZhbHVlIGFzIHsga2V5cz86IHVua25vd24gfSkua2V5cylcbiAgICAmJiAodmFsdWUgYXMgeyBrZXlzOiB1bmtub3duW10gfSkua2V5cy5ldmVyeSgoaykgPT4gISFrICYmIHR5cGVvZiBrID09PSAnb2JqZWN0Jyk7XG59XG5cbi8qKlxuICogQ29udmVydCBhbiBFQ0RTQSBzaWduYXR1cmUgZnJvbSBBU04uMSBERVIgKHdoYXQgQVdTIEtNUyByZXR1cm5zKSB0byB0aGUgcmF3XG4gKiBmaXhlZC13aWR0aCBgciB8fCBzYCBKT1NFIGZvcm0gYSBKV1QgY2Fycmllcy5cbiAqXG4gKiBERVIgaXMgYFNFUVVFTkNFIHsgSU5URUdFUiByLCBJTlRFR0VSIHMgfWAgd2l0aCBib3RoIGludGVnZXJzIG1pbmltYWxseVxuICogZW5jb2RlZCBhbmQgc2lnbi1wYWRkZWQ7IEpPU0Ugd2FudHMgZWFjaCBjb29yZGluYXRlIGxlZnQtemVyby1wYWRkZWQgdG9cbiAqIGV4YWN0bHkgdGhlIGN1cnZlIHNpemUgKDMyIGJ5dGVzIGZvciBQLTI1NikuIEdldHRpbmcgdGhpcyB3cm9uZyBwcm9kdWNlc1xuICogdG9rZW5zIHRoYXQgdmVyaWZ5IG5vd2hlcmUsIHNvIGl0IGlzIHN0cmljdDogYW55IHN0cnVjdHVyYWwgc3VycHJpc2UgdGhyb3dzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZGVyVG9Kb3NlU2lnbmF0dXJlKGRlcjogQnVmZmVyLCBjb29yZGluYXRlQnl0ZXMgPSAzMik6IEJ1ZmZlciB7XG4gIGlmIChkZXJbMF0gIT09IDB4MzApIHRocm93IG5ldyBFcnJvcignTWFsZm9ybWVkIERFUiBzaWduYXR1cmU6IGV4cGVjdGVkIFNFUVVFTkNFJyk7XG4gIC8vIExlbmd0aCBieXRlKHMpOiBzaG9ydCBmb3JtICg8MHg4MCkgb3IgbG9uZyBmb3JtICgweDgxIGZvciBhIDEtYnl0ZSBsZW5ndGgpLlxuICBsZXQgb2Zmc2V0ID0gMTtcbiAgaWYgKGRlcltvZmZzZXRdID09PSAweDgxKSBvZmZzZXQgKz0gMjtcbiAgZWxzZSBpZiAoZGVyW29mZnNldF0gPCAweDgwKSBvZmZzZXQgKz0gMTtcbiAgZWxzZSB0aHJvdyBuZXcgRXJyb3IoJ01hbGZvcm1lZCBERVIgc2lnbmF0dXJlOiB1bnN1cHBvcnRlZCBsZW5ndGggZW5jb2RpbmcnKTtcblxuICBjb25zdCByZWFkSW50ID0gKCk6IEJ1ZmZlciA9PiB7XG4gICAgaWYgKGRlcltvZmZzZXRdICE9PSAweDAyKSB0aHJvdyBuZXcgRXJyb3IoJ01hbGZvcm1lZCBERVIgc2lnbmF0dXJlOiBleHBlY3RlZCBJTlRFR0VSJyk7XG4gICAgY29uc3QgbGVuID0gZGVyW29mZnNldCArIDFdO1xuICAgIGNvbnN0IHN0YXJ0ID0gb2Zmc2V0ICsgMjtcbiAgICBvZmZzZXQgPSBzdGFydCArIGxlbjtcbiAgICBsZXQgdmFsdWUgPSBkZXIuc3ViYXJyYXkoc3RhcnQsIG9mZnNldCk7XG4gICAgLy8gU3RyaXAgdGhlIHNpZ24tcGFkZGluZyBieXRlIERFUiBhZGRzIHdoZW4gdGhlIGhpZ2ggYml0IGlzIHNldOKAplxuICAgIHdoaWxlICh2YWx1ZS5sZW5ndGggPiBjb29yZGluYXRlQnl0ZXMgJiYgdmFsdWVbMF0gPT09IDB4MDApIHZhbHVlID0gdmFsdWUuc3ViYXJyYXkoMSk7XG4gICAgaWYgKHZhbHVlLmxlbmd0aCA+IGNvb3JkaW5hdGVCeXRlcykgdGhyb3cgbmV3IEVycm9yKCdNYWxmb3JtZWQgREVSIHNpZ25hdHVyZTogY29vcmRpbmF0ZSB0b28gbGFyZ2UnKTtcbiAgICAvLyDigKZ0aGVuIGxlZnQtcGFkIGJhY2sgb3V0IHRvIHRoZSBmaXhlZCBjdXJ2ZSB3aWR0aCBKT1NFIHJlcXVpcmVzLlxuICAgIHJldHVybiBCdWZmZXIuY29uY2F0KFtCdWZmZXIuYWxsb2MoY29vcmRpbmF0ZUJ5dGVzIC0gdmFsdWUubGVuZ3RoKSwgdmFsdWVdKTtcbiAgfTtcblxuICBjb25zdCByID0gcmVhZEludCgpO1xuICBjb25zdCBzID0gcmVhZEludCgpO1xuICByZXR1cm4gQnVmZmVyLmNvbmNhdChbciwgc10pO1xufVxuXG4vKiogYmFzZTY0dXJsIG9mIGEgSlNPTiB2YWx1ZSwgdGhlIEpXUyB3YXkgKG5vIHBhZGRpbmcsIFVSTCBhbHBoYWJldCkuICovXG5mdW5jdGlvbiBiNjR1SnNvbih2YWx1ZTogdW5rbm93bik6IHN0cmluZyB7XG4gIHJldHVybiBCdWZmZXIuZnJvbShKU09OLnN0cmluZ2lmeSh2YWx1ZSksICd1dGYtOCcpLnRvU3RyaW5nKCdiYXNlNjR1cmwnKTtcbn1cblxuLyoqIFRoZSBKV1Mgc2lnbmluZyBpbnB1dCBmb3IgYW4gRVMyNTYgSldUOiBgYmFzZTY0dXJsKGhlYWRlcikuYmFzZTY0dXJsKGJvZHkpYC4gKi9cbmV4cG9ydCBmdW5jdGlvbiBlbmNvZGVKd3NTaWduaW5nSW5wdXQoa2lkOiBzdHJpbmcsIGJvZHk6IG9iamVjdCk6IHN0cmluZyB7XG4gIHJldHVybiBgJHtiNjR1SnNvbih7IGFsZzogVVNFUl9UT0tFTl9BTEdPUklUSE0sIHR5cDogJ0pXVCcsIGtpZCB9KX0uJHtiNjR1SnNvbihib2R5KX1gO1xufVxuXG4vKiogQSBjb21wYWN0IEpXVCBmcm9tIGl0cyBzaWduaW5nIGlucHV0IGFuZCBpdHMgSUVFRS1QMTM2MyBzaWduYXR1cmUuICovXG5leHBvcnQgZnVuY3Rpb24gY29tcGFjdEp3cyhzaWduaW5nSW5wdXQ6IHN0cmluZywgc2lnbmF0dXJlOiBCdWZmZXIpOiBzdHJpbmcge1xuICByZXR1cm4gYCR7c2lnbmluZ0lucHV0fS4ke3NpZ25hdHVyZS50b1N0cmluZygnYmFzZTY0dXJsJyl9YDtcbn1cbiJdfQ==
|
|
151
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiandrLmpzIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvandrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7QUFFdEM7Ozs7Ozs7Ozs7Ozs7Ozs7R0FnQkc7QUFFSCxPQUFPLE1BQTBCLE1BQU0sUUFBUSxDQUFDO0FBRWhELDBEQUEwRDtBQUMxRCxNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxPQUFPLENBQUM7QUFFNUMsOEZBQThGO0FBQzlGLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLE9BQU8sQ0FBQztBQUV4QyxxRkFBcUY7QUFDckYsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHLHdCQUF3QixDQUFDO0FBNEJsRDs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLGVBQWUsQ0FBQyxLQUFhO0lBQzNDLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDL0IsSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFBRSxPQUFPLElBQUksQ0FBQztJQUNqRCxJQUFJLENBQUM7UUFDSCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBWSxDQUFDO1FBQzNGLElBQUksQ0FBQyxNQUFNLElBQUksT0FBTyxNQUFNLEtBQUssUUFBUSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDO1lBQUUsT0FBTyxJQUFJLENBQUM7UUFDaEYsT0FBTyxNQUFtQixDQUFDO0lBQzdCLENBQUM7SUFBQyxNQUFNLENBQUM7UUFDUCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7QUFDSCxDQUFDO0FBRUQ7Ozs7Ozs7Ozs7OztHQVlHO0FBQ0gsTUFBTSxVQUFVLGFB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WUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLCtDQUErQyxDQUFDLENBQUM7UUFDckcsa0VBQWtFO1FBQ2xFLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQzlFLENBQUMsQ0FBQztJQUVGLE1BQU0sQ0FBQyxHQUFHLE9BQU8sRUFBRSxDQUFDO0lBQ3BCLE1BQU0sQ0FBQyxHQUFHLE9BQU8sRUFBRSxDQUFDO0lBQ3BCLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQy9CLENBQUM7QUFFRCx5RUFBeUU7QUFDekUsU0FBUyxRQUFRLENBQUMsS0FBYztJQUM5QixPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUM7QUFDM0UsQ0FBQztBQUVELG1GQUFtRjtBQUNuRixNQUFNLFVBQVUscUJBQXFCLENBQUMsR0FBVyxFQUFFLElBQVk7SUFDN0QsT0FBTyxHQUFHLFFBQVEsQ0FBQyxFQUFFLEdBQUcsRUFBRSxvQkFBb0IsRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7QUFDekYsQ0FBQztBQUVELHlFQUF5RTtBQUN6RSxNQUFNLFVBQVUsVUFBVSxDQUFDLFlBQW9CLEVBQUUsU0FBaUI7SUFDaEUsT0FBTyxHQUFHLFlBQVksSUFBSSxTQUFTLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUM7QUFDOUQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG4vKipcbiAqIEpXSyBwcmltaXRpdmVzIGZvciB0aGUgQVNZTU1FVFJJQyB1c2VyLXRva2VuIGNoYWluLlxuICpcbiAqIEV2ZXJ5IHRva2VuIHRoYXQgc3BlYWtzIGZvciBhIFBFUlNPTiAoYWNjZXNzLCByZWZyZXNoLCBzdGVwLXVwLCBhbmQgdGhlXG4gKiBzaG9ydC1saXZlZCB0b2tlbiBhbiBvcGFxdWUgYWNjZXNzIGtleSBpcyBleGNoYW5nZWQgZm9yKSBpcyBzaWduZWQgYnlcbiAqICoqcGxhdGZvcm0gYWxvbmUqKiwgd2l0aCBFUzI1NiBhbmQgYSBga2lkYCwgYW5kIHZlcmlmaWVkIGJ5IGV2ZXJ5b25lIGVsc2VcbiAqIGFnYWluc3QgdGhlIHB1YmxpYyBrZXlzIHBsYXRmb3JtIHB1Ymxpc2hlcyBhdCBgLy53ZWxsLWtub3duL2p3a3MuanNvbmAuIE5vXG4gKiBzZXJ2aWNlIGhvbGRzIGEga2V5IHRoYXQgY2FuIG1pbnQgYSB1c2VyIHRva2VuIGFueSBtb3JlLlxuICpcbiAqIE9ubHkgTm9kZSdzIGBjcnlwdG9gIGlzIHVzZWQg4oCUIGBjcmVhdGVQdWJsaWNLZXlgL2BleHBvcnRgIGFscmVhZHkgc3BlYWsgSldLLFxuICogc28gbm90aGluZyBoZXJlIG5lZWRzIGEgSk9TRSBsaWJyYXJ5LlxuICpcbiAqIEludGVybmFsIFNFUlZJQ0UgdG9rZW5zIChgcHJpbmNpcGFsVHlwZTogJ3NlcnZpY2UnYCkgYXJlIEVTMjU2IHRvbywgc2lnbmVkIGJ5XG4gKiB0aGUgQ0FMTElORyBzZXJ2aWNlIHdpdGggaXRzIG93biBrZXkgKCMxNCwgYHNlcnZpY2VzL3NlcnZpY2Uta2V5cy50c2ApLiBCb3RoXG4gKiBjaGFpbnMgdGhlcmVmb3JlIHNoYXJlIHRoZXNlIHByaW1pdGl2ZXMsIGFuZCBhIGJlYXJlciB0b2tlbiBpcyByb3V0ZWQgYnkgd2hpY2hcbiAqIGtleSBzZXQgb3ducyBpdHMgYGtpZGAgcmF0aGVyIHRoYW4gYnkgaXRzIGFsZ29yaXRobSDigJQgc2VlIGBtaWRkbGV3YXJlL2F1dGgudHNgLlxuICovXG5cbmltcG9ydCBjcnlwdG8sIHsgdHlwZSBLZXlPYmplY3QgfSBmcm9tICdjcnlwdG8nO1xuXG4vKiogVGhlIE9OTFkgYWxnb3JpdGhtIGEgdXNlciB0b2tlbiBtYXkgYmUgc2lnbmVkIHdpdGguICovXG5leHBvcnQgY29uc3QgVVNFUl9UT0tFTl9BTEdPUklUSE0gPSAnRVMyNTYnO1xuXG4vKiogVGhlIGN1cnZlIEVTMjU2IHBpbnMgKGBFQ0RTQV9OSVNUX1AyNTZgIC8gYHByaW1lMjU2djFgIC8gYEVDQ19OSVNUX1AyNTZgIGluIEtNUyB0ZXJtcykuICovXG5leHBvcnQgY29uc3QgVVNFUl9UT0tFTl9DVVJWRSA9ICdQLTI1Nic7XG5cbi8qKiBQYXRoIHRoZSBwdWJsaWMga2V5IHNldCBpcyBzZXJ2ZWQgZnJvbSAocGxhdGZvcm0gbW91bnRzIGl0OyBuZ2lueCBwcm94aWVzIGl0KS4gKi9cbmV4cG9ydCBjb25zdCBKV0tTX1BBVEggPSAnLy53ZWxsLWtub3duL2p3a3MuanNvbic7XG5cbi8qKiBPbmUgcHVibGlzaGVkIEVDIHB1YmxpYyBrZXkuICovXG5leHBvcnQgaW50ZXJmYWNlIFB1YmxpY0p3ayB7XG4gIGt0eTogJ0VDJztcbiAgY3J2OiAnUC0yNTYnO1xuICAvKiogYmFzZTY0dXJsIFggY29vcmRpbmF0ZS4gKi9cbiAgeDogc3RyaW5nO1xuICAvKiogYmFzZTY0dXJsIFkgY29vcmRpbmF0ZS4gKi9cbiAgeTogc3RyaW5nO1xuICAvKiogUkZDIDc2MzggdGh1bWJwcmludCDigJQgc3RhYmxlIGZvciB0aGUga2V5LCBzbyByb3RhdGlvbiBpcyBhIGBraWRgIGNoYW5nZS4gKi9cbiAga2lkOiBzdHJpbmc7XG4gIHVzZTogJ3NpZyc7XG4gIGFsZzogJ0VTMjU2Jztcbn1cblxuLyoqIFRoZSBkb2N1bWVudCBzZXJ2ZWQgYXQge0BsaW5rIEpXS1NfUEFUSH0uICovXG5leHBvcnQgaW50ZXJmYWNlIEp3a3NEb2N1bWVudCB7XG4gIGtleXM6IFB1YmxpY0p3a1tdO1xufVxuXG4vKiogVGhlIGhlYWRlciBmaWVsZHMgYSB2ZXJpZmllciBuZWVkcyBiZWZvcmUgaXQgY2FuIHBpY2sgYSBrZXkuICovXG5leHBvcnQgaW50ZXJmYWNlIEp3dEhlYWRlciB7XG4gIGFsZz86IHN0cmluZztcbiAga2lkPzogc3RyaW5nO1xuICB0eXA/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogRGVjb2RlIGEgSldUJ3MgaGVhZGVyIFdJVEhPVVQgdmVyaWZ5aW5nIGFueXRoaW5nLiBSZXR1cm5zIGBudWxsYCBmb3IgYW55dGhpbmdcbiAqIHRoYXQgaXMgbm90IGEgdGhyZWUtcGFydCB0b2tlbiB3aXRoIGEgSlNPTiBvYmplY3QgaGVhZGVyIOKAlCB0aGUgY2FsbGVyIHRoZW5cbiAqIHJlamVjdHMsIHNvIHRoaXMgbmV2ZXIgd2lkZW5zIHdoYXQgaXMgYWNjZXB0ZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZWNvZGVKd3RIZWFkZXIodG9rZW46IHN0cmluZyk6IEp3dEhlYWRlciB8IG51bGwge1xuICBjb25zdCBwYXJ0cyA9IHRva2VuLnNwbGl0KCcuJyk7XG4gIGlmIChwYXJ0cy5sZW5ndGggIT09IDMgfHwgIXBhcnRzWzBdKSByZXR1cm4gbnVsbDtcbiAgdHJ5IHtcbiAgICBjb25zdCBoZWFkZXIgPSBKU09OLnBhcnNlKEJ1ZmZlci5mcm9tKHBhcnRzWzBdLCAnYmFzZTY0dXJsJykudG9TdHJpbmcoJ3V0Zi04JykpIGFzIHVua25vd247XG4gICAgaWYgKCFoZWFkZXIgfHwgdHlwZW9mIGhlYWRlciAhPT0gJ29iamVjdCcgfHwgQXJyYXkuaXNBcnJheShoZWFkZXIpKSByZXR1cm4gbnVsbDtcbiAgICByZXR1cm4gaGVhZGVyIGFzIEp3dEhlYWRlcjtcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbn1cblxuLyoqXG4gKiBUaGUgUkZDIDc2MzggdGh1bWJwcmludCBvZiBhbiBFQyBwdWJsaWMga2V5LCBiYXNlNjR1cmwtZW5jb2RlZCDigJQgdXNlZCBhcyB0aGVcbiAqIGBraWRgIGV2ZXJ5d2hlcmUuXG4gKlxuICogRGVyaXZpbmcgdGhlIGlkIEZST00gdGhlIGtleSAocmF0aGVyIHRoYW4gbmFtaW5nIGtleXMgYnkgaGFuZCwgb3IgYnkgdGhlaXIgS01TXG4gKiBBUk4pIG1lYW5zIHRoZSBzYW1lIGtleSBhbHdheXMgcHVibGlzaGVzIHVuZGVyIHRoZSBzYW1lIGBraWRgIHdoYXRldmVyIHNpZ25lclxuICogaG9sZHMgaXQsIGEgcm90YXRlZC1pbiBrZXkgY2FuIG5ldmVyIGNvbGxpZGUgd2l0aCB0aGUgb25lIGl0IHJlcGxhY2VzLCBhbmQgbm9cbiAqIEFXUyBhY2NvdW50IGlkIGV2ZXIgcmVhY2hlcyBhIHRva2VuIG9yIHRoZSBwdWJsaWMgSldLUy5cbiAqXG4gKiBUaGUgaGFzaGVkIGZvcm0gaXMgdGhlIGNhbm9uaWNhbCBKU09OIG9mIGV4YWN0bHkgYGNydmAsIGBrdHlgLCBgeGAsIGB5YCwgaW5cbiAqIGxleGljb2dyYXBoaWMgb3JkZXIgYW5kIHdpdGggbm8gd2hpdGVzcGFjZSDigJQgdGhlIHNwZWMncyByZXF1aXJlZCBtZW1iZXJzIGZvclxuICogYW4gRUMga2V5LlxuICovXG5leHBvcnQgZnVuY3Rpb24gandrVGh1bWJwcmludChqd2s6IHsgY3J2OiBzdHJpbmc7IGt0eTogc3RyaW5nOyB4OiBzdHJpbmc7IHk6IHN0cmluZyB9KTogc3RyaW5nIHtcbiAgY29uc3QgY2Fub25pY2FsID0gSlNPTi5zdHJpbmdpZnkoeyBjcnY6IGp3ay5jcnYsIGt0eTogandrLmt0eSwgeDogandrLngsIHk6IGp3ay55IH0pO1xuICByZXR1cm4gY3J5cHRvLmNyZWF0ZUhhc2goJ3NoYTI1NicpLnVwZGF0ZShjYW5vbmljYWwpLmRpZ2VzdCgnYmFzZTY0dXJsJyk7XG59XG5cbi8qKlxuICogUHJvamVjdCBhbiBFQyBQLTI1NiBwdWJsaWMga2V5IG9udG8gdGhlIHB1Ymxpc2hlZCBKV0sgc2hhcGUsIHdpdGggaXRzXG4gKiB0aHVtYnByaW50IGFzIGBraWRgLiBUaHJvd3Mgd2hlbiB0aGUga2V5IGlzIG5vdCBhIFAtMjU2IEVDIGtleSDigJQgYSBzaWduZXJcbiAqIGNvbmZpZ3VyZWQgd2l0aCB0aGUgd3Jvbmcga2V5IHR5cGUgbXVzdCBmYWlsIGF0IGJvb3QsIG5vdCBtaW50IHRva2VucyBub2JvZHlcbiAqIGNhbiB2ZXJpZnkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwdWJsaWNKd2tGcm9tKGtleTogS2V5T2JqZWN0KTogUHVibGljSndrIHtcbiAgY29uc3QgZXhwb3J0ZWQgPSBrZXkuZXhwb3J0KHsgZm9ybWF0OiAnandrJyB9KSBhcyB7IGt0eT86IHN0cmluZzsgY3J2Pzogc3RyaW5nOyB4Pzogc3RyaW5nOyB5Pzogc3RyaW5nIH07XG4gIGlmIChleHBvcnRlZC5rdHkgIT09ICdFQycgfHwgZXhwb3J0ZWQuY3J2ICE9PSBVU0VSX1RPS0VOX0NVUlZFIHx8ICFleHBvcnRlZC54IHx8ICFleHBvcnRlZC55KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBUb2tlbiBzaWduaW5nIGtleSBtdXN0IGJlIGFuIEVDICR7VVNFUl9UT0tFTl9DVVJWRX0gcHVibGljIGtleSAoZ290ICR7ZXhwb3J0ZWQua3R5ID8/ICd1bmtub3duJ30vJHtleHBvcnRlZC5jcnYgPz8gJ3Vua25vd24nfSlgKTtcbiAgfVxuICBjb25zdCBiYXNlID0geyBrdHk6ICdFQycgYXMgY29uc3QsIGNydjogVVNFUl9UT0tFTl9DVVJWRSBhcyAnUC0yNTYnLCB4OiBleHBvcnRlZC54LCB5OiBleHBvcnRlZC55IH07XG4gIHJldHVybiB7IC4uLmJhc2UsIGtpZDogandrVGh1bWJwcmludChiYXNlKSwgdXNlOiAnc2lnJywgYWxnOiAnRVMyNTYnIH07XG59XG5cbi8qKlxuICogVHVybiBhIHB1Ymxpc2hlZCBKV0sgYmFjayBpbnRvIGEgdmVyaWZpY2F0aW9uIGtleS4gVGhyb3dzIGZvciBhbnl0aGluZyB0aGF0IGlzXG4gKiBub3QgYW4gRVMyNTYtdXNhYmxlIFAtMjU2IGtleSwgc28gYSBKV0tTIGRvY3VtZW50IHdpdGggYSBzdXJwcmlzZSBlbnRyeVxuICogKGEgZnV0dXJlIFJTQSBrZXksIGEgYHVzZTogJ2VuYydgIGtleSkgY2FuIG5ldmVyIGJlIHByZXNzZWQgaW50byB2ZXJpZnlpbmcgYVxuICogdXNlciB0b2tlbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHB1YmxpY0tleUZyb21Kd2soandrOiBQdWJsaWNKd2spOiBLZXlPYmplY3Qge1xuICBpZiAoandrLmt0eSAhPT0gJ0VDJyB8fCBqd2suY3J2ICE9PSBVU0VSX1RPS0VOX0NVUlZFKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBVbnN1cHBvcnRlZCBKV0tTIGVudHJ5OiAke2p3ay5rdHl9LyR7andrLmNydn1gKTtcbiAgfVxuICBpZiAoandrLnVzZSAhPT0gdW5kZWZpbmVkICYmIGp3ay51c2UgIT09ICdzaWcnKSB0aHJvdyBuZXcgRXJyb3IoJ0pXS1MgZW50cnkgaXMgbm90IGEgc2lnbmluZyBrZXknKTtcbiAgaWYgKGp3ay5hbGcgIT09IHVuZGVmaW5lZCAmJiBqd2suYWxnICE9PSBVU0VSX1RPS0VOX0FMR09SSVRITSkgdGhyb3cgbmV3IEVycm9yKGBKV0tTIGVudHJ5IGFsZ29yaXRobSBpcyBub3QgJHtVU0VSX1RPS0VOX0FMR09SSVRITX1gKTtcbiAgcmV0dXJuIGNyeXB0by5jcmVhdGVQdWJsaWNLZXkoeyBrZXk6IHsga3R5OiAnRUMnLCBjcnY6IGp3ay5jcnYsIHg6IGp3ay54LCB5OiBqd2sueSB9LCBmb3JtYXQ6ICdqd2snIH0pO1xufVxuXG4vKiogVHJ1ZSB3aGVuIGB2YWx1ZWAgaXMgc2hhcGVkIGxpa2UgdGhlIEpXS1MgZG9jdW1lbnQgKGtleXMgYXJyYXkgb2Ygb2JqZWN0cykuICovXG5leHBvcnQgZnVuY3Rpb24gaXNKd2tzRG9jdW1lbnQodmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBKd2tzRG9jdW1lbnQge1xuICByZXR1cm4gISF2YWx1ZVxuICAgICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCdcbiAgICAmJiBBcnJheS5pc0FycmF5KCh2YWx1ZSBhcyB7IGtleXM/OiB1bmtub3duIH0pLmtleXMpXG4gICAgJiYgKHZhbHVlIGFzIHsga2V5czogdW5rbm93bltdIH0pLmtleXMuZXZlcnkoKGspID0+ICEhayAmJiB0eXBlb2YgayA9PT0gJ29iamVjdCcpO1xufVxuXG4vKipcbiAqIENvbnZlcnQgYW4gRUNEU0Egc2lnbmF0dXJlIGZyb20gQVNOLjEgREVSICh3aGF0IEFXUyBLTVMgcmV0dXJucykgdG8gdGhlIHJhd1xuICogZml4ZWQtd2lkdGggYHIgfHwgc2AgSk9TRSBmb3JtIGEgSldUIGNhcnJpZXMuXG4gKlxuICogREVSIGlzIGBTRVFVRU5DRSB7IElOVEVHRVIgciwgSU5URUdFUiBzIH1gIHdpdGggYm90aCBpbnRlZ2VycyBtaW5pbWFsbHlcbiAqIGVuY29kZWQgYW5kIHNpZ24tcGFkZGVkOyBKT1NFIHdhbnRzIGVhY2ggY29vcmRpbmF0ZSBsZWZ0LXplcm8tcGFkZGVkIHRvXG4gKiBleGFjdGx5IHRoZSBjdXJ2ZSBzaXplICgzMiBieXRlcyBmb3IgUC0yNTYpLiBHZXR0aW5nIHRoaXMgd3JvbmcgcHJvZHVjZXNcbiAqIHRva2VucyB0aGF0IHZlcmlmeSBub3doZXJlLCBzbyBpdCBpcyBzdHJpY3Q6IGFueSBzdHJ1Y3R1cmFsIHN1cnByaXNlIHRocm93cy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlclRvSm9zZVNpZ25hdHVyZShkZXI6IEJ1ZmZlciwgY29vcmRpbmF0ZUJ5dGVzID0gMzIpOiBCdWZmZXIge1xuICBpZiAoZGVyWzBdICE9PSAweDMwKSB0aHJvdyBuZXcgRXJyb3IoJ01hbGZvcm1lZCBERVIgc2lnbmF0dXJlOiBleHBlY3RlZCBTRVFVRU5DRScpO1xuICAvLyBMZW5ndGggYnl0ZShzKTogc2hvcnQgZm9ybSAoPDB4ODApIG9yIGxvbmcgZm9ybSAoMHg4MSBmb3IgYSAxLWJ5dGUgbGVuZ3RoKS5cbiAgbGV0IG9mZnNldCA9IDE7XG4gIGlmIChkZXJbb2Zmc2V0XSA9PT0gMHg4MSkgb2Zmc2V0ICs9IDI7XG4gIGVsc2UgaWYgKGRlcltvZmZzZXRdIDwgMHg4MCkgb2Zmc2V0ICs9IDE7XG4gIGVsc2UgdGhyb3cgbmV3IEVycm9yKCdNYWxmb3JtZWQgREVSIHNpZ25hdHVyZTogdW5zdXBwb3J0ZWQgbGVuZ3RoIGVuY29kaW5nJyk7XG5cbiAgY29uc3QgcmVhZEludCA9ICgpOiBCdWZmZXIgPT4ge1xuICAgIGlmIChkZXJbb2Zmc2V0XSAhPT0gMHgwMikgdGhyb3cgbmV3IEVycm9yKCdNYWxmb3JtZWQgREVSIHNpZ25hdHVyZTogZXhwZWN0ZWQgSU5URUdFUicpO1xuICAgIGNvbnN0IGxlbiA9IGRlcltvZmZzZXQgKyAxXTtcbiAgICBjb25zdCBzdGFydCA9IG9mZnNldCArIDI7XG4gICAgb2Zmc2V0ID0gc3RhcnQgKyBsZW47XG4gICAgbGV0IHZhbHVlID0gZGVyLnN1YmFycmF5KHN0YXJ0LCBvZmZzZXQpO1xuICAgIC8vIFN0cmlwIHRoZSBzaWduLXBhZGRpbmcgYnl0ZSBERVIgYWRkcyB3aGVuIHRoZSBoaWdoIGJpdCBpcyBzZXTigKZcbiAgICB3aGlsZSAodmFsdWUubGVuZ3RoID4gY29vcmRpbmF0ZUJ5dGVzICYmIHZhbHVlWzBdID09PSAweDAwKSB2YWx1ZSA9IHZhbHVlLnN1YmFycmF5KDEpO1xuICAgIGlmICh2YWx1ZS5sZW5ndGggPiBjb29yZGluYXRlQnl0ZXMpIHRocm93IG5ldyBFcnJvcignTWFsZm9ybWVkIERFUiBzaWduYXR1cmU6IGNvb3JkaW5hdGUgdG9vIGxhcmdlJyk7XG4gICAgLy8g4oCmdGhlbiBsZWZ0LXBhZCBiYWNrIG91dCB0byB0aGUgZml4ZWQgY3VydmUgd2lkdGggSk9TRSByZXF1aXJlcy5cbiAgICByZXR1cm4gQnVmZmVyLmNvbmNhdChbQnVmZmVyLmFsbG9jKGNvb3JkaW5hdGVCeXRlcyAtIHZhbHVlLmxlbmd0aCksIHZhbHVlXSk7XG4gIH07XG5cbiAgY29uc3QgciA9IHJlYWRJbnQoKTtcbiAgY29uc3QgcyA9IHJlYWRJbnQoKTtcbiAgcmV0dXJuIEJ1ZmZlci5jb25jYXQoW3IsIHNdKTtcbn1cblxuLyoqIGJhc2U2NHVybCBvZiBhIEpTT04gdmFsdWUsIHRoZSBKV1Mgd2F5IChubyBwYWRkaW5nLCBVUkwgYWxwaGFiZXQpLiAqL1xuZnVuY3Rpb24gYjY0dUpzb24odmFsdWU6IHVua25vd24pOiBzdHJpbmcge1xuICByZXR1cm4gQnVmZmVyLmZyb20oSlNPTi5zdHJpbmdpZnkodmFsdWUpLCAndXRmLTgnKS50b1N0cmluZygnYmFzZTY0dXJsJyk7XG59XG5cbi8qKiBUaGUgSldTIHNpZ25pbmcgaW5wdXQgZm9yIGFuIEVTMjU2IEpXVDogYGJhc2U2NHVybChoZWFkZXIpLmJhc2U2NHVybChib2R5KWAuICovXG5leHBvcnQgZnVuY3Rpb24gZW5jb2RlSndzU2lnbmluZ0lucHV0KGtpZDogc3RyaW5nLCBib2R5OiBvYmplY3QpOiBzdHJpbmcge1xuICByZXR1cm4gYCR7YjY0dUpzb24oeyBhbGc6IFVTRVJfVE9LRU5fQUxHT1JJVEhNLCB0eXA6ICdKV1QnLCBraWQgfSl9LiR7YjY0dUpzb24oYm9keSl9YDtcbn1cblxuLyoqIEEgY29tcGFjdCBKV1QgZnJvbSBpdHMgc2lnbmluZyBpbnB1dCBhbmQgaXRzIElFRUUtUDEzNjMgc2lnbmF0dXJlLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbXBhY3RKd3Moc2lnbmluZ0lucHV0OiBzdHJpbmcsIHNpZ25hdHVyZTogQnVmZmVyKTogc3RyaW5nIHtcbiAgcmV0dXJuIGAke3NpZ25pbmdJbnB1dH0uJHtzaWduYXR1cmUudG9TdHJpbmcoJ2Jhc2U2NHVybCcpfWA7XG59XG4iXX0=
|
package/lib/utils/logger.js
CHANGED
|
@@ -218,4 +218,4 @@ export function createLogger(serviceName) {
|
|
|
218
218
|
*/
|
|
219
219
|
export const logger = createLogger(process.env.SERVICE_NAME || 'api');
|
|
220
220
|
export default logger;
|
|
221
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nZ2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL2xvZ2dlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBRXRDLE9BQU8sT0FBTyxNQUFNLFNBQVMsQ0FBQztBQUM5QixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRXBGLE1BQU0sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUM7QUFFOUUsMEVBQTBFO0FBQzFFLDRFQUE0RTtBQUM1RSw2RUFBNkU7QUFDN0UsdURBQXVEO0FBQ3ZELE1BQU0sT0FBTyxHQUFHLGlCQUFpQixDQUFDLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBRW5EOztHQUVHO0FBQ0gsTUFBTSxhQUFhLEdBQUcsTUFBTSxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsR0FBRyxJQUFJLEVBQUUsRUFBRSxFQUFFO0lBQy9FLE1BQU0sV0FBVyxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxPQUFPLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQ2xELE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQzNFLE9BQU8sR0FBRyxTQUFTLElBQUksS0FBSyxJQUFJLFdBQVcsSUFBSSxPQUFPLEdBQUcsT0FBTyxFQUFFLENB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QWUsTUFBTSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbmltcG9ydCB3aW5zdG9uIGZyb20gJ3dpbnN0b24nO1xuaW1wb3J0IHsgc2FmZUNyZWF0ZVJlcXVpcmUgfSBmcm9tICcuL3NhZmUtcmVxdWlyZS5qcyc7XG5pbXBvcnQgeyBTRU5TSVRJVkVfS0VZX1BBVFRFUk4sIFJFREFDVEVELCBtYXNrTGluZSB9IGZyb20gJy4vc2Vuc2l0aXZlLXBhdHRlcm5zLmpzJztcblxuY29uc3QgeyBjb21iaW5lLCB0aW1lc3RhbXAsIHByaW50ZiwgY29sb3JpemUsIGVycm9ycywganNvbiB9ID0gd2luc3Rvbi5mb3JtYXQ7XG5cbi8vIEVTTSBoYXMgbm8gZ2xvYmFsIGByZXF1aXJlYDsgc2FmZUNyZWF0ZVJlcXVpcmUgZW5hYmxlcyB0aGUgc3luY2hyb25vdXMsXG4vLyBPUFRJT05BTCBsYXp5LWxvYWQgb2YgQG9wZW50ZWxlbWV0cnkvYXBpIGluIGdldEN1cnJlbnRUcmFjZUlkKCkgYmVsb3cg4oCUIGFcbi8vIHdpbnN0b24gZm9ybWF0IGNhbGxiYWNrIG11c3Qgc3RheSBzeW5jaHJvbm91cywgc28gYSBkeW5hbWljIGltcG9ydCgpIHdvbid0XG4vLyB3b3JrIHRoZXJlLiAoQ0pTLWJ1bmRsZSBzYWZlIOKAlCBzZWUgc2FmZS1yZXF1aXJlLnRzLilcbmNvbnN0IHJlcXVpcmUgPSBzYWZlQ3JlYXRlUmVxdWlyZShpbXBvcnQubWV0YS51cmwpO1xuXG4vKipcbiAqIEN1c3RvbSBsb2cgZm9ybWF0IGZvciBodW1hbi1yZWFkYWJsZSBjb25zb2xlIG91dHB1dC5cbiAqL1xuY29uc3QgY29uc29sZUZvcm1hdCA9IHByaW50ZigoeyBsZXZlbCwgbWVzc2FnZSwgdGltZXN0YW1wLCBzZXJ2aWNlLCAuLi5tZXRhIH0pID0+IHtcbiAgY29uc3Qgc2VydmljZU5hbWUgPSBzZXJ2aWNlID8gYFske3NlcnZpY2V9XWAgOiAnJztcbiAgY29uc3QgbWV0YVN0ciA9IE9iamVjdC5rZXlzKG1ldGEpLmxlbmd0aCA/IGAgJHtKU09OLnN0cmluZ2lmeShtZXRhKX1gIDogJyc7XG4gIHJldHVybiBgJHt0aW1lc3RhbXB9ICR7bGV2ZWx9ICR7c2VydmljZU5hbWV9ICR7bWVzc2FnZX0ke21ldGFTdHJ9YDtcbn0pO1xuXG4vKipcbiAqIExhenkgbG9va3VwIG9mIE9wZW5UZWxlbWV0cnkgdHJhY2UgSUQuIFJldHVybnMgdW5kZWZpbmVkIHdoZW4gdHJhY2luZ1xuICogaXNuJ3QgaW5pdGlhbGl6ZWQgb3IgQG9wZW50ZWxlbWV0cnkvYXBpIGlzbid0IGluc3RhbGxlZCDigJQgbmV2ZXIgdGhyb3dzLlxuICogQ2hlYXA6IGEgc2luZ2xlIHByb3BlcnR5IHJlYWQgYWZ0ZXIgdGhlIGZpcnN0IHN1Y2Nlc3NmdWwgbG9va3VwLlxuICovXG5sZXQgX290ZWxBcGk6IHsgdHJhY2U/OiB7IGdldEFjdGl2ZVNwYW4oKTogeyBzcGFuQ29udGV4dCgpOiB7IHRyYWNlSWQ6IHN0cmluZyB9IH0gfCB1bmRlZmluZWQgfSB9IHwgbnVsbCB8IHVuZGVmaW5lZDtcbmZ1bmN0aW9uIGdldEN1cnJlbnRUcmFjZUlkKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIGlmIChfb3RlbEFwaSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgdHJ5IHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tcmVxdWlyZS1pbXBvcnRzXG4gICAgICBfb3RlbEFwaSA9IHJlcXVpcmUoJ0BvcGVudGVsZW1ldHJ5L2FwaScpO1xuICAgIH0gY2F0Y2gge1xuICAgICAgX290ZWxBcGkgPSBudWxsO1xuICAgIH1cbiAgfVxuICBpZiAoIV9vdGVsQXBpKSByZXR1cm4gdW5kZWZpbmVkO1xuICB0cnkge1xuICAgIHJldHVybiBfb3RlbEFwaS50cmFjZT8uZ2V0QWN0aXZlU3BhbigpPy5zcGFuQ29udGV4dCgpLnRyYWNlSWQ7XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbn1cblxuLyoqIFdpbnN0b24gZm9ybWF0IHRoYXQgc3RhbXBzIGB0cmFjZV9pZGAgb24gZXZlcnkgZW50cnkgd2hlbiBhbiBPVGVsIHNwYW4gaXMgYWN0aXZlLiAqL1xuY29uc3QgdHJhY2VJZEZvcm1hdCA9IHdpbnN0b24uZm9ybWF0KChpbmZvKSA9PiB7XG4gIGNvbnN0IHRyYWNlSWQgPSBnZXRDdXJyZW50VHJhY2VJZCgpO1xuICBpZiAodHJhY2VJZCkgaW5mby50cmFjZV9pZCA9IHRyYWNlSWQ7XG4gIHJldHVybiBpbmZvO1xufSkoKTtcblxuLyoqXG4gKiBQZXItcmVxdWVzdCBpZGVudGl0eSBzdGFtcGVkIG9udG8gZXZlcnkgbG9nIGVudHJ5LCBzbyBsb2cgbGluZXMgY2FuIGJlXG4gKiBhdHRyaWJ1dGVkIHRvIHRoZSBvcmcgdGhhdCBjYXVzZWQgdGhlbS5cbiAqXG4gKiBgb3JnSWRgIGlzIHRoZSB0ZW5hbmN5IGtleSBmb3IgdGhlIExvZ3Mgc3VyZmFjZTogcHJvbXRhaWwgcm91dGVzIGVhY2ggbGluZSB0b1xuICogaXRzIG9yZydzIExva2kgdGVuYW50IGZyb20gdGhpcyBmaWVsZCAoc2VlIGBkb2NzL29ic2VydmFiaWxpdHktbG9ncy5tZGApLiBBXG4gKiBsaW5lIHdyaXR0ZW4gb3V0c2lkZSBhIHJlcXVlc3Qgc2NvcGUgKHN0YXJ0dXAsIGJhY2tncm91bmQgd29ya2VyLCBtaWdyYXRpb24pXG4gKiBoYXMgbm8gb3JnIGFuZCBsYW5kcyBpbiB0aGUgc3lzYWRtaW4tb25seSBgX2luZnJhYCB0ZW5hbnQg4oCUIGZhaWwtY2xvc2VkLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIExvZ0NvbnRleHQge1xuICBvcmdJZD86IHN0cmluZztcbiAgdXNlcklkPzogc3RyaW5nO1xufVxuXG50eXBlIExvZ0NvbnRleHRQcm92aWRlciA9ICgpID0+IExvZ0NvbnRleHQgfCB1bmRlZmluZWQ7XG5cbmxldCBsb2dDb250ZXh0UHJvdmlkZXI6IExvZ0NvbnRleHRQcm92aWRlciB8IHVuZGVmaW5lZDtcblxuLyoqXG4gKiBSZWdpc3RlciB0aGUgc291cmNlIG9mIHBlci1lbnRyeSB7QGxpbmsgTG9nQ29udGV4dH0uXG4gKlxuICogQSByZWdpc3RyYXRpb24gaG9vayByYXRoZXIgdGhhbiBhIGRpcmVjdCBpbXBvcnQgYmVjYXVzZSB0aGUgcmVxdWVzdCBzY29wZVxuICogbGl2ZXMgaW4gYHBpcGVsaW5lLWRhdGFgJ3MgQXN5bmNMb2NhbFN0b3JhZ2UsIGFuZCBgcGlwZWxpbmUtZGF0YWAgZGVwZW5kcyBvblxuICogdGhpcyBwYWNrYWdlIOKAlCBpbXBvcnRpbmcgaXQgaGVyZSB3b3VsZCBpbnZlcnQgdGhlIGRlcGVuZGVuY3kuIGBhcGktc2VydmVyYCdzXG4gKiB0ZW5hbnQtY29udGV4dCBtb2R1bGUgb3ducyB0aGUgc2luZ2xlIGNhbGwsIHdoaWNoIGNvdmVycyBldmVyeSBzZXJ2aWNlIHRoYXRcbiAqIG1vdW50cyBgd2l0aFRlbmFudENvbnRleHRgIChwbGF0Zm9ybSBpbmNsdWRlZCkuXG4gKlxuICogUGFzcyBgdW5kZWZpbmVkYCB0byB1bnJlZ2lzdGVyICh0ZXN0cykuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXRMb2dDb250ZXh0UHJvdmlkZXIoZm46IExvZ0NvbnRleHRQcm92aWRlciB8IHVuZGVmaW5lZCk6IHZvaWQge1xuICBsb2dDb250ZXh0UHJvdmlkZXIgPSBmbjtcbn1cblxuLyoqIFdpbnN0b24gZm9ybWF0IHN0YW1waW5nIHRoZSBhbWJpZW50IHtAbGluayBMb2dDb250ZXh0fS4gTmV2ZXIgdGhyb3dzOiBhXG4gKiAgcHJvdmlkZXIgdGhhdCBibG93cyB1cCBtdXN0IG5vdCB0YWtlIGRvd24gbG9nZ2luZy4gQW4gZW50cnkgdGhhdCBhbHJlYWR5XG4gKiAgY2FycmllcyBhbiBleHBsaWNpdCBgb3JnSWRgIChhIGNhbGwgc2l0ZSBsb2dnaW5nIGFib3V0IEFOT1RIRVIgb3JnKSBrZWVwcyBpdFxuICogIOKAlCB0aGUgYW1iaWVudCB2YWx1ZSBuZXZlciBvdmVyd3JpdGVzIGEgZGVsaWJlcmF0ZSBvbmUuICovXG5jb25zdCBsb2dDb250ZXh0Rm9ybWF0ID0gd2luc3Rvbi5mb3JtYXQoKGluZm8pID0+IHtcbiAgaWYgKCFsb2dDb250ZXh0UHJvdmlkZXIpIHJldHVybiBpbmZvO1xuICBsZXQgY3R4OiBMb2dDb250ZXh0IHwgdW5kZWZpbmVkO1xuICB0cnkge1xuICAgIGN0eCA9IGxvZ0NvbnRleHRQcm92aWRlcigpO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gaW5mbztcbiAgfVxuICBpZiAoIWN0eCkgcmV0dXJuIGluZm87XG4gIGlmIChjdHgub3JnSWQgJiYgaW5mby5vcmdJZCA9PT0gdW5kZWZpbmVkKSBpbmZvLm9yZ0lkID0gY3R4Lm9yZ0lkO1xuICBpZiAoY3R4LnVzZXJJZCAmJiBpbmZvLnVzZXJJZCA9PT0gdW5kZWZpbmVkKSBpbmZvLnVzZXJJZCA9IGN0eC51c2VySWQ7XG4gIHJldHVybiBpbmZvO1xufSkoKTtcblxuLy8gYFNFTlNJVElWRV9LRVlfUEFUVEVSTmAgKGtleXMpIGFuZCBgbWFza0xpbmVgIChzZWNyZXQtc2hhcGVkIHZhbHVlcykgYm90aCBjb21lXG4vLyBmcm9tIGBzZW5zaXRpdmUtcGF0dGVybnMudHNgLCBzbyB0aGUgbG9nZ2VyLCBwbGF0Zm9ybSdzIGxvZy1yZWFkIHBhdGggYW5kIHRoZVxuLy8gZ2VuZXJhdGVkIHByb210YWlsIGByZXBsYWNlYCBzdGFnZXMgbWFzayB0aGUgc2FtZSB0aGluZ3MuIFNlZSB0aGF0IG1vZHVsZSdzXG4vLyBoZWFkZXIgZm9yIHdoeSBpbmdlc3QtdGltZSBtYXNraW5nIGlzIHRoZSBhdXRob3JpdGF0aXZlIGxheWVyLlxuXG5mdW5jdGlvbiByZWRhY3REZWVwKHZhbHVlOiB1bmtub3duLCBkZXB0aCA9IDApOiB1bmtub3duIHtcbiAgLy8gQ2FwIGRlcHRoIHNvIGEgbWFsaWNpb3VzIC8gcGF0aG9sb2dpY2FsIGNpcmN1bGFyIG9iamVjdCBjYW4ndCBsb2NrIHRoZSBsb2dnZXIuXG4gIC8vIERlZ3JhZGUgdG8gYSBwbGFjZWhvbGRlciByYXRoZXIgdGhhbiB0aGUgcmF3IHN1YnRyZWU6IHJldHVybmluZyBgdmFsdWVgIGhlcmVcbiAgLy8gd291bGQgbG9nIGEgc2VjcmV0LWtleWVkIGZpZWxkIG5lc3RlZCBkZWVwZXIgdGhhbiB0aGUgY2FwIGluIGNsZWFydGV4dC5cbiAgaWYgKGRlcHRoID4gNikgcmV0dXJuICdbVFJVTkNBVEVEXSc7XG4gIGlmICh2YWx1ZSA9PSBudWxsIHx8IHR5cGVvZiB2YWx1ZSAhPT0gJ29iamVjdCcpIHJldHVybiB2YWx1ZTtcbiAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSByZXR1cm4gdmFsdWUubWFwKCh2KSA9PiByZWRhY3REZWVwKHYsIGRlcHRoICsgMSkpO1xuICBjb25zdCBvdXQ6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge307XG4gIGZvciAoY29uc3QgW2ssIHZdIG9mIE9iamVjdC5lbnRyaWVzKHZhbHVlIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KSkge1xuICAgIGlmIChTRU5TSVRJVkVfS0VZX1BBVFRFUk4udGVzdChrKSkge1xuICAgICAgb3V0W2tdID0gUkVEQUNURUQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIG91dFtrXSA9IHJlZGFjdERlZXAodiwgZGVwdGggKyAxKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG91dDtcbn1cblxuLyoqXG4gKiBSZWRhY3Qgc2Vuc2l0aXZlIHZhbHVlcyBmcm9tIGFuIEFSQklUUkFSWSBwYXlsb2FkIHVzaW5nIHRoZSBzYW1lIGtleS1wYXR0ZXJuXG4gKiBydWxlcyB0aGUgV2luc3RvbiBgcmVkYWN0Rm9ybWF0YCBhcHBsaWVzIHRvIGxvZyBtZXRhZGF0YS4gVXNlIHRoaXMgZm9yXG4gKiBwYXlsb2FkcyB0aGF0IHJlYWNoIGFuIG91dHB1dCBjaGFubmVsIE9VVFNJREUgdGhlIGxvZ2dlciDigJQgZS5nLiBhbiBTU0UgZnJhbWVcbiAqIHB1c2hlZCBzdHJhaWdodCB0byBhIGNsaWVudCDigJQgc28gYSBgcGFzc3dvcmRgL2B0b2tlbmAvYHNlY3JldGAgZmllbGQgaXNcbiAqIG1hc2tlZCB0aGVyZSB0b28uIEEgdG9wLWxldmVsIHNlbnNpdGl2ZSBrZXkgaXMgbWFza2VkOyBuZXN0ZWQgb2JqZWN0cy9hcnJheXNcbiAqIGFyZSB3YWxrZWQgKGRlcHRoLWNhcHBlZCkgZXhhY3RseSBhcyBpbiB0aGUgbG9nZ2VyLiBSZXR1cm5zIGEgcmVkYWN0ZWQgQ09QWTtcbiAqIHByaW1pdGl2ZXMgcGFzcyB0aHJvdWdoIHVuY2hhbmdlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlZGFjdFNlbnNpdGl2ZSh2YWx1ZTogdW5rbm93bik6IHVua25vd24ge1xuICBpZiAodmFsdWUgPT0gbnVsbCB8fCB0eXBlb2YgdmFsdWUgIT09ICdvYmplY3QnKSByZXR1cm4gdmFsdWU7XG4gIHJldHVybiByZWRhY3REZWVwKHZhbHVlKTtcbn1cblxuLyoqIFdpbnN0b24gZm9ybWF0IHRoYXQgbWFza3MgdmFsdWVzIGZvciBzZW5zaXRpdmUtbG9va2luZyBrZXlzIChQSUkgLyBzZWNyZXRzKS5cbiAqIE11dGF0ZXMgYGluZm9gIGluIHBsYWNlIHNvIHdpbnN0b24ncyBpbnRlcm5hbCBTeW1ib2wta2V5ZWQgcHJvcGVydGllc1xuICogKGBTeW1ib2wuZm9yKCdsZXZlbCcpYCwgYFN5bWJvbC5mb3IoJ21lc3NhZ2UnKWAsIGBTeW1ib2wuZm9yKCdzcGxhdCcpYCkgc3Vydml2ZVxuICog4oCUIHJlYnVpbGRpbmcgYSBmcmVzaCBvYmplY3QgdmlhIGBPYmplY3QuZW50cmllc2Avc3ByZWFkIHNpbGVudGx5IHN0cmlwcyB0aGVtLFxuICogd2hpY2ggbWFrZXMgdGhlIENvbnNvbGUgdHJhbnNwb3J0IGRyb3AgZXZlcnkgZW50cnkgd2l0aG91dCB3YXJuaW5nLiAqL1xuLyoqIEtleXMgdGhlIHJlZGFjdG9yIG11c3QgbGVhdmUgYWxvbmUuIGBvcmdJZGAvYHVzZXJJZGAgYXJlIGxvYWQtYmVhcmluZzogcHJvbXRhaWxcbiAqICByb3V0ZXMgYSBsaW5lIHRvIGl0cyBMb2tpIHRlbmFudCBieSBgb3JnSWRgLCBzbyByZWRhY3RpbmcgaXQgd291bGQgbWlzZmlsZSB0aGVcbiAqICBsaW5lIGludG8gdGhlIHN5c2FkbWluLW9ubHkgYF9pbmZyYWAgdGVuYW50IGluc3RlYWQgb2YgdGhlIG9yZydzLiBMaXN0ZWQgaGVyZVxuICogIChub3QgbWVyZWx5IFwiZG9lc24ndCBtYXRjaCB0aGUgcGF0dGVybiB0b2RheVwiKSBzbyBhIGZ1dHVyZSBwYXR0ZXJuIGVkaXQgY2FuJ3RcbiAqICBzaWxlbnRseSBicmVhayBsb2cgdGVuYW5jeS4gKi9cbmNvbnN0IFBSRVNFUlZFRF9LRVlTID0gbmV3IFNldChbJ2xldmVsJywgJ21lc3NhZ2UnLCAndGltZXN0YW1wJywgJ3NlcnZpY2UnLCAndHJhY2VfaWQnLCAnb3JnSWQnLCAndXNlcklkJ10pO1xuY29uc3QgcmVkYWN0Rm9ybWF0ID0gd2luc3Rvbi5mb3JtYXQoKGluZm8pID0+IHtcbiAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMoaW5mbykpIHtcbiAgICBpZiAoUFJFU0VSVkVEX0tFWVMuaGFzKGtleSkpIGNvbnRpbnVlO1xuICAgIGlmIChTRU5TSVRJVkVfS0VZX1BBVFRFUk4udGVzdChrZXkpKSB7XG4gICAgICBpbmZvW2tleV0gPSBSRURBQ1RFRDtcbiAgICB9IGVsc2Uge1xuICAgICAgaW5mb1trZXldID0gcmVkYWN0RGVlcChpbmZvW2tleV0pO1xuICAgIH1cbiAgfVxuICByZXR1cm4gaW5mbztcbn0pKCk7XG5cbi8qKlxuICogV2luc3RvbiBmb3JtYXQgdGhhdCBtYXNrcyBzZWNyZXQtc2hhcGVkIFZBTFVFUyBpbiB0aGUgcmVuZGVyZWQgbWVzc2FnZSBhbmQgaW5cbiAqIGFueSBzdHJpbmcgbWV0YWRhdGEuXG4gKlxuICogYHJlZGFjdEZvcm1hdGAgYWJvdmUgb25seSBtYXNrcyB2YWx1ZXMgd2hvc2UgS0VZIGxvb2tzIHNlbnNpdGl2ZS4gVGhhdCBtaXNzZXNcbiAqIGEgc2VjcmV0IGVtYmVkZGVkIGluIGZyZWUgdGV4dCDigJQgYGxvZ2dlci5pbmZvKCdQT1NUIC94P3Rva2VuPWFiYycpYCDigJQgd2hpY2hcbiAqIG1hdHRlcnMgbW9yZSB0aGFuIGl0IGxvb2tzOiBwcm9tdGFpbCdzIGBvdXRwdXQ6IHsgc291cmNlOiBtc2cgfWAgc3RhZ2UgbWFrZXNcbiAqIHRoZSBtZXNzYWdlIHN0cmluZyB0aGUgZW50aXJlIHNoaXBwZWQgbG9nIGxpbmUsIHNvIGFuIHVubWFza2VkIG1lc3NhZ2UgaXMgYW5cbiAqIHVubWFza2VkIGxvZy4gTXV0YXRlcyBpbiBwbGFjZSB0byBwcmVzZXJ2ZSB3aW5zdG9uJ3MgU3ltYm9sLWtleWVkIGludGVybmFscyxcbiAqIGV4YWN0bHkgYXMgYHJlZGFjdEZvcm1hdGAgZG9lcy5cbiAqL1xuY29uc3QgbWFza0Zvcm1hdCA9IHdpbnN0b24uZm9ybWF0KChpbmZvKSA9PiB7XG4gIGlmICh0eXBlb2YgaW5mby5tZXNzYWdlID09PSAnc3RyaW5nJykgaW5mby5tZXNzYWdlID0gbWFza0xpbmUoaW5mby5tZXNzYWdlKTtcbiAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMoaW5mbykpIHtcbiAgICBpZiAoa2V5ID09PSAnbWVzc2FnZScpIGNvbnRpbnVlO1xuICAgIGNvbnN0IHZhbHVlID0gaW5mb1trZXldO1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSBpbmZvW2tleV0gPSBtYXNrTGluZSh2YWx1ZSk7XG4gIH1cbiAgcmV0dXJuIGluZm87XG59KSgpO1xuXG4vKipcbiAqIENyZWF0ZSBhIGxvZ2dlciBpbnN0YW5jZSBmb3IgYSBzZXJ2aWNlLlxuICpcbiAqIFdoZW4gTE9HX0ZPUk1BVD1qc29uIChkZWZhdWx0KSwgb3V0cHV0cyBzdHJ1Y3R1cmVkIEpTT04gZm9yIExva2kgaW5nZXN0aW9uOlxuICogICB7XCJsZXZlbFwiOlwiaW5mb1wiLFwibWVzc2FnZVwiOlwiU2VydmVyIHN0YXJ0ZWRcIixcInNlcnZpY2VcIjpcInBpcGVsaW5lXCIsXCJ0aW1lc3RhbXBcIjpcIi4uLlwifVxuICpcbiAqIFdoZW4gTE9HX0ZPUk1BVD10ZXh0LCBvdXRwdXRzIGNvbG9yaXplZCBodW1hbi1yZWFkYWJsZSBmb3JtYXQ6XG4gKiAgIDIwMjYtMDItMTNUMTA6MzA6MDAuMDAwWiBpbmZvIFtwaXBlbGluZV0gU2VydmVyIHN0YXJ0ZWRcbiAqXG4gKiBAcGFyYW0gc2VydmljZU5hbWUgLSBOYW1lIG9mIHRoZSBzZXJ2aWNlIGZvciBsb2cgaWRlbnRpZmljYXRpb25cbiAqIEByZXR1cm5zIENvbmZpZ3VyZWQgV2luc3RvbiBsb2dnZXIgaW5zdGFuY2VcbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogaW1wb3J0IHsgY3JlYXRlTG9nZ2VyIH0gZnJvbSAnQHBpcGVsaW5lLWJ1aWxkZXIvYXBpLWNvcmUnO1xuICpcbiAqIGNvbnN0IGxvZ2dlciA9IGNyZWF0ZUxvZ2dlcignZ2V0LXBsdWdpbicpO1xuICogbG9nZ2VyLmluZm8oJ1NlcnZlciBzdGFydGVkJywgeyBwb3J0OiAzMDAwIH0pO1xuICogbG9nZ2VyLmVycm9yKCdEYXRhYmFzZSBlcnJvcicsIHsgZXJyb3I6IGVyci5tZXNzYWdlIH0pO1xuICogYGBgXG4gKi9cbi8qKiBUaGUgbG9nZ2VyIGBjcmVhdGVMb2dnZXJgIHJldHVybnMuIEV4cG9ydGVkIHNvIGNvbnN1bWVycyBjYW4gYW5ub3RhdGUgZXhwb3J0ZWRcbiAqICBsb2dnZXJzIHdpdGhvdXQgZGVwZW5kaW5nIG9uIHdpbnN0b24gdGhlbXNlbHZlcy4gKi9cbmV4cG9ydCB0eXBlIExvZ2dlciA9IHdpbnN0b24uTG9nZ2VyO1xuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlTG9nZ2VyKHNlcnZpY2VOYW1lOiBzdHJpbmcpOiBMb2dnZXIge1xuICBjb25zdCBsb2dMZXZlbCA9IHByb2Nlc3MuZW52LkxPR19MRVZFTCB8fCAnaW5mbyc7XG4gIGNvbnN0IGxvZ0Zvcm1hdCA9IHByb2Nlc3MuZW52LkxPR19GT1JNQVQgfHwgJ2pzb24nO1xuICBpZiAobG9nRm9ybWF0ICE9PSAnanNvbicgJiYgbG9nRm9ybWF0ICE9PSAndGV4dCcpIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZSAtLSBzdGFydHVwIHdhcm5pbmcgYmVmb3JlIGxvZ2dlciBpcyBhdmFpbGFibGVcbiAgICBjb25zb2xlLndhcm4oYEludmFsaWQgTE9HX0ZPUk1BVD1cIiR7bG9nRm9ybWF0fVwiLCBleHBlY3RlZCBcImpzb25cIiBvciBcInRleHRcIi4gRGVmYXVsdGluZyB0byBcImpzb25cIi5gKTtcbiAgfVxuICBjb25zdCB1c2VKc29uID0gbG9nRm9ybWF0ICE9PSAndGV4dCc7XG5cbiAgLy8gT3JkZXIgbWF0dGVyczogcmVkYWN0IEJFRk9SRSBzZXJpYWxpemF0aW9uIHNvIG1hc2tlZCBrZXlzIG5ldmVyIHJlYWNoXG4gIC8vIHRoZSBvdXRwdXQuIHRyYWNlX2lkIGFuZCB0aGUgb3JnL3VzZXIgY29udGV4dCBhcmUgc3RhbXBlZCBmaXJzdCBzbyB0aGV5XG4gIC8vIHN1cnZpdmUgcmVkYWN0aW9uIChib3RoIGFyZSBpbiBQUkVTRVJWRURfS0VZUyksIHRoZW4gYG1hc2tGb3JtYXRgIHNjcnVic1xuICAvLyBzZWNyZXQtc2hhcGVkIFZBTFVFUyBvdXQgb2YgdGhlIHJlbmRlcmVkIG1lc3NhZ2Ug4oCUIHRoZSBrZXktYmFzZWRcbiAgLy8gYHJlZGFjdEZvcm1hdGAgb25seSBjb3ZlcnMgbWV0YWRhdGEga2V5cywgYW5kIGFmdGVyIHByb210YWlsJ3NcbiAgLy8gYG91dHB1dDogc291cmNlOiBtc2dgIHJld3JpdGUgdGhlIHNoaXBwZWQgbGluZSBJUyB0aGUgbWVzc2FnZSBzdHJpbmcuXG4gIGNvbnN0IGJhc2VGb3JtYXRzID0gW1xuICAgIGVycm9ycyh7IHN0YWNrOiB0cnVlIH0pLFxuICAgIHRpbWVzdGFtcCh7IGZvcm1hdDogJ1lZWVktTU0tRERUSEg6bW06c3MuU1NTWicgfSksXG4gICAgdHJhY2VJZEZvcm1hdCxcbiAgICBsb2dDb250ZXh0Rm9ybWF0LFxuICAgIHJlZGFjdEZvcm1hdCxcbiAgICBtYXNrRm9ybWF0LFxuICBdO1xuXG4gIGlmICh1c2VKc29uKSB7XG4gICAgcmV0dXJuIHdpbnN0b24uY3JlYXRlTG9nZ2VyKHtcbiAgICAgIGxldmVsOiBsb2dMZXZlbCxcbiAgICAgIGRlZmF1bHRNZXRhOiB7IHNlcnZpY2U6IHNlcnZpY2VOYW1lIH0sXG4gICAgICBmb3JtYXQ6IGNvbWJpbmUoLi4uYmFzZUZvcm1hdHMsIGpzb24oKSksXG4gICAgICB0cmFuc3BvcnRzOiBbbmV3IHdpbnN0b24udHJhbnNwb3J0cy5Db25zb2xlKCldLFxuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIHdpbnN0b24uY3JlYXRlTG9nZ2VyKHtcbiAgICBsZXZlbDogbG9nTGV2ZWwsXG4gICAgZGVmYXVsdE1ldGE6IHsgc2VydmljZTogc2VydmljZU5hbWUgfSxcbiAgICBmb3JtYXQ6IGNvbWJpbmUoLi4uYmFzZUZvcm1hdHMpLFxuICAgIHRyYW5zcG9ydHM6IFtcbiAgICAgIG5ldyB3aW5zdG9uLnRyYW5zcG9ydHMuQ29uc29sZSh7XG4gICAgICAgIGZvcm1hdDogY29tYmluZShjb2xvcml6ZSgpLCBjb25zb2xlRm9ybWF0KSxcbiAgICAgIH0pLFxuICAgIF0sXG4gIH0pO1xufVxuXG4vKipcbiAqIERlZmF1bHQgbG9nZ2VyIGluc3RhbmNlIChzZXJ2aWNlIG5hbWUgZnJvbSBTRVJWSUNFX05BTUUgZW52IHZhciBvciAnYXBpJykuXG4gKi9cbmV4cG9ydCBjb25zdCBsb2dnZXIgPSBjcmVhdGVMb2dnZXIocHJvY2Vzcy5lbnYuU0VSVklDRV9OQU1FIHx8ICdhcGknKTtcblxuZXhwb3J0IGRlZmF1bHQgbG9nZ2VyO1xuIl19
|
|
221
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nZ2VyLmpzIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvbG9nZ2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7QUFFdEMsT0FBTyxPQUFPLE1BQU0sU0FBUyxDQUFDO0FBQzlCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFcEYsTUFBTSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQztBQUU5RSwwRUFBMEU7QUFDMUUsNEVBQTRFO0FBQzVFLDZFQUE2RTtBQUM3RSx1REFBdUQ7QUFDdkQsTUFBTSxPQUFPLEdBQUcsaUJBQWlCLENBQUMsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFFbkQ7O0dBRUc7QUFDSCxNQUFNLGFBQWEsR0FBRyxNQUFNLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxHQUFHLElBQUksRUFBRSxFQUFFLEVBQUU7SUFDL0UsTUFBTSxXQUFXLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLE9BQU8sR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDbEQsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDM0UsT0FBTyxHQUFHLFNBQVMsSUFBSSxLQUFLLElBQUksV0FBVyxJQUFJLE9BQU8sR0FBRyxPQUFPLEVBQUUsQ0FBQztBQUNyRSxDQUFDLENB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b3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuaW1wb3J0IHdpbnN0b24gZnJvbSAnd2luc3Rvbic7XG5pbXBvcnQgeyBzYWZlQ3JlYXRlUmVxdWlyZSB9IGZyb20gJy4vc2FmZS1yZXF1aXJlLmpzJztcbmltcG9ydCB7IFNFTlNJVElWRV9LRVlfUEFUVEVSTiwgUkVEQUNURUQsIG1hc2tMaW5lIH0gZnJvbSAnLi9zZW5zaXRpdmUtcGF0dGVybnMuanMnO1xuXG5jb25zdCB7IGNvbWJpbmUsIHRpbWVzdGFtcCwgcHJpbnRmLCBjb2xvcml6ZSwgZXJyb3JzLCBqc29uIH0gPSB3aW5zdG9uLmZvcm1hdDtcblxuLy8gRVNNIGhhcyBubyBnbG9iYWwgYHJlcXVpcmVgOyBzYWZlQ3JlYXRlUmVxdWlyZSBlbmFibGVzIHRoZSBzeW5jaHJvbm91cyxcbi8vIE9QVElPTkFMIGxhenktbG9hZCBvZiBAb3BlbnRlbGVtZXRyeS9hcGkgaW4gZ2V0Q3VycmVudFRyYWNlSWQoKSBiZWxvdyDigJQgYVxuLy8gd2luc3RvbiBmb3JtYXQgY2FsbGJhY2sgbXVzdCBzdGF5IHN5bmNocm9ub3VzLCBzbyBhIGR5bmFtaWMgaW1wb3J0KCkgd29uJ3Rcbi8vIHdvcmsgdGhlcmUuIChDSlMtYnVuZGxlIHNhZmUg4oCUIHNlZSBzYWZlLXJlcXVpcmUudHMuKVxuY29uc3QgcmVxdWlyZSA9IHNhZmVDcmVhdGVSZXF1aXJlKGltcG9ydC5tZXRhLnVybCk7XG5cbi8qKlxuICogQ3VzdG9tIGxvZyBmb3JtYXQgZm9yIGh1bWFuLXJlYWRhYmxlIGNvbnNvbGUgb3V0cHV0LlxuICovXG5jb25zdCBjb25zb2xlRm9ybWF0ID0gcHJpbnRmKCh7IGxldmVsLCBtZXNzYWdlLCB0aW1lc3RhbXAsIHNlcnZpY2UsIC4uLm1ldGEgfSkgPT4ge1xuICBjb25zdCBzZXJ2aWNlTmFtZSA9IHNlcnZpY2UgPyBgWyR7c2VydmljZX1dYCA6ICcnO1xuICBjb25zdCBtZXRhU3RyID0gT2JqZWN0LmtleXMobWV0YSkubGVuZ3RoID8gYCAke0pTT04uc3RyaW5naWZ5KG1ldGEpfWAgOiAnJztcbiAgcmV0dXJuIGAke3RpbWVzdGFtcH0gJHtsZXZlbH0gJHtzZXJ2aWNlTmFtZX0gJHttZXNzYWdlfSR7bWV0YVN0cn1gO1xufSk7XG5cbi8qKlxuICogTGF6eSBsb29rdXAgb2YgT3BlblRlbGVtZXRyeSB0cmFjZSBJRC4gUmV0dXJucyB1bmRlZmluZWQgd2hlbiB0cmFjaW5nXG4gKiBpc24ndCBpbml0aWFsaXplZCBvciBAb3BlbnRlbGVtZXRyeS9hcGkgaXNuJ3QgaW5zdGFsbGVkIOKAlCBuZXZlciB0aHJvd3MuXG4gKiBDaGVhcDogYSBzaW5nbGUgcHJvcGVydHkgcmVhZCBhZnRlciB0aGUgZmlyc3Qgc3VjY2Vzc2Z1bCBsb29rdXAuXG4gKi9cbmxldCBfb3RlbEFwaTogeyB0cmFjZT86IHsgZ2V0QWN0aXZlU3BhbigpOiB7IHNwYW5Db250ZXh0KCk6IHsgdHJhY2VJZDogc3RyaW5nIH0gfSB8IHVuZGVmaW5lZCB9IH0gfCBudWxsIHwgdW5kZWZpbmVkO1xuZnVuY3Rpb24gZ2V0Q3VycmVudFRyYWNlSWQoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgaWYgKF9vdGVsQXBpID09PSB1bmRlZmluZWQpIHtcbiAgICB0cnkge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1yZXF1aXJlLWltcG9ydHNcbiAgICAgIF9vdGVsQXBpID0gcmVxdWlyZSgnQG9wZW50ZWxlbWV0cnkvYXBpJyk7XG4gICAgfSBjYXRjaCB7XG4gICAgICBfb3RlbEFwaSA9IG51bGw7XG4gICAgfVxuICB9XG4gIGlmICghX290ZWxBcGkpIHJldHVybiB1bmRlZmluZWQ7XG4gIHRyeSB7XG4gICAgcmV0dXJuIF9vdGVsQXBpLnRyYWNlPy5nZXRBY3RpdmVTcGFuKCk/LnNwYW5Db250ZXh0KCkudHJhY2VJZDtcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxufVxuXG4vKiogV2luc3RvbiBmb3JtYXQgdGhhdCBzdGFtcHMgYHRyYWNlX2lkYCBvbiBldmVyeSBlbnRyeSB3aGVuIGFuIE9UZWwgc3BhbiBpcyBhY3RpdmUuICovXG5jb25zdCB0cmFjZUlkRm9ybWF0ID0gd2luc3Rvbi5mb3JtYXQoKGluZm8pID0+IHtcbiAgY29uc3QgdHJhY2VJZCA9IGdldEN1cnJlbnRUcmFjZUlkKCk7XG4gIGlmICh0cmFjZUlkKSBpbmZvLnRyYWNlX2lkID0gdHJhY2VJZDtcbiAgcmV0dXJuIGluZm87XG59KSgpO1xuXG4vKipcbiAqIFBlci1yZXF1ZXN0IGlkZW50aXR5IHN0YW1wZWQgb250byBldmVyeSBsb2cgZW50cnksIHNvIGxvZyBsaW5lcyBjYW4gYmVcbiAqIGF0dHJpYnV0ZWQgdG8gdGhlIG9yZyB0aGF0IGNhdXNlZCB0aGVtLlxuICpcbiAqIGBvcmdJZGAgaXMgdGhlIHRlbmFuY3kga2V5IGZvciB0aGUgTG9ncyBzdXJmYWNlOiBwcm9tdGFpbCByb3V0ZXMgZWFjaCBsaW5lIHRvXG4gKiBpdHMgb3JnJ3MgTG9raSB0ZW5hbnQgZnJvbSB0aGlzIGZpZWxkIChzZWUgYGRvY3Mvb2JzZXJ2YWJpbGl0eS1sb2dzLm1kYCkuIEFcbiAqIGxpbmUgd3JpdHRlbiBvdXRzaWRlIGEgcmVxdWVzdCBzY29wZSAoc3RhcnR1cCwgYmFja2dyb3VuZCB3b3JrZXIsIG1pZ3JhdGlvbilcbiAqIGhhcyBubyBvcmcgYW5kIGxhbmRzIGluIHRoZSBzeXNhZG1pbi1vbmx5IGBfaW5mcmFgIHRlbmFudCDigJQgZmFpbC1jbG9zZWQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTG9nQ29udGV4dCB7XG4gIG9yZ0lkPzogc3RyaW5nO1xuICB1c2VySWQ/OiBzdHJpbmc7XG59XG5cbnR5cGUgTG9nQ29udGV4dFByb3ZpZGVyID0gKCkgPT4gTG9nQ29udGV4dCB8IHVuZGVmaW5lZDtcblxubGV0IGxvZ0NvbnRleHRQcm92aWRlcjogTG9nQ29udGV4dFByb3ZpZGVyIHwgdW5kZWZpbmVkO1xuXG4vKipcbiAqIFJlZ2lzdGVyIHRoZSBzb3VyY2Ugb2YgcGVyLWVudHJ5IHtAbGluayBMb2dDb250ZXh0fS5cbiAqXG4gKiBBIHJlZ2lzdHJhdGlvbiBob29rIHJhdGhlciB0aGFuIGEgZGlyZWN0IGltcG9ydCBiZWNhdXNlIHRoZSByZXF1ZXN0IHNjb3BlXG4gKiBsaXZlcyBpbiBgcGlwZWxpbmUtZGF0YWAncyBBc3luY0xvY2FsU3RvcmFnZSwgYW5kIGBwaXBlbGluZS1kYXRhYCBkZXBlbmRzIG9uXG4gKiB0aGlzIHBhY2thZ2Ug4oCUIGltcG9ydGluZyBpdCBoZXJlIHdvdWxkIGludmVydCB0aGUgZGVwZW5kZW5jeS4gYGFwaS1zZXJ2ZXJgJ3NcbiAqIHRlbmFudC1jb250ZXh0IG1vZHVsZSBvd25zIHRoZSBzaW5nbGUgY2FsbCwgd2hpY2ggY292ZXJzIGV2ZXJ5IHNlcnZpY2UgdGhhdFxuICogbW91bnRzIGB3aXRoVGVuYW50Q29udGV4dGAgKHBsYXRmb3JtIGluY2x1ZGVkKS5cbiAqXG4gKiBQYXNzIGB1bmRlZmluZWRgIHRvIHVucmVnaXN0ZXIgKHRlc3RzKS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNldExvZ0NvbnRleHRQcm92aWRlcihmbjogTG9nQ29udGV4dFByb3ZpZGVyIHwgdW5kZWZpbmVkKTogdm9pZCB7XG4gIGxvZ0NvbnRleHRQcm92aWRlciA9IGZuO1xufVxuXG4vKiogV2luc3RvbiBmb3JtYXQgc3RhbXBpbmcgdGhlIGFtYmllbnQge0BsaW5rIExvZ0NvbnRleHR9LiBOZXZlciB0aHJvd3M6IGFcbiAqICBwcm92aWRlciB0aGF0IGJsb3dzIHVwIG11c3Qgbm90IHRha2UgZG93biBsb2dnaW5nLiBBbiBlbnRyeSB0aGF0IGFscmVhZHlcbiAqICBjYXJyaWVzIGFuIGV4cGxpY2l0IGBvcmdJZGAgKGEgY2FsbCBzaXRlIGxvZ2dpbmcgYWJvdXQgQU5PVEhFUiBvcmcpIGtlZXBzIGl0XG4gKiAg4oCUIHRoZSBhbWJpZW50IHZhbHVlIG5ldmVyIG92ZXJ3cml0ZXMgYSBkZWxpYmVyYXRlIG9uZS4gKi9cbmNvbnN0IGxvZ0NvbnRleHRGb3JtYXQgPSB3aW5zdG9uLmZvcm1hdCgoaW5mbykgPT4ge1xuICBpZiAoIWxvZ0NvbnRleHRQcm92aWRlcikgcmV0dXJuIGluZm87XG4gIGxldCBjdHg6IExvZ0NvbnRleHQgfCB1bmRlZmluZWQ7XG4gIHRyeSB7XG4gICAgY3R4ID0gbG9nQ29udGV4dFByb3ZpZGVyKCk7XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBpbmZvO1xuICB9XG4gIGlmICghY3R4KSByZXR1cm4gaW5mbztcbiAgaWYgKGN0eC5vcmdJZCAmJiBpbmZvLm9yZ0lkID09PSB1bmRlZmluZWQpIGluZm8ub3JnSWQgPSBjdHgub3JnSWQ7XG4gIGlmIChjdHgudXNlcklkICYmIGluZm8udXNlcklkID09PSB1bmRlZmluZWQpIGluZm8udXNlcklkID0gY3R4LnVzZXJJZDtcbiAgcmV0dXJuIGluZm87XG59KSgpO1xuXG4vLyBgU0VOU0lUSVZFX0tFWV9QQVRURVJOYCAoa2V5cykgYW5kIGBtYXNrTGluZWAgKHNlY3JldC1zaGFwZWQgdmFsdWVzKSBib3RoIGNvbWVcbi8vIGZyb20gYHNlbnNpdGl2ZS1wYXR0ZXJucy50c2AsIHNvIHRoZSBsb2dnZXIsIHBsYXRmb3JtJ3MgbG9nLXJlYWQgcGF0aCBhbmQgdGhlXG4vLyBnZW5lcmF0ZWQgcHJvbXRhaWwgYHJlcGxhY2VgIHN0YWdlcyBtYXNrIHRoZSBzYW1lIHRoaW5ncy4gU2VlIHRoYXQgbW9kdWxlJ3Ncbi8vIGhlYWRlciBmb3Igd2h5IGluZ2VzdC10aW1lIG1hc2tpbmcgaXMgdGhlIGF1dGhvcml0YXRpdmUgbGF5ZXIuXG5cbmZ1bmN0aW9uIHJlZGFjdERlZXAodmFsdWU6IHVua25vd24sIGRlcHRoID0gMCk6IHVua25vd24ge1xuICAvLyBDYXAgZGVwdGggc28gYSBtYWxpY2lvdXMgLyBwYXRob2xvZ2ljYWwgY2lyY3VsYXIgb2JqZWN0IGNhbid0IGxvY2sgdGhlIGxvZ2dlci5cbiAgLy8gRGVncmFkZSB0byBhIHBsYWNlaG9sZGVyIHJhdGhlciB0aGFuIHRoZSByYXcgc3VidHJlZTogcmV0dXJuaW5nIGB2YWx1ZWAgaGVyZVxuICAvLyB3b3VsZCBsb2cgYSBzZWNyZXQta2V5ZWQgZmllbGQgbmVzdGVkIGRlZXBlciB0aGFuIHRoZSBjYXAgaW4gY2xlYXJ0ZXh0LlxuICBpZiAoZGVwdGggPiA2KSByZXR1cm4gJ1tUUlVOQ0FURURdJztcbiAgaWYgKHZhbHVlID09IG51bGwgfHwgdHlwZW9mIHZhbHVlICE9PSAnb2JqZWN0JykgcmV0dXJuIHZhbHVlO1xuICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHJldHVybiB2YWx1ZS5tYXAoKHYpID0+IHJlZGFjdERlZXAodiwgZGVwdGggKyAxKSk7XG4gIGNvbnN0IG91dDogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7fTtcbiAgZm9yIChjb25zdCBbaywgdl0gb2YgT2JqZWN0LmVudHJpZXModmFsdWUgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pKSB7XG4gICAgaWYgKFNFTlNJVElWRV9LRVlfUEFUVEVSTi50ZXN0KGspKSB7XG4gICAgICBvdXRba10gPSBSRURBQ1RFRDtcbiAgICB9IGVsc2Uge1xuICAgICAgb3V0W2tdID0gcmVkYWN0RGVlcCh2LCBkZXB0aCArIDEpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gb3V0O1xufVxuXG4vKipcbiAqIFJlZGFjdCBzZW5zaXRpdmUgdmFsdWVzIGZyb20gYW4gQVJCSVRSQVJZIHBheWxvYWQgdXNpbmcgdGhlIHNhbWUga2V5LXBhdHRlcm5cbiAqIHJ1bGVzIHRoZSBXaW5zdG9uIGByZWRhY3RGb3JtYXRgIGFwcGxpZXMgdG8gbG9nIG1ldGFkYXRhLiBVc2UgdGhpcyBmb3JcbiAqIHBheWxvYWRzIHRoYXQgcmVhY2ggYW4gb3V0cHV0IGNoYW5uZWwgT1VUU0lERSB0aGUgbG9nZ2VyIOKAlCBlLmcuIGFuIFNTRSBmcmFtZVxuICogcHVzaGVkIHN0cmFpZ2h0IHRvIGEgY2xpZW50IOKAlCBzbyBhIGBwYXNzd29yZGAvYHRva2VuYC9gc2VjcmV0YCBmaWVsZCBpc1xuICogbWFza2VkIHRoZXJlIHRvby4gQSB0b3AtbGV2ZWwgc2Vuc2l0aXZlIGtleSBpcyBtYXNrZWQ7IG5lc3RlZCBvYmplY3RzL2FycmF5c1xuICogYXJlIHdhbGtlZCAoZGVwdGgtY2FwcGVkKSBleGFjdGx5IGFzIGluIHRoZSBsb2dnZXIuIFJldHVybnMgYSByZWRhY3RlZCBDT1BZO1xuICogcHJpbWl0aXZlcyBwYXNzIHRocm91Z2ggdW5jaGFuZ2VkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVkYWN0U2Vuc2l0aXZlKHZhbHVlOiB1bmtub3duKTogdW5rbm93biB7XG4gIGlmICh2YWx1ZSA9PSBudWxsIHx8IHR5cGVvZiB2YWx1ZSAhPT0gJ29iamVjdCcpIHJldHVybiB2YWx1ZTtcbiAgcmV0dXJuIHJlZGFjdERlZXAodmFsdWUpO1xufVxuXG4vKiogV2luc3RvbiBmb3JtYXQgdGhhdCBtYXNrcyB2YWx1ZXMgZm9yIHNlbnNpdGl2ZS1sb29raW5nIGtleXMgKFBJSSAvIHNlY3JldHMpLlxuICogTXV0YXRlcyBgaW5mb2AgaW4gcGxhY2Ugc28gd2luc3RvbidzIGludGVybmFsIFN5bWJvbC1rZXllZCBwcm9wZXJ0aWVzXG4gKiAoYFN5bWJvbC5mb3IoJ2xldmVsJylgLCBgU3ltYm9sLmZvcignbWVzc2FnZScpYCwgYFN5bWJvbC5mb3IoJ3NwbGF0JylgKSBzdXJ2aXZlXG4gKiDigJQgcmVidWlsZGluZyBhIGZyZXNoIG9iamVjdCB2aWEgYE9iamVjdC5lbnRyaWVzYC9zcHJlYWQgc2lsZW50bHkgc3RyaXBzIHRoZW0sXG4gKiB3aGljaCBtYWtlcyB0aGUgQ29uc29sZSB0cmFuc3BvcnQgZHJvcCBldmVyeSBlbnRyeSB3aXRob3V0IHdhcm5pbmcuICovXG4vKiogS2V5cyB0aGUgcmVkYWN0b3IgbXVzdCBsZWF2ZSBhbG9uZS4gYG9yZ0lkYC9gdXNlcklkYCBhcmUgbG9hZC1iZWFyaW5nOiBwcm9tdGFpbFxuICogIHJvdXRlcyBhIGxpbmUgdG8gaXRzIExva2kgdGVuYW50IGJ5IGBvcmdJZGAsIHNvIHJlZGFjdGluZyBpdCB3b3VsZCBtaXNmaWxlIHRoZVxuICogIGxpbmUgaW50byB0aGUgc3lzYWRtaW4tb25seSBgX2luZnJhYCB0ZW5hbnQgaW5zdGVhZCBvZiB0aGUgb3JnJ3MuIExpc3RlZCBoZXJlXG4gKiAgKG5vdCBtZXJlbHkgXCJkb2Vzbid0IG1hdGNoIHRoZSBwYXR0ZXJuIHRvZGF5XCIpIHNvIGEgZnV0dXJlIHBhdHRlcm4gZWRpdCBjYW4ndFxuICogIHNpbGVudGx5IGJyZWFrIGxvZyB0ZW5hbmN5LiAqL1xuY29uc3QgUFJFU0VSVkVEX0tFWVMgPSBuZXcgU2V0KFsnbGV2ZWwnLCAnbWVzc2FnZScsICd0aW1lc3RhbXAnLCAnc2VydmljZScsICd0cmFjZV9pZCcsICdvcmdJZCcsICd1c2VySWQnXSk7XG5jb25zdCByZWRhY3RGb3JtYXQgPSB3aW5zdG9uLmZvcm1hdCgoaW5mbykgPT4ge1xuICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhpbmZvKSkge1xuICAgIGlmIChQUkVTRVJWRURfS0VZUy5oYXMoa2V5KSkgY29udGludWU7XG4gICAgaWYgKFNFTlNJVElWRV9LRVlfUEFUVEVSTi50ZXN0KGtleSkpIHtcbiAgICAgIGluZm9ba2V5XSA9IFJFREFDVEVEO1xuICAgIH0gZWxzZSB7XG4gICAgICBpbmZvW2tleV0gPSByZWRhY3REZWVwKGluZm9ba2V5XSk7XG4gICAgfVxuICB9XG4gIHJldHVybiBpbmZvO1xufSkoKTtcblxuLyoqXG4gKiBXaW5zdG9uIGZvcm1hdCB0aGF0IG1hc2tzIHNlY3JldC1zaGFwZWQgVkFMVUVTIGluIHRoZSByZW5kZXJlZCBtZXNzYWdlIGFuZCBpblxuICogYW55IHN0cmluZyBtZXRhZGF0YS5cbiAqXG4gKiBgcmVkYWN0Rm9ybWF0YCBhYm92ZSBvbmx5IG1hc2tzIHZhbHVlcyB3aG9zZSBLRVkgbG9va3Mgc2Vuc2l0aXZlLiBUaGF0IG1pc3Nlc1xuICogYSBzZWNyZXQgZW1iZWRkZWQgaW4gZnJlZSB0ZXh0IOKAlCBgbG9nZ2VyLmluZm8oJ1BPU1QgL3g/dG9rZW49YWJjJylgIOKAlCB3aGljaFxuICogbWF0dGVycyBtb3JlIHRoYW4gaXQgbG9va3M6IHByb210YWlsJ3MgYG91dHB1dDogeyBzb3VyY2U6IG1zZyB9YCBzdGFnZSBtYWtlc1xuICogdGhlIG1lc3NhZ2Ugc3RyaW5nIHRoZSBlbnRpcmUgc2hpcHBlZCBsb2cgbGluZSwgc28gYW4gdW5tYXNrZWQgbWVzc2FnZSBpcyBhblxuICogdW5tYXNrZWQgbG9nLiBNdXRhdGVzIGluIHBsYWNlIHRvIHByZXNlcnZlIHdpbnN0b24ncyBTeW1ib2wta2V5ZWQgaW50ZXJuYWxzLFxuICogZXhhY3RseSBhcyBgcmVkYWN0Rm9ybWF0YCBkb2VzLlxuICovXG5jb25zdCBtYXNrRm9ybWF0ID0gd2luc3Rvbi5mb3JtYXQoKGluZm8pID0+IHtcbiAgaWYgKHR5cGVvZiBpbmZvLm1lc3NhZ2UgPT09ICdzdHJpbmcnKSBpbmZvLm1lc3NhZ2UgPSBtYXNrTGluZShpbmZvLm1lc3NhZ2UpO1xuICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhpbmZvKSkge1xuICAgIGlmIChrZXkgPT09ICdtZXNzYWdlJykgY29udGludWU7XG4gICAgY29uc3QgdmFsdWUgPSBpbmZvW2tleV07XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIGluZm9ba2V5XSA9IG1hc2tMaW5lKHZhbHVlKTtcbiAgfVxuICByZXR1cm4gaW5mbztcbn0pKCk7XG5cbi8qKlxuICogQ3JlYXRlIGEgbG9nZ2VyIGluc3RhbmNlIGZvciBhIHNlcnZpY2UuXG4gKlxuICogV2hlbiBMT0dfRk9STUFUPWpzb24gKGRlZmF1bHQpLCBvdXRwdXRzIHN0cnVjdHVyZWQgSlNPTiBmb3IgTG9raSBpbmdlc3Rpb246XG4gKiAgIHtcImxldmVsXCI6XCJpbmZvXCIsXCJtZXNzYWdlXCI6XCJTZXJ2ZXIgc3RhcnRlZFwiLFwic2VydmljZVwiOlwicGlwZWxpbmVcIixcInRpbWVzdGFtcFwiOlwiLi4uXCJ9XG4gKlxuICogV2hlbiBMT0dfRk9STUFUPXRleHQsIG91dHB1dHMgY29sb3JpemVkIGh1bWFuLXJlYWRhYmxlIGZvcm1hdDpcbiAqICAgMjAyNi0wMi0xM1QxMDozMDowMC4wMDBaIGluZm8gW3BpcGVsaW5lXSBTZXJ2ZXIgc3RhcnRlZFxuICpcbiAqIEBwYXJhbSBzZXJ2aWNlTmFtZSAtIE5hbWUgb2YgdGhlIHNlcnZpY2UgZm9yIGxvZyBpZGVudGlmaWNhdGlvblxuICogQHJldHVybnMgQ29uZmlndXJlZCBXaW5zdG9uIGxvZ2dlciBpbnN0YW5jZVxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBpbXBvcnQgeyBjcmVhdGVMb2dnZXIgfSBmcm9tICdAcGlwZWxpbmUtYnVpbGRlci9hcGktY29yZSc7XG4gKlxuICogY29uc3QgbG9nZ2VyID0gY3JlYXRlTG9nZ2VyKCdnZXQtcGx1Z2luJyk7XG4gKiBsb2dnZXIuaW5mbygnU2VydmVyIHN0YXJ0ZWQnLCB7IHBvcnQ6IDMwMDAgfSk7XG4gKiBsb2dnZXIuZXJyb3IoJ0RhdGFiYXNlIGVycm9yJywgeyBlcnJvcjogZXJyLm1lc3NhZ2UgfSk7XG4gKiBgYGBcbiAqL1xuLyoqIFRoZSBsb2dnZXIgYGNyZWF0ZUxvZ2dlcmAgcmV0dXJucy4gRXhwb3J0ZWQgc28gY29uc3VtZXJzIGNhbiBhbm5vdGF0ZSBleHBvcnRlZFxuICogIGxvZ2dlcnMgd2l0aG91dCBkZXBlbmRpbmcgb24gd2luc3RvbiB0aGVtc2VsdmVzLiAqL1xuZXhwb3J0IHR5cGUgTG9nZ2VyID0gd2luc3Rvbi5Mb2dnZXI7XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVMb2dnZXIoc2VydmljZU5hbWU6IHN0cmluZyk6IExvZ2dlciB7XG4gIGNvbnN0IGxvZ0xldmVsID0gcHJvY2Vzcy5lbnYuTE9HX0xFVkVMIHx8ICdpbmZvJztcbiAgY29uc3QgbG9nRm9ybWF0ID0gcHJvY2Vzcy5lbnYuTE9HX0ZPUk1BVCB8fCAnanNvbic7XG4gIGlmIChsb2dGb3JtYXQgIT09ICdqc29uJyAmJiBsb2dGb3JtYXQgIT09ICd0ZXh0Jykge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlIC0tIHN0YXJ0dXAgd2FybmluZyBiZWZvcmUgbG9nZ2VyIGlzIGF2YWlsYWJsZVxuICAgIGNvbnNvbGUud2FybihgSW52YWxpZCBMT0dfRk9STUFUPVwiJHtsb2dGb3JtYXR9XCIsIGV4cGVjdGVkIFwianNvblwiIG9yIFwidGV4dFwiLiBEZWZhdWx0aW5nIHRvIFwianNvblwiLmApO1xuICB9XG4gIGNvbnN0IHVzZUpzb24gPSBsb2dGb3JtYXQgIT09ICd0ZXh0JztcblxuICAvLyBPcmRlciBtYXR0ZXJzOiByZWRhY3QgQkVGT1JFIHNlcmlhbGl6YXRpb24gc28gbWFza2VkIGtleXMgbmV2ZXIgcmVhY2hcbiAgLy8gdGhlIG91dHB1dC4gdHJhY2VfaWQgYW5kIHRoZSBvcmcvdXNlciBjb250ZXh0IGFyZSBzdGFtcGVkIGZpcnN0IHNvIHRoZXlcbiAgLy8gc3Vydml2ZSByZWRhY3Rpb24gKGJvdGggYXJlIGluIFBSRVNFUlZFRF9LRVlTKSwgdGhlbiBgbWFza0Zvcm1hdGAgc2NydWJzXG4gIC8vIHNlY3JldC1zaGFwZWQgVkFMVUVTIG91dCBvZiB0aGUgcmVuZGVyZWQgbWVzc2FnZSDigJQgdGhlIGtleS1iYXNlZFxuICAvLyBgcmVkYWN0Rm9ybWF0YCBvbmx5IGNvdmVycyBtZXRhZGF0YSBrZXlzLCBhbmQgYWZ0ZXIgcHJvbXRhaWwnc1xuICAvLyBgb3V0cHV0OiBzb3VyY2U6IG1zZ2AgcmV3cml0ZSB0aGUgc2hpcHBlZCBsaW5lIElTIHRoZSBtZXNzYWdlIHN0cmluZy5cbiAgY29uc3QgYmFzZUZvcm1hdHMgPSBbXG4gICAgZXJyb3JzKHsgc3RhY2s6IHRydWUgfSksXG4gICAgdGltZXN0YW1wKHsgZm9ybWF0OiAnWVlZWS1NTS1ERFRISDptbTpzcy5TU1NaJyB9KSxcbiAgICB0cmFjZUlkRm9ybWF0LFxuICAgIGxvZ0NvbnRleHRGb3JtYXQsXG4gICAgcmVkYWN0Rm9ybWF0LFxuICAgIG1hc2tGb3JtYXQsXG4gIF07XG5cbiAgaWYgKHVzZUpzb24pIHtcbiAgICByZXR1cm4gd2luc3Rvbi5jcmVhdGVMb2dnZXIoe1xuICAgICAgbGV2ZWw6IGxvZ0xldmVsLFxuICAgICAgZGVmYXVsdE1ldGE6IHsgc2VydmljZTogc2VydmljZU5hbWUgfSxcbiAgICAgIGZvcm1hdDogY29tYmluZSguLi5iYXNlRm9ybWF0cywganNvbigpKSxcbiAgICAgIHRyYW5zcG9ydHM6IFtuZXcgd2luc3Rvbi50cmFuc3BvcnRzLkNvbnNvbGUoKV0sXG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gd2luc3Rvbi5jcmVhdGVMb2dnZXIoe1xuICAgIGxldmVsOiBsb2dMZXZlbCxcbiAgICBkZWZhdWx0TWV0YTogeyBzZXJ2aWNlOiBzZXJ2aWNlTmFtZSB9LFxuICAgIGZvcm1hdDogY29tYmluZSguLi5iYXNlRm9ybWF0cyksXG4gICAgdHJhbnNwb3J0czogW1xuICAgICAgbmV3IHdpbnN0b24udHJhbnNwb3J0cy5Db25zb2xlKHtcbiAgICAgICAgZm9ybWF0OiBjb21iaW5lKGNvbG9yaXplKCksIGNvbnNvbGVGb3JtYXQpLFxuICAgICAgfSksXG4gICAgXSxcbiAgfSk7XG59XG5cbi8qKlxuICogRGVmYXVsdCBsb2dnZXIgaW5zdGFuY2UgKHNlcnZpY2UgbmFtZSBmcm9tIFNFUlZJQ0VfTkFNRSBlbnYgdmFyIG9yICdhcGknKS5cbiAqL1xuZXhwb3J0IGNvbnN0IGxvZ2dlciA9IGNyZWF0ZUxvZ2dlcihwcm9jZXNzLmVudi5TRVJWSUNFX05BTUUgfHwgJ2FwaScpO1xuXG5leHBvcnQgZGVmYXVsdCBsb2dnZXI7XG4iXX0=
|
|
@@ -54,4 +54,4 @@ export function emitGauge(name, labels = {}, value = 0) {
|
|
|
54
54
|
// caller in particular this must not be able to fail a database read.
|
|
55
55
|
}
|
|
56
56
|
}
|
|
57
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
57
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWV0cmljLWVtaXR0ZXIuanMiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9tZXRyaWMtZW1pdHRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBNEJ0QyxJQUFJLE9BQU8sR0FBbUIsR0FBRyxFQUFFO0lBQ2pDLHVFQUF1RTtJQUN2RSx3RUFBd0U7SUFDeEUsMEVBQTBFO0FBQzVFLENBQUMsQ0FBQztBQUVGOzs7R0FHRztBQUNILE1BQU0sVUFBVSxpQkFBaUIsQ0FBQyxFQUFrQjtJQUNsRCxPQUFPLEdBQUcsRUFBRSxDQUFDO0FBQ2YsQ0FBQztBQUVELDJFQUEyRTtBQUMzRSxNQUFNLFVBQVUsbUJBQW1CO0lBQ2pDLE9BQU8sR0FBRyxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUM7QUFDNUIsQ0FBQztBQUVEOzs7R0FHRztBQUNILE1BQU0sVUFBVSxXQUFXLENBQUMsSUFBWSxFQUFFLE1BQU0sR0FBMkIsRUFBRSxFQUFFLEtBQUssR0FBRyxDQUFDO0lBQ3RGLElBQUksQ0FBQztRQUNILE9BQU8sQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFBQyxNQUFNLENBQUM7UUFDUCxrRUFBa0U7UUFDbEUsMEVBQTBFO0lBQzVFLENBQUM7QUFDSCxDQUFDO0FBWUQsSUFBSSxZQUFZLEdBQWlCLEdBQUcsRUFBRTtJQUNwQyw4REFBOEQ7QUFDaEUsQ0FBQyxDQUFDO0FBRUYsOEVBQThFO0FBQzlFLE1BQU0sVUFBVSxlQUFlLENBQUMsRUFBZ0I7SUFDOUMsWUFBWSxHQUFHLEVBQUUsQ0FBQztBQUNwQixDQUFDO0FBRUQsMkVBQTJFO0FBQzNFLE1BQU0sVUFBVSxpQkFBaUI7SUFDL0IsWUFBWSxHQUFHLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQztBQUNqQyxDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSxTQUFTLENBQUMsSUFBWSxFQUFFLE1BQU0sR0FBMkIsRUFBRSxFQUFFLEtBQUssR0FBRyxDQUFDO0lBQ3BGLElBQUksQ0FBQztRQUNILFlBQVksQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFBQyxNQUFNLENBQUM7UUFDUCx5RUFBeUU7UUFDekUsc0VBQXNFO0lBQ3hFLENBQUM7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbi8qKlxuICogUGx1Z2dhYmxlIGNvdW50ZXItZW1pdCBzaGltLlxuICpcbiAqIEJhY2tncm91bmQ6IHNldmVyYWwgYXBpLWNvcmUgcHJpbWl0aXZlcyAocXVvdGEgY2xpZW50IGZhaWwtb3BlbiwgZnV0dXJlXG4gKiBzZWN1cml0eS1ldmVudCBob29rcykgd2FudCB0byByZWNvcmQgUHJvbWV0aGV1cyBjb3VudGVycyB3aGVuIHNvbWV0aGluZ1xuICogbm90YWJsZSBoYXBwZW5zLiBUaGUgYWN0dWFsIGBwcm9tLWNsaWVudGAgQ291bnRlciByZWdpc3RyYXRpb24gbGl2ZXMgaW5cbiAqIGFwaS1zZXJ2ZXIsIGFuZCBhcGktY29yZSBtdXN0IG5vdCBkZXBlbmQgb24gYXBpLXNlcnZlciAoYXBpLWNvcmUgaXNcbiAqIHVwc3RyZWFtIOKAlCBFeHByZXNzIGluZnJhc3RydWN0dXJlIGltcG9ydHMgaXQsIG5vdCB0aGUgb3RoZXIgd2F5IGFyb3VuZCkuXG4gKlxuICogVGhpcyBtb2R1bGUgaXMgdGhlIHNlYW0uIGFwaS1jb3JlIGNvZGUgY2FsbHMgYGVtaXRDb3VudGVyKG5hbWUsIGxhYmVscylgO1xuICogYnkgZGVmYXVsdCBpdCdzIGEgbm8tb3AgKHRlc3RzLCBDTElzLCBlbnZpcm9ubWVudHMgd2l0aG91dCBQcm9tZXRoZXVzKS5cbiAqIGFwaS1zZXJ2ZXIncyBhcHAtZmFjdG9yeSBjYWxscyBgc2V0Q291bnRlckVtaXR0ZXIoaW5jQ291bnRlcilgIGF0IHN0YXJ0dXBcbiAqIHNvIHByb2R1Y3Rpb24gcHJvY2Vzc2VzIHN0YXJ0IGluY3JlbWVudGluZyB0aGUgcmVhbCBjb3VudGVyIG9uIHRoZVxuICogc2hhcmVkIHJlZ2lzdHJ5LlxuICpcbiAqIFdoeSBhIGNhbGxiYWNrIGluc3RlYWQgb2YgYW4gaW50ZXJmYWNlIHJlZ2lzdGVyZWQgdmlhIERJPyBUaGUgY2FsbCBzaXRlc1xuICogKHF1b3RhIGZhaWwtb3BlbiwgZXRjLikgc2l0IGluIGRlZXAgaGVscGVycyB0aGF0IG5ldmVyIHRvdWNoIHRoZSBFeHByZXNzXG4gKiBjb250ZXh0LCBzbyByZXF1aXJpbmcgYSBgbWV0cmljc2AgcGFyYW1ldGVyIG9uIGV2ZXJ5IGNhbGwgd291bGQgbWVhblxuICogdGhyZWFkaW5nIGl0IHRocm91Z2ggZG96ZW5zIG9mIHVucmVsYXRlZCBmdW5jdGlvbnMuIEEgcHJvY2Vzcy1zaW5nbGV0b25cbiAqIGNhbGxiYWNrIGlzIHRoZSBzaW1wbGVzdCBub24taW52YXNpdmUgb3B0aW9uOyB0aGUgdHJhZGUtb2ZmIGlzIG9uZVxuICogc2hhcmVkIGdsb2JhbCwgd2hpY2ggaXMgYWNjZXB0YWJsZSBmb3IgYSBzaW5rIHRoYXQncyBzdHJpY3RseSB3cml0ZS1vbmx5LlxuICovXG5cbi8qKiBDYWxsYWJsZSBzaWduYXR1cmUgbWlycm9yaW5nIGFwaS1zZXJ2ZXIncyBgaW5jQ291bnRlcmAuICovXG5leHBvcnQgdHlwZSBDb3VudGVyRW1pdHRlciA9IChuYW1lOiBzdHJpbmcsIGxhYmVscz86IFJlY29yZDxzdHJpbmcsIHN0cmluZz4sIHZhbHVlPzogbnVtYmVyKSA9PiB2b2lkO1xuXG5sZXQgZW1pdHRlcjogQ291bnRlckVtaXR0ZXIgPSAoKSA9PiB7XG4gIC8vIERlZmF1bHQgbm8tb3AuIGFwaS1zZXJ2ZXIgd2lyZXMgdGhpcyB0byBhIHJlYWwgUHJvbWV0aGV1cyBjb3VudGVyIGF0XG4gIC8vIHN0YXJ0dXA7IHVudGlsIHRoZW4sIGNhbGxzIGZyb20gYXBpLWNvcmUgaGVscGVycyBhcmUgc2lsZW50bHkgZHJvcHBlZFxuICAvLyAod2hpY2ggaXMgd2hhdCB3ZSB3YW50IGluIHRlc3RzIGFuZCBDTElzIHRoYXQgZG9uJ3QgcnVuIGEgUHJvbSBzZXJ2ZXIpLlxufTtcblxuLyoqXG4gKiBSZWdpc3RlciB0aGUgcmVhbCBjb3VudGVyIGltcGxlbWVudGF0aW9uLiBJZGVtcG90ZW50IOKAlCB0aGUgbGFzdCBjYWxsIHdpbnM7XG4gKiB0eXBpY2FsbHkgY2FsbGVkIG9uY2UgYXQgc2VydmljZSBzdGFydHVwIGZyb20gYXBpLXNlcnZlci5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNldENvdW50ZXJFbWl0dGVyKGZuOiBDb3VudGVyRW1pdHRlcik6IHZvaWQge1xuICBlbWl0dGVyID0gZm47XG59XG5cbi8qKiBSZXNldCB0byB0aGUgbm8tb3AgZW1pdHRlci4gRm9yIHRlc3RzIHRoYXQgd2FudCB0byBjbGVhciBhbnkgd2lyaW5nLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc2V0Q291bnRlckVtaXR0ZXIoKTogdm9pZCB7XG4gIGVtaXR0ZXIgPSAoKSA9PiB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogUmVjb3JkIGEgY291bnRlciBldmVudC4gU2FmZSB0byBjYWxsIGZyb20gYW55IGFwaS1jb3JlIG1vZHVsZSDigJQgaWYgbm9cbiAqIGVtaXR0ZXIgaXMgd2lyZWQsIHRoaXMgaXMgYSBuby1vcC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGVtaXRDb3VudGVyKG5hbWU6IHN0cmluZywgbGFiZWxzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge30sIHZhbHVlID0gMSk6IHZvaWQge1xuICB0cnkge1xuICAgIGVtaXR0ZXIobmFtZSwgbGFiZWxzLCB2YWx1ZSk7XG4gIH0gY2F0Y2gge1xuICAgIC8vIE5ldmVyIGxldCBtZXRyaWMgZW1pc3Npb24gYnJlYWsgdGhlIGNhbGxpbmcgcGF0aC4gQSBtaXNiZWhhdmluZ1xuICAgIC8vIGVtaXR0ZXIgc2hvdWxkbid0IGJlIGFibGUgdG8gdGFrZSBkb3duIHF1b3RhIGNoZWNrcyAob3IgYW55dGhpbmcgZWxzZSkuXG4gIH1cbn1cblxuLyoqXG4gKiBDYWxsYWJsZSBzaWduYXR1cmUgbWlycm9yaW5nIGFwaS1zZXJ2ZXIncyBgc2V0R2F1Z2VgLlxuICpcbiAqIEEgZ2F1Z2UgcmF0aGVyIHRoYW4gYSBjb3VudGVyIGJlY2F1c2UgdGhlIHRoaW5ncyB0aGF0IG5lZWQgdGhpcyBzZWFtIGFyZVxuICogU0FNUExFRCBwb2ludC1pbi10aW1lIHZhbHVlcywgbm90IGV2ZW50czogcmVwbGljYSByZXBsYXkgbGFnLCB3aGV0aGVyIGFcbiAqIGZhbGxiYWNrIGNpcmN1aXQgaXMgY3VycmVudGx5IG9wZW4uIEVtaXR0aW5nIHRob3NlIGFzIGNvdW50ZXJzIHdvdWxkIG1ha2VcbiAqIGV2ZXJ5IHF1ZXJ5IG92ZXIgdGhlbSB3cm9uZyDigJQgYHJhdGUoKWAgb2YgYSBsYWcgcmVhZGluZyBpcyBtZWFuaW5nbGVzcy5cbiAqL1xuZXhwb3J0IHR5cGUgR2F1Z2VFbWl0dGVyID0gKG5hbWU6IHN0cmluZywgbGFiZWxzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+LCB2YWx1ZTogbnVtYmVyKSA9PiB2b2lkO1xuXG5sZXQgZ2F1Z2VFbWl0dGVyOiBHYXVnZUVtaXR0ZXIgPSAoKSA9PiB7XG4gIC8vIERlZmF1bHQgbm8tb3AsIHNhbWUgcmVhc29uaW5nIGFzIHRoZSBjb3VudGVyIGVtaXR0ZXIgYWJvdmUuXG59O1xuXG4vKiogUmVnaXN0ZXIgdGhlIHJlYWwgZ2F1Z2UgaW1wbGVtZW50YXRpb24uIElkZW1wb3RlbnQ7IHRoZSBsYXN0IGNhbGwgd2lucy4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXRHYXVnZUVtaXR0ZXIoZm46IEdhdWdlRW1pdHRlcik6IHZvaWQge1xuICBnYXVnZUVtaXR0ZXIgPSBmbjtcbn1cblxuLyoqIFJlc2V0IHRvIHRoZSBuby1vcCBlbWl0dGVyLiBGb3IgdGVzdHMgdGhhdCB3YW50IHRvIGNsZWFyIGFueSB3aXJpbmcuICovXG5leHBvcnQgZnVuY3Rpb24gcmVzZXRHYXVnZUVtaXR0ZXIoKTogdm9pZCB7XG4gIGdhdWdlRW1pdHRlciA9ICgpID0+IHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBTZXQgYSBnYXVnZS4gU2FmZSB0byBjYWxsIGZyb20gYW55IGFwaS1jb3JlIG9yIHBpcGVsaW5lLWRhdGEgbW9kdWxlIOKAlCB3aXRoIG5vXG4gKiBlbWl0dGVyIHdpcmVkIHRoaXMgaXMgYSBuby1vcCwgd2hpY2ggaXMgdGhlIHN0YXRlIGluIHRlc3RzLCBDTElzIGFuZCBhbnlcbiAqIHByb2Nlc3MgdGhhdCBkb2VzIG5vdCBzZXJ2ZSAvbWV0cmljcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGVtaXRHYXVnZShuYW1lOiBzdHJpbmcsIGxhYmVsczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHt9LCB2YWx1ZSA9IDApOiB2b2lkIHtcbiAgdHJ5IHtcbiAgICBnYXVnZUVtaXR0ZXIobmFtZSwgbGFiZWxzLCB2YWx1ZSk7XG4gIH0gY2F0Y2gge1xuICAgIC8vIE5ldmVyIGxldCBtZXRyaWMgZW1pc3Npb24gYnJlYWsgdGhlIGNhbGxpbmcgcGF0aC4gRm9yIHRoZSByZWFkLXJvdXRpbmdcbiAgICAvLyBjYWxsZXIgaW4gcGFydGljdWxhciB0aGlzIG11c3Qgbm90IGJlIGFibGUgdG8gZmFpbCBhIGRhdGFiYXNlIHJlYWQuXG4gIH1cbn1cbiJdfQ==
|
package/lib/utils/object.js
CHANGED
|
@@ -38,4 +38,4 @@ export function stableStringify(value) {
|
|
|
38
38
|
const keys = Object.keys(obj).filter((k) => obj[k] !== undefined).sort();
|
|
39
39
|
return `{${keys.map((k) => `${JSON.stringify(k)}:${stableStringify(obj[k])}`).join(',')}}`;
|
|
40
40
|
}
|
|
41
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
41
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0LmpzIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvb2JqZWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7QUFFdEM7Ozs7Ozs7Ozs7O0dBV0c7QUFDSCxNQUFNLFVBQVUsV0FBVyxDQUFvQyxHQUFNO0lBQ25FLE9BQU8sTUFBTSxDQUFDLFdBQVcsQ0FDdkIsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsS0FBSyxTQUFTLENBQUMsQ0FDekMsQ0FBQztBQUNsQixDQUFDO0FBRUQ7Ozs7Ozs7OztHQVNHO0FBQ0gsTUFBTSxVQUFVLGVBQWUsQ0FBQyxLQUFjO0lBQzVDLElBQUksS0FBSyxLQUFLLElBQUksSUFBSSxLQUFLLEtBQUssU0FBUztRQUFFLE9BQU8sTUFBTSxDQUFDO0lBQ3pELElBQUksS0FBSyxZQUFZLElBQUk7UUFBRSxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7SUFDdEUsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRO1FBQUUsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxJQUFJLE1BQU0sQ0FBQztJQUN0RSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDO1FBQUUsT0FBTyxJQUFJLEtBQUssQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUM7SUFDN0UsTUFBTSxHQUFHLEdBQUcsS0FBZ0MsQ0FBQztJQUM3QyxNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLFNBQVMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3pFLE9BQU8sSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksZUFBZSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQztBQUM3RixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbi8qKlxuICogRmlsdGVyIGFuIG9iamVjdCB0byBvbmx5IGluY2x1ZGUgZW50cmllcyB3aGVyZSB0aGUgdmFsdWUgaXMgbm90IGB1bmRlZmluZWRgLlxuICogS2VlcHMgYG51bGxgLCBgZmFsc2VgLCBgMGAsIGFuZCBlbXB0eSBzdHJpbmcg4oCUIG9ubHkgcmVtb3ZlcyBgdW5kZWZpbmVkYC5cbiAqXG4gKiBVc2VmdWwgZm9yIGJ1aWxkaW5nIHBhcnRpYWwgdXBkYXRlIHBheWxvYWRzIGZyb20gdmFsaWRhdGVkIHJlcXVlc3QgYm9kaWVzLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBib2R5ID0geyBuYW1lOiAnZm9vJywgZGVzY3JpcHRpb246IHVuZGVmaW5lZCwgaXNBY3RpdmU6IGZhbHNlIH07XG4gKiBwaWNrRGVmaW5lZChib2R5KTsgLy8geyBuYW1lOiAnZm9vJywgaXNBY3RpdmU6IGZhbHNlIH1cbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gcGlja0RlZmluZWQ8VCBleHRlbmRzIFJlY29yZDxzdHJpbmcsIHVua25vd24+PihvYmo6IFQpOiBQYXJ0aWFsPFQ+IHtcbiAgcmV0dXJuIE9iamVjdC5mcm9tRW50cmllcyhcbiAgICBPYmplY3QuZW50cmllcyhvYmopLmZpbHRlcigoWywgdl0pID0+IHYgIT09IHVuZGVmaW5lZCksXG4gICkgYXMgUGFydGlhbDxUPjtcbn1cblxuLyoqXG4gKiBEZXRlcm1pbmlzdGljIEpTT04gc2VyaWFsaXphdGlvbiB3aXRoIHJlY3Vyc2l2ZWx5IHNvcnRlZCBvYmplY3Qga2V5cywgc28gdGhlXG4gKiBzYW1lIGxvZ2ljYWwgdmFsdWUgYWx3YXlzIHNlcmlhbGl6ZXMgKGFuZCBoYXNoZXMpIGlkZW50aWNhbGx5OlxuICogLSBgdW5kZWZpbmVkYCAvIGBudWxsYCDihpIgYG51bGxgIChzbyBhYnNlbnQgZmllbGRzIGhhc2ggaWRlbnRpY2FsbHkpLlxuICogLSBgRGF0ZWAg4oaSIGl0cyBJU08gc3RyaW5nIChNb25nbyByb3VuZC10cmlwcyB0aGVzZSBhcyBgRGF0ZWApLlxuICogLSBvYmplY3Qga2V5cyBhcmUgc29ydGVkOyBgdW5kZWZpbmVkYC12YWx1ZWQga2V5cyBhcmUgZHJvcHBlZCAoSlNPTiBzZW1hbnRpY3MpLlxuICpcbiAqIFRoZSBhdWRpdCBoYXNoIGNoYWluIGRlcGVuZHMgb24gdGhpcyBvdXRwdXQgYnl0ZS1mb3ItYnl0ZTogY2hhbmdpbmcgaXRcbiAqIGludmFsaWRhdGVzIGV2ZXJ5IHN0b3JlZCBjaGFpbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHN0YWJsZVN0cmluZ2lmeSh2YWx1ZTogdW5rbm93bik6IHN0cmluZyB7XG4gIGlmICh2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gdW5kZWZpbmVkKSByZXR1cm4gJ251bGwnO1xuICBpZiAodmFsdWUgaW5zdGFuY2VvZiBEYXRlKSByZXR1cm4gSlNPTi5zdHJpbmdpZnkodmFsdWUudG9JU09TdHJpbmcoKSk7XG4gIGlmICh0eXBlb2YgdmFsdWUgIT09ICdvYmplY3QnKSByZXR1cm4gSlNPTi5zdHJpbmdpZnkodmFsdWUpID8/ICdudWxsJztcbiAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSByZXR1cm4gYFske3ZhbHVlLm1hcChzdGFibGVTdHJpbmdpZnkpLmpvaW4oJywnKX1dYDtcbiAgY29uc3Qgb2JqID0gdmFsdWUgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhvYmopLmZpbHRlcigoaykgPT4gb2JqW2tdICE9PSB1bmRlZmluZWQpLnNvcnQoKTtcbiAgcmV0dXJuIGB7JHtrZXlzLm1hcCgoaykgPT4gYCR7SlNPTi5zdHJpbmdpZnkoayl9OiR7c3RhYmxlU3RyaW5naWZ5KG9ialtrXSl9YCkuam9pbignLCcpfX1gO1xufVxuIl19
|
package/lib/utils/params.js
CHANGED
|
@@ -250,4 +250,4 @@ export function parseDateRange(query, options = {}) {
|
|
|
250
250
|
}
|
|
251
251
|
return { from: fromStr, to: toStr };
|
|
252
252
|
}
|
|
253
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyYW1zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL3BhcmFtcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBRXRDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQW9CbEU7Ozs7Ozs7Ozs7Ozs7OztHQWVHO0FBQ0gsTUFBTSxVQUFVLFFBQVEsQ0FDdEIsTUFBa0MsRUFDbEMsR0FBVztJQUVYLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMxQixJQUFJLEtBQUssS0FBSyxTQUFTLEVBQUUsQ0FBQztRQUN4QixPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBQ0QsT0FBTyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztBQUNqRCxDQUFDO0FBRUQ7Ozs7Ozs7Ozs7OztHQVlHO0FBQ0gsTUFBTSxVQUFVLGFBQWEsQ0FBQyxLQUFjLEVBQUUsWUFBb0I7SUFDaEUsSUFBSSxLQUFLLEtBQUssU0FBUyxJQUFJLEtBQUssS0FBSyxJQUFJLElBQUksS0FBSyxLQUFLLEVBQUU7UUFBRSxPQUFPLFlBQVksQ0FBQztJQUMvRSxNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQzNDLE9BQU8sS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztBQUMvQyxDQUFDO0FBRUQ7Ozs7Ozs7Ozs7R0FVRztBQUNILE1BQU0sVUFBVSxnQkFBZ0IsQ0FBQyxLQUFjO0lBQzdDLElBQUksS0FBSyxLQUFLLFNBQVMsSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLEtBQUssS0FBSyxFQUFFO1FBQUUs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QUFJLElBQUksR0FBRyxNQUFNLEdBQUcsVUFBVSxFQUFFLENBQUM7UUFDM0QsT0FBTyxFQUFFLEtBQUssRUFBRSxpQ0FBaUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLEdBQUcsQ0FBQyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUMzRyxDQUFDO0lBRUQsT0FBTyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxDQUFDO0FBQ3RDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuaW1wb3J0IHsgTUFYX1BBR0VfT0ZGU0VUIH0gZnJvbSAnLi4vdmFsaWRhdGlvbi9jb21tb24tc2NoZW1hcy5qcyc7XG5cbi8qKlxuICogU2hhcGUgY29udmVudGlvbiBmb3IgdGhlIGlubGluZSBwYXJzZS1ndWFyZCBoZWxwZXJzIGJlbG93LlxuICpcbiAqIFRoZXNlIHJldHVybiBhIGxpZ2h0d2VpZ2h0IGB7IHZhbHVlIH0gfCB7IGVycm9yIH1gIChuYXJyb3dlZCB3aXRoXG4gKiBgJ2Vycm9yJyBpbiByZXN1bHRgKSDigJQgZGVsaWJlcmF0ZWx5IERJU1RJTkNUIGZyb20gdGhlIHNjaGVtYS12YWxpZGF0aW9uXG4gKiBgVmFsaWRhdGlvblJlc3VsdDxUPmAgKGB7IG9rLCB2YWx1ZSB9IHwgeyBvaywgZXJyb3IgfWApIGluXG4gKiBgdmFsaWRhdGlvbi9taWRkbGV3YXJlLnRzYC4gWm9kIHNjaGVtYSBwYXJzaW5nIHVzZXMgdGhlIGBva2AtZGlzY3JpbWluYXRlZFxuICogc2hhcGU7IHRoZXNlIGFkLWhvYyByZXF1ZXN0LXBhcmFtZXRlciBndWFyZHMgdXNlIGAnZXJyb3InIGluYC4gVGhlIHNwbGl0IGlzXG4gKiBpbnRlbnRpb25hbCBhbmQgZG9jdW1lbnRlZCAoc2VlIHRoZSBub3RlIG9uIGBWYWxpZGF0aW9uUmVzdWx0YCk6IGNvbnZlcmdpbmdcbiAqIHRoZW0gd291bGQgY2h1cm4gZXZlcnkgYCdlcnJvcicgaW4gcmVzdWx0YCBjYWxsIHNpdGUgYWNyb3NzIHRoZSBkb3duc3RyZWFtXG4gKiBzZXJ2aWNlcyB3aXRoIG5vIGJlaGF2aW91cmFsIGNoYW5nZSwgc28gaXQncyBsZWZ0IGFzIGEgZG9jdW1lbnRlZCBjb252ZW50aW9uLlxuICovXG5cbi8qKlxuICogRXhwcmVzcyA1IHBhcmFtZXRlciB0eXBlLlxuICovXG50eXBlIFBhcmFtVmFsdWUgPSBzdHJpbmcgfCBzdHJpbmdbXSB8IHVuZGVmaW5lZDtcblxuLyoqXG4gKiBFeHRyYWN0IGEgc2luZ2xlIHN0cmluZyBwYXJhbWV0ZXIgZnJvbSBFeHByZXNzIDUgcm91dGUgcGFyYW1zLlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBSZXF1ZXN0IHBhcmFtcyBvYmplY3RcbiAqIEBwYXJhbSBrZXkgLSBQYXJhbWV0ZXIga2V5XG4gKiBAcmV0dXJucyBUaGUgcGFyYW1ldGVyIHZhbHVlIGFzIGEgc3RyaW5nLCBvciB1bmRlZmluZWQgaWYgbm90IHByZXNlbnRcbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogLy8gUm91dGU6IEdFVCAvcGx1Z2lucy86aWRcbiAqIGNvbnN0IGlkID0gZ2V0UGFyYW0ocmVxLnBhcmFtcywgJ2lkJyk7XG4gKiBpZiAoIWlkKSB7XG4gKiAgIHJldHVybiBzZW5kRXJyb3IocmVzLCA0MDAsICdNaXNzaW5nIGlkIHBhcmFtZXRlcicpO1xuICogfVxuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRQYXJhbShcbiAgcGFyYW1zOiBSZWNvcmQ8c3RyaW5nLCBQYXJhbVZhbHVlPixcbiAga2V5OiBzdHJpbmcsXG4pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICBjb25zdCB2YWx1ZSA9IHBhcmFtc1trZXldO1xuICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbiAgcmV0dXJuIEFycmF5LmlzQXJyYXkodmFsdWUpID8gdmFsdWVbMF0gOiB2YWx1ZTtcbn1cblxuLyoqXG4gKiBQYXJzZSBhIHF1ZXJ5IHBhcmFtZXRlciBhcyBhbiBpbnRlZ2VyLlxuICpcbiAqIEBwYXJhbSB2YWx1ZSAtIFF1ZXJ5IHBhcmFtZXRlciB2YWx1ZVxuICogQHBhcmFtIGRlZmF1bHRWYWx1ZSAtIERlZmF1bHQgdmFsdWUgaWYgcGFyc2luZyBmYWlsc1xuICogQHJldHVybnMgUGFyc2VkIGludGVnZXJcbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgbGltaXQgPSBwYXJzZVF1ZXJ5SW50KHJlcS5xdWVyeS5saW1pdCwgMTApO1xuICogY29uc3Qgb2Zmc2V0ID0gcGFyc2VRdWVyeUludChyZXEucXVlcnkub2Zmc2V0LCAwKTtcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VRdWVyeUludCh2YWx1ZTogdW5rbm93biwgZGVmYXVsdFZhbHVlOiBudW1iZXIpOiBudW1iZXIge1xuICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gJycpIHJldHVybiBkZWZhdWx0VmFsdWU7XG4gIGNvbnN0IHBhcnNlZCA9IHBhcnNlSW50KFN0cmluZyh2YWx1ZSksIDEwKTtcbiAgcmV0dXJuIGlzTmFOKHBhcnNlZCkgPyBkZWZhdWx0VmFsdWUgOiBwYXJzZWQ7XG59XG5cbi8qKlxuICogUGFyc2UgYSBxdWVyeSBwYXJhbWV0ZXIgYXMgYSBzdHJpbmcuXG4gKlxuICogQHBhcmFtIHZhbHVlIC0gUXVlcnkgcGFyYW1ldGVyIHZhbHVlXG4gKiBAcmV0dXJucyBTdHJpbmcgdmFsdWUgb3IgdW5kZWZpbmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IHNlYXJjaCA9IHBhcnNlUXVlcnlTdHJpbmcocmVxLnF1ZXJ5LnNlYXJjaCk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlUXVlcnlTdHJpbmcodmFsdWU6IHVua25vd24pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gJycpIHJldHVybiB1bmRlZmluZWQ7XG4gIHJldHVybiBTdHJpbmcodmFsdWUpO1xufVxuXG4vKipcbiAqIFBhcnNlIGFuIG9wdGlvbmFsIElTTyBkYXRlIHF1ZXJ5IHBhcmFtOiBgdW5kZWZpbmVkYCB3aGVuIGFic2VudCwgYG51bGxgIHdoZW5cbiAqIG1hbGZvcm1lZCAodGhlIHJvdXRlIGFuc3dlcnMgYSA0MDApLCBlbHNlIHRoZSBEYXRlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VPcHRpb25hbERhdGUocmF3OiB1bmtub3duKTogRGF0ZSB8IHVuZGVmaW5lZCB8IG51bGwge1xuICBjb25zdCBzID0gcGFyc2VRdWVyeVN0cmluZyhyYXcpO1xuICBpZiAoIXMpIHJldHVybiB1bmRlZmluZWQ7XG4gIGNvbnN0IGQgPSBuZXcgRGF0ZShzKTtcbiAgcmV0dXJuIE51bWJlci5pc05hTihkLmdldFRpbWUoKSkgPyBudWxsIDogZDtcbn1cblxuLyoqXG4gKiBQYXJzZSBhIHN0cmluZyB0byBhIHBvc2l0aXZlIGludGVnZXIsIHJldHVybmluZyBhIGZhbGxiYWNrIGlmIGludmFsaWQuXG4gKiBVc2VmdWwgZm9yIHBhcnNpbmcgZW52aXJvbm1lbnQgdmFyaWFibGVzIHdpdGggbnVtZXJpYyBkZWZhdWx0cy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlUG9zaXRpdmVJbnQodmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCwgZmFsbGJhY2s6IG51bWJlcik6IG51bWJlciB7XG4gIGlmICghdmFsdWUpIHJldHVybiBmYWxsYmFjaztcbiAgY29uc3QgcGFyc2VkID0gcGFyc2VJbnQodmFsdWUsIDEwKTtcbiAgcmV0dXJuIE51bWJlci5pc0Zpbml0ZShwYXJzZWQpICYmIHBhcnNlZCA+IDAgPyBwYXJzZWQgOiBmYWxsYmFjaztcbn1cblxuLyoqXG4gKiBQYXJzZSBhIHF1ZXJ5IGludCwgdGhlbiBjbGFtcCB0byBgWzEsIG1heF1gLiBSZXR1cm5zIGBkZWZhdWx0VmFsdWVgIChhZnRlclxuICogdGhlIHNhbWUgY2xhbXApIHdoZW4gdGhlIGlucHV0IGlzIG1pc3NpbmcvaW52YWxpZC4gVXNlIGZvciBgbGltaXRgLXN0eWxlXG4gKiBxdWVyeSBwYXJhbWV0ZXJzIHdoZXJlIGFuIHVuYm91bmRlZCB2YWx1ZSB3b3VsZCBjb3N0IHJlYWwgbW9uZXkuXG4gKlxuICogQGV4YW1wbGVcbiAqIGNvbnN0IGxpbWl0ID0gcGFyc2VRdWVyeUludENsYW1wZWQocmVxLnF1ZXJ5LmxpbWl0LCA1MCwgMTAwMCk7XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZVF1ZXJ5SW50Q2xhbXBlZChcbiAgdmFsdWU6IHVua25vd24sXG4gIGRlZmF1bHRWYWx1ZTogbnVtYmVyLFxuICBtYXg6IG51bWJlcixcbik6IG51bWJlciB7XG4gIGNvbnN0IHJhdyA9IHBhcnNlUXVlcnlJbnQodmFsdWUsIGRlZmF1bHRWYWx1ZSk7XG4gIHJldHVybiBNYXRoLm1heCgxLCBNYXRoLm1pbihyYXcsIG1heCkpO1xufVxuXG4vKiogT3B0aW9ucyBmb3Ige0BsaW5rIHBhcnNlUGFnZX0uICovXG5leHBvcnQgaW50ZXJmYWNlIFBhZ2VPcHRpb25zIHtcbiAgLyoqIFBhZ2Ugc2l6ZSB3aGVuIHRoZSBjYWxsZXIgbmFtZXMgbm9uZS4gUkVRVUlSRUQg4oCUIHBpY2sgaXQgZGVsaWJlcmF0ZWx5LiAqL1xuICBkZWY6IG51bWJlcjtcbiAgLyoqIEhhcmQgY2VpbGluZyBvbiBvbmUgcGFnZS4gUkVRVUlSRUQg4oCUIGFuIHVuYm91bmRlZCBgP2xpbWl0PWAgY29zdHMgbW9uZXkuICovXG4gIG1heDogbnVtYmVyO1xuICAvKipcbiAgICogRGVlcGVzdCBgb2Zmc2V0YCBhIGNhbGxlciBtYXkgcmVhY2guIEEgbnVtYmVyLCBvciBhIGZ1bmN0aW9uIG9mIHRoZVxuICAgKiByZXNvbHZlZCBsaW1pdCBmb3Igc291cmNlcyB0aGF0IHBhZ2UgYSBmaXhlZC1kZXB0aCB3aW5kb3cgKHRoZSBwbHVnaW4gcXVldWVcbiAgICogcmVhZHMgYG9mZnNldCArIGxpbWl0YCBlbnRyaWVzIGZyb20gZXZlcnkgc291cmNlLCBzbyBpdHMgZGVwdGggY2FwIGlzXG4gICAqIGBERVBUSCAtIGxpbWl0YCkuIERlZmF1bHRzIHRvIGBNQVhfUEFHRV9PRkZTRVRgLlxuICAgKi9cbiAgbWF4T2Zmc2V0PzogbnVtYmVyIHwgKChsaW1pdDogbnVtYmVyKSA9PiBudW1iZXIpO1xufVxuXG4vKiogQSBwYXJzZWQsIGNsYW1wZWQgYD9saW1pdD0mb2Zmc2V0PWAgd2luZG93LiAqL1xuZXhwb3J0IGludGVyZmFjZSBQYWdlIHtcbiAgbGltaXQ6IG51bWJlcjtcbiAgb2Zmc2V0OiBudW1iZXI7XG59XG5cbi8qKlxuICogVEhFIHBhZ2luYXRpb24gcHJpbWl0aXZlLiBQYXJzZSBhbmQgY2xhbXAgYGxpbWl0YC9gb2Zmc2V0YCBmcm9tIGEgcXVlcnkgKG9yXG4gKiBmcm9tIGEgc2VydmljZS1sYXllciBvcHRpb25zIG9iamVjdCDigJQgbnVtZXJpYyB2YWx1ZXMgd29yayB0b28pLlxuICpcbiAqIGBsaW1pdGAgY2xhbXBzIHRvIGBbMSwgbWF4XWAgYW5kIGZhbGxzIGJhY2sgdG8gYGRlZmA7IGBvZmZzZXRgIGNsYW1wcyB0b1xuICogYFswLCBtYXhPZmZzZXRdYC4gUm91dGUgZGVmYXVsdHMgYXJlIHBlci1yb3V0ZSDigJQgYSBxdWV1ZSBsaXN0aW5nIGFuZCBhIG1lbWJlclxuICogcm9zdGVyIHdhbnQgZGlmZmVyZW50IHBhZ2Ugc2l6ZXMg4oCUIGJ1dCB0aGV5IGFyZSBERUNMQVJFRCBoZXJlIHJhdGhlciB0aGFuXG4gKiBoYW5kLXJvbGxlZCB3aXRoIGBNYXRoLm1pbihNYXRoLm1heCguLi4pKWAgYXQgdGhlIGNhbGwgc2l0ZSwgYW5kIG5vIGNhbGxlclxuICogY2FuIGZvcmdldCB0aGUgY2FwLlxuICpcbiAqIEBleGFtcGxlXG4gKiBjb25zdCB7IGxpbWl0LCBvZmZzZXQgfSA9IHBhcnNlUGFnZShyZXEucXVlcnksIHsgZGVmOiA1MCwgbWF4OiAyMDAgfSk7XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZVBhZ2UocXVlcnk6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LCBvcHRzOiBQYWdlT3B0aW9ucyk6IFBhZ2Uge1xuICBjb25zdCBsaW1pdCA9IE1hdGgubWF4KDEsIE1hdGgubWluKHBhcnNlUXVlcnlJbnQocXVlcnkubGltaXQsIG9wdHMuZGVmKSwgb3B0cy5tYXgpKTtcbiAgY29uc3QgcmF3TWF4T2Zmc2V0ID0gdHlwZW9mIG9wdHMubWF4T2Zmc2V0ID09PSAnZnVuY3Rpb24nID8gb3B0cy5tYXhPZmZzZXQobGltaXQpIDogb3B0cy5tYXhPZmZzZXQ7XG4gIGNvbnN0IG1heE9mZnNldCA9IE1hdGgubWF4KDAsIHJhd01heE9mZnNldCA/PyBNQVhfUEFHRV9PRkZTRVQpO1xuICBjb25zdCBvZmZzZXQgPSBNYXRoLm1heCgwLCBNYXRoLm1pbihwYXJzZVF1ZXJ5SW50KHF1ZXJ5Lm9mZnNldCwgMCksIG1heE9mZnNldCkpO1xuICByZXR1cm4geyBsaW1pdCwgb2Zmc2V0IH07XG59XG5cbi8qKlxuICogQnVsay1hcnJheSByZXF1ZXN0IGd1YXJkLiBWYWxpZGF0ZXMgdGhhdCBgdmFsdWVgIGlzIGFuIGFycmF5LCBub24tZW1wdHksXG4gKiBhbmQgd2l0aGluIHRoZSBjb25maWd1cmVkIGNhcC4gUmV0dXJucyB0aGUgdHlwZWQgYXJyYXkgb3IgYW4gZXJyb3Igb2JqZWN0XG4gKiB0aGUgY2FsbGVyIGNhbiBmb3J3YXJkIHRvIGBzZW5kRXJyb3JgL2BzZW5kQmFkUmVxdWVzdGAuXG4gKlxuICogUmVwbGFjZXMgYSBoYW5kLXJvbGxlZCBgaWYgKCFBcnJheS5pc0FycmF5KC4uLikpIHsgLi4uIH1gICsgbGVuZ3RoIGNoZWNrXG4gKiBibG9jayB0aGF0IHdhcyBkdXBsaWNhdGVkIGFjcm9zcyBidWxrIGVuZHBvaW50cyBpbiBwaXBlbGluZSwgcGx1Z2luLFxuICogY29tcGxpYW5jZSwgZXRjLlxuICpcbiAqIEBleGFtcGxlXG4gKiBjb25zdCByZXN1bHQgPSB2YWxpZGF0ZUJ1bGtBcnJheShyZXEuYm9keS5pZHMsICdpZHMnKTtcbiAqIGlmICgnZXJyb3InIGluIHJlc3VsdCkgcmV0dXJuIHNlbmRCYWRSZXF1ZXN0KHJlcywgcmVzdWx0LmVycm9yLCBFcnJvckNvZGUuVkFMSURBVElPTl9FUlJPUik7XG4gKiBjb25zdCBpZHMgPSByZXN1bHQudmFsdWU7XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZUJ1bGtBcnJheTxUID0gdW5rbm93bj4oXG4gIHZhbHVlOiB1bmtub3duLFxuICBmaWVsZE5hbWU6IHN0cmluZyxcbiAgbWF4SXRlbXM/OiBudW1iZXIsXG4pOiB7IHZhbHVlOiBUW10gfSB8IHsgZXJyb3I6IHN0cmluZyB9IHtcbiAgaWYgKCFBcnJheS5pc0FycmF5KHZhbHVlKSB8fCB2YWx1ZS5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4geyBlcnJvcjogYFJlcXVlc3QgYm9keSBtdXN0IGluY2x1ZGUgYSBub24tZW1wdHkgXCIke2ZpZWxkTmFtZX1cIiBhcnJheWAgfTtcbiAgfVxuICAvLyBDb3JlQ29uc3RhbnRzLk1BWF9CVUxLX0lURU1TIGlzbid0IGltcG9ydGVkIGhlcmUgdG8gYXZvaWQgYSBjaXJjdWxhclxuICAvLyBwYXRoIHRocm91Z2ggY29uc3RhbnRzL2luZGV4OyBjYWxsZXJzIHBhc3MgaXQgZXhwbGljaXRseSBvciBvbWl0IGZvclxuICAvLyBubyB1cHBlciBib3VuZC5cbiAgaWYgKG1heEl0ZW1zICE9PSB1bmRlZmluZWQgJiYgdmFsdWUubGVuZ3RoID4gbWF4SXRlbXMpIHtcbiAgICByZXR1cm4geyBlcnJvcjogYE1heGltdW0gJHttYXhJdGVtc30gaXRlbXMgcGVyIGJ1bGsgb3BlcmF0aW9uYCB9O1xuICB9XG4gIHJldHVybiB7IHZhbHVlOiB2YWx1ZSBhcyBUW10gfTtcbn1cblxuLyoqXG4gKiBTdXBwb3J0ZWQgaW50ZXJ2YWxzIGZvciB0aW1lLWJ1Y2tldGVkIHJlcG9ydCBxdWVyaWVzLiBVc2VkIGFzIHRoZVxuICogYERBVEVfVFJVTkNgIGZpcnN0IGFyZ3VtZW50IGluIFBvc3RncmVzOyByZXN0cmljdGVkIHRvIGEgZml4ZWQgZW51bSBzb1xuICogdGhlIHZhbHVlIGNhbiBuZXZlciBiZSBpbmplY3RlZCBpbnRvIHJhdyBTUUwuXG4gKi9cbmV4cG9ydCBjb25zdCBSRVBPUlRfSU5URVJWQUxTID0gWydkYXknLCAnd2VlaycsICdtb250aCcsICdxdWFydGVyJ10gYXMgY29uc3Q7XG5leHBvcnQgdHlwZSBSZXBvcnRJbnRlcnZhbCA9ICh0eXBlb2YgUkVQT1JUX0lOVEVSVkFMUylbbnVtYmVyXTtcblxuLyoqXG4gKiBXaGVyZSBhIHJlcG9ydCdzIHdlZWsgc3RhcnRzLiBQb3N0Z3JlcyBgREFURV9UUlVOQygnd2VlaycsIOKApilgIGlzIElTTy04NjAxIGFuZFxuICogQUxXQVlTIHN0YXJ0cyBNb25kYXksIHdpdGggbm8gb3B0aW9uIOKAlCBzbyBhIFN1bmRheS13ZWVrIG9yZyBuZWVkcyB0aGUgYm91bmRhcnlcbiAqIHNoaWZ0ZWQgZXhwbGljaXRseSByYXRoZXIgdGhhbiBjb25maWd1cmVkIGluIHRoZSBkYXRhYmFzZS5cbiAqL1xuZXhwb3J0IGNvbnN0IFdFRUtfU1RBUlRTID0gWydtb25kYXknLCAnc3VuZGF5J10gYXMgY29uc3Q7XG5leHBvcnQgdHlwZSBXZWVrU3RhcnQgPSAodHlwZW9mIFdFRUtfU1RBUlRTKVtudW1iZXJdO1xuXG4vKipcbiAqIFZhbGlkYXRlIGFuIElBTkEgdGltZXpvbmUgbmFtZSB1c2luZyB0aGUgcnVudGltZSdzIG93biB0eiBkYXRhYmFzZSwgc28gdGhlXG4gKiBhbGxvdy1saXN0IGNhbid0IGRyaWZ0IGZyb20gd2hhdCBQb3N0Z3JlcyBhbmQgYEludGxgIGFjdHVhbGx5IGFjY2VwdC5cbiAqXG4gKiBSZWplY3RzIGFueXRoaW5nIGBJbnRsLkRhdGVUaW1lRm9ybWF0YCB3b24ndCB0YWtlLiBUaGF0IG1hdHRlcnMgYmV5b25kXG4gKiBjb3JyZWN0bmVzczogdGhlIHZhbHVlIGlzIGludGVycG9sYXRlZCBpbnRvIGBBVCBUSU1FIFpPTkVgLCBhbmQgd2hpbGUgaXQgZ29lc1xuICogaW4gYXMgYSBib3VuZCBwYXJhbWV0ZXIsIGEgbmFtZSBQb3N0Z3JlcyByZWplY3RzIHN1cmZhY2VzIGFzIGFuIG9wYXF1ZSBxdWVyeVxuICogZXJyb3IgcmF0aGVyIHRoYW4gYSA0MDAgbmFtaW5nIHRoZSBmaWVsZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzVmFsaWRUaW1lem9uZSh0ejogc3RyaW5nKTogYm9vbGVhbiB7XG4gIC8vIEEgYmFyZSBvZmZzZXQgbGlrZSBgKzA1OjAwYCBpcyBhY2NlcHRlZCBieSBQb3N0Z3JlcyBidXQgbm90IGJ5IEludGwsIGFuZCBpdFxuICAvLyBoYXMgbm8gRFNUIHJ1bGVzIOKAlCB3aGljaCBpcyBleGFjdGx5IHdoYXQgYSByZXBvcnQgcGVyaW9kIG11c3QgcmVzcGVjdC5cbiAgaWYgKCEvXltBLVphLXpdW0EtWmEtejAtOStfXFwtXSooXFwvW0EtWmEtejAtOStfXFwtXSspKiQvLnRlc3QodHopKSByZXR1cm4gZmFsc2U7XG4gIHRyeSB7XG4gICAgbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQoJ2VuLVVTJywgeyB0aW1lWm9uZTogdHogfSk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG4vKipcbiAqIFBhcnNlIGEgYD90ej1gIHJlcG9ydCB0aW1lem9uZSwgZmFsbGluZyBiYWNrIHRvIGBvcmdEZWZhdWx0YCBhbmQgdGhlbiBVVEMuXG4gKiBSZXR1cm5zIHRoZSB2YWxpZGF0ZWQgbmFtZSBvciBgeyBlcnJvciB9YC5cbiAqXG4gKiBFdmVyeSB0aW1lLWJ1Y2tldGVkIHJlcG9ydCB0YWtlcyBvbmU6IGJ1Y2tldGluZyBpbiB0aGUgZGF0YWJhc2Ugc2Vzc2lvbidzXG4gKiB0aW1lem9uZSAoVVRDIGluIGV2ZXJ5IGRlcGxveSkgbWVhbnQgYSBVUyB0ZWFtJ3MgXCJNb25kYXlcIiByZXBvcnQgY3V0IG9mZiBTdW5kYXlcbiAqIGV2ZW5pbmcsIHNvIHRoZSB3ZWVrIGEgbWFuYWdlciByZWFkIHdhcyBub3QgdGhlIHdlZWsgdGhlIHRlYW0gd29ya2VkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VSZXBvcnRUaW1lem9uZShcbiAgcXVlcnk6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICBvcmdEZWZhdWx0Pzogc3RyaW5nLFxuKTogc3RyaW5nIHwgeyBlcnJvcjogc3RyaW5nIH0ge1xuICBjb25zdCByYXcgPSBxdWVyeS50eiA/PyBxdWVyeS50aW1lem9uZTtcbiAgY29uc3QgdHogPSB0eXBlb2YgcmF3ID09PSAnc3RyaW5nJyAmJiByYXcubGVuZ3RoID4gMCA/IHJhdyA6IChvcmdEZWZhdWx0ID8/ICdVVEMnKTtcbiAgaWYgKCFpc1ZhbGlkVGltZXpvbmUodHopKSByZXR1cm4geyBlcnJvcjogYHR6IG11c3QgYmUgYSB2YWxpZCBJQU5BIHRpbWV6b25lIG5hbWUgKGUuZy4gQW1lcmljYS9DaGljYWdvKSwgZ290OiAke3R6fWAgfTtcbiAgcmV0dXJuIHR6O1xufVxuXG4vKiogUGFyc2UgYSBgP3dlZWtTdGFydD1gIHZhbHVlLCBmYWxsaW5nIGJhY2sgdG8gYG9yZ0RlZmF1bHRgIGFuZCB0aGVuIE1vbmRheS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZVdlZWtTdGFydChcbiAgcXVlcnk6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICBvcmdEZWZhdWx0Pzogc3RyaW5nLFxuKTogV2Vla1N0YXJ0IHwgeyBlcnJvcjogc3RyaW5nIH0ge1xuICBjb25zdCByYXcgPSBxdWVyeS53ZWVrU3RhcnQgPz8gb3JnRGVmYXVsdCA/PyAnbW9uZGF5JztcbiAgY29uc3QgdmFsdWUgPSBTdHJpbmcocmF3KTtcbiAgaWYgKCFXRUVLX1NUQVJUUy5pbmNsdWRlcyh2YWx1ZSBhcyBXZWVrU3RhcnQpKSB7XG4gICAgcmV0dXJuIHsgZXJyb3I6IGB3ZWVrU3RhcnQgbXVzdCBiZSBvbmUgb2Y6ICR7V0VFS19TVEFSVFMuam9pbignLCAnKX1gIH07XG4gIH1cbiAgcmV0dXJuIHZhbHVlIGFzIFdlZWtTdGFydDtcbn1cblxuLyoqXG4gKiBQYXJzZSArIHZhbGlkYXRlIGEgYD9pbnRlcnZhbD1gIHJlcG9ydCBidWNrZXQgKGRlZmF1bHRzIHRvICd3ZWVrJykuIFJldHVybnMgdGhlXG4gKiB2YWxpZGF0ZWQgaW50ZXJ2YWwgb3IgYHsgZXJyb3IgfWAuIFNoYXJlZCBieSB0aGUgdGltZXNlcmllcyByZXBvcnQgcm91dGVzIHNvIHRoZVxuICogZGVmYXVsdCArIGFsbG93LWxpc3QgKyBlcnJvciBtZXNzYWdlIGxpdmUgaW4gb25lIHBsYWNlLlxuICpcbiAqIEBleGFtcGxlXG4gKiBjb25zdCBpbnRlcnZhbCA9IHBhcnNlUmVwb3J0SW50ZXJ2YWwocmVxLnF1ZXJ5KTtcbiAqIGlmICh0eXBlb2YgaW50ZXJ2YWwgPT09ICdvYmplY3QnKSByZXR1cm4gc2VuZEJhZFJlcXVlc3QocmVzLCBpbnRlcnZhbC5lcnJvciwgRXJyb3JDb2RlLlZBTElEQVRJT05fRVJST1IpO1xuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VSZXBvcnRJbnRlcnZhbChxdWVyeTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pOiBSZXBvcnRJbnRlcnZhbCB8IHsgZXJyb3I6IHN0cmluZyB9IHtcbiAgY29uc3QgaW50ZXJ2YWwgPSBTdHJpbmcocXVlcnkuaW50ZXJ2YWwgPz8gJ3dlZWsnKTtcbiAgaWYgKCFSRVBPUlRfSU5URVJWQUxTLmluY2x1ZGVzKGludGVydmFsIGFzIFJlcG9ydEludGVydmFsKSkge1xuICAgIHJldHVybiB7IGVycm9yOiBgaW50ZXJ2YWwgbXVzdCBiZSBvbmUgb2Y6ICR7UkVQT1JUX0lOVEVSVkFMUy5qb2luKCcsICcpfWAgfTtcbiAgfVxuICByZXR1cm4gaW50ZXJ2YWwgYXMgUmVwb3J0SW50ZXJ2YWw7XG59XG5cbi8qKlxuICogUGFyc2UgYSBgP2Zyb209JnRvPWAgZGF0ZSByYW5nZSB3aXRoIGRlZmF1bHRzIG9mIFwiMzAgZGF5cyBhZ28g4oaSIG5vd1wiLlxuICogUmVqZWN0cyBub24tc3RyaW5nIGlucHV0cyAoRXhwcmVzcydzIHBhcnNlciBjYW4gcHJvZHVjZSBzdHJpbmdbXSBmb3JcbiAqIHJlcGVhdGVkIGtleXMpLCBpbnZhbGlkIElTTyB0aW1lc3RhbXBzLCBhbmQgaW52ZXJ0ZWQgcmFuZ2VzLlxuICpcbiAqIFJldHVybnMgZWl0aGVyIGB7IGZyb20sIHRvIH1gIElTTyBzdHJpbmdzIG9yIGB7IGVycm9yIH1gLlxuICpcbiAqIEBleGFtcGxlXG4gKiBjb25zdCByYW5nZSA9IHBhcnNlRGF0ZVJhbmdlKHJlcS5xdWVyeSk7XG4gKiBpZiAoJ2Vycm9yJyBpbiByYW5nZSkgcmV0dXJuIHNlbmRCYWRSZXF1ZXN0KHJlcywgcmFuZ2UuZXJyb3IsIEVycm9yQ29kZS5WQUxJREFUSU9OX0VSUk9SKTtcbiAqIGNvbnN0IHJvd3MgPSBhd2FpdCBzdmMubGlzdChyYW5nZS5mcm9tLCByYW5nZS50byk7XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZURhdGVSYW5nZShcbiAgcXVlcnk6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICBvcHRpb25zOiB7IG1heFJhbmdlTXM/OiBudW1iZXI7IGRlZmF1bHREYXlzQmFjaz86IG51bWJlciB9ID0ge30sXG4pOiB7IGZyb206IHN0cmluZzsgdG86IHN0cmluZyB9IHwgeyBlcnJvcjogc3RyaW5nIH0ge1xuICBjb25zdCB7IG1heFJhbmdlTXMsIGRlZmF1bHREYXlzQmFjayA9IDMwIH0gPSBvcHRpb25zO1xuXG4gIGNvbnN0IHJhd0Zyb20gPSBxdWVyeS5mcm9tO1xuICBjb25zdCByYXdUbyA9IHF1ZXJ5LnRvO1xuXG4gIGlmIChyYXdGcm9tICE9PSB1bmRlZmluZWQgJiYgdHlwZW9mIHJhd0Zyb20gIT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIHsgZXJyb3I6ICdcImZyb21cIiBtdXN0IGJlIGEgc2luZ2xlIElTTyB0aW1lc3RhbXAgc3RyaW5nJyB9O1xuICB9XG4gIGlmIChyYXdUbyAhPT0gdW5kZWZpbmVkICYmIHR5cGVvZiByYXdUbyAhPT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4geyBlcnJvcjogJ1widG9cIiBtdXN0IGJlIGEgc2luZ2xlIElTTyB0aW1lc3RhbXAgc3RyaW5nJyB9O1xuICB9XG5cbiAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcbiAgY29uc3QgZnJvbVN0ciA9IHJhd0Zyb20gPz8gbmV3IERhdGUobm93IC0gZGVmYXVsdERheXNCYWNrICogMjQgKiA2MCAqIDYwICogMTAwMCkudG9JU09TdHJpbmcoKTtcbiAgY29uc3QgdG9TdHIgPSByYXdUbyA/PyBuZXcgRGF0ZShub3cpLnRvSVNPU3RyaW5nKCk7XG5cbiAgY29uc3QgZnJvbU1zID0gRGF0ZS5wYXJzZShmcm9tU3RyKTtcbiAgY29uc3QgdG9NcyA9IERhdGUucGFyc2UodG9TdHIpO1xuICBpZiAoIU51bWJlci5pc0Zpbml0ZShmcm9tTXMpKSByZXR1cm4geyBlcnJvcjogJ1wiZnJvbVwiIGlzIG5vdCBhIHZhbGlkIElTTyB0aW1lc3RhbXAnIH07XG4gIGlmICghTnVtYmVyLmlzRmluaXRlKHRvTXMpKSByZXR1cm4geyBlcnJvcjogJ1widG9cIiBpcyBub3QgYSB2YWxpZCBJU08gdGltZXN0YW1wJyB9O1xuICBpZiAoZnJvbU1zID4gdG9NcykgcmV0dXJuIHsgZXJyb3I6ICdcImZyb21cIiBtdXN0IGJlIGVhcmxpZXIgdGhhbiBcInRvXCInIH07XG4gIGlmIChtYXhSYW5nZU1zICE9PSB1bmRlZmluZWQgJiYgdG9NcyAtIGZyb21NcyA+IG1heFJhbmdlTXMpIHtcbiAgICByZXR1cm4geyBlcnJvcjogYERhdGUgcmFuZ2UgZXhjZWVkcyBtYXhpbXVtIG9mICR7TWF0aC5mbG9vcihtYXhSYW5nZU1zIC8gKDI0ICogNjAgKiA2MCAqIDEwMDApKX0gZGF5c2AgfTtcbiAgfVxuXG4gIHJldHVybiB7IGZyb206IGZyb21TdHIsIHRvOiB0b1N0ciB9O1xufVxuIl19
|
|
253
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyYW1zLmpzIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvcGFyYW1zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7QUFFdEMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBb0JsRTs7Ozs7Ozs7Ozs7Ozs7O0dBZUc7QUFDSCxNQUFNLFVBQVUsUUFBUSxDQUN0QixNQUFrQyxFQUNsQyxHQUFXO0lBRVgsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzFCLElBQUksS0FBSyxLQUFLLFNBQVMsRUFBRSxDQUFDO1FBQ3hCLE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7SUFDRCxPQUFPLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO0FBQ2pELENBQUM7QUFFRDs7Ozs7Ozs7Ozs7O0dBWUc7QUFDSCxNQUFNLFVBQVUsYUFBYSxDQUFDLEtBQWMsRUFBRSxZQUFvQjtJQUNoRSxJQUFJLEtBQUssS0FBSyxTQUFTLElBQUksS0FBSyxLQUFLLElBQUksSUFBSSxLQUFLLEtBQUssRUFBRTtRQUFFLE9BQU8sWUFBWSxDQUFDO0lBQy9FLE1BQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDM0MsT0FBTyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO0FBQy9DLENBQUM7QUFFRDs7Ozs7Ozs7OztHQVVHO0FBQ0gsTUFBTSxVQUFVLGdCQUFnQixDQUFDLEtBQWM7SUFDN0MsSUFBSSxLQUFLLEtBQUssU0FBUyxJQUFJLEtBQUssS0FBSyxJQUFJLElBQUksS0FBSyxLQUFLLEVBQUU7UUFBRSxPQUFPLFNBQVMsQ0FBQztJ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QU0sR0FBRyxVQUFVLEVBQUUsQ0FBQztRQUMzRCxPQUFPLEVBQUUsS0FBSyxFQUFFLGlDQUFpQyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQzNHLENBQUM7SUFFRCxPQUFPLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLENBQUM7QUFDdEMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG5pbXBvcnQgeyBNQVhfUEFHRV9PRkZTRVQgfSBmcm9tICcuLi92YWxpZGF0aW9uL2NvbW1vbi1zY2hlbWFzLmpzJztcblxuLyoqXG4gKiBTaGFwZSBjb252ZW50aW9uIGZvciB0aGUgaW5saW5lIHBhcnNlLWd1YXJkIGhlbHBlcnMgYmVsb3cuXG4gKlxuICogVGhlc2UgcmV0dXJuIGEgbGlnaHR3ZWlnaHQgYHsgdmFsdWUgfSB8IHsgZXJyb3IgfWAgKG5hcnJvd2VkIHdpdGhcbiAqIGAnZXJyb3InIGluIHJlc3VsdGApIOKAlCBkZWxpYmVyYXRlbHkgRElTVElOQ1QgZnJvbSB0aGUgc2NoZW1hLXZhbGlkYXRpb25cbiAqIGBWYWxpZGF0aW9uUmVzdWx0PFQ+YCAoYHsgb2ssIHZhbHVlIH0gfCB7IG9rLCBlcnJvciB9YCkgaW5cbiAqIGB2YWxpZGF0aW9uL21pZGRsZXdhcmUudHNgLiBab2Qgc2NoZW1hIHBhcnNpbmcgdXNlcyB0aGUgYG9rYC1kaXNjcmltaW5hdGVkXG4gKiBzaGFwZTsgdGhlc2UgYWQtaG9jIHJlcXVlc3QtcGFyYW1ldGVyIGd1YXJkcyB1c2UgYCdlcnJvcicgaW5gLiBUaGUgc3BsaXQgaXNcbiAqIGludGVudGlvbmFsIGFuZCBkb2N1bWVudGVkIChzZWUgdGhlIG5vdGUgb24gYFZhbGlkYXRpb25SZXN1bHRgKTogY29udmVyZ2luZ1xuICogdGhlbSB3b3VsZCBjaHVybiBldmVyeSBgJ2Vycm9yJyBpbiByZXN1bHRgIGNhbGwgc2l0ZSBhY3Jvc3MgdGhlIGRvd25zdHJlYW1cbiAqIHNlcnZpY2VzIHdpdGggbm8gYmVoYXZpb3VyYWwgY2hhbmdlLCBzbyBpdCdzIGxlZnQgYXMgYSBkb2N1bWVudGVkIGNvbnZlbnRpb24uXG4gKi9cblxuLyoqXG4gKiBFeHByZXNzIDUgcGFyYW1ldGVyIHR5cGUuXG4gKi9cbnR5cGUgUGFyYW1WYWx1ZSA9IHN0cmluZyB8IHN0cmluZ1tdIHwgdW5kZWZpbmVkO1xuXG4vKipcbiAqIEV4dHJhY3QgYSBzaW5nbGUgc3RyaW5nIHBhcmFtZXRlciBmcm9tIEV4cHJlc3MgNSByb3V0ZSBwYXJhbXMuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFJlcXVlc3QgcGFyYW1zIG9iamVjdFxuICogQHBhcmFtIGtleSAtIFBhcmFtZXRlciBrZXlcbiAqIEByZXR1cm5zIFRoZSBwYXJhbWV0ZXIgdmFsdWUgYXMgYSBzdHJpbmcsIG9yIHVuZGVmaW5lZCBpZiBub3QgcHJlc2VudFxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiAvLyBSb3V0ZTogR0VUIC9wbHVnaW5zLzppZFxuICogY29uc3QgaWQgPSBnZXRQYXJhbShyZXEucGFyYW1zLCAnaWQnKTtcbiAqIGlmICghaWQpIHtcbiAqICAgcmV0dXJuIHNlbmRFcnJvcihyZXMsIDQwMCwgJ01pc3NpbmcgaWQgcGFyYW1ldGVyJyk7XG4gKiB9XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFBhcmFtKFxuICBwYXJhbXM6IFJlY29yZDxzdHJpbmcsIFBhcmFtVmFsdWU+LFxuICBrZXk6IHN0cmluZyxcbik6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IHZhbHVlID0gcGFyYW1zW2tleV07XG4gIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuICByZXR1cm4gQXJyYXkuaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZVswXSA6IHZhbHVlO1xufVxuXG4vKipcbiAqIFBhcnNlIGEgcXVlcnkgcGFyYW1ldGVyIGFzIGFuIGludGVnZXIuXG4gKlxuICogQHBhcmFtIHZhbHVlIC0gUXVlcnkgcGFyYW1ldGVyIHZhbHVlXG4gKiBAcGFyYW0gZGVmYXVsdFZhbHVlIC0gRGVmYXVsdCB2YWx1ZSBpZiBwYXJzaW5nIGZhaWxzXG4gKiBAcmV0dXJucyBQYXJzZWQgaW50ZWdlclxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBsaW1pdCA9IHBhcnNlUXVlcnlJbnQocmVxLnF1ZXJ5LmxpbWl0LCAxMCk7XG4gKiBjb25zdCBvZmZzZXQgPSBwYXJzZVF1ZXJ5SW50KHJlcS5xdWVyeS5vZmZzZXQsIDApO1xuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZVF1ZXJ5SW50KHZhbHVlOiB1bmtub3duLCBkZWZhdWx0VmFsdWU6IG51bWJlcik6IG51bWJlciB7XG4gIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSAnJykgcmV0dXJuIGRlZmF1bHRWYWx1ZTtcbiAgY29uc3QgcGFyc2VkID0gcGFyc2VJbnQoU3RyaW5nKHZhbHVlKSwgMTApO1xuICByZXR1cm4gaXNOYU4ocGFyc2VkKSA/IGRlZmF1bHRWYWx1ZSA6IHBhcnNlZDtcbn1cblxuLyoqXG4gKiBQYXJzZSBhIHF1ZXJ5IHBhcmFtZXRlciBhcyBhIHN0cmluZy5cbiAqXG4gKiBAcGFyYW0gdmFsdWUgLSBRdWVyeSBwYXJhbWV0ZXIgdmFsdWVcbiAqIEByZXR1cm5zIFN0cmluZyB2YWx1ZSBvciB1bmRlZmluZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3Qgc2VhcmNoID0gcGFyc2VRdWVyeVN0cmluZyhyZXEucXVlcnkuc2VhcmNoKTtcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VRdWVyeVN0cmluZyh2YWx1ZTogdW5rbm93bik6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSAnJykgcmV0dXJuIHVuZGVmaW5lZDtcbiAgcmV0dXJuIFN0cmluZyh2YWx1ZSk7XG59XG5cbi8qKlxuICogUGFyc2UgYW4gb3B0aW9uYWwgSVNPIGRhdGUgcXVlcnkgcGFyYW06IGB1bmRlZmluZWRgIHdoZW4gYWJzZW50LCBgbnVsbGAgd2hlblxuICogbWFsZm9ybWVkICh0aGUgcm91dGUgYW5zd2VycyBhIDQwMCksIGVsc2UgdGhlIERhdGUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZU9wdGlvbmFsRGF0ZShyYXc6IHVua25vd24pOiBEYXRlIHwgdW5kZWZpbmVkIHwgbnVsbCB7XG4gIGNvbnN0IHMgPSBwYXJzZVF1ZXJ5U3RyaW5nKHJhdyk7XG4gIGlmICghcykgcmV0dXJuIHVuZGVmaW5lZDtcbiAgY29uc3QgZCA9IG5ldyBEYXRlKHMpO1xuICByZXR1cm4gTnVtYmVyLmlzTmFOKGQuZ2V0VGltZSgpKSA/IG51bGwgOiBkO1xufVxuXG4vKipcbiAqIFBhcnNlIGEgc3RyaW5nIHRvIGEgcG9zaXRpdmUgaW50ZWdlciwgcmV0dXJuaW5nIGEgZmFsbGJhY2sgaWYgaW52YWxpZC5cbiAqIFVzZWZ1bCBmb3IgcGFyc2luZyBlbnZpcm9ubWVudCB2YXJpYWJsZXMgd2l0aCBudW1lcmljIGRlZmF1bHRzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VQb3NpdGl2ZUludCh2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkLCBmYWxsYmFjazogbnVtYmVyKTogbnVtYmVyIHtcbiAgaWYgKCF2YWx1ZSkgcmV0dXJuIGZhbGxiYWNrO1xuICBjb25zdCBwYXJzZWQgPSBwYXJzZUludCh2YWx1ZSwgMTApO1xuICByZXR1cm4gTnVtYmVyLmlzRmluaXRlKHBhcnNlZCkgJiYgcGFyc2VkID4gMCA/IHBhcnNlZCA6IGZhbGxiYWNrO1xufVxuXG4vKipcbiAqIFBhcnNlIGEgcXVlcnkgaW50LCB0aGVuIGNsYW1wIHRvIGBbMSwgbWF4XWAuIFJldHVybnMgYGRlZmF1bHRWYWx1ZWAgKGFmdGVyXG4gKiB0aGUgc2FtZSBjbGFtcCkgd2hlbiB0aGUgaW5wdXQgaXMgbWlzc2luZy9pbnZhbGlkLiBVc2UgZm9yIGBsaW1pdGAtc3R5bGVcbiAqIHF1ZXJ5IHBhcmFtZXRlcnMgd2hlcmUgYW4gdW5ib3VuZGVkIHZhbHVlIHdvdWxkIGNvc3QgcmVhbCBtb25leS5cbiAqXG4gKiBAZXhhbXBsZVxuICogY29uc3QgbGltaXQgPSBwYXJzZVF1ZXJ5SW50Q2xhbXBlZChyZXEucXVlcnkubGltaXQsIDUwLCAxMDAwKTtcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlUXVlcnlJbnRDbGFtcGVkKFxuICB2YWx1ZTogdW5rbm93bixcbiAgZGVmYXVsdFZhbHVlOiBudW1iZXIsXG4gIG1heDogbnVtYmVyLFxuKTogbnVtYmVyIHtcbiAgY29uc3QgcmF3ID0gcGFyc2VRdWVyeUludCh2YWx1ZSwgZGVmYXVsdFZhbHVlKTtcbiAgcmV0dXJuIE1hdGgubWF4KDEsIE1hdGgubWluKHJhdywgbWF4KSk7XG59XG5cbi8qKiBPcHRpb25zIGZvciB7QGxpbmsgcGFyc2VQYWdlfS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGFnZU9wdGlvbnMge1xuICAvKiogUGFnZSBzaXplIHdoZW4gdGhlIGNhbGxlciBuYW1lcyBub25lLiBSRVFVSVJFRCDigJQgcGljayBpdCBkZWxpYmVyYXRlbHkuICovXG4gIGRlZjogbnVtYmVyO1xuICAvKiogSGFyZCBjZWlsaW5nIG9uIG9uZSBwYWdlLiBSRVFVSVJFRCDigJQgYW4gdW5ib3VuZGVkIGA/bGltaXQ9YCBjb3N0cyBtb25leS4gKi9cbiAgbWF4OiBudW1iZXI7XG4gIC8qKlxuICAgKiBEZWVwZXN0IGBvZmZzZXRgIGEgY2FsbGVyIG1heSByZWFjaC4gQSBudW1iZXIsIG9yIGEgZnVuY3Rpb24gb2YgdGhlXG4gICAqIHJlc29sdmVkIGxpbWl0IGZvciBzb3VyY2VzIHRoYXQgcGFnZSBhIGZpeGVkLWRlcHRoIHdpbmRvdyAodGhlIHBsdWdpbiBxdWV1ZVxuICAgKiByZWFkcyBgb2Zmc2V0ICsgbGltaXRgIGVudHJpZXMgZnJvbSBldmVyeSBzb3VyY2UsIHNvIGl0cyBkZXB0aCBjYXAgaXNcbiAgICogYERFUFRIIC0gbGltaXRgKS4gRGVmYXVsdHMgdG8gYE1BWF9QQUdFX09GRlNFVGAuXG4gICAqL1xuICBtYXhPZmZzZXQ/OiBudW1iZXIgfCAoKGxpbWl0OiBudW1iZXIpID0+IG51bWJlcik7XG59XG5cbi8qKiBBIHBhcnNlZCwgY2xhbXBlZCBgP2xpbWl0PSZvZmZzZXQ9YCB3aW5kb3cuICovXG5leHBvcnQgaW50ZXJmYWNlIFBhZ2Uge1xuICBsaW1pdDogbnVtYmVyO1xuICBvZmZzZXQ6IG51bWJlcjtcbn1cblxuLyoqXG4gKiBUSEUgcGFnaW5hdGlvbiBwcmltaXRpdmUuIFBhcnNlIGFuZCBjbGFtcCBgbGltaXRgL2BvZmZzZXRgIGZyb20gYSBxdWVyeSAob3JcbiAqIGZyb20gYSBzZXJ2aWNlLWxheWVyIG9wdGlvbnMgb2JqZWN0IOKAlCBudW1lcmljIHZhbHVlcyB3b3JrIHRvbykuXG4gKlxuICogYGxpbWl0YCBjbGFtcHMgdG8gYFsxLCBtYXhdYCBhbmQgZmFsbHMgYmFjayB0byBgZGVmYDsgYG9mZnNldGAgY2xhbXBzIHRvXG4gKiBgWzAsIG1heE9mZnNldF1gLiBSb3V0ZSBkZWZhdWx0cyBhcmUgcGVyLXJvdXRlIOKAlCBhIHF1ZXVlIGxpc3RpbmcgYW5kIGEgbWVtYmVyXG4gKiByb3N0ZXIgd2FudCBkaWZmZXJlbnQgcGFnZSBzaXplcyDigJQgYnV0IHRoZXkgYXJlIERFQ0xBUkVEIGhlcmUgcmF0aGVyIHRoYW5cbiAqIGhhbmQtcm9sbGVkIHdpdGggYE1hdGgubWluKE1hdGgubWF4KC4uLikpYCBhdCB0aGUgY2FsbCBzaXRlLCBhbmQgbm8gY2FsbGVyXG4gKiBjYW4gZm9yZ2V0IHRoZSBjYXAuXG4gKlxuICogQGV4YW1wbGVcbiAqIGNvbnN0IHsgbGltaXQsIG9mZnNldCB9ID0gcGFyc2VQYWdlKHJlcS5xdWVyeSwgeyBkZWY6IDUwLCBtYXg6IDIwMCB9KTtcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlUGFnZShxdWVyeTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sIG9wdHM6IFBhZ2VPcHRpb25zKTogUGFnZSB7XG4gIGNvbnN0IGxpbWl0ID0gTWF0aC5tYXgoMSwgTWF0aC5taW4ocGFyc2VRdWVyeUludChxdWVyeS5saW1pdCwgb3B0cy5kZWYpLCBvcHRzLm1heCkpO1xuICBjb25zdCByYXdNYXhPZmZzZXQgPSB0eXBlb2Ygb3B0cy5tYXhPZmZzZXQgPT09ICdmdW5jdGlvbicgPyBvcHRzLm1heE9mZnNldChsaW1pdCkgOiBvcHRzLm1heE9mZnNldDtcbiAgY29uc3QgbWF4T2Zmc2V0ID0gTWF0aC5tYXgoMCwgcmF3TWF4T2Zmc2V0ID8/IE1BWF9QQUdFX09GRlNFVCk7XG4gIGNvbnN0IG9mZnNldCA9IE1hdGgubWF4KDAsIE1hdGgubWluKHBhcnNlUXVlcnlJbnQocXVlcnkub2Zmc2V0LCAwKSwgbWF4T2Zmc2V0KSk7XG4gIHJldHVybiB7IGxpbWl0LCBvZmZzZXQgfTtcbn1cblxuLyoqXG4gKiBCdWxrLWFycmF5IHJlcXVlc3QgZ3VhcmQuIFZhbGlkYXRlcyB0aGF0IGB2YWx1ZWAgaXMgYW4gYXJyYXksIG5vbi1lbXB0eSxcbiAqIGFuZCB3aXRoaW4gdGhlIGNvbmZpZ3VyZWQgY2FwLiBSZXR1cm5zIHRoZSB0eXBlZCBhcnJheSBvciBhbiBlcnJvciBvYmplY3RcbiAqIHRoZSBjYWxsZXIgY2FuIGZvcndhcmQgdG8gYHNlbmRFcnJvcmAvYHNlbmRCYWRSZXF1ZXN0YC5cbiAqXG4gKiBSZXBsYWNlcyBhIGhhbmQtcm9sbGVkIGBpZiAoIUFycmF5LmlzQXJyYXkoLi4uKSkgeyAuLi4gfWAgKyBsZW5ndGggY2hlY2tcbiAqIGJsb2NrIHRoYXQgd2FzIGR1cGxpY2F0ZWQgYWNyb3NzIGJ1bGsgZW5kcG9pbnRzIGluIHBpcGVsaW5lLCBwbHVnaW4sXG4gKiBjb21wbGlhbmNlLCBldGMuXG4gKlxuICogQGV4YW1wbGVcbiAqIGNvbnN0IHJlc3VsdCA9IHZhbGlkYXRlQnVsa0FycmF5KHJlcS5ib2R5LmlkcywgJ2lkcycpO1xuICogaWYgKCdlcnJvcicgaW4gcmVzdWx0KSByZXR1cm4gc2VuZEJhZFJlcXVlc3QocmVzLCByZXN1bHQuZXJyb3IsIEVycm9yQ29kZS5WQUxJREFUSU9OX0VSUk9SKTtcbiAqIGNvbnN0IGlkcyA9IHJlc3VsdC52YWx1ZTtcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlQnVsa0FycmF5PFQgPSB1bmtub3duPihcbiAgdmFsdWU6IHVua25vd24sXG4gIGZpZWxkTmFtZTogc3RyaW5nLFxuICBtYXhJdGVtcz86IG51bWJlcixcbik6IHsgdmFsdWU6IFRbXSB9IHwgeyBlcnJvcjogc3RyaW5nIH0ge1xuICBpZiAoIUFycmF5LmlzQXJyYXkodmFsdWUpIHx8IHZhbHVlLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiB7IGVycm9yOiBgUmVxdWVzdCBib2R5IG11c3QgaW5jbHVkZSBhIG5vbi1lbXB0eSBcIiR7ZmllbGROYW1lfVwiIGFycmF5YCB9O1xuICB9XG4gIC8vIENvcmVDb25zdGFudHMuTUFYX0JVTEtfSVRFTVMgaXNuJ3QgaW1wb3J0ZWQgaGVyZSB0byBhdm9pZCBhIGNpcmN1bGFyXG4gIC8vIHBhdGggdGhyb3VnaCBjb25zdGFudHMvaW5kZXg7IGNhbGxlcnMgcGFzcyBpdCBleHBsaWNpdGx5IG9yIG9taXQgZm9yXG4gIC8vIG5vIHVwcGVyIGJvdW5kLlxuICBpZiAobWF4SXRlbXMgIT09IHVuZGVmaW5lZCAmJiB2YWx1ZS5sZW5ndGggPiBtYXhJdGVtcykge1xuICAgIHJldHVybiB7IGVycm9yOiBgTWF4aW11bSAke21heEl0ZW1zfSBpdGVtcyBwZXIgYnVsayBvcGVyYXRpb25gIH07XG4gIH1cbiAgcmV0dXJuIHsgdmFsdWU6IHZhbHVlIGFzIFRbXSB9O1xufVxuXG4vKipcbiAqIFN1cHBvcnRlZCBpbnRlcnZhbHMgZm9yIHRpbWUtYnVja2V0ZWQgcmVwb3J0IHF1ZXJpZXMuIFVzZWQgYXMgdGhlXG4gKiBgREFURV9UUlVOQ2AgZmlyc3QgYXJndW1lbnQgaW4gUG9zdGdyZXM7IHJlc3RyaWN0ZWQgdG8gYSBmaXhlZCBlbnVtIHNvXG4gKiB0aGUgdmFsdWUgY2FuIG5ldmVyIGJlIGluamVjdGVkIGludG8gcmF3IFNRTC5cbiAqL1xuZXhwb3J0IGNvbnN0IFJFUE9SVF9JTlRFUlZBTFMgPSBbJ2RheScsICd3ZWVrJywgJ21vbnRoJywgJ3F1YXJ0ZXInXSBhcyBjb25zdDtcbmV4cG9ydCB0eXBlIFJlcG9ydEludGVydmFsID0gKHR5cGVvZiBSRVBPUlRfSU5URVJWQUxTKVtudW1iZXJdO1xuXG4vKipcbiAqIFdoZXJlIGEgcmVwb3J0J3Mgd2VlayBzdGFydHMuIFBvc3RncmVzIGBEQVRFX1RSVU5DKCd3ZWVrJywg4oCmKWAgaXMgSVNPLTg2MDEgYW5kXG4gKiBBTFdBWVMgc3RhcnRzIE1vbmRheSwgd2l0aCBubyBvcHRpb24g4oCUIHNvIGEgU3VuZGF5LXdlZWsgb3JnIG5lZWRzIHRoZSBib3VuZGFyeVxuICogc2hpZnRlZCBleHBsaWNpdGx5IHJhdGhlciB0aGFuIGNvbmZpZ3VyZWQgaW4gdGhlIGRhdGFiYXNlLlxuICovXG5leHBvcnQgY29uc3QgV0VFS19TVEFSVFMgPSBbJ21vbmRheScsICdzdW5kYXknXSBhcyBjb25zdDtcbmV4cG9ydCB0eXBlIFdlZWtTdGFydCA9ICh0eXBlb2YgV0VFS19TVEFSVFMpW251bWJlcl07XG5cbi8qKlxuICogVmFsaWRhdGUgYW4gSUFOQSB0aW1lem9uZSBuYW1lIHVzaW5nIHRoZSBydW50aW1lJ3Mgb3duIHR6IGRhdGFiYXNlLCBzbyB0aGVcbiAqIGFsbG93LWxpc3QgY2FuJ3QgZHJpZnQgZnJvbSB3aGF0IFBvc3RncmVzIGFuZCBgSW50bGAgYWN0dWFsbHkgYWNjZXB0LlxuICpcbiAqIFJlamVjdHMgYW55dGhpbmcgYEludGwuRGF0ZVRpbWVGb3JtYXRgIHdvbid0IHRha2UuIFRoYXQgbWF0dGVycyBiZXlvbmRcbiAqIGNvcnJlY3RuZXNzOiB0aGUgdmFsdWUgaXMgaW50ZXJwb2xhdGVkIGludG8gYEFUIFRJTUUgWk9ORWAsIGFuZCB3aGlsZSBpdCBnb2VzXG4gKiBpbiBhcyBhIGJvdW5kIHBhcmFtZXRlciwgYSBuYW1lIFBvc3RncmVzIHJlamVjdHMgc3VyZmFjZXMgYXMgYW4gb3BhcXVlIHF1ZXJ5XG4gKiBlcnJvciByYXRoZXIgdGhhbiBhIDQwMCBuYW1pbmcgdGhlIGZpZWxkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNWYWxpZFRpbWV6b25lKHR6OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgLy8gQSBiYXJlIG9mZnNldCBsaWtlIGArMDU6MDBgIGlzIGFjY2VwdGVkIGJ5IFBvc3RncmVzIGJ1dCBub3QgYnkgSW50bCwgYW5kIGl0XG4gIC8vIGhhcyBubyBEU1QgcnVsZXMg4oCUIHdoaWNoIGlzIGV4YWN0bHkgd2hhdCBhIHJlcG9ydCBwZXJpb2QgbXVzdCByZXNwZWN0LlxuICBpZiAoIS9eW0EtWmEtel1bQS1aYS16MC05K19cXC1dKihcXC9bQS1aYS16MC05K19cXC1dKykqJC8udGVzdCh0eikpIHJldHVybiBmYWxzZTtcbiAgdHJ5IHtcbiAgICBuZXcgSW50bC5EYXRlVGltZUZvcm1hdCgnZW4tVVMnLCB7IHRpbWVab25lOiB0eiB9KTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbi8qKlxuICogUGFyc2UgYSBgP3R6PWAgcmVwb3J0IHRpbWV6b25lLCBmYWxsaW5nIGJhY2sgdG8gYG9yZ0RlZmF1bHRgIGFuZCB0aGVuIFVUQy5cbiAqIFJldHVybnMgdGhlIHZhbGlkYXRlZCBuYW1lIG9yIGB7IGVycm9yIH1gLlxuICpcbiAqIEV2ZXJ5IHRpbWUtYnVja2V0ZWQgcmVwb3J0IHRha2VzIG9uZTogYnVja2V0aW5nIGluIHRoZSBkYXRhYmFzZSBzZXNzaW9uJ3NcbiAqIHRpbWV6b25lIChVVEMgaW4gZXZlcnkgZGVwbG95KSBtZWFudCBhIFVTIHRlYW0ncyBcIk1vbmRheVwiIHJlcG9ydCBjdXQgb2ZmIFN1bmRheVxuICogZXZlbmluZywgc28gdGhlIHdlZWsgYSBtYW5hZ2VyIHJlYWQgd2FzIG5vdCB0aGUgd2VlayB0aGUgdGVhbSB3b3JrZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZVJlcG9ydFRpbWV6b25lKFxuICBxdWVyeTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gIG9yZ0RlZmF1bHQ/OiBzdHJpbmcsXG4pOiBzdHJpbmcgfCB7IGVycm9yOiBzdHJpbmcgfSB7XG4gIGNvbnN0IHJhdyA9IHF1ZXJ5LnR6ID8/IHF1ZXJ5LnRpbWV6b25lO1xuICBjb25zdCB0eiA9IHR5cGVvZiByYXcgPT09ICdzdHJpbmcnICYmIHJhdy5sZW5ndGggPiAwID8gcmF3IDogKG9yZ0RlZmF1bHQgPz8gJ1VUQycpO1xuICBpZiAoIWlzVmFsaWRUaW1lem9uZSh0eikpIHJldHVybiB7IGVycm9yOiBgdHogbXVzdCBiZSBhIHZhbGlkIElBTkEgdGltZXpvbmUgbmFtZSAoZS5nLiBBbWVyaWNhL0NoaWNhZ28pLCBnb3Q6ICR7dHp9YCB9O1xuICByZXR1cm4gdHo7XG59XG5cbi8qKiBQYXJzZSBhIGA/d2Vla1N0YXJ0PWAgdmFsdWUsIGZhbGxpbmcgYmFjayB0byBgb3JnRGVmYXVsdGAgYW5kIHRoZW4gTW9uZGF5LiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlV2Vla1N0YXJ0KFxuICBxdWVyeTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gIG9yZ0RlZmF1bHQ/OiBzdHJpbmcsXG4pOiBXZWVrU3RhcnQgfCB7IGVycm9yOiBzdHJpbmcgfSB7XG4gIGNvbnN0IHJhdyA9IHF1ZXJ5LndlZWtTdGFydCA/PyBvcmdEZWZhdWx0ID8/ICdtb25kYXknO1xuICBjb25zdCB2YWx1ZSA9IFN0cmluZyhyYXcpO1xuICBpZiAoIVdFRUtfU1RBUlRTLmluY2x1ZGVzKHZhbHVlIGFzIFdlZWtTdGFydCkpIHtcbiAgICByZXR1cm4geyBlcnJvcjogYHdlZWtTdGFydCBtdXN0IGJlIG9uZSBvZjogJHtXRUVLX1NUQVJUUy5qb2luKCcsICcpfWAgfTtcbiAgfVxuICByZXR1cm4gdmFsdWUgYXMgV2Vla1N0YXJ0O1xufVxuXG4vKipcbiAqIFBhcnNlICsgdmFsaWRhdGUgYSBgP2ludGVydmFsPWAgcmVwb3J0IGJ1Y2tldCAoZGVmYXVsdHMgdG8gJ3dlZWsnKS4gUmV0dXJucyB0aGVcbiAqIHZhbGlkYXRlZCBpbnRlcnZhbCBvciBgeyBlcnJvciB9YC4gU2hhcmVkIGJ5IHRoZSB0aW1lc2VyaWVzIHJlcG9ydCByb3V0ZXMgc28gdGhlXG4gKiBkZWZhdWx0ICsgYWxsb3ctbGlzdCArIGVycm9yIG1lc3NhZ2UgbGl2ZSBpbiBvbmUgcGxhY2UuXG4gKlxuICogQGV4YW1wbGVcbiAqIGNvbnN0IGludGVydmFsID0gcGFyc2VSZXBvcnRJbnRlcnZhbChyZXEucXVlcnkpO1xuICogaWYgKHR5cGVvZiBpbnRlcnZhbCA9PT0gJ29iamVjdCcpIHJldHVybiBzZW5kQmFkUmVxdWVzdChyZXMsIGludGVydmFsLmVycm9yLCBFcnJvckNvZGUuVkFMSURBVElPTl9FUlJPUik7XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZVJlcG9ydEludGVydmFsKHF1ZXJ5OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPik6IFJlcG9ydEludGVydmFsIHwgeyBlcnJvcjogc3RyaW5nIH0ge1xuICBjb25zdCBpbnRlcnZhbCA9IFN0cmluZyhxdWVyeS5pbnRlcnZhbCA/PyAnd2VlaycpO1xuICBpZiAoIVJFUE9SVF9JTlRFUlZBTFMuaW5jbHVkZXMoaW50ZXJ2YWwgYXMgUmVwb3J0SW50ZXJ2YWwpKSB7XG4gICAgcmV0dXJuIHsgZXJyb3I6IGBpbnRlcnZhbCBtdXN0IGJlIG9uZSBvZjogJHtSRVBPUlRfSU5URVJWQUxTLmpvaW4oJywgJyl9YCB9O1xuICB9XG4gIHJldHVybiBpbnRlcnZhbCBhcyBSZXBvcnRJbnRlcnZhbDtcbn1cblxuLyoqXG4gKiBQYXJzZSBhIGA/ZnJvbT0mdG89YCBkYXRlIHJhbmdlIHdpdGggZGVmYXVsdHMgb2YgXCIzMCBkYXlzIGFnbyDihpIgbm93XCIuXG4gKiBSZWplY3RzIG5vbi1zdHJpbmcgaW5wdXRzIChFeHByZXNzJ3MgcGFyc2VyIGNhbiBwcm9kdWNlIHN0cmluZ1tdIGZvclxuICogcmVwZWF0ZWQga2V5cyksIGludmFsaWQgSVNPIHRpbWVzdGFtcHMsIGFuZCBpbnZlcnRlZCByYW5nZXMuXG4gKlxuICogUmV0dXJucyBlaXRoZXIgYHsgZnJvbSwgdG8gfWAgSVNPIHN0cmluZ3Mgb3IgYHsgZXJyb3IgfWAuXG4gKlxuICogQGV4YW1wbGVcbiAqIGNvbnN0IHJhbmdlID0gcGFyc2VEYXRlUmFuZ2UocmVxLnF1ZXJ5KTtcbiAqIGlmICgnZXJyb3InIGluIHJhbmdlKSByZXR1cm4gc2VuZEJhZFJlcXVlc3QocmVzLCByYW5nZS5lcnJvciwgRXJyb3JDb2RlLlZBTElEQVRJT05fRVJST1IpO1xuICogY29uc3Qgcm93cyA9IGF3YWl0IHN2Yy5saXN0KHJhbmdlLmZyb20sIHJhbmdlLnRvKTtcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlRGF0ZVJhbmdlKFxuICBxdWVyeTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gIG9wdGlvbnM6IHsgbWF4UmFuZ2VNcz86IG51bWJlcjsgZGVmYXVsdERheXNCYWNrPzogbnVtYmVyIH0gPSB7fSxcbik6IHsgZnJvbTogc3RyaW5nOyB0bzogc3RyaW5nIH0gfCB7IGVycm9yOiBzdHJpbmcgfSB7XG4gIGNvbnN0IHsgbWF4UmFuZ2VNcywgZGVmYXVsdERheXNCYWNrID0gMzAgfSA9IG9wdGlvbnM7XG5cbiAgY29uc3QgcmF3RnJvbSA9IHF1ZXJ5LmZyb207XG4gIGNvbnN0IHJhd1RvID0gcXVlcnkudG87XG5cbiAgaWYgKHJhd0Zyb20gIT09IHVuZGVmaW5lZCAmJiB0eXBlb2YgcmF3RnJvbSAhPT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4geyBlcnJvcjogJ1wiZnJvbVwiIG11c3QgYmUgYSBzaW5nbGUgSVNPIHRpbWVzdGFtcCBzdHJpbmcnIH07XG4gIH1cbiAgaWYgKHJhd1RvICE9PSB1bmRlZmluZWQgJiYgdHlwZW9mIHJhd1RvICE9PSAnc3RyaW5nJykge1xuICAgIHJldHVybiB7IGVycm9yOiAnXCJ0b1wiIG11c3QgYmUgYSBzaW5nbGUgSVNPIHRpbWVzdGFtcCBzdHJpbmcnIH07XG4gIH1cblxuICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuICBjb25zdCBmcm9tU3RyID0gcmF3RnJvbSA/PyBuZXcgRGF0ZShub3cgLSBkZWZhdWx0RGF5c0JhY2sgKiAyNCAqIDYwICogNjAgKiAxMDAwKS50b0lTT1N0cmluZygpO1xuICBjb25zdCB0b1N0ciA9IHJhd1RvID8/IG5ldyBEYXRlKG5vdykudG9JU09TdHJpbmcoKTtcblxuICBjb25zdCBmcm9tTXMgPSBEYXRlLnBhcnNlKGZyb21TdHIpO1xuICBjb25zdCB0b01zID0gRGF0ZS5wYXJzZSh0b1N0cik7XG4gIGlmICghTnVtYmVyLmlzRmluaXRlKGZyb21NcykpIHJldHVybiB7IGVycm9yOiAnXCJmcm9tXCIgaXMgbm90IGEgdmFsaWQgSVNPIHRpbWVzdGFtcCcgfTtcbiAgaWYgKCFOdW1iZXIuaXNGaW5pdGUodG9NcykpIHJldHVybiB7IGVycm9yOiAnXCJ0b1wiIGlzIG5vdCBhIHZhbGlkIElTTyB0aW1lc3RhbXAnIH07XG4gIGlmIChmcm9tTXMgPiB0b01zKSByZXR1cm4geyBlcnJvcjogJ1wiZnJvbVwiIG11c3QgYmUgZWFybGllciB0aGFuIFwidG9cIicgfTtcbiAgaWYgKG1heFJhbmdlTXMgIT09IHVuZGVmaW5lZCAmJiB0b01zIC0gZnJvbU1zID4gbWF4UmFuZ2VNcykge1xuICAgIHJldHVybiB7IGVycm9yOiBgRGF0ZSByYW5nZSBleGNlZWRzIG1heGltdW0gb2YgJHtNYXRoLmZsb29yKG1heFJhbmdlTXMgLyAoMjQgKiA2MCAqIDYwICogMTAwMCkpfSBkYXlzYCB9O1xuICB9XG5cbiAgcmV0dXJuIHsgZnJvbTogZnJvbVN0ciwgdG86IHRvU3RyIH07XG59XG4iXX0=
|
|
@@ -14,7 +14,15 @@
|
|
|
14
14
|
* `vuln*` counts are present only then — an unscanned image sends no counts,
|
|
15
15
|
* so a numeric rule like `vulnCritical lt 1` cannot pass on a missing value.
|
|
16
16
|
* `vulnCriticalFixable` / `vulnHighFixable` count only the findings grype
|
|
17
|
-
* reports a fixed version for
|
|
17
|
+
* reports a fixed version for. They are NOT what the platform floor gates on,
|
|
18
|
+
* though they used to be: the floor is `isGatedFinding` — fixable OR
|
|
19
|
+
* KEV-listed, minus any `PLUGIN_VULN_WAIVERS` exemption. So a BLOCK-mode rule
|
|
20
|
+
* written to mirror the floor (`vulnCriticalFixable lt 1`) is blind to a
|
|
21
|
+
* KEV-gated UNFIXABLE Critical, which the floor does block. These attributes
|
|
22
|
+
* describe the SCAN; they are not a restatement of the gate, and a rule that
|
|
23
|
+
* needs the gate's answer should not be built from them.
|
|
24
|
+
* (The waiver half cannot bite here: `complianceVulnWarnings` skips the
|
|
25
|
+
* system org, and waivers are system-org-only.)
|
|
18
26
|
* - `runAsRoot`: the image config's effective USER is root (empty, `0`, `root`).
|
|
19
27
|
* - `packages`: package names from the signed SBOM.
|
|
20
28
|
* - `tags`: the plugin's keywords plus `key=value` labels (CIS 2.1 inventory).
|
|
@@ -78,4 +78,4 @@ export function derivePluginImageCompliance(row, packages) {
|
|
|
78
78
|
delete attributes[k];
|
|
79
79
|
return { attributes, deferredFields: packages === undefined ? ['packages'] : [] };
|
|
80
80
|
}
|
|
81
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2luLWNvbXBsaWFuY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvcGx1Z2luLWNvbXBsaWFuY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQTBEdEMsc0dBQXNHO0FBQ3RHLE1BQU0sQ0FBQyxNQUFNLDhCQUE4QixHQUFHO0lBQzVDLFFBQVEsRUFBRSxTQUFTLEVBQUUsY0FBYyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsU0FBUztJQUN4RSxxQkFBcUIsRUFBRSxpQkFBaUIsRUFBRSxXQUFXLEVBQUUsVUFBVTtDQUN6RCxDQUFDO0FBb0JYLE1BQU0sZ0JBQWdCLEdBQUcsdUJBQXVCLENBQUM7QUFFakQ7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLGtCQUFrQixDQUFDLEdBQXFEO0lBQ3RGLE9BQU8sR0FBRyxDQUFDLFNBQVMsS0FBSyxlQUFlLElBQUksR0FBRyxDQUFDLFVBQVUsS0FBSyxvQkFBb0IsQ0FBQztBQUN0RixDQUFDO0FBRUQsb0ZBQW9GO0FBQ3BGLE1BQU0sVUFBVSxvQkFBb0IsQ0FBQyxRQUFpQixFQUFFLE1BQWdCO0lBQ3RFLE1BQU0sSUFBSSxHQUFHLElBQUksR0FBRyxFQUFVLENBQUM7SUFDL0IsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7UUFDNUIsS0FBSyxNQUFNLENBQUMsSUFBSSxRQUFRO1lBQUUsSUFBSSxPQUFPLENBQUMsS0FBSyxRQUFRLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRTtnQkFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ3RGLENBQUM7SUFDRCxJQUFJLE1BQU0sSUFBSSxPQUFPLE1BQU0sS0FBSyxRQUFRLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7UUFDbkUsS0FBSyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBaUMsQ0FBQyxFQUFFLENBQUM7WUFDdkUsSUFBSSxPQUFPLENBQUMsS0FBSyxRQUFRLElBQUksT0FBTyxDQUFDLEtBQUssUUFBUSxJQUFJLE9BQU8sQ0FBQyxLQUFLLFNBQVM7Z0JBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzlHLENBQUM7SUFDSCxDQUFDO0lBQ0QsT0FBTyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUM7QUFDbkIsQ0FBQztBQUVELE1BQU0sV0FBVyxHQUFHLENBQUMsQ0FBVSxFQUFzQixFQUFFLENBQ3JELE9BQU8sQ0FBQyxLQUFLLFFBQVEsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztBQUU5RDs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW1CRztBQUNILE1BQU0sVUFBVSwyQkFBMkIsQ0FDekMsR0FBbUIsRUFDbkIsUUFBMEI7SUFFMUIsTUFBTSxJQUFJLEdBQUcsb0JBQW9CLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDNUQsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDN0IsT0FBTyxFQUFFLFVBQVUsRUFBRSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxFQUFFLGNBQWMsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNuRyxDQUFDO0lBQ0QsTUFBTSxPQUFPLEdBQUcsR0FBRyxDQUFDLFNBQVMsS0FBSyxJQUFJLElBQUksR0FBRyxDQUFDLFNBQVMsS0FBSyxTQUFTLENBQUM7SUFDdEUsTUFBTSxVQUFVLEdBQStCO1FBQzdDLElBQUk7UUFDSixNQUFNLEVBQUUsT0FBTyxHQUFHLENBQUMsV0FBVyxLQUFLLFFBQVEsSUFBSSxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQztRQUNyRixPQUFPO0tBQ1IsQ0FBQztJQUNGLElBQUksT0FBTyxFQUFFLENBQUM7UUFDWixVQUFVLENBQUMsWUFBWSxHQUFHLFdBQVcsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDeEQsVUFBVSxDQUFDLFFBQVEsR0FBRyxXQUFXLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ2hELFVBQVUsQ0FBQyxVQUFVLEdBQUcsV0FBVyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNwRCxVQUFVLENBQUMsT0FBTyxHQUFHLFdBQVcsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDOUMsVUFBVSxDQUFDLG1CQUFtQixHQUFHLFdBQVcsQ0FBQyxHQUFHLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUN0RSxVQUFVLENBQUMsZUFBZSxHQUFHLFdBQVcsQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDaEUsQ0FBQztJQUNELElBQUksT0FBTyxHQUFHLENBQUMsU0FBUyxLQUFLLFNBQVM7UUFBRSxVQUFVLENBQUMsU0FBUyxHQUFHLEdBQUcsQ0FBQyxTQUFTLENBQUM7SUFDN0UsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQztRQUFFLFVBQVUsQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO0lBQzVELEtBQUssTUFBTSxDQUFDLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUM7UUFBRSxJQUFJLFVBQVUsQ0FBQyxDQUFDLENBQUMsS0FBSyxTQUFTO1lBQUUsT0FBTyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDL0YsT0FBTyxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsUUFBUSxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUM7QUFDcEYsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG4vKipcbiAqIFBsdWdpbiBjb21wbGlhbmNlIGF0dHJpYnV0ZXM6IHdoYXQgdGhlIHBsdWdpbiBzZXJ2aWNlIHRlbGxzIGNvbXBsaWFuY2UgYWJvdXRcbiAqIGFuIHVwbG9hZGVkIHBsdWdpbiBhbmQgaXRzIHB1c2hlZCBpbWFnZSwgZGVyaXZlZCBmcm9tIHRoZSBzdG9yZWQgcGx1Z2luIHJvdy5cbiAqL1xuXG4vKipcbiAqIFRoZSBhdHRyaWJ1dGVzIHRoZSBwbHVnaW4gc2VydmljZSBzZW5kcyB0byBgL2NvbXBsaWFuY2UvdmFsaWRhdGUvcGx1Z2luYC5cbiAqXG4gKiBUaGUgc3BlYy9jb25maWcgZmllbGRzIGRlc2NyaWJlIHRoZSBwbHVnaW4gYXMgdXBsb2FkZWQuIFRoZSBpbWFnZSBmaWVsZHNcbiAqIGRlc2NyaWJlIHdoYXQgdGhlIHBsYXRmb3JtIGl0c2VsZiBlc3RhYmxpc2hlZCBhYm91dCB0aGUgcHVzaGVkIGltYWdlIOKAlCB0aGVcbiAqIGZhY3RzIHRoZSBjdXJhdGVkIFNPQzIvUENJL0NJUyBwbHVnaW4gcnVsZXMgZXZhbHVhdGU6XG4gKlxuICogLSBgc2lnbmVkYDogdGhlIGltYWdlIGRpZ2VzdCBjYXJyaWVzIHRoZSBwbGF0Zm9ybSdzIGNvc2lnbiBzaWduYXR1cmUuXG4gKiAtIGBzY2FubmVkYDogYSB2dWxuZXJhYmlsaXR5IHNjYW4gY29tcGxldGVkIChgc2Nhbm5lZEF0YCBpcyBzZXQpOyB0aGVcbiAqICAgYHZ1bG4qYCBjb3VudHMgYXJlIHByZXNlbnQgb25seSB0aGVuIOKAlCBhbiB1bnNjYW5uZWQgaW1hZ2Ugc2VuZHMgbm8gY291bnRzLFxuICogICBzbyBhIG51bWVyaWMgcnVsZSBsaWtlIGB2dWxuQ3JpdGljYWwgbHQgMWAgY2Fubm90IHBhc3Mgb24gYSBtaXNzaW5nIHZhbHVlLlxuICogICBgdnVsbkNyaXRpY2FsRml4YWJsZWAgLyBgdnVsbkhpZ2hGaXhhYmxlYCBjb3VudCBvbmx5IHRoZSBmaW5kaW5ncyBncnlwZVxuICogICByZXBvcnRzIGEgZml4ZWQgdmVyc2lvbiBmb3IgKHdoYXQgdGhlIHBsYXRmb3JtIGZsb29yIGdhdGVzIG9uKS5cbiAqIC0gYHJ1bkFzUm9vdGA6IHRoZSBpbWFnZSBjb25maWcncyBlZmZlY3RpdmUgVVNFUiBpcyByb290IChlbXB0eSwgYDBgLCBgcm9vdGApLlxuICogLSBgcGFja2FnZXNgOiBwYWNrYWdlIG5hbWVzIGZyb20gdGhlIHNpZ25lZCBTQk9NLlxuICogLSBgdGFnc2A6IHRoZSBwbHVnaW4ncyBrZXl3b3JkcyBwbHVzIGBrZXk9dmFsdWVgIGxhYmVscyAoQ0lTIDIuMSBpbnZlbnRvcnkpLlxuICpcbiAqIEltYWdlIGZpZWxkcyBhcmUgdW5rbm93biB1bnRpbCB0aGUgYnVpbGQgd29ya2VyIGhhcyBwdXNoZWQsIHNpZ25lZCBhbmRcbiAqIHNjYW5uZWQgdGhlIGltYWdlOyB0aGUgdXBsb2FkLXRpbWUgY2hlY2sgbGlzdHMgdGhlbSBpbiBgZGVmZXJyZWRGaWVsZHNgXG4gKiBhbmQgdGhlIHdvcmtlciByZS12YWxpZGF0ZXMgb25jZSB0aGV5IGFyZSByZWFsLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBsdWdpbkNvbXBsaWFuY2VBdHRyaWJ1dGVzIHtcbiAgbmFtZT86IHN0cmluZztcbiAgdmVyc2lvbj86IHN0cmluZztcbiAgcGx1Z2luVHlwZT86IHN0cmluZztcbiAgY29tcHV0ZVR5cGU/OiBzdHJpbmc7XG4gIHRpbWVvdXQ/OiBudW1iZXIgfCBudWxsO1xuICBmYWlsdXJlQmVoYXZpb3I/OiBzdHJpbmc7XG4gIGVudj86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG4gIGJ1aWxkQXJncz86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG4gIGluc3RhbGxDb21tYW5kcz86IHN0cmluZ1tdO1xuICBjb21tYW5kcz86IHN0cmluZ1tdO1xuICB2aXNpYmlsaXR5Pzogc3RyaW5nO1xuICBzZWNyZXRzPzogdW5rbm93bltdO1xuICBtZXRhZGF0YT86IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICBrZXl3b3Jkcz86IHN0cmluZ1tdO1xuICBidWlsZFR5cGU/OiBzdHJpbmc7XG4gIHRhZ3M/OiBzdHJpbmdbXTtcbiAgc2lnbmVkPzogYm9vbGVhbjtcbiAgc2Nhbm5lZD86IGJvb2xlYW47XG4gIHZ1bG5Dcml0aWNhbD86IG51bWJlcjtcbiAgdnVsbkhpZ2g/OiBudW1iZXI7XG4gIHZ1bG5NZWRpdW0/OiBudW1iZXI7XG4gIHZ1bG5Mb3c/OiBudW1iZXI7XG4gIHZ1bG5Dcml0aWNhbEZpeGFibGU/OiBudW1iZXI7XG4gIHZ1bG5IaWdoRml4YWJsZT86IG51bWJlcjtcbiAgcnVuQXNSb290PzogYm9vbGVhbjtcbiAgcGFja2FnZXM/OiBzdHJpbmdbXTtcbiAgW2tleTogc3RyaW5nXTogdW5rbm93bjtcbn1cblxuLyoqIFBsdWdpbiBhdHRyaWJ1dGVzIG9ubHkgdGhlIGJ1aWxkIHdvcmtlciBjYW4gZXN0YWJsaXNoIChzZWUge0BsaW5rIFBsdWdpbkNvbXBsaWFuY2VBdHRyaWJ1dGVzfSkuICovXG5leHBvcnQgY29uc3QgUExVR0lOX0lNQUdFX0NPTVBMSUFOQ0VfRklFTERTID0gW1xuICAnc2lnbmVkJywgJ3NjYW5uZWQnLCAndnVsbkNyaXRpY2FsJywgJ3Z1bG5IaWdoJywgJ3Z1bG5NZWRpdW0nLCAndnVsbkxvdycsXG4gICd2dWxuQ3JpdGljYWxGaXhhYmxlJywgJ3Z1bG5IaWdoRml4YWJsZScsICdydW5Bc1Jvb3QnLCAncGFja2FnZXMnLFxuXSBhcyBjb25zdDtcbmV4cG9ydCB0eXBlIFBsdWdpbkltYWdlQ29tcGxpYW5jZUZpZWxkID0gdHlwZW9mIFBMVUdJTl9JTUFHRV9DT01QTElBTkNFX0ZJRUxEU1tudW1iZXJdO1xuXG4vKiogVGhlIHN0b3JlZCBwbHVnaW4tcm93IGNvbHVtbnMgdGhlIGltYWdlIGZhY3RzIGRlcml2ZSBmcm9tIChhbnkgc3Vic2V0KS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGx1Z2luSW1hZ2VSb3cge1xuICBidWlsZFR5cGU/OiB1bmtub3duO1xuICBwbHVnaW5UeXBlPzogdW5rbm93bjtcbiAgaW1hZ2VEaWdlc3Q/OiB1bmtub3duO1xuICBzY2FubmVkQXQ/OiB1bmtub3duO1xuICB2dWxuQ3JpdGljYWw/OiB1bmtub3duO1xuICB2dWxuSGlnaD86IHVua25vd247XG4gIHZ1bG5NZWRpdW0/OiB1bmtub3duO1xuICB2dWxuTG93PzogdW5rbm93bjtcbiAgdnVsbkNyaXRpY2FsRml4YWJsZT86IHVua25vd247XG4gIHZ1bG5IaWdoRml4YWJsZT86IHVua25vd247XG4gIHJ1bkFzUm9vdD86IHVua25vd247XG4gIGtleXdvcmRzPzogdW5rbm93bjtcbiAgbGFiZWxzPzogdW5rbm93bjtcbn1cblxuY29uc3QgU0lHTkVEX0RJR0VTVF9SRSA9IC9ec2hhMjU2OlswLTlhLWZdezY0fSQvO1xuXG4vKipcbiAqIFdoZXRoZXIgYSBwbHVnaW4gcnVucyBvbiBpdHMgb3duIGltYWdlOiBgbWV0YWRhdGFfb25seWAgYnVpbGRzIG5vbmUgYW5kIGFcbiAqIGBNYW51YWxBcHByb3ZhbFN0ZXBgIG5ldmVyIHJ1bnMgb25lLiBTYW1lIHJ1bGUgYXMgdGhlIHBsdWdpbiB3b3JrZXIncyBza2lwLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcGx1Z2luUnVuc093bkltYWdlKHJvdzogUGljazxQbHVnaW5JbWFnZVJvdywgJ2J1aWxkVHlwZScgfCAncGx1Z2luVHlwZSc+KTogYm9vbGVhbiB7XG4gIHJldHVybiByb3cuYnVpbGRUeXBlICE9PSAnbWV0YWRhdGFfb25seScgJiYgcm93LnBsdWdpblR5cGUgIT09ICdNYW51YWxBcHByb3ZhbFN0ZXAnO1xufVxuXG4vKiogQ0lTIDIuMSBpbnZlbnRvcnkgdGFnczogdGhlIHBsdWdpbidzIGtleXdvcmRzIHBsdXMgaXRzIGxhYmVscyBhcyBga2V5PXZhbHVlYC4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwbHVnaW5Db21wbGlhbmNlVGFncyhrZXl3b3JkczogdW5rbm93biwgbGFiZWxzPzogdW5rbm93bik6IHN0cmluZ1tdIHtcbiAgY29uc3QgdGFncyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICBpZiAoQXJyYXkuaXNBcnJheShrZXl3b3JkcykpIHtcbiAgICBmb3IgKGNvbnN0IGsgb2Yga2V5d29yZHMpIGlmICh0eXBlb2YgayA9PT0gJ3N0cmluZycgJiYgay50cmltKCkpIHRhZ3MuYWRkKGsudHJpbSgpKTtcbiAgfVxuICBpZiAobGFiZWxzICYmIHR5cGVvZiBsYWJlbHMgPT09ICdvYmplY3QnICYmICFBcnJheS5pc0FycmF5KGxhYmVscykpIHtcbiAgICBmb3IgKGNvbnN0IFtrLCB2XSBvZiBPYmplY3QuZW50cmllcyhsYWJlbHMgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pKSB7XG4gICAgICBpZiAodHlwZW9mIHYgPT09ICdzdHJpbmcnIHx8IHR5cGVvZiB2ID09PSAnbnVtYmVyJyB8fCB0eXBlb2YgdiA9PT0gJ2Jvb2xlYW4nKSB0YWdzLmFkZChgJHtrfT0ke1N0cmluZyh2KX1gKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIFsuLi50YWdzXTtcbn1cblxuY29uc3QgZmluaXRlQ291bnQgPSAodjogdW5rbm93bik6IG51bWJlciB8IHVuZGVmaW5lZCA9PlxuICB0eXBlb2YgdiA9PT0gJ251bWJlcicgJiYgTnVtYmVyLmlzRmluaXRlKHYpID8gdiA6IHVuZGVmaW5lZDtcblxuLyoqXG4gKiBUaGUgaW1hZ2UtZGVyaXZlZCBjb21wbGlhbmNlIGF0dHJpYnV0ZXMgb2YgYSBTVE9SRUQgcGx1Z2luIHJvdyAodGhlIHBsdWdpblxuICogc2VydmljZSdzIHVwZGF0ZSByZS1jaGVjaywgdGhlIGJ1aWxkIHdvcmtlcidzIHBvc3QtYnVpbGQgY2hlY2ssIGFuZCB0aGVcbiAqIGNvbXBsaWFuY2Ugc2VydmljZSdzIHNjYW5zIGFuZCBlbnRpdHkgZXZlbnRzIGFsbCBkZXJpdmUgdGhlbSBoZXJlLCBzbyB0aGVcbiAqIHJ1bGVzIHNlZSBvbmUgZGVmaW5pdGlvbiBvZiBgc2lnbmVkYC9gc2Nhbm5lZGApLlxuICpcbiAqIC0gYHNpZ25lZGA6IHRoZSByb3cgY2FycmllcyBhIHdlbGwtZm9ybWVkIGRpZ2VzdC4gVGhlIHdvcmtlciBzdG9yZXMgYSBkaWdlc3RcbiAqICAgb25seSBhZnRlciBpbWFnZS1yZWdpc3RyeSBzaWduZWQgaXQgKGEgc2lnbmluZyBmYWlsdXJlIGZhaWxzIHRoZSBidWlsZCksIHNvXG4gKiAgIGEgZGlnZXN0IG9uIHRoZSByb3cgSVMgYSBwbGF0Zm9ybSBzaWduYXR1cmUuXG4gKiAtIGBzY2FubmVkYCArIGB2dWxuKmA6IGNvdW50cyBvbmx5IHdoZW4gYHNjYW5uZWRBdGAgaXMgc2V0LlxuICogLSBgcnVuQXNSb290YDogb25seSB3aGVuIGtub3duLlxuICogLSBgcGFja2FnZXNgOiBub3QgYSByb3cgY29sdW1uLiBQYXNzIHRoZSBTQk9NJ3MgbmFtZXMgd2hlbiB5b3UgaGF2ZSB0aGVtLFxuICogICBgbnVsbGAgd2hlbiB0aGUgU0JPTSBjb3VsZCBub3QgYmUgcmVhZCAoYXR0cmlidXRlIG9taXR0ZWQsIHNvIGFcbiAqICAgYCRjb3VudChwYWNrYWdlcylgIHJ1bGUgc2VlcyAwKSwgb3IgbGVhdmUgaXQgYHVuZGVmaW5lZGAgb24gYSBwYXRoIHRoYXRcbiAqICAgbmV2ZXIgcmVhZHMgU0JPTXMg4oCUIGl0IGlzIHRoZW4gcmV0dXJuZWQgaW4gYGRlZmVycmVkRmllbGRzYCAoaXQgd2FzXG4gKiAgIGV2YWx1YXRlZCBieSB0aGUgcG9zdC1idWlsZCBjaGVjayBhbmQgY2Fubm90IGNoYW5nZSB3aXRob3V0IGEgcmVidWlsZCkuXG4gKlxuICogQSBwbHVnaW4gdGhhdCBydW5zIG5vIGltYWdlIG9mIGl0cyBvd24gaXMgaG9uZXN0bHkgdW5zaWduZWQgYW5kIHVuc2Nhbm5lZFxuICogd2l0aCBubyBwYWNrYWdlczsgbm90aGluZyBpcyBkZWZlcnJlZCBmb3IgaXQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZXJpdmVQbHVnaW5JbWFnZUNvbXBsaWFuY2UoXG4gIHJvdzogUGx1Z2luSW1hZ2VSb3csXG4gIHBhY2thZ2VzPzogc3RyaW5nW10gfCBudWxsLFxuKTogeyBhdHRyaWJ1dGVzOiBQbHVnaW5Db21wbGlhbmNlQXR0cmlidXRlczsgZGVmZXJyZWRGaWVsZHM6IFBsdWdpbkltYWdlQ29tcGxpYW5jZUZpZWxkW10gfSB7XG4gIGNvbnN0IHRhZ3MgPSBwbHVnaW5Db21wbGlhbmNlVGFncyhyb3cua2V5d29yZHMsIHJvdy5sYWJlbHMpO1xuICBpZiAoIXBsdWdpblJ1bnNPd25JbWFnZShyb3cpKSB7XG4gICAgcmV0dXJuIHsgYXR0cmlidXRlczogeyB0YWdzLCBzaWduZWQ6IGZhbHNlLCBzY2FubmVkOiBmYWxzZSwgcGFja2FnZXM6IFtdIH0sIGRlZmVycmVkRmllbGRzOiBbXSB9O1xuICB9XG4gIGNvbnN0IHNjYW5uZWQgPSByb3cuc2Nhbm5lZEF0ICE9PSBudWxsICYmIHJvdy5zY2FubmVkQXQgIT09IHVuZGVmaW5lZDtcbiAgY29uc3QgYXR0cmlidXRlczogUGx1Z2luQ29tcGxpYW5jZUF0dHJpYnV0ZXMgPSB7XG4gICAgdGFncyxcbiAgICBzaWduZWQ6IHR5cGVvZiByb3cuaW1hZ2VEaWdlc3QgPT09ICdzdHJpbmcnICYmIFNJR05FRF9ESUdFU1RfUkUudGVzdChyb3cuaW1hZ2VEaWdlc3QpLFxuICAgIHNjYW5uZWQsXG4gIH07XG4gIGlmIChzY2FubmVkKSB7XG4gICAgYXR0cmlidXRlcy52dWxuQ3JpdGljYWwgPSBmaW5pdGVDb3VudChyb3cudnVsbkNyaXRpY2FsKTtcbiAgICBhdHRyaWJ1dGVzLnZ1bG5IaWdoID0gZmluaXRlQ291bnQocm93LnZ1bG5IaWdoKTtcbiAgICBhdHRyaWJ1dGVzLnZ1bG5NZWRpdW0gPSBmaW5pdGVDb3VudChyb3cudnVsbk1lZGl1bSk7XG4gICAgYXR0cmlidXRlcy52dWxuTG93ID0gZmluaXRlQ291bnQocm93LnZ1bG5Mb3cpO1xuICAgIGF0dHJpYnV0ZXMudnVsbkNyaXRpY2FsRml4YWJsZSA9IGZpbml0ZUNvdW50KHJvdy52dWxuQ3JpdGljYWxGaXhhYmxlKTtcbiAgICBhdHRyaWJ1dGVzLnZ1bG5IaWdoRml4YWJsZSA9IGZpbml0ZUNvdW50KHJvdy52dWxuSGlnaEZpeGFibGUpO1xuICB9XG4gIGlmICh0eXBlb2Ygcm93LnJ1bkFzUm9vdCA9PT0gJ2Jvb2xlYW4nKSBhdHRyaWJ1dGVzLnJ1bkFzUm9vdCA9IHJvdy5ydW5Bc1Jvb3Q7XG4gIGlmIChBcnJheS5pc0FycmF5KHBhY2thZ2VzKSkgYXR0cmlidXRlcy5wYWNrYWdlcyA9IHBhY2thZ2VzO1xuICBmb3IgKGNvbnN0IGsgb2YgT2JqZWN0LmtleXMoYXR0cmlidXRlcykpIGlmIChhdHRyaWJ1dGVzW2tdID09PSB1bmRlZmluZWQpIGRlbGV0ZSBhdHRyaWJ1dGVzW2tdO1xuICByZXR1cm4geyBhdHRyaWJ1dGVzLCBkZWZlcnJlZEZpZWxkczogcGFja2FnZXMgPT09IHVuZGVmaW5lZCA/IFsncGFja2FnZXMnXSA6IFtdIH07XG59XG4iXX0=
|
|
81
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2luLWNvbXBsaWFuY2UuanMiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9wbHVnaW4tY29tcGxpYW5jZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBa0V0QyxzR0FBc0c7QUFDdEcsTUFBTSxDQUFDLE1BQU0sOEJBQThCLEdBQUc7SUFDNUMsUUFBUSxFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxTQUFTO0lBQ3hFLHFCQUFxQixFQUFFLGlCQUFpQixFQUFFLFdBQVcsRUFBRSxVQUFVO0NBQ3pELENBQUM7QUFvQlgsTUFBTSxnQkFBZ0IsR0FBRyx1QkFBdUIsQ0FBQztBQUVqRDs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsa0JBQWtCLENBQUMsR0FBcUQ7SUFDdEYsT0FBTyxHQUFHLENBQUMsU0FBUyxLQUFLLGVBQWUsSUFBSSxHQUFHLENBQUMsVUFBVSxLQUFLLG9CQUFvQixDQUFDO0FBQ3RGLENBQUM7QUFFRCxvRkFBb0Y7QUFDcEYsTUFBTSxVQUFVLG9CQUFvQixDQUFDLFFBQWlCLEVBQUUsTUFBZ0I7SUFDdEUsTUFBTSxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQVUsQ0FBQztJQUMvQixJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztRQUM1QixLQUFLLE1BQU0sQ0FBQyxJQUFJLFFBQVE7WUFBRSxJQUFJLE9BQU8sQ0FBQyxLQUFLLFFBQVEsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFO2dCQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7SUFDdEYsQ0FBQztJQUNELElBQUksTUFBTSxJQUFJLE9BQU8sTUFBTSxLQUFLLFFBQVEsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztRQUNuRSxLQUFLLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxD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QUNwRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbi8qKlxuICogUGx1Z2luIGNvbXBsaWFuY2UgYXR0cmlidXRlczogd2hhdCB0aGUgcGx1Z2luIHNlcnZpY2UgdGVsbHMgY29tcGxpYW5jZSBhYm91dFxuICogYW4gdXBsb2FkZWQgcGx1Z2luIGFuZCBpdHMgcHVzaGVkIGltYWdlLCBkZXJpdmVkIGZyb20gdGhlIHN0b3JlZCBwbHVnaW4gcm93LlxuICovXG5cbi8qKlxuICogVGhlIGF0dHJpYnV0ZXMgdGhlIHBsdWdpbiBzZXJ2aWNlIHNlbmRzIHRvIGAvY29tcGxpYW5jZS92YWxpZGF0ZS9wbHVnaW5gLlxuICpcbiAqIFRoZSBzcGVjL2NvbmZpZyBmaWVsZHMgZGVzY3JpYmUgdGhlIHBsdWdpbiBhcyB1cGxvYWRlZC4gVGhlIGltYWdlIGZpZWxkc1xuICogZGVzY3JpYmUgd2hhdCB0aGUgcGxhdGZvcm0gaXRzZWxmIGVzdGFibGlzaGVkIGFib3V0IHRoZSBwdXNoZWQgaW1hZ2Ug4oCUIHRoZVxuICogZmFjdHMgdGhlIGN1cmF0ZWQgU09DMi9QQ0kvQ0lTIHBsdWdpbiBydWxlcyBldmFsdWF0ZTpcbiAqXG4gKiAtIGBzaWduZWRgOiB0aGUgaW1hZ2UgZGlnZXN0IGNhcnJpZXMgdGhlIHBsYXRmb3JtJ3MgY29zaWduIHNpZ25hdHVyZS5cbiAqIC0gYHNjYW5uZWRgOiBhIHZ1bG5lcmFiaWxpdHkgc2NhbiBjb21wbGV0ZWQgKGBzY2FubmVkQXRgIGlzIHNldCk7IHRoZVxuICogICBgdnVsbipgIGNvdW50cyBhcmUgcHJlc2VudCBvbmx5IHRoZW4g4oCUIGFuIHVuc2Nhbm5lZCBpbWFnZSBzZW5kcyBubyBjb3VudHMsXG4gKiAgIHNvIGEgbnVtZXJpYyBydWxlIGxpa2UgYHZ1bG5Dcml0aWNhbCBsdCAxYCBjYW5ub3QgcGFzcyBvbiBhIG1pc3NpbmcgdmFsdWUuXG4gKiAgIGB2dWxuQ3JpdGljYWxGaXhhYmxlYCAvIGB2dWxuSGlnaEZpeGFibGVgIGNvdW50IG9ubHkgdGhlIGZpbmRpbmdzIGdyeXBlXG4gKiAgIHJlcG9ydHMgYSBmaXhlZCB2ZXJzaW9uIGZvci4gVGhleSBhcmUgTk9UIHdoYXQgdGhlIHBsYXRmb3JtIGZsb29yIGdhdGVzIG9uLFxuICogICB0aG91Z2ggdGhleSB1c2VkIHRvIGJlOiB0aGUgZmxvb3IgaXMgYGlzR2F0ZWRGaW5kaW5nYCDigJQgZml4YWJsZSBPUlxuICogICBLRVYtbGlzdGVkLCBtaW51cyBhbnkgYFBMVUdJTl9WVUxOX1dBSVZFUlNgIGV4ZW1wdGlvbi4gU28gYSBCTE9DSy1tb2RlIHJ1bGVcbiAqICAgd3JpdHRlbiB0byBtaXJyb3IgdGhlIGZsb29yIChgdnVsbkNyaXRpY2FsRml4YWJsZSBsdCAxYCkgaXMgYmxpbmQgdG8gYVxuICogICBLRVYtZ2F0ZWQgVU5GSVhBQkxFIENyaXRpY2FsLCB3aGljaCB0aGUgZmxvb3IgZG9lcyBibG9jay4gVGhlc2UgYXR0cmlidXRlc1xuICogICBkZXNjcmliZSB0aGUgU0NBTjsgdGhleSBhcmUgbm90IGEgcmVzdGF0ZW1lbnQgb2YgdGhlIGdhdGUsIGFuZCBhIHJ1bGUgdGhhdFxuICogICBuZWVkcyB0aGUgZ2F0ZSdzIGFuc3dlciBzaG91bGQgbm90IGJlIGJ1aWx0IGZyb20gdGhlbS5cbiAqICAgKFRoZSB3YWl2ZXIgaGFsZiBjYW5ub3QgYml0ZSBoZXJlOiBgY29tcGxpYW5jZVZ1bG5XYXJuaW5nc2Agc2tpcHMgdGhlXG4gKiAgIHN5c3RlbSBvcmcsIGFuZCB3YWl2ZXJzIGFyZSBzeXN0ZW0tb3JnLW9ubHkuKVxuICogLSBgcnVuQXNSb290YDogdGhlIGltYWdlIGNvbmZpZydzIGVmZmVjdGl2ZSBVU0VSIGlzIHJvb3QgKGVtcHR5LCBgMGAsIGByb290YCkuXG4gKiAtIGBwYWNrYWdlc2A6IHBhY2thZ2UgbmFtZXMgZnJvbSB0aGUgc2lnbmVkIFNCT00uXG4gKiAtIGB0YWdzYDogdGhlIHBsdWdpbidzIGtleXdvcmRzIHBsdXMgYGtleT12YWx1ZWAgbGFiZWxzIChDSVMgMi4xIGludmVudG9yeSkuXG4gKlxuICogSW1hZ2UgZmllbGRzIGFyZSB1bmtub3duIHVudGlsIHRoZSBidWlsZCB3b3JrZXIgaGFzIHB1c2hlZCwgc2lnbmVkIGFuZFxuICogc2Nhbm5lZCB0aGUgaW1hZ2U7IHRoZSB1cGxvYWQtdGltZSBjaGVjayBsaXN0cyB0aGVtIGluIGBkZWZlcnJlZEZpZWxkc2BcbiAqIGFuZCB0aGUgd29ya2VyIHJlLXZhbGlkYXRlcyBvbmNlIHRoZXkgYXJlIHJlYWwuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGx1Z2luQ29tcGxpYW5jZUF0dHJpYnV0ZXMge1xuICBuYW1lPzogc3RyaW5nO1xuICB2ZXJzaW9uPzogc3RyaW5nO1xuICBwbHVnaW5UeXBlPzogc3RyaW5nO1xuICBjb21wdXRlVHlwZT86IHN0cmluZztcbiAgdGltZW91dD86IG51bWJlciB8IG51bGw7XG4gIGZhaWx1cmVCZWhhdmlvcj86IHN0cmluZztcbiAgZW52PzogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcbiAgYnVpbGRBcmdzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcbiAgaW5zdGFsbENvbW1hbmRzPzogc3RyaW5nW107XG4gIGNvbW1hbmRzPzogc3RyaW5nW107XG4gIHZpc2liaWxpdHk/OiBzdHJpbmc7XG4gIHNlY3JldHM/OiB1bmtub3duW107XG4gIG1ldGFkYXRhPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIGtleXdvcmRzPzogc3RyaW5nW107XG4gIGJ1aWxkVHlwZT86IHN0cmluZztcbiAgdGFncz86IHN0cmluZ1tdO1xuICBzaWduZWQ/OiBib29sZWFuO1xuICBzY2FubmVkPzogYm9vbGVhbjtcbiAgdnVsbkNyaXRpY2FsPzogbnVtYmVyO1xuICB2dWxuSGlnaD86IG51bWJlcjtcbiAgdnVsbk1lZGl1bT86IG51bWJlcjtcbiAgdnVsbkxvdz86IG51bWJlcjtcbiAgdnVsbkNyaXRpY2FsRml4YWJsZT86IG51bWJlcjtcbiAgdnVsbkhpZ2hGaXhhYmxlPzogbnVtYmVyO1xuICBydW5Bc1Jvb3Q/OiBib29sZWFuO1xuICBwYWNrYWdlcz86IHN0cmluZ1tdO1xuICBba2V5OiBzdHJpbmddOiB1bmtub3duO1xufVxuXG4vKiogUGx1Z2luIGF0dHJpYnV0ZXMgb25seSB0aGUgYnVpbGQgd29ya2VyIGNhbiBlc3RhYmxpc2ggKHNlZSB7QGxpbmsgUGx1Z2luQ29tcGxpYW5jZUF0dHJpYnV0ZXN9KS4gKi9cbmV4cG9ydCBjb25zdCBQTFVHSU5fSU1BR0VfQ09NUExJQU5DRV9GSUVMRFMgPSBbXG4gICdzaWduZWQnLCAnc2Nhbm5lZCcsICd2dWxuQ3JpdGljYWwnLCAndnVsbkhpZ2gnLCAndnVsbk1lZGl1bScsICd2dWxuTG93JyxcbiAgJ3Z1bG5Dcml0aWNhbEZpeGFibGUnLCAndnVsbkhpZ2hGaXhhYmxlJywgJ3J1bkFzUm9vdCcsICdwYWNrYWdlcycsXG5dIGFzIGNvbnN0O1xuZXhwb3J0IHR5cGUgUGx1Z2luSW1hZ2VDb21wbGlhbmNlRmllbGQgPSB0eXBlb2YgUExVR0lOX0lNQUdFX0NPTVBMSUFOQ0VfRklFTERTW251bWJlcl07XG5cbi8qKiBUaGUgc3RvcmVkIHBsdWdpbi1yb3cgY29sdW1ucyB0aGUgaW1hZ2UgZmFjdHMgZGVyaXZlIGZyb20gKGFueSBzdWJzZXQpLiAqL1xuZXhwb3J0IGludGVyZmFjZSBQbHVnaW5JbWFnZVJvdyB7XG4gIGJ1aWxkVHlwZT86IHVua25vd247XG4gIHBsdWdpblR5cGU/OiB1bmtub3duO1xuICBpbWFnZURpZ2VzdD86IHVua25vd247XG4gIHNjYW5uZWRBdD86IHVua25vd247XG4gIHZ1bG5Dcml0aWNhbD86IHVua25vd247XG4gIHZ1bG5IaWdoPzogdW5rbm93bjtcbiAgdnVsbk1lZGl1bT86IHVua25vd247XG4gIHZ1bG5Mb3c/OiB1bmtub3duO1xuICB2dWxuQ3JpdGljYWxGaXhhYmxlPzogdW5rbm93bjtcbiAgdnVsbkhpZ2hGaXhhYmxlPzogdW5rbm93bjtcbiAgcnVuQXNSb290PzogdW5rbm93bjtcbiAga2V5d29yZHM/OiB1bmtub3duO1xuICBsYWJlbHM/OiB1bmtub3duO1xufVxuXG5jb25zdCBTSUdORURfRElHRVNUX1JFID0gL15zaGEyNTY6WzAtOWEtZl17NjR9JC87XG5cbi8qKlxuICogV2hldGhlciBhIHBsdWdpbiBydW5zIG9uIGl0cyBvd24gaW1hZ2U6IGBtZXRhZGF0YV9vbmx5YCBidWlsZHMgbm9uZSBhbmQgYVxuICogYE1hbnVhbEFwcHJvdmFsU3RlcGAgbmV2ZXIgcnVucyBvbmUuIFNhbWUgcnVsZSBhcyB0aGUgcGx1Z2luIHdvcmtlcidzIHNraXAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwbHVnaW5SdW5zT3duSW1hZ2Uocm93OiBQaWNrPFBsdWdpbkltYWdlUm93LCAnYnVpbGRUeXBlJyB8ICdwbHVnaW5UeXBlJz4pOiBib29sZWFuIHtcbiAgcmV0dXJuIHJvdy5idWlsZFR5cGUgIT09ICdtZXRhZGF0YV9vbmx5JyAmJiByb3cucGx1Z2luVHlwZSAhPT0gJ01hbnVhbEFwcHJvdmFsU3RlcCc7XG59XG5cbi8qKiBDSVMgMi4xIGludmVudG9yeSB0YWdzOiB0aGUgcGx1Z2luJ3Mga2V5d29yZHMgcGx1cyBpdHMgbGFiZWxzIGFzIGBrZXk9dmFsdWVgLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBsdWdpbkNvbXBsaWFuY2VUYWdzKGtleXdvcmRzOiB1bmtub3duLCBsYWJlbHM/OiB1bmtub3duKTogc3RyaW5nW10ge1xuICBjb25zdCB0YWdzID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gIGlmIChBcnJheS5pc0FycmF5KGtleXdvcmRzKSkge1xuICAgIGZvciAoY29uc3QgayBvZiBrZXl3b3JkcykgaWYgKHR5cGVvZiBrID09PSAnc3RyaW5nJyAmJiBrLnRyaW0oKSkgdGFncy5hZGQoay50cmltKCkpO1xuICB9XG4gIGlmIChsYWJlbHMgJiYgdHlwZW9mIGxhYmVscyA9PT0gJ29iamVjdCcgJiYgIUFycmF5LmlzQXJyYXkobGFiZWxzKSkge1xuICAgIGZvciAoY29uc3QgW2ssIHZdIG9mIE9iamVjdC5lbnRyaWVzKGxhYmVscyBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPikpIHtcbiAgICAgIGlmICh0eXBlb2YgdiA9PT0gJ3N0cmluZycgfHwgdHlwZW9mIHYgPT09ICdudW1iZXInIHx8IHR5cGVvZiB2ID09PSAnYm9vbGVhbicpIHRhZ3MuYWRkKGAke2t9PSR7U3RyaW5nKHYpfWApO1xuICAgIH1cbiAgfVxuICByZXR1cm4gWy4uLnRhZ3NdO1xufVxuXG5jb25zdCBmaW5pdGVDb3VudCA9ICh2OiB1bmtub3duKTogbnVtYmVyIHwgdW5kZWZpbmVkID0+XG4gIHR5cGVvZiB2ID09PSAnbnVtYmVyJyAmJiBOdW1iZXIuaXNGaW5pdGUodikgPyB2IDogdW5kZWZpbmVkO1xuXG4vKipcbiAqIFRoZSBpbWFnZS1kZXJpdmVkIGNvbXBsaWFuY2UgYXR0cmlidXRlcyBvZiBhIFNUT1JFRCBwbHVnaW4gcm93ICh0aGUgcGx1Z2luXG4gKiBzZXJ2aWNlJ3MgdXBkYXRlIHJlLWNoZWNrLCB0aGUgYnVpbGQgd29ya2VyJ3MgcG9zdC1idWlsZCBjaGVjaywgYW5kIHRoZVxuICogY29tcGxpYW5jZSBzZXJ2aWNlJ3Mgc2NhbnMgYW5kIGVudGl0eSBldmVudHMgYWxsIGRlcml2ZSB0aGVtIGhlcmUsIHNvIHRoZVxuICogcnVsZXMgc2VlIG9uZSBkZWZpbml0aW9uIG9mIGBzaWduZWRgL2BzY2FubmVkYCkuXG4gKlxuICogLSBgc2lnbmVkYDogdGhlIHJvdyBjYXJyaWVzIGEgd2VsbC1mb3JtZWQgZGlnZXN0LiBUaGUgd29ya2VyIHN0b3JlcyBhIGRpZ2VzdFxuICogICBvbmx5IGFmdGVyIGltYWdlLXJlZ2lzdHJ5IHNpZ25lZCBpdCAoYSBzaWduaW5nIGZhaWx1cmUgZmFpbHMgdGhlIGJ1aWxkKSwgc29cbiAqICAgYSBkaWdlc3Qgb24gdGhlIHJvdyBJUyBhIHBsYXRmb3JtIHNpZ25hdHVyZS5cbiAqIC0gYHNjYW5uZWRgICsgYHZ1bG4qYDogY291bnRzIG9ubHkgd2hlbiBgc2Nhbm5lZEF0YCBpcyBzZXQuXG4gKiAtIGBydW5Bc1Jvb3RgOiBvbmx5IHdoZW4ga25vd24uXG4gKiAtIGBwYWNrYWdlc2A6IG5vdCBhIHJvdyBjb2x1bW4uIFBhc3MgdGhlIFNCT00ncyBuYW1lcyB3aGVuIHlvdSBoYXZlIHRoZW0sXG4gKiAgIGBudWxsYCB3aGVuIHRoZSBTQk9NIGNvdWxkIG5vdCBiZSByZWFkIChhdHRyaWJ1dGUgb21pdHRlZCwgc28gYVxuICogICBgJGNvdW50KHBhY2thZ2VzKWAgcnVsZSBzZWVzIDApLCBvciBsZWF2ZSBpdCBgdW5kZWZpbmVkYCBvbiBhIHBhdGggdGhhdFxuICogICBuZXZlciByZWFkcyBTQk9NcyDigJQgaXQgaXMgdGhlbiByZXR1cm5lZCBpbiBgZGVmZXJyZWRGaWVsZHNgIChpdCB3YXNcbiAqICAgZXZhbHVhdGVkIGJ5IHRoZSBwb3N0LWJ1aWxkIGNoZWNrIGFuZCBjYW5ub3QgY2hhbmdlIHdpdGhvdXQgYSByZWJ1aWxkKS5cbiAqXG4gKiBBIHBsdWdpbiB0aGF0IHJ1bnMgbm8gaW1hZ2Ugb2YgaXRzIG93biBpcyBob25lc3RseSB1bnNpZ25lZCBhbmQgdW5zY2FubmVkXG4gKiB3aXRoIG5vIHBhY2thZ2VzOyBub3RoaW5nIGlzIGRlZmVycmVkIGZvciBpdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlcml2ZVBsdWdpbkltYWdlQ29tcGxpYW5jZShcbiAgcm93OiBQbHVnaW5JbWFnZVJvdyxcbiAgcGFja2FnZXM/OiBzdHJpbmdbXSB8IG51bGwsXG4pOiB7IGF0dHJpYnV0ZXM6IFBsdWdpbkNvbXBsaWFuY2VBdHRyaWJ1dGVzOyBkZWZlcnJlZEZpZWxkczogUGx1Z2luSW1hZ2VDb21wbGlhbmNlRmllbGRbXSB9IHtcbiAgY29uc3QgdGFncyA9IHBsdWdpbkNvbXBsaWFuY2VUYWdzKHJvdy5rZXl3b3Jkcywgcm93LmxhYmVscyk7XG4gIGlmICghcGx1Z2luUnVuc093bkltYWdlKHJvdykpIHtcbiAgICByZXR1cm4geyBhdHRyaWJ1dGVzOiB7IHRhZ3MsIHNpZ25lZDogZmFsc2UsIHNjYW5uZWQ6IGZhbHNlLCBwYWNrYWdlczogW10gfSwgZGVmZXJyZWRGaWVsZHM6IFtdIH07XG4gIH1cbiAgY29uc3Qgc2Nhbm5lZCA9IHJvdy5zY2FubmVkQXQgIT09IG51bGwgJiYgcm93LnNjYW5uZWRBdCAhPT0gdW5kZWZpbmVkO1xuICBjb25zdCBhdHRyaWJ1dGVzOiBQbHVnaW5Db21wbGlhbmNlQXR0cmlidXRlcyA9IHtcbiAgICB0YWdzLFxuICAgIHNpZ25lZDogdHlwZW9mIHJvdy5pbWFnZURpZ2VzdCA9PT0gJ3N0cmluZycgJiYgU0lHTkVEX0RJR0VTVF9SRS50ZXN0KHJvdy5pbWFnZURpZ2VzdCksXG4gICAgc2Nhbm5lZCxcbiAgfTtcbiAgaWYgKHNjYW5uZWQpIHtcbiAgICBhdHRyaWJ1dGVzLnZ1bG5Dcml0aWNhbCA9IGZpbml0ZUNvdW50KHJvdy52dWxuQ3JpdGljYWwpO1xuICAgIGF0dHJpYnV0ZXMudnVsbkhpZ2ggPSBmaW5pdGVDb3VudChyb3cudnVsbkhpZ2gpO1xuICAgIGF0dHJpYnV0ZXMudnVsbk1lZGl1bSA9IGZpbml0ZUNvdW50KHJvdy52dWxuTWVkaXVtKTtcbiAgICBhdHRyaWJ1dGVzLnZ1bG5Mb3cgPSBmaW5pdGVDb3VudChyb3cudnVsbkxvdyk7XG4gICAgYXR0cmlidXRlcy52dWxuQ3JpdGljYWxGaXhhYmxlID0gZmluaXRlQ291bnQocm93LnZ1bG5Dcml0aWNhbEZpeGFibGUpO1xuICAgIGF0dHJpYnV0ZXMudnVsbkhpZ2hGaXhhYmxlID0gZmluaXRlQ291bnQocm93LnZ1bG5IaWdoRml4YWJsZSk7XG4gIH1cbiAgaWYgKHR5cGVvZiByb3cucnVuQXNSb290ID09PSAnYm9vbGVhbicpIGF0dHJpYnV0ZXMucnVuQXNSb290ID0gcm93LnJ1bkFzUm9vdDtcbiAgaWYgKEFycmF5LmlzQXJyYXkocGFja2FnZXMpKSBhdHRyaWJ1dGVzLnBhY2thZ2VzID0gcGFja2FnZXM7XG4gIGZvciAoY29uc3QgayBvZiBPYmplY3Qua2V5cyhhdHRyaWJ1dGVzKSkgaWYgKGF0dHJpYnV0ZXNba10gPT09IHVuZGVmaW5lZCkgZGVsZXRlIGF0dHJpYnV0ZXNba107XG4gIHJldHVybiB7IGF0dHJpYnV0ZXMsIGRlZmVycmVkRmllbGRzOiBwYWNrYWdlcyA9PT0gdW5kZWZpbmVkID8gWydwYWNrYWdlcyddIDogW10gfTtcbn1cbiJdfQ==
|
|
@@ -136,4 +136,4 @@ export function solveProofOfWork(challenge, difficulty, opts = {}) {
|
|
|
136
136
|
}
|
|
137
137
|
throw new Error(`No proof-of-work solution within ${max} iterations`);
|
|
138
138
|
}
|
|
139
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvb2Ytb2Ytd29yay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9wcm9vZi1vZi13b3JrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7QUFFdEM7Ozs7Ozs7Ozs7Ozs7OztHQWVHO0FBRUgsT0FBTyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLGVBQWUsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUU5RSxzRkFBc0Y7QUFDdEYsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUcsRUFBRSxDQUFDO0FBQ3pDLDhEQUE4RDtBQUM5RCxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxFQUFFLENBQUM7QUFDckMsMkNBQTJDO0FBQzNDLE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHLEVBQUUsR0FBRyxNQUFNLENBQUM7QUFDaEQsK0RBQStEO0FBQy9ELE1BQU0sZ0JBQWdCLEdBQUcsRUFBRSxDQUFDO0FBQzVCLDJGQUEyRjtBQUMzRixNQUFNLG9CQUFvQixHQUFHLEdBQUcsQ0FBQztBQTZCakMsTUFBTSxNQUFNLEdBQUcsQ0FBQyxHQUFXLEVBQVUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUM7QUFFbEUsU0FBUyxJQUFJLENBQUMsSUFBWSxFQUFFLE1BQWM7SUFDeEMsT0FBTyxNQUFNLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztBQUNwRSxDQUFDO0FBRUQsOENBQThDO0FBQzlDLE1BQU0sVUFBVSxlQUFlLENBQUMsS0FBaUI7SUFDL0MsSUFBSSxJQUFJLEdBQUcsQ0FBQyxDQUFDO0lBQ2IsS0FBSyxNQUFNLElBQUksSUFBSSxLQUFLLEVBQUUsQ0FBQztRQUN6QixJQUFJLElBQUksS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUNm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LENBQUMsZUFBZSxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxVQUFVO1FBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLG1CQUFtQixFQUFFLENBQUM7SUFDNUgsT0FBTyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLFlBQVksQ0FBQyxTQUFTLENBQUMsRUFBRSxTQUFTLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRSxVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO0FBQ3RHLENBQUM7QUFFRDs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsZ0JBQWdCLENBQUMsU0FBaUIsRUFBRSxVQUFrQixFQUFFLElBQUksR0FBK0IsRUFBRTtJQUMzRyxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsYUFBYSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDMUMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQzdCLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN4QixJQUFJLGVBQWUsQ0FBQyxlQUFlLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxDQUFDLElBQUksVUFBVTtZQUFFLE9BQU8sS0FBSyxDQUFDO0lBQ3JGLENBQUM7SUFDRCxNQUFNLElBQUksS0FBSyxDQUFDLG9DQUFvQyxHQUFHLGFBQWEsQ0FBQyxDQUFDO0FBQ3hFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuLyoqXG4gKiBTZWxmLWhvc3RlZCBoYXNoY2FzaCBwcm9vZi1vZi13b3JrIGZvciB0aGUgYW5vbnltb3VzIHBsdWdpbiBzdWJtaXNzaW9uIEFQSVxuICogKGRvY3MvcGx1Z2luLXB1Ymxpc2hpbmcubWQpOiBubyB0aGlyZC1wYXJ0eSBjYXB0Y2hhLCBzbyBpdFxuICogd29ya3MgYWlyLWdhcHBlZC5cbiAqXG4gKiBBIENIQUxMRU5HRSBpcyBgYmFzZTY0dXJsKEpTT057IG5vbmNlLCBkaWZmaWN1bHR5LCBleHAgfSkgKyAnLicgK1xuICogYmFzZTY0dXJsKEhNQUMtU0hBMjU2KGJvZHksIHNlY3JldCkpYCDigJQgc3RhdGVsZXNzLCBzbyBhbnkgcmVwbGljYSBjYW4gdmVyaWZ5XG4gKiBvbmUgYW5vdGhlciByZXBsaWNhIGlzc3VlZC4gQSBTT0xVVElPTiBpcyBhIGRlY2ltYWwtc3RyaW5nIGBub25jZWAgc3VjaCB0aGF0XG4gKiBgc2hhMjU2KFwiPGNoYWxsZW5nZT46PG5vbmNlPlwiKWAgc3RhcnRzIHdpdGggYXQgbGVhc3QgYGRpZmZpY3VsdHlgIHplcm8gQklUUy5cbiAqIFNpbmdsZSB1c2UgaXMgdGhlIGNhbGxlcidzIGpvYiAoYSBSZWRpcyBgU0VUIE5YYCBvbiB7QGxpbmsgY2hhbGxlbmdlS2V5fVxuICogd2l0aCB0aGUgcmVtYWluaW5nIGxpZmV0aW1lIGFzIFRUTCk6IG5vdGhpbmcgaGVyZSByZW1lbWJlcnMgYW55dGhpbmcuXG4gKlxuICogUHVyZSBhbmQgZGVwZW5kZW5jeS1mcmVlIGFwYXJ0IGZyb20gbm9kZTpjcnlwdG8sIHNvIHRoZSBmcm9udGVuZCBjYW4gbWlycm9yXG4gKiB0aGUgYWxnb3JpdGhtIGV4YWN0bHkgKGl0cyBzb2x2ZXIgcnVucyBpbiBhIFdlYiBXb3JrZXIgd2l0aCBjcnlwdG8uc3VidGxlKVxuICogYW5kIHRoZSBDTEkgYW5kIHRlc3RzIGNhbiBzb2x2ZSB3aXRoIHtAbGluayBzb2x2ZVByb29mT2ZXb3JrfS5cbiAqL1xuXG5pbXBvcnQgeyBjcmVhdGVIYXNoLCBjcmVhdGVIbWFjLCByYW5kb21CeXRlcywgdGltaW5nU2FmZUVxdWFsIH0gZnJvbSAnY3J5cHRvJztcblxuLyoqIERlZmF1bHQgbGVhZGluZy16ZXJvLWJpdCBkaWZmaWN1bHR5ICjiiYgxTSBoYXNoZXM7IGEgc2Vjb25kIG9yIHR3byBpbiBhIGJyb3dzZXIpLiAqL1xuZXhwb3J0IGNvbnN0IFBPV19ERUZBVUxUX0RJRkZJQ1VMVFkgPSAyMDtcbi8qKiBIYXJkIGNlaWxpbmcgb24gYSBkaWZmaWN1bHR5IGFuIG9wZXJhdG9yIGNhbiBjb25maWd1cmUuICovXG5leHBvcnQgY29uc3QgUE9XX01BWF9ESUZGSUNVTFRZID0gMzI7XG4vKiogSG93IGxvbmcgYSBjaGFsbGVuZ2Ugc3RheXMgc29sdmFibGUuICovXG5leHBvcnQgY29uc3QgUE9XX0NIQUxMRU5HRV9UVExfTVMgPSAxMCAqIDYwXzAwMDtcbi8qKiBBIG5vbmNlIGlzIGEgZGVjaW1hbCBzdHJpbmcgb2YgYXQgbW9zdCB0aGlzIG1hbnkgZGlnaXRzLiAqL1xuY29uc3QgTk9OQ0VfTUFYX0RJR0lUUyA9IDIwO1xuLyoqIEEgY2hhbGxlbmdlIHN0cmluZyBpcyBuZXZlciBsb25nZXIgdGhhbiB0aGlzIChib3VuZHMgaGFzaGluZyB3b3JrIG9uIGdhcmJhZ2UgaW5wdXQpLiAqL1xuY29uc3QgQ0hBTExFTkdFX01BWF9MRU5HVEggPSA1MTI7XG5cbi8qKiBXaGF0IHRoZSBjaGFsbGVuZ2Ugcm91dGUgcmV0dXJucy4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUHJvb2ZPZldvcmtDaGFsbGVuZ2Uge1xuICBjaGFsbGVuZ2U6IHN0cmluZztcbiAgZGlmZmljdWx0eTogbnVtYmVyO1xuICBleHBpcmVzQXQ6IHN0cmluZztcbn1cblxuLyoqIFRoZSBzaWduZWQgYm9keSBvZiBhIGNoYWxsZW5nZS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUHJvb2ZPZldvcmtDaGFsbGVuZ2VCb2R5IHtcbiAgbm9uY2U6IHN0cmluZztcbiAgZGlmZmljdWx0eTogbnVtYmVyO1xuICAvKiogRXhwaXJ5LCBlcG9jaCBtcy4gKi9cbiAgZXhwOiBudW1iZXI7XG59XG5cbi8qKiBBIGNsaWVudCdzIGFuc3dlci4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUHJvb2ZPZldvcmtTb2x1dGlvbiB7XG4gIGNoYWxsZW5nZTogc3RyaW5nO1xuICBub25jZTogc3RyaW5nO1xufVxuXG5leHBvcnQgdHlwZSBQcm9vZk9mV29ya1JlZnVzYWwgPSAnbWFsZm9ybWVkJyB8ICdiYWRfc2lnbmF0dXJlJyB8ICdleHBpcmVkJyB8ICd0b29fZWFzeScgfCAnaW5zdWZmaWNpZW50X3dvcmsnO1xuXG5leHBvcnQgdHlwZSBQcm9vZk9mV29ya1ZlcmRpY3QgPVxuICB8IHsgb2s6IHRydWU7IGtleTogc3RyaW5nOyBleHBpcmVzQXQ6IG51bWJlcjsgZGlmZmljdWx0eTogbnVtYmVyIH1cbiAgfCB7IG9rOiBmYWxzZTsgcmVhc29uOiBQcm9vZk9mV29ya1JlZnVzYWwgfTtcblxuY29uc3QgYjY0dXJsID0gKGJ1ZjogQnVmZmVyKTogc3RyaW5nID0+IGJ1Zi50b1N0cmluZygnYmFzZTY0dXJsJyk7XG5cbmZ1bmN0aW9uIHNpZ24oYm9keTogc3RyaW5nLCBzZWNyZXQ6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBiNjR1cmwoY3JlYXRlSG1hYygnc2hhMjU2Jywgc2VjcmV0KS51cGRhdGUoYm9keSkuZGlnZXN0KCkpO1xufVxuXG4vKiogTnVtYmVyIG9mIGxlYWRpbmcgemVybyBCSVRTIGluIGBieXRlc2AuICovXG5leHBvcnQgZnVuY3Rpb24gbGVhZGluZ1plcm9CaXRzKGJ5dGVzOiBVaW50OEFycmF5KTogbnVtYmVyIHtcbiAgbGV0IGJpdHMgPSAwO1xuICBmb3IgKGNvbnN0IGJ5dGUgb2YgYnl0ZXMpIHtcbiAgICBpZiAoYnl0ZSA9PT0gMCkge1xuICAgICAgYml0cyArPSA4O1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIC8vIE1hdGguY2x6MzIgY291bnRzIG92ZXIgMzIgYml0czsgYSBieXRlIG9jY3VwaWVzIHRoZSBsb3cgOC5cbiAgICByZXR1cm4gYml0cyArIE1hdGguY2x6MzIoYnl0ZSkgLSAyNDtcbiAgfVxuICByZXR1cm4gYml0cztcbn1cblxuLyoqIFRoZSBoYXNoIGEgc29sdXRpb24gaXMganVkZ2VkIG9uOiBgc2hhMjU2KFwiPGNoYWxsZW5nZT46PG5vbmNlPlwiKWAuICovXG5leHBvcnQgZnVuY3Rpb24gcHJvb2ZPZldvcmtIYXNoKGNoYWxsZW5nZTogc3RyaW5nLCBub25jZTogc3RyaW5nKTogQnVmZmVyIHtcbiAgcmV0dXJuIGNyZWF0ZUhhc2goJ3NoYTI1NicpLnVwZGF0ZShgJHtjaGFsbGVuZ2V9OiR7bm9uY2V9YCkuZGlnZXN0KCk7XG59XG5cbi8qKiBUaGUgc2luZ2xlLXVzZSBrZXkgZm9yIGEgY2hhbGxlbmdlIChoZXggc2hhMjU2IG9mIHRoZSBjaGFsbGVuZ2Ugc3RyaW5nKS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjaGFsbGVuZ2VLZXkoY2hhbGxlbmdlOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gY3JlYXRlSGFzaCgnc2hhMjU2JykudXBkYXRlKGNoYWxsZW5nZSkuZGlnZXN0KCdoZXgnKTtcbn1cblxuLyoqIENsYW1wIGEgY29uZmlndXJlZCBkaWZmaWN1bHR5IGludG8gWzEsIHtAbGluayBQT1dfTUFYX0RJRkZJQ1VMVFl9XS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjbGFtcERpZmZpY3VsdHkoZGlmZmljdWx0eTogbnVtYmVyKTogbnVtYmVyIHtcbiAgaWYgKCFOdW1iZXIuaXNGaW5pdGUoZGlmZmljdWx0eSkpIHJldHVybiBQT1dfREVGQVVMVF9ESUZGSUNVTFRZO1xuICByZXR1cm4gTWF0aC5taW4oUE9XX01BWF9ESUZGSUNVTFRZLCBNYXRoLm1heCgxLCBNYXRoLmZsb29yKGRpZmZpY3VsdHkpKSk7XG59XG5cbi8qKiBJc3N1ZSBhIGZyZXNoIHNpZ25lZCBjaGFsbGVuZ2UuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlUHJvb2ZPZldvcmtDaGFsbGVuZ2UoXG4gIHNlY3JldDogc3RyaW5nLFxuICBvcHRzOiB7IGRpZmZpY3VsdHk/OiBudW1iZXI7IHR0bE1zPzogbnVtYmVyOyBub3c/OiBudW1iZXIgfSA9IHt9LFxuKTogUHJvb2ZPZldvcmtDaGFsbGVuZ2Uge1xuICBpZiAoIXNlY3JldCkgdGhyb3cgbmV3IEVycm9yKCdBIHByb29mLW9mLXdvcmsgc2VjcmV0IGlzIHJlcXVpcmVkJyk7XG4gIGNvbnN0IG5vdyA9IG9wdHMubm93ID8/IERhdGUubm93KCk7XG4gIGNvbnN0IGJvZHk6IFByb29mT2ZXb3JrQ2hhbGxlbmdlQm9keSA9IHtcbiAgICBub25jZTogYjY0dXJsKHJhbmRvbUJ5dGVzKDE2KSksXG4gICAgZGlmZmljdWx0eTogY2xhbXBEaWZmaWN1bHR5KG9wdHMuZGlmZmljdWx0eSA/PyBQT1dfREVGQVVMVF9ESUZGSUNVTFRZKSxcbiAgICBleHA6IG5vdyArIChvcHRzLnR0bE1zID8/IFBPV19DSEFMTEVOR0VfVFRMX01TKSxcbiAgfTtcbiAgY29uc3QgZW5jb2RlZCA9IGI2NHVybChCdWZmZXIuZnJvbShKU09OLnN0cmluZ2lmeShib2R5KSwgJ3V0ZjgnKSk7XG4gIHJldHVybiB7IGNoYWxsZW5nZTogYCR7ZW5jb2RlZH0uJHtzaWduKGVuY29kZWQsIHNlY3JldCl9YCwgZGlmZmljdWx0eTogYm9keS5kaWZmaWN1bHR5LCBleHBpcmVzQXQ6IG5ldyBEYXRlKGJvZHkuZXhwKS50b0lTT1N0cmluZygpIH07XG59XG5cbi8qKlxuICogRGVjb2RlIGEgY2hhbGxlbmdlIGFuZCBjaGVjayBpdHMgc2lnbmF0dXJlLiBOdWxsIHdoZW4gaXQgaXMgbWFsZm9ybWVkIG9yXG4gKiB3YXMgbm90IHNpZ25lZCB3aXRoIGBzZWNyZXRgIChleHBpcnkgaXMgTk9UIGNoZWNrZWQgaGVyZSkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZVByb29mT2ZXb3JrQ2hhbGxlbmdlKGNoYWxsZW5nZTogc3RyaW5nLCBzZWNyZXQ6IHN0cmluZyk6IFByb29mT2ZXb3JrQ2hhbGxlbmdlQm9keSB8IG51bGwge1xuICBpZiAodHlwZW9mIGNoYWxsZW5nZSAhPT0gJ3N0cmluZycgfHwgY2hhbGxlbmdlLmxlbmd0aCA9PT0gMCB8fCBjaGFsbGVuZ2UubGVuZ3RoID4gQ0hBTExFTkdFX01BWF9MRU5HVEgpIHJldHVybiBudWxsO1xuICBjb25zdCBkb3QgPSBjaGFsbGVuZ2UuaW5kZXhPZignLicpO1xuICBpZiAoZG90IDw9IDAgfHwgZG90ICE9PSBjaGFsbGVuZ2UubGFzdEluZGV4T2YoJy4nKSkgcmV0dXJuIG51bGw7XG4gIGNvbnN0IGVuY29kZWQgPSBjaGFsbGVuZ2Uuc2xpY2UoMCwgZG90KTtcbiAgY29uc3QgZ2l2ZW4gPSBCdWZmZXIuZnJvbShjaGFsbGVuZ2Uuc2xpY2UoZG90ICsgMSksICdiYXNlNjR1cmwnKTtcbiAgY29uc3QgZXhwZWN0ZWQgPSBCdWZmZXIuZnJvbShzaWduKGVuY29kZWQsIHNlY3JldCksICdiYXNlNjR1cmwnKTtcbiAgaWYgKGdpdmVuLmxlbmd0aCAhPT0gZXhwZWN0ZWQubGVuZ3RoIHx8ICF0aW1pbmdTYWZlRXF1YWwoZ2l2ZW4sIGV4cGVjdGVkKSkgcmV0dXJuIG51bGw7XG4gIHRyeSB7XG4gICAgY29uc3QgYm9keSA9IEpTT04ucGFyc2UoQnVmZmVyLmZyb20oZW5jb2RlZCwgJ2Jhc2U2NHVybCcpLnRvU3RyaW5nKCd1dGY4JykpIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICAgIGlmICh0eXBlb2YgYm9keS5ub25jZSAhPT0gJ3N0cmluZycgfHwgdHlwZW9mIGJvZHkuZGlmZmljdWx0eSAhPT0gJ251bWJlcicgfHwgdHlwZW9mIGJvZHkuZXhwICE9PSAnbnVtYmVyJykgcmV0dXJuIG51bGw7XG4gICAgaWYgKCFOdW1iZXIuaXNJbnRlZ2VyKGJvZHkuZGlmZmljdWx0eSkgfHwgYm9keS5kaWZmaWN1bHR5IDwgMSB8fCBib2R5LmRpZmZpY3VsdHkgPiBQT1dfTUFYX0RJRkZJQ1VMVFkpIHJldHVybiBudWxsO1xuICAgIHJldHVybiB7IG5vbmNlOiBib2R5Lm5vbmNlLCBkaWZmaWN1bHR5OiBib2R5LmRpZmZpY3VsdHksIGV4cDogYm9keS5leHAgfTtcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbn1cblxuLyoqXG4gKiBWZXJpZnkgYSBzb2x1dGlvbjogYSBnZW51aW5lLCB1bmV4cGlyZWQgY2hhbGxlbmdlIChzaWduZWQgd2l0aCBgc2VjcmV0YCksXG4gKiBhdCBsZWFzdCBgbWluRGlmZmljdWx0eWAgaGFyZCwgd2hvc2UgaGFzaCB3aXRoIGBub25jZWAgaGFzIGVub3VnaCBsZWFkaW5nXG4gKiB6ZXJvIGJpdHMuIERvZXMgTk9UIGVuZm9yY2Ugc2luZ2xlIHVzZSDigJQgc3RvcmUge0BsaW5rIFByb29mT2ZXb3JrVmVyZGljdC5rZXl9LlxuICovXG5leHBvcnQgZnVuY3Rpb24gdmVyaWZ5UHJvb2ZPZldvcmsoXG4gIHNvbHV0aW9uOiBQYXJ0aWFsPFByb29mT2ZXb3JrU29sdXRpb24+IHwgbnVsbCB8IHVuZGVmaW5lZCxcbiAgc2VjcmV0OiBzdHJpbmcsXG4gIG9wdHM6IHsgbm93PzogbnVtYmVyOyBtaW5EaWZmaWN1bHR5PzogbnVtYmVyIH0gPSB7fSxcbik6IFByb29mT2ZXb3JrVmVyZGljdCB7XG4gIGNvbnN0IGNoYWxsZW5nZSA9IHNvbHV0aW9uPy5jaGFsbGVuZ2U7XG4gIGNvbnN0IG5vbmNlID0gc29sdXRpb24/Lm5vbmNlO1xuICBpZiAodHlwZW9mIGNoYWxsZW5nZSAhPT0gJ3N0cmluZycgfHwgdHlwZW9mIG5vbmNlICE9PSAnc3RyaW5nJykgcmV0dXJuIHsgb2s6IGZhbHNlLCByZWFzb246ICdtYWxmb3JtZWQnIH07XG4gIGlmICghL15cXGQrJC8udGVzdChub25jZSkgfHwgbm9uY2UubGVuZ3RoID4gTk9OQ0VfTUFYX0RJR0lUUykgcmV0dXJuIHsgb2s6IGZhbHNlLCByZWFzb246ICdtYWxmb3JtZWQnIH07XG4gIGlmICghc2VjcmV0KSByZXR1cm4geyBvazogZmFsc2UsIHJlYXNvbjogJ2JhZF9zaWduYXR1cmUnIH07XG4gIGNvbnN0IGJvZHkgPSBwYXJzZVByb29mT2ZXb3JrQ2hhbGxlbmdlKGNoYWxsZW5nZSwgc2VjcmV0KTtcbiAgaWYgKCFib2R5KSByZXR1cm4geyBvazogZmFsc2UsIHJlYXNvbjogJ2JhZF9zaWduYXR1cmUnIH07XG4gIGlmICgob3B0cy5ub3cgPz8gRGF0ZS5ub3coKSkgPiBib2R5LmV4cCkgcmV0dXJuIHsgb2s6IGZhbHNlLCByZWFzb246ICdleHBpcmVkJyB9O1xuICBpZiAob3B0cy5taW5EaWZmaWN1bHR5ICE9PSB1bmRlZmluZWQgJiYgYm9keS5kaWZmaWN1bHR5IDwgY2xhbXBEaWZmaWN1bHR5KG9wdHMubWluRGlmZmljdWx0eSkpIHJldHVybiB7IG9rOiBmYWxzZSwgcmVhc29uOiAndG9vX2Vhc3knIH07XG4gIGlmIChsZWFkaW5nWmVyb0JpdHMocHJvb2ZPZldvcmtIYXNoKGNoYWxsZW5nZSwgbm9uY2UpKSA8IGJvZHkuZGlmZmljdWx0eSkgcmV0dXJuIHsgb2s6IGZhbHNlLCByZWFzb246ICdpbnN1ZmZpY2llbnRfd29yaycgfTtcbiAgcmV0dXJuIHsgb2s6IHRydWUsIGtleTogY2hhbGxlbmdlS2V5KGNoYWxsZW5nZSksIGV4cGlyZXNBdDogYm9keS5leHAsIGRpZmZpY3VsdHk6IGJvZHkuZGlmZmljdWx0eSB9O1xufVxuXG4vKipcbiAqIEZpbmQgYSBub25jZSBmb3IgYGNoYWxsZW5nZWAgKHRlc3RzLCB0aGUgQ0xJKS4gQ291bnRzIHVwIGZyb20gMDsgdGhyb3dzXG4gKiBhZnRlciBgbWF4SXRlcmF0aW9uc2Agc28gYSBtaXN0YWtlbiBkaWZmaWN1bHR5IGNhbid0IHNwaW4gZm9yZXZlci5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNvbHZlUHJvb2ZPZldvcmsoY2hhbGxlbmdlOiBzdHJpbmcsIGRpZmZpY3VsdHk6IG51bWJlciwgb3B0czogeyBtYXhJdGVyYXRpb25zPzogbnVtYmVyIH0gPSB7fSk6IHN0cmluZyB7XG4gIGNvbnN0IG1heCA9IG9wdHMubWF4SXRlcmF0aW9ucyA/PyAyICoqIDMyO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IG1heDsgaSsrKSB7XG4gICAgY29uc3Qgbm9uY2UgPSBTdHJpbmcoaSk7XG4gICAgaWYgKGxlYWRpbmdaZXJvQml0cyhwcm9vZk9mV29ya0hhc2goY2hhbGxlbmdlLCBub25jZSkpID49IGRpZmZpY3VsdHkpIHJldHVybiBub25jZTtcbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoYE5vIHByb29mLW9mLXdvcmsgc29sdXRpb24gd2l0aGluICR7bWF4fSBpdGVyYXRpb25zYCk7XG59XG4iXX0=
|
|
139
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvb2Ytb2Ytd29yay5qcyIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL3Byb29mLW9mLXdvcmsudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQUV0Qzs7Ozs7Ozs7Ozs7Ozs7O0dBZUc7QUFFSCxPQUFPLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsZUFBZSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBRTlFLHNGQUFzRjtBQUN0RixNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBRyxFQUFFLENBQUM7QUFDekMsOERBQThEO0FBQzlELE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLEVBQUUsQ0FBQztBQUNyQywyQ0FBMkM7QUFDM0MsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsRUFBRSxHQUFHLE1BQU0sQ0FBQztBQUNoRCwrREFBK0Q7QUFDL0QsTUFBTSxnQkFBZ0IsR0FBRyxFQUFFLENBQUM7QUFDNUIsMkZBQTJGO0FBQzNGLE1BQU0sb0JBQW9CLEdBQUcsR0FBRyxDQUFDO0FBNkJqQyxNQUFNLE1BQU0sR0FBRyxDQUFDLEdBQVcsRUFBVSxFQUFFLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQztBQUVsRSxTQUFTLElBQUksQ0FBQyxJQUFZLEVBQUUsTUFBYztJQUN4QyxPQUFPLE1BQU0sQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO0FBQ3BFLENBQUM7QUFFRCw4Q0FBOEM7QUFDOUMsTUFBTSxVQUFVLGVBQWUsQ0FBQyxLQUFpQjtJQUMvQyxJQUFJLElBQUksR0FBRyxDQUFDLENBQUM7SUFDYixLQUFLLE1BQU0sSUFBSSxJQUFJLEtBQUssRUFBRSxDQUFDO1FBQ3pCLElBQUksSUFBSSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ2YsSUFBSSxJQUFJLENBQUMs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U0FBUyxFQUFFLEtBQUssQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVU7UUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsbUJBQW1CLEVBQUUsQ0FBQztJQUM1SCxPQUFPLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsWUFBWSxDQUFDLFNBQVMsQ0FBQyxFQUFFLFNBQVMsRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFLFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7QUFDdEcsQ0FBQztBQUVEOzs7R0FHRztBQUNILE1BQU0sVUFBVSxnQkFBZ0IsQ0FBQyxTQUFpQixFQUFFLFVBQWtCLEVBQUUsSUFBSSxHQUErQixFQUFFO0lBQzNHLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxhQUFhLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUMxQyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7UUFDN0IsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3hCLElBQUksZUFBZSxDQUFDLGVBQWUsQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLENBQUMsSUFBSSxVQUFVO1lBQUUsT0FBTyxLQUFLLENBQUM7SUFDckYsQ0FBQztJQUNELE1BQU0sSUFBSSxLQUFLLENBQUMsb0NBQW9DLEdBQUcsYUFBYSxDQUFDLENBQUM7QUFDeEUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG4vKipcbiAqIFNlbGYtaG9zdGVkIGhhc2hjYXNoIHByb29mLW9mLXdvcmsgZm9yIHRoZSBhbm9ueW1vdXMgcGx1Z2luIHN1Ym1pc3Npb24gQVBJXG4gKiAoZG9jcy9wbHVnaW4tcHVibGlzaGluZy5tZCk6IG5vIHRoaXJkLXBhcnR5IGNhcHRjaGEsIHNvIGl0XG4gKiB3b3JrcyBhaXItZ2FwcGVkLlxuICpcbiAqIEEgQ0hBTExFTkdFIGlzIGBiYXNlNjR1cmwoSlNPTnsgbm9uY2UsIGRpZmZpY3VsdHksIGV4cCB9KSArICcuJyArXG4gKiBiYXNlNjR1cmwoSE1BQy1TSEEyNTYoYm9keSwgc2VjcmV0KSlgIOKAlCBzdGF0ZWxlc3MsIHNvIGFueSByZXBsaWNhIGNhbiB2ZXJpZnlcbiAqIG9uZSBhbm90aGVyIHJlcGxpY2EgaXNzdWVkLiBBIFNPTFVUSU9OIGlzIGEgZGVjaW1hbC1zdHJpbmcgYG5vbmNlYCBzdWNoIHRoYXRcbiAqIGBzaGEyNTYoXCI8Y2hhbGxlbmdlPjo8bm9uY2U+XCIpYCBzdGFydHMgd2l0aCBhdCBsZWFzdCBgZGlmZmljdWx0eWAgemVybyBCSVRTLlxuICogU2luZ2xlIHVzZSBpcyB0aGUgY2FsbGVyJ3Mgam9iIChhIFJlZGlzIGBTRVQgTlhgIG9uIHtAbGluayBjaGFsbGVuZ2VLZXl9XG4gKiB3aXRoIHRoZSByZW1haW5pbmcgbGlmZXRpbWUgYXMgVFRMKTogbm90aGluZyBoZXJlIHJlbWVtYmVycyBhbnl0aGluZy5cbiAqXG4gKiBQdXJlIGFuZCBkZXBlbmRlbmN5LWZyZWUgYXBhcnQgZnJvbSBub2RlOmNyeXB0bywgc28gdGhlIGZyb250ZW5kIGNhbiBtaXJyb3JcbiAqIHRoZSBhbGdvcml0aG0gZXhhY3RseSAoaXRzIHNvbHZlciBydW5zIGluIGEgV2ViIFdvcmtlciB3aXRoIGNyeXB0by5zdWJ0bGUpXG4gKiBhbmQgdGhlIENMSSBhbmQgdGVzdHMgY2FuIHNvbHZlIHdpdGgge0BsaW5rIHNvbHZlUHJvb2ZPZldvcmt9LlxuICovXG5cbmltcG9ydCB7IGNyZWF0ZUhhc2gsIGNyZWF0ZUhtYWMsIHJhbmRvbUJ5dGVzLCB0aW1pbmdTYWZlRXF1YWwgfSBmcm9tICdjcnlwdG8nO1xuXG4vKiogRGVmYXVsdCBsZWFkaW5nLXplcm8tYml0IGRpZmZpY3VsdHkgKOKJiDFNIGhhc2hlczsgYSBzZWNvbmQgb3IgdHdvIGluIGEgYnJvd3NlcikuICovXG5leHBvcnQgY29uc3QgUE9XX0RFRkFVTFRfRElGRklDVUxUWSA9IDIwO1xuLyoqIEhhcmQgY2VpbGluZyBvbiBhIGRpZmZpY3VsdHkgYW4gb3BlcmF0b3IgY2FuIGNvbmZpZ3VyZS4gKi9cbmV4cG9ydCBjb25zdCBQT1dfTUFYX0RJRkZJQ1VMVFkgPSAzMjtcbi8qKiBIb3cgbG9uZyBhIGNoYWxsZW5nZSBzdGF5cyBzb2x2YWJsZS4gKi9cbmV4cG9ydCBjb25zdCBQT1dfQ0hBTExFTkdFX1RUTF9NUyA9IDEwICogNjBfMDAwO1xuLyoqIEEgbm9uY2UgaXMgYSBkZWNpbWFsIHN0cmluZyBvZiBhdCBtb3N0IHRoaXMgbWFueSBkaWdpdHMuICovXG5jb25zdCBOT05DRV9NQVhfRElHSVRTID0gMjA7XG4vKiogQSBjaGFsbGVuZ2Ugc3RyaW5nIGlzIG5ldmVyIGxvbmdlciB0aGFuIHRoaXMgKGJvdW5kcyBoYXNoaW5nIHdvcmsgb24gZ2FyYmFnZSBpbnB1dCkuICovXG5jb25zdCBDSEFMTEVOR0VfTUFYX0xFTkdUSCA9IDUxMjtcblxuLyoqIFdoYXQgdGhlIGNoYWxsZW5nZSByb3V0ZSByZXR1cm5zLiAqL1xuZXhwb3J0IGludGVyZmFjZSBQcm9vZk9mV29ya0NoYWxsZW5nZSB7XG4gIGNoYWxsZW5nZTogc3RyaW5nO1xuICBkaWZmaWN1bHR5OiBudW1iZXI7XG4gIGV4cGlyZXNBdDogc3RyaW5nO1xufVxuXG4vKiogVGhlIHNpZ25lZCBib2R5IG9mIGEgY2hhbGxlbmdlLiAqL1xuZXhwb3J0IGludGVyZmFjZSBQcm9vZk9mV29ya0NoYWxsZW5nZUJvZHkge1xuICBub25jZTogc3RyaW5nO1xuICBkaWZmaWN1bHR5OiBudW1iZXI7XG4gIC8qKiBFeHBpcnksIGVwb2NoIG1zLiAqL1xuICBleHA6IG51bWJlcjtcbn1cblxuLyoqIEEgY2xpZW50J3MgYW5zd2VyLiAqL1xuZXhwb3J0IGludGVyZmFjZSBQcm9vZk9mV29ya1NvbHV0aW9uIHtcbiAgY2hhbGxlbmdlOiBzdHJpbmc7XG4gIG5vbmNlOiBzdHJpbmc7XG59XG5cbmV4cG9ydCB0eXBlIFByb29mT2ZXb3JrUmVmdXNhbCA9ICdtYWxmb3JtZWQnIHwgJ2JhZF9zaWduYXR1cmUnIHwgJ2V4cGlyZWQnIHwgJ3Rvb19lYXN5JyB8ICdpbnN1ZmZpY2llbnRfd29yayc7XG5cbmV4cG9ydCB0eXBlIFByb29mT2ZXb3JrVmVyZGljdCA9XG4gIHwgeyBvazogdHJ1ZTsga2V5OiBzdHJpbmc7IGV4cGlyZXNBdDogbnVtYmVyOyBkaWZmaWN1bHR5OiBudW1iZXIgfVxuICB8IHsgb2s6IGZhbHNlOyByZWFzb246IFByb29mT2ZXb3JrUmVmdXNhbCB9O1xuXG5jb25zdCBiNjR1cmwgPSAoYnVmOiBCdWZmZXIpOiBzdHJpbmcgPT4gYnVmLnRvU3RyaW5nKCdiYXNlNjR1cmwnKTtcblxuZnVuY3Rpb24gc2lnbihib2R5OiBzdHJpbmcsIHNlY3JldDogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIGI2NHVybChjcmVhdGVIbWFjKCdzaGEyNTYnLCBzZWNyZXQpLnVwZGF0ZShib2R5KS5kaWdlc3QoKSk7XG59XG5cbi8qKiBOdW1iZXIgb2YgbGVhZGluZyB6ZXJvIEJJVFMgaW4gYGJ5dGVzYC4gKi9cbmV4cG9ydCBmdW5jdGlvbiBsZWFkaW5nWmVyb0JpdHMoYnl0ZXM6IFVpbnQ4QXJyYXkpOiBudW1iZXIge1xuICBsZXQgYml0cyA9IDA7XG4gIGZvciAoY29uc3QgYnl0ZSBvZiBieXRlcykge1xuICAgIGlmIChieXRlID09PSAwKSB7XG4gICAgICBiaXRzICs9IDg7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgLy8gTWF0aC5jbHozMiBjb3VudHMgb3ZlciAzMiBiaXRzOyBhIGJ5dGUgb2NjdXBpZXMgdGhlIGxvdyA4LlxuICAgIHJldHVybiBiaXRzICsgTWF0aC5jbHozMihieXRlKSAtIDI0O1xuICB9XG4gIHJldHVybiBiaXRzO1xufVxuXG4vKiogVGhlIGhhc2ggYSBzb2x1dGlvbiBpcyBqdWRnZWQgb246IGBzaGEyNTYoXCI8Y2hhbGxlbmdlPjo8bm9uY2U+XCIpYC4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwcm9vZk9mV29ya0hhc2goY2hhbGxlbmdlOiBzdHJpbmcsIG5vbmNlOiBzdHJpbmcpOiBCdWZmZXIge1xuICByZXR1cm4gY3JlYXRlSGFzaCgnc2hhMjU2JykudXBkYXRlKGAke2NoYWxsZW5nZX06JHtub25jZX1gKS5kaWdlc3QoKTtcbn1cblxuLyoqIFRoZSBzaW5nbGUtdXNlIGtleSBmb3IgYSBjaGFsbGVuZ2UgKGhleCBzaGEyNTYgb2YgdGhlIGNoYWxsZW5nZSBzdHJpbmcpLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNoYWxsZW5nZUtleShjaGFsbGVuZ2U6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBjcmVhdGVIYXNoKCdzaGEyNTYnKS51cGRhdGUoY2hhbGxlbmdlKS5kaWdlc3QoJ2hleCcpO1xufVxuXG4vKiogQ2xhbXAgYSBjb25maWd1cmVkIGRpZmZpY3VsdHkgaW50byBbMSwge0BsaW5rIFBPV19NQVhfRElGRklDVUxUWX1dLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNsYW1wRGlmZmljdWx0eShkaWZmaWN1bHR5OiBudW1iZXIpOiBudW1iZXIge1xuICBpZiAoIU51bWJlci5pc0Zpbml0ZShkaWZmaWN1bHR5KSkgcmV0dXJuIFBPV19ERUZBVUxUX0RJRkZJQ1VMVFk7XG4gIHJldHVybiBNYXRoLm1pbihQT1dfTUFYX0RJRkZJQ1VMVFksIE1hdGgubWF4KDEsIE1hdGguZmxvb3IoZGlmZmljdWx0eSkpKTtcbn1cblxuLyoqIElzc3VlIGEgZnJlc2ggc2lnbmVkIGNoYWxsZW5nZS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVQcm9vZk9mV29ya0NoYWxsZW5nZShcbiAgc2VjcmV0OiBzdHJpbmcsXG4gIG9wdHM6IHsgZGlmZmljdWx0eT86IG51bWJlcjsgdHRsTXM/OiBudW1iZXI7IG5vdz86IG51bWJlciB9ID0ge30sXG4pOiBQcm9vZk9mV29ya0NoYWxsZW5nZSB7XG4gIGlmICghc2VjcmV0KSB0aHJvdyBuZXcgRXJyb3IoJ0EgcHJvb2Ytb2Ytd29yayBzZWNyZXQgaXMgcmVxdWlyZWQnKTtcbiAgY29uc3Qgbm93ID0gb3B0cy5ub3cgPz8gRGF0ZS5ub3coKTtcbiAgY29uc3QgYm9keTogUHJvb2ZPZldvcmtDaGFsbGVuZ2VCb2R5ID0ge1xuICAgIG5vbmNlOiBiNjR1cmwocmFuZG9tQnl0ZXMoMTYpKSxcbiAgICBkaWZmaWN1bHR5OiBjbGFtcERpZmZpY3VsdHkob3B0cy5kaWZmaWN1bHR5ID8/IFBPV19ERUZBVUxUX0RJRkZJQ1VMVFkpLFxuICAgIGV4cDogbm93ICsgKG9wdHMudHRsTXMgPz8gUE9XX0NIQUxMRU5HRV9UVExfTVMpLFxuICB9O1xuICBjb25zdCBlbmNvZGVkID0gYjY0dXJsKEJ1ZmZlci5mcm9tKEpTT04uc3RyaW5naWZ5KGJvZHkpLCAndXRmOCcpKTtcbiAgcmV0dXJuIHsgY2hhbGxlbmdlOiBgJHtlbmNvZGVkfS4ke3NpZ24oZW5jb2RlZCwgc2VjcmV0KX1gLCBkaWZmaWN1bHR5OiBib2R5LmRpZmZpY3VsdHksIGV4cGlyZXNBdDogbmV3IERhdGUoYm9keS5leHApLnRvSVNPU3RyaW5nKCkgfTtcbn1cblxuLyoqXG4gKiBEZWNvZGUgYSBjaGFsbGVuZ2UgYW5kIGNoZWNrIGl0cyBzaWduYXR1cmUuIE51bGwgd2hlbiBpdCBpcyBtYWxmb3JtZWQgb3JcbiAqIHdhcyBub3Qgc2lnbmVkIHdpdGggYHNlY3JldGAgKGV4cGlyeSBpcyBOT1QgY2hlY2tlZCBoZXJlKS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlUHJvb2ZPZldvcmtDaGFsbGVuZ2UoY2hhbGxlbmdlOiBzdHJpbmcsIHNlY3JldDogc3RyaW5nKTogUHJvb2ZPZldvcmtDaGFsbGVuZ2VCb2R5IHwgbnVsbCB7XG4gIGlmICh0eXBlb2YgY2hhbGxlbmdlICE9PSAnc3RyaW5nJyB8fCBjaGFsbGVuZ2UubGVuZ3RoID09PSAwIHx8IGNoYWxsZW5nZS5sZW5ndGggPiBDSEFMTEVOR0VfTUFYX0xFTkdUSCkgcmV0dXJuIG51bGw7XG4gIGNvbnN0IGRvdCA9IGNoYWxsZW5nZS5pbmRleE9mKCcuJyk7XG4gIGlmIChkb3QgPD0gMCB8fCBkb3QgIT09IGNoYWxsZW5nZS5sYXN0SW5kZXhPZignLicpKSByZXR1cm4gbnVsbDtcbiAgY29uc3QgZW5jb2RlZCA9IGNoYWxsZW5nZS5zbGljZSgwLCBkb3QpO1xuICBjb25zdCBnaXZlbiA9IEJ1ZmZlci5mcm9tKGNoYWxsZW5nZS5zbGljZShkb3QgKyAxKSwgJ2Jhc2U2NHVybCcpO1xuICBjb25zdCBleHBlY3RlZCA9IEJ1ZmZlci5mcm9tKHNpZ24oZW5jb2RlZCwgc2VjcmV0KSwgJ2Jhc2U2NHVybCcpO1xuICBpZiAoZ2l2ZW4ubGVuZ3RoICE9PSBleHBlY3RlZC5sZW5ndGggfHwgIXRpbWluZ1NhZmVFcXVhbChnaXZlbiwgZXhwZWN0ZWQpKSByZXR1cm4gbnVsbDtcbiAgdHJ5IHtcbiAgICBjb25zdCBib2R5ID0gSlNPTi5wYXJzZShCdWZmZXIuZnJvbShlbmNvZGVkLCAnYmFzZTY0dXJsJykudG9TdHJpbmcoJ3V0ZjgnKSkgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gICAgaWYgKHR5cGVvZiBib2R5Lm5vbmNlICE9PSAnc3RyaW5nJyB8fCB0eXBlb2YgYm9keS5kaWZmaWN1bHR5ICE9PSAnbnVtYmVyJyB8fCB0eXBlb2YgYm9keS5leHAgIT09ICdudW1iZXInKSByZXR1cm4gbnVsbDtcbiAgICBpZiAoIU51bWJlci5pc0ludGVnZXIoYm9keS5kaWZmaWN1bHR5KSB8fCBib2R5LmRpZmZpY3VsdHkgPCAxIHx8IGJvZHkuZGlmZmljdWx0eSA+IFBPV19NQVhfRElGRklDVUxUWSkgcmV0dXJuIG51bGw7XG4gICAgcmV0dXJuIHsgbm9uY2U6IGJvZHkubm9uY2UsIGRpZmZpY3VsdHk6IGJvZHkuZGlmZmljdWx0eSwgZXhwOiBib2R5LmV4cCB9O1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxufVxuXG4vKipcbiAqIFZlcmlmeSBhIHNvbHV0aW9uOiBhIGdlbnVpbmUsIHVuZXhwaXJlZCBjaGFsbGVuZ2UgKHNpZ25lZCB3aXRoIGBzZWNyZXRgKSxcbiAqIGF0IGxlYXN0IGBtaW5EaWZmaWN1bHR5YCBoYXJkLCB3aG9zZSBoYXNoIHdpdGggYG5vbmNlYCBoYXMgZW5vdWdoIGxlYWRpbmdcbiAqIHplcm8gYml0cy4gRG9lcyBOT1QgZW5mb3JjZSBzaW5nbGUgdXNlIOKAlCBzdG9yZSB7QGxpbmsgUHJvb2ZPZldvcmtWZXJkaWN0LmtleX0uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB2ZXJpZnlQcm9vZk9mV29yayhcbiAgc29sdXRpb246IFBhcnRpYWw8UHJvb2ZPZldvcmtTb2x1dGlvbj4gfCBudWxsIHwgdW5kZWZpbmVkLFxuICBzZWNyZXQ6IHN0cmluZyxcbiAgb3B0czogeyBub3c/OiBudW1iZXI7IG1pbkRpZmZpY3VsdHk/OiBudW1iZXIgfSA9IHt9LFxuKTogUHJvb2ZPZldvcmtWZXJkaWN0IHtcbiAgY29uc3QgY2hhbGxlbmdlID0gc29sdXRpb24/LmNoYWxsZW5nZTtcbiAgY29uc3Qgbm9uY2UgPSBzb2x1dGlvbj8ubm9uY2U7XG4gIGlmICh0eXBlb2YgY2hhbGxlbmdlICE9PSAnc3RyaW5nJyB8fCB0eXBlb2Ygbm9uY2UgIT09ICdzdHJpbmcnKSByZXR1cm4geyBvazogZmFsc2UsIHJlYXNvbjogJ21hbGZvcm1lZCcgfTtcbiAgaWYgKCEvXlxcZCskLy50ZXN0KG5vbmNlKSB8fCBub25jZS5sZW5ndGggPiBOT05DRV9NQVhfRElHSVRTKSByZXR1cm4geyBvazogZmFsc2UsIHJlYXNvbjogJ21hbGZvcm1lZCcgfTtcbiAgaWYgKCFzZWNyZXQpIHJldHVybiB7IG9rOiBmYWxzZSwgcmVhc29uOiAnYmFkX3NpZ25hdHVyZScgfTtcbiAgY29uc3QgYm9keSA9IHBhcnNlUHJvb2ZPZldvcmtDaGFsbGVuZ2UoY2hhbGxlbmdlLCBzZWNyZXQpO1xuICBpZiAoIWJvZHkpIHJldHVybiB7IG9rOiBmYWxzZSwgcmVhc29uOiAnYmFkX3NpZ25hdHVyZScgfTtcbiAgaWYgKChvcHRzLm5vdyA/PyBEYXRlLm5vdygpKSA+IGJvZHkuZXhwKSByZXR1cm4geyBvazogZmFsc2UsIHJlYXNvbjogJ2V4cGlyZWQnIH07XG4gIGlmIChvcHRzLm1pbkRpZmZpY3VsdHkgIT09IHVuZGVmaW5lZCAmJiBib2R5LmRpZmZpY3VsdHkgPCBjbGFtcERpZmZpY3VsdHkob3B0cy5taW5EaWZmaWN1bHR5KSkgcmV0dXJuIHsgb2s6IGZhbHNlLCByZWFzb246ICd0b29fZWFzeScgfTtcbiAgaWYgKGxlYWRpbmdaZXJvQml0cyhwcm9vZk9mV29ya0hhc2goY2hhbGxlbmdlLCBub25jZSkpIDwgYm9keS5kaWZmaWN1bHR5KSByZXR1cm4geyBvazogZmFsc2UsIHJlYXNvbjogJ2luc3VmZmljaWVudF93b3JrJyB9O1xuICByZXR1cm4geyBvazogdHJ1ZSwga2V5OiBjaGFsbGVuZ2VLZXkoY2hhbGxlbmdlKSwgZXhwaXJlc0F0OiBib2R5LmV4cCwgZGlmZmljdWx0eTogYm9keS5kaWZmaWN1bHR5IH07XG59XG5cbi8qKlxuICogRmluZCBhIG5vbmNlIGZvciBgY2hhbGxlbmdlYCAodGVzdHMsIHRoZSBDTEkpLiBDb3VudHMgdXAgZnJvbSAwOyB0aHJvd3NcbiAqIGFmdGVyIGBtYXhJdGVyYXRpb25zYCBzbyBhIG1pc3Rha2VuIGRpZmZpY3VsdHkgY2FuJ3Qgc3BpbiBmb3JldmVyLlxuICovXG5leHBvcnQgZnVuY3Rpb24gc29sdmVQcm9vZk9mV29yayhjaGFsbGVuZ2U6IHN0cmluZywgZGlmZmljdWx0eTogbnVtYmVyLCBvcHRzOiB7IG1heEl0ZXJhdGlvbnM/OiBudW1iZXIgfSA9IHt9KTogc3RyaW5nIHtcbiAgY29uc3QgbWF4ID0gb3B0cy5tYXhJdGVyYXRpb25zID8/IDIgKiogMzI7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbWF4OyBpKyspIHtcbiAgICBjb25zdCBub25jZSA9IFN0cmluZyhpKTtcbiAgICBpZiAobGVhZGluZ1plcm9CaXRzKHByb29mT2ZXb3JrSGFzaChjaGFsbGVuZ2UsIG5vbmNlKSkgPj0gZGlmZmljdWx0eSkgcmV0dXJuIG5vbmNlO1xuICB9XG4gIHRocm93IG5ldyBFcnJvcihgTm8gcHJvb2Ytb2Ytd29yayBzb2x1dGlvbiB3aXRoaW4gJHttYXh9IGl0ZXJhdGlvbnNgKTtcbn1cbiJdfQ==
|