raindancers-cloudfront 0.0.38 → 0.0.40
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/cloudfront-functions/auth-check.js +51 -9
- package/lib/cloudfront/cloudfront-functions/function-composer.d.ts +18 -0
- package/lib/cloudfront/cloudfront-functions/function-composer.js +44 -15
- package/lib/cloudfront/cloudfront-functions/modules/auth-check.js +52 -9
- package/lib/cloudfront/cloudfront-functions/modules/cognito-auth-check.js +48 -8
- 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/cognito-customui-session/pyasn1/__pycache__/__init__.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-customui-session/pyasn1/__pycache__/debug.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-customui-session/pyasn1/__pycache__/error.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-customui-session/pyasn1/codec/__pycache__/__init__.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-customui-session/pyasn1/codec/__pycache__/streaming.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-customui-session/pyasn1/codec/ber/__pycache__/__init__.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-customui-session/pyasn1/codec/ber/__pycache__/decoder.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-customui-session/pyasn1/codec/ber/__pycache__/encoder.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-customui-session/pyasn1/codec/ber/__pycache__/eoo.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-customui-session/pyasn1/codec/cer/__pycache__/__init__.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-customui-session/pyasn1/codec/cer/__pycache__/decoder.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-customui-session/pyasn1/codec/cer/__pycache__/encoder.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-customui-session/pyasn1/codec/der/__pycache__/__init__.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-customui-session/pyasn1/codec/der/__pycache__/decoder.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-customui-session/pyasn1/codec/der/__pycache__/encoder.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-customui-session/pyasn1/codec/native/__pycache__/__init__.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-customui-session/pyasn1/codec/native/__pycache__/decoder.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-customui-session/pyasn1/codec/native/__pycache__/encoder.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-customui-session/pyasn1/compat/__pycache__/__init__.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-customui-session/pyasn1/compat/__pycache__/integer.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-customui-session/pyasn1/type/__pycache__/__init__.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-customui-session/pyasn1/type/__pycache__/base.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-customui-session/pyasn1/type/__pycache__/char.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-customui-session/pyasn1/type/__pycache__/constraint.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-customui-session/pyasn1/type/__pycache__/error.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-customui-session/pyasn1/type/__pycache__/namedtype.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-customui-session/pyasn1/type/__pycache__/namedval.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-customui-session/pyasn1/type/__pycache__/opentype.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-customui-session/pyasn1/type/__pycache__/tag.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-customui-session/pyasn1/type/__pycache__/tagmap.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-customui-session/pyasn1/type/__pycache__/univ.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-customui-session/pyasn1/type/__pycache__/useful.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-customui-session/rsa/__pycache__/__init__.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-customui-session/rsa/__pycache__/asn1.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-customui-session/rsa/__pycache__/cli.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-customui-session/rsa/__pycache__/common.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-customui-session/rsa/__pycache__/core.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-customui-session/rsa/__pycache__/key.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-customui-session/rsa/__pycache__/parallel.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-customui-session/rsa/__pycache__/pem.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-customui-session/rsa/__pycache__/pkcs1.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-customui-session/rsa/__pycache__/pkcs1_v2.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-customui-session/rsa/__pycache__/prime.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-customui-session/rsa/__pycache__/randnum.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-customui-session/rsa/__pycache__/transform.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-customui-session/rsa/__pycache__/util.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/securedCloudFront.js +14 -2
- package/package.json +1 -1
|
@@ -142,11 +142,53 @@ function getOriginalPath(request) {
|
|
|
142
142
|
return request.uri + '?' + qs;
|
|
143
143
|
}
|
|
144
144
|
|
|
145
|
-
|
|
145
|
+
// A live PKCE sign-in is represented by the pair of cookies (oauth_state +
|
|
146
|
+
// code_verifier) minted on the redirect that started it. The browser drops both
|
|
147
|
+
// at Max-Age=600, so their PRESENCE (with a well-formed, decodable state) is the
|
|
148
|
+
// practical "unexpired flow" signal available to a CloudFront Function — it has
|
|
149
|
+
// no way to read a cookie's own expiry. Reusing an existing pair instead of
|
|
150
|
+
// minting a new one is what stops a redirect provoked mid-sign-in (e.g. a
|
|
151
|
+
// background notification poll from a sibling panel on the shared cookie domain)
|
|
152
|
+
// from overwriting the state the in-flight sign-in carries, which the callback
|
|
153
|
+
// compares strictly and rejects with "400 Invalid state parameter".
|
|
154
|
+
function inflightAuthFlow(cookies) {
|
|
155
|
+
if (!cookies) { return null; }
|
|
156
|
+
var stateCookie = cookies.oauth_state;
|
|
157
|
+
var verifierCookie = cookies.code_verifier;
|
|
158
|
+
if (!stateCookie || !stateCookie.value || !verifierCookie || !verifierCookie.value) {
|
|
159
|
+
return null;
|
|
160
|
+
}
|
|
161
|
+
try {
|
|
162
|
+
JSON.parse(base64urlDecode(stateCookie.value));
|
|
163
|
+
} catch (e) {
|
|
164
|
+
return null;
|
|
165
|
+
}
|
|
166
|
+
return { state: stateCookie.value, codeVerifier: verifierCookie.value };
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
function redirectToAuth(originalPath, host, cookies) {
|
|
170
|
+
var domainAttr = COOKIE_DOMAIN ? '; Domain=' + COOKIE_DOMAIN : '';
|
|
171
|
+
|
|
172
|
+
// If a sign-in is already in flight, reissue the redirect REUSING its state
|
|
173
|
+
// and verifier, and set NO cookies — do not clobber the live flow. The
|
|
174
|
+
// challenge is re-derived from the stored verifier so the authorize URL stays
|
|
175
|
+
// consistent with the PKCE exchange the callback performs for whichever flow
|
|
176
|
+
// completes.
|
|
177
|
+
var inflight = inflightAuthFlow(cookies);
|
|
178
|
+
if (inflight) {
|
|
179
|
+
var reusedChallenge = generateCodeChallenge(inflight.codeVerifier);
|
|
180
|
+
return {
|
|
181
|
+
statusCode: 302,
|
|
182
|
+
headers: {
|
|
183
|
+
location: { value: buildAzureAuthUrl(inflight.state, reusedChallenge, host) },
|
|
184
|
+
'cache-control': { value: 'no-store' }
|
|
185
|
+
}
|
|
186
|
+
};
|
|
187
|
+
}
|
|
188
|
+
|
|
146
189
|
var state = generateState(originalPath, host);
|
|
147
190
|
var codeVerifier = generateCodeVerifier();
|
|
148
191
|
var codeChallenge = generateCodeChallenge(codeVerifier);
|
|
149
|
-
var domainAttr = COOKIE_DOMAIN ? '; Domain=' + COOKIE_DOMAIN : '';
|
|
150
192
|
return {
|
|
151
193
|
statusCode: 302,
|
|
152
194
|
headers: {
|
|
@@ -203,13 +245,13 @@ async function handler(event) {
|
|
|
203
245
|
// Check for session cookie (supports both __Secure- with domain and __Host- without)
|
|
204
246
|
var sessionCookie = cookies['__Secure-auth_session'] || cookies['__Host-auth_session'];
|
|
205
247
|
if (!sessionCookie) {
|
|
206
|
-
return redirectToAuth(getOriginalPath(request), host);
|
|
248
|
+
return redirectToAuth(getOriginalPath(request), host, request.cookies);
|
|
207
249
|
}
|
|
208
250
|
|
|
209
251
|
var token = sessionCookie.value;
|
|
210
252
|
|
|
211
253
|
if (!token || token.length === 0) {
|
|
212
|
-
return redirectToAuth(getOriginalPath(request), host);
|
|
254
|
+
return redirectToAuth(getOriginalPath(request), host, request.cookies);
|
|
213
255
|
}
|
|
214
256
|
|
|
215
257
|
try {
|
|
@@ -217,12 +259,12 @@ async function handler(event) {
|
|
|
217
259
|
var parts = token.split('.');
|
|
218
260
|
|
|
219
261
|
if (parts.length !== 3) {
|
|
220
|
-
return redirectToAuth(originalPath, host);
|
|
262
|
+
return redirectToAuth(originalPath, host, request.cookies);
|
|
221
263
|
}
|
|
222
264
|
|
|
223
265
|
var isValid = await validateHmacSignature(token);
|
|
224
266
|
if (!isValid) {
|
|
225
|
-
return redirectToAuth(originalPath, host);
|
|
267
|
+
return redirectToAuth(originalPath, host, request.cookies);
|
|
226
268
|
}
|
|
227
269
|
|
|
228
270
|
var payload = JSON.parse(base64urlDecode(parts[1]));
|
|
@@ -232,7 +274,7 @@ async function handler(event) {
|
|
|
232
274
|
if (ENABLE_REFRESH) {
|
|
233
275
|
return redirectToRefresh(originalPath, host);
|
|
234
276
|
}
|
|
235
|
-
return redirectToAuth(originalPath, host);
|
|
277
|
+
return redirectToAuth(originalPath, host, request.cookies);
|
|
236
278
|
}
|
|
237
279
|
|
|
238
280
|
// Check if session is revoked (denylist approach)
|
|
@@ -242,7 +284,7 @@ async function handler(event) {
|
|
|
242
284
|
var isRevoked = await kvsHandle.get('revoked:' + jti);
|
|
243
285
|
if (isRevoked) {
|
|
244
286
|
console.log('Session revoked: ' + jti);
|
|
245
|
-
return redirectToAuth(originalPath, host);
|
|
287
|
+
return redirectToAuth(originalPath, host, request.cookies);
|
|
246
288
|
}
|
|
247
289
|
} catch (e) {
|
|
248
290
|
console.log('KVS error checking revocation: ' + e);
|
|
@@ -265,6 +307,6 @@ async function handler(event) {
|
|
|
265
307
|
|
|
266
308
|
return request;
|
|
267
309
|
} catch (e) {
|
|
268
|
-
return redirectToAuth(getOriginalPath(request), host);
|
|
310
|
+
return redirectToAuth(getOriginalPath(request), host, request.cookies);
|
|
269
311
|
}
|
|
270
312
|
}
|
|
@@ -19,6 +19,24 @@ export interface ComposerConfig {
|
|
|
19
19
|
*/
|
|
20
20
|
readonly loginRedirectPath?: string;
|
|
21
21
|
}
|
|
22
|
+
/**
|
|
23
|
+
* Minify CloudFront Function source with terser.
|
|
24
|
+
*
|
|
25
|
+
* CloudFront Functions have a hard 10KB code-size limit. Both the composed
|
|
26
|
+
* (multi-module) path and the standalone auth-check path must minify, using
|
|
27
|
+
* the SAME options, so a function that fits in one path fits in the other.
|
|
28
|
+
*
|
|
29
|
+
* `minify_sync` throws on a parse error and, in its documented failure mode,
|
|
30
|
+
* can return `{ error }` with no `code`. An earlier `minified.code || assembled`
|
|
31
|
+
* fallback caught that second case and silently shipped the UN-minified source,
|
|
32
|
+
* which is how an 11KB function reached CloudFront and 413'd at deploy. This
|
|
33
|
+
* helper never falls back: a thrown error propagates, and a missing `code` is
|
|
34
|
+
* turned into a thrown error too — a minify failure is always a build error.
|
|
35
|
+
*
|
|
36
|
+
* The `reserved` names are the CloudFront-required top-level identifiers that
|
|
37
|
+
* must survive mangling.
|
|
38
|
+
*/
|
|
39
|
+
export declare function minifyFunctionCode(source: string): string;
|
|
22
40
|
/**
|
|
23
41
|
* Generates a combined CloudFront Function from modular check functions
|
|
24
42
|
* based on requested extensions
|
|
@@ -34,10 +34,51 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
34
34
|
})();
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
36
|
exports.FunctionComposer = void 0;
|
|
37
|
+
exports.minifyFunctionCode = minifyFunctionCode;
|
|
37
38
|
const fs = __importStar(require("fs"));
|
|
38
39
|
const path = __importStar(require("path"));
|
|
39
40
|
const terser_1 = require("terser");
|
|
40
41
|
const securedCloudFront_1 = require("../patterns/securedCloudFront");
|
|
42
|
+
/**
|
|
43
|
+
* Minify CloudFront Function source with terser.
|
|
44
|
+
*
|
|
45
|
+
* CloudFront Functions have a hard 10KB code-size limit. Both the composed
|
|
46
|
+
* (multi-module) path and the standalone auth-check path must minify, using
|
|
47
|
+
* the SAME options, so a function that fits in one path fits in the other.
|
|
48
|
+
*
|
|
49
|
+
* `minify_sync` throws on a parse error and, in its documented failure mode,
|
|
50
|
+
* can return `{ error }` with no `code`. An earlier `minified.code || assembled`
|
|
51
|
+
* fallback caught that second case and silently shipped the UN-minified source,
|
|
52
|
+
* which is how an 11KB function reached CloudFront and 413'd at deploy. This
|
|
53
|
+
* helper never falls back: a thrown error propagates, and a missing `code` is
|
|
54
|
+
* turned into a thrown error too — a minify failure is always a build error.
|
|
55
|
+
*
|
|
56
|
+
* The `reserved` names are the CloudFront-required top-level identifiers that
|
|
57
|
+
* must survive mangling.
|
|
58
|
+
*/
|
|
59
|
+
function minifyFunctionCode(source) {
|
|
60
|
+
const result = (0, terser_1.minify_sync)(source, {
|
|
61
|
+
compress: {
|
|
62
|
+
dead_code: true,
|
|
63
|
+
drop_console: false,
|
|
64
|
+
passes: 2,
|
|
65
|
+
},
|
|
66
|
+
mangle: {
|
|
67
|
+
reserved: ['handler', 'event', 'kvsHandle'],
|
|
68
|
+
},
|
|
69
|
+
format: {
|
|
70
|
+
comments: false,
|
|
71
|
+
},
|
|
72
|
+
});
|
|
73
|
+
// `minify_sync` returns `{ error }` (not typed by @types/terser) instead of
|
|
74
|
+
// throwing; `code` is undefined on failure. Treat a missing `code` as the
|
|
75
|
+
// failure signal and surface the runtime error if terser attached one.
|
|
76
|
+
if (result.code === undefined) {
|
|
77
|
+
const err = result.error;
|
|
78
|
+
throw new Error(`CloudFront Function minification failed: ${err ?? 'terser produced no output'}`);
|
|
79
|
+
}
|
|
80
|
+
return result.code;
|
|
81
|
+
}
|
|
41
82
|
/**
|
|
42
83
|
* Generates a combined CloudFront Function from modular check functions
|
|
43
84
|
* based on requested extensions
|
|
@@ -122,21 +163,9 @@ class FunctionComposer {
|
|
|
122
163
|
const kvsDecl = 'const kvsHandle = cf.kvs();\n';
|
|
123
164
|
assembled = assembled.replace(/const kvsHandle = cf\.kvs\(\);\s*/g, '');
|
|
124
165
|
// Minify with terser to stay well under the 10KB CloudFront Function limit.
|
|
125
|
-
const minified = (
|
|
126
|
-
compress: {
|
|
127
|
-
dead_code: true,
|
|
128
|
-
drop_console: false,
|
|
129
|
-
passes: 2,
|
|
130
|
-
},
|
|
131
|
-
mangle: {
|
|
132
|
-
reserved: ['handler', 'event', 'kvsHandle'],
|
|
133
|
-
},
|
|
134
|
-
format: {
|
|
135
|
-
comments: false,
|
|
136
|
-
},
|
|
137
|
-
});
|
|
166
|
+
const minified = minifyFunctionCode(assembled);
|
|
138
167
|
// Prepend the CloudFront-specific preamble back
|
|
139
|
-
const code = cfImport + cryptoRequire + kvsDecl +
|
|
168
|
+
const code = cfImport + cryptoRequire + kvsDecl + minified;
|
|
140
169
|
const sizeKB = Buffer.byteLength(code, 'utf-8') / 1024;
|
|
141
170
|
if (sizeKB > 10) {
|
|
142
171
|
throw new Error(`CloudFront Function exceeds 10KB limit: ${sizeKB.toFixed(2)}KB (extensions: ${extensions.join(', ')})`);
|
|
@@ -186,4 +215,4 @@ class FunctionComposer {
|
|
|
186
215
|
}
|
|
187
216
|
}
|
|
188
217
|
exports.FunctionComposer = FunctionComposer;
|
|
189
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnVuY3Rpb24tY29tcG9zZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY2xvdWRmcm9udC9jbG91ZGZyb250LWZ1bmN0aW9ucy9mdW5jdGlvbi1jb21wb3Nlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSx1Q0FBeUI7QUFDekIsMkNBQTZCO0FBQzdCLG1DQUFxQztBQUNyQyxxRUFBMEY7QUF1QjFGOzs7R0FHRztBQUNILE1BQWEsZ0JBQWdCO0lBRzNCO1FBQ0UsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxTQUFTLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxPQUFPLENBQUMsVUFBdUIsRUFBRSxNQUF3QixFQUFFLGNBQStCO1FBQy9GLE1BQU0sS0FBSyxHQUFhLEVBQUUsQ0FBQztRQUUzQixrQ0FBa0M7UUFDbEMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQztRQUUvQyxpQ0FBaUM7UUFDakMsTUFBTSxNQUFNLEdBQWEsRUFBRSxDQUFDO1FBRTVCLElBQUksVUFBVSxDQUFDLFFBQVEsQ0FBQyw2QkFBUyxDQUFDLHFCQUFxQixDQUFDLEVBQUUsQ0FBQztZQUN6RCxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDO1lBQzlDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDekIsQ0FBQztRQUVELElBQUksVUFBVSxDQUFDLFFBQVEsQ0FBQyw2QkFBUyxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUM7WUFDbEQsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUM7WUFDNUMsTUFBTSxD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WUFDckMsSUFBSSxVQUFVLEVBQUUsQ0FBQztnQkFDZixLQUFLLENBQUMsSUFBSSxDQUNSLHNCQUFzQixFQUN0Qix5QkFBeUIsRUFDekIseUNBQXlDLEVBQ3pDLHdDQUF3QyxFQUN4QyxnQkFBZ0IsRUFDaEIsMEJBQTBCLEVBQzFCLDJDQUEyQyxFQUMzQywrQ0FBK0MsRUFDL0MsVUFBVSxFQUNWLE9BQU8sRUFDUCxLQUFLLEVBQ0wsRUFBRSxDQUNILENBQUM7WUFDSixDQUFDO1FBQ0gsQ0FBQztRQUVELGdFQUFnRTtRQUNoRSxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztZQUMvQixLQUFLLENBQUMsSUFBSSxDQUNSLDBCQUEwQixFQUMxQixFQUFFLENBQ0gsQ0FBQztRQUNKLENBQUM7UUFFRCxLQUFLLENBQUMsSUFBSSxDQUNSLHdCQUF3QixFQUN4Qix5QkFBeUIsRUFDekIsR0FBRyxDQUNKLENBQUM7UUFFRixPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDMUIsQ0FBQztDQUNGO0FBdk5ELDRDQXVOQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGZzIGZyb20gJ2ZzJztcbmltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgeyBtaW5pZnlfc3luYyB9IGZyb20gJ3RlcnNlcic7XG5pbXBvcnQgeyBFeHRlbnNpb24sIEV4dGVuc2lvbkNvbmZpZywgUm9sZU1hdGNoTW9kZSB9IGZyb20gJy4uL3BhdHRlcm5zL3NlY3VyZWRDbG91ZEZyb250JztcblxuZXhwb3J0IGludGVyZmFjZSBDb21wb3NlckNvbmZpZyB7XG4gIHJlYWRvbmx5IHRlbmFudElkPzogc3RyaW5nO1xuICByZWFkb25seSBjb2duaXRvRG9tYWluPzogc3RyaW5nO1xuICByZWFkb25seSBjbGllbnRJZD86IHN0cmluZztcbiAgcmVhZG9ubHkgcmVkaXJlY3RVcmk/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IGNvb2tpZURvbWFpbj86IHN0cmluZztcbiAgcmVhZG9ubHkgcmVxdWlyZU1mYT86IGJvb2xlYW47XG4gIC8qKiBFbmFibGUgaGVhZGVyIHN0cmlwcGluZyBhbmQgaW5qZWN0aW9uIGZyb20gSldUIGNsYWltcy4gQGRlZmF1bHQgZmFsc2UgKi9cbiAgcmVhZG9ubHkgZW5hYmxlSGVhZGVySW5qZWN0aW9uPzogYm9vbGVhbjtcbiAgLyoqIE1hcCBvZiBoZWFkZXIgbmFtZSDihpIgSldUIGNsYWltIGtleS4gZS5nLiB7ICd4LWN1c3RvbWVyLWlkJzogJ2N1c3RvbWVyX2lkJyB9ICovXG4gIHJlYWRvbmx5IGhlYWRlckluamVjdGlvbkNsYWltcz86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG4gIC8qKiBFbmFibGUgcmVmcmVzaCByZWRpcmVjdCBmb3IgZXhwaXJlZC1idXQtdmFsaWQgdG9rZW5zLiBAZGVmYXVsdCBmYWxzZSAqL1xuICByZWFkb25seSBlbmFibGVSZWZyZXNoPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIEN1c3RvbS1VSSBtb2RlOiBmaXJzdC1wYXJ0eSBwYXRoIHRvIHJlZGlyZWN0IHVuYXV0aGVudGljYXRlZCB1c2VycyB0b1xuICAgKiAoZS5nLiAnL2xvZ2luJykuIFdoZW4gc2V0LCB0aGUgc2hhcmVkIGF1dGgtY2hlY2sgbW9kdWxlIGlzIHVzZWQgd2l0aCBhXG4gICAqIHJlbGF0aXZlIHJlZGlyZWN0IGluc3RlYWQgb2YgYW4gZXh0ZXJuYWwgSWRQIGF1dGhvcml6ZSBVUkwuXG4gICAqL1xuICByZWFkb25seSBsb2dpblJlZGlyZWN0UGF0aD86IHN0cmluZztcbn1cblxuLyoqXG4gKiBHZW5lcmF0ZXMgYSBjb21iaW5lZCBDbG91ZEZyb250IEZ1bmN0aW9uIGZyb20gbW9kdWxhciBjaGVjayBmdW5jdGlvbnNcbiAqIGJhc2VkIG9uIHJlcXVlc3RlZCBleHRlbnNpb25zXG4gKi9cbmV4cG9ydCBjbGFzcyBGdW5jdGlvbkNvbXBvc2VyIHtcbiAgcHJpdmF0ZSByZWFkb25seSBtb2R1bGVzRGlyOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5tb2R1bGVzRGlyID0gcGF0aC5qb2luKF9fZGlybmFtZSwgJ21vZHVsZXMnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZW5lcmF0ZSBjb21iaW5lZCBmdW5jdGlvbiBjb2RlIGJhc2VkIG9uIHJlcXVlc3RlZCBleHRlbnNpb25zXG4gICAqL1xuICBwdWJsaWMgY29tcG9zZShleHRlbnNpb25zOiBFeHRlbnNpb25bXSwgY29uZmlnPzogRXh0ZW5zaW9uQ29uZmlnLCBjb21wb3NlckNvbmZpZz86IENvbXBvc2VyQ29uZmlnKTogc3RyaW5nIHtcbiAgICBjb25zdCBwYXJ0czogc3RyaW5nW10gPSBbXTtcblxuICAgIC8vIEFsd2F5cyBpbmNsdWRlIHNoYXJlZCB1dGlsaXRpZXNcbiAgICBwYXJ0cy5wdXNoKHRoaXMubG9hZE1vZHVsZSgnc2hhcmVkLXV0aWxzLmpzJykpO1xuXG4gICAgLy8gSW5jbHVkZSByZXF1aXJlZCBjaGVjayBtb2R1bGVzXG4gICAgY29uc3QgY2hlY2tzOiBzdHJpbmdbXSA9IFtdO1xuXG4gICAgaWYgKGV4dGVuc2lvbnMuaW5jbHVkZXMoRXh0ZW5zaW9uLlJFV1JJVEVfVE9fSU5ERVhfSFRNTCkpIHtcbiAgICAgIHBhcnRzLnB1c2godGhpcy5sb2FkTW9kdWxlKCd1cmwtcmV3cml0ZS5qcycpKTtcbiAgICAgIGNoZWNrcy5wdXNoKCdyZXdyaXRlJyk7XG4gICAgfVxuXG4gICAgaWYgKGV4dGVuc2lvbnMuaW5jbHVkZXMoRXh0ZW5zaW9uLlJFUVVJUkVfVExTXzEzKSkge1xuICAgICAgcGFydHMucHVzaCh0aGlzLmxvYWRNb2R1bGUoJ3Rscy1jaGVjay5qcycpKTtcbiAgICAgIGNoZWNrcy5wdXNoKCd0bHMnKTtcbiAgICB9XG5cbiAgICBpZiAoZXh0ZW5zaW9ucy5pbmNsdWRlcyhFeHRlbnNpb24uUkVRVUlSRV9BVVRIKSkge1xuICAgICAgLy8gQ3VzdG9tLVVJIG1vZGUgdXNlcyB0aGUgc2hhcmVkIGF1dGgtY2hlY2sgbW9kdWxlIChoZWFkZXIgaW5qZWN0aW9uICtcbiAgICAgIC8vIHJlZnJlc2ggY2FwYWJsZSkgd2l0aCBhIGZpcnN0LXBhcnR5IC9sb2dpbiByZWRpcmVjdCwgZXZlbiB0aG91Z2ggdGhlXG4gICAgICAvLyBpZGVudGl0eSBwcm92aWRlciBpcyBDb2duaXRvLlxuICAgICAgY29uc3QgaXNDdXN0b21VaSA9IGNvbXBvc2VyQ29uZmlnPy5sb2dpblJlZGlyZWN0UGF0aCAhPT0gdW5kZWZpbmVkICYmIGNvbXBvc2VyQ29uZmlnLmxvZ2luUmVkaXJlY3RQYXRoICE9PSAnJztcbiAgICAgIGNvbnN0IGlzQ29nbml0byA9IGNvbXBvc2VyQ29uZmlnPy5jb2duaXRvRG9tYWluICE9PSB1bmRlZmluZWQgJiYgIWlzQ3VzdG9tVWk7XG4gICAgICBsZXQgYXV0aE1vZHVsZSA9IHRoaXMubG9hZE1vZHVsZShpc0NvZ25pdG8gPyAnY29nbml0by1hdXRoLWNoZWNrLmpzJyA6ICdhdXRoLWNoZWNrLmpzJyk7XG4gICAgICBpZiAoY29tcG9zZXJDb25maWcpIHtcbiAgICAgICAgaWYgKGNvbXBvc2VyQ29uZmlnLmNvZ25pdG9Eb21haW4pIHtcbiAgICAgICAgICBhdXRoTW9kdWxlID0gYXV0aE1vZHVsZS5yZXBsYWNlKC9DT0dOSVRPX0RPTUFJTl9QTEFDRUhPTERFUi9nLCBjb21wb3NlckNvbmZpZy5jb2duaXRvRG9tYWluKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY29tcG9zZXJDb25maWcudGVuYW50SWQpIHtcbiAgICAgICAgICBhdXRoTW9kdWxlID0gYXV0aE1vZHVsZS5yZXBsYWNlKC9URU5BTlRfSURfUExBQ0VIT0xERVIvZywgY29tcG9zZXJDb25maWcudGVuYW50SWQpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjb21wb3NlckNvbmZpZy5jbGllbnRJZCkge1xuICAgICAgICAgIGF1dGhNb2R1bGUgPSBhdXRoTW9kdWxlLnJlcGxhY2UoL0NMSUVOVF9JRF9QTEFDRUhPTERFUi9nLCBjb21wb3NlckNvbmZpZy5jbGllbnRJZCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNvbXBvc2VyQ29uZmlnLnJlZGlyZWN0VXJpKSB7XG4gICAgICAgICAgYXV0aE1vZHVsZSA9IGF1dGhNb2R1bGUucmVwbGFjZSgvUkVESVJFQ1RfVVJJX1BMQUNFSE9MREVSL2csIGNvbXBvc2VyQ29uZmlnLnJlZGlyZWN0VXJpKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY29tcG9zZXJDb25maWcuY29va2llRG9tYWluICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBhdXRoTW9kdWxlID0gYXV0aE1vZHVsZS5yZXBsYWNlKC9DT09LSUVfRE9NQUlOX1BMQUNFSE9MREVSL2csIGNvbXBvc2VyQ29uZmlnLmNvb2tpZURvbWFpbik7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBIZWFkZXIgaW5qZWN0aW9uIHBsYWNlaG9sZGVyc1xuICAgICAgICBjb25zdCBlbmFibGVIZWFkZXJJbmplY3Rpb24gPSBjb21wb3NlckNvbmZpZy5lbmFibGVIZWFkZXJJbmplY3Rpb24gPz8gZmFsc2U7XG4gICAgICAgIGF1dGhNb2R1bGUgPSBhdXRoTW9kdWxlLnJlcGxhY2UoL0VOQUJMRV9IRUFERVJfSU5KRUNUSU9OX1BMQUNFSE9MREVSL2csIFN0cmluZyhlbmFibGVIZWFkZXJJbmplY3Rpb24pKTtcblxuICAgICAgICBpZiAoZW5hYmxlSGVhZGVySW5qZWN0aW9uICYmIGNvbXBvc2VyQ29uZmlnLmhlYWRlckluamVjdGlvbkNsYWltcykge1xuICAgICAgICAgIGNvbnN0IG1hcCA9IGNvbXBvc2VyQ29uZmlnLmhlYWRlckluamVjdGlvbkNsYWltcztcbiAgICAgICAgICBhdXRoTW9kdWxlID0gYXV0aE1vZHVsZS5yZXBsYWNlKC9IRUFERVJfSU5KRUNUSU9OX01BUF9QTEFDRUhPTERFUi9nLCBKU09OLnN0cmluZ2lmeShtYXApKTtcbiAgICAgICAgICBhdXRoTW9kdWxlID0gYXV0aE1vZHVsZS5yZXBsYWNlKC9IRUFERVJfSU5KRUNUSU9OX0tFWVNfUExBQ0VIT0xERVIvZywgSlNPTi5zdHJpbmdpZnkoT2JqZWN0LmtleXMobWFwKSkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGF1dGhNb2R1bGUgPSBhdXRoTW9kdWxlLnJlcGxhY2UoL0hFQURFUl9JTkpFQ1RJT05fTUFQX1BMQUNFSE9MREVSL2csICd7fScpO1xuICAgICAgICAgIGF1dGhNb2R1bGUgPSBhdXRoTW9kdWxlLnJlcGxhY2UoL0hFQURFUl9JTkpFQ1RJT05fS0VZU19QTEFDRUhPTERFUi9nLCAnW10nKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFJlZnJlc2ggcmVkaXJlY3QgcGxhY2Vob2xkZXJcbiAgICAgICAgY29uc3QgZW5hYmxlUmVmcmVzaCA9IGNvbXBvc2VyQ29uZmlnLmVuYWJsZVJlZnJlc2ggPz8gZmFsc2U7XG4gICAgICAgIGF1dGhNb2R1bGUgPSBhdXRoTW9kdWxlLnJlcGxhY2UoL0VOQUJMRV9SRUZSRVNIX1BMQUNFSE9MREVSL2csIFN0cmluZyhlbmFibGVSZWZyZXNoKSk7XG5cbiAgICAgICAgLy8gQ3VzdG9tLVVJIGxvZ2luLXJlZGlyZWN0IHBsYWNlaG9sZGVyIChlbXB0eSBzdHJpbmcgPT4gSWRQLXJlZGlyZWN0IG1vZGUpXG4gICAgICAgIGF1dGhNb2R1bGUgPSBhdXRoTW9kdWxlLnJlcGxhY2UoL0xPR0lOX1JFRElSRUNUX1BBVEhfUExBQ0VIT0xERVIvZywgY29tcG9zZXJDb25maWcubG9naW5SZWRpcmVjdFBhdGggPz8gJycpO1xuICAgICAgfVxuICAgICAgcGFydHMucHVzaChhdXRoTW9kdWxlKTtcbiAgICAgIGNoZWNrcy5wdXNoKCdhdXRoJyk7XG4gICAgfVxuXG4gICAgLy8gR2VuZXJhdGUgaGFuZGxlciBmdW5jdGlvblxuICAgIHBhcnRzLnB1c2godGhpcy5nZW5lcmF0ZUhhbmRsZXIoY2hlY2tzLCBjb25maWcsIGNvbXBvc2VyQ29uZmlnKSk7XG5cbiAgICBsZXQgYXNzZW1ibGVkID0gcGFydHMuam9pbignXFxuXFxuJyk7XG5cbiAgICAvLyBFeHRyYWN0IHRoZSBDbG91ZEZyb250LXNwZWNpZmljIGltcG9ydCAodGVyc2VyIGNhbid0IHBhcnNlIEVTIG1vZHVsZSBpbXBvcnRzIGluIHNjcmlwdCBtb2RlKS5cbiAgICAvLyBXZSdsbCBwcmVwZW5kIGl0IGJhY2sgYWZ0ZXIgbWluaWZpY2F0aW9uLlxuICAgIGNvbnN0IGNmSW1wb3J0ID0gXCJpbXBvcnQgY2YgZnJvbSAnY2xvdWRmcm9udCc7XFxuXCI7XG4gICAgYXNzZW1ibGVkID0gYXNzZW1ibGVkLnJlcGxhY2UoL2ltcG9ydCBjZiBmcm9tICdjbG91ZGZyb250JztcXHMqL2csICcnKTtcblxuICAgIC8vIEFsc28gZXh0cmFjdCBgdmFyIGNyeXB0byA9IHJlcXVpcmUoJ2NyeXB0bycpO2Ag4oCUIHRlcnNlciBoYW5kbGVzIGl0IGZpbmUgYnV0XG4gICAgLy8gQ2xvdWRGcm9udCBGdW5jdGlvbnMgbmVlZCBpdCBhdCB0aGUgdG9wIGxldmVsLlxuICAgIGNvbnN0IGNyeXB0b1JlcXVpcmUgPSBcInZhciBjcnlwdG8gPSByZXF1aXJlKCdjcnlwdG8nKTtcXG5cIjtcbiAgICBhc3NlbWJsZWQgPSBhc3NlbWJsZWQucmVwbGFjZSgvdmFyIGNyeXB0byA9IHJlcXVpcmVcXCgnY3J5cHRvJ1xcKTtcXHMqL2csICcnKTtcblxuICAgIC8vIEV4dHJhY3QgS1ZTIGhhbmRsZSBkZWNsYXJhdGlvbiAoZGVwZW5kcyBvbiBjZiBpbXBvcnQpXG4gICAgY29uc3Qga3ZzRGVjbCA9ICdjb25zdCBrdnNIYW5kbGUgPSBjZi5rdnMoKTtcXG4nO1xuICAgIGFzc2VtYmxlZCA9IGFzc2VtYmxlZC5yZXBsYWNlKC9jb25zdCBrdnNIYW5kbGUgPSBjZlxcLmt2c1xcKFxcKTtcXHMqL2csICcnKTtcblxuICAgIC8vIE1pbmlmeSB3aXRoIHRlcnNlciB0byBzdGF5IHdlbGwgdW5kZXIgdGhlIDEwS0IgQ2xvdWRGcm9udCBGdW5jdGlvbiBsaW1pdC5cbiAgICBjb25zdCBtaW5pZmllZCA9IG1pbmlmeV9zeW5jKGFzc2VtYmxlZCwge1xuICAgICAgY29tcHJlc3M6IHtcbiAgICAgICAgZGVhZF9jb2RlOiB0cnVlLFxuICAgICAgICBkcm9wX2NvbnNvbGU6IGZhbHNlLFxuICAgICAgICBwYXNzZXM6IDIsXG4gICAgICB9LFxuICAgICAgbWFuZ2xlOiB7XG4gICAgICAgIHJlc2VydmVkOiBbJ2hhbmRsZXInLCAnZXZlbnQnLCAna3ZzSGFuZGxlJ10sXG4gICAgICB9LFxuICAgICAgZm9ybWF0OiB7XG4gICAgICAgIGNvbW1lbnRzOiBmYWxzZSxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICAvLyBQcmVwZW5kIHRoZSBDbG91ZEZyb250LXNwZWNpZmljIHByZWFtYmxlIGJhY2tcbiAgICBjb25zdCBjb2RlID0gY2ZJbXBvcnQgKyBjcnlwdG9SZXF1aXJlICsga3ZzRGVjbCArIChtaW5pZmllZC5jb2RlIHx8IGFzc2VtYmxlZCk7XG4gICAgY29uc3Qgc2l6ZUtCID0gQnVmZmVyLmJ5dGVMZW5ndGgoY29kZSwgJ3V0Zi04JykgLyAxMDI0O1xuXG4gICAgaWYgKHNpemVLQiA+IDEwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYENsb3VkRnJvbnQgRnVuY3Rpb24gZXhjZWVkcyAxMEtCIGxpbWl0OiAke3NpemVLQi50b0ZpeGVkKDIpfUtCIChleHRlbnNpb25zOiAke2V4dGVuc2lvbnMuam9pbignLCAnKX0pYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNvZGU7XG4gIH1cblxuICBwcml2YXRlIGxvYWRNb2R1bGUoZmlsZW5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgZmlsZVBhdGggPSBwYXRoLmpvaW4odGhpcy5tb2R1bGVzRGlyLCBmaWxlbmFtZSk7XG4gICAgY29uc3QgY29udGVudCA9IGZzLnJlYWRGaWxlU3luYyhmaWxlUGF0aCwgJ3V0Zi04Jyk7XG5cbiAgICByZXR1cm4gY29udGVudFxuICAgICAgLnJlcGxhY2UoL1xcL1xcKltcXHNcXFNdKj9cXCpcXC8vZywgJycpIC8vIGJsb2NrIGNvbW1lbnRzXG4gICAgICAucmVwbGFjZSgvXlxccypcXC9cXC8uKiQvZ20sICcnKSAvLyBsaW5lIGNvbW1lbnRzICh3aG9sZS1saW5lIG9ubHkpXG4gICAgICAucmVwbGFjZSgvXlxccypcXG4vZ20sICcnKSAvLyBibGFuayBsaW5lc1xuICAgICAgLnJlcGxhY2UoL2Z1bmN0aW9uIGhhbmRsZXJcXChldmVudFxcKSBcXHtbXFxzXFxTXSo/XFxuXFx9L2csICcnKVxuICAgICAgLnJlcGxhY2UoL2FzeW5jIGZ1bmN0aW9uIGhhbmRsZXJcXChldmVudFxcKSBcXHtbXFxzXFxTXSo/XFxuXFx9L2csICcnKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2VuZXJhdGVIYW5kbGVyKGNoZWNrczogc3RyaW5nW10sIGNvbmZpZz86IEV4dGVuc2lvbkNvbmZpZywgY29tcG9zZXJDb25maWc/OiBDb21wb3NlckNvbmZpZyk6IHN0cmluZyB7XG4gICAgY29uc3QgaGFzQXV0aCA9IGNoZWNrcy5pbmNsdWRlcygnYXV0aCcpO1xuICAgIGNvbnN0IHJlcXVpcmVNZmEgPSBjb21wb3NlckNvbmZpZz8ucmVxdWlyZU1mYSA/PyBmYWxzZTtcbiAgICBjb25zdCBsaW5lczogc3RyaW5nW10gPSBbXG4gICAgICAnLy8gR2VuZXJhdGVkIGhhbmRsZXIgZnVuY3Rpb24nLFxuICAgICAgaGFzQXV0aCA/ICdhc3luYyBmdW5jdGlvbiBoYW5kbGVyKGV2ZW50KSB7JyA6ICdmdW5jdGlvbiBoYW5kbGVyKGV2ZW50KSB7JyxcbiAgICAgICcgIHZhciBkZWNvZGVkUGF5bG9hZCA9IG51bGw7JyxcbiAgICAgICcnLFxuICAgIF07XG5cbiAgICAvLyBBZGQgVExTIGNoZWNrXG4gICAgaWYgKGNoZWNrcy5pbmNsdWRlcygndGxzJykpIHtcbiAgICAgIGxpbmVzLnB1c2goXG4gICAgICAgICcgIC8vIFRMUyAxLjMgZW5mb3JjZW1lbnQnLFxuICAgICAgICAnICB2YXIgdGxzUmVzdWx0ID0gY2hlY2tUTFMoZXZlbnQpOycsXG4gICAgICAgICcgIGlmICh0bHNSZXN1bHQpIHJldHVybiB0bHNSZXN1bHQ7JyxcbiAgICAgICAgJycsXG4gICAgICApO1xuICAgIH1cblxuICAgIC8vIEFkZCBhdXRoIGNoZWNrICh3aXRoIG9wdGlvbmFsIHJvbGUgY2hlY2tpbmcgYnVpbHQtaW4pXG4gICAgaWYgKGhhc0F1dGgpIHtcbiAgICAgIGNvbnN0IHJlcXVpcmVkUm9sZXMgPSBjb25maWc/LnJlcXVpcmVkUm9sZXMgPyBjb25maWcucmVxdWlyZWRSb2xlcyA6IFtdO1xuICAgICAgY29uc3QgbWF0Y2hNb2RlID0gY29uZmlnPy5yb2xlTWF0Y2hNb2RlIHx8IFJvbGVNYXRjaE1vZGUuT1I7XG4gICAgICBjb25zdCByb2xlc0pzb24gPSBKU09OLnN0cmluZ2lmeShyZXF1aXJlZFJvbGVzKTtcblxuICAgICAgbGluZXMucHVzaChcbiAgICAgICAgJyAgLy8gQXV0aGVudGljYXRpb24gY2hlY2snLFxuICAgICAgICBgICB2YXIgcmVxdWlyZWRSb2xlcyA9ICR7cm9sZXNKc29ufTtgLFxuICAgICAgICBgICB2YXIgbWF0Y2hNb2RlID0gJyR7bWF0Y2hNb2RlfSc7YCxcbiAgICAgICAgJyAgdmFyIGF1dGhSZXN1bHQgPSBhd2FpdCBjaGVja0F1dGgoZXZlbnQsIGRlY29kZWRQYXlsb2FkLCByZXF1aXJlZFJvbGVzLCBtYXRjaE1vZGUpOycsXG4gICAgICAgICcgIGlmICghYXV0aFJlc3VsdC5wYXNzKSByZXR1cm4gYXV0aFJlc3VsdC5yZXNwb25zZTsnLFxuICAgICAgICAnICBkZWNvZGVkUGF5bG9hZCA9IGF1dGhSZXN1bHQucGF5bG9hZDsnLFxuICAgICAgICAnJyxcbiAgICAgICAgJyAgLy8gSW5qZWN0IEF6dXJlIEFEIEpXVCBmb3IgQXNzdW1lUm9sZVdpdGhXZWJJZGVudGl0eSAoQXp1cmUgb25seSknLFxuICAgICAgICAnICBpZiAodHlwZW9mIGluamVjdEF6dXJlVG9rZW4gPT09IFxcJ2Z1bmN0aW9uXFwnKSB7JyxcbiAgICAgICAgJyAgICBldmVudC5yZXF1ZXN0ID0gaW5qZWN0QXp1cmVUb2tlbihldmVudC5yZXF1ZXN0LCBldmVudC5yZXF1ZXN0LmNvb2tpZXMpOycsXG4gICAgICAgICcgIH0nLFxuICAgICAgICAnJyxcbiAgICAgICAgJyAgLy8gSW5qZWN0IGlkZW50aXR5IGNsYWltcyBhcyBoZWFkZXJzIGZvciBvcmlnaW4gKHdoZW4gZW5hYmxlZCknLFxuICAgICAgICAnICBpZiAodHlwZW9mIGluamVjdENsYWltc0hlYWRlcnMgPT09IFxcJ2Z1bmN0aW9uXFwnKSB7JyxcbiAgICAgICAgJyAgICBldmVudC5yZXF1ZXN0ID0gaW5qZWN0Q2xhaW1zSGVhZGVycyhldmVudC5yZXF1ZXN0LCBkZWNvZGVkUGF5bG9hZCk7JyxcbiAgICAgICAgJyAgfScsXG4gICAgICAgICcnLFxuICAgICAgKTtcblxuICAgICAgLy8gTUZBIGVuZm9yY2VtZW50IChkZWZlbmNlIGluIGRlcHRoKVxuICAgICAgaWYgKHJlcXVpcmVNZmEpIHtcbiAgICAgICAgbGluZXMucHVzaChcbiAgICAgICAgICAnICAvLyBNRkEgZW5mb3JjZW1lbnQnLFxuICAgICAgICAgICcgIGlmIChkZWNvZGVkUGF5bG9hZCkgeycsXG4gICAgICAgICAgJyAgICB2YXIgYW1yID0gZGVjb2RlZFBheWxvYWQuYW1yIHx8IFtdOycsXG4gICAgICAgICAgJyAgICBpZiAoYW1yLmluZGV4T2YoXFwnbWZhXFwnKSA9PT0gLTEpIHsnLFxuICAgICAgICAgICcgICAgICByZXR1cm4geycsXG4gICAgICAgICAgJyAgICAgICAgc3RhdHVzQ29kZTogNDAzLCcsXG4gICAgICAgICAgJyAgICAgICAgc3RhdHVzRGVzY3JpcHRpb246IFxcJ0ZvcmJpZGRlblxcJywnLFxuICAgICAgICAgICcgICAgICAgIGJvZHk6IFxcJ0FjY2VzcyBkZW5pZWQ6IE1GQSByZXF1aXJlZFxcJycsXG4gICAgICAgICAgJyAgICAgIH07JyxcbiAgICAgICAgICAnICAgIH0nLFxuICAgICAgICAgICcgIH0nLFxuICAgICAgICAgICcnLFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEFkZCBVUkwgcmV3cml0ZSBhZnRlciBhdXRoIHNvIG9yaWdpbmFsUGF0aCBpcyBzYXZlZCBjb3JyZWN0bHlcbiAgICBpZiAoY2hlY2tzLmluY2x1ZGVzKCdyZXdyaXRlJykpIHtcbiAgICAgIGxpbmVzLnB1c2goXG4gICAgICAgICcgIHJld3JpdGVUb0luZGV4KGV2ZW50KTsnLFxuICAgICAgICAnJyxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgbGluZXMucHVzaChcbiAgICAgICcgIC8vIEFsbCBjaGVja3MgcGFzc2VkJyxcbiAgICAgICcgIHJldHVybiBldmVudC5yZXF1ZXN0OycsXG4gICAgICAnfScsXG4gICAgKTtcblxuICAgIHJldHVybiBsaW5lcy5qb2luKCdcXG4nKTtcbiAgfVxufVxuIl19
|
|
218
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnVuY3Rpb24tY29tcG9zZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY2xvdWRmcm9udC9jbG91ZGZyb250LWZ1bmN0aW9ucy9mdW5jdGlvbi1jb21wb3Nlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUEyQ0EsZ0RBd0JDO0FBbkVELHVDQUF5QjtBQUN6QiwyQ0FBNkI7QUFDN0IsbUNBQXFDO0FBQ3JDLHFFQUEwRjtBQXVCMUY7Ozs7Ozs7Ozs7Ozs7Ozs7R0FnQkc7QUFDSCxTQUFnQixrQkFBa0IsQ0FBQyxNQUFjO0lBQy9DLE1BQU0sTUFBTSxHQUFHLElBQUEsb0JBQVcsRUFBQyxNQUFNLEVBQUU7UUFDakMsUUFBUSxFQUFFO1lBQ1IsU0FBUyxFQUFFLElBQUk7WUFDZixZQUFZLEVBQUUsS0FBSztZQUNuQixNQUFNLEVBQUUsQ0FBQztTQUNWO1FBQ0QsTUFBTSxFQUFFO1lBQ04sUUFBUSxFQUFFLENBQUMsU0FBUyxFQUFFLE9BQU8sRUFBRSxXQUFXLENBQUM7U0FDNUM7UUFDRCxNQUFNLEVBQUU7WUFDTixRQUFRLEVBQUUsS0FBSztTQUNoQjtLQUNGLENBQUMsQ0FBQztJQUVILDRFQUE0RTtJQUM1RSwwRUFBMEU7SUFDMUUsdUVBQXVFO0lBQ3ZFLElBQUksTUFBTSxDQUFDLElBQUksS0FBSyxTQUFTLEVBQUUsQ0FBQztRQUM5QixNQUFNLEdBQUcsR0FBSSxNQUE0QixDQUFDLEtBQUssQ0FBQztRQUNoRCxNQUFNLElBQUksS0FBSyxDQUFDLDRDQUE0QyxHQUFHLElBQUksMkJBQTJCLEVBQUUsQ0FBQyxDQUFDO0lBQ3BHLENBQUM7SUFFRCxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUM7QUFDckIsQ0FBQztBQUVEOzs7R0FHRztBQUNILE1BQWEsZ0JBQWdCO0lBRzNCO1FBQ0UsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFNB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WUFDNUQsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUVoRCxLQUFLLENBQUMsSUFBSSxDQUNSLDJCQUEyQixFQUMzQix5QkFBeUIsU0FBUyxHQUFHLEVBQ3JDLHNCQUFzQixTQUFTLElBQUksRUFDbkMsc0ZBQXNGLEVBQ3RGLHFEQUFxRCxFQUNyRCx3Q0FBd0MsRUFDeEMsRUFBRSxFQUNGLHFFQUFxRSxFQUNyRSxtREFBbUQsRUFDbkQsNkVBQTZFLEVBQzdFLEtBQUssRUFDTCxFQUFFLEVBQ0Ysa0VBQWtFLEVBQ2xFLHNEQUFzRCxFQUN0RCx5RUFBeUUsRUFDekUsS0FBSyxFQUNMLEVBQUUsQ0FDSCxDQUFDO1lBRUYscUNBQXFDO1lBQ3JDLElBQUksVUFBVSxFQUFFLENBQUM7Z0JBQ2YsS0FBSyxDQUFDLElBQUksQ0FDUixzQkFBc0IsRUFDdEIseUJBQXlCLEVBQ3pCLHlDQUF5QyxFQUN6Qyx3Q0FBd0MsRUFDeEMsZ0JBQWdCLEVBQ2hCLDBCQUEwQixFQUMxQiwyQ0FBMkMsRUFDM0MsK0NBQStDLEVBQy9DLFVBQVUsRUFDVixPQUFPLEVBQ1AsS0FBSyxFQUNMLEVBQUUsQ0FDSCxDQUFDO1lBQ0osQ0FBQztRQUNILENBQUM7UUFFRCxnRUFBZ0U7UUFDaEUsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7WUFDL0IsS0FBSyxDQUFDLElBQUksQ0FDUiwwQkFBMEIsRUFDMUIsRUFBRSxDQUNILENBQUM7UUFDSixDQUFDO1FBRUQsS0FBSyxDQUFDLElBQUksQ0FDUix3QkFBd0IsRUFDeEIseUJBQXlCLEVBQ3pCLEdBQUcsQ0FDSixDQUFDO1FBRUYsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzFCLENBQUM7Q0FDRjtBQTNNRCw0Q0EyTUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBmcyBmcm9tICdmcyc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgbWluaWZ5X3N5bmMgfSBmcm9tICd0ZXJzZXInO1xuaW1wb3J0IHsgRXh0ZW5zaW9uLCBFeHRlbnNpb25Db25maWcsIFJvbGVNYXRjaE1vZGUgfSBmcm9tICcuLi9wYXR0ZXJucy9zZWN1cmVkQ2xvdWRGcm9udCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcG9zZXJDb25maWcge1xuICByZWFkb25seSB0ZW5hbnRJZD86IHN0cmluZztcbiAgcmVhZG9ubHkgY29nbml0b0RvbWFpbj86IHN0cmluZztcbiAgcmVhZG9ubHkgY2xpZW50SWQ/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHJlZGlyZWN0VXJpPzogc3RyaW5nO1xuICByZWFkb25seSBjb29raWVEb21haW4/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHJlcXVpcmVNZmE/OiBib29sZWFuO1xuICAvKiogRW5hYmxlIGhlYWRlciBzdHJpcHBpbmcgYW5kIGluamVjdGlvbiBmcm9tIEpXVCBjbGFpbXMuIEBkZWZhdWx0IGZhbHNlICovXG4gIHJlYWRvbmx5IGVuYWJsZUhlYWRlckluamVjdGlvbj86IGJvb2xlYW47XG4gIC8qKiBNYXAgb2YgaGVhZGVyIG5hbWUg4oaSIEpXVCBjbGFpbSBrZXkuIGUuZy4geyAneC1jdXN0b21lci1pZCc6ICdjdXN0b21lcl9pZCcgfSAqL1xuICByZWFkb25seSBoZWFkZXJJbmplY3Rpb25DbGFpbXM/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuICAvKiogRW5hYmxlIHJlZnJlc2ggcmVkaXJlY3QgZm9yIGV4cGlyZWQtYnV0LXZhbGlkIHRva2Vucy4gQGRlZmF1bHQgZmFsc2UgKi9cbiAgcmVhZG9ubHkgZW5hYmxlUmVmcmVzaD86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBDdXN0b20tVUkgbW9kZTogZmlyc3QtcGFydHkgcGF0aCB0byByZWRpcmVjdCB1bmF1dGhlbnRpY2F0ZWQgdXNlcnMgdG9cbiAgICogKGUuZy4gJy9sb2dpbicpLiBXaGVuIHNldCwgdGhlIHNoYXJlZCBhdXRoLWNoZWNrIG1vZHVsZSBpcyB1c2VkIHdpdGggYVxuICAgKiByZWxhdGl2ZSByZWRpcmVjdCBpbnN0ZWFkIG9mIGFuIGV4dGVybmFsIElkUCBhdXRob3JpemUgVVJMLlxuICAgKi9cbiAgcmVhZG9ubHkgbG9naW5SZWRpcmVjdFBhdGg/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogTWluaWZ5IENsb3VkRnJvbnQgRnVuY3Rpb24gc291cmNlIHdpdGggdGVyc2VyLlxuICpcbiAqIENsb3VkRnJvbnQgRnVuY3Rpb25zIGhhdmUgYSBoYXJkIDEwS0IgY29kZS1zaXplIGxpbWl0LiBCb3RoIHRoZSBjb21wb3NlZFxuICogKG11bHRpLW1vZHVsZSkgcGF0aCBhbmQgdGhlIHN0YW5kYWxvbmUgYXV0aC1jaGVjayBwYXRoIG11c3QgbWluaWZ5LCB1c2luZ1xuICogdGhlIFNBTUUgb3B0aW9ucywgc28gYSBmdW5jdGlvbiB0aGF0IGZpdHMgaW4gb25lIHBhdGggZml0cyBpbiB0aGUgb3RoZXIuXG4gKlxuICogYG1pbmlmeV9zeW5jYCB0aHJvd3Mgb24gYSBwYXJzZSBlcnJvciBhbmQsIGluIGl0cyBkb2N1bWVudGVkIGZhaWx1cmUgbW9kZSxcbiAqIGNhbiByZXR1cm4gYHsgZXJyb3IgfWAgd2l0aCBubyBgY29kZWAuIEFuIGVhcmxpZXIgYG1pbmlmaWVkLmNvZGUgfHwgYXNzZW1ibGVkYFxuICogZmFsbGJhY2sgY2F1Z2h0IHRoYXQgc2Vjb25kIGNhc2UgYW5kIHNpbGVudGx5IHNoaXBwZWQgdGhlIFVOLW1pbmlmaWVkIHNvdXJjZSxcbiAqIHdoaWNoIGlzIGhvdyBhbiAxMUtCIGZ1bmN0aW9uIHJlYWNoZWQgQ2xvdWRGcm9udCBhbmQgNDEzJ2QgYXQgZGVwbG95LiBUaGlzXG4gKiBoZWxwZXIgbmV2ZXIgZmFsbHMgYmFjazogYSB0aHJvd24gZXJyb3IgcHJvcGFnYXRlcywgYW5kIGEgbWlzc2luZyBgY29kZWAgaXNcbiAqIHR1cm5lZCBpbnRvIGEgdGhyb3duIGVycm9yIHRvbyDigJQgYSBtaW5pZnkgZmFpbHVyZSBpcyBhbHdheXMgYSBidWlsZCBlcnJvci5cbiAqXG4gKiBUaGUgYHJlc2VydmVkYCBuYW1lcyBhcmUgdGhlIENsb3VkRnJvbnQtcmVxdWlyZWQgdG9wLWxldmVsIGlkZW50aWZpZXJzIHRoYXRcbiAqIG11c3Qgc3Vydml2ZSBtYW5nbGluZy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1pbmlmeUZ1bmN0aW9uQ29kZShzb3VyY2U6IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IHJlc3VsdCA9IG1pbmlmeV9zeW5jKHNvdXJjZSwge1xuICAgIGNvbXByZXNzOiB7XG4gICAgICBkZWFkX2NvZGU6IHRydWUsXG4gICAgICBkcm9wX2NvbnNvbGU6IGZhbHNlLFxuICAgICAgcGFzc2VzOiAyLFxuICAgIH0sXG4gICAgbWFuZ2xlOiB7XG4gICAgICByZXNlcnZlZDogWydoYW5kbGVyJywgJ2V2ZW50JywgJ2t2c0hhbmRsZSddLFxuICAgIH0sXG4gICAgZm9ybWF0OiB7XG4gICAgICBjb21tZW50czogZmFsc2UsXG4gICAgfSxcbiAgfSk7XG5cbiAgLy8gYG1pbmlmeV9zeW5jYCByZXR1cm5zIGB7IGVycm9yIH1gIChub3QgdHlwZWQgYnkgQHR5cGVzL3RlcnNlcikgaW5zdGVhZCBvZlxuICAvLyB0aHJvd2luZzsgYGNvZGVgIGlzIHVuZGVmaW5lZCBvbiBmYWlsdXJlLiBUcmVhdCBhIG1pc3NpbmcgYGNvZGVgIGFzIHRoZVxuICAvLyBmYWlsdXJlIHNpZ25hbCBhbmQgc3VyZmFjZSB0aGUgcnVudGltZSBlcnJvciBpZiB0ZXJzZXIgYXR0YWNoZWQgb25lLlxuICBpZiAocmVzdWx0LmNvZGUgPT09IHVuZGVmaW5lZCkge1xuICAgIGNvbnN0IGVyciA9IChyZXN1bHQgYXMgeyBlcnJvcj86IEVycm9yIH0pLmVycm9yO1xuICAgIHRocm93IG5ldyBFcnJvcihgQ2xvdWRGcm9udCBGdW5jdGlvbiBtaW5pZmljYXRpb24gZmFpbGVkOiAke2VyciA/PyAndGVyc2VyIHByb2R1Y2VkIG5vIG91dHB1dCd9YCk7XG4gIH1cblxuICByZXR1cm4gcmVzdWx0LmNvZGU7XG59XG5cbi8qKlxuICogR2VuZXJhdGVzIGEgY29tYmluZWQgQ2xvdWRGcm9udCBGdW5jdGlvbiBmcm9tIG1vZHVsYXIgY2hlY2sgZnVuY3Rpb25zXG4gKiBiYXNlZCBvbiByZXF1ZXN0ZWQgZXh0ZW5zaW9uc1xuICovXG5leHBvcnQgY2xhc3MgRnVuY3Rpb25Db21wb3NlciB7XG4gIHByaXZhdGUgcmVhZG9ubHkgbW9kdWxlc0Rpcjogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMubW9kdWxlc0RpciA9IHBhdGguam9pbihfX2Rpcm5hbWUsICdtb2R1bGVzJyk7XG4gIH1cblxuICAvKipcbiAgICogR2VuZXJhdGUgY29tYmluZWQgZnVuY3Rpb24gY29kZSBiYXNlZCBvbiByZXF1ZXN0ZWQgZXh0ZW5zaW9uc1xuICAgKi9cbiAgcHVibGljIGNvbXBvc2UoZXh0ZW5zaW9uczogRXh0ZW5zaW9uW10sIGNvbmZpZz86IEV4dGVuc2lvbkNvbmZpZywgY29tcG9zZXJDb25maWc/OiBDb21wb3NlckNvbmZpZyk6IHN0cmluZyB7XG4gICAgY29uc3QgcGFydHM6IHN0cmluZ1tdID0gW107XG5cbiAgICAvLyBBbHdheXMgaW5jbHVkZSBzaGFyZWQgdXRpbGl0aWVzXG4gICAgcGFydHMucHVzaCh0aGlzLmxvYWRNb2R1bGUoJ3NoYXJlZC11dGlscy5qcycpKTtcblxuICAgIC8vIEluY2x1ZGUgcmVxdWlyZWQgY2hlY2sgbW9kdWxlc1xuICAgIGNvbnN0IGNoZWNrczogc3RyaW5nW10gPSBbXTtcblxuICAgIGlmIChleHRlbnNpb25zLmluY2x1ZGVzKEV4dGVuc2lvbi5SRVdSSVRFX1RPX0lOREVYX0hUTUwpKSB7XG4gICAgICBwYXJ0cy5wdXNoKHRoaXMubG9hZE1vZHVsZSgndXJsLXJld3JpdGUuanMnKSk7XG4gICAgICBjaGVja3MucHVzaCgncmV3cml0ZScpO1xuICAgIH1cblxuICAgIGlmIChleHRlbnNpb25zLmluY2x1ZGVzKEV4dGVuc2lvbi5SRVFVSVJFX1RMU18xMykpIHtcbiAgICAgIHBhcnRzLnB1c2godGhpcy5sb2FkTW9kdWxlKCd0bHMtY2hlY2suanMnKSk7XG4gICAgICBjaGVja3MucHVzaCgndGxzJyk7XG4gICAgfVxuXG4gICAgaWYgKGV4dGVuc2lvbnMuaW5jbHVkZXMoRXh0ZW5zaW9uLlJFUVVJUkVfQVVUSCkpIHtcbiAgICAgIC8vIEN1c3RvbS1VSSBtb2RlIHVzZXMgdGhlIHNoYXJlZCBhdXRoLWNoZWNrIG1vZHVsZSAoaGVhZGVyIGluamVjdGlvbiArXG4gICAgICAvLyByZWZyZXNoIGNhcGFibGUpIHdpdGggYSBmaXJzdC1wYXJ0eSAvbG9naW4gcmVkaXJlY3QsIGV2ZW4gdGhvdWdoIHRoZVxuICAgICAgLy8gaWRlbnRpdHkgcHJvdmlkZXIgaXMgQ29nbml0by5cbiAgICAgIGNvbnN0IGlzQ3VzdG9tVWkgPSBjb21wb3NlckNvbmZpZz8ubG9naW5SZWRpcmVjdFBhdGggIT09IHVuZGVmaW5lZCAmJiBjb21wb3NlckNvbmZpZy5sb2dpblJlZGlyZWN0UGF0aCAhPT0gJyc7XG4gICAgICBjb25zdCBpc0NvZ25pdG8gPSBjb21wb3NlckNvbmZpZz8uY29nbml0b0RvbWFpbiAhPT0gdW5kZWZpbmVkICYmICFpc0N1c3RvbVVpO1xuICAgICAgbGV0IGF1dGhNb2R1bGUgPSB0aGlzLmxvYWRNb2R1bGUoaXNDb2duaXRvID8gJ2NvZ25pdG8tYXV0aC1jaGVjay5qcycgOiAnYXV0aC1jaGVjay5qcycpO1xuICAgICAgaWYgKGNvbXBvc2VyQ29uZmlnKSB7XG4gICAgICAgIGlmIChjb21wb3NlckNvbmZpZy5jb2duaXRvRG9tYWluKSB7XG4gICAgICAgICAgYXV0aE1vZHVsZSA9IGF1dGhNb2R1bGUucmVwbGFjZSgvQ09HTklUT19ET01BSU5fUExBQ0VIT0xERVIvZywgY29tcG9zZXJDb25maWcuY29nbml0b0RvbWFpbik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNvbXBvc2VyQ29uZmlnLnRlbmFudElkKSB7XG4gICAgICAgICAgYXV0aE1vZHVsZSA9IGF1dGhNb2R1bGUucmVwbGFjZSgvVEVOQU5UX0lEX1BMQUNFSE9MREVSL2csIGNvbXBvc2VyQ29uZmlnLnRlbmFudElkKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY29tcG9zZXJDb25maWcuY2xpZW50SWQpIHtcbiAgICAgICAgICBhdXRoTW9kdWxlID0gYXV0aE1vZHVsZS5yZXBsYWNlKC9DTElFTlRfSURfUExBQ0VIT0xERVIvZywgY29tcG9zZXJDb25maWcuY2xpZW50SWQpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjb21wb3NlckNvbmZpZy5yZWRpcmVjdFVyaSkge1xuICAgICAgICAgIGF1dGhNb2R1bGUgPSBhdXRoTW9kdWxlLnJlcGxhY2UoL1JFRElSRUNUX1VSSV9QTEFDRUhPTERFUi9nLCBjb21wb3NlckNvbmZpZy5yZWRpcmVjdFVyaSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNvbXBvc2VyQ29uZmlnLmNvb2tpZURvbWFpbiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgYXV0aE1vZHVsZSA9IGF1dGhNb2R1bGUucmVwbGFjZSgvQ09PS0lFX0RPTUFJTl9QTEFDRUhPTERFUi9nLCBjb21wb3NlckNvbmZpZy5jb29raWVEb21haW4pO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gSGVhZGVyIGluamVjdGlvbiBwbGFjZWhvbGRlcnNcbiAgICAgICAgY29uc3QgZW5hYmxlSGVhZGVySW5qZWN0aW9uID0gY29tcG9zZXJDb25maWcuZW5hYmxlSGVhZGVySW5qZWN0aW9uID8/IGZhbHNlO1xuICAgICAgICBhdXRoTW9kdWxlID0gYXV0aE1vZHVsZS5yZXBsYWNlKC9FTkFCTEVfSEVBREVSX0lOSkVDVElPTl9QTEFDRUhPTERFUi9nLCBTdHJpbmcoZW5hYmxlSGVhZGVySW5qZWN0aW9uKSk7XG5cbiAgICAgICAgaWYgKGVuYWJsZUhlYWRlckluamVjdGlvbiAmJiBjb21wb3NlckNvbmZpZy5oZWFkZXJJbmplY3Rpb25DbGFpbXMpIHtcbiAgICAgICAgICBjb25zdCBtYXAgPSBjb21wb3NlckNvbmZpZy5oZWFkZXJJbmplY3Rpb25DbGFpbXM7XG4gICAgICAgICAgYXV0aE1vZHVsZSA9IGF1dGhNb2R1bGUucmVwbGFjZSgvSEVBREVSX0lOSkVDVElPTl9NQVBfUExBQ0VIT0xERVIvZywgSlNPTi5zdHJpbmdpZnkobWFwKSk7XG4gICAgICAgICAgYXV0aE1vZHVsZSA9IGF1dGhNb2R1bGUucmVwbGFjZSgvSEVBREVSX0lOSkVDVElPTl9LRVlTX1BMQUNFSE9MREVSL2csIEpTT04uc3RyaW5naWZ5KE9iamVjdC5rZXlzKG1hcCkpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBhdXRoTW9kdWxlID0gYXV0aE1vZHVsZS5yZXBsYWNlKC9IRUFERVJfSU5KRUNUSU9OX01BUF9QTEFDRUhPTERFUi9nLCAne30nKTtcbiAgICAgICAgICBhdXRoTW9kdWxlID0gYXV0aE1vZHVsZS5yZXBsYWNlKC9IRUFERVJfSU5KRUNUSU9OX0tFWVNfUExBQ0VIT0xERVIvZywgJ1tdJyk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBSZWZyZXNoIHJlZGlyZWN0IHBsYWNlaG9sZGVyXG4gICAgICAgIGNvbnN0IGVuYWJsZVJlZnJlc2ggPSBjb21wb3NlckNvbmZpZy5lbmFibGVSZWZyZXNoID8/IGZhbHNlO1xuICAgICAgICBhdXRoTW9kdWxlID0gYXV0aE1vZHVsZS5yZXBsYWNlKC9FTkFCTEVfUkVGUkVTSF9QTEFDRUhPTERFUi9nLCBTdHJpbmcoZW5hYmxlUmVmcmVzaCkpO1xuXG4gICAgICAgIC8vIEN1c3RvbS1VSSBsb2dpbi1yZWRpcmVjdCBwbGFjZWhvbGRlciAoZW1wdHkgc3RyaW5nID0+IElkUC1yZWRpcmVjdCBtb2RlKVxuICAgICAgICBhdXRoTW9kdWxlID0gYXV0aE1vZHVsZS5yZXBsYWNlKC9MT0dJTl9SRURJUkVDVF9QQVRIX1BMQUNFSE9MREVSL2csIGNvbXBvc2VyQ29uZmlnLmxvZ2luUmVkaXJlY3RQYXRoID8/ICcnKTtcbiAgICAgIH1cbiAgICAgIHBhcnRzLnB1c2goYXV0aE1vZHVsZSk7XG4gICAgICBjaGVja3MucHVzaCgnYXV0aCcpO1xuICAgIH1cblxuICAgIC8vIEdlbmVyYXRlIGhhbmRsZXIgZnVuY3Rpb25cbiAgICBwYXJ0cy5wdXNoKHRoaXMuZ2VuZXJhdGVIYW5kbGVyKGNoZWNrcywgY29uZmlnLCBjb21wb3NlckNvbmZpZykpO1xuXG4gICAgbGV0IGFzc2VtYmxlZCA9IHBhcnRzLmpvaW4oJ1xcblxcbicpO1xuXG4gICAgLy8gRXh0cmFjdCB0aGUgQ2xvdWRGcm9udC1zcGVjaWZpYyBpbXBvcnQgKHRlcnNlciBjYW4ndCBwYXJzZSBFUyBtb2R1bGUgaW1wb3J0cyBpbiBzY3JpcHQgbW9kZSkuXG4gICAgLy8gV2UnbGwgcHJlcGVuZCBpdCBiYWNrIGFmdGVyIG1pbmlmaWNhdGlvbi5cbiAgICBjb25zdCBjZkltcG9ydCA9IFwiaW1wb3J0IGNmIGZyb20gJ2Nsb3VkZnJvbnQnO1xcblwiO1xuICAgIGFzc2VtYmxlZCA9IGFzc2VtYmxlZC5yZXBsYWNlKC9pbXBvcnQgY2YgZnJvbSAnY2xvdWRmcm9udCc7XFxzKi9nLCAnJyk7XG5cbiAgICAvLyBBbHNvIGV4dHJhY3QgYHZhciBjcnlwdG8gPSByZXF1aXJlKCdjcnlwdG8nKTtgIOKAlCB0ZXJzZXIgaGFuZGxlcyBpdCBmaW5lIGJ1dFxuICAgIC8vIENsb3VkRnJvbnQgRnVuY3Rpb25zIG5lZWQgaXQgYXQgdGhlIHRvcCBsZXZlbC5cbiAgICBjb25zdCBjcnlwdG9SZXF1aXJlID0gXCJ2YXIgY3J5cHRvID0gcmVxdWlyZSgnY3J5cHRvJyk7XFxuXCI7XG4gICAgYXNzZW1ibGVkID0gYXNzZW1ibGVkLnJlcGxhY2UoL3ZhciBjcnlwdG8gPSByZXF1aXJlXFwoJ2NyeXB0bydcXCk7XFxzKi9nLCAnJyk7XG5cbiAgICAvLyBFeHRyYWN0IEtWUyBoYW5kbGUgZGVjbGFyYXRpb24gKGRlcGVuZHMgb24gY2YgaW1wb3J0KVxuICAgIGNvbnN0IGt2c0RlY2wgPSAnY29uc3Qga3ZzSGFuZGxlID0gY2Yua3ZzKCk7XFxuJztcbiAgICBhc3NlbWJsZWQgPSBhc3NlbWJsZWQucmVwbGFjZSgvY29uc3Qga3ZzSGFuZGxlID0gY2ZcXC5rdnNcXChcXCk7XFxzKi9nLCAnJyk7XG5cbiAgICAvLyBNaW5pZnkgd2l0aCB0ZXJzZXIgdG8gc3RheSB3ZWxsIHVuZGVyIHRoZSAxMEtCIENsb3VkRnJvbnQgRnVuY3Rpb24gbGltaXQuXG4gICAgY29uc3QgbWluaWZpZWQgPSBtaW5pZnlGdW5jdGlvbkNvZGUoYXNzZW1ibGVkKTtcblxuICAgIC8vIFByZXBlbmQgdGhlIENsb3VkRnJvbnQtc3BlY2lmaWMgcHJlYW1ibGUgYmFja1xuICAgIGNvbnN0IGNvZGUgPSBjZkltcG9ydCArIGNyeXB0b1JlcXVpcmUgKyBrdnNEZWNsICsgbWluaWZpZWQ7XG4gICAgY29uc3Qgc2l6ZUtCID0gQnVmZmVyLmJ5dGVMZW5ndGgoY29kZSwgJ3V0Zi04JykgLyAxMDI0O1xuXG4gICAgaWYgKHNpemVLQiA+IDEwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYENsb3VkRnJvbnQgRnVuY3Rpb24gZXhjZWVkcyAxMEtCIGxpbWl0OiAke3NpemVLQi50b0ZpeGVkKDIpfUtCIChleHRlbnNpb25zOiAke2V4dGVuc2lvbnMuam9pbignLCAnKX0pYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNvZGU7XG4gIH1cblxuICBwcml2YXRlIGxvYWRNb2R1bGUoZmlsZW5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgZmlsZVBhdGggPSBwYXRoLmpvaW4odGhpcy5tb2R1bGVzRGlyLCBmaWxlbmFtZSk7XG4gICAgY29uc3QgY29udGVudCA9IGZzLnJlYWRGaWxlU3luYyhmaWxlUGF0aCwgJ3V0Zi04Jyk7XG5cbiAgICByZXR1cm4gY29udGVudFxuICAgICAgLnJlcGxhY2UoL1xcL1xcKltcXHNcXFNdKj9cXCpcXC8vZywgJycpIC8vIGJsb2NrIGNvbW1lbnRzXG4gICAgICAucmVwbGFjZSgvXlxccypcXC9cXC8uKiQvZ20sICcnKSAvLyBsaW5lIGNvbW1lbnRzICh3aG9sZS1saW5lIG9ubHkpXG4gICAgICAucmVwbGFjZSgvXlxccypcXG4vZ20sICcnKSAvLyBibGFuayBsaW5lc1xuICAgICAgLnJlcGxhY2UoL2Z1bmN0aW9uIGhhbmRsZXJcXChldmVudFxcKSBcXHtbXFxzXFxTXSo/XFxuXFx9L2csICcnKVxuICAgICAgLnJlcGxhY2UoL2FzeW5jIGZ1bmN0aW9uIGhhbmRsZXJcXChldmVudFxcKSBcXHtbXFxzXFxTXSo/XFxuXFx9L2csICcnKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2VuZXJhdGVIYW5kbGVyKGNoZWNrczogc3RyaW5nW10sIGNvbmZpZz86IEV4dGVuc2lvbkNvbmZpZywgY29tcG9zZXJDb25maWc/OiBDb21wb3NlckNvbmZpZyk6IHN0cmluZyB7XG4gICAgY29uc3QgaGFzQXV0aCA9IGNoZWNrcy5pbmNsdWRlcygnYXV0aCcpO1xuICAgIGNvbnN0IHJlcXVpcmVNZmEgPSBjb21wb3NlckNvbmZpZz8ucmVxdWlyZU1mYSA/PyBmYWxzZTtcbiAgICBjb25zdCBsaW5lczogc3RyaW5nW10gPSBbXG4gICAgICAnLy8gR2VuZXJhdGVkIGhhbmRsZXIgZnVuY3Rpb24nLFxuICAgICAgaGFzQXV0aCA/ICdhc3luYyBmdW5jdGlvbiBoYW5kbGVyKGV2ZW50KSB7JyA6ICdmdW5jdGlvbiBoYW5kbGVyKGV2ZW50KSB7JyxcbiAgICAgICcgIHZhciBkZWNvZGVkUGF5bG9hZCA9IG51bGw7JyxcbiAgICAgICcnLFxuICAgIF07XG5cbiAgICAvLyBBZGQgVExTIGNoZWNrXG4gICAgaWYgKGNoZWNrcy5pbmNsdWRlcygndGxzJykpIHtcbiAgICAgIGxpbmVzLnB1c2goXG4gICAgICAgICcgIC8vIFRMUyAxLjMgZW5mb3JjZW1lbnQnLFxuICAgICAgICAnICB2YXIgdGxzUmVzdWx0ID0gY2hlY2tUTFMoZXZlbnQpOycsXG4gICAgICAgICcgIGlmICh0bHNSZXN1bHQpIHJldHVybiB0bHNSZXN1bHQ7JyxcbiAgICAgICAgJycsXG4gICAgICApO1xuICAgIH1cblxuICAgIC8vIEFkZCBhdXRoIGNoZWNrICh3aXRoIG9wdGlvbmFsIHJvbGUgY2hlY2tpbmcgYnVpbHQtaW4pXG4gICAgaWYgKGhhc0F1dGgpIHtcbiAgICAgIGNvbnN0IHJlcXVpcmVkUm9sZXMgPSBjb25maWc/LnJlcXVpcmVkUm9sZXMgPyBjb25maWcucmVxdWlyZWRSb2xlcyA6IFtdO1xuICAgICAgY29uc3QgbWF0Y2hNb2RlID0gY29uZmlnPy5yb2xlTWF0Y2hNb2RlIHx8IFJvbGVNYXRjaE1vZGUuT1I7XG4gICAgICBjb25zdCByb2xlc0pzb24gPSBKU09OLnN0cmluZ2lmeShyZXF1aXJlZFJvbGVzKTtcblxuICAgICAgbGluZXMucHVzaChcbiAgICAgICAgJyAgLy8gQXV0aGVudGljYXRpb24gY2hlY2snLFxuICAgICAgICBgICB2YXIgcmVxdWlyZWRSb2xlcyA9ICR7cm9sZXNKc29ufTtgLFxuICAgICAgICBgICB2YXIgbWF0Y2hNb2RlID0gJyR7bWF0Y2hNb2RlfSc7YCxcbiAgICAgICAgJyAgdmFyIGF1dGhSZXN1bHQgPSBhd2FpdCBjaGVja0F1dGgoZXZlbnQsIGRlY29kZWRQYXlsb2FkLCByZXF1aXJlZFJvbGVzLCBtYXRjaE1vZGUpOycsXG4gICAgICAgICcgIGlmICghYXV0aFJlc3VsdC5wYXNzKSByZXR1cm4gYXV0aFJlc3VsdC5yZXNwb25zZTsnLFxuICAgICAgICAnICBkZWNvZGVkUGF5bG9hZCA9IGF1dGhSZXN1bHQucGF5bG9hZDsnLFxuICAgICAgICAnJyxcbiAgICAgICAgJyAgLy8gSW5qZWN0IEF6dXJlIEFEIEpXVCBmb3IgQXNzdW1lUm9sZVdpdGhXZWJJZGVudGl0eSAoQXp1cmUgb25seSknLFxuICAgICAgICAnICBpZiAodHlwZW9mIGluamVjdEF6dXJlVG9rZW4gPT09IFxcJ2Z1bmN0aW9uXFwnKSB7JyxcbiAgICAgICAgJyAgICBldmVudC5yZXF1ZXN0ID0gaW5qZWN0QXp1cmVUb2tlbihldmVudC5yZXF1ZXN0LCBldmVudC5yZXF1ZXN0LmNvb2tpZXMpOycsXG4gICAgICAgICcgIH0nLFxuICAgICAgICAnJyxcbiAgICAgICAgJyAgLy8gSW5qZWN0IGlkZW50aXR5IGNsYWltcyBhcyBoZWFkZXJzIGZvciBvcmlnaW4gKHdoZW4gZW5hYmxlZCknLFxuICAgICAgICAnICBpZiAodHlwZW9mIGluamVjdENsYWltc0hlYWRlcnMgPT09IFxcJ2Z1bmN0aW9uXFwnKSB7JyxcbiAgICAgICAgJyAgICBldmVudC5yZXF1ZXN0ID0gaW5qZWN0Q2xhaW1zSGVhZGVycyhldmVudC5yZXF1ZXN0LCBkZWNvZGVkUGF5bG9hZCk7JyxcbiAgICAgICAgJyAgfScsXG4gICAgICAgICcnLFxuICAgICAgKTtcblxuICAgICAgLy8gTUZBIGVuZm9yY2VtZW50IChkZWZlbmNlIGluIGRlcHRoKVxuICAgICAgaWYgKHJlcXVpcmVNZmEpIHtcbiAgICAgICAgbGluZXMucHVzaChcbiAgICAgICAgICAnICAvLyBNRkEgZW5mb3JjZW1lbnQnLFxuICAgICAgICAgICcgIGlmIChkZWNvZGVkUGF5bG9hZCkgeycsXG4gICAgICAgICAgJyAgICB2YXIgYW1yID0gZGVjb2RlZFBheWxvYWQuYW1yIHx8IFtdOycsXG4gICAgICAgICAgJyAgICBpZiAoYW1yLmluZGV4T2YoXFwnbWZhXFwnKSA9PT0gLTEpIHsnLFxuICAgICAgICAgICcgICAgICByZXR1cm4geycsXG4gICAgICAgICAgJyAgICAgICAgc3RhdHVzQ29kZTogNDAzLCcsXG4gICAgICAgICAgJyAgICAgICAgc3RhdHVzRGVzY3JpcHRpb246IFxcJ0ZvcmJpZGRlblxcJywnLFxuICAgICAgICAgICcgICAgICAgIGJvZHk6IFxcJ0FjY2VzcyBkZW5pZWQ6IE1GQSByZXF1aXJlZFxcJycsXG4gICAgICAgICAgJyAgICAgIH07JyxcbiAgICAgICAgICAnICAgIH0nLFxuICAgICAgICAgICcgIH0nLFxuICAgICAgICAgICcnLFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEFkZCBVUkwgcmV3cml0ZSBhZnRlciBhdXRoIHNvIG9yaWdpbmFsUGF0aCBpcyBzYXZlZCBjb3JyZWN0bHlcbiAgICBpZiAoY2hlY2tzLmluY2x1ZGVzKCdyZXdyaXRlJykpIHtcbiAgICAgIGxpbmVzLnB1c2goXG4gICAgICAgICcgIHJld3JpdGVUb0luZGV4KGV2ZW50KTsnLFxuICAgICAgICAnJyxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgbGluZXMucHVzaChcbiAgICAgICcgIC8vIEFsbCBjaGVja3MgcGFzc2VkJyxcbiAgICAgICcgIHJldHVybiBldmVudC5yZXF1ZXN0OycsXG4gICAgICAnfScsXG4gICAgKTtcblxuICAgIHJldHVybiBsaW5lcy5qb2luKCdcXG4nKTtcbiAgfVxufVxuIl19
|
|
@@ -140,7 +140,33 @@ function getOriginalPath(request) {
|
|
|
140
140
|
return request.uri + '?' + qs;
|
|
141
141
|
}
|
|
142
142
|
|
|
143
|
-
|
|
143
|
+
// A live PKCE sign-in is represented by the pair of cookies (oauth_state +
|
|
144
|
+
// code_verifier) minted on the redirect that started it. The browser drops both
|
|
145
|
+
// at Max-Age=600, so their PRESENCE (with a well-formed, decodable state) is the
|
|
146
|
+
// practical "unexpired flow" signal available to a CloudFront Function — it has
|
|
147
|
+
// no way to read a cookie's own expiry. Reusing an existing pair instead of
|
|
148
|
+
// minting a new one is what stops a redirect provoked mid-sign-in (e.g. a
|
|
149
|
+
// background notification poll from a sibling panel on the shared cookie domain)
|
|
150
|
+
// from overwriting the state the in-flight sign-in carries, which the callback
|
|
151
|
+
// compares strictly and rejects with "400 Invalid state parameter".
|
|
152
|
+
function inflightAuthFlow(cookies) {
|
|
153
|
+
if (!cookies) { return null; }
|
|
154
|
+
var stateCookie = cookies.oauth_state;
|
|
155
|
+
var verifierCookie = cookies.code_verifier;
|
|
156
|
+
if (!stateCookie || !stateCookie.value || !verifierCookie || !verifierCookie.value) {
|
|
157
|
+
return null;
|
|
158
|
+
}
|
|
159
|
+
// Require the state to be decodable — a malformed value is not a flow we can
|
|
160
|
+
// reissue against, so fall through to minting a fresh one.
|
|
161
|
+
try {
|
|
162
|
+
JSON.parse(base64urlDecode(stateCookie.value));
|
|
163
|
+
} catch (e) {
|
|
164
|
+
return null;
|
|
165
|
+
}
|
|
166
|
+
return { state: stateCookie.value, codeVerifier: verifierCookie.value };
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
function redirectToAuth(originalPath, host, cookies) {
|
|
144
170
|
// Custom-UI mode: redirect to a first-party login page. No IdP redirect and
|
|
145
171
|
// no PKCE state/verifier cookies — the login page performs SRP client-side and
|
|
146
172
|
// POSTs the resulting tokens to the session-issuance endpoint.
|
|
@@ -153,10 +179,27 @@ function redirectToAuth(originalPath, host) {
|
|
|
153
179
|
}
|
|
154
180
|
};
|
|
155
181
|
}
|
|
182
|
+
var domainAttr = COOKIE_DOMAIN ? '; Domain=' + COOKIE_DOMAIN : '';
|
|
183
|
+
|
|
184
|
+
// If a sign-in is already in flight, reissue the redirect REUSING its state and
|
|
185
|
+
// verifier, and set NO cookies — do not clobber the live flow. The challenge is
|
|
186
|
+
// re-derived from the stored verifier so the authorize URL stays consistent with
|
|
187
|
+
// the PKCE exchange the callback will perform for whichever flow completes.
|
|
188
|
+
var inflight = inflightAuthFlow(cookies);
|
|
189
|
+
if (inflight) {
|
|
190
|
+
var reusedChallenge = generateCodeChallenge(inflight.codeVerifier);
|
|
191
|
+
return {
|
|
192
|
+
statusCode: 302,
|
|
193
|
+
headers: {
|
|
194
|
+
location: { value: buildAzureAuthUrl(inflight.state, reusedChallenge, host) },
|
|
195
|
+
'cache-control': { value: 'no-store' }
|
|
196
|
+
}
|
|
197
|
+
};
|
|
198
|
+
}
|
|
199
|
+
|
|
156
200
|
var state = generateState(originalPath, host);
|
|
157
201
|
var codeVerifier = generateCodeVerifier();
|
|
158
202
|
var codeChallenge = generateCodeChallenge(codeVerifier);
|
|
159
|
-
var domainAttr = COOKIE_DOMAIN ? '; Domain=' + COOKIE_DOMAIN : '';
|
|
160
203
|
return {
|
|
161
204
|
statusCode: 302,
|
|
162
205
|
headers: {
|
|
@@ -213,14 +256,14 @@ async function checkAuth(event, decodedPayload, requiredRoles, roleMatchMode) {
|
|
|
213
256
|
if (!sessionCookie) {
|
|
214
257
|
return {
|
|
215
258
|
pass: false,
|
|
216
|
-
response: redirectToAuth(originalPath, host)
|
|
259
|
+
response: redirectToAuth(originalPath, host, request.cookies)
|
|
217
260
|
};
|
|
218
261
|
}
|
|
219
262
|
var token = sessionCookie.value;
|
|
220
263
|
if (!token || token.length === 0) {
|
|
221
264
|
return {
|
|
222
265
|
pass: false,
|
|
223
|
-
response: redirectToAuth(originalPath, host)
|
|
266
|
+
response: redirectToAuth(originalPath, host, request.cookies)
|
|
224
267
|
};
|
|
225
268
|
}
|
|
226
269
|
try {
|
|
@@ -228,14 +271,14 @@ async function checkAuth(event, decodedPayload, requiredRoles, roleMatchMode) {
|
|
|
228
271
|
if (parts.length !== 3) {
|
|
229
272
|
return {
|
|
230
273
|
pass: false,
|
|
231
|
-
response: redirectToAuth(originalPath, host)
|
|
274
|
+
response: redirectToAuth(originalPath, host, request.cookies)
|
|
232
275
|
};
|
|
233
276
|
}
|
|
234
277
|
var isValid = await validateHmacSignature(token);
|
|
235
278
|
if (!isValid) {
|
|
236
279
|
return {
|
|
237
280
|
pass: false,
|
|
238
|
-
response: redirectToAuth(originalPath, host)
|
|
281
|
+
response: redirectToAuth(originalPath, host, request.cookies)
|
|
239
282
|
};
|
|
240
283
|
}
|
|
241
284
|
var payload = JSON.parse(base64urlDecode(parts[1]));
|
|
@@ -250,7 +293,7 @@ async function checkAuth(event, decodedPayload, requiredRoles, roleMatchMode) {
|
|
|
250
293
|
}
|
|
251
294
|
return {
|
|
252
295
|
pass: false,
|
|
253
|
-
response: redirectToAuth(originalPath, host)
|
|
296
|
+
response: redirectToAuth(originalPath, host, request.cookies)
|
|
254
297
|
};
|
|
255
298
|
}
|
|
256
299
|
var jti = payload.jti;
|
|
@@ -260,7 +303,7 @@ async function checkAuth(event, decodedPayload, requiredRoles, roleMatchMode) {
|
|
|
260
303
|
if (isRevoked) {
|
|
261
304
|
return {
|
|
262
305
|
pass: false,
|
|
263
|
-
response: redirectToAuth(originalPath, host)
|
|
306
|
+
response: redirectToAuth(originalPath, host, request.cookies)
|
|
264
307
|
};
|
|
265
308
|
}
|
|
266
309
|
} catch (e) {}
|
|
@@ -304,7 +347,7 @@ async function checkAuth(event, decodedPayload, requiredRoles, roleMatchMode) {
|
|
|
304
347
|
} catch (e) {
|
|
305
348
|
return {
|
|
306
349
|
pass: false,
|
|
307
|
-
response: redirectToAuth(originalPath, host)
|
|
350
|
+
response: redirectToAuth(originalPath, host, request.cookies)
|
|
308
351
|
};
|
|
309
352
|
}
|
|
310
353
|
}
|
|
@@ -121,7 +121,47 @@ function getOriginalPath(request) {
|
|
|
121
121
|
return request.uri + '?' + qs;
|
|
122
122
|
}
|
|
123
123
|
|
|
124
|
-
|
|
124
|
+
// A live PKCE sign-in is represented by the pair of cookies (oauth_state +
|
|
125
|
+
// code_verifier) minted on the redirect that started it. The browser drops both
|
|
126
|
+
// at Max-Age=600, so their PRESENCE (with a well-formed, decodable state) is the
|
|
127
|
+
// practical "unexpired flow" signal available to a CloudFront Function — it has
|
|
128
|
+
// no way to read a cookie's own expiry. Reusing an existing pair instead of
|
|
129
|
+
// minting a new one is what stops a redirect provoked mid-sign-in (e.g. a
|
|
130
|
+
// background notification poll from a sibling panel on the shared cookie domain)
|
|
131
|
+
// from overwriting the state the in-flight sign-in carries, which the callback
|
|
132
|
+
// compares strictly and rejects with "400 Invalid state parameter".
|
|
133
|
+
function inflightAuthFlow(cookies) {
|
|
134
|
+
if (!cookies) { return null; }
|
|
135
|
+
var stateCookie = cookies.oauth_state;
|
|
136
|
+
var verifierCookie = cookies.code_verifier;
|
|
137
|
+
if (!stateCookie || !stateCookie.value || !verifierCookie || !verifierCookie.value) {
|
|
138
|
+
return null;
|
|
139
|
+
}
|
|
140
|
+
try {
|
|
141
|
+
JSON.parse(base64urlDecode(stateCookie.value));
|
|
142
|
+
} catch (e) {
|
|
143
|
+
return null;
|
|
144
|
+
}
|
|
145
|
+
return { state: stateCookie.value, codeVerifier: verifierCookie.value };
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
function redirectToAuth(originalPath, cookies) {
|
|
149
|
+
// If a sign-in is already in flight, reissue the redirect REUSING its state and
|
|
150
|
+
// verifier, and set NO cookies — do not clobber the live flow. The challenge is
|
|
151
|
+
// re-derived from the stored verifier so the authorize URL stays consistent with
|
|
152
|
+
// the PKCE exchange the callback performs for whichever flow completes.
|
|
153
|
+
var inflight = inflightAuthFlow(cookies);
|
|
154
|
+
if (inflight) {
|
|
155
|
+
var reusedChallenge = generateCodeChallenge(inflight.codeVerifier);
|
|
156
|
+
return {
|
|
157
|
+
statusCode: 302,
|
|
158
|
+
headers: {
|
|
159
|
+
location: { value: buildCognitoAuthUrl(inflight.state, reusedChallenge) },
|
|
160
|
+
'cache-control': { value: 'no-store' }
|
|
161
|
+
}
|
|
162
|
+
};
|
|
163
|
+
}
|
|
164
|
+
|
|
125
165
|
var state = generateState(originalPath);
|
|
126
166
|
var codeVerifier = generateCodeVerifier();
|
|
127
167
|
var codeChallenge = generateCodeChallenge(codeVerifier);
|
|
@@ -155,32 +195,32 @@ async function checkAuth(event, decodedPayload, requiredRoles, roleMatchMode) {
|
|
|
155
195
|
var cookies = request.cookies;
|
|
156
196
|
var originalPath = getOriginalPath(request);
|
|
157
197
|
if (!cookies['__Host-auth_session']) {
|
|
158
|
-
return { pass: false, response: redirectToAuth(originalPath) };
|
|
198
|
+
return { pass: false, response: redirectToAuth(originalPath, request.cookies) };
|
|
159
199
|
}
|
|
160
200
|
var token = cookies['__Host-auth_session'].value;
|
|
161
201
|
if (!token || token.length === 0) {
|
|
162
|
-
return { pass: false, response: redirectToAuth(originalPath) };
|
|
202
|
+
return { pass: false, response: redirectToAuth(originalPath, request.cookies) };
|
|
163
203
|
}
|
|
164
204
|
try {
|
|
165
205
|
var parts = token.split('.');
|
|
166
206
|
if (parts.length !== 3) {
|
|
167
|
-
return { pass: false, response: redirectToAuth(originalPath) };
|
|
207
|
+
return { pass: false, response: redirectToAuth(originalPath, request.cookies) };
|
|
168
208
|
}
|
|
169
209
|
var isValid = await validateHmacSignature(token);
|
|
170
210
|
if (!isValid) {
|
|
171
|
-
return { pass: false, response: redirectToAuth(originalPath) };
|
|
211
|
+
return { pass: false, response: redirectToAuth(originalPath, request.cookies) };
|
|
172
212
|
}
|
|
173
213
|
var payload = JSON.parse(base64urlDecode(parts[1]));
|
|
174
214
|
var now = Math.floor(Date.now() / 1000);
|
|
175
215
|
if (payload.exp && payload.exp < now) {
|
|
176
|
-
return { pass: false, response: redirectToAuth(originalPath) };
|
|
216
|
+
return { pass: false, response: redirectToAuth(originalPath, request.cookies) };
|
|
177
217
|
}
|
|
178
218
|
var jti = payload.jti;
|
|
179
219
|
if (jti) {
|
|
180
220
|
try {
|
|
181
221
|
var isRevoked = await kvsHandle.get('revoked:' + jti);
|
|
182
222
|
if (isRevoked) {
|
|
183
|
-
return { pass: false, response: redirectToAuth(originalPath) };
|
|
223
|
+
return { pass: false, response: redirectToAuth(originalPath, request.cookies) };
|
|
184
224
|
}
|
|
185
225
|
} catch (e) {}
|
|
186
226
|
}
|
|
@@ -218,6 +258,6 @@ async function checkAuth(event, decodedPayload, requiredRoles, roleMatchMode) {
|
|
|
218
258
|
|
|
219
259
|
return { pass: true, payload: payload };
|
|
220
260
|
} catch (e) {
|
|
221
|
-
return { pass: false, response: redirectToAuth(originalPath) };
|
|
261
|
+
return { pass: false, response: redirectToAuth(originalPath, request.cookies) };
|
|
222
262
|
}
|
|
223
263
|
}
|
|
Binary file
|
package/lib/cloudfront/lambda-bundled/cognito-auth/cffi/__pycache__/__init__.cpython-312.pyc
CHANGED
|
Binary file
|
package/lib/cloudfront/lambda-bundled/cognito-auth/cffi/__pycache__/_cffi_gen_src.cpython-312.pyc
CHANGED
|
Binary file
|
package/lib/cloudfront/lambda-bundled/cognito-auth/cffi/__pycache__/_imp_emulation.cpython-312.pyc
CHANGED
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/lib/cloudfront/lambda-bundled/cognito-auth/cffi/__pycache__/backend_ctypes.cpython-312.pyc
CHANGED
|
Binary file
|
package/lib/cloudfront/lambda-bundled/cognito-auth/cffi/__pycache__/cffi_opcode.cpython-312.pyc
CHANGED
|
Binary file
|
package/lib/cloudfront/lambda-bundled/cognito-auth/cffi/__pycache__/commontypes.cpython-312.pyc
CHANGED
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/lib/cloudfront/lambda-bundled/cognito-auth/cffi/__pycache__/ffiplatform.cpython-312.pyc
CHANGED
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/lib/cloudfront/lambda-bundled/cognito-auth/cffi/__pycache__/pkgconfig.cpython-312.pyc
CHANGED
|
Binary file
|
package/lib/cloudfront/lambda-bundled/cognito-auth/cffi/__pycache__/recompiler.cpython-312.pyc
CHANGED
|
Binary file
|
package/lib/cloudfront/lambda-bundled/cognito-auth/cffi/__pycache__/setuptools_ext.cpython-312.pyc
CHANGED
|
Binary file
|
package/lib/cloudfront/lambda-bundled/cognito-auth/cffi/__pycache__/vengine_cpy.cpython-312.pyc
CHANGED
|
Binary file
|
package/lib/cloudfront/lambda-bundled/cognito-auth/cffi/__pycache__/vengine_gen.cpython-312.pyc
CHANGED
|
Binary file
|
package/lib/cloudfront/lambda-bundled/cognito-auth/cffi/__pycache__/verifier.cpython-312.pyc
CHANGED
|
Binary file
|
|
Binary file
|
package/lib/cloudfront/lambda-bundled/cognito-auth/cryptography/__pycache__/__init__.cpython-312.pyc
CHANGED
|
Binary file
|
|
Binary file
|
package/lib/cloudfront/lambda-bundled/cognito-auth/cryptography/__pycache__/fernet.cpython-312.pyc
CHANGED
|
Binary file
|
package/lib/cloudfront/lambda-bundled/cognito-auth/cryptography/__pycache__/utils.cpython-312.pyc
CHANGED
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|