raindancers-cloudfront 0.0.31 → 0.0.32
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/cloudfront/auth/cognitoAuthSecretManager.d.ts +6 -1
- package/lib/cloudfront/auth/cognitoAuthSecretManager.js +5 -2
- package/lib/cloudfront/lambda-bundled/cognito-auth/__pycache__/six.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cffi/__pycache__/__init__.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cffi/__pycache__/_cffi_gen_src.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cffi/__pycache__/_imp_emulation.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cffi/__pycache__/_shimmed_dist_utils.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cffi/__pycache__/api.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cffi/__pycache__/backend_ctypes.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cffi/__pycache__/cffi_opcode.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cffi/__pycache__/commontypes.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cffi/__pycache__/cparser.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cffi/__pycache__/error.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cffi/__pycache__/ffiplatform.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cffi/__pycache__/gen_src.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cffi/__pycache__/lock.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cffi/__pycache__/model.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cffi/__pycache__/pkgconfig.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cffi/__pycache__/recompiler.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cffi/__pycache__/setuptools_ext.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cffi/__pycache__/vengine_cpy.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cffi/__pycache__/vengine_gen.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cffi/__pycache__/verifier.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cryptography/__pycache__/__about__.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cryptography/__pycache__/__init__.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cryptography/__pycache__/exceptions.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cryptography/__pycache__/fernet.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cryptography/__pycache__/utils.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cryptography/hazmat/__pycache__/__init__.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cryptography/hazmat/__pycache__/_oid.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cryptography/hazmat/backends/__pycache__/__init__.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cryptography/hazmat/backends/openssl/__pycache__/__init__.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cryptography/hazmat/backends/openssl/__pycache__/aead.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cryptography/hazmat/backends/openssl/__pycache__/backend.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cryptography/hazmat/backends/openssl/__pycache__/ciphers.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cryptography/hazmat/backends/openssl/__pycache__/cmac.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cryptography/hazmat/backends/openssl/__pycache__/decode_asn1.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cryptography/hazmat/backends/openssl/__pycache__/ec.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cryptography/hazmat/backends/openssl/__pycache__/rsa.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cryptography/hazmat/backends/openssl/__pycache__/utils.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cryptography/hazmat/bindings/__pycache__/__init__.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cryptography/hazmat/bindings/openssl/__pycache__/__init__.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cryptography/hazmat/bindings/openssl/__pycache__/_conditional.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cryptography/hazmat/bindings/openssl/__pycache__/binding.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cryptography/hazmat/primitives/__pycache__/__init__.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cryptography/hazmat/primitives/__pycache__/_asymmetric.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cryptography/hazmat/primitives/__pycache__/_cipheralgorithm.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cryptography/hazmat/primitives/__pycache__/_serialization.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cryptography/hazmat/primitives/__pycache__/cmac.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cryptography/hazmat/primitives/__pycache__/constant_time.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cryptography/hazmat/primitives/__pycache__/hashes.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cryptography/hazmat/primitives/__pycache__/hmac.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cryptography/hazmat/primitives/__pycache__/keywrap.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cryptography/hazmat/primitives/__pycache__/padding.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cryptography/hazmat/primitives/__pycache__/poly1305.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cryptography/hazmat/primitives/asymmetric/__pycache__/__init__.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cryptography/hazmat/primitives/asymmetric/__pycache__/dh.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cryptography/hazmat/primitives/asymmetric/__pycache__/dsa.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cryptography/hazmat/primitives/asymmetric/__pycache__/ec.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cryptography/hazmat/primitives/asymmetric/__pycache__/ed25519.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cryptography/hazmat/primitives/asymmetric/__pycache__/ed448.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cryptography/hazmat/primitives/asymmetric/__pycache__/padding.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cryptography/hazmat/primitives/asymmetric/__pycache__/rsa.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cryptography/hazmat/primitives/asymmetric/__pycache__/types.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cryptography/hazmat/primitives/asymmetric/__pycache__/utils.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cryptography/hazmat/primitives/asymmetric/__pycache__/x25519.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cryptography/hazmat/primitives/asymmetric/__pycache__/x448.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cryptography/hazmat/primitives/ciphers/__pycache__/__init__.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cryptography/hazmat/primitives/ciphers/__pycache__/aead.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cryptography/hazmat/primitives/ciphers/__pycache__/algorithms.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cryptography/hazmat/primitives/ciphers/__pycache__/base.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cryptography/hazmat/primitives/ciphers/__pycache__/modes.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cryptography/hazmat/primitives/kdf/__pycache__/__init__.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cryptography/hazmat/primitives/kdf/__pycache__/concatkdf.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cryptography/hazmat/primitives/kdf/__pycache__/hkdf.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cryptography/hazmat/primitives/kdf/__pycache__/kbkdf.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cryptography/hazmat/primitives/kdf/__pycache__/pbkdf2.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cryptography/hazmat/primitives/kdf/__pycache__/scrypt.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cryptography/hazmat/primitives/kdf/__pycache__/x963kdf.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cryptography/hazmat/primitives/serialization/__pycache__/__init__.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cryptography/hazmat/primitives/serialization/__pycache__/base.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cryptography/hazmat/primitives/serialization/__pycache__/pkcs12.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cryptography/hazmat/primitives/serialization/__pycache__/pkcs7.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cryptography/hazmat/primitives/serialization/__pycache__/ssh.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cryptography/hazmat/primitives/twofactor/__pycache__/__init__.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cryptography/hazmat/primitives/twofactor/__pycache__/hotp.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cryptography/hazmat/primitives/twofactor/__pycache__/totp.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cryptography/x509/__pycache__/__init__.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cryptography/x509/__pycache__/base.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cryptography/x509/__pycache__/certificate_transparency.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cryptography/x509/__pycache__/extensions.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cryptography/x509/__pycache__/general_name.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cryptography/x509/__pycache__/name.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cryptography/x509/__pycache__/ocsp.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cryptography/x509/__pycache__/oid.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/jwt/__pycache__/__init__.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/jwt/__pycache__/algorithms.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/jwt/__pycache__/api_jwk.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/jwt/__pycache__/api_jws.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/jwt/__pycache__/api_jwt.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/jwt/__pycache__/exceptions.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/jwt/__pycache__/help.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/jwt/__pycache__/jwk_set_cache.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/jwt/__pycache__/jwks_client.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/jwt/__pycache__/types.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/jwt/__pycache__/utils.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/jwt/__pycache__/warnings.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/pycparser/__pycache__/__init__.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/pycparser/__pycache__/_ast_gen.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/pycparser/__pycache__/ast_transforms.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/pycparser/__pycache__/c_ast.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/pycparser/__pycache__/c_generator.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/pycparser/__pycache__/c_lexer.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/pycparser/__pycache__/c_parser.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/__pycache__/six.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cffi/__pycache__/__init__.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cffi/__pycache__/_cffi_gen_src.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cffi/__pycache__/_imp_emulation.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cffi/__pycache__/_shimmed_dist_utils.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cffi/__pycache__/api.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cffi/__pycache__/backend_ctypes.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cffi/__pycache__/cffi_opcode.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cffi/__pycache__/commontypes.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cffi/__pycache__/cparser.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cffi/__pycache__/error.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cffi/__pycache__/ffiplatform.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cffi/__pycache__/gen_src.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cffi/__pycache__/lock.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cffi/__pycache__/model.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cffi/__pycache__/pkgconfig.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cffi/__pycache__/recompiler.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cffi/__pycache__/setuptools_ext.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cffi/__pycache__/vengine_cpy.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cffi/__pycache__/vengine_gen.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cffi/__pycache__/verifier.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cryptography/__pycache__/__about__.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cryptography/__pycache__/__init__.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cryptography/__pycache__/exceptions.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cryptography/__pycache__/fernet.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cryptography/__pycache__/utils.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cryptography/hazmat/__pycache__/__init__.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cryptography/hazmat/__pycache__/_oid.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cryptography/hazmat/backends/__pycache__/__init__.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cryptography/hazmat/backends/openssl/__pycache__/__init__.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cryptography/hazmat/backends/openssl/__pycache__/aead.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cryptography/hazmat/backends/openssl/__pycache__/backend.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cryptography/hazmat/backends/openssl/__pycache__/ciphers.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cryptography/hazmat/backends/openssl/__pycache__/cmac.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cryptography/hazmat/backends/openssl/__pycache__/decode_asn1.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cryptography/hazmat/backends/openssl/__pycache__/ec.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cryptography/hazmat/backends/openssl/__pycache__/rsa.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cryptography/hazmat/backends/openssl/__pycache__/utils.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cryptography/hazmat/bindings/__pycache__/__init__.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cryptography/hazmat/bindings/openssl/__pycache__/__init__.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cryptography/hazmat/bindings/openssl/__pycache__/_conditional.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cryptography/hazmat/bindings/openssl/__pycache__/binding.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cryptography/hazmat/primitives/__pycache__/__init__.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cryptography/hazmat/primitives/__pycache__/_asymmetric.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cryptography/hazmat/primitives/__pycache__/_cipheralgorithm.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cryptography/hazmat/primitives/__pycache__/_serialization.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cryptography/hazmat/primitives/__pycache__/cmac.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cryptography/hazmat/primitives/__pycache__/constant_time.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cryptography/hazmat/primitives/__pycache__/hashes.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cryptography/hazmat/primitives/__pycache__/hmac.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cryptography/hazmat/primitives/__pycache__/keywrap.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cryptography/hazmat/primitives/__pycache__/padding.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cryptography/hazmat/primitives/__pycache__/poly1305.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cryptography/hazmat/primitives/asymmetric/__pycache__/__init__.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cryptography/hazmat/primitives/asymmetric/__pycache__/dh.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cryptography/hazmat/primitives/asymmetric/__pycache__/dsa.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cryptography/hazmat/primitives/asymmetric/__pycache__/ec.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cryptography/hazmat/primitives/asymmetric/__pycache__/ed25519.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cryptography/hazmat/primitives/asymmetric/__pycache__/ed448.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cryptography/hazmat/primitives/asymmetric/__pycache__/padding.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cryptography/hazmat/primitives/asymmetric/__pycache__/rsa.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cryptography/hazmat/primitives/asymmetric/__pycache__/types.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cryptography/hazmat/primitives/asymmetric/__pycache__/utils.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cryptography/hazmat/primitives/asymmetric/__pycache__/x25519.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cryptography/hazmat/primitives/asymmetric/__pycache__/x448.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cryptography/hazmat/primitives/ciphers/__pycache__/__init__.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cryptography/hazmat/primitives/ciphers/__pycache__/aead.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cryptography/hazmat/primitives/ciphers/__pycache__/algorithms.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cryptography/hazmat/primitives/ciphers/__pycache__/base.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cryptography/hazmat/primitives/ciphers/__pycache__/modes.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cryptography/hazmat/primitives/kdf/__pycache__/__init__.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cryptography/hazmat/primitives/kdf/__pycache__/concatkdf.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cryptography/hazmat/primitives/kdf/__pycache__/hkdf.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cryptography/hazmat/primitives/kdf/__pycache__/kbkdf.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cryptography/hazmat/primitives/kdf/__pycache__/pbkdf2.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cryptography/hazmat/primitives/kdf/__pycache__/scrypt.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cryptography/hazmat/primitives/kdf/__pycache__/x963kdf.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cryptography/hazmat/primitives/serialization/__pycache__/__init__.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cryptography/hazmat/primitives/serialization/__pycache__/base.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cryptography/hazmat/primitives/serialization/__pycache__/pkcs12.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cryptography/hazmat/primitives/serialization/__pycache__/pkcs7.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cryptography/hazmat/primitives/serialization/__pycache__/ssh.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cryptography/hazmat/primitives/twofactor/__pycache__/__init__.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cryptography/hazmat/primitives/twofactor/__pycache__/hotp.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cryptography/hazmat/primitives/twofactor/__pycache__/totp.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cryptography/x509/__pycache__/__init__.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cryptography/x509/__pycache__/base.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cryptography/x509/__pycache__/certificate_transparency.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cryptography/x509/__pycache__/extensions.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cryptography/x509/__pycache__/general_name.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cryptography/x509/__pycache__/name.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cryptography/x509/__pycache__/ocsp.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cryptography/x509/__pycache__/oid.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/jwt/__pycache__/__init__.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/jwt/__pycache__/algorithms.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/jwt/__pycache__/api_jwk.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/jwt/__pycache__/api_jws.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/jwt/__pycache__/api_jwt.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/jwt/__pycache__/exceptions.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/jwt/__pycache__/help.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/jwt/__pycache__/jwk_set_cache.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/jwt/__pycache__/jwks_client.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/jwt/__pycache__/types.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/jwt/__pycache__/utils.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/jwt/__pycache__/warnings.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/pycparser/__pycache__/__init__.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/pycparser/__pycache__/_ast_gen.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/pycparser/__pycache__/ast_transforms.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/pycparser/__pycache__/c_ast.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/pycparser/__pycache__/c_generator.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/pycparser/__pycache__/c_lexer.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/pycparser/__pycache__/c_parser.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/__pycache__/six.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/awscrt/__pycache__/__init__.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/awscrt/__pycache__/_aws_iot_metrics.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/awscrt/__pycache__/_test.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/awscrt/__pycache__/auth.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/awscrt/__pycache__/cbor.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/awscrt/__pycache__/checksums.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/awscrt/__pycache__/common.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/awscrt/__pycache__/crypto.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/awscrt/__pycache__/exceptions.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/awscrt/__pycache__/http.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/awscrt/__pycache__/io.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/awscrt/__pycache__/logging.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/awscrt/__pycache__/mqtt.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/awscrt/__pycache__/mqtt5.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/awscrt/__pycache__/mqtt_request_response.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/awscrt/__pycache__/s3.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/awscrt/__pycache__/websocket.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/awscrt/aio/__pycache__/__init__.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/awscrt/aio/__pycache__/http.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/awscrt/eventstream/__pycache__/__init__.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/awscrt/eventstream/__pycache__/rpc.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/bin/__pycache__/jp.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/botocore/__pycache__/__init__.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/botocore/__pycache__/args.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/botocore/__pycache__/auth.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/botocore/__pycache__/awsrequest.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/botocore/__pycache__/client.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/botocore/__pycache__/compat.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/botocore/__pycache__/compress.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/botocore/__pycache__/config.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/botocore/__pycache__/configloader.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/botocore/__pycache__/configprovider.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/botocore/__pycache__/context.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/botocore/__pycache__/credentials.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/botocore/__pycache__/discovery.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/botocore/__pycache__/endpoint.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/botocore/__pycache__/endpoint_provider.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/botocore/__pycache__/errorfactory.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/botocore/__pycache__/eventstream.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/botocore/__pycache__/exceptions.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/botocore/__pycache__/handlers.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/botocore/__pycache__/history.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/botocore/__pycache__/hooks.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/botocore/__pycache__/httpchecksum.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/botocore/__pycache__/httpsession.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/botocore/__pycache__/loaders.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/botocore/__pycache__/model.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/botocore/__pycache__/monitoring.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/botocore/__pycache__/paginate.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/botocore/__pycache__/parsers.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/botocore/__pycache__/plugin.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/botocore/__pycache__/regions.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/botocore/__pycache__/response.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/botocore/__pycache__/retryhandler.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/botocore/__pycache__/serialize.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/botocore/__pycache__/session.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/botocore/__pycache__/signers.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/botocore/__pycache__/stub.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/botocore/__pycache__/tokens.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/botocore/__pycache__/translate.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/botocore/__pycache__/useragent.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/botocore/__pycache__/utils.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/botocore/__pycache__/validate.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/botocore/__pycache__/waiter.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/botocore/crt/__pycache__/__init__.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/botocore/crt/__pycache__/auth.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/botocore/docs/__pycache__/__init__.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/botocore/docs/__pycache__/client.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/botocore/docs/__pycache__/docstring.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/botocore/docs/__pycache__/example.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/botocore/docs/__pycache__/method.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/botocore/docs/__pycache__/paginator.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/botocore/docs/__pycache__/params.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/botocore/docs/__pycache__/service.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/botocore/docs/__pycache__/shape.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/botocore/docs/__pycache__/sharedexample.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/botocore/docs/__pycache__/translator.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/botocore/docs/__pycache__/utils.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/botocore/docs/__pycache__/waiter.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/botocore/docs/bcdoc/__pycache__/__init__.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/botocore/docs/bcdoc/__pycache__/docstringparser.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/botocore/docs/bcdoc/__pycache__/restdoc.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/botocore/docs/bcdoc/__pycache__/style.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/botocore/retries/__pycache__/__init__.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/botocore/retries/__pycache__/adaptive.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/botocore/retries/__pycache__/base.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/botocore/retries/__pycache__/bucket.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/botocore/retries/__pycache__/quota.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/botocore/retries/__pycache__/special.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/botocore/retries/__pycache__/standard.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/botocore/retries/__pycache__/throttling.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/botocore/vendored/__pycache__/__init__.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/botocore/vendored/__pycache__/six.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/botocore/vendored/requests/__pycache__/__init__.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/botocore/vendored/requests/__pycache__/exceptions.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/botocore/vendored/requests/packages/__pycache__/__init__.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/botocore/vendored/requests/packages/urllib3/__pycache__/__init__.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/botocore/vendored/requests/packages/urllib3/__pycache__/exceptions.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/dateutil/__pycache__/__init__.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/dateutil/__pycache__/_common.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/dateutil/__pycache__/_version.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/dateutil/__pycache__/easter.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/dateutil/__pycache__/relativedelta.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/dateutil/__pycache__/rrule.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/dateutil/__pycache__/tzwin.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/dateutil/__pycache__/utils.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/dateutil/parser/__pycache__/__init__.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/dateutil/parser/__pycache__/_parser.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/dateutil/parser/__pycache__/isoparser.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/dateutil/tz/__pycache__/__init__.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/dateutil/tz/__pycache__/_common.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/dateutil/tz/__pycache__/_factories.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/dateutil/tz/__pycache__/tz.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/dateutil/tz/__pycache__/win.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/dateutil/zoneinfo/__pycache__/__init__.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/dateutil/zoneinfo/__pycache__/rebuild.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/jmespath/__pycache__/__init__.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/jmespath/__pycache__/ast.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/jmespath/__pycache__/compat.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/jmespath/__pycache__/exceptions.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/jmespath/__pycache__/functions.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/jmespath/__pycache__/lexer.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/jmespath/__pycache__/parser.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/jmespath/__pycache__/visitor.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/urllib3/__pycache__/__init__.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/urllib3/__pycache__/_base_connection.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/urllib3/__pycache__/_collections.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/urllib3/__pycache__/_request_methods.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/urllib3/__pycache__/_version.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/urllib3/__pycache__/connection.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/urllib3/__pycache__/connectionpool.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/urllib3/__pycache__/exceptions.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/urllib3/__pycache__/fields.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/urllib3/__pycache__/filepost.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/urllib3/__pycache__/poolmanager.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/urllib3/__pycache__/response.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/urllib3/contrib/__pycache__/__init__.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/urllib3/contrib/__pycache__/pyopenssl.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/urllib3/contrib/__pycache__/socks.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/urllib3/contrib/emscripten/__pycache__/__init__.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/urllib3/contrib/emscripten/__pycache__/connection.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/urllib3/contrib/emscripten/__pycache__/fetch.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/urllib3/contrib/emscripten/__pycache__/request.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/urllib3/contrib/emscripten/__pycache__/response.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/urllib3/http2/__pycache__/__init__.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/urllib3/http2/__pycache__/connection.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/urllib3/http2/__pycache__/probe.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/urllib3/util/__pycache__/__init__.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/urllib3/util/__pycache__/connection.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/urllib3/util/__pycache__/proxy.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/urllib3/util/__pycache__/request.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/urllib3/util/__pycache__/response.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/urllib3/util/__pycache__/retry.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/urllib3/util/__pycache__/ssl_.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/urllib3/util/__pycache__/ssl_match_hostname.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/urllib3/util/__pycache__/ssltransport.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/urllib3/util/__pycache__/timeout.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/urllib3/util/__pycache__/url.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/urllib3/util/__pycache__/util.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/urllib3/util/__pycache__/wait.cpython-312.pyc +0 -0
- package/lib/cloudfront/patterns/cognito-customui-auth.js +8 -3
- package/lib/cloudfront/patterns/cognitoSessionBackend.js +2 -1
- package/package.json +1 -1
|
@@ -166,13 +166,18 @@ class CognitoCustomUiAuth extends constructs.Construct {
|
|
|
166
166
|
grantCommon(logoutRole, { kms: true, ddb: true, kvs: true, cognito: true, hookSecret: false });
|
|
167
167
|
logoutFn = this.makeEdgeFunction('SessionLogout', 'cognito-customui-logout', configPy, logoutRole, false);
|
|
168
168
|
}
|
|
169
|
-
// Retain old Lambda@Edge versions
|
|
169
|
+
// Retain old Lambda@Edge versions on a real update/delete — edge replicas
|
|
170
|
+
// take hours to drain — but let CloudFormation delete a version whose
|
|
171
|
+
// CREATE was rolled back (RetainExceptOnCreate). A plain RETAIN orphans the
|
|
172
|
+
// version (and, through it, the function and its IAM role) on a failed
|
|
173
|
+
// create, blocking the next deploy's import; RETAIN_ON_UPDATE_OR_DELETE
|
|
174
|
+
// keeps the drain-safe retain behaviour without the orphan.
|
|
170
175
|
for (const fn of [issuanceFn, refreshFn, logoutFn]) {
|
|
171
176
|
if (!fn)
|
|
172
177
|
continue;
|
|
173
178
|
const version = fn.currentVersion.node.defaultChild;
|
|
174
179
|
if (version) {
|
|
175
|
-
version.applyRemovalPolicy(core.RemovalPolicy.
|
|
180
|
+
version.applyRemovalPolicy(core.RemovalPolicy.RETAIN_ON_UPDATE_OR_DELETE);
|
|
176
181
|
}
|
|
177
182
|
}
|
|
178
183
|
const endpointOrigin = attachMode ? props.authEndpointOrigin : props.defaultBehavior.origin;
|
|
@@ -394,4 +399,4 @@ class CognitoCustomUiAuth extends constructs.Construct {
|
|
|
394
399
|
}
|
|
395
400
|
}
|
|
396
401
|
exports.CognitoCustomUiAuth = CognitoCustomUiAuth;
|
|
397
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29nbml0by1jdXN0b211aS1hdXRoLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2Nsb3VkZnJvbnQvcGF0dGVybnMvY29nbml0by1jdXN0b211aS1hdXRoLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHVDQUF5QjtBQUN6Qix1Q0FBeUI7QUFDekIsMkNBQTZCO0FBQzdCLGtEQUFvQztBQUNwQyw2Q0FPcUI7QUFDckIsdURBQXlDO0FBQ3pDLDJEQUFvRztBQUNwRyxpRkFBNkU7QUFtSDdFOzs7Ozs7Ozs7R0FTRztBQUNILE1BQWEsbUJBQW1ELFNBQVEsVUFBVSxDQUFDLFNBQVM7SUFZMUYsWUFBWSxLQUEyQixFQUFFLEVBQVUsRUFBRSxLQUFzQztRQUN6RixLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWpCLE1BQU0sVUFBVSxHQUFHLEtBQUssQ0FBQyxZQUFZLEtBQUssU0FBUyxDQUFDO1FBQ3BELElBQUksVUFBVSxJQUFJLENBQUMsS0FBSyxDQUFDLGtCQUFrQixFQUFFLENBQUM7WUFDNUMsTUFBTSxJQUFJLEtBQUssQ0FBQywyRUFBMkUsQ0FBQyxDQUFDO1FBQy9GLENBQUM7UUFDRCxJQUFJLENBQUMsVUFBVSxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsZUFBZSxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUM7WUFDbEUsTUFBTSxJQUFJLEtBQUssQ0FBQywyRUFBMkUsQ0FBQyxDQUFDO1FBQy9GLENBQUM7UUFFRCxNQUFNLENBQUMsR0FBRyxLQUFLLENBQUMsa0JBQWtCLENBQUM7UUFDbkMsTUFBTSxlQUFlLEdBQUcscUJBQUcsQ0FBQyxlQUFlLENBQUMsdUJBQXVCLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQ2xHLE1BQU0sU0FBUyxHQUFHLHFCQUFHLENBQUMs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NEJBQ3pGLENBQUM7NEJBQ0QsRUFBRSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxxQkFBcUIsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDOzRCQUN4RSxPQUFPLElBQUksQ0FBQzt3QkFDZCxDQUFDO3FCQUNGO29CQUNELEtBQUssRUFBRSx3QkFBTSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsYUFBYTtvQkFDL0MsT0FBTyxFQUFFO3dCQUNQLE1BQU0sRUFBRSxJQUFJO3dCQUNaLDRJQUE0STtxQkFDN0k7b0JBQ0QsT0FBTyxFQUFFLENBQUMsRUFBRSxRQUFRLEVBQUUsWUFBWSxFQUFFLGFBQWEsRUFBRSwwQkFBMEIsRUFBRSxDQUFDO2lCQUNqRjthQUNGLENBQUM7U0FDSCxDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0Y7QUEvWkQsa0RBK1pDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMnO1xuaW1wb3J0ICogYXMgb3MgZnJvbSAnb3MnO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCAqIGFzIGNvcmUgZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0IHtcbiAgYXdzX2NlcnRpZmljYXRlbWFuYWdlciBhcyBhY20sXG4gIGF3c19jbG91ZGZyb250IGFzIGNsb3VkZnJvbnQsXG4gIGF3c19pYW0gYXMgaWFtLFxuICBhd3NfbGFtYmRhIGFzIGxhbWJkYSxcbiAgYXdzX3NlY3JldHNtYW5hZ2VyIGFzIHNlY3JldHNtYW5hZ2VyLFxuICBhd3Nfc3NtIGFzIHNzbSxcbn0gZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0ICogYXMgY29uc3RydWN0cyBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB7IEV4dGVuc2lvbiwgRXh0ZW5zaW9uQ29uZmlnLCBBZGRCZWhhdmlvck9wdGlvbnMsIFJvbGVNYXRjaE1vZGUgfSBmcm9tICcuL3NlY3VyZWRDbG91ZEZyb250JztcbmltcG9ydCB7IEZ1bmN0aW9uQ29tcG9zZXIgfSBmcm9tICcuLi9jbG91ZGZyb250LWZ1bmN0aW9ucy9mdW5jdGlvbi1jb21wb3Nlcic7XG5cbi8qKlxuICogUHJvcHMgZm9yIHtAbGluayBDb2duaXRvQ3VzdG9tVWlBdXRofS5cbiAqXG4gKiBDb25maWd1cmVzIGN1c3RvbWVyIGF1dGhlbnRpY2F0aW9uIGZvciBhIHN0b3JlZnJvbnQgQ2xvdWRGcm9udCBkaXN0cmlidXRpb25cbiAqIHVzaW5nIEFXUyBDb2duaXRvIHdpdGggYSBmaXJzdC1wYXJ0eSAoY3VzdG9tKSBsb2dpbiBVSS4gVW5hdXRoZW50aWNhdGVkXG4gKiByZXF1ZXN0cyB0byBwcm90ZWN0ZWQgcGF0aHMgYXJlIHJlZGlyZWN0ZWQgdG8ge0BsaW5rIHVuYXV0aGVudGljYXRlZFJlZGlyZWN0UGF0aH1cbiAqIG9uIHRoZSBicmFuZCdzIG93biBkb21haW4g4oCUIG5ldmVyIHRvIGEgQ29nbml0byBob3N0ZWQgVUkuIFRoZSBsb2dpbiBwYWdlXG4gKiBwZXJmb3JtcyBTUlAgY2xpZW50LXNpZGUgYW5kIFBPU1RzIHRoZSByZXN1bHRpbmcgdG9rZW5zIHRvIHRoZSBzZXNzaW9uLWlzc3VhbmNlXG4gKiBlbmRwb2ludDsgQ29nbml0byB0b2tlbnMgYXJlIG5ldmVyIHN0b3JlZCBpbiB0aGUgYnJvd3Nlci5cbiAqXG4gKiBUaGUgYmFja2VuZCAodXNlciBwb29sLCBITUFDIGtleSwgYXV0aCB0YWJsZSwgS1ZTLCBjb25maWcgc2VjcmV0KSBpcyBwcm92aWRlZFxuICogYnkge0BsaW5rIENvZ25pdG9BdXRoSW5mcmFzdHJ1Y3R1cmV9IGFuZCByZWZlcmVuY2VkIGhlcmUgdmlhIFNTTSBwYXJhbWV0ZXJzXG4gKiB3cml0dGVuIHVuZGVyIHtAbGluayBhdXRoU3NtUGFyYW1QcmVmaXh9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENvZ25pdG9DdXN0b21VaUF1dGhQcm9wczxUUm9sZSBleHRlbmRzIHN0cmluZyA9IHN0cmluZz4ge1xuICAvKipcbiAgICogQ1JFQVRFIE1PREU6IGRlZmF1bHQgY2FjaGUgYmVoYXZpb3VyIGZvciBhIGRpc3RyaWJ1dGlvbiB0aGlzIGNvbnN0cnVjdCB3aWxsXG4gICAqIGNyZWF0ZS4gUHJvdmlkZSB3aXRoIHtAbGluayBjZXJ0aWZpY2F0ZX0uIE11dHVhbGx5IGV4Y2x1c2l2ZSB3aXRoXG4gICAqIHtAbGluayBkaXN0cmlidXRpb259LiBZb3UgTUFZIHNldCBgZnVuY3Rpb25Bc3NvY2lhdGlvbnNgIGhlcmUgKGUuZy4gYVxuICAgKiBnZW8tcm91dGluZyB2aWV3ZXItcmVxdWVzdCBmdW5jdGlvbikg4oCUIGl0IGlzIG1lcmdlZCB3aXRoIHRoZSBhdXRoLWNoZWNrXG4gICAqIGZ1bmN0aW9uOyBDbG91ZEZyb250J3Mgb25lLWZ1bmN0aW9uLXBlci1ldmVudC10eXBlIHJ1bGUgaXMgZW5mb3JjZWQgd2l0aCBhXG4gICAqIGNsZWFyIGVycm9yIHJhdGhlciB0aGFuIGFuIEwxIG92ZXJyaWRlLlxuICAgKi9cbiAgcmVhZG9ubHkgZGVmYXVsdEJlaGF2aW9yPzogY2xvdWRmcm9udC5CZWhhdmlvck9wdGlvbnM7XG4gIC8qKiBEb21haW4gbmFtZXMgZm9yIHRoZSBhdXRoIGNvbmZpZyAoYWxsb3dlZF9kb21haW5zKTsgZmlyc3QgaXMgY2Fub25pY2FsLiBSZXF1aXJlZCBpbiBib3RoIG1vZGVzLiAqL1xuICByZWFkb25seSBkb21haW5OYW1lczogc3RyaW5nW107XG4gIC8qKlxuICAgKiBOYW1lIG9mIHRoZSBzaGFyZWQgc2Vzc2lvbiBjb25maWcgc2VjcmV0IHRoZSBlZGdlIExhbWJkYXMgZmV0Y2ggYnkgbmFtZS5cbiAgICogTVVTVCBtYXRjaCB0aGUgbmFtZSB0aGUge0BsaW5rIENvZ25pdG9TZXNzaW9uQmFja2VuZH0gY3JlYXRlZCBpdCB1bmRlci5cbiAgICogT3ZlcnJpZGUgdG8gZGVjb3VwbGUgZnJvbSB0aGUgY2Fub25pY2FsIGRvbWFpbi5cbiAgICogQGRlZmF1bHQgYGNsb3VkZnJvbnQtYXV0aC1jb25maWctJHtkb21haW5OYW1lc1swXX1gXG4gICAqL1xuICByZWFkb25seSBjb25maWdTZWNyZXROYW1lPzogc3RyaW5nO1xuICAvKiogQ1JFQVRFIE1PREU6IEFDTSBjZXJ0aWZpY2F0ZSAodXMtZWFzdC0xKSBjb3ZlcmluZyB7QGxpbmsgZG9tYWluTmFtZXN9LiAqL1xuICByZWFkb25seSBjZXJ0aWZpY2F0ZT86IGFjbS5JQ2VydGlmaWNhdGU7XG4gIC8qKiBDUkVBVEUgTU9ERTogV0FGIHdlYiBBQ0wgQVJOIHRvIGFzc29jaWF0ZSB3aXRoIHRoZSBjcmVhdGVkIGRpc3RyaWJ1dGlvbi4gKi9cbiAgcmVhZG9ubHkgd2ViQWNsSWQ/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBBVFRBQ0ggTU9ERTogYW4gZXhpc3RpbmcgZGlzdHJpYnV0aW9uIHRvIGFkZCB0aGUgYXV0aCBlbmRwb2ludCArIHByb3RlY3RlZFxuICAgKiBiZWhhdmlvdXJzIHRvLCBpbnN0ZWFkIG9mIGNyZWF0aW5nIG9uZS4gTXV0dWFsbHkgZXhjbHVzaXZlIHdpdGhcbiAgICoge0BsaW5rIGRlZmF1bHRCZWhhdmlvcn0ve0BsaW5rIGNlcnRpZmljYXRlfS4gQ2xvdWRGcm9udCBhbGxvd3Mgb25seSBvbmVcbiAgICogZnVuY3Rpb24gcGVyIGV2ZW50IHR5cGUgcGVyIGJlaGF2aW91ciwgc28gdGhlIGF1dGgtY2hlY2sgaXMgYWRkZWQgdG8gcHJvdGVjdGVkXG4gICAqIFBBVEggYmVoYXZpb3VycyAodmlhIHtAbGluayBwcm90ZWN0fSkg4oCUIGl0IGlzIE5PVCBmb3JjZWQgb250byB0aGUgZXhpc3RpbmdcbiAgICogZGVmYXVsdCBiZWhhdmlvdXIuIFVzZSB7QGxpbmsgYXV0aEZ1bmN0aW9ufSB0byBjb21wb3NlIGl0IHRoZXJlIHlvdXJzZWxmLlxuICAgKi9cbiAgcmVhZG9ubHkgZGlzdHJpYnV0aW9uPzogY2xvdWRmcm9udC5EaXN0cmlidXRpb247XG4gIC8qKlxuICAgKiBBVFRBQ0ggTU9ERTogb3JpZ2luIGZvciB0aGUgYXV0aCBlbmRwb2ludCBiZWhhdmlvdXJzIChpc3N1YW5jZS9yZWZyZXNoL2xvZ291dCkuXG4gICAqIFRoZSBlbmRwb2ludHMgYXJlIGdlbmVyYXRlZCBieSBMYW1iZGFARWRnZSwgYnV0IGEgQ2xvdWRGcm9udCBiZWhhdmlvdXIgc3RpbGxcbiAgICogcmVxdWlyZXMgYW4gb3JpZ2luLiBSZXF1aXJlZCB3aGVuIHtAbGluayBkaXN0cmlidXRpb259IGlzIHNldC5cbiAgICovXG4gIHJlYWRvbmx5IGF1dGhFbmRwb2ludE9yaWdpbj86IGNsb3VkZnJvbnQuSU9yaWdpbjtcbiAgLyoqXG4gICAqIFNTTSBwYXJhbWV0ZXIgcHJlZml4IHVuZGVyIHdoaWNoIHtAbGluayBDb2duaXRvQXV0aEluZnJhc3RydWN0dXJlfSBwdWJsaXNoZWRcbiAgICogYGNvbmZpZ1NlY3JldEFybmAsIGBrbXNLZXlBcm5gLCBgYXV0aFRhYmxlQXJuYCwgYGt2c0FybmAsIGBjb2duaXRvRG9tYWluYCxcbiAgICogYGNsaWVudElkYCBhbmQgYHVzZXJQb29sSWRgLlxuICAgKi9cbiAgcmVhZG9ubHkgYXV0aFNzbVBhcmFtUHJlZml4OiBzdHJpbmc7XG4gIC8qKiBSZWdpb24gdGhlIGF1dGggYmFja2VuZCAoY29uZmlnIHNlY3JldCwgYXV0aCB0YWJsZSkgbGl2ZXMgaW4uICovXG4gIHJlYWRvbmx5IGF1dGhSZWdpb246IHN0cmluZztcbiAgLyoqIEZpcnN0LXBhcnR5IHBhdGggdW5hdXRoZW50aWNhdGVkIHVzZXJzIGFyZSByZWRpcmVjdGVkIHRvLiBAZGVmYXVsdCAnL2xvZ2luJyAqL1xuICByZWFkb25seSB1bmF1dGhlbnRpY2F0ZWRSZWRpcmVjdFBhdGg/OiBzdHJpbmc7XG4gIC8qKiBFeHRlbnNpb25zIGFwcGxpZWQgdG8gdGhlIGRlZmF1bHQgYmVoYXZpb3VyLiBAZGVmYXVsdCBbXSAocHVibGljKSAqL1xuICByZWFkb25seSBkZWZhdWx0RXh0ZW5zaW9ucz86IEV4dGVuc2lvbltdO1xuICAvKiogUm9sZSBjb25maWd1cmF0aW9uIGZvciB0aGUgZGVmYXVsdCBiZWhhdmlvdXIuICovXG4gIHJlYWRvbmx5IGRlZmF1bHRFeHRlbnNpb25Db25maWc/OiBFeHRlbnNpb25Db25maWc8VFJvbGU+O1xuICAvKiogSW5qZWN0IHZhbGlkYXRlZCBpZGVudGl0eSBjbGFpbXMgYXMgb3JpZ2luIGhlYWRlcnMuIEBkZWZhdWx0IHRydWUgKi9cbiAgcmVhZG9ubHkgZW5hYmxlSGVhZGVySW5qZWN0aW9uPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIE1hcCBvZiBvcmlnaW4gaGVhZGVyIG5hbWUgdG8gc2Vzc2lvbi1KV1QgY2xhaW0ga2V5LlxuICAgKiBAZGVmYXVsdCB7ICd4LWN1c3RvbWVyLWlkJzogJ2N1c3RvbWVyX2lkJywgJ3gtY3VzdG9tZXItZW1haWwnOiAnZW1haWwnIH1cbiAgICovXG4gIHJlYWRvbmx5IGhlYWRlckluamVjdGlvbkNsYWltcz86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG4gIC8qKiBQYXRoIG9mIHRoZSBzZXNzaW9uLWlzc3VhbmNlIGVuZHBvaW50IChQT1NUKS4gQGRlZmF1bHQgJy9hdXRoL3Nlc3Npb24nICovXG4gIHJlYWRvbmx5IHNlc3Npb25Jc3N1YW5jZVBhdGg/OiBzdHJpbmc7XG4gIC8qKiBNb3VudCB0aGUgc2lsZW50LXJlZnJlc2ggZW5kcG9pbnQgYXQgJy9vYXV0aDIvcmVmcmVzaCcuIEBkZWZhdWx0IHRydWUgKi9cbiAgcmVhZG9ubHkgZW5hYmxlUmVmcmVzaEVuZHBvaW50PzogYm9vbGVhbjtcbiAgLyoqIE1vdW50IHRoZSBsb2dvdXQgZW5kcG9pbnQgYXQgJy9vYXV0aDIvbG9nb3V0JyAoUE9TVCkuIEBkZWZhdWx0IHRydWUgKi9cbiAgcmVhZG9ubHkgZW5hYmxlTG9nb3V0RW5kcG9pbnQ/OiBib29sZWFuO1xuICAvKiogVVJMIG9mIHRoZSBpZGVudGl0eS1saW5raW5nIGhvb2sgdGhlIGlzc3VhbmNlIGVuZHBvaW50IGNhbGxzIHRvIHJlc29sdmUgY3VzdG9tZXJfaWQuICovXG4gIHJlYWRvbmx5IGlkZW50aXR5TGlua2luZ0hvb2tVcmw6IHN0cmluZztcbiAgLyoqIFNlY3JldHMgTWFuYWdlciBBUk4gb2YgdGhlIHNoYXJlZCBzZWNyZXQgdXNlZCB0byBhdXRoZW50aWNhdGUgdG8gdGhlIGhvb2suICovXG4gIHJlYWRvbmx5IGlkZW50aXR5TGlua2luZ0hvb2tTZWNyZXRBcm4/OiBzdHJpbmc7XG4gIC8qKiBTZXNzaW9uIEpXVCBsaWZldGltZSwgc2Vjb25kcy4gQGRlZmF1bHQgMzYwMCAqL1xuICByZWFkb25seSBzZXNzaW9uVHRsU2Vjb25kcz86IG51bWJlcjtcbiAgLyoqIFN0b3JlZCByZWZyZXNoLXRva2VuIGxpZmV0aW1lLCBkYXlzLiBAZGVmYXVsdCAzMCAqL1xuICByZWFkb25seSByZWZyZXNoVHRsRGF5cz86IG51bWJlcjtcbiAgLyoqIFBhdGggdG8gcmVkaXJlY3QgdG8gYWZ0ZXIgbG9nb3V0LiBAZGVmYXVsdCAnLycgKi9cbiAgcmVhZG9ubHkgcG9zdExvZ291dFJlZGlyZWN0UGF0aD86IHN0cmluZztcbiAgLyoqIEFkZCBTUEEgY3VzdG9tIGVycm9yIHJlc3BvbnNlcy4gQGRlZmF1bHQgZmFsc2UgKi9cbiAgcmVhZG9ubHkgZW5hYmxlRXJyb3JSZXNwb25zZXM/OiBib29sZWFuO1xuICAvKiogRXJyb3IgcGFnZSBwYXRoIHdoZW4ge0BsaW5rIGVuYWJsZUVycm9yUmVzcG9uc2VzfSBpcyBzZXQuIEBkZWZhdWx0ICcvZXJyb3IuaHRtbCcgKi9cbiAgcmVhZG9ubHkgZXJyb3JSZXNwb25zZVBhZ2VQYXRoPzogc3RyaW5nO1xuICAvKiogRGVmYXVsdCByb290IG9iamVjdC4gQGRlZmF1bHQgJ2luZGV4Lmh0bWwnICovXG4gIHJlYWRvbmx5IGRlZmF1bHRSb290T2JqZWN0Pzogc3RyaW5nO1xuICAvKipcbiAgICogQ1JFQVRFIE1PREU6IG1pbmltdW0gVExTIHNlY3VyaXR5IHBvbGljeSBmb3IgdGhlIGNyZWF0ZWQgZGlzdHJpYnV0aW9uJ3NcbiAgICogdmlld2VyIGNvbm5lY3Rpb25zLiBEZWZhdWx0cyB0byB0aGUgY3VycmVudC1nZW5lcmF0aW9uIHBvbGljeTsgb3ZlcnJpZGUgb25seVxuICAgKiB0byByZWxheCBpdCAobm90IHJlY29tbWVuZGVkKS4gSWdub3JlZCBpbiBBVFRBQ0ggTU9ERSDigJQgdGhlIHBhc3NlZC1pblxuICAgKiBkaXN0cmlidXRpb24gYWxyZWFkeSBmaXhlcyBpdHMgb3duIHBvbGljeS5cbiAgICogQGRlZmF1bHQgY2xvdWRmcm9udC5TZWN1cml0eVBvbGljeVByb3RvY29sLlRMU19WMV8yXzIwMjVcbiAgICovXG4gIHJlYWRvbmx5IG1pbmltdW1Qcm90b2NvbFZlcnNpb24/OiBjbG91ZGZyb250LlNlY3VyaXR5UG9saWN5UHJvdG9jb2w7XG4gIC8qKlxuICAgKiBBbGxvd2VkIHZpZXdlciBIVFRQIG1ldGhvZHMgZm9yIHRoZSBhdXRoIGVuZHBvaW50IGJlaGF2aW91cnMgKHNlc3Npb25cbiAgICogaXNzdWFuY2UsIHJlZnJlc2gsIGxvZ291dCkuIFRoZXNlIGVuZHBvaW50cyBhcmUgUE9TVC1kcml2ZW4sIHNvIHRoZSBkZWZhdWx0XG4gICAqIHBlcm1pdHMgYWxsIG1ldGhvZHM7IENsb3VkRnJvbnQncyBHRVQvSEVBRCBkZWZhdWx0IHdvdWxkIG90aGVyd2lzZSByZWplY3QgdGhlXG4gICAqIFBPU1QgdGhleSByZXF1aXJlLiBPdmVycmlkZSB0byBuYXJyb3cgaXQgKG11c3Qgc3RpbGwgaW5jbHVkZSBQT1NUKS5cbiAgICogQGRlZmF1bHQgY2xvdWRmcm9udC5BbGxvd2VkTWV0aG9kcy5BTExPV19BTExcbiAgICovXG4gIHJlYWRvbmx5IGF1dGhFbmRwb2ludEFsbG93ZWRNZXRob2RzPzogY2xvdWRmcm9udC5BbGxvd2VkTWV0aG9kcztcbn1cblxuLyoqXG4gKiBDdXN0b21lciBhdXRoZW50aWNhdGlvbiBmb3IgYSBzdG9yZWZyb250IENsb3VkRnJvbnQgZGlzdHJpYnV0aW9uIHVzaW5nIENvZ25pdG9cbiAqIHdpdGggYSBjdXN0b20sIGJyYW5kLWRvbWFpbiBsb2dpbiBVSS5cbiAqXG4gKiBPV05TIChpbiB0aGlzIGxpYnJhcnkpOiB0aGUgZWRnZSBzZXNzaW9uLXZhbGlkYXRpb24gZnVuY3Rpb24gKHJldXNlZCBzaGFyZWRcbiAqIG1vZHVsZSwgcmVkaXJlY3RpbmcgdG8gYSBmaXJzdC1wYXJ0eSAvbG9naW4pLCB0aGUgc2Vzc2lvbi1pc3N1YW5jZSAvIHJlZnJlc2ggL1xuICogbG9nb3V0IExhbWJkYUBFZGdlIGZ1bmN0aW9ucywgYW5kIHRoZWlyIElBTSB3aXJpbmcuIENPTlNVTUVTOiB0aGUgQ29nbml0b1xuICogYmFja2VuZCBmcm9tIHtAbGluayBDb2duaXRvQXV0aEluZnJhc3RydWN0dXJlfS4gRG9lcyBOT1QgcHJvdmlzaW9uIHRoZSB1c2VyXG4gKiBwb29sIOKAlCB0aGF0IGlzIHRoZSBiYWNrZW5kIGNvbnN0cnVjdCdzIGpvYi5cbiAqL1xuZXhwb3J0IGNsYXNzIENvZ25pdG9DdXN0b21VaUF1dGg8VFJvbGUgZXh0ZW5kcyBzdHJpbmcgPSBzdHJpbmc+IGV4dGVuZHMgY29uc3RydWN0cy5Db25zdHJ1Y3Qge1xuICBwdWJsaWMgcmVhZG9ubHkgZGlzdHJpYnV0aW9uOiBjbG91ZGZyb250LkRpc3RyaWJ1dGlvbjtcblxuICBwcml2YXRlIHJlYWRvbmx5IGNvbXBvc2VyOiBGdW5jdGlvbkNvbXBvc2VyO1xuICBwcml2YXRlIHJlYWRvbmx5IGNvbXBvc2VkRnVuY3Rpb25zOiBNYXA8c3RyaW5nLCBjbG91ZGZyb250LkZ1bmN0aW9uPjtcbiAgcHJpdmF0ZSByZWFkb25seSBrdnM6IGNsb3VkZnJvbnQuSUtleVZhbHVlU3RvcmU7XG4gIHByaXZhdGUgcmVhZG9ubHkgbG9naW5SZWRpcmVjdFBhdGg6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBlbmFibGVIZWFkZXJJbmplY3Rpb246IGJvb2xlYW47XG4gIHByaXZhdGUgcmVhZG9ubHkgaGVhZGVySW5qZWN0aW9uQ2xhaW1zOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuICBwcml2YXRlIHJlYWRvbmx5IGVuYWJsZVJlZnJlc2g6IGJvb2xlYW47XG4gIHByaXZhdGUgbGFzdENyZWF0ZWRGdW5jdGlvbjogY2xvdWRmcm9udC5GdW5jdGlvbiB8IHVuZGVmaW5lZDtcblxuICBjb25zdHJ1Y3RvcihzY29wZTogY29uc3RydWN0cy5Db25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBDb2duaXRvQ3VzdG9tVWlBdXRoUHJvcHM8VFJvbGU+KSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIGNvbnN0IGF0dGFjaE1vZGUgPSBwcm9wcy5kaXN0cmlidXRpb24gIT09IHVuZGVmaW5lZDtcbiAgICBpZiAoYXR0YWNoTW9kZSAmJiAhcHJvcHMuYXV0aEVuZHBvaW50T3JpZ2luKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2F1dGhFbmRwb2ludE9yaWdpbiBpcyByZXF1aXJlZCB3aGVuIGF0dGFjaGluZyB0byBhbiBleGlzdGluZyBkaXN0cmlidXRpb24nKTtcbiAgICB9XG4gICAgaWYgKCFhdHRhY2hNb2RlICYmICghcHJvcHMuZGVmYXVsdEJlaGF2aW9yIHx8ICFwcm9wcy5jZXJ0aWZpY2F0ZSkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignZGVmYXVsdEJlaGF2aW9yIGFuZCBjZXJ0aWZpY2F0ZSBhcmUgcmVxdWlyZWQgd2hlbiBjcmVhdGluZyBhIGRpc3RyaWJ1dGlvbicpO1xuICAgIH1cblxuICAgIGNvbnN0IHAgPSBwcm9wcy5hdXRoU3NtUGFyYW1QcmVmaXg7XG4gICAgY29uc3QgY29uZmlnU2VjcmV0QXJuID0gc3NtLlN0cmluZ1BhcmFtZXRlci52YWx1ZUZvclN0cmluZ1BhcmFtZXRlcih0aGlzLCBgJHtwfS9jb25maWdTZWNyZXRBcm5gKTtcbiAgICBjb25zdCBrbXNLZXlBcm4gPSBzc20uU3RyaW5nUGFyYW1ldGVyLnZhbHVlRm9yU3RyaW5nUGFyYW1ldGVyKHRoaXMsIGAke3B9L2ttc0tleUFybmApO1xuICAgIGNvbnN0IGF1dGhUYWJsZUFybiA9IHNzbS5TdHJpbmdQYXJhbWV0ZXIudmFsdWVGb3JTdHJpbmdQYXJhbWV0ZXIodGhpcywgYCR7cH0vYXV0aFRhYmxlQXJuYCk7XG4gICAgY29uc3Qga3ZzQXJuID0gc3NtLlN0cmluZ1BhcmFtZXRlci52YWx1ZUZvclN0cmluZ1BhcmFtZXRlcih0aGlzLCBgJHtwfS9rdnNBcm5gKTtcblxuICAgIHRoaXMua3ZzID0gY2xvdWRmcm9udC5LZXlWYWx1ZVN0b3JlLmZyb21LZXlWYWx1ZVN0b3JlQXJuKHRoaXMsICdLVlMnLCBrdnNBcm4pO1xuICAgIHRoaXMubG9naW5SZWRpcmVjdFBhdGggPSBwcm9wcy51bmF1dGhlbnRpY2F0ZWRSZWRpcmVjdFBhdGggPz8gJy9sb2dpbic7XG4gICAgdGhpcy5lbmFibGVIZWFkZXJJbmplY3Rpb24gPSBwcm9wcy5lbmFibGVIZWFkZXJJbmplY3Rpb24gPz8gdHJ1ZTtcbiAgICB0aGlzLmhlYWRlckluamVjdGlvbkNsYWltcyA9IHByb3BzLmhlYWRlckluamVjdGlvbkNsYWltcyA/PyB7XG4gICAgICAneC1jdXN0b21lci1pZCc6ICdjdXN0b21lcl9pZCcsXG4gICAgICAneC1jdXN0b21lci1lbWFpbCc6ICdlbWFpbCcsXG4gICAgfTtcbiAgICB0aGlzLmVuYWJsZVJlZnJlc2ggPSBwcm9wcy5lbmFibGVSZWZyZXNoRW5kcG9pbnQgPz8gdHJ1ZTtcbiAgICB0aGlzLmNvbXBvc2VyID0gbmV3IEZ1bmN0aW9uQ29tcG9zZXIoKTtcbiAgICB0aGlzLmNvbXBvc2VkRnVuY3Rpb25zID0gbmV3IE1hcCgpO1xuXG4gICAgY29uc3QgY2Fub25pY2FsRG9tYWluID0gcHJvcHMuZG9tYWluTmFtZXNbMF07XG4gICAgY29uc3QgYmFzZVNlY3JldE5hbWUgPSBwcm9wcy5jb25maWdTZWNyZXROYW1lID8/IGBjbG91ZGZyb250LWF1dGgtY29uZmlnLSR7Y2Fub25pY2FsRG9tYWlufWA7XG4gICAgY29uc3Qgc2Vzc2lvbklzc3VhbmNlUGF0aCA9IHByb3BzLnNlc3Npb25Jc3N1YW5jZVBhdGggPz8gJy9hdXRoL3Nlc3Npb24nO1xuXG4gICAgLy8gRXh0cmEgY29uZmlnIHNlY3JldCBmb3IgdmFsdWVzIHRoYXQgYXJlIENESyB0b2tlbnMgYXQgc3ludGggdGltZSAoYW5kIHNvXG4gICAgLy8gY2Fubm90IGJlIGJha2VkIGludG8gY29uZmlnX2dlbmVyYXRlZC5weSkg4oCUIExhbWJkYUBFZGdlIGZvcmJpZHMgZW52IHZhcnMuXG4gICAgY29uc3QgZXh0cmFDb25maWdTZWNyZXQgPSBuZXcgc2VjcmV0c21hbmFnZXIuU2VjcmV0KHRoaXMsICdDdXN0b21VaUNvbmZpZ1NlY3JldCcsIHtcbiAgICAgIHNlY3JldE5hbWU6IGBjbG91ZGZyb250LWN1c3RvbXVpLWNvbmZpZy0ke2Nhbm9uaWNhbERvbWFpbn1gLFxuICAgICAgc2VjcmV0T2JqZWN0VmFsdWU6IHtcbiAgICAgICAga3ZzX2FybjogY29yZS5TZWNyZXRWYWx1ZS51bnNhZmVQbGFpblRleHQoa3ZzQXJuKSxcbiAgICAgICAgcG9zdF9hdXRoX2hvb2tfdXJsOiBjb3JlLlNlY3JldFZhbHVlLnVuc2FmZVBsYWluVGV4dChwcm9wcy5pZGVudGl0eUxpbmtpbmdIb29rVXJsKSxcbiAgICAgICAgcG9zdF9hdXRoX2hvb2tfc2VjcmV0X2FybjogY29yZS5TZWNyZXRWYWx1ZS51bnNhZmVQbGFpblRleHQocHJvcHMuaWRlbnRpdHlMaW5raW5nSG9va1NlY3JldEFybiA/PyAnJyksXG4gICAgICB9LFxuICAgICAgZGVzY3JpcHRpb246IGBDdXN0b20tVUkgYXV0aCBjb25maWcgb3ZlcnJpZGVzIGZvciAke2Nhbm9uaWNhbERvbWFpbn1gLFxuICAgIH0pO1xuXG4gICAgY29uc3Qgc3RhdGljT3ZlcnJpZGVzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAgICAgbG9naW5fcmVkaXJlY3RfcGF0aDogdGhpcy5sb2dpblJlZGlyZWN0UGF0aCxcbiAgICAgIGFsbG93ZWRfZG9tYWluczogSlNPTi5zdHJpbmdpZnkocHJvcHMuZG9tYWluTmFtZXMpLFxuICAgICAgc2Vzc2lvbl90dGxfc2Vjb25kczogU3RyaW5nKHByb3BzLnNlc3Npb25UdGxTZWNvbmRzID8/IDM2MDApLFxuICAgICAgcmVmcmVzaF90dGxfZGF5czogU3RyaW5nKHByb3BzLnJlZnJlc2hUdGxEYXlzID8/IDMwKSxcbiAgICAgIHBvc3RfbG9nb3V0X3JlZGlyZWN0X3BhdGg6IHByb3BzLnBvc3RMb2dvdXRSZWRpcmVjdFBhdGggPz8gJy8nLFxuICAgICAgY29uZmlnX3JlZ2lvbjogcHJvcHMuYXV0aFJlZ2lvbixcbiAgICB9O1xuXG4gICAgY29uc3QgY29uZmlnUHkgPSB0aGlzLnJlbmRlckNvbmZpZ1B5KGJhc2VTZWNyZXROYW1lLCBleHRyYUNvbmZpZ1NlY3JldC5zZWNyZXROYW1lLCBwcm9wcy5hdXRoUmVnaW9uLCBzdGF0aWNPdmVycmlkZXMpO1xuXG4gICAgLy8gU2hhcmVkIElBTSBncmFudHMgZmFjdG9yeSBmb3IgdGhlIGVkZ2UgTGFtYmRhcy5cbiAgICBjb25zdCBncmFudENvbW1vbiA9IChyb2xlOiBpYW0uSVJvbGUsIG9wdHM6IHsga21zOiBib29sZWFuOyBkZGI6IGJvb2xlYW47IGt2czogYm9vbGVhbjsgY29nbml0bzogYm9vbGVhbjsgaG9va1NlY3JldDogYm9vbGVhbiB9KTogdm9pZCA9PiB7XG4gICAgICByb2xlLmFkZFRvUHJpbmNpcGFsUG9saWN5KG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgZWZmZWN0OiBpYW0uRWZmZWN0LkFMTE9XLFxuICAgICAgICBhY3Rpb25zOiBbJ3NlY3JldHNtYW5hZ2VyOkdldFNlY3JldFZhbHVlJywgJ3NlY3JldHNtYW5hZ2VyOkRlc2NyaWJlU2VjcmV0J10sXG4gICAgICAgIHJlc291cmNlczogW2NvbmZpZ1NlY3JldEFybiwgZXh0cmFDb25maWdTZWNyZXQuc2VjcmV0QXJuXSxcbiAgICAgIH0pKTtcbiAgICAgIGlmIChvcHRzLmhvb2tTZWNyZXQgJiYgcHJvcHMuaWRlbnRpdHlMaW5raW5nSG9va1NlY3JldEFybikge1xuICAgICAgICByb2xlLmFkZFRvUHJpbmNpcGFsUG9saWN5KG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICBlZmZlY3Q6IGlhbS5FZmZlY3QuQUxMT1csXG4gICAgICAgICAgYWN0aW9uczogWydzZWNyZXRzbWFuYWdlcjpHZXRTZWNyZXRWYWx1ZSddLFxuICAgICAgICAgIHJlc291cmNlczogW3Byb3BzLmlkZW50aXR5TGlua2luZ0hvb2tTZWNyZXRBcm5dLFxuICAgICAgICB9KSk7XG4gICAgICB9XG4gICAgICBpZiAob3B0cy5rbXMpIHtcbiAgICAgICAgcm9sZS5hZGRUb1ByaW5jaXBhbFBvbGljeShuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgICAgZWZmZWN0OiBpYW0uRWZmZWN0LkFMTE9XLFxuICAgICAgICAgIGFjdGlvbnM6IFsna21zOkRlY3J5cHQnXSxcbiAgICAgICAgICByZXNvdXJjZXM6IFtrbXNLZXlBcm5dLFxuICAgICAgICB9KSk7XG4gICAgICB9XG4gICAgICBpZiAob3B0cy5kZGIpIHtcbiAgICAgICAgcm9sZS5hZGRUb1ByaW5jaXBhbFBvbGljeShuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgICAgZWZmZWN0OiBpYW0uRWZmZWN0LkFMTE9XLFxuICAgICAgICAgIGFjdGlvbnM6IFsnZHluYW1vZGI6R2V0SXRlbScsICdkeW5hbW9kYjpQdXRJdGVtJywgJ2R5bmFtb2RiOkRlbGV0ZUl0ZW0nLCAnZHluYW1vZGI6UXVlcnknXSxcbiAgICAgICAgICByZXNvdXJjZXM6IFthdXRoVGFibGVBcm4sIGAke2F1dGhUYWJsZUFybn0vaW5kZXgvKmBdLFxuICAgICAgICB9KSk7XG4gICAgICB9XG4gICAgICBpZiAob3B0cy5rdnMpIHtcbiAgICAgICAgcm9sZS5hZGRUb1ByaW5jaXBhbFBvbGljeShuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgICAgZWZmZWN0OiBpYW0uRWZmZWN0LkFMTE9XLFxuICAgICAgICAgIGFjdGlvbnM6IFsnY2xvdWRmcm9udC1rZXl2YWx1ZXN0b3JlOlB1dEtleScsICdjbG91ZGZyb250LWtleXZhbHVlc3RvcmU6RGVzY3JpYmVLZXlWYWx1ZVN0b3JlJ10sXG4gICAgICAgICAgcmVzb3VyY2VzOiBba3ZzQXJuXSxcbiAgICAgICAgfSkpO1xuICAgICAgfVxuICAgICAgaWYgKG9wdHMuY29nbml0bykge1xuICAgICAgICByb2xlLmFkZFRvUHJpbmNpcGFsUG9saWN5KG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICBlZmZlY3Q6IGlhbS5FZmZlY3QuQUxMT1csXG4gICAgICAgICAgYWN0aW9uczogWydjb2duaXRvLWlkcDpJbml0aWF0ZUF1dGgnLCAnY29nbml0by1pZHA6UmV2b2tlVG9rZW4nXSxcbiAgICAgICAgICByZXNvdXJjZXM6IFsnKiddLFxuICAgICAgICB9KSk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIGNvbnN0IGVkZ2VSb2xlID0gKHJvbGVJZDogc3RyaW5nKTogaWFtLlJvbGUgPT4gbmV3IGlhbS5Sb2xlKHRoaXMsIHJvbGVJZCwge1xuICAgICAgYXNzdW1lZEJ5OiBuZXcgaWFtLkNvbXBvc2l0ZVByaW5jaXBhbChcbiAgICAgICAgbmV3IGlhbS5TZXJ2aWNlUHJpbmNpcGFsKCdsYW1iZGEuYW1hem9uYXdzLmNvbScpLFxuICAgICAgICBuZXcgaWFtLlNlcnZpY2VQcmluY2lwYWwoJ2VkZ2VsYW1iZGEuYW1hem9uYXdzLmNvbScpLFxuICAgICAgKSxcbiAgICAgIG1hbmFnZWRQb2xpY2llczogW1xuICAgICAgICBpYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoJ3NlcnZpY2Utcm9sZS9BV1NMYW1iZGFCYXNpY0V4ZWN1dGlvblJvbGUnKSxcbiAgICAgIF0sXG4gICAgfSk7XG5cbiAgICAvLyBTZXNzaW9uLWlzc3VhbmNlIExhbWJkYSAobmVlZHMgUHlKV1QgZm9yIFJTMjU2IOKAlCByZXVzZSB0aGUgY29nbml0by1hdXRoIGJ1bmRsZSkuXG4gICAgY29uc3QgaXNzdWFuY2VSb2xlID0gZWRnZVJvbGUoJ0lzc3VhbmNlUm9sZScpO1xuICAgIGdyYW50Q29tbW9uKGlzc3VhbmNlUm9sZSwgeyBrbXM6IHRydWUsIGRkYjogdHJ1ZSwga3ZzOiBmYWxzZSwgY29nbml0bzogZmFsc2UsIGhvb2tTZWNyZXQ6IHRydWUgfSk7XG4gICAgY29uc3QgaXNzdWFuY2VGbiA9IHRoaXMubWFrZUVkZ2VGdW5jdGlvbignU2Vzc2lvbklzc3VhbmNlJywgJ2NvZ25pdG8tY3VzdG9tdWktc2Vzc2lvbicsIGNvbmZpZ1B5LCBpc3N1YW5jZVJvbGUsIHRydWUpO1xuXG4gICAgLy8gUmVmcmVzaCArIGxvZ291dCBMYW1iZGFzIChib3RvMyBvbmx5IOKAlCBubyBidW5kbGVkIGRlcHMpLlxuICAgIGxldCByZWZyZXNoRm46IGNsb3VkZnJvbnQuZXhwZXJpbWVudGFsLkVkZ2VGdW5jdGlvbiB8IHVuZGVmaW5lZDtcbiAgICBpZiAodGhpcy5lbmFibGVSZWZyZXNoKSB7XG4gICAgICBjb25zdCByZWZyZXNoUm9sZSA9IGVkZ2VSb2xlKCdSZWZyZXNoUm9sZScpO1xuICAgICAgZ3JhbnRDb21tb24ocmVmcmVzaFJvbGUsIHsga21zOiB0cnVlLCBkZGI6IHRydWUsIGt2czogZmFsc2UsIGNvZ25pdG86IHRydWUsIGhvb2tTZWNyZXQ6IGZhbHNlIH0pO1xuICAgICAgcmVmcmVzaEZuID0gdGhpcy5tYWtlRWRnZUZ1bmN0aW9uKCdTZXNzaW9uUmVmcmVzaCcsICdjb2duaXRvLWN1c3RvbXVpLXJlZnJlc2gnLCBjb25maWdQeSwgcmVmcmVzaFJvbGUsIGZhbHNlKTtcbiAgICB9XG5cbiAgICBsZXQgbG9nb3V0Rm46IGNsb3VkZnJvbnQuZXhwZXJpbWVudGFsLkVkZ2VGdW5jdGlvbiB8IHVuZGVmaW5lZDtcbiAgICBpZiAocHJvcHMuZW5hYmxlTG9nb3V0RW5kcG9pbnQgPz8gdHJ1ZSkge1xuICAgICAgY29uc3QgbG9nb3V0Um9sZSA9IGVkZ2VSb2xlKCdMb2dvdXRSb2xlJyk7XG4gICAgICBncmFudENvbW1vbihsb2dvdXRSb2xlLCB7IGttczogdHJ1ZSwgZGRiOiB0cnVlLCBrdnM6IHRydWUsIGNvZ25pdG86IHRydWUsIGhvb2tTZWNyZXQ6IGZhbHNlIH0pO1xuICAgICAgbG9nb3V0Rm4gPSB0aGlzLm1ha2VFZGdlRnVuY3Rpb24oJ1Nlc3Npb25Mb2dvdXQnLCAnY29nbml0by1jdXN0b211aS1sb2dvdXQnLCBjb25maWdQeSwgbG9nb3V0Um9sZSwgZmFsc2UpO1xuICAgIH1cblxuICAgIC8vIFJldGFpbiBvbGQgTGFtYmRhQEVkZ2UgdmVyc2lvbnMg4oCUIGVkZ2UgcmVwbGljYXMgdGFrZSBob3VycyB0byBkcmFpbi5cbiAgICBmb3IgKGNvbnN0IGZuIG9mIFtpc3N1YW5jZUZuLCByZWZyZXNoRm4sIGxvZ291dEZuXSkge1xuICAgICAgaWYgKCFmbikgY29udGludWU7XG4gICAgICBjb25zdCB2ZXJzaW9uID0gZm4uY3VycmVudFZlcnNpb24ubm9kZS5kZWZhdWx0Q2hpbGQgYXMgY29yZS5DZm5SZXNvdXJjZTtcbiAgICAgIGlmICh2ZXJzaW9uKSB7XG4gICAgICAgIHZlcnNpb24uYXBwbHlSZW1vdmFsUG9saWN5KGNvcmUuUmVtb3ZhbFBvbGljeS5SRVRBSU4pO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGVuZHBvaW50T3JpZ2luOiBjbG91ZGZyb250LklPcmlnaW4gPSBhdHRhY2hNb2RlID8gcHJvcHMuYXV0aEVuZHBvaW50T3JpZ2luISA6IHByb3BzLmRlZmF1bHRCZWhhdmlvciEub3JpZ2luO1xuXG4gICAgLy8gQXV0aCBlbmRwb2ludHMgYXJlIFBPU1QtZHJpdmVuOyBDbG91ZEZyb250IG90aGVyd2lzZSBkZWZhdWx0cyB0byBHRVQvSEVBRFxuICAgIC8vIGFuZCByZWplY3RzIHRoZSBQT1NUIHRoZXNlIGVuZHBvaW50cyByZXF1aXJlLiBBbGxvdyBhbGwgbWV0aG9kcyBieSBkZWZhdWx0LlxuICAgIGNvbnN0IGF1dGhFbmRwb2ludEFsbG93ZWRNZXRob2RzID0gcHJvcHMuYXV0aEVuZHBvaW50QWxsb3dlZE1ldGhvZHMgPz8gY2xvdWRmcm9udC5BbGxvd2VkTWV0aG9kcy5BTExPV19BTEw7XG5cbiAgICBjb25zdCBlbmRwb2ludE9wdHMgPSAoZm46IGNsb3VkZnJvbnQuZXhwZXJpbWVudGFsLkVkZ2VGdW5jdGlvbiwgaW5jbHVkZUJvZHk6IGJvb2xlYW4pOiBjbG91ZGZyb250LkFkZEJlaGF2aW9yT3B0aW9ucyA9PiAoe1xuICAgICAgdmlld2VyUHJvdG9jb2xQb2xpY3k6IGNsb3VkZnJvbnQuVmlld2VyUHJvdG9jb2xQb2xpY3kuUkVESVJFQ1RfVE9fSFRUUFMsXG4gICAgICBhbGxvd2VkTWV0aG9kczogYXV0aEVuZHBvaW50QWxsb3dlZE1ldGhvZHMsXG4gICAgICAvLyBTZXQtQ29va2llIG11c3QgcmVhY2ggdGhlIHZpZXdlciDigJQgY2FjaGluZyBkaXNhYmxlZC5cbiAgICAgIGNhY2hlUG9saWN5OiBjbG91ZGZyb250LkNhY2hlUG9saWN5LkNBQ0hJTkdfRElTQUJMRUQsXG4gICAgICBlZGdlTGFtYmRhczogW3tcbiAgICAgICAgZnVuY3Rpb25WZXJzaW9uOiBmbi5jdXJyZW50VmVyc2lvbixcbiAgICAgICAgZXZlbnRUeXBlOiBjbG91ZGZyb250LkxhbWJkYUVkZ2VFdmVudFR5cGUuVklFV0VSX1JFUVVFU1QsXG4gICAgICAgIGluY2x1ZGVCb2R5OiBpbmNsdWRlQm9keSxcbiAgICAgIH1dLFxuICAgIH0pO1xuXG4gICAgaWYgKGF0dGFjaE1vZGUpIHtcbiAgICAgIHRoaXMuZGlzdHJpYnV0aW9uID0gcHJvcHMuZGlzdHJpYnV0aW9uITtcbiAgICAgIHRoaXMuZGlzdHJpYnV0aW9uLmFkZEJlaGF2aW9yKHNlc3Npb25Jc3N1YW5jZVBhdGgsIGVuZHBvaW50T3JpZ2luLCBlbmRwb2ludE9wdHMoaXNzdWFuY2VGbiwgdHJ1ZSkpO1xuICAgICAgaWYgKHJlZnJlc2hGbikge1xuICAgICAgICB0aGlzLmRpc3RyaWJ1dGlvbi5hZGRCZWhhdmlvcignL29hdXRoMi9yZWZyZXNoJywgZW5kcG9pbnRPcmlnaW4sIGVuZHBvaW50T3B0cyhyZWZyZXNoRm4sIGZhbHNlKSk7XG4gICAgICB9XG4gICAgICBpZiAobG9nb3V0Rm4pIHtcbiAgICAgICAgdGhpcy5kaXN0cmlidXRpb24uYWRkQmVoYXZpb3IoJy9vYXV0aDIvbG9nb3V0JywgZW5kcG9pbnRPcmlnaW4sIGVuZHBvaW50T3B0cyhsb2dvdXRGbiwgdHJ1ZSkpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBhZGRpdGlvbmFsQmVoYXZpb3JzOiBSZWNvcmQ8c3RyaW5nLCBjbG91ZGZyb250LkJlaGF2aW9yT3B0aW9ucz4gPSB7XG4gICAgICAgIFtzZXNzaW9uSXNzdWFuY2VQYXRoXTogeyBvcmlnaW46IGVuZHBvaW50T3JpZ2luLCAuLi5lbmRwb2ludE9wdHMoaXNzdWFuY2VGbiwgdHJ1ZSkgfSxcbiAgICAgIH07XG4gICAgICBpZiAocmVmcmVzaEZuKSB7XG4gICAgICAgIGFkZGl0aW9uYWxCZWhhdmlvcnNbJy9vYXV0aDIvcmVmcmVzaCddID0geyBvcmlnaW46IGVuZHBvaW50T3JpZ2luLCAuLi5lbmRwb2ludE9wdHMocmVmcmVzaEZuLCBmYWxzZSkgfTtcbiAgICAgIH1cbiAgICAgIGlmIChsb2dvdXRGbikge1xuICAgICAgICBhZGRpdGlvbmFsQmVoYXZpb3JzWycvb2F1dGgyL2xvZ291dCddID0geyBvcmlnaW46IGVuZHBvaW50T3JpZ2luLCAuLi5lbmRwb2ludE9wdHMobG9nb3V0Rm4sIHRydWUpIH07XG4gICAgICB9XG5cbiAgICAgIHRoaXMuZGlzdHJpYnV0aW9uID0gbmV3IGNsb3VkZnJvbnQuRGlzdHJpYnV0aW9uKHRoaXMsICdEaXN0cmlidXRpb24nLCB7XG4gICAgICAgIGh0dHBWZXJzaW9uOiBjbG91ZGZyb250Lkh0dHBWZXJzaW9uLkhUVFAyX0FORF8zLFxuICAgICAgICBtaW5pbXVtUHJvdG9jb2xWZXJzaW9uOiBwcm9wcy5taW5pbXVtUHJvdG9jb2xWZXJzaW9uID8/IGNsb3VkZnJvbnQuU2VjdXJpdHlQb2xpY3lQcm90b2NvbC5UTFNfVjFfMl8yMDI1LFxuICAgICAgICBkZWZhdWx0QmVoYXZpb3I6IHtcbiAgICAgICAgICAuLi5wcm9wcy5kZWZhdWx0QmVoYXZpb3IhLFxuICAgICAgICAgIGZ1bmN0aW9uQXNzb2NpYXRpb25zOiB0aGlzLm1lcmdlRnVuY3Rpb25Bc3NvY2lhdGlvbnMoXG4gICAgICAgICAgICB0aGlzLmJ1aWxkRnVuY3Rpb25Bc3NvY2lhdGlvbnMocHJvcHMuZGVmYXVsdEV4dGVuc2lvbnMsIHByb3BzLmRlZmF1bHRFeHRlbnNpb25Db25maWcpLFxuICAgICAgICAgICAgcHJvcHMuZGVmYXVsdEJlaGF2aW9yIS5mdW5jdGlvbkFzc29jaWF0aW9ucyxcbiAgICAgICAgICApLFxuICAgICAgICB9LFxuICAgICAgICBhZGRpdGlvbmFsQmVoYXZpb3JzOiBhZGRpdGlvbmFsQmVoYXZpb3JzLFxuICAgICAgICBkb21haW5OYW1lczogcHJvcHMuZG9tYWluTmFtZXMsXG4gICAgICAgIGNlcnRpZmljYXRlOiBwcm9wcy5jZXJ0aWZpY2F0ZSEsXG4gICAgICAgIHdlYkFjbElkOiBwcm9wcy53ZWJBY2xJZCxcbiAgICAgICAgZGVmYXVsdFJvb3RPYmplY3Q6IHByb3BzLmRlZmF1bHRSb290T2JqZWN0ID8/ICdpbmRleC5odG1sJyxcbiAgICAgICAgZXJyb3JSZXNwb25zZXM6IHByb3BzLmVuYWJsZUVycm9yUmVzcG9uc2VzID8gW1xuICAgICAgICAgIHsgaHR0cFN0YXR1czogNDAzLCByZXNwb25zZUh0dHBTdGF0dXM6IDIwMCwgcmVzcG9uc2VQYWdlUGF0aDogcHJvcHMuZXJyb3JSZXNwb25zZVBhZ2VQYXRoID8/ICcvZXJyb3IuaHRtbCcsIHR0bDogY29yZS5EdXJhdGlvbi5taW51dGVzKDUpIH0sXG4gICAgICAgICAgeyBodHRwU3RhdHVzOiA0MDQsIHJlc3BvbnNlSHR0cFN0YXR1czogMjAwLCByZXNwb25zZVBhZ2VQYXRoOiBwcm9wcy5lcnJvclJlc3BvbnNlUGFnZVBhdGggPz8gJy9lcnJvci5odG1sJywgdHRsOiBjb3JlLkR1cmF0aW9uLm1pbnV0ZXMoNSkgfSxcbiAgICAgICAgXSA6IFtdLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBhIGJlaGF2aW91ci4gUGFzcyBgb3B0aW9ucy5leHRlbnNpb25zID0gW0V4dGVuc2lvbi5SRVFVSVJFX0FVVEhdYCB0b1xuICAgKiBwcm90ZWN0IHRoZSBwYXRoICh1bmF1dGhlbnRpY2F0ZWQgcmVxdWVzdHMgcmVkaXJlY3QgdG8gdGhlIGxvZ2luIHBhZ2UgYW5kXG4gICAqIHZhbGlkYXRlZCBpZGVudGl0eSBjbGFpbXMgYXJlIGluamVjdGVkIGFzIG9yaWdpbiBoZWFkZXJzKS5cbiAgICovXG4gIHB1YmxpYyBhZGRCZWhhdmlvcihcbiAgICBwYXRoUGF0dGVybjogc3RyaW5nLFxuICAgIG9yaWdpbjogY2xvdWRmcm9udC5JT3JpZ2luLFxuICAgIG9wdGlvbnM6IEFkZEJlaGF2aW9yT3B0aW9uczxUUm9sZT4gPSB7fSxcbiAgKTogdm9pZCB7XG4gICAgdGhpcy5kaXN0cmlidXRpb24uYWRkQmVoYXZpb3IocGF0aFBhdHRlcm4sIG9yaWdpbiwge1xuICAgICAgLi4ub3B0aW9ucy5iZWhhdmlvck9wdGlvbnMsXG4gICAgICBmdW5jdGlvbkFzc29jaWF0aW9uczogdGhpcy5tZXJnZUZ1bmN0aW9uQXNzb2NpYXRpb25zKFxuICAgICAgICB0aGlzLmJ1aWxkRnVuY3Rpb25Bc3NvY2lhdGlvbnMob3B0aW9ucy5leHRlbnNpb25zLCBvcHRpb25zLmV4dGVuc2lvbkNvbmZpZyksXG4gICAgICAgIG9wdGlvbnMuYmVoYXZpb3JPcHRpb25zPy5mdW5jdGlvbkFzc29jaWF0aW9ucyxcbiAgICAgICksXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogTWVyZ2UgdHdvIHNldHMgb2YgZnVuY3Rpb24gYXNzb2NpYXRpb25zLCBlbmZvcmNpbmcgQ2xvdWRGcm9udCdzIHJ1bGUgb2Ygb25lXG4gICAqIGZ1bmN0aW9uIHBlciBldmVudCB0eXBlIHBlciBiZWhhdmlvdXIuIFRoZSBsaWJyYXJ5IG5ldmVyIGNvbXBvc2VzIG9yIGluc3BlY3RzXG4gICAqIGEgY29uc3VtZXIncyBmdW5jdGlvbiDigJQgaXQgb25seSBhdHRhY2hlcyBpdDsgY29tYmluaW5nIHR3byBmdW5jdGlvbnMgb24gdGhlXG4gICAqIHNhbWUgZXZlbnQgdHlwZSBpcyB0aGUgY29uc3VtZXIncyByZXNwb25zaWJpbGl0eSAoYSBzaW5nbGUgZnVuY3Rpb24pLlxuICAgKi9cbiAgcHJpdmF0ZSBtZXJnZUZ1bmN0aW9uQXNzb2NpYXRpb25zKFxuICAgIGF1dGg/OiBjbG91ZGZyb250LkZ1bmN0aW9uQXNzb2NpYXRpb25bXSxcbiAgICBjb25zdW1lcj86IGNsb3VkZnJvbnQuRnVuY3Rpb25Bc3NvY2lhdGlvbltdLFxuICApOiBjbG91ZGZyb250LkZ1bmN0aW9uQXNzb2NpYXRpb25bXSB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgYWxsID0gWy4uLihhdXRoID8/IFtdKSwgLi4uKGNvbnN1bWVyID8/IFtdKV07XG4gICAgaWYgKGFsbC5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGNvbnN0IHNlZW4gPSBuZXcgU2V0PGNsb3VkZnJvbnQuRnVuY3Rpb25FdmVudFR5cGU+KCk7XG4gICAgZm9yIChjb25zdCBmYSBvZiBhbGwpIHtcbiAgICAgIGlmIChzZWVuLmhhcyhmYS5ldmVudFR5cGUpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgQ2xvdWRGcm9udCBhbGxvd3Mgb25seSBvbmUgZnVuY3Rpb24gcGVyIGV2ZW50IHR5cGUgcGVyIGJlaGF2aW91ciwgYnV0IHR3byAnJHtmYS5ldmVudFR5cGV9JyBgICtcbiAgICAgICAgICAnZnVuY3Rpb25zIHdlcmUgc3VwcGxpZWQgKGUuZy4gUkVRVUlSRV9BVVRIIHBsdXMgeW91ciBvd24gZnVuY3Rpb24pLiBLZWVwIGF1dGggYW5kIHlvdXIgb3RoZXIgJyArXG4gICAgICAgICAgJ2Z1bmN0aW9uIG9uIHNlcGFyYXRlIHBhdGggYmVoYXZpb3Vycywgb3IgY29tYmluZSB0aGVtIGludG8gYSBzaW5nbGUgZnVuY3Rpb24geW91cnNlbGYuJyxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIHNlZW4uYWRkKGZhLmV2ZW50VHlwZSk7XG4gICAgfVxuICAgIHJldHVybiBhbGw7XG4gIH1cblxuICAvKipcbiAgICogQWRkIGEgUFJPVEVDVEVEIGJlaGF2aW91cjogdW5hdXRoZW50aWNhdGVkIHJlcXVlc3RzIHJlZGlyZWN0IHRvIHRoZSBsb2dpblxuICAgKiBwYWdlIGFuZCB2YWxpZGF0ZWQgaWRlbnRpdHkgY2xhaW1zIGFyZSBpbmplY3RlZCBhcyBvcmlnaW4gaGVhZGVycy5cbiAgICogQ29udmVuaWVuY2Ugd3JhcHBlciBvdmVyIHtAbGluayBhZGRCZWhhdmlvcn0gdGhhdCBlbnN1cmVzIFJFUVVJUkVfQVVUSC5cbiAgICovXG4gIHB1YmxpYyBwcm90ZWN0KFxuICAgIHBhdGhQYXR0ZXJuOiBzdHJpbmcsXG4gICAgb3JpZ2luOiBjbG91ZGZyb250LklPcmlnaW4sXG4gICAgb3B0aW9uczogQWRkQmVoYXZpb3JPcHRpb25zPFRSb2xlPiA9IHt9LFxuICApOiB2b2lkIHtcbiAgICBjb25zdCBleHRlbnNpb25zID0gb3B0aW9ucy5leHRlbnNpb25zID8gWy4uLm9wdGlvbnMuZXh0ZW5zaW9uc10gOiBbXTtcbiAgICBpZiAoIWV4dGVuc2lvbnMuaW5jbHVkZXMoRXh0ZW5zaW9uLlJFUVVJUkVfQVVUSCkpIHtcbiAgICAgIGV4dGVuc2lvbnMucHVzaChFeHRlbnNpb24uUkVRVUlSRV9BVVRIKTtcbiAgICB9XG4gICAgdGhpcy5hZGRCZWhhdmlvcihwYXRoUGF0dGVybiwgb3JpZ2luLCB7IC4uLm9wdGlvbnMsIGV4dGVuc2lvbnM6IGV4dGVuc2lvbnMgfSk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIGNvbXBvc2VkIHZpZXdlci1yZXF1ZXN0IGF1dGgtY2hlY2sgZnVuY3Rpb24gKFJFUVVJUkVfQVVUSCkuIFVzZWZ1bCBpblxuICAgKiBBVFRBQ0ggTU9ERSB0byBhc3NvY2lhdGUgb3IgY29tcG9zZSBhdXRoIG9udG8gYSBiZWhhdmlvdXIgdGhpcyBjb25zdHJ1Y3QgZG9lc1xuICAgKiBub3Qgb3duIOKAlCBlLmcuIGFuIGV4aXN0aW5nIGRlZmF1bHQgYmVoYXZpb3VyLCB2aWEgYW4gTDEgb3ZlcnJpZGUuXG4gICAqL1xuICBwdWJsaWMgZ2V0IGF1dGhGdW5jdGlvbigpOiBjbG91ZGZyb250LkZ1bmN0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5jb21wb3NlZEF1dGhGdW5jdGlvbihbRXh0ZW5zaW9uLlJFUVVJUkVfQVVUSF0pO1xuICB9XG5cbiAgcHJpdmF0ZSBidWlsZEZ1bmN0aW9uQXNzb2NpYXRpb25zKFxuICAgIGV4dGVuc2lvbnM/OiBFeHRlbnNpb25bXSxcbiAgICBjb25maWc/OiBFeHRlbnNpb25Db25maWc8VFJvbGU+LFxuICApOiBjbG91ZGZyb250LkZ1bmN0aW9uQXNzb2NpYXRpb25bXSB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKCFleHRlbnNpb25zIHx8IGV4dGVuc2lvbnMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICByZXR1cm4gW3sgZnVuY3Rpb246IHRoaXMuY29tcG9zZWRBdXRoRnVuY3Rpb24oZXh0ZW5zaW9ucywgY29uZmlnKSwgZXZlbnRUeXBlOiBjbG91ZGZyb250LkZ1bmN0aW9uRXZlbnRUeXBlLlZJRVdFUl9SRVFVRVNUIH1dO1xuICB9XG5cbiAgcHJpdmF0ZSBjb21wb3NlZEF1dGhGdW5jdGlvbihcbiAgICBleHRlbnNpb25zOiBFeHRlbnNpb25bXSxcbiAgICBjb25maWc/OiBFeHRlbnNpb25Db25maWc8VFJvbGU+LFxuICApOiBjbG91ZGZyb250LkZ1bmN0aW9uIHtcbiAgICBjb25zdCBjYWNoZUtleSA9IHRoaXMuZnVuY3Rpb25DYWNoZUtleShleHRlbnNpb25zLCBjb25maWcpO1xuICAgIGxldCBmdW5jID0gdGhpcy5jb21wb3NlZEZ1bmN0aW9ucy5nZXQoY2FjaGVLZXkpO1xuICAgIGlmICghZnVuYykge1xuICAgICAgY29uc3QgY29kZSA9IHRoaXMuY29tcG9zZXIuY29tcG9zZShleHRlbnNpb25zLCBjb25maWcsIHtcbiAgICAgICAgbG9naW5SZWRpcmVjdFBhdGg6IHRoaXMubG9naW5SZWRpcmVjdFBhdGgsXG4gICAgICAgIGVuYWJsZUhlYWRlckluamVjdGlvbjogdGhpcy5lbmFibGVIZWFkZXJJbmplY3Rpb24sXG4gICAgICAgIGhlYWRlckluamVjdGlvbkNsYWltczogdGhpcy5oZWFkZXJJbmplY3Rpb25DbGFpbXMsXG4gICAgICAgIGVuYWJsZVJlZnJlc2g6IHRoaXMuZW5hYmxlUmVmcmVzaCxcbiAgICAgIH0pO1xuICAgICAgY29uc3QgZnVuY3Rpb25JZCA9IGBDb21wb3NlZEZuJHtleHRlbnNpb25zLm1hcChlID0+IGUucmVwbGFjZSgnUkVRVUlSRV8nLCAnJykpLmpvaW4oJycpfSR7dGhpcy5jb21wb3NlZEZ1bmN0aW9ucy5zaXplfWA7XG4gICAgICBjb25zdCBuZWVkc0t2cyA9IGV4dGVuc2lvbnMuaW5jbHVkZXMoRXh0ZW5zaW9uLlJFUVVJUkVfQVVUSCk7XG4gICAgICBmdW5jID0gbmV3IGNsb3VkZnJvbnQuRnVuY3Rpb24odGhpcywgZnVuY3Rpb25JZCwgbmVlZHNLdnNcbiAgICAgICAgPyB7IGNvZGU6IGNsb3VkZnJvbnQuRnVuY3Rpb25Db2RlLmZyb21JbmxpbmUoY29kZSksIHJ1bnRpbWU6IGNsb3VkZnJvbnQuRnVuY3Rpb25SdW50aW1lLkpTXzJfMCwgY29tbWVudDogYEN1c3RvbS1VSTogJHtleHRlbnNpb25zLmpvaW4oJywgJyl9YCwga2V5VmFsdWVTdG9yZTogdGhpcy5rdnMgfVxuICAgICAgICA6IHsgY29kZTogY2xvdWRmcm9udC5GdW5jdGlvbkNvZGUuZnJvbUlubGluZShjb2RlKSwgcnVudGltZTogY2xvdWRmcm9udC5GdW5jdGlvblJ1bnRpbWUuSlNfMl8wLCBjb21tZW50OiBgQ3VzdG9tLVVJOiAke2V4dGVuc2lvbnMuam9pbignLCAnKX1gIH0pO1xuICAgICAgaWYgKHRoaXMubGFzdENyZWF0ZWRGdW5jdGlvbikge1xuICAgICAgICBmdW5jLm5vZGUuYWRkRGVwZW5kZW5jeSh0aGlzLmxhc3RDcmVhdGVkRnVuY3Rpb24pO1xuICAgICAgfVxuICAgICAgdGhpcy5sYXN0Q3JlYXRlZEZ1bmN0aW9uID0gZnVuYztcbiAgICAgIHRoaXMuY29tcG9zZWRGdW5jdGlvbnMuc2V0KGNhY2hlS2V5LCBmdW5jKTtcbiAgICB9XG4gICAgcmV0dXJuIGZ1bmM7XG4gIH1cblxuICBwcml2YXRlIGZ1bmN0aW9uQ2FjaGVLZXkoZXh0ZW5zaW9uczogRXh0ZW5zaW9uW10sIGNvbmZpZz86IEV4dGVuc2lvbkNvbmZpZzxUUm9sZT4pOiBzdHJpbmcge1xuICAgIGNvbnN0IHBhcnRzID0gW2V4dGVuc2lvbnMuc2xpY2UoKS5zb3J0KCkuam9pbignLCcpXTtcbiAgICBpZiAoY29uZmlnPy5yZXF1aXJlZFJvbGVzKSB7XG4gICAgICBwYXJ0cy5wdXNoKGNvbmZpZy5yZXF1aXJlZFJvbGVzLnNsaWNlKCkuc29ydCgpLmpvaW4oJywnKSk7XG4gICAgfVxuICAgIGlmIChjb25maWc/LnJvbGVNYXRjaE1vZGUgJiYgY29uZmlnLnJvbGVNYXRjaE1vZGUgIT09IFJvbGVNYXRjaE1vZGUuT1IpIHtcbiAgICAgIHBhcnRzLnB1c2goY29uZmlnLnJvbGVNYXRjaE1vZGUpO1xuICAgIH1cbiAgICByZXR1cm4gcGFydHMuam9pbignfCcpO1xuICB9XG5cbiAgcHJpdmF0ZSByZW5kZXJDb25maWdQeShcbiAgICBiYXNlU2VjcmV0TmFtZTogc3RyaW5nLFxuICAgIGV4dHJhU2VjcmV0TmFtZTogc3RyaW5nLFxuICAgIHJlZ2lvbjogc3RyaW5nLFxuICAgIHN0YXRpY092ZXJyaWRlczogUmVjb3JkPHN0cmluZywgc3RyaW5nPixcbiAgKTogc3RyaW5nIHtcbiAgICByZXR1cm4gW1xuICAgICAgJ2ltcG9ydCBqc29uJyxcbiAgICAgICdpbXBvcnQgbG9nZ2luZycsXG4gICAgICAnaW1wb3J0IGJvdG8zJyxcbiAgICAgICcnLFxuICAgICAgJ2xvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCknLFxuICAgICAgYEJBU0VfU0VDUkVUX05BTUUgPSAke0pTT04uc3RyaW5naWZ5KGJhc2VTZWNyZXROYW1lKX1gLFxuICAgICAgYEVYVFJBX1NFQ1JFVF9OQU1FID0gJHtKU09OLnN0cmluZ2lmeShleHRyYVNlY3JldE5hbWUpfWAsXG4gICAgICBgQ09ORklHX1JFR0lPTiA9ICR7SlNPTi5zdHJpbmdpZnkocmVnaW9uKX1gLFxuICAgICAgYFNUQVRJQ19PVkVSUklERVMgPSAke0pTT04uc3RyaW5naWZ5KHN0YXRpY092ZXJyaWRlcyl9YCxcbiAgICAgICcnLFxuICAgICAgJ19zbSA9IE5vbmUnLFxuICAgICAgJycsXG4gICAgICAnJyxcbiAgICAgICdkZWYgX2NsaWVudCgpOicsXG4gICAgICAnICAgIGdsb2JhbCBfc20nLFxuICAgICAgJyAgICBpZiBfc20gaXMgTm9uZTonLFxuICAgICAgJyAgICAgICAgX3NtID0gYm90bzMuY2xpZW50KFwic2VjcmV0c21hbmFnZXJcIiwgcmVnaW9uX25hbWU9Q09ORklHX1JFR0lPTiknLFxuICAgICAgJyAgICByZXR1cm4gX3NtJyxcbiAgICAgICcnLFxuICAgICAgJycsXG4gICAgICAnZGVmIGdldF9jb25maWcoKTonLFxuICAgICAgJyAgICBjZmcgPSBqc29uLmxvYWRzKF9jbGllbnQoKS5nZXRfc2VjcmV0X3ZhbHVlKFNlY3JldElkPUJBU0VfU0VDUkVUX05BTUUpW1wiU2VjcmV0U3RyaW5nXCJdKScsXG4gICAgICAnICAgIHRyeTonLFxuICAgICAgJyAgICAgICAgY2ZnLnVwZGF0ZShqc29uLmxvYWRzKF9jbGllbnQoKS5nZXRfc2VjcmV0X3ZhbHVlKFNlY3JldElkPUVYVFJBX1NFQ1JFVF9OQU1FKVtcIlNlY3JldFN0cmluZ1wiXSkpJyxcbiAgICAgICcgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOicsXG4gICAgICAnICAgICAgICBsb2dnZXIuZXJyb3IoXCJleHRyYSBjb25maWcgbG9hZCBmYWlsZWQ6ICVzXCIsIGUpJyxcbiAgICAgICcgICAgY2ZnLnVwZGF0ZShTVEFUSUNfT1ZFUlJJREVTKScsXG4gICAgICAnICAgIHJldHVybiBjZmcnLFxuICAgICAgJycsXG4gICAgXS5qb2luKCdcXG4nKTtcbiAgfVxuXG4gIHByaXZhdGUgbWFrZUVkZ2VGdW5jdGlvbihcbiAgICBpZDogc3RyaW5nLFxuICAgIHNvdXJjZURpck5hbWU6IHN0cmluZyxcbiAgICBjb25maWdQeTogc3RyaW5nLFxuICAgIHJvbGU6IGlhbS5JUm9sZSxcbiAgICByZXVzZUNvZ25pdG9CdW5kbGU6IGJvb2xlYW4sXG4gICk6IGNsb3VkZnJvbnQuZXhwZXJpbWVudGFsLkVkZ2VGdW5jdGlvbiB7XG4gICAgY29uc3Qgc291cmNlRGlyID0gcGF0aC5qb2luKF9fZGlybmFtZSwgJy4uL2xhbWJkYScsIHNvdXJjZURpck5hbWUpO1xuICAgIGNvbnN0IGJ1bmRsZWREZXBzRGlyID0gcGF0aC5qb2luKF9fZGlybmFtZSwgJy4uL2xhbWJkYS1idW5kbGVkL2NvZ25pdG8tYXV0aCcpO1xuICAgIGNvbnN0IHRlbXBEaXIgPSBmcy5ta2R0ZW1wU3luYyhwYXRoLmpvaW4ob3MudG1wZGlyKCksICdjdXN0b211aS1hdXRoLScpKTtcbiAgICBjb25zdCBjb25maWdQeVBhdGggPSBwYXRoLmpvaW4odGVtcERpciwgJ2NvbmZpZ19nZW5lcmF0ZWQucHknKTtcbiAgICBmcy53cml0ZUZpbGVTeW5jKGNvbmZpZ1B5UGF0aCwgY29uZmlnUHkpO1xuXG4gICAgcmV0dXJuIG5ldyBjbG91ZGZyb250LmV4cGVyaW1lbnRhbC5FZGdlRnVuY3Rpb24odGhpcywgaWQsIHtcbiAgICAgIHJ1bnRpbWU6IGxhbWJkYS5SdW50aW1lLlBZVEhPTl8zXzExLFxuICAgICAgaGFuZGxlcjogJ2luZGV4LmxhbWJkYV9oYW5kbGVyJyxcbiAgICAgIHRpbWVvdXQ6IGNvcmUuRHVyYXRpb24uc2Vjb25kcygzMCksXG4gICAgICBtZW1vcnlTaXplOiAxMjgsXG4gICAgICByb2xlOiByb2xlLFxuICAgICAgY29kZTogbGFtYmRhLkNvZGUuZnJvbUFzc2V0KHNvdXJjZURpciwge1xuICAgICAgICBidW5kbGluZzoge1xuICAgICAgICAgIGxvY2FsOiB7XG4gICAgICAgICAgICB0cnlCdW5kbGUob3V0cHV0RGlyOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgICAgICAgICAgaWYgKHJldXNlQ29nbml0b0J1bmRsZSAmJiBmcy5leGlzdHNTeW5jKGJ1bmRsZWREZXBzRGlyKSkge1xuICAgICAgICAgICAgICAgIGZzLmNwU3luYyhidW5kbGVkRGVwc0Rpciwgb3V0cHV0RGlyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBmb3IgKGNvbnN0IGZpbGUgb2YgZnMucmVhZGRpclN5bmMoc291cmNlRGlyKSkge1xuICAgICAgICAgICAgICAgIGlmIChmaWxlID09PSAncmVxdWlyZW1lbnRzLnR4dCcpIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIGZzLmNwU3luYyhwYXRoLmpvaW4oc291cmNlRGlyLCBmaWxlKSwgcGF0aC5qb2luKG91dHB1dERpciwgZmlsZSksIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGZzLndyaXRlRmlsZVN5bmMocGF0aC5qb2luKG91dHB1dERpciwgJ2NvbmZpZ19nZW5lcmF0ZWQucHknKSwgY29uZmlnUHkpO1xuICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICBpbWFnZTogbGFtYmRhLlJ1bnRpbWUuUFlUSE9OXzNfMTEuYnVuZGxpbmdJbWFnZSxcbiAgICAgICAgICBjb21tYW5kOiBbXG4gICAgICAgICAgICAnYmFzaCcsICctYycsXG4gICAgICAgICAgICAncGlwIGluc3RhbGwgLXIgcmVxdWlyZW1lbnRzLnR4dCAtdCAvYXNzZXQtb3V0cHV0ICYmIGNwIC1yIC4gL2Fzc2V0LW91dHB1dCAmJiBjcCAvdG1wL2NvbmZpZ19nZW5lcmF0ZWQucHkgL2Fzc2V0LW91dHB1dC9jb25maWdfZ2VuZXJhdGVkLnB5JyxcbiAgICAgICAgICBdLFxuICAgICAgICAgIHZvbHVtZXM6IFt7IGhvc3RQYXRoOiBjb25maWdQeVBhdGgsIGNvbnRhaW5lclBhdGg6ICcvdG1wL2NvbmZpZ19nZW5lcmF0ZWQucHknIH1dLFxuICAgICAgICB9LFxuICAgICAgfSksXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
|
|
402
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29nbml0by1jdXN0b211aS1hdXRoLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2Nsb3VkZnJvbnQvcGF0dGVybnMvY29nbml0by1jdXN0b211aS1hdXRoLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHVDQUF5QjtBQUN6Qix1Q0FBeUI7QUFDekIsMkNBQTZCO0FBQzdCLGtEQUFvQztBQUNwQyw2Q0FPcUI7QUFDckIsdURBQXlDO0FBQ3pDLDJEQUFvRztBQUNwRyxpRkFBNkU7QUFtSDdFOzs7Ozs7Ozs7R0FTRztBQUNILE1BQWEsbUJBQW1ELFNBQVEsVUFBVSxDQUFDLFNBQVM7SUFZMUYsWUFBWSxLQUEyQixFQUFFLEVBQVUsRUFBRSxLQUFzQztRQUN6RixLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWpCLE1BQU0sVUFBVSxHQUFHLEtBQUssQ0FBQyxZQUFZLEtBQUssU0FBUyxDQUFDO1FBQ3BELElBQUksVUFBVSxJQUFJLENBQUMsS0FBSyxDQUFDLGtCQUFrQixFQUFFLENBQUM7WUFDNUMsTUFBTSxJQUFJLEtBQUssQ0FBQywyRUFBMkUsQ0FBQyxDQUFDO1FBQy9GLENBQUM7UUFDRCxJQUFJLENBQUMsVUFBVSxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsZUFBZSxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUM7WUFDbEUsTUFBTSxJQUFJLEtBQUssQ0FBQywyRUFBMkUsQ0FBQyxDQUFDO1FBQy9GLENBQUM7UUFFRCxNQUFNLENBQUMsR0FBRyxLQUFLLENBQUMsa0JBQWtCLENBQUM7UUFDbkMsTUFBTSxlQUFlLEdBQUcscUJBQUcsQ0FBQyxlQUFlLENBQUMsdUJBQXVCLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQ2xHLE1BQU0sU0FBUyxHQUFHLHFCQUFHLENBQUMs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SSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsRUFBRSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDOzRCQUN6RixDQUFDOzRCQUNELEVBQUUsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUscUJBQXFCLENBQUMsRUFBRSxRQUFRLENBQUMsQ0FBQzs0QkFDeEUsT0FBTyxJQUFJLENBQUM7d0JBQ2QsQ0FBQztxQkFDRjtvQkFDRCxLQUFLLEVBQUUsd0JBQU0sQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLGFBQWE7b0JBQy9DLE9BQU8sRUFBRTt3QkFDUCxNQUFNLEVBQUUsSUFBSTt3QkFDWiw0SUFBNEk7cUJBQzdJO29CQUNELE9BQU8sRUFBRSxDQUFDLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBRSxhQUFhLEVBQUUsMEJBQTBCLEVBQUUsQ0FBQztpQkFDakY7YUFDRixDQUFDO1NBQ0gsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGO0FBcGFELGtEQW9hQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGZzIGZyb20gJ2ZzJztcbmltcG9ydCAqIGFzIG9zIGZyb20gJ29zJztcbmltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgKiBhcyBjb3JlIGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB7XG4gIGF3c19jZXJ0aWZpY2F0ZW1hbmFnZXIgYXMgYWNtLFxuICBhd3NfY2xvdWRmcm9udCBhcyBjbG91ZGZyb250LFxuICBhd3NfaWFtIGFzIGlhbSxcbiAgYXdzX2xhbWJkYSBhcyBsYW1iZGEsXG4gIGF3c19zZWNyZXRzbWFuYWdlciBhcyBzZWNyZXRzbWFuYWdlcixcbiAgYXdzX3NzbSBhcyBzc20sXG59IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCAqIGFzIGNvbnN0cnVjdHMgZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgeyBFeHRlbnNpb24sIEV4dGVuc2lvbkNvbmZpZywgQWRkQmVoYXZpb3JPcHRpb25zLCBSb2xlTWF0Y2hNb2RlIH0gZnJvbSAnLi9zZWN1cmVkQ2xvdWRGcm9udCc7XG5pbXBvcnQgeyBGdW5jdGlvbkNvbXBvc2VyIH0gZnJvbSAnLi4vY2xvdWRmcm9udC1mdW5jdGlvbnMvZnVuY3Rpb24tY29tcG9zZXInO1xuXG4vKipcbiAqIFByb3BzIGZvciB7QGxpbmsgQ29nbml0b0N1c3RvbVVpQXV0aH0uXG4gKlxuICogQ29uZmlndXJlcyBjdXN0b21lciBhdXRoZW50aWNhdGlvbiBmb3IgYSBzdG9yZWZyb250IENsb3VkRnJvbnQgZGlzdHJpYnV0aW9uXG4gKiB1c2luZyBBV1MgQ29nbml0byB3aXRoIGEgZmlyc3QtcGFydHkgKGN1c3RvbSkgbG9naW4gVUkuIFVuYXV0aGVudGljYXRlZFxuICogcmVxdWVzdHMgdG8gcHJvdGVjdGVkIHBhdGhzIGFyZSByZWRpcmVjdGVkIHRvIHtAbGluayB1bmF1dGhlbnRpY2F0ZWRSZWRpcmVjdFBhdGh9XG4gKiBvbiB0aGUgYnJhbmQncyBvd24gZG9tYWluIOKAlCBuZXZlciB0byBhIENvZ25pdG8gaG9zdGVkIFVJLiBUaGUgbG9naW4gcGFnZVxuICogcGVyZm9ybXMgU1JQIGNsaWVudC1zaWRlIGFuZCBQT1NUcyB0aGUgcmVzdWx0aW5nIHRva2VucyB0byB0aGUgc2Vzc2lvbi1pc3N1YW5jZVxuICogZW5kcG9pbnQ7IENvZ25pdG8gdG9rZW5zIGFyZSBuZXZlciBzdG9yZWQgaW4gdGhlIGJyb3dzZXIuXG4gKlxuICogVGhlIGJhY2tlbmQgKHVzZXIgcG9vbCwgSE1BQyBrZXksIGF1dGggdGFibGUsIEtWUywgY29uZmlnIHNlY3JldCkgaXMgcHJvdmlkZWRcbiAqIGJ5IHtAbGluayBDb2duaXRvQXV0aEluZnJhc3RydWN0dXJlfSBhbmQgcmVmZXJlbmNlZCBoZXJlIHZpYSBTU00gcGFyYW1ldGVyc1xuICogd3JpdHRlbiB1bmRlciB7QGxpbmsgYXV0aFNzbVBhcmFtUHJlZml4fS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb2duaXRvQ3VzdG9tVWlBdXRoUHJvcHM8VFJvbGUgZXh0ZW5kcyBzdHJpbmcgPSBzdHJpbmc+IHtcbiAgLyoqXG4gICAqIENSRUFURSBNT0RFOiBkZWZhdWx0IGNhY2hlIGJlaGF2aW91ciBmb3IgYSBkaXN0cmlidXRpb24gdGhpcyBjb25zdHJ1Y3Qgd2lsbFxuICAgKiBjcmVhdGUuIFByb3ZpZGUgd2l0aCB7QGxpbmsgY2VydGlmaWNhdGV9LiBNdXR1YWxseSBleGNsdXNpdmUgd2l0aFxuICAgKiB7QGxpbmsgZGlzdHJpYnV0aW9ufS4gWW91IE1BWSBzZXQgYGZ1bmN0aW9uQXNzb2NpYXRpb25zYCBoZXJlIChlLmcuIGFcbiAgICogZ2VvLXJvdXRpbmcgdmlld2VyLXJlcXVlc3QgZnVuY3Rpb24pIOKAlCBpdCBpcyBtZXJnZWQgd2l0aCB0aGUgYXV0aC1jaGVja1xuICAgKiBmdW5jdGlvbjsgQ2xvdWRGcm9udCdzIG9uZS1mdW5jdGlvbi1wZXItZXZlbnQtdHlwZSBydWxlIGlzIGVuZm9yY2VkIHdpdGggYVxuICAgKiBjbGVhciBlcnJvciByYXRoZXIgdGhhbiBhbiBMMSBvdmVycmlkZS5cbiAgICovXG4gIHJlYWRvbmx5IGRlZmF1bHRCZWhhdmlvcj86IGNsb3VkZnJvbnQuQmVoYXZpb3JPcHRpb25zO1xuICAvKiogRG9tYWluIG5hbWVzIGZvciB0aGUgYXV0aCBjb25maWcgKGFsbG93ZWRfZG9tYWlucyk7IGZpcnN0IGlzIGNhbm9uaWNhbC4gUmVxdWlyZWQgaW4gYm90aCBtb2Rlcy4gKi9cbiAgcmVhZG9ubHkgZG9tYWluTmFtZXM6IHN0cmluZ1tdO1xuICAvKipcbiAgICogTmFtZSBvZiB0aGUgc2hhcmVkIHNlc3Npb24gY29uZmlnIHNlY3JldCB0aGUgZWRnZSBMYW1iZGFzIGZldGNoIGJ5IG5hbWUuXG4gICAqIE1VU1QgbWF0Y2ggdGhlIG5hbWUgdGhlIHtAbGluayBDb2duaXRvU2Vzc2lvbkJhY2tlbmR9IGNyZWF0ZWQgaXQgdW5kZXIuXG4gICAqIE92ZXJyaWRlIHRvIGRlY291cGxlIGZyb20gdGhlIGNhbm9uaWNhbCBkb21haW4uXG4gICAqIEBkZWZhdWx0IGBjbG91ZGZyb250LWF1dGgtY29uZmlnLSR7ZG9tYWluTmFtZXNbMF19YFxuICAgKi9cbiAgcmVhZG9ubHkgY29uZmlnU2VjcmV0TmFtZT86IHN0cmluZztcbiAgLyoqIENSRUFURSBNT0RFOiBBQ00gY2VydGlmaWNhdGUgKHVzLWVhc3QtMSkgY292ZXJpbmcge0BsaW5rIGRvbWFpbk5hbWVzfS4gKi9cbiAgcmVhZG9ubHkgY2VydGlmaWNhdGU/OiBhY20uSUNlcnRpZmljYXRlO1xuICAvKiogQ1JFQVRFIE1PREU6IFdBRiB3ZWIgQUNMIEFSTiB0byBhc3NvY2lhdGUgd2l0aCB0aGUgY3JlYXRlZCBkaXN0cmlidXRpb24uICovXG4gIHJlYWRvbmx5IHdlYkFjbElkPzogc3RyaW5nO1xuICAvKipcbiAgICogQVRUQUNIIE1PREU6IGFuIGV4aXN0aW5nIGRpc3RyaWJ1dGlvbiB0byBhZGQgdGhlIGF1dGggZW5kcG9pbnQgKyBwcm90ZWN0ZWRcbiAgICogYmVoYXZpb3VycyB0bywgaW5zdGVhZCBvZiBjcmVhdGluZyBvbmUuIE11dHVhbGx5IGV4Y2x1c2l2ZSB3aXRoXG4gICAqIHtAbGluayBkZWZhdWx0QmVoYXZpb3J9L3tAbGluayBjZXJ0aWZpY2F0ZX0uIENsb3VkRnJvbnQgYWxsb3dzIG9ubHkgb25lXG4gICAqIGZ1bmN0aW9uIHBlciBldmVudCB0eXBlIHBlciBiZWhhdmlvdXIsIHNvIHRoZSBhdXRoLWNoZWNrIGlzIGFkZGVkIHRvIHByb3RlY3RlZFxuICAgKiBQQVRIIGJlaGF2aW91cnMgKHZpYSB7QGxpbmsgcHJvdGVjdH0pIOKAlCBpdCBpcyBOT1QgZm9yY2VkIG9udG8gdGhlIGV4aXN0aW5nXG4gICAqIGRlZmF1bHQgYmVoYXZpb3VyLiBVc2Uge0BsaW5rIGF1dGhGdW5jdGlvbn0gdG8gY29tcG9zZSBpdCB0aGVyZSB5b3Vyc2VsZi5cbiAgICovXG4gIHJlYWRvbmx5IGRpc3RyaWJ1dGlvbj86IGNsb3VkZnJvbnQuRGlzdHJpYnV0aW9uO1xuICAvKipcbiAgICogQVRUQUNIIE1PREU6IG9yaWdpbiBmb3IgdGhlIGF1dGggZW5kcG9pbnQgYmVoYXZpb3VycyAoaXNzdWFuY2UvcmVmcmVzaC9sb2dvdXQpLlxuICAgKiBUaGUgZW5kcG9pbnRzIGFyZSBnZW5lcmF0ZWQgYnkgTGFtYmRhQEVkZ2UsIGJ1dCBhIENsb3VkRnJvbnQgYmVoYXZpb3VyIHN0aWxsXG4gICAqIHJlcXVpcmVzIGFuIG9yaWdpbi4gUmVxdWlyZWQgd2hlbiB7QGxpbmsgZGlzdHJpYnV0aW9ufSBpcyBzZXQuXG4gICAqL1xuICByZWFkb25seSBhdXRoRW5kcG9pbnRPcmlnaW4/OiBjbG91ZGZyb250LklPcmlnaW47XG4gIC8qKlxuICAgKiBTU00gcGFyYW1ldGVyIHByZWZpeCB1bmRlciB3aGljaCB7QGxpbmsgQ29nbml0b0F1dGhJbmZyYXN0cnVjdHVyZX0gcHVibGlzaGVkXG4gICAqIGBjb25maWdTZWNyZXRBcm5gLCBga21zS2V5QXJuYCwgYGF1dGhUYWJsZUFybmAsIGBrdnNBcm5gLCBgY29nbml0b0RvbWFpbmAsXG4gICAqIGBjbGllbnRJZGAgYW5kIGB1c2VyUG9vbElkYC5cbiAgICovXG4gIHJlYWRvbmx5IGF1dGhTc21QYXJhbVByZWZpeDogc3RyaW5nO1xuICAvKiogUmVnaW9uIHRoZSBhdXRoIGJhY2tlbmQgKGNvbmZpZyBzZWNyZXQsIGF1dGggdGFibGUpIGxpdmVzIGluLiAqL1xuICByZWFkb25seSBhdXRoUmVnaW9uOiBzdHJpbmc7XG4gIC8qKiBGaXJzdC1wYXJ0eSBwYXRoIHVuYXV0aGVudGljYXRlZCB1c2VycyBhcmUgcmVkaXJlY3RlZCB0by4gQGRlZmF1bHQgJy9sb2dpbicgKi9cbiAgcmVhZG9ubHkgdW5hdXRoZW50aWNhdGVkUmVkaXJlY3RQYXRoPzogc3RyaW5nO1xuICAvKiogRXh0ZW5zaW9ucyBhcHBsaWVkIHRvIHRoZSBkZWZhdWx0IGJlaGF2aW91ci4gQGRlZmF1bHQgW10gKHB1YmxpYykgKi9cbiAgcmVhZG9ubHkgZGVmYXVsdEV4dGVuc2lvbnM/OiBFeHRlbnNpb25bXTtcbiAgLyoqIFJvbGUgY29uZmlndXJhdGlvbiBmb3IgdGhlIGRlZmF1bHQgYmVoYXZpb3VyLiAqL1xuICByZWFkb25seSBkZWZhdWx0RXh0ZW5zaW9uQ29uZmlnPzogRXh0ZW5zaW9uQ29uZmlnPFRSb2xlPjtcbiAgLyoqIEluamVjdCB2YWxpZGF0ZWQgaWRlbnRpdHkgY2xhaW1zIGFzIG9yaWdpbiBoZWFkZXJzLiBAZGVmYXVsdCB0cnVlICovXG4gIHJlYWRvbmx5IGVuYWJsZUhlYWRlckluamVjdGlvbj86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBNYXAgb2Ygb3JpZ2luIGhlYWRlciBuYW1lIHRvIHNlc3Npb24tSldUIGNsYWltIGtleS5cbiAgICogQGRlZmF1bHQgeyAneC1jdXN0b21lci1pZCc6ICdjdXN0b21lcl9pZCcsICd4LWN1c3RvbWVyLWVtYWlsJzogJ2VtYWlsJyB9XG4gICAqL1xuICByZWFkb25seSBoZWFkZXJJbmplY3Rpb25DbGFpbXM/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuICAvKiogUGF0aCBvZiB0aGUgc2Vzc2lvbi1pc3N1YW5jZSBlbmRwb2ludCAoUE9TVCkuIEBkZWZhdWx0ICcvYXV0aC9zZXNzaW9uJyAqL1xuICByZWFkb25seSBzZXNzaW9uSXNzdWFuY2VQYXRoPzogc3RyaW5nO1xuICAvKiogTW91bnQgdGhlIHNpbGVudC1yZWZyZXNoIGVuZHBvaW50IGF0ICcvb2F1dGgyL3JlZnJlc2gnLiBAZGVmYXVsdCB0cnVlICovXG4gIHJlYWRvbmx5IGVuYWJsZVJlZnJlc2hFbmRwb2ludD86IGJvb2xlYW47XG4gIC8qKiBNb3VudCB0aGUgbG9nb3V0IGVuZHBvaW50IGF0ICcvb2F1dGgyL2xvZ291dCcgKFBPU1QpLiBAZGVmYXVsdCB0cnVlICovXG4gIHJlYWRvbmx5IGVuYWJsZUxvZ291dEVuZHBvaW50PzogYm9vbGVhbjtcbiAgLyoqIFVSTCBvZiB0aGUgaWRlbnRpdHktbGlua2luZyBob29rIHRoZSBpc3N1YW5jZSBlbmRwb2ludCBjYWxscyB0byByZXNvbHZlIGN1c3RvbWVyX2lkLiAqL1xuICByZWFkb25seSBpZGVudGl0eUxpbmtpbmdIb29rVXJsOiBzdHJpbmc7XG4gIC8qKiBTZWNyZXRzIE1hbmFnZXIgQVJOIG9mIHRoZSBzaGFyZWQgc2VjcmV0IHVzZWQgdG8gYXV0aGVudGljYXRlIHRvIHRoZSBob29rLiAqL1xuICByZWFkb25seSBpZGVudGl0eUxpbmtpbmdIb29rU2VjcmV0QXJuPzogc3RyaW5nO1xuICAvKiogU2Vzc2lvbiBKV1QgbGlmZXRpbWUsIHNlY29uZHMuIEBkZWZhdWx0IDM2MDAgKi9cbiAgcmVhZG9ubHkgc2Vzc2lvblR0bFNlY29uZHM/OiBudW1iZXI7XG4gIC8qKiBTdG9yZWQgcmVmcmVzaC10b2tlbiBsaWZldGltZSwgZGF5cy4gQGRlZmF1bHQgMzAgKi9cbiAgcmVhZG9ubHkgcmVmcmVzaFR0bERheXM/OiBudW1iZXI7XG4gIC8qKiBQYXRoIHRvIHJlZGlyZWN0IHRvIGFmdGVyIGxvZ291dC4gQGRlZmF1bHQgJy8nICovXG4gIHJlYWRvbmx5IHBvc3RMb2dvdXRSZWRpcmVjdFBhdGg/OiBzdHJpbmc7XG4gIC8qKiBBZGQgU1BBIGN1c3RvbSBlcnJvciByZXNwb25zZXMuIEBkZWZhdWx0IGZhbHNlICovXG4gIHJlYWRvbmx5IGVuYWJsZUVycm9yUmVzcG9uc2VzPzogYm9vbGVhbjtcbiAgLyoqIEVycm9yIHBhZ2UgcGF0aCB3aGVuIHtAbGluayBlbmFibGVFcnJvclJlc3BvbnNlc30gaXMgc2V0LiBAZGVmYXVsdCAnL2Vycm9yLmh0bWwnICovXG4gIHJlYWRvbmx5IGVycm9yUmVzcG9uc2VQYWdlUGF0aD86IHN0cmluZztcbiAgLyoqIERlZmF1bHQgcm9vdCBvYmplY3QuIEBkZWZhdWx0ICdpbmRleC5odG1sJyAqL1xuICByZWFkb25seSBkZWZhdWx0Um9vdE9iamVjdD86IHN0cmluZztcbiAgLyoqXG4gICAqIENSRUFURSBNT0RFOiBtaW5pbXVtIFRMUyBzZWN1cml0eSBwb2xpY3kgZm9yIHRoZSBjcmVhdGVkIGRpc3RyaWJ1dGlvbidzXG4gICAqIHZpZXdlciBjb25uZWN0aW9ucy4gRGVmYXVsdHMgdG8gdGhlIGN1cnJlbnQtZ2VuZXJhdGlvbiBwb2xpY3k7IG92ZXJyaWRlIG9ubHlcbiAgICogdG8gcmVsYXggaXQgKG5vdCByZWNvbW1lbmRlZCkuIElnbm9yZWQgaW4gQVRUQUNIIE1PREUg4oCUIHRoZSBwYXNzZWQtaW5cbiAgICogZGlzdHJpYnV0aW9uIGFscmVhZHkgZml4ZXMgaXRzIG93biBwb2xpY3kuXG4gICAqIEBkZWZhdWx0IGNsb3VkZnJvbnQuU2VjdXJpdHlQb2xpY3lQcm90b2NvbC5UTFNfVjFfMl8yMDI1XG4gICAqL1xuICByZWFkb25seSBtaW5pbXVtUHJvdG9jb2xWZXJzaW9uPzogY2xvdWRmcm9udC5TZWN1cml0eVBvbGljeVByb3RvY29sO1xuICAvKipcbiAgICogQWxsb3dlZCB2aWV3ZXIgSFRUUCBtZXRob2RzIGZvciB0aGUgYXV0aCBlbmRwb2ludCBiZWhhdmlvdXJzIChzZXNzaW9uXG4gICAqIGlzc3VhbmNlLCByZWZyZXNoLCBsb2dvdXQpLiBUaGVzZSBlbmRwb2ludHMgYXJlIFBPU1QtZHJpdmVuLCBzbyB0aGUgZGVmYXVsdFxuICAgKiBwZXJtaXRzIGFsbCBtZXRob2RzOyBDbG91ZEZyb250J3MgR0VUL0hFQUQgZGVmYXVsdCB3b3VsZCBvdGhlcndpc2UgcmVqZWN0IHRoZVxuICAgKiBQT1NUIHRoZXkgcmVxdWlyZS4gT3ZlcnJpZGUgdG8gbmFycm93IGl0IChtdXN0IHN0aWxsIGluY2x1ZGUgUE9TVCkuXG4gICAqIEBkZWZhdWx0IGNsb3VkZnJvbnQuQWxsb3dlZE1ldGhvZHMuQUxMT1dfQUxMXG4gICAqL1xuICByZWFkb25seSBhdXRoRW5kcG9pbnRBbGxvd2VkTWV0aG9kcz86IGNsb3VkZnJvbnQuQWxsb3dlZE1ldGhvZHM7XG59XG5cbi8qKlxuICogQ3VzdG9tZXIgYXV0aGVudGljYXRpb24gZm9yIGEgc3RvcmVmcm9udCBDbG91ZEZyb250IGRpc3RyaWJ1dGlvbiB1c2luZyBDb2duaXRvXG4gKiB3aXRoIGEgY3VzdG9tLCBicmFuZC1kb21haW4gbG9naW4gVUkuXG4gKlxuICogT1dOUyAoaW4gdGhpcyBsaWJyYXJ5KTogdGhlIGVkZ2Ugc2Vzc2lvbi12YWxpZGF0aW9uIGZ1bmN0aW9uIChyZXVzZWQgc2hhcmVkXG4gKiBtb2R1bGUsIHJlZGlyZWN0aW5nIHRvIGEgZmlyc3QtcGFydHkgL2xvZ2luKSwgdGhlIHNlc3Npb24taXNzdWFuY2UgLyByZWZyZXNoIC9cbiAqIGxvZ291dCBMYW1iZGFARWRnZSBmdW5jdGlvbnMsIGFuZCB0aGVpciBJQU0gd2lyaW5nLiBDT05TVU1FUzogdGhlIENvZ25pdG9cbiAqIGJhY2tlbmQgZnJvbSB7QGxpbmsgQ29nbml0b0F1dGhJbmZyYXN0cnVjdHVyZX0uIERvZXMgTk9UIHByb3Zpc2lvbiB0aGUgdXNlclxuICogcG9vbCDigJQgdGhhdCBpcyB0aGUgYmFja2VuZCBjb25zdHJ1Y3QncyBqb2IuXG4gKi9cbmV4cG9ydCBjbGFzcyBDb2duaXRvQ3VzdG9tVWlBdXRoPFRSb2xlIGV4dGVuZHMgc3RyaW5nID0gc3RyaW5nPiBleHRlbmRzIGNvbnN0cnVjdHMuQ29uc3RydWN0IHtcbiAgcHVibGljIHJlYWRvbmx5IGRpc3RyaWJ1dGlvbjogY2xvdWRmcm9udC5EaXN0cmlidXRpb247XG5cbiAgcHJpdmF0ZSByZWFkb25seSBjb21wb3NlcjogRnVuY3Rpb25Db21wb3NlcjtcbiAgcHJpdmF0ZSByZWFkb25seSBjb21wb3NlZEZ1bmN0aW9uczogTWFwPHN0cmluZywgY2xvdWRmcm9udC5GdW5jdGlvbj47XG4gIHByaXZhdGUgcmVhZG9ubHkga3ZzOiBjbG91ZGZyb250LklLZXlWYWx1ZVN0b3JlO1xuICBwcml2YXRlIHJlYWRvbmx5IGxvZ2luUmVkaXJlY3RQYXRoOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgZW5hYmxlSGVhZGVySW5qZWN0aW9uOiBib29sZWFuO1xuICBwcml2YXRlIHJlYWRvbmx5IGhlYWRlckluamVjdGlvbkNsYWltczogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcbiAgcHJpdmF0ZSByZWFkb25seSBlbmFibGVSZWZyZXNoOiBib29sZWFuO1xuICBwcml2YXRlIGxhc3RDcmVhdGVkRnVuY3Rpb246IGNsb3VkZnJvbnQuRnVuY3Rpb24gfCB1bmRlZmluZWQ7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IGNvbnN0cnVjdHMuQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogQ29nbml0b0N1c3RvbVVpQXV0aFByb3BzPFRSb2xlPikge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICBjb25zdCBhdHRhY2hNb2RlID0gcHJvcHMuZGlzdHJpYnV0aW9uICE9PSB1bmRlZmluZWQ7XG4gICAgaWYgKGF0dGFjaE1vZGUgJiYgIXByb3BzLmF1dGhFbmRwb2ludE9yaWdpbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdhdXRoRW5kcG9pbnRPcmlnaW4gaXMgcmVxdWlyZWQgd2hlbiBhdHRhY2hpbmcgdG8gYW4gZXhpc3RpbmcgZGlzdHJpYnV0aW9uJyk7XG4gICAgfVxuICAgIGlmICghYXR0YWNoTW9kZSAmJiAoIXByb3BzLmRlZmF1bHRCZWhhdmlvciB8fCAhcHJvcHMuY2VydGlmaWNhdGUpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2RlZmF1bHRCZWhhdmlvciBhbmQgY2VydGlmaWNhdGUgYXJlIHJlcXVpcmVkIHdoZW4gY3JlYXRpbmcgYSBkaXN0cmlidXRpb24nKTtcbiAgICB9XG5cbiAgICBjb25zdCBwID0gcHJvcHMuYXV0aFNzbVBhcmFtUHJlZml4O1xuICAgIGNvbnN0IGNvbmZpZ1NlY3JldEFybiA9IHNzbS5TdHJpbmdQYXJhbWV0ZXIudmFsdWVGb3JTdHJpbmdQYXJhbWV0ZXIodGhpcywgYCR7cH0vY29uZmlnU2VjcmV0QXJuYCk7XG4gICAgY29uc3Qga21zS2V5QXJuID0gc3NtLlN0cmluZ1BhcmFtZXRlci52YWx1ZUZvclN0cmluZ1BhcmFtZXRlcih0aGlzLCBgJHtwfS9rbXNLZXlBcm5gKTtcbiAgICBjb25zdCBhdXRoVGFibGVBcm4gPSBzc20uU3RyaW5nUGFyYW1ldGVyLnZhbHVlRm9yU3RyaW5nUGFyYW1ldGVyKHRoaXMsIGAke3B9L2F1dGhUYWJsZUFybmApO1xuICAgIGNvbnN0IGt2c0FybiA9IHNzbS5TdHJpbmdQYXJhbWV0ZXIudmFsdWVGb3JTdHJpbmdQYXJhbWV0ZXIodGhpcywgYCR7cH0va3ZzQXJuYCk7XG5cbiAgICB0aGlzLmt2cyA9IGNsb3VkZnJvbnQuS2V5VmFsdWVTdG9yZS5mcm9tS2V5VmFsdWVTdG9yZUFybih0aGlzLCAnS1ZTJywga3ZzQXJuKTtcbiAgICB0aGlzLmxvZ2luUmVkaXJlY3RQYXRoID0gcHJvcHMudW5hdXRoZW50aWNhdGVkUmVkaXJlY3RQYXRoID8/ICcvbG9naW4nO1xuICAgIHRoaXMuZW5hYmxlSGVhZGVySW5qZWN0aW9uID0gcHJvcHMuZW5hYmxlSGVhZGVySW5qZWN0aW9uID8/IHRydWU7XG4gICAgdGhpcy5oZWFkZXJJbmplY3Rpb25DbGFpbXMgPSBwcm9wcy5oZWFkZXJJbmplY3Rpb25DbGFpbXMgPz8ge1xuICAgICAgJ3gtY3VzdG9tZXItaWQnOiAnY3VzdG9tZXJfaWQnLFxuICAgICAgJ3gtY3VzdG9tZXItZW1haWwnOiAnZW1haWwnLFxuICAgIH07XG4gICAgdGhpcy5lbmFibGVSZWZyZXNoID0gcHJvcHMuZW5hYmxlUmVmcmVzaEVuZHBvaW50ID8/IHRydWU7XG4gICAgdGhpcy5jb21wb3NlciA9IG5ldyBGdW5jdGlvbkNvbXBvc2VyKCk7XG4gICAgdGhpcy5jb21wb3NlZEZ1bmN0aW9ucyA9IG5ldyBNYXAoKTtcblxuICAgIGNvbnN0IGNhbm9uaWNhbERvbWFpbiA9IHByb3BzLmRvbWFpbk5hbWVzWzBdO1xuICAgIGNvbnN0IGJhc2VTZWNyZXROYW1lID0gcHJvcHMuY29uZmlnU2VjcmV0TmFtZSA/PyBgY2xvdWRmcm9udC1hdXRoLWNvbmZpZy0ke2Nhbm9uaWNhbERvbWFpbn1gO1xuICAgIGNvbnN0IHNlc3Npb25Jc3N1YW5jZVBhdGggPSBwcm9wcy5zZXNzaW9uSXNzdWFuY2VQYXRoID8/ICcvYXV0aC9zZXNzaW9uJztcblxuICAgIC8vIEV4dHJhIGNvbmZpZyBzZWNyZXQgZm9yIHZhbHVlcyB0aGF0IGFyZSBDREsgdG9rZW5zIGF0IHN5bnRoIHRpbWUgKGFuZCBzb1xuICAgIC8vIGNhbm5vdCBiZSBiYWtlZCBpbnRvIGNvbmZpZ19nZW5lcmF0ZWQucHkpIOKAlCBMYW1iZGFARWRnZSBmb3JiaWRzIGVudiB2YXJzLlxuICAgIGNvbnN0IGV4dHJhQ29uZmlnU2VjcmV0ID0gbmV3IHNlY3JldHNtYW5hZ2VyLlNlY3JldCh0aGlzLCAnQ3VzdG9tVWlDb25maWdTZWNyZXQnLCB7XG4gICAgICBzZWNyZXROYW1lOiBgY2xvdWRmcm9udC1jdXN0b211aS1jb25maWctJHtjYW5vbmljYWxEb21haW59YCxcbiAgICAgIHNlY3JldE9iamVjdFZhbHVlOiB7XG4gICAgICAgIGt2c19hcm46IGNvcmUuU2VjcmV0VmFsdWUudW5zYWZlUGxhaW5UZXh0KGt2c0FybiksXG4gICAgICAgIHBvc3RfYXV0aF9ob29rX3VybDogY29yZS5TZWNyZXRWYWx1ZS51bnNhZmVQbGFpblRleHQocHJvcHMuaWRlbnRpdHlMaW5raW5nSG9va1VybCksXG4gICAgICAgIHBvc3RfYXV0aF9ob29rX3NlY3JldF9hcm46IGNvcmUuU2VjcmV0VmFsdWUudW5zYWZlUGxhaW5UZXh0KHByb3BzLmlkZW50aXR5TGlua2luZ0hvb2tTZWNyZXRBcm4gPz8gJycpLFxuICAgICAgfSxcbiAgICAgIGRlc2NyaXB0aW9uOiBgQ3VzdG9tLVVJIGF1dGggY29uZmlnIG92ZXJyaWRlcyBmb3IgJHtjYW5vbmljYWxEb21haW59YCxcbiAgICB9KTtcblxuICAgIGNvbnN0IHN0YXRpY092ZXJyaWRlczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgICAgIGxvZ2luX3JlZGlyZWN0X3BhdGg6IHRoaXMubG9naW5SZWRpcmVjdFBhdGgsXG4gICAgICBhbGxvd2VkX2RvbWFpbnM6IEpTT04uc3RyaW5naWZ5KHByb3BzLmRvbWFpbk5hbWVzKSxcbiAgICAgIHNlc3Npb25fdHRsX3NlY29uZHM6IFN0cmluZyhwcm9wcy5zZXNzaW9uVHRsU2Vjb25kcyA/PyAzNjAwKSxcbiAgICAgIHJlZnJlc2hfdHRsX2RheXM6IFN0cmluZyhwcm9wcy5yZWZyZXNoVHRsRGF5cyA/PyAzMCksXG4gICAgICBwb3N0X2xvZ291dF9yZWRpcmVjdF9wYXRoOiBwcm9wcy5wb3N0TG9nb3V0UmVkaXJlY3RQYXRoID8/ICcvJyxcbiAgICAgIGNvbmZpZ19yZWdpb246IHByb3BzLmF1dGhSZWdpb24sXG4gICAgfTtcblxuICAgIGNvbnN0IGNvbmZpZ1B5ID0gdGhpcy5yZW5kZXJDb25maWdQeShiYXNlU2VjcmV0TmFtZSwgZXh0cmFDb25maWdTZWNyZXQuc2VjcmV0TmFtZSwgcHJvcHMuYXV0aFJlZ2lvbiwgc3RhdGljT3ZlcnJpZGVzKTtcblxuICAgIC8vIFNoYXJlZCBJQU0gZ3JhbnRzIGZhY3RvcnkgZm9yIHRoZSBlZGdlIExhbWJkYXMuXG4gICAgY29uc3QgZ3JhbnRDb21tb24gPSAocm9sZTogaWFtLklSb2xlLCBvcHRzOiB7IGttczogYm9vbGVhbjsgZGRiOiBib29sZWFuOyBrdnM6IGJvb2xlYW47IGNvZ25pdG86IGJvb2xlYW47IGhvb2tTZWNyZXQ6IGJvb2xlYW4gfSk6IHZvaWQgPT4ge1xuICAgICAgcm9sZS5hZGRUb1ByaW5jaXBhbFBvbGljeShuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgIGVmZmVjdDogaWFtLkVmZmVjdC5BTExPVyxcbiAgICAgICAgYWN0aW9uczogWydzZWNyZXRzbWFuYWdlcjpHZXRTZWNyZXRWYWx1ZScsICdzZWNyZXRzbWFuYWdlcjpEZXNjcmliZVNlY3JldCddLFxuICAgICAgICByZXNvdXJjZXM6IFtjb25maWdTZWNyZXRBcm4sIGV4dHJhQ29uZmlnU2VjcmV0LnNlY3JldEFybl0sXG4gICAgICB9KSk7XG4gICAgICBpZiAob3B0cy5ob29rU2VjcmV0ICYmIHByb3BzLmlkZW50aXR5TGlua2luZ0hvb2tTZWNyZXRBcm4pIHtcbiAgICAgICAgcm9sZS5hZGRUb1ByaW5jaXBhbFBvbGljeShuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgICAgZWZmZWN0OiBpYW0uRWZmZWN0LkFMTE9XLFxuICAgICAgICAgIGFjdGlvbnM6IFsnc2VjcmV0c21hbmFnZXI6R2V0U2VjcmV0VmFsdWUnXSxcbiAgICAgICAgICByZXNvdXJjZXM6IFtwcm9wcy5pZGVudGl0eUxpbmtpbmdIb29rU2VjcmV0QXJuXSxcbiAgICAgICAgfSkpO1xuICAgICAgfVxuICAgICAgaWYgKG9wdHMua21zKSB7XG4gICAgICAgIHJvbGUuYWRkVG9QcmluY2lwYWxQb2xpY3kobmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgIGVmZmVjdDogaWFtLkVmZmVjdC5BTExPVyxcbiAgICAgICAgICBhY3Rpb25zOiBbJ2ttczpEZWNyeXB0J10sXG4gICAgICAgICAgcmVzb3VyY2VzOiBba21zS2V5QXJuXSxcbiAgICAgICAgfSkpO1xuICAgICAgfVxuICAgICAgaWYgKG9wdHMuZGRiKSB7XG4gICAgICAgIHJvbGUuYWRkVG9QcmluY2lwYWxQb2xpY3kobmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgIGVmZmVjdDogaWFtLkVmZmVjdC5BTExPVyxcbiAgICAgICAgICBhY3Rpb25zOiBbJ2R5bmFtb2RiOkdldEl0ZW0nLCAnZHluYW1vZGI6UHV0SXRlbScsICdkeW5hbW9kYjpEZWxldGVJdGVtJywgJ2R5bmFtb2RiOlF1ZXJ5J10sXG4gICAgICAgICAgcmVzb3VyY2VzOiBbYXV0aFRhYmxlQXJuLCBgJHthdXRoVGFibGVBcm59L2luZGV4LypgXSxcbiAgICAgICAgfSkpO1xuICAgICAgfVxuICAgICAgaWYgKG9wdHMua3ZzKSB7XG4gICAgICAgIHJvbGUuYWRkVG9QcmluY2lwYWxQb2xpY3kobmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgIGVmZmVjdDogaWFtLkVmZmVjdC5BTExPVyxcbiAgICAgICAgICBhY3Rpb25zOiBbJ2Nsb3VkZnJvbnQta2V5dmFsdWVzdG9yZTpQdXRLZXknLCAnY2xvdWRmcm9udC1rZXl2YWx1ZXN0b3JlOkRlc2NyaWJlS2V5VmFsdWVTdG9yZSddLFxuICAgICAgICAgIHJlc291cmNlczogW2t2c0Fybl0sXG4gICAgICAgIH0pKTtcbiAgICAgIH1cbiAgICAgIGlmIChvcHRzLmNvZ25pdG8pIHtcbiAgICAgICAgcm9sZS5hZGRUb1ByaW5jaXBhbFBvbGljeShuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgICAgZWZmZWN0OiBpYW0uRWZmZWN0LkFMTE9XLFxuICAgICAgICAgIGFjdGlvbnM6IFsnY29nbml0by1pZHA6SW5pdGlhdGVBdXRoJywgJ2NvZ25pdG8taWRwOlJldm9rZVRva2VuJ10sXG4gICAgICAgICAgcmVzb3VyY2VzOiBbJyonXSxcbiAgICAgICAgfSkpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBjb25zdCBlZGdlUm9sZSA9IChyb2xlSWQ6IHN0cmluZyk6IGlhbS5Sb2xlID0+IG5ldyBpYW0uUm9sZSh0aGlzLCByb2xlSWQsIHtcbiAgICAgIGFzc3VtZWRCeTogbmV3IGlhbS5Db21wb3NpdGVQcmluY2lwYWwoXG4gICAgICAgIG5ldyBpYW0uU2VydmljZVByaW5jaXBhbCgnbGFtYmRhLmFtYXpvbmF3cy5jb20nKSxcbiAgICAgICAgbmV3IGlhbS5TZXJ2aWNlUHJpbmNpcGFsKCdlZGdlbGFtYmRhLmFtYXpvbmF3cy5jb20nKSxcbiAgICAgICksXG4gICAgICBtYW5hZ2VkUG9saWNpZXM6IFtcbiAgICAgICAgaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKCdzZXJ2aWNlLXJvbGUvQVdTTGFtYmRhQmFzaWNFeGVjdXRpb25Sb2xlJyksXG4gICAgICBdLFxuICAgIH0pO1xuXG4gICAgLy8gU2Vzc2lvbi1pc3N1YW5jZSBMYW1iZGEgKG5lZWRzIFB5SldUIGZvciBSUzI1NiDigJQgcmV1c2UgdGhlIGNvZ25pdG8tYXV0aCBidW5kbGUpLlxuICAgIGNvbnN0IGlzc3VhbmNlUm9sZSA9IGVkZ2VSb2xlKCdJc3N1YW5jZVJvbGUnKTtcbiAgICBncmFudENvbW1vbihpc3N1YW5jZVJvbGUsIHsga21zOiB0cnVlLCBkZGI6IHRydWUsIGt2czogZmFsc2UsIGNvZ25pdG86IGZhbHNlLCBob29rU2VjcmV0OiB0cnVlIH0pO1xuICAgIGNvbnN0IGlzc3VhbmNlRm4gPSB0aGlzLm1ha2VFZGdlRnVuY3Rpb24oJ1Nlc3Npb25Jc3N1YW5jZScsICdjb2duaXRvLWN1c3RvbXVpLXNlc3Npb24nLCBjb25maWdQeSwgaXNzdWFuY2VSb2xlLCB0cnVlKTtcblxuICAgIC8vIFJlZnJlc2ggKyBsb2dvdXQgTGFtYmRhcyAoYm90bzMgb25seSDigJQgbm8gYnVuZGxlZCBkZXBzKS5cbiAgICBsZXQgcmVmcmVzaEZuOiBjbG91ZGZyb250LmV4cGVyaW1lbnRhbC5FZGdlRnVuY3Rpb24gfCB1bmRlZmluZWQ7XG4gICAgaWYgKHRoaXMuZW5hYmxlUmVmcmVzaCkge1xuICAgICAgY29uc3QgcmVmcmVzaFJvbGUgPSBlZGdlUm9sZSgnUmVmcmVzaFJvbGUnKTtcbiAgICAgIGdyYW50Q29tbW9uKHJlZnJlc2hSb2xlLCB7IGttczogdHJ1ZSwgZGRiOiB0cnVlLCBrdnM6IGZhbHNlLCBjb2duaXRvOiB0cnVlLCBob29rU2VjcmV0OiBmYWxzZSB9KTtcbiAgICAgIHJlZnJlc2hGbiA9IHRoaXMubWFrZUVkZ2VGdW5jdGlvbignU2Vzc2lvblJlZnJlc2gnLCAnY29nbml0by1jdXN0b211aS1yZWZyZXNoJywgY29uZmlnUHksIHJlZnJlc2hSb2xlLCBmYWxzZSk7XG4gICAgfVxuXG4gICAgbGV0IGxvZ291dEZuOiBjbG91ZGZyb250LmV4cGVyaW1lbnRhbC5FZGdlRnVuY3Rpb24gfCB1bmRlZmluZWQ7XG4gICAgaWYgKHByb3BzLmVuYWJsZUxvZ291dEVuZHBvaW50ID8/IHRydWUpIHtcbiAgICAgIGNvbnN0IGxvZ291dFJvbGUgPSBlZGdlUm9sZSgnTG9nb3V0Um9sZScpO1xuICAgICAgZ3JhbnRDb21tb24obG9nb3V0Um9sZSwgeyBrbXM6IHRydWUsIGRkYjogdHJ1ZSwga3ZzOiB0cnVlLCBjb2duaXRvOiB0cnVlLCBob29rU2VjcmV0OiBmYWxzZSB9KTtcbiAgICAgIGxvZ291dEZuID0gdGhpcy5tYWtlRWRnZUZ1bmN0aW9uKCdTZXNzaW9uTG9nb3V0JywgJ2NvZ25pdG8tY3VzdG9tdWktbG9nb3V0JywgY29uZmlnUHksIGxvZ291dFJvbGUsIGZhbHNlKTtcbiAgICB9XG5cbiAgICAvLyBSZXRhaW4gb2xkIExhbWJkYUBFZGdlIHZlcnNpb25zIG9uIGEgcmVhbCB1cGRhdGUvZGVsZXRlIOKAlCBlZGdlIHJlcGxpY2FzXG4gICAgLy8gdGFrZSBob3VycyB0byBkcmFpbiDigJQgYnV0IGxldCBDbG91ZEZvcm1hdGlvbiBkZWxldGUgYSB2ZXJzaW9uIHdob3NlXG4gICAgLy8gQ1JFQVRFIHdhcyByb2xsZWQgYmFjayAoUmV0YWluRXhjZXB0T25DcmVhdGUpLiBBIHBsYWluIFJFVEFJTiBvcnBoYW5zIHRoZVxuICAgIC8vIHZlcnNpb24gKGFuZCwgdGhyb3VnaCBpdCwgdGhlIGZ1bmN0aW9uIGFuZCBpdHMgSUFNIHJvbGUpIG9uIGEgZmFpbGVkXG4gICAgLy8gY3JlYXRlLCBibG9ja2luZyB0aGUgbmV4dCBkZXBsb3kncyBpbXBvcnQ7IFJFVEFJTl9PTl9VUERBVEVfT1JfREVMRVRFXG4gICAgLy8ga2VlcHMgdGhlIGRyYWluLXNhZmUgcmV0YWluIGJlaGF2aW91ciB3aXRob3V0IHRoZSBvcnBoYW4uXG4gICAgZm9yIChjb25zdCBmbiBvZiBbaXNzdWFuY2VGbiwgcmVmcmVzaEZuLCBsb2dvdXRGbl0pIHtcbiAgICAgIGlmICghZm4pIGNvbnRpbnVlO1xuICAgICAgY29uc3QgdmVyc2lvbiA9IGZuLmN1cnJlbnRWZXJzaW9uLm5vZGUuZGVmYXVsdENoaWxkIGFzIGNvcmUuQ2ZuUmVzb3VyY2U7XG4gICAgICBpZiAodmVyc2lvbikge1xuICAgICAgICB2ZXJzaW9uLmFwcGx5UmVtb3ZhbFBvbGljeShjb3JlLlJlbW92YWxQb2xpY3kuUkVUQUlOX09OX1VQREFURV9PUl9ERUxFVEUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGVuZHBvaW50T3JpZ2luOiBjbG91ZGZyb250LklPcmlnaW4gPSBhdHRhY2hNb2RlID8gcHJvcHMuYXV0aEVuZHBvaW50T3JpZ2luISA6IHByb3BzLmRlZmF1bHRCZWhhdmlvciEub3JpZ2luO1xuXG4gICAgLy8gQXV0aCBlbmRwb2ludHMgYXJlIFBPU1QtZHJpdmVuOyBDbG91ZEZyb250IG90aGVyd2lzZSBkZWZhdWx0cyB0byBHRVQvSEVBRFxuICAgIC8vIGFuZCByZWplY3RzIHRoZSBQT1NUIHRoZXNlIGVuZHBvaW50cyByZXF1aXJlLiBBbGxvdyBhbGwgbWV0aG9kcyBieSBkZWZhdWx0LlxuICAgIGNvbnN0IGF1dGhFbmRwb2ludEFsbG93ZWRNZXRob2RzID0gcHJvcHMuYXV0aEVuZHBvaW50QWxsb3dlZE1ldGhvZHMgPz8gY2xvdWRmcm9udC5BbGxvd2VkTWV0aG9kcy5BTExPV19BTEw7XG5cbiAgICBjb25zdCBlbmRwb2ludE9wdHMgPSAoZm46IGNsb3VkZnJvbnQuZXhwZXJpbWVudGFsLkVkZ2VGdW5jdGlvbiwgaW5jbHVkZUJvZHk6IGJvb2xlYW4pOiBjbG91ZGZyb250LkFkZEJlaGF2aW9yT3B0aW9ucyA9PiAoe1xuICAgICAgdmlld2VyUHJvdG9jb2xQb2xpY3k6IGNsb3VkZnJvbnQuVmlld2VyUHJvdG9jb2xQb2xpY3kuUkVESVJFQ1RfVE9fSFRUUFMsXG4gICAgICBhbGxvd2VkTWV0aG9kczogYXV0aEVuZHBvaW50QWxsb3dlZE1ldGhvZHMsXG4gICAgICAvLyBTZXQtQ29va2llIG11c3QgcmVhY2ggdGhlIHZpZXdlciDigJQgY2FjaGluZyBkaXNhYmxlZC5cbiAgICAgIGNhY2hlUG9saWN5OiBjbG91ZGZyb250LkNhY2hlUG9saWN5LkNBQ0hJTkdfRElTQUJMRUQsXG4gICAgICBlZGdlTGFtYmRhczogW3tcbiAgICAgICAgZnVuY3Rpb25WZXJzaW9uOiBmbi5jdXJyZW50VmVyc2lvbixcbiAgICAgICAgZXZlbnRUeXBlOiBjbG91ZGZyb250LkxhbWJkYUVkZ2VFdmVudFR5cGUuVklFV0VSX1JFUVVFU1QsXG4gICAgICAgIGluY2x1ZGVCb2R5OiBpbmNsdWRlQm9keSxcbiAgICAgIH1dLFxuICAgIH0pO1xuXG4gICAgaWYgKGF0dGFjaE1vZGUpIHtcbiAgICAgIHRoaXMuZGlzdHJpYnV0aW9uID0gcHJvcHMuZGlzdHJpYnV0aW9uITtcbiAgICAgIHRoaXMuZGlzdHJpYnV0aW9uLmFkZEJlaGF2aW9yKHNlc3Npb25Jc3N1YW5jZVBhdGgsIGVuZHBvaW50T3JpZ2luLCBlbmRwb2ludE9wdHMoaXNzdWFuY2VGbiwgdHJ1ZSkpO1xuICAgICAgaWYgKHJlZnJlc2hGbikge1xuICAgICAgICB0aGlzLmRpc3RyaWJ1dGlvbi5hZGRCZWhhdmlvcignL29hdXRoMi9yZWZyZXNoJywgZW5kcG9pbnRPcmlnaW4sIGVuZHBvaW50T3B0cyhyZWZyZXNoRm4sIGZhbHNlKSk7XG4gICAgICB9XG4gICAgICBpZiAobG9nb3V0Rm4pIHtcbiAgICAgICAgdGhpcy5kaXN0cmlidXRpb24uYWRkQmVoYXZpb3IoJy9vYXV0aDIvbG9nb3V0JywgZW5kcG9pbnRPcmlnaW4sIGVuZHBvaW50T3B0cyhsb2dvdXRGbiwgdHJ1ZSkpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBhZGRpdGlvbmFsQmVoYXZpb3JzOiBSZWNvcmQ8c3RyaW5nLCBjbG91ZGZyb250LkJlaGF2aW9yT3B0aW9ucz4gPSB7XG4gICAgICAgIFtzZXNzaW9uSXNzdWFuY2VQYXRoXTogeyBvcmlnaW46IGVuZHBvaW50T3JpZ2luLCAuLi5lbmRwb2ludE9wdHMoaXNzdWFuY2VGbiwgdHJ1ZSkgfSxcbiAgICAgIH07XG4gICAgICBpZiAocmVmcmVzaEZuKSB7XG4gICAgICAgIGFkZGl0aW9uYWxCZWhhdmlvcnNbJy9vYXV0aDIvcmVmcmVzaCddID0geyBvcmlnaW46IGVuZHBvaW50T3JpZ2luLCAuLi5lbmRwb2ludE9wdHMocmVmcmVzaEZuLCBmYWxzZSkgfTtcbiAgICAgIH1cbiAgICAgIGlmIChsb2dvdXRGbikge1xuICAgICAgICBhZGRpdGlvbmFsQmVoYXZpb3JzWycvb2F1dGgyL2xvZ291dCddID0geyBvcmlnaW46IGVuZHBvaW50T3JpZ2luLCAuLi5lbmRwb2ludE9wdHMobG9nb3V0Rm4sIHRydWUpIH07XG4gICAgICB9XG5cbiAgICAgIHRoaXMuZGlzdHJpYnV0aW9uID0gbmV3IGNsb3VkZnJvbnQuRGlzdHJpYnV0aW9uKHRoaXMsICdEaXN0cmlidXRpb24nLCB7XG4gICAgICAgIGh0dHBWZXJzaW9uOiBjbG91ZGZyb250Lkh0dHBWZXJzaW9uLkhUVFAyX0FORF8zLFxuICAgICAgICBtaW5pbXVtUHJvdG9jb2xWZXJzaW9uOiBwcm9wcy5taW5pbXVtUHJvdG9jb2xWZXJzaW9uID8/IGNsb3VkZnJvbnQuU2VjdXJpdHlQb2xpY3lQcm90b2NvbC5UTFNfVjFfMl8yMDI1LFxuICAgICAgICBkZWZhdWx0QmVoYXZpb3I6IHtcbiAgICAgICAgICAuLi5wcm9wcy5kZWZhdWx0QmVoYXZpb3IhLFxuICAgICAgICAgIGZ1bmN0aW9uQXNzb2NpYXRpb25zOiB0aGlzLm1lcmdlRnVuY3Rpb25Bc3NvY2lhdGlvbnMoXG4gICAgICAgICAgICB0aGlzLmJ1aWxkRnVuY3Rpb25Bc3NvY2lhdGlvbnMocHJvcHMuZGVmYXVsdEV4dGVuc2lvbnMsIHByb3BzLmRlZmF1bHRFeHRlbnNpb25Db25maWcpLFxuICAgICAgICAgICAgcHJvcHMuZGVmYXVsdEJlaGF2aW9yIS5mdW5jdGlvbkFzc29jaWF0aW9ucyxcbiAgICAgICAgICApLFxuICAgICAgICB9LFxuICAgICAgICBhZGRpdGlvbmFsQmVoYXZpb3JzOiBhZGRpdGlvbmFsQmVoYXZpb3JzLFxuICAgICAgICBkb21haW5OYW1lczogcHJvcHMuZG9tYWluTmFtZXMsXG4gICAgICAgIGNlcnRpZmljYXRlOiBwcm9wcy5jZXJ0aWZpY2F0ZSEsXG4gICAgICAgIHdlYkFjbElkOiBwcm9wcy53ZWJBY2xJZCxcbiAgICAgICAgZGVmYXVsdFJvb3RPYmplY3Q6IHByb3BzLmRlZmF1bHRSb290T2JqZWN0ID8/ICdpbmRleC5odG1sJyxcbiAgICAgICAgZXJyb3JSZXNwb25zZXM6IHByb3BzLmVuYWJsZUVycm9yUmVzcG9uc2VzID8gW1xuICAgICAgICAgIHsgaHR0cFN0YXR1czogNDAzLCByZXNwb25zZUh0dHBTdGF0dXM6IDIwMCwgcmVzcG9uc2VQYWdlUGF0aDogcHJvcHMuZXJyb3JSZXNwb25zZVBhZ2VQYXRoID8/ICcvZXJyb3IuaHRtbCcsIHR0bDogY29yZS5EdXJhdGlvbi5taW51dGVzKDUpIH0sXG4gICAgICAgICAgeyBodHRwU3RhdHVzOiA0MDQsIHJlc3BvbnNlSHR0cFN0YXR1czogMjAwLCByZXNwb25zZVBhZ2VQYXRoOiBwcm9wcy5lcnJvclJlc3BvbnNlUGFnZVBhdGggPz8gJy9lcnJvci5odG1sJywgdHRsOiBjb3JlLkR1cmF0aW9uLm1pbnV0ZXMoNSkgfSxcbiAgICAgICAgXSA6IFtdLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBhIGJlaGF2aW91ci4gUGFzcyBgb3B0aW9ucy5leHRlbnNpb25zID0gW0V4dGVuc2lvbi5SRVFVSVJFX0FVVEhdYCB0b1xuICAgKiBwcm90ZWN0IHRoZSBwYXRoICh1bmF1dGhlbnRpY2F0ZWQgcmVxdWVzdHMgcmVkaXJlY3QgdG8gdGhlIGxvZ2luIHBhZ2UgYW5kXG4gICAqIHZhbGlkYXRlZCBpZGVudGl0eSBjbGFpbXMgYXJlIGluamVjdGVkIGFzIG9yaWdpbiBoZWFkZXJzKS5cbiAgICovXG4gIHB1YmxpYyBhZGRCZWhhdmlvcihcbiAgICBwYXRoUGF0dGVybjogc3RyaW5nLFxuICAgIG9yaWdpbjogY2xvdWRmcm9udC5JT3JpZ2luLFxuICAgIG9wdGlvbnM6IEFkZEJlaGF2aW9yT3B0aW9uczxUUm9sZT4gPSB7fSxcbiAgKTogdm9pZCB7XG4gICAgdGhpcy5kaXN0cmlidXRpb24uYWRkQmVoYXZpb3IocGF0aFBhdHRlcm4sIG9yaWdpbiwge1xuICAgICAgLi4ub3B0aW9ucy5iZWhhdmlvck9wdGlvbnMsXG4gICAgICBmdW5jdGlvbkFzc29jaWF0aW9uczogdGhpcy5tZXJnZUZ1bmN0aW9uQXNzb2NpYXRpb25zKFxuICAgICAgICB0aGlzLmJ1aWxkRnVuY3Rpb25Bc3NvY2lhdGlvbnMob3B0aW9ucy5leHRlbnNpb25zLCBvcHRpb25zLmV4dGVuc2lvbkNvbmZpZyksXG4gICAgICAgIG9wdGlvbnMuYmVoYXZpb3JPcHRpb25zPy5mdW5jdGlvbkFzc29jaWF0aW9ucyxcbiAgICAgICksXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogTWVyZ2UgdHdvIHNldHMgb2YgZnVuY3Rpb24gYXNzb2NpYXRpb25zLCBlbmZvcmNpbmcgQ2xvdWRGcm9udCdzIHJ1bGUgb2Ygb25lXG4gICAqIGZ1bmN0aW9uIHBlciBldmVudCB0eXBlIHBlciBiZWhhdmlvdXIuIFRoZSBsaWJyYXJ5IG5ldmVyIGNvbXBvc2VzIG9yIGluc3BlY3RzXG4gICAqIGEgY29uc3VtZXIncyBmdW5jdGlvbiDigJQgaXQgb25seSBhdHRhY2hlcyBpdDsgY29tYmluaW5nIHR3byBmdW5jdGlvbnMgb24gdGhlXG4gICAqIHNhbWUgZXZlbnQgdHlwZSBpcyB0aGUgY29uc3VtZXIncyByZXNwb25zaWJpbGl0eSAoYSBzaW5nbGUgZnVuY3Rpb24pLlxuICAgKi9cbiAgcHJpdmF0ZSBtZXJnZUZ1bmN0aW9uQXNzb2NpYXRpb25zKFxuICAgIGF1dGg/OiBjbG91ZGZyb250LkZ1bmN0aW9uQXNzb2NpYXRpb25bXSxcbiAgICBjb25zdW1lcj86IGNsb3VkZnJvbnQuRnVuY3Rpb25Bc3NvY2lhdGlvbltdLFxuICApOiBjbG91ZGZyb250LkZ1bmN0aW9uQXNzb2NpYXRpb25bXSB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgYWxsID0gWy4uLihhdXRoID8/IFtdKSwgLi4uKGNvbnN1bWVyID8/IFtdKV07XG4gICAgaWYgKGFsbC5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGNvbnN0IHNlZW4gPSBuZXcgU2V0PGNsb3VkZnJvbnQuRnVuY3Rpb25FdmVudFR5cGU+KCk7XG4gICAgZm9yIChjb25zdCBmYSBvZiBhbGwpIHtcbiAgICAgIGlmIChzZWVuLmhhcyhmYS5ldmVudFR5cGUpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgQ2xvdWRGcm9udCBhbGxvd3Mgb25seSBvbmUgZnVuY3Rpb24gcGVyIGV2ZW50IHR5cGUgcGVyIGJlaGF2aW91ciwgYnV0IHR3byAnJHtmYS5ldmVudFR5cGV9JyBgICtcbiAgICAgICAgICAnZnVuY3Rpb25zIHdlcmUgc3VwcGxpZWQgKGUuZy4gUkVRVUlSRV9BVVRIIHBsdXMgeW91ciBvd24gZnVuY3Rpb24pLiBLZWVwIGF1dGggYW5kIHlvdXIgb3RoZXIgJyArXG4gICAgICAgICAgJ2Z1bmN0aW9uIG9uIHNlcGFyYXRlIHBhdGggYmVoYXZpb3Vycywgb3IgY29tYmluZSB0aGVtIGludG8gYSBzaW5nbGUgZnVuY3Rpb24geW91cnNlbGYuJyxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIHNlZW4uYWRkKGZhLmV2ZW50VHlwZSk7XG4gICAgfVxuICAgIHJldHVybiBhbGw7XG4gIH1cblxuICAvKipcbiAgICogQWRkIGEgUFJPVEVDVEVEIGJlaGF2aW91cjogdW5hdXRoZW50aWNhdGVkIHJlcXVlc3RzIHJlZGlyZWN0IHRvIHRoZSBsb2dpblxuICAgKiBwYWdlIGFuZCB2YWxpZGF0ZWQgaWRlbnRpdHkgY2xhaW1zIGFyZSBpbmplY3RlZCBhcyBvcmlnaW4gaGVhZGVycy5cbiAgICogQ29udmVuaWVuY2Ugd3JhcHBlciBvdmVyIHtAbGluayBhZGRCZWhhdmlvcn0gdGhhdCBlbnN1cmVzIFJFUVVJUkVfQVVUSC5cbiAgICovXG4gIHB1YmxpYyBwcm90ZWN0KFxuICAgIHBhdGhQYXR0ZXJuOiBzdHJpbmcsXG4gICAgb3JpZ2luOiBjbG91ZGZyb250LklPcmlnaW4sXG4gICAgb3B0aW9uczogQWRkQmVoYXZpb3JPcHRpb25zPFRSb2xlPiA9IHt9LFxuICApOiB2b2lkIHtcbiAgICBjb25zdCBleHRlbnNpb25zID0gb3B0aW9ucy5leHRlbnNpb25zID8gWy4uLm9wdGlvbnMuZXh0ZW5zaW9uc10gOiBbXTtcbiAgICBpZiAoIWV4dGVuc2lvbnMuaW5jbHVkZXMoRXh0ZW5zaW9uLlJFUVVJUkVfQVVUSCkpIHtcbiAgICAgIGV4dGVuc2lvbnMucHVzaChFeHRlbnNpb24uUkVRVUlSRV9BVVRIKTtcbiAgICB9XG4gICAgdGhpcy5hZGRCZWhhdmlvcihwYXRoUGF0dGVybiwgb3JpZ2luLCB7IC4uLm9wdGlvbnMsIGV4dGVuc2lvbnM6IGV4dGVuc2lvbnMgfSk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIGNvbXBvc2VkIHZpZXdlci1yZXF1ZXN0IGF1dGgtY2hlY2sgZnVuY3Rpb24gKFJFUVVJUkVfQVVUSCkuIFVzZWZ1bCBpblxuICAgKiBBVFRBQ0ggTU9ERSB0byBhc3NvY2lhdGUgb3IgY29tcG9zZSBhdXRoIG9udG8gYSBiZWhhdmlvdXIgdGhpcyBjb25zdHJ1Y3QgZG9lc1xuICAgKiBub3Qgb3duIOKAlCBlLmcuIGFuIGV4aXN0aW5nIGRlZmF1bHQgYmVoYXZpb3VyLCB2aWEgYW4gTDEgb3ZlcnJpZGUuXG4gICAqL1xuICBwdWJsaWMgZ2V0IGF1dGhGdW5jdGlvbigpOiBjbG91ZGZyb250LkZ1bmN0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5jb21wb3NlZEF1dGhGdW5jdGlvbihbRXh0ZW5zaW9uLlJFUVVJUkVfQVVUSF0pO1xuICB9XG5cbiAgcHJpdmF0ZSBidWlsZEZ1bmN0aW9uQXNzb2NpYXRpb25zKFxuICAgIGV4dGVuc2lvbnM/OiBFeHRlbnNpb25bXSxcbiAgICBjb25maWc/OiBFeHRlbnNpb25Db25maWc8VFJvbGU+LFxuICApOiBjbG91ZGZyb250LkZ1bmN0aW9uQXNzb2NpYXRpb25bXSB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKCFleHRlbnNpb25zIHx8IGV4dGVuc2lvbnMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICByZXR1cm4gW3sgZnVuY3Rpb246IHRoaXMuY29tcG9zZWRBdXRoRnVuY3Rpb24oZXh0ZW5zaW9ucywgY29uZmlnKSwgZXZlbnRUeXBlOiBjbG91ZGZyb250LkZ1bmN0aW9uRXZlbnRUeXBlLlZJRVdFUl9SRVFVRVNUIH1dO1xuICB9XG5cbiAgcHJpdmF0ZSBjb21wb3NlZEF1dGhGdW5jdGlvbihcbiAgICBleHRlbnNpb25zOiBFeHRlbnNpb25bXSxcbiAgICBjb25maWc/OiBFeHRlbnNpb25Db25maWc8VFJvbGU+LFxuICApOiBjbG91ZGZyb250LkZ1bmN0aW9uIHtcbiAgICBjb25zdCBjYWNoZUtleSA9IHRoaXMuZnVuY3Rpb25DYWNoZUtleShleHRlbnNpb25zLCBjb25maWcpO1xuICAgIGxldCBmdW5jID0gdGhpcy5jb21wb3NlZEZ1bmN0aW9ucy5nZXQoY2FjaGVLZXkpO1xuICAgIGlmICghZnVuYykge1xuICAgICAgY29uc3QgY29kZSA9IHRoaXMuY29tcG9zZXIuY29tcG9zZShleHRlbnNpb25zLCBjb25maWcsIHtcbiAgICAgICAgbG9naW5SZWRpcmVjdFBhdGg6IHRoaXMubG9naW5SZWRpcmVjdFBhdGgsXG4gICAgICAgIGVuYWJsZUhlYWRlckluamVjdGlvbjogdGhpcy5lbmFibGVIZWFkZXJJbmplY3Rpb24sXG4gICAgICAgIGhlYWRlckluamVjdGlvbkNsYWltczogdGhpcy5oZWFkZXJJbmplY3Rpb25DbGFpbXMsXG4gICAgICAgIGVuYWJsZVJlZnJlc2g6IHRoaXMuZW5hYmxlUmVmcmVzaCxcbiAgICAgIH0pO1xuICAgICAgY29uc3QgZnVuY3Rpb25JZCA9IGBDb21wb3NlZEZuJHtleHRlbnNpb25zLm1hcChlID0+IGUucmVwbGFjZSgnUkVRVUlSRV8nLCAnJykpLmpvaW4oJycpfSR7dGhpcy5jb21wb3NlZEZ1bmN0aW9ucy5zaXplfWA7XG4gICAgICBjb25zdCBuZWVkc0t2cyA9IGV4dGVuc2lvbnMuaW5jbHVkZXMoRXh0ZW5zaW9uLlJFUVVJUkVfQVVUSCk7XG4gICAgICBmdW5jID0gbmV3IGNsb3VkZnJvbnQuRnVuY3Rpb24odGhpcywgZnVuY3Rpb25JZCwgbmVlZHNLdnNcbiAgICAgICAgPyB7IGNvZGU6IGNsb3VkZnJvbnQuRnVuY3Rpb25Db2RlLmZyb21JbmxpbmUoY29kZSksIHJ1bnRpbWU6IGNsb3VkZnJvbnQuRnVuY3Rpb25SdW50aW1lLkpTXzJfMCwgY29tbWVudDogYEN1c3RvbS1VSTogJHtleHRlbnNpb25zLmpvaW4oJywgJyl9YCwga2V5VmFsdWVTdG9yZTogdGhpcy5rdnMgfVxuICAgICAgICA6IHsgY29kZTogY2xvdWRmcm9udC5GdW5jdGlvbkNvZGUuZnJvbUlubGluZShjb2RlKSwgcnVudGltZTogY2xvdWRmcm9udC5GdW5jdGlvblJ1bnRpbWUuSlNfMl8wLCBjb21tZW50OiBgQ3VzdG9tLVVJOiAke2V4dGVuc2lvbnMuam9pbignLCAnKX1gIH0pO1xuICAgICAgaWYgKHRoaXMubGFzdENyZWF0ZWRGdW5jdGlvbikge1xuICAgICAgICBmdW5jLm5vZGUuYWRkRGVwZW5kZW5jeSh0aGlzLmxhc3RDcmVhdGVkRnVuY3Rpb24pO1xuICAgICAgfVxuICAgICAgdGhpcy5sYXN0Q3JlYXRlZEZ1bmN0aW9uID0gZnVuYztcbiAgICAgIHRoaXMuY29tcG9zZWRGdW5jdGlvbnMuc2V0KGNhY2hlS2V5LCBmdW5jKTtcbiAgICB9XG4gICAgcmV0dXJuIGZ1bmM7XG4gIH1cblxuICBwcml2YXRlIGZ1bmN0aW9uQ2FjaGVLZXkoZXh0ZW5zaW9uczogRXh0ZW5zaW9uW10sIGNvbmZpZz86IEV4dGVuc2lvbkNvbmZpZzxUUm9sZT4pOiBzdHJpbmcge1xuICAgIGNvbnN0IHBhcnRzID0gW2V4dGVuc2lvbnMuc2xpY2UoKS5zb3J0KCkuam9pbignLCcpXTtcbiAgICBpZiAoY29uZmlnPy5yZXF1aXJlZFJvbGVzKSB7XG4gICAgICBwYXJ0cy5wdXNoKGNvbmZpZy5yZXF1aXJlZFJvbGVzLnNsaWNlKCkuc29ydCgpLmpvaW4oJywnKSk7XG4gICAgfVxuICAgIGlmIChjb25maWc/LnJvbGVNYXRjaE1vZGUgJiYgY29uZmlnLnJvbGVNYXRjaE1vZGUgIT09IFJvbGVNYXRjaE1vZGUuT1IpIHtcbiAgICAgIHBhcnRzLnB1c2goY29uZmlnLnJvbGVNYXRjaE1vZGUpO1xuICAgIH1cbiAgICByZXR1cm4gcGFydHMuam9pbignfCcpO1xuICB9XG5cbiAgcHJpdmF0ZSByZW5kZXJDb25maWdQeShcbiAgICBiYXNlU2VjcmV0TmFtZTogc3RyaW5nLFxuICAgIGV4dHJhU2VjcmV0TmFtZTogc3RyaW5nLFxuICAgIHJlZ2lvbjogc3RyaW5nLFxuICAgIHN0YXRpY092ZXJyaWRlczogUmVjb3JkPHN0cmluZywgc3RyaW5nPixcbiAgKTogc3RyaW5nIHtcbiAgICByZXR1cm4gW1xuICAgICAgJ2ltcG9ydCBqc29uJyxcbiAgICAgICdpbXBvcnQgbG9nZ2luZycsXG4gICAgICAnaW1wb3J0IGJvdG8zJyxcbiAgICAgICcnLFxuICAgICAgJ2xvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCknLFxuICAgICAgYEJBU0VfU0VDUkVUX05BTUUgPSAke0pTT04uc3RyaW5naWZ5KGJhc2VTZWNyZXROYW1lKX1gLFxuICAgICAgYEVYVFJBX1NFQ1JFVF9OQU1FID0gJHtKU09OLnN0cmluZ2lmeShleHRyYVNlY3JldE5hbWUpfWAsXG4gICAgICBgQ09ORklHX1JFR0lPTiA9ICR7SlNPTi5zdHJpbmdpZnkocmVnaW9uKX1gLFxuICAgICAgYFNUQVRJQ19PVkVSUklERVMgPSAke0pTT04uc3RyaW5naWZ5KHN0YXRpY092ZXJyaWRlcyl9YCxcbiAgICAgICcnLFxuICAgICAgJ19zbSA9IE5vbmUnLFxuICAgICAgJycsXG4gICAgICAnJyxcbiAgICAgICdkZWYgX2NsaWVudCgpOicsXG4gICAgICAnICAgIGdsb2JhbCBfc20nLFxuICAgICAgJyAgICBpZiBfc20gaXMgTm9uZTonLFxuICAgICAgJyAgICAgICAgX3NtID0gYm90bzMuY2xpZW50KFwic2VjcmV0c21hbmFnZXJcIiwgcmVnaW9uX25hbWU9Q09ORklHX1JFR0lPTiknLFxuICAgICAgJyAgICByZXR1cm4gX3NtJyxcbiAgICAgICcnLFxuICAgICAgJycsXG4gICAgICAnZGVmIGdldF9jb25maWcoKTonLFxuICAgICAgJyAgICBjZmcgPSBqc29uLmxvYWRzKF9jbGllbnQoKS5nZXRfc2VjcmV0X3ZhbHVlKFNlY3JldElkPUJBU0VfU0VDUkVUX05BTUUpW1wiU2VjcmV0U3RyaW5nXCJdKScsXG4gICAgICAnICAgIHRyeTonLFxuICAgICAgJyAgICAgICAgY2ZnLnVwZGF0ZShqc29uLmxvYWRzKF9jbGllbnQoKS5nZXRfc2VjcmV0X3ZhbHVlKFNlY3JldElkPUVYVFJBX1NFQ1JFVF9OQU1FKVtcIlNlY3JldFN0cmluZ1wiXSkpJyxcbiAgICAgICcgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOicsXG4gICAgICAnICAgICAgICBsb2dnZXIuZXJyb3IoXCJleHRyYSBjb25maWcgbG9hZCBmYWlsZWQ6ICVzXCIsIGUpJyxcbiAgICAgICcgICAgY2ZnLnVwZGF0ZShTVEFUSUNfT1ZFUlJJREVTKScsXG4gICAgICAnICAgIHJldHVybiBjZmcnLFxuICAgICAgJycsXG4gICAgXS5qb2luKCdcXG4nKTtcbiAgfVxuXG4gIHByaXZhdGUgbWFrZUVkZ2VGdW5jdGlvbihcbiAgICBpZDogc3RyaW5nLFxuICAgIHNvdXJjZURpck5hbWU6IHN0cmluZyxcbiAgICBjb25maWdQeTogc3RyaW5nLFxuICAgIHJvbGU6IGlhbS5JUm9sZSxcbiAgICByZXVzZUNvZ25pdG9CdW5kbGU6IGJvb2xlYW4sXG4gICk6IGNsb3VkZnJvbnQuZXhwZXJpbWVudGFsLkVkZ2VGdW5jdGlvbiB7XG4gICAgY29uc3Qgc291cmNlRGlyID0gcGF0aC5qb2luKF9fZGlybmFtZSwgJy4uL2xhbWJkYScsIHNvdXJjZURpck5hbWUpO1xuICAgIGNvbnN0IGJ1bmRsZWREZXBzRGlyID0gcGF0aC5qb2luKF9fZGlybmFtZSwgJy4uL2xhbWJkYS1idW5kbGVkL2NvZ25pdG8tYXV0aCcpO1xuICAgIGNvbnN0IHRlbXBEaXIgPSBmcy5ta2R0ZW1wU3luYyhwYXRoLmpvaW4ob3MudG1wZGlyKCksICdjdXN0b211aS1hdXRoLScpKTtcbiAgICBjb25zdCBjb25maWdQeVBhdGggPSBwYXRoLmpvaW4odGVtcERpciwgJ2NvbmZpZ19nZW5lcmF0ZWQucHknKTtcbiAgICBmcy53cml0ZUZpbGVTeW5jKGNvbmZpZ1B5UGF0aCwgY29uZmlnUHkpO1xuXG4gICAgcmV0dXJuIG5ldyBjbG91ZGZyb250LmV4cGVyaW1lbnRhbC5FZGdlRnVuY3Rpb24odGhpcywgaWQsIHtcbiAgICAgIHJ1bnRpbWU6IGxhbWJkYS5SdW50aW1lLlBZVEhPTl8zXzExLFxuICAgICAgaGFuZGxlcjogJ2luZGV4LmxhbWJkYV9oYW5kbGVyJyxcbiAgICAgIHRpbWVvdXQ6IGNvcmUuRHVyYXRpb24uc2Vjb25kcygzMCksXG4gICAgICBtZW1vcnlTaXplOiAxMjgsXG4gICAgICByb2xlOiByb2xlLFxuICAgICAgY29kZTogbGFtYmRhLkNvZGUuZnJvbUFzc2V0KHNvdXJjZURpciwge1xuICAgICAgICBidW5kbGluZzoge1xuICAgICAgICAgIGxvY2FsOiB7XG4gICAgICAgICAgICB0cnlCdW5kbGUob3V0cHV0RGlyOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgICAgICAgICAgaWYgKHJldXNlQ29nbml0b0J1bmRsZSAmJiBmcy5leGlzdHNTeW5jKGJ1bmRsZWREZXBzRGlyKSkge1xuICAgICAgICAgICAgICAgIGZzLmNwU3luYyhidW5kbGVkRGVwc0Rpciwgb3V0cHV0RGlyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBmb3IgKGNvbnN0IGZpbGUgb2YgZnMucmVhZGRpclN5bmMoc291cmNlRGlyKSkge1xuICAgICAgICAgICAgICAgIGlmIChmaWxlID09PSAncmVxdWlyZW1lbnRzLnR4dCcpIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIGZzLmNwU3luYyhwYXRoLmpvaW4oc291cmNlRGlyLCBmaWxlKSwgcGF0aC5qb2luKG91dHB1dERpciwgZmlsZSksIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGZzLndyaXRlRmlsZVN5bmMocGF0aC5qb2luKG91dHB1dERpciwgJ2NvbmZpZ19nZW5lcmF0ZWQucHknKSwgY29uZmlnUHkpO1xuICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICBpbWFnZTogbGFtYmRhLlJ1bnRpbWUuUFlUSE9OXzNfMTEuYnVuZGxpbmdJbWFnZSxcbiAgICAgICAgICBjb21tYW5kOiBbXG4gICAgICAgICAgICAnYmFzaCcsICctYycsXG4gICAgICAgICAgICAncGlwIGluc3RhbGwgLXIgcmVxdWlyZW1lbnRzLnR4dCAtdCAvYXNzZXQtb3V0cHV0ICYmIGNwIC1yIC4gL2Fzc2V0LW91dHB1dCAmJiBjcCAvdG1wL2NvbmZpZ19nZW5lcmF0ZWQucHkgL2Fzc2V0LW91dHB1dC9jb25maWdfZ2VuZXJhdGVkLnB5JyxcbiAgICAgICAgICBdLFxuICAgICAgICAgIHZvbHVtZXM6IFt7IGhvc3RQYXRoOiBjb25maWdQeVBhdGgsIGNvbnRhaW5lclBhdGg6ICcvdG1wL2NvbmZpZ19nZW5lcmF0ZWQucHknIH1dLFxuICAgICAgICB9LFxuICAgICAgfSksXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -77,6 +77,7 @@ class CognitoSessionBackend extends constructs.Construct {
|
|
|
77
77
|
securityAlertsTopicArn: props.securityAlertsTopicArn,
|
|
78
78
|
autoRevokeOnReuse: props.autoRevokeOnReuse,
|
|
79
79
|
jwtClaimsWhitelist: props.jwtClaimsWhitelist,
|
|
80
|
+
removalPolicy: props.removalPolicy,
|
|
80
81
|
});
|
|
81
82
|
const auditLogRetentionDays = props.auditLogRetentionDays ?? 30;
|
|
82
83
|
const auditArchiveRetentionDays = props.auditArchiveRetentionDays ?? 365;
|
|
@@ -120,4 +121,4 @@ class CognitoSessionBackend extends constructs.Construct {
|
|
|
120
121
|
}
|
|
121
122
|
}
|
|
122
123
|
exports.CognitoSessionBackend = CognitoSessionBackend;
|
|
123
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29nbml0b1Nlc3Npb25CYWNrZW5kLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2Nsb3VkZnJvbnQvcGF0dGVybnMvY29nbml0b1Nlc3Npb25CYWNrZW5kLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLGtEQUFvQztBQUNwQyx1REFBeUM7QUFDekMscUVBQWtFO0FBQ2xFLCtFQUE0RTtBQUM1RSw0REFBeUQ7QUFDekQsZ0VBQTZEO0FBQzdELGtFQUErRDtBQThDL0Q7Ozs7Ozs7Ozs7O0dBV0c7QUFDSCxNQUFhLHFCQUFzQixTQUFRLFVBQVUsQ0FBQyxTQUFTO0lBTzdELFlBQVksS0FBMkIsRUFBRSxFQUFVLEVBQUUsS0FBaUM7UUFDcEYsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUM7UUFDMUMsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDO1FBQzVDLE1BQU0sYUFBYSxHQUFHLEtBQUssQ0FBQyxhQUFhLElBQUksTUFBTSxDQUFDO1FBQ3BELE1BQU0sV0FBVyxHQUFHLEtBQUssQ0FBQyxXQUFXLElBQUksTUFBTSxDQUFDO1FBQ2hELE1BQU0sU0FBUyxHQUFHLEtBQUssQ0FBQyxVQUFVLENBQUMsV0FBVyxFQUFFLENBQUMsT0FBTyxDQUFDLGFBQWEsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUU3RSxNQUFNLGlCQUFpQixHQUFHLElBQUkscUNBQWlCLENBQUMsSUFBSSxFQUFFLG1CQUFtQixFQUFFO1lBQ3pFLFNBQVMsRUFBRSxLQUFLLENBQUMsU0FBUyxJQUFJLGlCQUFpQixLQUFLLENBQUMsVUFBVSxFQUFFO1lBQ2pFLGFBQWEsRUFBRSxLQUFLLENBQUMsYUFBYSxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTTtTQUNoRSxDQUFDLENBQUM7UUFFSCxNQUFNLGFBQWEsR0FBRyxJQUFJLG1EQUF3QixDQUFDLElBQUksRUFBRSxlQUFlLEVBQUU7WUFDeEUsVUFBVSxFQUFFLEtBQUssQ0FBQyxVQUFVO1lBQzVCLGdCQUFnQixFQUFFLEtBQUssQ0FBQyxnQkFBZ0I7WUFDeEMsU0FBUyxFQUFFLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxTQUFTO1lBQzVDLFdBQVcsRUFBRSxXQUFXO1lBQ3hCLFVBQVUsRUFBRSxLQUFLLENBQUMsVUFBVTtZQUM1QixRQUFRLEVBQUUsS0FBSyxDQUFDLFFBQVE7WUFDeEIsYUFBYSxFQUFFLEtBQUssQ0FBQyxhQUFhO1lBQ2xDLGFBQWEsRUFBRSxhQUFhO1lBQzVCLHNCQUFzQixFQUFFLEtBQUssQ0FBQyxzQkFBc0I7WUFDcEQsaUJBQWlCLEVBQUUsS0FBSyxDQUFDLGlCQUFpQjtZQUMxQyxrQkFBa0IsRUFBRSxLQUFLLENBQUMsa0JBQWtCO1NBQzdDLENBQUMsQ0FBQztRQUVILE1BQU0scUJBQXFCLEdBQUcsS0FBSyxDQUFDLHFCQUFxQixJQUFJLEVBQUUsQ0FBQztRQUNoRSxNQUFNLHlCQUF5QixHQUFHLEtBQUssQ0FBQyx5QkFBeUIsSUFBSSxHQUFHLENBQUM7UUFFekUsTUFBTSxlQUFlLEdBQUcsSUFBSSx5Q0FBbUIsQ0FBQyxJQUFJLEVBQUUsaUJBQWlCLEVBQUU7WUFDdkUsWUFBWSxFQUFFLGFBQWEsQ0FBQyxZQUFZO1lBQ3hDLE1BQU0sRUFBRSxhQUFhLENBQUMsTUFBTTtZQUM1QixHQUFHLEVBQUUsYUFBYSxDQUFDLEdBQUc7WUFDdEIsU0FBUyxFQUFFLGlCQUFpQixDQUFDLEtBQUs7WUFDbEMsZ0JBQWdCLEVBQUUsS0FBSyxDQUFDLDBCQUEwQjtZQUNsRCx5QkFBeUIsRUFBRSxLQUFLLENBQUMseUJBQXlCO1lBQzFELGdCQUFnQixFQUFFLHFCQUFxQjtTQUN4QyxDQUFDLENBQUM7UUFFSCxJQUFJLGlDQUFlLENBQUMsSUFBSSxFQUFFLGlCQUFpQixFQUFFO1lBQzNDLGFBQWEsRUFBRSxlQUFlLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUM7WUFDbkUsTUFBTSxFQUFFLGFBQWEsQ0FBQyxNQUFNO1lBQzVCLGFBQWEsRUFBRSxxQkFBcUI7WUFDcEMsb0JBQW9CLEVBQUUseUJBQXlCO1lBQy9DLFVBQVUsRUFBRSxLQUFLLENBQUMsZUFBZSxJQUFJLG1CQUFtQixTQUFTLElBQUksT0FBTyxJQUFJLE1BQU0sRUFBRTtZQUN4RixZQUFZLEVBQUUsS0FBSyxDQUFDLGlCQUFpQixJQUFJLG1CQUFtQixTQUFTLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsRUFBRTtZQUMxRixhQUFhLEVBQUUsS0FBSyxDQUFDLGFBQWEsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU07U0FDaEUsQ0FBQyxDQUFDO1FBRUgsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLGNBQWMsSUFBSSxTQUFTLEtBQUssQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNuRSxJQUFJLENBQUMsY0FBYyxHQUFHLE1BQU0sQ0FBQztRQUU3QixJQUFJLDJDQUFvQixDQUFDLElBQUksRUFBRSxXQUFXLEVBQUU7WUFDMUMsTUFBTSxFQUFFLE1BQU07WUFDZCxNQUFNLEVBQUUsV0FBVztZQUNuQixNQUFNLEVBQUU7Z0JBQ04sZUFBZSxFQUFFLGFBQWEsQ0FBQyxZQUFZLENBQUMsU0FBUztnQkFDckQsU0FBUyxFQUFFLGFBQWEsQ0FBQyxNQUFNLENBQUMsTUFBTTtnQkFDdEMsWUFBWSxFQUFFLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxRQUFRO2dCQUM5QyxNQUFNLEVBQUUsYUFBYSxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0I7Z0JBQzFDLGFBQWEsRUFBRSxLQUFLLENBQUMsYUFBYTtnQkFDbEMsUUFBUSxFQUFFLEtBQUssQ0FBQyxRQUFRO2dCQUN4QixVQUFVLEVBQUUsS0FBSyxDQUFDLFVBQVU7YUFDN0I7U0FDRixDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsZUFBZSxHQUFHLGFBQWEsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDO1FBQzVELElBQUksQ0FBQyxTQUFTLEdBQUcsYUFBYSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUM7UUFDN0MsSUFBSSxDQUFDLFlBQVksR0FBRyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDO1FBQ3JELElBQUksQ0FBQyxNQUFNLEdBQUcsYUFBYSxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQztJQUNuRCxDQUFDO0NBQ0Y7QUFoRkQsc0RBZ0ZDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgY29yZSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgKiBhcyBjb25zdHJ1Y3RzIGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHsgQXV0aExhbWJkYUZ1bmN0aW9ucyB9IGZyb20gJy4uL2F1dGgvYXV0aExhbWJkYUZ1bmN0aW9ucyc7XG5pbXBvcnQgeyBDb2duaXRvQXV0aFNlY3JldE1hbmFnZXIgfSBmcm9tICcuLi9hdXRoL2NvZ25pdG9BdXRoU2VjcmV0TWFuYWdlcic7XG5pbXBvcnQgeyBBdXRoU2VjdXJpdHlUYWJsZSB9IGZyb20gJy4uL2F1dGhTZWN1cml0eVRhYmxlJztcbmltcG9ydCB7IEF1ZGl0TG9nQXJjaGl2ZSB9IGZyb20gJy4uL2xvZ2dpbmcvYXVkaXRMb2dBcmNoaXZlJztcbmltcG9ydCB7IFNzbUNyb3NzUmVnaW9uV3JpdGVyIH0gZnJvbSAnLi4vc3NtQ3Jvc3NSZWdpb25Xcml0ZXInO1xuXG4vKipcbiAqIFByb3BzIGZvciB7QGxpbmsgQ29nbml0b1Nlc3Npb25CYWNrZW5kfS4gR2VuZXJpYyDigJQgbm8gcHJvamVjdCBzcGVjaWZpY3MgYmFrZWRcbiAqIGluLiBQb29sIGlkZW50aWZpZXJzIGFyZSBwYXNzZWQgaW4gKGZyb20ge0BsaW5rIENvZ25pdG9DdXN0b21lclBvb2x9IG9yIGFueVxuICogZXh0ZXJuYWxseS1tYW5hZ2VkIHBvb2wpLCBzbyB0aGlzIGNvbnN0cnVjdCBpcyBhZ25vc3RpYyB0byBob3cgdGhlIHBvb2wgd2FzXG4gKiBjcmVhdGVkLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENvZ25pdG9TZXNzaW9uQmFja2VuZFByb3BzIHtcbiAgLyoqIFNTTSBwcmVmaXggdG8gcHVibGlzaCBpZGVudGlmaWVycyB1bmRlci4gQGRlZmF1bHQgYC9hdXRoLyR7ZG9tYWluTmFtZX1gICovXG4gIHJlYWRvbmx5IHNzbVBhcmFtUHJlZml4Pzogc3RyaW5nO1xuICAvKiogQ2Fub25pY2FsIGRvbWFpbiDigJQgdXNlZCBmb3IgdGhlIGNvbmZpZy1zZWNyZXQgbmFtZSBhbmQgZGVmYXVsdCByZXNvdXJjZSBuYW1lcy4gKi9cbiAgcmVhZG9ubHkgZG9tYWluTmFtZTogc3RyaW5nO1xuICAvKipcbiAgICogQ29uZmlnLXNlY3JldCBuYW1lICh0aGUgc2VjcmV0IHRoZSBlZGdlIExhbWJkYXMgZmV0Y2ggYnkgbmFtZSkuIE92ZXJyaWRlIHRvXG4gICAqIGRlY291cGxlIHRoZSBuYW1lIGZyb20ge0BsaW5rIGRvbWFpbk5hbWV9LCBlLmcuIHRvIGF2b2lkIGEgcGh5c2ljYWwtbmFtZVxuICAgKiBjb2xsaXNpb24gd2hlbiByZXBsYWNpbmcgYW4gZXhpc3RpbmcgYXV0aCBjb25zdHJ1Y3QgaW4gdGhlIHNhbWUgc3RhY2suXG4gICAqIEBkZWZhdWx0IGBjbG91ZGZyb250LWF1dGgtY29uZmlnLSR7ZG9tYWluTmFtZX1gXG4gICAqL1xuICByZWFkb25seSBjb25maWdTZWNyZXROYW1lPzogc3RyaW5nO1xuICAvKiogQ29nbml0byB1c2VyIHBvb2wgaWQuICovXG4gIHJlYWRvbmx5IHVzZXJQb29sSWQ6IHN0cmluZztcbiAgLyoqIENvZ25pdG8gYXBwIGNsaWVudCBpZCBlbWJlZGRlZCBpbiB0aGUgY29uZmlnIHNlY3JldC4gKi9cbiAgcmVhZG9ubHkgY2xpZW50SWQ6IHN0cmluZztcbiAgLyoqIEhvc3RlZC1VSSBDb2duaXRvIGRvbWFpbiBVUkwuICovXG4gIHJlYWRvbmx5IGNvZ25pdG9Eb21haW46IHN0cmluZztcbiAgLyoqIFJlZ2lvbiBvZiB0aGUgQ29nbml0byBwb29sLiBAZGVmYXVsdCB0aGlzIHN0YWNrJ3MgcmVnaW9uICovXG4gIHJlYWRvbmx5IGNvZ25pdG9SZWdpb24/OiBzdHJpbmc7XG4gIC8qKiBSZWdpb24gdGhlIGF1dGggdGFibGUgbGl2ZXMgaW4uIEBkZWZhdWx0IHRoaXMgc3RhY2sncyByZWdpb24gKi9cbiAgcmVhZG9ubHkgdGFibGVSZWdpb24/OiBzdHJpbmc7XG4gIC8qKiBBdXRoLXNlY3VyaXR5IER5bmFtb0RCIHRhYmxlIG5hbWUuIEBkZWZhdWx0IGBhdXRoLXNlY3VyaXR5LSR7ZG9tYWluTmFtZX1gICovXG4gIHJlYWRvbmx5IHRhYmxlTmFtZT86IHN0cmluZztcbiAgLyoqIEF1ZGl0IGxvZyBTMyBidWNrZXQgbmFtZS4gQGRlZmF1bHQgZGVyaXZlZCBmcm9tIHtAbGluayBkb21haW5OYW1lfS4gKi9cbiAgcmVhZG9ubHkgYXVkaXRCdWNrZXROYW1lPzogc3RyaW5nO1xuICAvKiogQXVkaXQgbG9nIEdsdWUgZGF0YWJhc2UgbmFtZS4gQGRlZmF1bHQgZGVyaXZlZCBmcm9tIHtAbGluayBkb21haW5OYW1lfS4gKi9cbiAgcmVhZG9ubHkgYXVkaXREYXRhYmFzZU5hbWU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHNlY3VyaXR5QWxlcnRzVG9waWNBcm4/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHNlc3Npb25SZXZvY2F0aW9uVG9waWNBcm4/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IGF1dG9SZXZva2VPblJldXNlPzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgand0Q2xhaW1zV2hpdGVsaXN0Pzogc3RyaW5nW107XG4gIHJlYWRvbmx5IGhtYWNTZWNyZXRSb3RhdGlvblNjaGVkdWxlPzogY29yZS5EdXJhdGlvbjtcbiAgcmVhZG9ubHkgYXVkaXRMb2dSZXRlbnRpb25EYXlzPzogbnVtYmVyO1xuICByZWFkb25seSBhdWRpdEFyY2hpdmVSZXRlbnRpb25EYXlzPzogbnVtYmVyO1xuICByZWFkb25seSByZW1vdmFsUG9saWN5PzogY29yZS5SZW1vdmFsUG9saWN5O1xufVxuXG4vKipcbiAqIFRoZSBzZXNzaW9uIHN1YnN0cmF0ZSBmb3IgdGhlIGN1c3RvbS1VSSAvIGhvc3RlZC1VSSBDb2duaXRvIGF1dGggZmxvd3M6XG4gKiB0aGUgSE1BQyBLTVMgc2lnbmluZyBrZXksIHRoZSBhdXRoLXNlY3VyaXR5IER5bmFtb0RCIHRhYmxlXG4gKiAoYFNUQVRFI2AvYFNFU1NJT04jYC9gUkVGUkVTSCNgKSwgdGhlIENsb3VkRnJvbnQgS2V5VmFsdWVTdG9yZSAoaG9sZHNcbiAqIGBqd3Quc2VjcmV0YCBhbmQgdGhlIGByZXZva2VkOmAgZGVueWxpc3QpLCB0aGUgY29uZmlnIHNlY3JldCBjb25zdW1lZCBieSB0aGVcbiAqIGVkZ2UgTGFtYmRhcywgc2VjcmV0IHJvdGF0aW9uICsgc2Vzc2lvbi1yZXZvY2F0aW9uIHdpcmluZywgYW5kIHRoZSBhdWRpdC1sb2dcbiAqIGFyY2hpdmUuIFB1Ymxpc2hlcyBhbGwgaWRlbnRpZmllcnMgdW5kZXIgYW4gU1NNIHByZWZpeCBmb3IgdGhlIGVkZ2UvQ0ROXG4gKiBjb25zdHJ1Y3QgdG8gcmVhZC5cbiAqXG4gKiBHZW5lcmljIGFuZCByZXVzYWJsZTogaXQgdGFrZXMgQ29nbml0byBwb29sIGlkZW50aWZpZXJzIGFzIHByb3BzIGFuZCBrbm93c1xuICogbm90aGluZyBhYm91dCBhbnkgc3BlY2lmaWMgcHJvamVjdC5cbiAqL1xuZXhwb3J0IGNsYXNzIENvZ25pdG9TZXNzaW9uQmFja2VuZCBleHRlbmRzIGNvbnN0cnVjdHMuQ29uc3RydWN0IHtcbiAgcHVibGljIHJlYWRvbmx5IGNvbmZpZ1NlY3JldEFybjogc3RyaW5nO1xuICBwdWJsaWMgcmVhZG9ubHkga21zS2V5QXJuOiBzdHJpbmc7XG4gIHB1YmxpYyByZWFkb25seSBhdXRoVGFibGVBcm46IHN0cmluZztcbiAgcHVibGljIHJlYWRvbmx5IGt2c0Fybjogc3RyaW5nO1xuICBwdWJsaWMgcmVhZG9ubHkgc3NtUGFyYW1QcmVmaXg6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihzY29wZTogY29uc3RydWN0cy5Db25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBDb2duaXRvU2Vzc2lvbkJhY2tlbmRQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICBjb25zdCByZWdpb24gPSBjb3JlLlN0YWNrLm9mKHRoaXMpLnJlZ2lvbjtcbiAgICBjb25zdCBhY2NvdW50ID0gY29yZS5TdGFjay5vZih0aGlzKS5hY2NvdW50O1xuICAgIGNvbnN0IGNvZ25pdG9SZWdpb24gPSBwcm9wcy5jb2duaXRvUmVnaW9uID8/IHJlZ2lvbjtcbiAgICBjb25zdCB0YWJsZVJlZ2lvbiA9IHByb3BzLnRhYmxlUmVnaW9uID8/IHJlZ2lvbjtcbiAgICBjb25zdCBzYW5pdGl6ZWQgPSBwcm9wcy5kb21haW5OYW1lLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvW15hLXowLTktXS9nLCAnLScpO1xuXG4gICAgY29uc3QgYXV0aFNlY3VyaXR5VGFibGUgPSBuZXcgQXV0aFNlY3VyaXR5VGFibGUodGhpcywgJ0F1dGhTZWN1cml0eVRhYmxlJywge1xuICAgICAgdGFibGVOYW1lOiBwcm9wcy50YWJsZU5hbWUgPz8gYGF1dGgtc2VjdXJpdHktJHtwcm9wcy5kb21haW5OYW1lfWAsXG4gICAgICByZW1vdmFsUG9saWN5OiBwcm9wcy5yZW1vdmFsUG9saWN5ID8/IGNvcmUuUmVtb3ZhbFBvbGljeS5SRVRBSU4sXG4gICAgfSk7XG5cbiAgICBjb25zdCBzZWNyZXRNYW5hZ2VyID0gbmV3IENvZ25pdG9BdXRoU2VjcmV0TWFuYWdlcih0aGlzLCAnU2VjcmV0TWFuYWdlcicsIHtcbiAgICAgIGRvbWFpbk5hbWU6IHByb3BzLmRvbWFpbk5hbWUsXG4gICAgICBjb25maWdTZWNyZXROYW1lOiBwcm9wcy5jb25maWdTZWNyZXROYW1lLFxuICAgICAgdGFibGVOYW1lOiBhdXRoU2VjdXJpdHlUYWJsZS50YWJsZS50YWJsZU5hbWUsXG4gICAgICB0YWJsZVJlZ2lvbjogdGFibGVSZWdpb24sXG4gICAgICB1c2VyUG9vbElkOiBwcm9wcy51c2VyUG9vbElkLFxuICAgICAgY2xpZW50SWQ6IHByb3BzLmNsaWVudElkLFxuICAgICAgY29nbml0b0RvbWFpbjogcHJvcHMuY29nbml0b0RvbWFpbixcbiAgICAgIGNvZ25pdG9SZWdpb246IGNvZ25pdG9SZWdpb24sXG4gICAgICBzZWN1cml0eUFsZXJ0c1RvcGljQXJuOiBwcm9wcy5zZWN1cml0eUFsZXJ0c1RvcGljQXJuLFxuICAgICAgYXV0b1Jldm9rZU9uUmV1c2U6IHByb3BzLmF1dG9SZXZva2VPblJldXNlLFxuICAgICAgand0Q2xhaW1zV2hpdGVsaXN0OiBwcm9wcy5qd3RDbGFpbXNXaGl0ZWxpc3QsXG4gICAgfSk7XG5cbiAgICBjb25zdCBhdWRpdExvZ1JldGVudGlvbkRheXMgPSBwcm9wcy5hdWRpdExvZ1JldGVudGlvbkRheXMgPz8gMzA7XG4gICAgY29uc3QgYXVkaXRBcmNoaXZlUmV0ZW50aW9uRGF5cyA9IHByb3BzLmF1ZGl0QXJjaGl2ZVJldGVudGlvbkRheXMgPz8gMzY1O1xuXG4gICAgY29uc3QgbGFtYmRhRnVuY3Rpb25zID0gbmV3IEF1dGhMYW1iZGFGdW5jdGlvbnModGhpcywgJ0xhbWJkYUZ1bmN0aW9ucycsIHtcbiAgICAgIGNvbmZpZ1NlY3JldDogc2VjcmV0TWFuYWdlci5jb25maWdTZWNyZXQsXG4gICAgICBrbXNLZXk6IHNlY3JldE1hbmFnZXIua21zS2V5LFxuICAgICAga3ZzOiBzZWNyZXRNYW5hZ2VyLmt2cyxcbiAgICAgIGF1dGhUYWJsZTogYXV0aFNlY3VyaXR5VGFibGUudGFibGUsXG4gICAgICByb3RhdGlvblNjaGVkdWxlOiBwcm9wcy5obWFjU2VjcmV0Um90YXRpb25TY2hlZHVsZSxcbiAgICAgIHNlc3Npb25SZXZvY2F0aW9uVG9waWNBcm46IHByb3BzLnNlc3Npb25SZXZvY2F0aW9uVG9waWNBcm4sXG4gICAgICBsb2dSZXRlbnRpb25EYXlzOiBhdWRpdExvZ1JldGVudGlvbkRheXMsXG4gICAgfSk7XG5cbiAgICBuZXcgQXVkaXRMb2dBcmNoaXZlKHRoaXMsICdBdWRpdExvZ0FyY2hpdmUnLCB7XG4gICAgICBsb2dHcm91cE5hbWVzOiBsYW1iZGFGdW5jdGlvbnMubG9nR3JvdXBzLm1hcChsZyA9PiBsZy5sb2dHcm91cE5hbWUpLFxuICAgICAga21zS2V5OiBzZWNyZXRNYW5hZ2VyLmttc0tleSxcbiAgICAgIHJldGVudGlvbkRheXM6IGF1ZGl0TG9nUmV0ZW50aW9uRGF5cyxcbiAgICAgIGFyY2hpdmVSZXRlbnRpb25EYXlzOiBhdWRpdEFyY2hpdmVSZXRlbnRpb25EYXlzLFxuICAgICAgYnVja2V0TmFtZTogcHJvcHMuYXVkaXRCdWNrZXROYW1lID8/IGBhdXRoLWF1ZGl0LWxvZ3MtJHtzYW5pdGl6ZWR9LSR7YWNjb3VudH0tJHtyZWdpb259YCxcbiAgICAgIGRhdGFiYXNlTmFtZTogcHJvcHMuYXVkaXREYXRhYmFzZU5hbWUgPz8gYGF1dGhfYXVkaXRfbG9nc18ke3Nhbml0aXplZC5yZXBsYWNlKC8tL2csICdfJyl9YCxcbiAgICAgIHJlbW92YWxQb2xpY3k6IHByb3BzLnJlbW92YWxQb2xpY3kgPz8gY29yZS5SZW1vdmFsUG9saWN5LlJFVEFJTixcbiAgICB9KTtcblxuICAgIGNvbnN0IHByZWZpeCA9IHByb3BzLnNzbVBhcmFtUHJlZml4ID8/IGAvYXV0aC8ke3Byb3BzLmRvbWFpbk5hbWV9YDtcbiAgICB0aGlzLnNzbVBhcmFtUHJlZml4ID0gcHJlZml4O1xuXG4gICAgbmV3IFNzbUNyb3NzUmVnaW9uV3JpdGVyKHRoaXMsICdTc21Xcml0ZXInLCB7XG4gICAgICBwcmVmaXg6IHByZWZpeCxcbiAgICAgIHJlZ2lvbjogJ3VzLWVhc3QtMScsXG4gICAgICBwYXJhbXM6IHtcbiAgICAgICAgY29uZmlnU2VjcmV0QXJuOiBzZWNyZXRNYW5hZ2VyLmNvbmZpZ1NlY3JldC5zZWNyZXRBcm4sXG4gICAgICAgIGttc0tleUFybjogc2VjcmV0TWFuYWdlci5rbXNLZXkua2V5QXJuLFxuICAgICAgICBhdXRoVGFibGVBcm46IGF1dGhTZWN1cml0eVRhYmxlLnRhYmxlLnRhYmxlQXJuLFxuICAgICAgICBrdnNBcm46IHNlY3JldE1hbmFnZXIua3ZzLmtleVZhbHVlU3RvcmVBcm4sXG4gICAgICAgIGNvZ25pdG9Eb21haW46IHByb3BzLmNvZ25pdG9Eb21haW4sXG4gICAgICAgIGNsaWVudElkOiBwcm9wcy5jbGllbnRJZCxcbiAgICAgICAgdXNlclBvb2xJZDogcHJvcHMudXNlclBvb2xJZCxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICB0aGlzLmNvbmZpZ1NlY3JldEFybiA9IHNlY3JldE1hbmFnZXIuY29uZmlnU2VjcmV0LnNlY3JldEFybjtcbiAgICB0aGlzLmttc0tleUFybiA9IHNlY3JldE1hbmFnZXIua21zS2V5LmtleUFybjtcbiAgICB0aGlzLmF1dGhUYWJsZUFybiA9IGF1dGhTZWN1cml0eVRhYmxlLnRhYmxlLnRhYmxlQXJuO1xuICAgIHRoaXMua3ZzQXJuID0gc2VjcmV0TWFuYWdlci5rdnMua2V5VmFsdWVTdG9yZUFybjtcbiAgfVxufVxuIl19
|
|
124
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29nbml0b1Nlc3Npb25CYWNrZW5kLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2Nsb3VkZnJvbnQvcGF0dGVybnMvY29nbml0b1Nlc3Npb25CYWNrZW5kLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLGtEQUFvQztBQUNwQyx1REFBeUM7QUFDekMscUVBQWtFO0FBQ2xFLCtFQUE0RTtBQUM1RSw0REFBeUQ7QUFDekQsZ0VBQTZEO0FBQzdELGtFQUErRDtBQThDL0Q7Ozs7Ozs7Ozs7O0dBV0c7QUFDSCxNQUFhLHFCQUFzQixTQUFRLFVBQVUsQ0FBQyxTQUFTO0lBTzdELFlBQVksS0FBMkIsRUFBRSxFQUFVLEVBQUUsS0FBaUM7UUFDcEYsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUM7UUFDMUMsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDO1FBQzVDLE1BQU0sYUFBYSxHQUFHLEtBQUssQ0FBQyxhQUFhLElBQUksTUFBTSxDQUFDO1FBQ3BELE1BQU0sV0FBVyxHQUFHLEtBQUssQ0FBQyxXQUFXLElBQUksTUFBTSxDQUFDO1FBQ2hELE1BQU0sU0FBUyxHQUFHLEtBQUssQ0FBQyxVQUFVLENBQUMsV0FBVyxFQUFFLENBQUMsT0FBTyxDQUFDLGFBQWEsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUU3RSxNQUFNLGlCQUFpQixHQUFHLElBQUkscUNBQWlCLENBQUMsSUFBSSxFQUFFLG1CQUFtQixFQUFFO1lBQ3pFLFNBQVMsRUFBRSxLQUFLLENBQUMsU0FBUyxJQUFJLGlCQUFpQixLQUFLLENBQUMsVUFBVSxFQUFFO1lBQ2pFLGFB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RSxLQUFLLENBQUMsUUFBUTtnQkFDeEIsVUFBVSxFQUFFLEtBQUssQ0FBQyxVQUFVO2FBQzdCO1NBQ0YsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLGVBQWUsR0FBRyxhQUFhLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQztRQUM1RCxJQUFJLENBQUMsU0FBUyxHQUFHLGFBQWEsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDO1FBQzdDLElBQUksQ0FBQyxZQUFZLEdBQUcsaUJBQWlCLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQztRQUNyRCxJQUFJLENBQUMsTUFBTSxHQUFHLGFBQWEsQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUM7SUFDbkQsQ0FBQztDQUNGO0FBakZELHNEQWlGQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGNvcmUgZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0ICogYXMgY29uc3RydWN0cyBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB7IEF1dGhMYW1iZGFGdW5jdGlvbnMgfSBmcm9tICcuLi9hdXRoL2F1dGhMYW1iZGFGdW5jdGlvbnMnO1xuaW1wb3J0IHsgQ29nbml0b0F1dGhTZWNyZXRNYW5hZ2VyIH0gZnJvbSAnLi4vYXV0aC9jb2duaXRvQXV0aFNlY3JldE1hbmFnZXInO1xuaW1wb3J0IHsgQXV0aFNlY3VyaXR5VGFibGUgfSBmcm9tICcuLi9hdXRoU2VjdXJpdHlUYWJsZSc7XG5pbXBvcnQgeyBBdWRpdExvZ0FyY2hpdmUgfSBmcm9tICcuLi9sb2dnaW5nL2F1ZGl0TG9nQXJjaGl2ZSc7XG5pbXBvcnQgeyBTc21Dcm9zc1JlZ2lvbldyaXRlciB9IGZyb20gJy4uL3NzbUNyb3NzUmVnaW9uV3JpdGVyJztcblxuLyoqXG4gKiBQcm9wcyBmb3Ige0BsaW5rIENvZ25pdG9TZXNzaW9uQmFja2VuZH0uIEdlbmVyaWMg4oCUIG5vIHByb2plY3Qgc3BlY2lmaWNzIGJha2VkXG4gKiBpbi4gUG9vbCBpZGVudGlmaWVycyBhcmUgcGFzc2VkIGluIChmcm9tIHtAbGluayBDb2duaXRvQ3VzdG9tZXJQb29sfSBvciBhbnlcbiAqIGV4dGVybmFsbHktbWFuYWdlZCBwb29sKSwgc28gdGhpcyBjb25zdHJ1Y3QgaXMgYWdub3N0aWMgdG8gaG93IHRoZSBwb29sIHdhc1xuICogY3JlYXRlZC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb2duaXRvU2Vzc2lvbkJhY2tlbmRQcm9wcyB7XG4gIC8qKiBTU00gcHJlZml4IHRvIHB1Ymxpc2ggaWRlbnRpZmllcnMgdW5kZXIuIEBkZWZhdWx0IGAvYXV0aC8ke2RvbWFpbk5hbWV9YCAqL1xuICByZWFkb25seSBzc21QYXJhbVByZWZpeD86IHN0cmluZztcbiAgLyoqIENhbm9uaWNhbCBkb21haW4g4oCUIHVzZWQgZm9yIHRoZSBjb25maWctc2VjcmV0IG5hbWUgYW5kIGRlZmF1bHQgcmVzb3VyY2UgbmFtZXMuICovXG4gIHJlYWRvbmx5IGRvbWFpbk5hbWU6IHN0cmluZztcbiAgLyoqXG4gICAqIENvbmZpZy1zZWNyZXQgbmFtZSAodGhlIHNlY3JldCB0aGUgZWRnZSBMYW1iZGFzIGZldGNoIGJ5IG5hbWUpLiBPdmVycmlkZSB0b1xuICAgKiBkZWNvdXBsZSB0aGUgbmFtZSBmcm9tIHtAbGluayBkb21haW5OYW1lfSwgZS5nLiB0byBhdm9pZCBhIHBoeXNpY2FsLW5hbWVcbiAgICogY29sbGlzaW9uIHdoZW4gcmVwbGFjaW5nIGFuIGV4aXN0aW5nIGF1dGggY29uc3RydWN0IGluIHRoZSBzYW1lIHN0YWNrLlxuICAgKiBAZGVmYXVsdCBgY2xvdWRmcm9udC1hdXRoLWNvbmZpZy0ke2RvbWFpbk5hbWV9YFxuICAgKi9cbiAgcmVhZG9ubHkgY29uZmlnU2VjcmV0TmFtZT86IHN0cmluZztcbiAgLyoqIENvZ25pdG8gdXNlciBwb29sIGlkLiAqL1xuICByZWFkb25seSB1c2VyUG9vbElkOiBzdHJpbmc7XG4gIC8qKiBDb2duaXRvIGFwcCBjbGllbnQgaWQgZW1iZWRkZWQgaW4gdGhlIGNvbmZpZyBzZWNyZXQuICovXG4gIHJlYWRvbmx5IGNsaWVudElkOiBzdHJpbmc7XG4gIC8qKiBIb3N0ZWQtVUkgQ29nbml0byBkb21haW4gVVJMLiAqL1xuICByZWFkb25seSBjb2duaXRvRG9tYWluOiBzdHJpbmc7XG4gIC8qKiBSZWdpb24gb2YgdGhlIENvZ25pdG8gcG9vbC4gQGRlZmF1bHQgdGhpcyBzdGFjaydzIHJlZ2lvbiAqL1xuICByZWFkb25seSBjb2duaXRvUmVnaW9uPzogc3RyaW5nO1xuICAvKiogUmVnaW9uIHRoZSBhdXRoIHRhYmxlIGxpdmVzIGluLiBAZGVmYXVsdCB0aGlzIHN0YWNrJ3MgcmVnaW9uICovXG4gIHJlYWRvbmx5IHRhYmxlUmVnaW9uPzogc3RyaW5nO1xuICAvKiogQXV0aC1zZWN1cml0eSBEeW5hbW9EQiB0YWJsZSBuYW1lLiBAZGVmYXVsdCBgYXV0aC1zZWN1cml0eS0ke2RvbWFpbk5hbWV9YCAqL1xuICByZWFkb25seSB0YWJsZU5hbWU/OiBzdHJpbmc7XG4gIC8qKiBBdWRpdCBsb2cgUzMgYnVja2V0IG5hbWUuIEBkZWZhdWx0IGRlcml2ZWQgZnJvbSB7QGxpbmsgZG9tYWluTmFtZX0uICovXG4gIHJlYWRvbmx5IGF1ZGl0QnVja2V0TmFtZT86IHN0cmluZztcbiAgLyoqIEF1ZGl0IGxvZyBHbHVlIGRhdGFiYXNlIG5hbWUuIEBkZWZhdWx0IGRlcml2ZWQgZnJvbSB7QGxpbmsgZG9tYWluTmFtZX0uICovXG4gIHJlYWRvbmx5IGF1ZGl0RGF0YWJhc2VOYW1lPzogc3RyaW5nO1xuICByZWFkb25seSBzZWN1cml0eUFsZXJ0c1RvcGljQXJuPzogc3RyaW5nO1xuICByZWFkb25seSBzZXNzaW9uUmV2b2NhdGlvblRvcGljQXJuPzogc3RyaW5nO1xuICByZWFkb25seSBhdXRvUmV2b2tlT25SZXVzZT86IGJvb2xlYW47XG4gIHJlYWRvbmx5IGp3dENsYWltc1doaXRlbGlzdD86IHN0cmluZ1tdO1xuICByZWFkb25seSBobWFjU2VjcmV0Um90YXRpb25TY2hlZHVsZT86IGNvcmUuRHVyYXRpb247XG4gIHJlYWRvbmx5IGF1ZGl0TG9nUmV0ZW50aW9uRGF5cz86IG51bWJlcjtcbiAgcmVhZG9ubHkgYXVkaXRBcmNoaXZlUmV0ZW50aW9uRGF5cz86IG51bWJlcjtcbiAgcmVhZG9ubHkgcmVtb3ZhbFBvbGljeT86IGNvcmUuUmVtb3ZhbFBvbGljeTtcbn1cblxuLyoqXG4gKiBUaGUgc2Vzc2lvbiBzdWJzdHJhdGUgZm9yIHRoZSBjdXN0b20tVUkgLyBob3N0ZWQtVUkgQ29nbml0byBhdXRoIGZsb3dzOlxuICogdGhlIEhNQUMgS01TIHNpZ25pbmcga2V5LCB0aGUgYXV0aC1zZWN1cml0eSBEeW5hbW9EQiB0YWJsZVxuICogKGBTVEFURSNgL2BTRVNTSU9OI2AvYFJFRlJFU0gjYCksIHRoZSBDbG91ZEZyb250IEtleVZhbHVlU3RvcmUgKGhvbGRzXG4gKiBgand0LnNlY3JldGAgYW5kIHRoZSBgcmV2b2tlZDpgIGRlbnlsaXN0KSwgdGhlIGNvbmZpZyBzZWNyZXQgY29uc3VtZWQgYnkgdGhlXG4gKiBlZGdlIExhbWJkYXMsIHNlY3JldCByb3RhdGlvbiArIHNlc3Npb24tcmV2b2NhdGlvbiB3aXJpbmcsIGFuZCB0aGUgYXVkaXQtbG9nXG4gKiBhcmNoaXZlLiBQdWJsaXNoZXMgYWxsIGlkZW50aWZpZXJzIHVuZGVyIGFuIFNTTSBwcmVmaXggZm9yIHRoZSBlZGdlL0NETlxuICogY29uc3RydWN0IHRvIHJlYWQuXG4gKlxuICogR2VuZXJpYyBhbmQgcmV1c2FibGU6IGl0IHRha2VzIENvZ25pdG8gcG9vbCBpZGVudGlmaWVycyBhcyBwcm9wcyBhbmQga25vd3NcbiAqIG5vdGhpbmcgYWJvdXQgYW55IHNwZWNpZmljIHByb2plY3QuXG4gKi9cbmV4cG9ydCBjbGFzcyBDb2duaXRvU2Vzc2lvbkJhY2tlbmQgZXh0ZW5kcyBjb25zdHJ1Y3RzLkNvbnN0cnVjdCB7XG4gIHB1YmxpYyByZWFkb25seSBjb25maWdTZWNyZXRBcm46IHN0cmluZztcbiAgcHVibGljIHJlYWRvbmx5IGttc0tleUFybjogc3RyaW5nO1xuICBwdWJsaWMgcmVhZG9ubHkgYXV0aFRhYmxlQXJuOiBzdHJpbmc7XG4gIHB1YmxpYyByZWFkb25seSBrdnNBcm46IHN0cmluZztcbiAgcHVibGljIHJlYWRvbmx5IHNzbVBhcmFtUHJlZml4OiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IGNvbnN0cnVjdHMuQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogQ29nbml0b1Nlc3Npb25CYWNrZW5kUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgY29uc3QgcmVnaW9uID0gY29yZS5TdGFjay5vZih0aGlzKS5yZWdpb247XG4gICAgY29uc3QgYWNjb3VudCA9IGNvcmUuU3RhY2sub2YodGhpcykuYWNjb3VudDtcbiAgICBjb25zdCBjb2duaXRvUmVnaW9uID0gcHJvcHMuY29nbml0b1JlZ2lvbiA/PyByZWdpb247XG4gICAgY29uc3QgdGFibGVSZWdpb24gPSBwcm9wcy50YWJsZVJlZ2lvbiA/PyByZWdpb247XG4gICAgY29uc3Qgc2FuaXRpemVkID0gcHJvcHMuZG9tYWluTmFtZS50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoL1teYS16MC05LV0vZywgJy0nKTtcblxuICAgIGNvbnN0IGF1dGhTZWN1cml0eVRhYmxlID0gbmV3IEF1dGhTZWN1cml0eVRhYmxlKHRoaXMsICdBdXRoU2VjdXJpdHlUYWJsZScsIHtcbiAgICAgIHRhYmxlTmFtZTogcHJvcHMudGFibGVOYW1lID8/IGBhdXRoLXNlY3VyaXR5LSR7cHJvcHMuZG9tYWluTmFtZX1gLFxuICAgICAgcmVtb3ZhbFBvbGljeTogcHJvcHMucmVtb3ZhbFBvbGljeSA/PyBjb3JlLlJlbW92YWxQb2xpY3kuUkVUQUlOLFxuICAgIH0pO1xuXG4gICAgY29uc3Qgc2VjcmV0TWFuYWdlciA9IG5ldyBDb2duaXRvQXV0aFNlY3JldE1hbmFnZXIodGhpcywgJ1NlY3JldE1hbmFnZXInLCB7XG4gICAgICBkb21haW5OYW1lOiBwcm9wcy5kb21haW5OYW1lLFxuICAgICAgY29uZmlnU2VjcmV0TmFtZTogcHJvcHMuY29uZmlnU2VjcmV0TmFtZSxcbiAgICAgIHRhYmxlTmFtZTogYXV0aFNlY3VyaXR5VGFibGUudGFibGUudGFibGVOYW1lLFxuICAgICAgdGFibGVSZWdpb246IHRhYmxlUmVnaW9uLFxuICAgICAgdXNlclBvb2xJZDogcHJvcHMudXNlclBvb2xJZCxcbiAgICAgIGNsaWVudElkOiBwcm9wcy5jbGllbnRJZCxcbiAgICAgIGNvZ25pdG9Eb21haW46IHByb3BzLmNvZ25pdG9Eb21haW4sXG4gICAgICBjb2duaXRvUmVnaW9uOiBjb2duaXRvUmVnaW9uLFxuICAgICAgc2VjdXJpdHlBbGVydHNUb3BpY0FybjogcHJvcHMuc2VjdXJpdHlBbGVydHNUb3BpY0FybixcbiAgICAgIGF1dG9SZXZva2VPblJldXNlOiBwcm9wcy5hdXRvUmV2b2tlT25SZXVzZSxcbiAgICAgIGp3dENsYWltc1doaXRlbGlzdDogcHJvcHMuand0Q2xhaW1zV2hpdGVsaXN0LFxuICAgICAgcmVtb3ZhbFBvbGljeTogcHJvcHMucmVtb3ZhbFBvbGljeSxcbiAgICB9KTtcblxuICAgIGNvbnN0IGF1ZGl0TG9nUmV0ZW50aW9uRGF5cyA9IHByb3BzLmF1ZGl0TG9nUmV0ZW50aW9uRGF5cyA/PyAzMDtcbiAgICBjb25zdCBhdWRpdEFyY2hpdmVSZXRlbnRpb25EYXlzID0gcHJvcHMuYXVkaXRBcmNoaXZlUmV0ZW50aW9uRGF5cyA/PyAzNjU7XG5cbiAgICBjb25zdCBsYW1iZGFGdW5jdGlvbnMgPSBuZXcgQXV0aExhbWJkYUZ1bmN0aW9ucyh0aGlzLCAnTGFtYmRhRnVuY3Rpb25zJywge1xuICAgICAgY29uZmlnU2VjcmV0OiBzZWNyZXRNYW5hZ2VyLmNvbmZpZ1NlY3JldCxcbiAgICAgIGttc0tleTogc2VjcmV0TWFuYWdlci5rbXNLZXksXG4gICAgICBrdnM6IHNlY3JldE1hbmFnZXIua3ZzLFxuICAgICAgYXV0aFRhYmxlOiBhdXRoU2VjdXJpdHlUYWJsZS50YWJsZSxcbiAgICAgIHJvdGF0aW9uU2NoZWR1bGU6IHByb3BzLmhtYWNTZWNyZXRSb3RhdGlvblNjaGVkdWxlLFxuICAgICAgc2Vzc2lvblJldm9jYXRpb25Ub3BpY0FybjogcHJvcHMuc2Vzc2lvblJldm9jYXRpb25Ub3BpY0FybixcbiAgICAgIGxvZ1JldGVudGlvbkRheXM6IGF1ZGl0TG9nUmV0ZW50aW9uRGF5cyxcbiAgICB9KTtcblxuICAgIG5ldyBBdWRpdExvZ0FyY2hpdmUodGhpcywgJ0F1ZGl0TG9nQXJjaGl2ZScsIHtcbiAgICAgIGxvZ0dyb3VwTmFtZXM6IGxhbWJkYUZ1bmN0aW9ucy5sb2dHcm91cHMubWFwKGxnID0+IGxnLmxvZ0dyb3VwTmFtZSksXG4gICAgICBrbXNLZXk6IHNlY3JldE1hbmFnZXIua21zS2V5LFxuICAgICAgcmV0ZW50aW9uRGF5czogYXVkaXRMb2dSZXRlbnRpb25EYXlzLFxuICAgICAgYXJjaGl2ZVJldGVudGlvbkRheXM6IGF1ZGl0QXJjaGl2ZVJldGVudGlvbkRheXMsXG4gICAgICBidWNrZXROYW1lOiBwcm9wcy5hdWRpdEJ1Y2tldE5hbWUgPz8gYGF1dGgtYXVkaXQtbG9ncy0ke3Nhbml0aXplZH0tJHthY2NvdW50fS0ke3JlZ2lvbn1gLFxuICAgICAgZGF0YWJhc2VOYW1lOiBwcm9wcy5hdWRpdERhdGFiYXNlTmFtZSA/PyBgYXV0aF9hdWRpdF9sb2dzXyR7c2FuaXRpemVkLnJlcGxhY2UoLy0vZywgJ18nKX1gLFxuICAgICAgcmVtb3ZhbFBvbGljeTogcHJvcHMucmVtb3ZhbFBvbGljeSA/PyBjb3JlLlJlbW92YWxQb2xpY3kuUkVUQUlOLFxuICAgIH0pO1xuXG4gICAgY29uc3QgcHJlZml4ID0gcHJvcHMuc3NtUGFyYW1QcmVmaXggPz8gYC9hdXRoLyR7cHJvcHMuZG9tYWluTmFtZX1gO1xuICAgIHRoaXMuc3NtUGFyYW1QcmVmaXggPSBwcmVmaXg7XG5cbiAgICBuZXcgU3NtQ3Jvc3NSZWdpb25Xcml0ZXIodGhpcywgJ1NzbVdyaXRlcicsIHtcbiAgICAgIHByZWZpeDogcHJlZml4LFxuICAgICAgcmVnaW9uOiAndXMtZWFzdC0xJyxcbiAgICAgIHBhcmFtczoge1xuICAgICAgICBjb25maWdTZWNyZXRBcm46IHNlY3JldE1hbmFnZXIuY29uZmlnU2VjcmV0LnNlY3JldEFybixcbiAgICAgICAga21zS2V5QXJuOiBzZWNyZXRNYW5hZ2VyLmttc0tleS5rZXlBcm4sXG4gICAgICAgIGF1dGhUYWJsZUFybjogYXV0aFNlY3VyaXR5VGFibGUudGFibGUudGFibGVBcm4sXG4gICAgICAgIGt2c0Fybjogc2VjcmV0TWFuYWdlci5rdnMua2V5VmFsdWVTdG9yZUFybixcbiAgICAgICAgY29nbml0b0RvbWFpbjogcHJvcHMuY29nbml0b0RvbWFpbixcbiAgICAgICAgY2xpZW50SWQ6IHByb3BzLmNsaWVudElkLFxuICAgICAgICB1c2VyUG9vbElkOiBwcm9wcy51c2VyUG9vbElkLFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIHRoaXMuY29uZmlnU2VjcmV0QXJuID0gc2VjcmV0TWFuYWdlci5jb25maWdTZWNyZXQuc2VjcmV0QXJuO1xuICAgIHRoaXMua21zS2V5QXJuID0gc2VjcmV0TWFuYWdlci5rbXNLZXkua2V5QXJuO1xuICAgIHRoaXMuYXV0aFRhYmxlQXJuID0gYXV0aFNlY3VyaXR5VGFibGUudGFibGUudGFibGVBcm47XG4gICAgdGhpcy5rdnNBcm4gPSBzZWNyZXRNYW5hZ2VyLmt2cy5rZXlWYWx1ZVN0b3JlQXJuO1xuICB9XG59XG4iXX0=
|