From 83e3d0c779014a08d9ecf4a8cb4c9752e5420a22 Mon Sep 17 00:00:00 2001 From: Sriram Madapusi Vasudevan <3770774+TheSriram@users.noreply.github.com> Date: Thu, 7 Mar 2019 13:36:54 -0800 Subject: [PATCH 001/271] chore: version bump aws-lambda-builders to v0.2.0 (#169) --- dotnetcore2.0/build/Dockerfile | 2 +- dotnetcore2.1/build/Dockerfile | 2 +- go1.x/build/Dockerfile | 2 +- java8/build/Dockerfile | 2 +- nodejs4.3/build/Dockerfile | 2 +- nodejs6.10/build/Dockerfile | 2 +- nodejs8.10/build/Dockerfile | 2 +- provided/build/Dockerfile | 2 +- python2.7/build/Dockerfile | 2 +- python3.6/build/Dockerfile | 2 +- python3.7/build/Dockerfile | 2 +- ruby2.5/build/Dockerfile | 2 +- 12 files changed, 12 insertions(+), 12 deletions(-) diff --git a/dotnetcore2.0/build/Dockerfile b/dotnetcore2.0/build/Dockerfile index 07f09460..bc5b8f2a 100644 --- a/dotnetcore2.0/build/Dockerfile +++ b/dotnetcore2.0/build/Dockerfile @@ -19,6 +19,6 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ - pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.10.0 aws-lambda-builders==0.1.0 --no-cache-dir + pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.10.0 aws-lambda-builders==0.2.0 --no-cache-dir CMD ["dotnet", "build"] diff --git a/dotnetcore2.1/build/Dockerfile b/dotnetcore2.1/build/Dockerfile index e6793d8f..c436d308 100644 --- a/dotnetcore2.1/build/Dockerfile +++ b/dotnetcore2.1/build/Dockerfile @@ -19,6 +19,6 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ - pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.10.0 aws-lambda-builders==0.1.0 --no-cache-dir + pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.10.0 aws-lambda-builders==0.2.0 --no-cache-dir CMD ["dotnet", "build"] diff --git a/go1.x/build/Dockerfile b/go1.x/build/Dockerfile index 27576df0..873a6e02 100644 --- a/go1.x/build/Dockerfile +++ b/go1.x/build/Dockerfile @@ -16,6 +16,6 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ - pip install -U awscli boto3 aws-sam-cli==0.10.0 aws-lambda-builders==0.1.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.10.0 aws-lambda-builders==0.2.0 --no-cache-dir CMD ["dep", "ensure"] diff --git a/java8/build/Dockerfile b/java8/build/Dockerfile index de1ee2dd..2d4ab961 100644 --- a/java8/build/Dockerfile +++ b/java8/build/Dockerfile @@ -16,4 +16,4 @@ ENV PATH="/usr/local/gradle/gradle-5.2/bin:/usr/local/maven/apache-maven-3.6.0/b # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ - pip install -U awscli boto3 aws-sam-cli==0.10.0 aws-lambda-builders==0.1.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.10.0 aws-lambda-builders==0.2.0 --no-cache-dir diff --git a/nodejs4.3/build/Dockerfile b/nodejs4.3/build/Dockerfile index 9a078440..f4a209e0 100644 --- a/nodejs4.3/build/Dockerfile +++ b/nodejs4.3/build/Dockerfile @@ -11,6 +11,6 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ - pip install -U awscli boto3 aws-sam-cli==0.10.0 aws-lambda-builders==0.1.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.10.0 aws-lambda-builders==0.2.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/nodejs6.10/build/Dockerfile b/nodejs6.10/build/Dockerfile index 03af6fea..32f32a94 100644 --- a/nodejs6.10/build/Dockerfile +++ b/nodejs6.10/build/Dockerfile @@ -11,6 +11,6 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ - pip install -U awscli boto3 aws-sam-cli==0.10.0 aws-lambda-builders==0.1.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.10.0 aws-lambda-builders==0.2.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/nodejs8.10/build/Dockerfile b/nodejs8.10/build/Dockerfile index 651538b5..2bb4343c 100644 --- a/nodejs8.10/build/Dockerfile +++ b/nodejs8.10/build/Dockerfile @@ -11,6 +11,6 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ - pip install -U awscli boto3 aws-sam-cli==0.10.0 aws-lambda-builders==0.1.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.10.0 aws-lambda-builders==0.2.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/provided/build/Dockerfile b/provided/build/Dockerfile index c3f7d31a..b809636d 100644 --- a/provided/build/Dockerfile +++ b/provided/build/Dockerfile @@ -2,4 +2,4 @@ FROM lambci/lambda-base:build # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ - pip install -U awscli boto3 aws-sam-cli==0.10.0 aws-lambda-builders==0.1.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.10.0 aws-lambda-builders==0.2.0 --no-cache-dir diff --git a/python2.7/build/Dockerfile b/python2.7/build/Dockerfile index 04da0df6..6b715a9b 100644 --- a/python2.7/build/Dockerfile +++ b/python2.7/build/Dockerfile @@ -9,4 +9,4 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ pip install -U virtualenv pipenv --no-cache-dir && \ - pip install -U awscli boto3 aws-sam-cli==0.10.0 aws-lambda-builders==0.1.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.10.0 aws-lambda-builders==0.2.0 --no-cache-dir diff --git a/python3.6/build/Dockerfile b/python3.6/build/Dockerfile index 63e3e865..6da9d44b 100644 --- a/python3.6/build/Dockerfile +++ b/python3.6/build/Dockerfile @@ -19,4 +19,4 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ - pip install -U awscli boto3 aws-sam-cli==0.10.0 aws-lambda-builders==0.1.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.10.0 aws-lambda-builders==0.2.0 --no-cache-dir diff --git a/python3.7/build/Dockerfile b/python3.7/build/Dockerfile index 50fa9eb0..e5b62126 100644 --- a/python3.7/build/Dockerfile +++ b/python3.7/build/Dockerfile @@ -12,4 +12,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ - pip install -U awscli boto3 aws-sam-cli==0.10.0 aws-lambda-builders==0.1.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.10.0 aws-lambda-builders==0.2.0 --no-cache-dir diff --git a/ruby2.5/build/Dockerfile b/ruby2.5/build/Dockerfile index 7b55b517..c3a95207 100644 --- a/ruby2.5/build/Dockerfile +++ b/ruby2.5/build/Dockerfile @@ -14,4 +14,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ RUN gem update --system --no-document && \ gem install --no-document bundler && \ curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ - pip install -U awscli boto3 aws-sam-cli==0.10.0 aws-lambda-builders==0.1.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.10.0 aws-lambda-builders==0.2.0 --no-cache-dir From ca2a7a803451282dcc015027085dd9c5a2a5fd6b Mon Sep 17 00:00:00 2001 From: Jack McGuire Date: Fri, 8 Mar 2019 16:43:57 +0000 Subject: [PATCH 002/271] bump Go debugger Delve API via flags (#170) configure Delve API version via flags, which has a default value of '1' for backwards compatibility --- go1.x/run/aws-lambda-mock.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/go1.x/run/aws-lambda-mock.go b/go1.x/run/aws-lambda-mock.go index 6f17be1b..86bdd2fa 100644 --- a/go1.x/run/aws-lambda-mock.go +++ b/go1.x/run/aws-lambda-mock.go @@ -28,6 +28,7 @@ func main() { debugMode := flag.Bool("debug", false, "enables delve debugging") delvePath := flag.String("delvePath", "/tmp/lambci_debug_files/dlv", "path to delve") delvePort := flag.String("delvePort", "5985", "port to start delve server on") + delveAPI := flag.String("delveAPI", "1", "delve api version") flag.Parse() positionalArgs := flag.Args() var handler string @@ -85,7 +86,7 @@ func main() { delveArgs := []string{ "--listen=:" + *delvePort, "--headless=true", - "--api-version=1", + "--api-version=" + *delveAPI, "--log", "exec", "/var/task/" + handler, From 4876d913b61ab820f32599c692d9a4d7a7bca75c Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Fri, 8 Mar 2019 11:51:05 -0500 Subject: [PATCH 003/271] Update go to v1.12 in build image --- go1.x/build/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/go1.x/build/Dockerfile b/go1.x/build/Dockerfile index 873a6e02..efa5e54b 100644 --- a/go1.x/build/Dockerfile +++ b/go1.x/build/Dockerfile @@ -1,6 +1,6 @@ FROM lambci/lambda-base:build -ENV GOLANG_VERSION=1.11.2 \ +ENV GOLANG_VERSION=1.12 \ GOPATH=/go \ PATH=/go/bin:/usr/local/go/bin:$PATH \ AWS_EXECUTION_ENV=AWS_Lambda_go1.x From f64d905fb521a79127396ddd290391089736c6c5 Mon Sep 17 00:00:00 2001 From: Sriram Madapusi Vasudevan <3770774+TheSriram@users.noreply.github.com> Date: Thu, 21 Mar 2019 11:29:50 -0700 Subject: [PATCH 004/271] bump: lambda-builders to 0.2.1 (#174) --- dotnetcore2.0/build/Dockerfile | 2 +- dotnetcore2.1/build/Dockerfile | 2 +- go1.x/build/Dockerfile | 2 +- java8/build/Dockerfile | 2 +- nodejs4.3/build/Dockerfile | 2 +- nodejs6.10/build/Dockerfile | 2 +- nodejs8.10/build/Dockerfile | 2 +- provided/build/Dockerfile | 2 +- python2.7/build/Dockerfile | 2 +- python3.6/build/Dockerfile | 2 +- python3.7/build/Dockerfile | 2 +- ruby2.5/build/Dockerfile | 2 +- 12 files changed, 12 insertions(+), 12 deletions(-) diff --git a/dotnetcore2.0/build/Dockerfile b/dotnetcore2.0/build/Dockerfile index bc5b8f2a..497d8c0f 100644 --- a/dotnetcore2.0/build/Dockerfile +++ b/dotnetcore2.0/build/Dockerfile @@ -19,6 +19,6 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ - pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.10.0 aws-lambda-builders==0.2.0 --no-cache-dir + pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.10.0 aws-lambda-builders==0.2.1 --no-cache-dir CMD ["dotnet", "build"] diff --git a/dotnetcore2.1/build/Dockerfile b/dotnetcore2.1/build/Dockerfile index c436d308..1b71ca37 100644 --- a/dotnetcore2.1/build/Dockerfile +++ b/dotnetcore2.1/build/Dockerfile @@ -19,6 +19,6 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ - pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.10.0 aws-lambda-builders==0.2.0 --no-cache-dir + pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.10.0 aws-lambda-builders==0.2.1 --no-cache-dir CMD ["dotnet", "build"] diff --git a/go1.x/build/Dockerfile b/go1.x/build/Dockerfile index efa5e54b..53f72783 100644 --- a/go1.x/build/Dockerfile +++ b/go1.x/build/Dockerfile @@ -16,6 +16,6 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ - pip install -U awscli boto3 aws-sam-cli==0.10.0 aws-lambda-builders==0.2.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.10.0 aws-lambda-builders==0.2.1 --no-cache-dir CMD ["dep", "ensure"] diff --git a/java8/build/Dockerfile b/java8/build/Dockerfile index 2d4ab961..e1d28771 100644 --- a/java8/build/Dockerfile +++ b/java8/build/Dockerfile @@ -16,4 +16,4 @@ ENV PATH="/usr/local/gradle/gradle-5.2/bin:/usr/local/maven/apache-maven-3.6.0/b # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ - pip install -U awscli boto3 aws-sam-cli==0.10.0 aws-lambda-builders==0.2.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.10.0 aws-lambda-builders==0.2.1 --no-cache-dir diff --git a/nodejs4.3/build/Dockerfile b/nodejs4.3/build/Dockerfile index f4a209e0..e2d9b9fc 100644 --- a/nodejs4.3/build/Dockerfile +++ b/nodejs4.3/build/Dockerfile @@ -11,6 +11,6 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ - pip install -U awscli boto3 aws-sam-cli==0.10.0 aws-lambda-builders==0.2.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.10.0 aws-lambda-builders==0.2.1 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/nodejs6.10/build/Dockerfile b/nodejs6.10/build/Dockerfile index 32f32a94..ca07e098 100644 --- a/nodejs6.10/build/Dockerfile +++ b/nodejs6.10/build/Dockerfile @@ -11,6 +11,6 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ - pip install -U awscli boto3 aws-sam-cli==0.10.0 aws-lambda-builders==0.2.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.10.0 aws-lambda-builders==0.2.1 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/nodejs8.10/build/Dockerfile b/nodejs8.10/build/Dockerfile index 2bb4343c..5d52c308 100644 --- a/nodejs8.10/build/Dockerfile +++ b/nodejs8.10/build/Dockerfile @@ -11,6 +11,6 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ - pip install -U awscli boto3 aws-sam-cli==0.10.0 aws-lambda-builders==0.2.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.10.0 aws-lambda-builders==0.2.1 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/provided/build/Dockerfile b/provided/build/Dockerfile index b809636d..1b28e637 100644 --- a/provided/build/Dockerfile +++ b/provided/build/Dockerfile @@ -2,4 +2,4 @@ FROM lambci/lambda-base:build # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ - pip install -U awscli boto3 aws-sam-cli==0.10.0 aws-lambda-builders==0.2.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.10.0 aws-lambda-builders==0.2.1 --no-cache-dir diff --git a/python2.7/build/Dockerfile b/python2.7/build/Dockerfile index 6b715a9b..03eede86 100644 --- a/python2.7/build/Dockerfile +++ b/python2.7/build/Dockerfile @@ -9,4 +9,4 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ pip install -U virtualenv pipenv --no-cache-dir && \ - pip install -U awscli boto3 aws-sam-cli==0.10.0 aws-lambda-builders==0.2.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.10.0 aws-lambda-builders==0.2.1 --no-cache-dir diff --git a/python3.6/build/Dockerfile b/python3.6/build/Dockerfile index 6da9d44b..9ce938e0 100644 --- a/python3.6/build/Dockerfile +++ b/python3.6/build/Dockerfile @@ -19,4 +19,4 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ - pip install -U awscli boto3 aws-sam-cli==0.10.0 aws-lambda-builders==0.2.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.10.0 aws-lambda-builders==0.2.1 --no-cache-dir diff --git a/python3.7/build/Dockerfile b/python3.7/build/Dockerfile index e5b62126..f209da0d 100644 --- a/python3.7/build/Dockerfile +++ b/python3.7/build/Dockerfile @@ -12,4 +12,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ - pip install -U awscli boto3 aws-sam-cli==0.10.0 aws-lambda-builders==0.2.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.10.0 aws-lambda-builders==0.2.1 --no-cache-dir diff --git a/ruby2.5/build/Dockerfile b/ruby2.5/build/Dockerfile index c3a95207..fd74a002 100644 --- a/ruby2.5/build/Dockerfile +++ b/ruby2.5/build/Dockerfile @@ -14,4 +14,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ RUN gem update --system --no-document && \ gem install --no-document bundler && \ curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ - pip install -U awscli boto3 aws-sam-cli==0.10.0 aws-lambda-builders==0.2.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.10.0 aws-lambda-builders==0.2.1 --no-cache-dir From 339ae3c26170d29f59eb6b69d7f9b4ef439f6ef5 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Thu, 21 Mar 2019 14:35:42 -0400 Subject: [PATCH 005/271] Bump aws-sam-cli to 0.13.0 --- dotnetcore2.0/build/Dockerfile | 2 +- dotnetcore2.1/build/Dockerfile | 2 +- go1.x/build/Dockerfile | 2 +- java8/build/Dockerfile | 2 +- nodejs4.3/build/Dockerfile | 2 +- nodejs6.10/build/Dockerfile | 2 +- nodejs8.10/build/Dockerfile | 2 +- provided/build/Dockerfile | 2 +- python2.7/build/Dockerfile | 2 +- python3.6/build/Dockerfile | 2 +- python3.7/build/Dockerfile | 2 +- ruby2.5/build/Dockerfile | 2 +- 12 files changed, 12 insertions(+), 12 deletions(-) diff --git a/dotnetcore2.0/build/Dockerfile b/dotnetcore2.0/build/Dockerfile index 497d8c0f..ee95d215 100644 --- a/dotnetcore2.0/build/Dockerfile +++ b/dotnetcore2.0/build/Dockerfile @@ -19,6 +19,6 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ - pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.10.0 aws-lambda-builders==0.2.1 --no-cache-dir + pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.13.0 aws-lambda-builders==0.2.1 --no-cache-dir CMD ["dotnet", "build"] diff --git a/dotnetcore2.1/build/Dockerfile b/dotnetcore2.1/build/Dockerfile index 1b71ca37..faf459c6 100644 --- a/dotnetcore2.1/build/Dockerfile +++ b/dotnetcore2.1/build/Dockerfile @@ -19,6 +19,6 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ - pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.10.0 aws-lambda-builders==0.2.1 --no-cache-dir + pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.13.0 aws-lambda-builders==0.2.1 --no-cache-dir CMD ["dotnet", "build"] diff --git a/go1.x/build/Dockerfile b/go1.x/build/Dockerfile index 53f72783..bfbd0a0e 100644 --- a/go1.x/build/Dockerfile +++ b/go1.x/build/Dockerfile @@ -16,6 +16,6 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ - pip install -U awscli boto3 aws-sam-cli==0.10.0 aws-lambda-builders==0.2.1 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.13.0 aws-lambda-builders==0.2.1 --no-cache-dir CMD ["dep", "ensure"] diff --git a/java8/build/Dockerfile b/java8/build/Dockerfile index e1d28771..80d54478 100644 --- a/java8/build/Dockerfile +++ b/java8/build/Dockerfile @@ -16,4 +16,4 @@ ENV PATH="/usr/local/gradle/gradle-5.2/bin:/usr/local/maven/apache-maven-3.6.0/b # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ - pip install -U awscli boto3 aws-sam-cli==0.10.0 aws-lambda-builders==0.2.1 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.13.0 aws-lambda-builders==0.2.1 --no-cache-dir diff --git a/nodejs4.3/build/Dockerfile b/nodejs4.3/build/Dockerfile index e2d9b9fc..df7a4e28 100644 --- a/nodejs4.3/build/Dockerfile +++ b/nodejs4.3/build/Dockerfile @@ -11,6 +11,6 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ - pip install -U awscli boto3 aws-sam-cli==0.10.0 aws-lambda-builders==0.2.1 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.13.0 aws-lambda-builders==0.2.1 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/nodejs6.10/build/Dockerfile b/nodejs6.10/build/Dockerfile index ca07e098..f6dd6ee9 100644 --- a/nodejs6.10/build/Dockerfile +++ b/nodejs6.10/build/Dockerfile @@ -11,6 +11,6 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ - pip install -U awscli boto3 aws-sam-cli==0.10.0 aws-lambda-builders==0.2.1 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.13.0 aws-lambda-builders==0.2.1 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/nodejs8.10/build/Dockerfile b/nodejs8.10/build/Dockerfile index 5d52c308..809b800e 100644 --- a/nodejs8.10/build/Dockerfile +++ b/nodejs8.10/build/Dockerfile @@ -11,6 +11,6 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ - pip install -U awscli boto3 aws-sam-cli==0.10.0 aws-lambda-builders==0.2.1 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.13.0 aws-lambda-builders==0.2.1 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/provided/build/Dockerfile b/provided/build/Dockerfile index 1b28e637..20bf5c5c 100644 --- a/provided/build/Dockerfile +++ b/provided/build/Dockerfile @@ -2,4 +2,4 @@ FROM lambci/lambda-base:build # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ - pip install -U awscli boto3 aws-sam-cli==0.10.0 aws-lambda-builders==0.2.1 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.13.0 aws-lambda-builders==0.2.1 --no-cache-dir diff --git a/python2.7/build/Dockerfile b/python2.7/build/Dockerfile index 03eede86..31024eb7 100644 --- a/python2.7/build/Dockerfile +++ b/python2.7/build/Dockerfile @@ -9,4 +9,4 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ pip install -U virtualenv pipenv --no-cache-dir && \ - pip install -U awscli boto3 aws-sam-cli==0.10.0 aws-lambda-builders==0.2.1 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.13.0 aws-lambda-builders==0.2.1 --no-cache-dir diff --git a/python3.6/build/Dockerfile b/python3.6/build/Dockerfile index 9ce938e0..b74688d2 100644 --- a/python3.6/build/Dockerfile +++ b/python3.6/build/Dockerfile @@ -19,4 +19,4 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ - pip install -U awscli boto3 aws-sam-cli==0.10.0 aws-lambda-builders==0.2.1 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.13.0 aws-lambda-builders==0.2.1 --no-cache-dir diff --git a/python3.7/build/Dockerfile b/python3.7/build/Dockerfile index f209da0d..905ef360 100644 --- a/python3.7/build/Dockerfile +++ b/python3.7/build/Dockerfile @@ -12,4 +12,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ - pip install -U awscli boto3 aws-sam-cli==0.10.0 aws-lambda-builders==0.2.1 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.13.0 aws-lambda-builders==0.2.1 --no-cache-dir diff --git a/ruby2.5/build/Dockerfile b/ruby2.5/build/Dockerfile index fd74a002..a2e8fefd 100644 --- a/ruby2.5/build/Dockerfile +++ b/ruby2.5/build/Dockerfile @@ -14,4 +14,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ RUN gem update --system --no-document && \ gem install --no-document bundler && \ curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ - pip install -U awscli boto3 aws-sam-cli==0.10.0 aws-lambda-builders==0.2.1 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.13.0 aws-lambda-builders==0.2.1 --no-cache-dir From b6b123d2247039fb7d848203dfe79d4eddb41811 Mon Sep 17 00:00:00 2001 From: Sanath Kumar Ramesh Date: Sun, 24 Mar 2019 13:52:55 -0700 Subject: [PATCH 006/271] Support passing extra arguments to bootstrap file of 'provided' runtimes (#172) AWS SAM CLI will use this mechanism to customize what and how the bootstrap gets invoked. We want to use this to start the language runtime or bootstrap in debug mode. For Python 3.7, we will invoke the entrypoint as follows: ```bash /var/rapid/init \ --bootstrap /var/lang/bin/python3.7 \ --bootstrap-args '["-u", "/tmp/lambci_debug_files/pydevd.py", "--multiprocess", "--port", "58381", "--file", "/var/runtime/bootstrap"]' ``` For other programming languages (say Nodejs), we might need to create a separate bootstrap file that starts the node interpretor with debug args. In this case I anticipate us to invoke using a command similar to this: ```bash /var/rapid/init \ --bootstrap /var/runtime/bootstrap.debug \ --bootstrap-args '["--inspect-brk", "0.0.0.0:9090"]' ``` --- provided/run/init.go | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/provided/run/init.go b/provided/run/init.go index 115a05f0..7256fd36 100644 --- a/provided/run/init.go +++ b/provided/run/init.go @@ -8,8 +8,6 @@ import ( "encoding/json" "flag" "fmt" - "github.com/go-chi/chi" - "github.com/go-chi/render" "io/ioutil" "math" "math/rand" @@ -22,6 +20,9 @@ import ( "strconv" "syscall" "time" + + "github.com/go-chi/chi" + "github.com/go-chi/render" ) var okStatusResponse = &StatusResponse{Status: "OK", HTTPStatusCode: 202} @@ -42,10 +43,17 @@ func main() { rand.Seed(time.Now().UTC().UnixNano()) bootstrapPath := flag.String("bootstrap", "/var/runtime/bootstrap", "path to bootstrap") + bootstrapArgsString := flag.String("bootstrap-args", "[]", "additional arguments passed to bootstrap, as a stringified JSON Array") flag.Parse() positionalArgs := flag.Args() + var bootstrapArgs []string + if err := json.Unmarshal([]byte(*bootstrapArgsString), &bootstrapArgs); err != nil { + abortRequest(fmt.Errorf("Value of --bootstrap-args should be a JSON Array. Error: %s", err)) + return + } + var handler string if len(positionalArgs) > 0 { handler = positionalArgs[0] @@ -103,7 +111,7 @@ func main() { var cmd *exec.Cmd for _, cmdPath := range []string{*bootstrapPath, "/var/task/bootstrap", "/opt/bootstrap"} { if fi, err := os.Stat(cmdPath); err == nil && !fi.IsDir() { - cmd = exec.Command(cmdPath) + cmd = exec.Command(cmdPath, bootstrapArgs...) break } } From 5acbed6233461d2a0df477ab43c3004245e08ca4 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Sun, 24 Mar 2019 16:59:40 -0400 Subject: [PATCH 007/271] Build provided before the images that depend on it --- base/build-all.sh | 6 +++--- base/publish-all.sh | 2 +- base/tag-all.sh | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/base/build-all.sh b/base/build-all.sh index e1fc96cc..fbe07bab 100755 --- a/base/build-all.sh +++ b/base/build-all.sh @@ -1,6 +1,6 @@ #!/bin/bash -RUNTIMES="nodejs4.3 nodejs6.10 nodejs8.10 python2.7 python3.6 python3.7 ruby2.5 java8 go1.x dotnetcore2.0 dotnetcore2.1 provided" +RUNTIMES="provided nodejs4.3 nodejs6.10 nodejs8.10 python2.7 python3.6 python3.7 ruby2.5 java8 go1.x dotnetcore2.0 dotnetcore2.1" TOP_DIR="${PWD}/.." @@ -11,7 +11,7 @@ for RUNTIME in $RUNTIMES; do [ -x ./update_libs.sh ] && ./update_libs.sh - docker build --no-cache -t lambci/lambda:${RUNTIME} . + docker build -t lambci/lambda:${RUNTIME} . done docker tag lambci/lambda:nodejs4.3 lambci/lambda:latest @@ -20,6 +20,6 @@ for RUNTIME in $RUNTIMES; do cd ${TOP_DIR}/${RUNTIME}/build - docker build --no-cache -t lambci/lambda:build-${RUNTIME} . + docker build -t lambci/lambda:build-${RUNTIME} . done docker tag lambci/lambda:build-nodejs4.3 lambci/lambda:build diff --git a/base/publish-all.sh b/base/publish-all.sh index 48535ddd..02a3e7de 100755 --- a/base/publish-all.sh +++ b/base/publish-all.sh @@ -1,6 +1,6 @@ #!/bin/bash -RUNTIMES="nodejs4.3 nodejs6.10 nodejs8.10 python2.7 python3.6 python3.7 ruby2.5 java8 go1.x dotnetcore2.0 dotnetcore2.1 provided" +RUNTIMES="provided nodejs4.3 nodejs6.10 nodejs8.10 python2.7 python3.6 python3.7 ruby2.5 java8 go1.x dotnetcore2.0 dotnetcore2.1" docker push lambci/lambda-base diff --git a/base/tag-all.sh b/base/tag-all.sh index 20fbd65a..bb619250 100755 --- a/base/tag-all.sh +++ b/base/tag-all.sh @@ -1,6 +1,6 @@ #!/bin/bash -RUNTIMES="nodejs4.3 nodejs6.10 nodejs8.10 python2.7 python3.6 python3.7 ruby2.5 java8 go1.x dotnetcore2.0 dotnetcore2.1 provided" +RUNTIMES="provided nodejs4.3 nodejs6.10 nodejs8.10 python2.7 python3.6 python3.7 ruby2.5 java8 go1.x dotnetcore2.0 dotnetcore2.1" git tag -f latest From 8f6145d649067704c8048578dae4b8e32063839f Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Mon, 25 Mar 2019 15:28:50 -0400 Subject: [PATCH 008/271] Bump aws-sam-cli to 0.14.0 --- dotnetcore2.0/build/Dockerfile | 2 +- dotnetcore2.1/build/Dockerfile | 2 +- go1.x/build/Dockerfile | 2 +- java8/build/Dockerfile | 2 +- nodejs4.3/build/Dockerfile | 2 +- nodejs6.10/build/Dockerfile | 2 +- nodejs8.10/build/Dockerfile | 2 +- provided/build/Dockerfile | 2 +- python2.7/build/Dockerfile | 2 +- python3.6/build/Dockerfile | 2 +- python3.7/build/Dockerfile | 2 +- ruby2.5/build/Dockerfile | 2 +- 12 files changed, 12 insertions(+), 12 deletions(-) diff --git a/dotnetcore2.0/build/Dockerfile b/dotnetcore2.0/build/Dockerfile index ee95d215..885c7389 100644 --- a/dotnetcore2.0/build/Dockerfile +++ b/dotnetcore2.0/build/Dockerfile @@ -19,6 +19,6 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ - pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.13.0 aws-lambda-builders==0.2.1 --no-cache-dir + pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.14.0 aws-lambda-builders==0.2.1 --no-cache-dir CMD ["dotnet", "build"] diff --git a/dotnetcore2.1/build/Dockerfile b/dotnetcore2.1/build/Dockerfile index faf459c6..3c959da4 100644 --- a/dotnetcore2.1/build/Dockerfile +++ b/dotnetcore2.1/build/Dockerfile @@ -19,6 +19,6 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ - pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.13.0 aws-lambda-builders==0.2.1 --no-cache-dir + pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.14.0 aws-lambda-builders==0.2.1 --no-cache-dir CMD ["dotnet", "build"] diff --git a/go1.x/build/Dockerfile b/go1.x/build/Dockerfile index bfbd0a0e..82b8d531 100644 --- a/go1.x/build/Dockerfile +++ b/go1.x/build/Dockerfile @@ -16,6 +16,6 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ - pip install -U awscli boto3 aws-sam-cli==0.13.0 aws-lambda-builders==0.2.1 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.14.0 aws-lambda-builders==0.2.1 --no-cache-dir CMD ["dep", "ensure"] diff --git a/java8/build/Dockerfile b/java8/build/Dockerfile index 80d54478..4100d931 100644 --- a/java8/build/Dockerfile +++ b/java8/build/Dockerfile @@ -16,4 +16,4 @@ ENV PATH="/usr/local/gradle/gradle-5.2/bin:/usr/local/maven/apache-maven-3.6.0/b # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ - pip install -U awscli boto3 aws-sam-cli==0.13.0 aws-lambda-builders==0.2.1 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.14.0 aws-lambda-builders==0.2.1 --no-cache-dir diff --git a/nodejs4.3/build/Dockerfile b/nodejs4.3/build/Dockerfile index df7a4e28..e75d423c 100644 --- a/nodejs4.3/build/Dockerfile +++ b/nodejs4.3/build/Dockerfile @@ -11,6 +11,6 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ - pip install -U awscli boto3 aws-sam-cli==0.13.0 aws-lambda-builders==0.2.1 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.14.0 aws-lambda-builders==0.2.1 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/nodejs6.10/build/Dockerfile b/nodejs6.10/build/Dockerfile index f6dd6ee9..b5c6d325 100644 --- a/nodejs6.10/build/Dockerfile +++ b/nodejs6.10/build/Dockerfile @@ -11,6 +11,6 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ - pip install -U awscli boto3 aws-sam-cli==0.13.0 aws-lambda-builders==0.2.1 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.14.0 aws-lambda-builders==0.2.1 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/nodejs8.10/build/Dockerfile b/nodejs8.10/build/Dockerfile index 809b800e..aec1a2e8 100644 --- a/nodejs8.10/build/Dockerfile +++ b/nodejs8.10/build/Dockerfile @@ -11,6 +11,6 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ - pip install -U awscli boto3 aws-sam-cli==0.13.0 aws-lambda-builders==0.2.1 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.14.0 aws-lambda-builders==0.2.1 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/provided/build/Dockerfile b/provided/build/Dockerfile index 20bf5c5c..5062b0dc 100644 --- a/provided/build/Dockerfile +++ b/provided/build/Dockerfile @@ -2,4 +2,4 @@ FROM lambci/lambda-base:build # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ - pip install -U awscli boto3 aws-sam-cli==0.13.0 aws-lambda-builders==0.2.1 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.14.0 aws-lambda-builders==0.2.1 --no-cache-dir diff --git a/python2.7/build/Dockerfile b/python2.7/build/Dockerfile index 31024eb7..493f3114 100644 --- a/python2.7/build/Dockerfile +++ b/python2.7/build/Dockerfile @@ -9,4 +9,4 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ pip install -U virtualenv pipenv --no-cache-dir && \ - pip install -U awscli boto3 aws-sam-cli==0.13.0 aws-lambda-builders==0.2.1 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.14.0 aws-lambda-builders==0.2.1 --no-cache-dir diff --git a/python3.6/build/Dockerfile b/python3.6/build/Dockerfile index b74688d2..d624fdad 100644 --- a/python3.6/build/Dockerfile +++ b/python3.6/build/Dockerfile @@ -19,4 +19,4 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ - pip install -U awscli boto3 aws-sam-cli==0.13.0 aws-lambda-builders==0.2.1 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.14.0 aws-lambda-builders==0.2.1 --no-cache-dir diff --git a/python3.7/build/Dockerfile b/python3.7/build/Dockerfile index 905ef360..0b97a04d 100644 --- a/python3.7/build/Dockerfile +++ b/python3.7/build/Dockerfile @@ -12,4 +12,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ - pip install -U awscli boto3 aws-sam-cli==0.13.0 aws-lambda-builders==0.2.1 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.14.0 aws-lambda-builders==0.2.1 --no-cache-dir diff --git a/ruby2.5/build/Dockerfile b/ruby2.5/build/Dockerfile index a2e8fefd..7699be78 100644 --- a/ruby2.5/build/Dockerfile +++ b/ruby2.5/build/Dockerfile @@ -14,4 +14,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ RUN gem update --system --no-document && \ gem install --no-document bundler && \ curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ - pip install -U awscli boto3 aws-sam-cli==0.13.0 aws-lambda-builders==0.2.1 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.14.0 aws-lambda-builders==0.2.1 --no-cache-dir From faca3f143888b9fc1948bc9fccc3ab6d39257f3a Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Thu, 11 Apr 2019 13:08:35 -0400 Subject: [PATCH 009/271] Use correct name for ruby25 dump --- base/dump.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/base/dump.sh b/base/dump.sh index 98ae247d..00ce0ebb 100755 --- a/base/dump.sh +++ b/base/dump.sh @@ -1,6 +1,6 @@ #!/bin/bash -RUNTIMES="node43 node610 node810 python27 python36 python37 ruby2.5 java8 go1x dotnetcore20 dotnetcore21 provided" +RUNTIMES="node43 node610 node810 python27 python36 python37 ruby25 java8 go1x dotnetcore20 dotnetcore21 provided" for RUNTIME in $RUNTIMES; do echo $RUNTIME From 0cdd3d4004f3c0e2288435ee9e5a34ff86aac7c1 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Thu, 11 Apr 2019 14:46:08 -0400 Subject: [PATCH 010/271] libdrm-devel now needs to be `latest` --- base/build/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/base/build/Dockerfile b/base/build/Dockerfile index 232cab55..15ae24d5 100644 --- a/base/build/Dockerfile +++ b/base/build/Dockerfile @@ -22,7 +22,7 @@ f.close();" && \ yum clean all && \ yum list installed | grep installed | awk '{print $1}' | xargs yum reinstall -y && \ yum clean all && \ - yum install -y --releasever=latest glibc-devel && \ + yum install -y --releasever=latest glibc-devel libdrm-devel && \ yum clean all && \ yum groupinstall -y development && \ yum install -y clang cmake docker libffi-devel python27-devel python34-devel \ From d365ea5cbe8ca7b43b9ceab40553ac1b279e6a14 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Thu, 11 Apr 2019 14:46:22 -0400 Subject: [PATCH 011/271] Update diff script for use with base tgz --- base/diff.sh | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/base/diff.sh b/base/diff.sh index 3201d335..36015867 100755 --- a/base/diff.sh +++ b/base/diff.sh @@ -23,6 +23,10 @@ for RUNTIME in $RUNTIMES; do curl https://lambci.s3.amazonaws.com/fs/${RUNTIME}.fs.txt > ./diff/${RUNTIME}/fs.full.lambda.txt done +curl https://lambci.s3.amazonaws.com/fs/base.tgz > ./diff/base.tgz + +{ tar -ztf ./diff/python2.7.tgz; tar -ztf ./diff/base.tgz; } | sed 's/\/$//' | sort > ./diff/python2.7/fs.lambda.txt + docker run --rm --entrypoint find lambci/lambda:python2.7 / | sed 's/^\///' | sort > ./diff/python2.7/fs.docker.txt DIFF_DIR="${PWD}/diff" From 1c45ea23e3f7822815d3dc95d84fe8bcd3a42c90 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Thu, 11 Apr 2019 14:46:49 -0400 Subject: [PATCH 012/271] Update .NET examples to latest deps --- examples/dotnetcore2.0/test.csproj | 8 ++------ examples/dotnetcore2.1/test.csproj | 8 ++------ 2 files changed, 4 insertions(+), 12 deletions(-) diff --git a/examples/dotnetcore2.0/test.csproj b/examples/dotnetcore2.0/test.csproj index af1afa1a..77adb3e7 100644 --- a/examples/dotnetcore2.0/test.csproj +++ b/examples/dotnetcore2.0/test.csproj @@ -6,12 +6,8 @@ - - - - - - + + diff --git a/examples/dotnetcore2.1/test.csproj b/examples/dotnetcore2.1/test.csproj index 4bcdab03..67a6e625 100644 --- a/examples/dotnetcore2.1/test.csproj +++ b/examples/dotnetcore2.1/test.csproj @@ -6,12 +6,8 @@ - - - - - - + + From 826516e2ede188bbb4cf858906477f2c83b4e213 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Thu, 11 Apr 2019 14:54:07 -0400 Subject: [PATCH 013/271] Update dotnetcore2.1 SDK to 2.1.504 --- dotnetcore2.1/build/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dotnetcore2.1/build/Dockerfile b/dotnetcore2.1/build/Dockerfile index 3c959da4..6018bfc9 100644 --- a/dotnetcore2.1/build/Dockerfile +++ b/dotnetcore2.1/build/Dockerfile @@ -3,7 +3,7 @@ FROM lambci/lambda-base:build ENV PATH=/var/lang/bin:$PATH \ LD_LIBRARY_PATH=/var/lang/lib:$LD_LIBRARY_PATH \ AWS_EXECUTION_ENV=AWS_Lambda_dotnetcore2.1 \ - DOTNET_SDK_VERSION=2.1.401 \ + DOTNET_SDK_VERSION=2.1.504 \ DOTNET_CLI_TELEMETRY_OPTOUT=1 \ NUGET_XMLDOC_MODE=skip From e57eaa4344d4738ce8441ab87cc17d806c20cb53 Mon Sep 17 00:00:00 2001 From: Sriram Madapusi Vasudevan <3770774+TheSriram@users.noreply.github.com> Date: Tue, 16 Apr 2019 11:11:08 -0700 Subject: [PATCH 014/271] chore(aws-lambda-builders): update version to 0.3.0 (#178) --- dotnetcore2.0/build/Dockerfile | 2 +- dotnetcore2.1/build/Dockerfile | 2 +- go1.x/build/Dockerfile | 2 +- java8/build/Dockerfile | 2 +- nodejs4.3/build/Dockerfile | 2 +- nodejs6.10/build/Dockerfile | 2 +- nodejs8.10/build/Dockerfile | 2 +- provided/build/Dockerfile | 2 +- python2.7/build/Dockerfile | 2 +- python3.6/build/Dockerfile | 2 +- python3.7/build/Dockerfile | 2 +- ruby2.5/build/Dockerfile | 2 +- 12 files changed, 12 insertions(+), 12 deletions(-) diff --git a/dotnetcore2.0/build/Dockerfile b/dotnetcore2.0/build/Dockerfile index 885c7389..ea5c4cc8 100644 --- a/dotnetcore2.0/build/Dockerfile +++ b/dotnetcore2.0/build/Dockerfile @@ -19,6 +19,6 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ - pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.14.0 aws-lambda-builders==0.2.1 --no-cache-dir + pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.14.0 aws-lambda-builders==0.3.0 --no-cache-dir CMD ["dotnet", "build"] diff --git a/dotnetcore2.1/build/Dockerfile b/dotnetcore2.1/build/Dockerfile index 6018bfc9..882d07f6 100644 --- a/dotnetcore2.1/build/Dockerfile +++ b/dotnetcore2.1/build/Dockerfile @@ -19,6 +19,6 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ - pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.14.0 aws-lambda-builders==0.2.1 --no-cache-dir + pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.14.0 aws-lambda-builders==0.3.0 --no-cache-dir CMD ["dotnet", "build"] diff --git a/go1.x/build/Dockerfile b/go1.x/build/Dockerfile index 82b8d531..8260a6dd 100644 --- a/go1.x/build/Dockerfile +++ b/go1.x/build/Dockerfile @@ -16,6 +16,6 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ - pip install -U awscli boto3 aws-sam-cli==0.14.0 aws-lambda-builders==0.2.1 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.14.0 aws-lambda-builders==0.3.0 --no-cache-dir CMD ["dep", "ensure"] diff --git a/java8/build/Dockerfile b/java8/build/Dockerfile index 4100d931..8edbc19f 100644 --- a/java8/build/Dockerfile +++ b/java8/build/Dockerfile @@ -16,4 +16,4 @@ ENV PATH="/usr/local/gradle/gradle-5.2/bin:/usr/local/maven/apache-maven-3.6.0/b # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ - pip install -U awscli boto3 aws-sam-cli==0.14.0 aws-lambda-builders==0.2.1 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.14.0 aws-lambda-builders==0.3.0 --no-cache-dir diff --git a/nodejs4.3/build/Dockerfile b/nodejs4.3/build/Dockerfile index e75d423c..301b23e8 100644 --- a/nodejs4.3/build/Dockerfile +++ b/nodejs4.3/build/Dockerfile @@ -11,6 +11,6 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ - pip install -U awscli boto3 aws-sam-cli==0.14.0 aws-lambda-builders==0.2.1 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.14.0 aws-lambda-builders==0.3.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/nodejs6.10/build/Dockerfile b/nodejs6.10/build/Dockerfile index b5c6d325..06294c2f 100644 --- a/nodejs6.10/build/Dockerfile +++ b/nodejs6.10/build/Dockerfile @@ -11,6 +11,6 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ - pip install -U awscli boto3 aws-sam-cli==0.14.0 aws-lambda-builders==0.2.1 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.14.0 aws-lambda-builders==0.3.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/nodejs8.10/build/Dockerfile b/nodejs8.10/build/Dockerfile index aec1a2e8..adcd19c7 100644 --- a/nodejs8.10/build/Dockerfile +++ b/nodejs8.10/build/Dockerfile @@ -11,6 +11,6 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ - pip install -U awscli boto3 aws-sam-cli==0.14.0 aws-lambda-builders==0.2.1 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.14.0 aws-lambda-builders==0.3.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/provided/build/Dockerfile b/provided/build/Dockerfile index 5062b0dc..ceacdf1c 100644 --- a/provided/build/Dockerfile +++ b/provided/build/Dockerfile @@ -2,4 +2,4 @@ FROM lambci/lambda-base:build # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ - pip install -U awscli boto3 aws-sam-cli==0.14.0 aws-lambda-builders==0.2.1 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.14.0 aws-lambda-builders==0.3.0 --no-cache-dir diff --git a/python2.7/build/Dockerfile b/python2.7/build/Dockerfile index 493f3114..610d0742 100644 --- a/python2.7/build/Dockerfile +++ b/python2.7/build/Dockerfile @@ -9,4 +9,4 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ pip install -U virtualenv pipenv --no-cache-dir && \ - pip install -U awscli boto3 aws-sam-cli==0.14.0 aws-lambda-builders==0.2.1 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.14.0 aws-lambda-builders==0.3.0 --no-cache-dir diff --git a/python3.6/build/Dockerfile b/python3.6/build/Dockerfile index d624fdad..6b37f1cc 100644 --- a/python3.6/build/Dockerfile +++ b/python3.6/build/Dockerfile @@ -19,4 +19,4 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ - pip install -U awscli boto3 aws-sam-cli==0.14.0 aws-lambda-builders==0.2.1 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.14.0 aws-lambda-builders==0.3.0 --no-cache-dir diff --git a/python3.7/build/Dockerfile b/python3.7/build/Dockerfile index 0b97a04d..9967e587 100644 --- a/python3.7/build/Dockerfile +++ b/python3.7/build/Dockerfile @@ -12,4 +12,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ - pip install -U awscli boto3 aws-sam-cli==0.14.0 aws-lambda-builders==0.2.1 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.14.0 aws-lambda-builders==0.3.0 --no-cache-dir diff --git a/ruby2.5/build/Dockerfile b/ruby2.5/build/Dockerfile index 7699be78..40219c42 100644 --- a/ruby2.5/build/Dockerfile +++ b/ruby2.5/build/Dockerfile @@ -14,4 +14,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ RUN gem update --system --no-document && \ gem install --no-document bundler && \ curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ - pip install -U awscli boto3 aws-sam-cli==0.14.0 aws-lambda-builders==0.2.1 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.14.0 aws-lambda-builders==0.3.0 --no-cache-dir From d5a7c1d5cb8615b98cfab8e802140182c897b23a Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Tue, 16 Apr 2019 18:54:03 -0400 Subject: [PATCH 015/271] Bump aws-sam-cli to 0.15.0 --- dotnetcore2.0/build/Dockerfile | 2 +- dotnetcore2.1/build/Dockerfile | 2 +- go1.x/build/Dockerfile | 2 +- java8/build/Dockerfile | 2 +- nodejs4.3/build/Dockerfile | 2 +- nodejs6.10/build/Dockerfile | 2 +- nodejs8.10/build/Dockerfile | 2 +- provided/build/Dockerfile | 2 +- python2.7/build/Dockerfile | 2 +- python3.6/build/Dockerfile | 2 +- python3.7/build/Dockerfile | 2 +- ruby2.5/build/Dockerfile | 2 +- 12 files changed, 12 insertions(+), 12 deletions(-) diff --git a/dotnetcore2.0/build/Dockerfile b/dotnetcore2.0/build/Dockerfile index ea5c4cc8..4ebd5e4b 100644 --- a/dotnetcore2.0/build/Dockerfile +++ b/dotnetcore2.0/build/Dockerfile @@ -19,6 +19,6 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ - pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.14.0 aws-lambda-builders==0.3.0 --no-cache-dir + pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.15.0 aws-lambda-builders==0.3.0 --no-cache-dir CMD ["dotnet", "build"] diff --git a/dotnetcore2.1/build/Dockerfile b/dotnetcore2.1/build/Dockerfile index 882d07f6..710abff4 100644 --- a/dotnetcore2.1/build/Dockerfile +++ b/dotnetcore2.1/build/Dockerfile @@ -19,6 +19,6 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ - pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.14.0 aws-lambda-builders==0.3.0 --no-cache-dir + pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.15.0 aws-lambda-builders==0.3.0 --no-cache-dir CMD ["dotnet", "build"] diff --git a/go1.x/build/Dockerfile b/go1.x/build/Dockerfile index 8260a6dd..1d7d8b02 100644 --- a/go1.x/build/Dockerfile +++ b/go1.x/build/Dockerfile @@ -16,6 +16,6 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ - pip install -U awscli boto3 aws-sam-cli==0.14.0 aws-lambda-builders==0.3.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.15.0 aws-lambda-builders==0.3.0 --no-cache-dir CMD ["dep", "ensure"] diff --git a/java8/build/Dockerfile b/java8/build/Dockerfile index 8edbc19f..ac2d4a4b 100644 --- a/java8/build/Dockerfile +++ b/java8/build/Dockerfile @@ -16,4 +16,4 @@ ENV PATH="/usr/local/gradle/gradle-5.2/bin:/usr/local/maven/apache-maven-3.6.0/b # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ - pip install -U awscli boto3 aws-sam-cli==0.14.0 aws-lambda-builders==0.3.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.15.0 aws-lambda-builders==0.3.0 --no-cache-dir diff --git a/nodejs4.3/build/Dockerfile b/nodejs4.3/build/Dockerfile index 301b23e8..839b2a4a 100644 --- a/nodejs4.3/build/Dockerfile +++ b/nodejs4.3/build/Dockerfile @@ -11,6 +11,6 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ - pip install -U awscli boto3 aws-sam-cli==0.14.0 aws-lambda-builders==0.3.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.15.0 aws-lambda-builders==0.3.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/nodejs6.10/build/Dockerfile b/nodejs6.10/build/Dockerfile index 06294c2f..721012d0 100644 --- a/nodejs6.10/build/Dockerfile +++ b/nodejs6.10/build/Dockerfile @@ -11,6 +11,6 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ - pip install -U awscli boto3 aws-sam-cli==0.14.0 aws-lambda-builders==0.3.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.15.0 aws-lambda-builders==0.3.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/nodejs8.10/build/Dockerfile b/nodejs8.10/build/Dockerfile index adcd19c7..b797238c 100644 --- a/nodejs8.10/build/Dockerfile +++ b/nodejs8.10/build/Dockerfile @@ -11,6 +11,6 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ - pip install -U awscli boto3 aws-sam-cli==0.14.0 aws-lambda-builders==0.3.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.15.0 aws-lambda-builders==0.3.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/provided/build/Dockerfile b/provided/build/Dockerfile index ceacdf1c..e8970cc8 100644 --- a/provided/build/Dockerfile +++ b/provided/build/Dockerfile @@ -2,4 +2,4 @@ FROM lambci/lambda-base:build # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ - pip install -U awscli boto3 aws-sam-cli==0.14.0 aws-lambda-builders==0.3.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.15.0 aws-lambda-builders==0.3.0 --no-cache-dir diff --git a/python2.7/build/Dockerfile b/python2.7/build/Dockerfile index 610d0742..8a0d6459 100644 --- a/python2.7/build/Dockerfile +++ b/python2.7/build/Dockerfile @@ -9,4 +9,4 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ pip install -U virtualenv pipenv --no-cache-dir && \ - pip install -U awscli boto3 aws-sam-cli==0.14.0 aws-lambda-builders==0.3.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.15.0 aws-lambda-builders==0.3.0 --no-cache-dir diff --git a/python3.6/build/Dockerfile b/python3.6/build/Dockerfile index 6b37f1cc..564d9e25 100644 --- a/python3.6/build/Dockerfile +++ b/python3.6/build/Dockerfile @@ -19,4 +19,4 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ - pip install -U awscli boto3 aws-sam-cli==0.14.0 aws-lambda-builders==0.3.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.15.0 aws-lambda-builders==0.3.0 --no-cache-dir diff --git a/python3.7/build/Dockerfile b/python3.7/build/Dockerfile index 9967e587..839ed0e2 100644 --- a/python3.7/build/Dockerfile +++ b/python3.7/build/Dockerfile @@ -12,4 +12,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ - pip install -U awscli boto3 aws-sam-cli==0.14.0 aws-lambda-builders==0.3.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.15.0 aws-lambda-builders==0.3.0 --no-cache-dir diff --git a/ruby2.5/build/Dockerfile b/ruby2.5/build/Dockerfile index 40219c42..82af4d2a 100644 --- a/ruby2.5/build/Dockerfile +++ b/ruby2.5/build/Dockerfile @@ -14,4 +14,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ RUN gem update --system --no-document && \ gem install --no-document bundler && \ curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ - pip install -U awscli boto3 aws-sam-cli==0.14.0 aws-lambda-builders==0.3.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.15.0 aws-lambda-builders==0.3.0 --no-cache-dir From 81b246c183d5c6723b65fe1b391fbbed8cfc16c9 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Mon, 13 May 2019 13:50:49 -0400 Subject: [PATCH 016/271] Add Node.js 10.x runtime and Amazon Linux 2 base --- .gitignore | 1 + README.md | 17 +- base/base-2/Dockerfile | 32 + base/base-2/amazonlinux2.txt | 103 + base/base-2/diff.txt | 61 + base/base-2/dump-packages.sh | 14 + base/base-2/fs.txt | 5625 ++++++++++++++++++++++++++++++++ base/base-2/missing.txt | 10 + base/base-2/packages.txt | 42 + base/build-2/Dockerfile | 22 + base/build-all.sh | 2 +- base/create-base-2.sh | 7 + base/create-build-2.sh | 3 + base/diff.sh | 2 +- base/dump-node10x.js | 56 + base/dump.sh | 2 +- base/publish-all.sh | 4 +- base/tag-all.sh | 2 +- base/tar-find-layer/Dockerfile | 26 + base/test-all.sh | 1 + nodejs10.x/build/Dockerfile | 13 + nodejs10.x/run/Dockerfile | 21 + 22 files changed, 6055 insertions(+), 11 deletions(-) create mode 100644 base/base-2/Dockerfile create mode 100644 base/base-2/amazonlinux2.txt create mode 100644 base/base-2/diff.txt create mode 100755 base/base-2/dump-packages.sh create mode 100644 base/base-2/fs.txt create mode 100644 base/base-2/missing.txt create mode 100644 base/base-2/packages.txt create mode 100644 base/build-2/Dockerfile create mode 100755 base/create-base-2.sh create mode 100755 base/create-build-2.sh create mode 100644 base/dump-node10x.js create mode 100644 base/tar-find-layer/Dockerfile create mode 100644 nodejs10.x/build/Dockerfile create mode 100644 nodejs10.x/run/Dockerfile diff --git a/.gitignore b/.gitignore index 3d17f05b..11f25f84 100644 --- a/.gitignore +++ b/.gitignore @@ -14,3 +14,4 @@ go1.x/run/vendor examples/go1.x/handler examples/dotnetcore2.0/pub examples/dotnetcore2.1/pub +base/tar-find-layer/layer.zip diff --git a/README.md b/README.md index 8c2068b8..d79713f1 100644 --- a/README.md +++ b/README.md @@ -45,13 +45,16 @@ docker run [--rm] -v :/var/task [-v :/opt] lambci/lambda: /var/log/yum.log && \ + mkdir /tmp && \ + chown sbx_user1051:495 /tmp && \ + chmod 700 /tmp + +WORKDIR /var/task diff --git a/base/base-2/amazonlinux2.txt b/base/base-2/amazonlinux2.txt new file mode 100644 index 00000000..c6cfc2df --- /dev/null +++ b/base/base-2/amazonlinux2.txt @@ -0,0 +1,103 @@ +amazon-linux-extras-1.6.7-1.amzn2.noarch +basesystem-10.0-7.amzn2.0.1.noarch +bash-4.2.46-30.amzn2.x86_64 +bzip2-libs-1.0.6-13.amzn2.0.2.x86_64 +ca-certificates-2018.2.22-70.0.amzn2.noarch +chkconfig-1.7.4-1.amzn2.0.2.x86_64 +coreutils-8.22-21.amzn2.x86_64 +cpio-2.11-27.amzn2.x86_64 +curl-7.61.1-9.amzn2.0.1.x86_64 +cyrus-sasl-lib-2.1.26-23.amzn2.x86_64 +diffutils-3.3-4.amzn2.0.2.x86_64 +elfutils-libelf-0.170-4.amzn2.x86_64 +expat-2.1.0-10.amzn2.0.2.x86_64 +file-libs-5.11-33.amzn2.0.2.x86_64 +filesystem-3.2-25.amzn2.0.4.x86_64 +findutils-4.5.11-5.amzn2.0.2.x86_64 +gawk-4.0.2-4.amzn2.1.2.x86_64 +gdbm-1.13-6.amzn2.0.2.x86_64 +glib2-2.54.2-2.amzn2.x86_64 +glibc-2.26-32.amzn2.0.1.x86_64 +glibc-common-2.26-32.amzn2.0.1.x86_64 +glibc-langpack-en-2.26-32.amzn2.0.1.x86_64 +glibc-minimal-langpack-2.26-32.amzn2.0.1.x86_64 +gmp-6.0.0-15.amzn2.0.2.x86_64 +gnupg2-2.0.22-5.amzn2.0.3.x86_64 +gpgme-1.3.2-5.amzn2.0.2.x86_64 +grep-2.20-3.amzn2.0.2.x86_64 +info-5.1-5.amzn2.x86_64 +keyutils-libs-1.5.8-3.amzn2.0.2.x86_64 +krb5-libs-1.15.1-20.amzn2.0.1.x86_64 +libacl-2.2.51-14.amzn2.x86_64 +libassuan-2.1.0-3.amzn2.0.2.x86_64 +libattr-2.4.46-12.amzn2.0.2.x86_64 +libblkid-2.30.2-2.amzn2.0.4.x86_64 +libcap-2.22-9.amzn2.0.2.x86_64 +libcom_err-1.42.9-12.amzn2.0.2.x86_64 +libcrypt-2.26-32.amzn2.0.1.x86_64 +libcurl-7.61.1-9.amzn2.0.1.x86_64 +libdb-5.3.21-24.amzn2.0.3.x86_64 +libdb-utils-5.3.21-24.amzn2.0.3.x86_64 +libffi-3.0.13-18.amzn2.0.2.x86_64 +libgcc-7.3.1-5.amzn2.0.2.x86_64 +libgcrypt-1.5.3-14.amzn2.0.2.x86_64 +libgpg-error-1.12-3.amzn2.0.3.x86_64 +libidn2-2.0.4-1.amzn2.0.2.x86_64 +libmetalink-0.1.2-7.amzn2.0.2.x86_64 +libmount-2.30.2-2.amzn2.0.4.x86_64 +libnghttp2-1.31.1-1.amzn2.0.2.x86_64 +libselinux-2.5-12.amzn2.0.2.x86_64 +libsepol-2.5-8.1.amzn2.0.2.x86_64 +libssh2-1.4.3-12.amzn2.2.x86_64 +libstdc++-7.3.1-5.amzn2.0.2.x86_64 +libtasn1-4.10-1.amzn2.0.2.x86_64 +libunistring-0.9.3-9.amzn2.0.2.x86_64 +libuuid-2.30.2-2.amzn2.0.4.x86_64 +libverto-0.2.5-4.amzn2.0.2.x86_64 +libxml2-2.9.1-6.amzn2.3.2.x86_64 +lua-5.1.4-15.amzn2.0.2.x86_64 +ncurses-6.0-8.20170212.amzn2.1.2.x86_64 +ncurses-base-6.0-8.20170212.amzn2.1.2.noarch +ncurses-libs-6.0-8.20170212.amzn2.1.2.x86_64 +nspr-4.19.0-1.amzn2.x86_64 +nss-3.36.0-7.amzn2.x86_64 +nss-pem-1.0.3-5.amzn2.x86_64 +nss-softokn-3.36.0-5.amzn2.x86_64 +nss-softokn-freebl-3.36.0-5.amzn2.x86_64 +nss-sysinit-3.36.0-7.amzn2.x86_64 +nss-tools-3.36.0-7.amzn2.x86_64 +nss-util-3.36.0-1.amzn2.x86_64 +openldap-2.4.44-15.amzn2.x86_64 +openssl-libs-1.0.2k-16.amzn2.1.1.x86_64 +p11-kit-0.23.5-3.amzn2.0.2.x86_64 +p11-kit-trust-0.23.5-3.amzn2.0.2.x86_64 +pcre-8.32-17.amzn2.0.2.x86_64 +pinentry-0.8.1-17.amzn2.0.2.x86_64 +popt-1.13-16.amzn2.0.2.x86_64 +pth-2.0.7-23.amzn2.0.2.x86_64 +pygpgme-0.3-9.amzn2.0.2.x86_64 +pyliblzma-0.5.3-11.amzn2.0.2.x86_64 +python-2.7.14-58.amzn2.0.4.x86_64 +python-iniparse-0.4-9.amzn2.noarch +python-libs-2.7.14-58.amzn2.0.4.x86_64 +python-pycurl-7.19.0-19.amzn2.0.2.x86_64 +python-urlgrabber-3.10-8.amzn2.noarch +pyxattr-0.5.1-5.amzn2.0.2.x86_64 +readline-6.2-10.amzn2.0.2.x86_64 +rpm-4.11.3-25.amzn2.0.3.x86_64 +rpm-build-libs-4.11.3-25.amzn2.0.3.x86_64 +rpm-libs-4.11.3-25.amzn2.0.3.x86_64 +rpm-python-4.11.3-25.amzn2.0.3.x86_64 +sed-4.2.2-5.amzn2.0.2.x86_64 +setup-2.8.71-10.amzn2.noarch +shared-mime-info-1.8-4.amzn2.x86_64 +sqlite-3.7.17-8.amzn2.0.2.x86_64 +system-release-2-10.amzn2.x86_64 +tzdata-2018i-1.amzn2.noarch +vim-minimal-7.4.160-4.amzn2.0.16.x86_64 +xz-libs-5.2.2-1.amzn2.0.2.x86_64 +yum-3.4.3-158.amzn2.0.2.noarch +yum-metadata-parser-1.1.4-10.amzn2.0.2.x86_64 +yum-plugin-ovl-1.1.31-46.amzn2.0.1.noarch +yum-plugin-priorities-1.1.31-46.amzn2.0.1.noarch +zlib-1.2.7-17.amzn2.0.2.x86_64 diff --git a/base/base-2/diff.txt b/base/base-2/diff.txt new file mode 100644 index 00000000..0f22e291 --- /dev/null +++ b/base/base-2/diff.txt @@ -0,0 +1,61 @@ +amazon-linux-extras-1.6.7-1.amzn2.noarch +bzip2-libs-1.0.6-13.amzn2.0.2.x86_64 +cpio-2.11-27.amzn2.x86_64 +curl-7.61.1-9.amzn2.0.1.x86_64 +cyrus-sasl-lib-2.1.26-23.amzn2.x86_64 +diffutils-3.3-4.amzn2.0.2.x86_64 +elfutils-libelf-0.170-4.amzn2.x86_64 +expat-2.1.0-10.amzn2.0.2.x86_64 +file-libs-5.11-33.amzn2.0.2.x86_64 +findutils-4.5.11-5.amzn2.0.2.x86_64 +gdbm-1.13-6.amzn2.0.2.x86_64 +glib2-2.54.2-2.amzn2.x86_64 +glibc-langpack-en-2.26-32.amzn2.0.1.x86_64 +gnupg2-2.0.22-5.amzn2.0.3.x86_64 +gpgme-1.3.2-5.amzn2.0.2.x86_64 +libassuan-2.1.0-3.amzn2.0.2.x86_64 +libblkid-2.30.2-2.amzn2.0.4.x86_64 +libcrypt-2.26-32.amzn2.0.1.x86_64 +libcurl-7.61.1-9.amzn2.0.1.x86_64 +libdb-5.3.21-24.amzn2.0.3.x86_64 +libdb-utils-5.3.21-24.amzn2.0.3.x86_64 +libgcrypt-1.5.3-14.amzn2.0.2.x86_64 +libgpg-error-1.12-3.amzn2.0.3.x86_64 +libidn2-2.0.4-1.amzn2.0.2.x86_64 +libmetalink-0.1.2-7.amzn2.0.2.x86_64 +libmount-2.30.2-2.amzn2.0.4.x86_64 +libnghttp2-1.31.1-1.amzn2.0.2.x86_64 +libssh2-1.4.3-12.amzn2.2.x86_64 +libunistring-0.9.3-9.amzn2.0.2.x86_64 +libuuid-2.30.2-2.amzn2.0.4.x86_64 +libxml2-2.9.1-6.amzn2.3.2.x86_64 +lua-5.1.4-15.amzn2.0.2.x86_64 +nss-3.36.0-7.amzn2.x86_64 +nss-pem-1.0.3-5.amzn2.x86_64 +nss-softokn-3.36.0-5.amzn2.x86_64 +nss-sysinit-3.36.0-7.amzn2.x86_64 +nss-tools-3.36.0-7.amzn2.x86_64 +openldap-2.4.44-15.amzn2.x86_64 +pinentry-0.8.1-17.amzn2.0.2.x86_64 +pth-2.0.7-23.amzn2.0.2.x86_64 +pygpgme-0.3-9.amzn2.0.2.x86_64 +pyliblzma-0.5.3-11.amzn2.0.2.x86_64 +python-2.7.14-58.amzn2.0.4.x86_64 +python-iniparse-0.4-9.amzn2.noarch +python-libs-2.7.14-58.amzn2.0.4.x86_64 +python-pycurl-7.19.0-19.amzn2.0.2.x86_64 +python-urlgrabber-3.10-8.amzn2.noarch +pyxattr-0.5.1-5.amzn2.0.2.x86_64 +readline-6.2-10.amzn2.0.2.x86_64 +rpm-4.11.3-25.amzn2.0.3.x86_64 +rpm-build-libs-4.11.3-25.amzn2.0.3.x86_64 +rpm-libs-4.11.3-25.amzn2.0.3.x86_64 +rpm-python-4.11.3-25.amzn2.0.3.x86_64 +shared-mime-info-1.8-4.amzn2.x86_64 +sqlite-3.7.17-8.amzn2.0.2.x86_64 +vim-minimal-7.4.160-4.amzn2.0.16.x86_64 +xz-libs-5.2.2-1.amzn2.0.2.x86_64 +yum-3.4.3-158.amzn2.0.2.noarch +yum-metadata-parser-1.1.4-10.amzn2.0.2.x86_64 +yum-plugin-ovl-1.1.31-46.amzn2.0.1.noarch +yum-plugin-priorities-1.1.31-46.amzn2.0.1.noarch diff --git a/base/base-2/dump-packages.sh b/base/base-2/dump-packages.sh new file mode 100755 index 00000000..954f6701 --- /dev/null +++ b/base/base-2/dump-packages.sh @@ -0,0 +1,14 @@ +#!/bin/sh + +curl https://lambci.s3.amazonaws.com/fs/base-2.tgz | tar -xz --strip-components=2 -- var/lib/rpm + +docker run -v "$PWD/rpm":/rpm --rm amazonlinux:2 rpm -qa --dbpath /rpm | grep -v ^gpg-pubkey- | sort > packages.txt +rm -rf rpm + +docker run --rm amazonlinux:2 bash -c 'yum upgrade -y > /dev/null && rpm -qa' | grep -v ^gpg-pubkey- | sort > amazonlinux2.txt + +if diff -w -d amazonlinux2.txt packages.txt | grep -q '>'; then + echo 'Mismatching packages on images' +else + diff -w -d amazonlinux2.txt packages.txt | grep '<' | awk '{print $2}' > diff.txt +fi diff --git a/base/base-2/fs.txt b/base/base-2/fs.txt new file mode 100644 index 00000000..0421df88 --- /dev/null +++ b/base/base-2/fs.txt @@ -0,0 +1,5625 @@ +bin +boot/ +etc/ +etc/DIR_COLORS +etc/DIR_COLORS.256color +etc/DIR_COLORS.lightbgcolor +etc/GREP_COLORS +etc/X11/ +etc/X11/applnk/ +etc/X11/fontpath.d/ +etc/aliases +etc/alternatives/ +etc/alternatives/libnssckbi.so.x86_64 +etc/bash_completion.d/ +etc/bashrc +etc/chkconfig.d/ +etc/cloud/ +etc/cloud/cloud.cfg.d/ +etc/cloud/cloud.cfg.d/10_aws_yumvars.cfg +etc/csh.cshrc +etc/csh.login +etc/default/ +etc/default/nss +etc/environment +etc/exports +etc/filesystems +etc/group +etc/gss/ +etc/gss/mech.d/ +etc/host.conf +etc/hosts +etc/hosts.allow +etc/hosts.deny +etc/init.d +etc/inputrc +etc/issue +etc/issue.net +etc/krb5.conf +etc/krb5.conf.d/ +etc/ld.so.cache +etc/ld.so.conf +etc/ld.so.conf.d/ +etc/localtime +etc/motd +etc/nsswitch.conf +etc/opt/ +etc/os-release +etc/passwd +etc/pkcs11/ +etc/pkcs11/modules/ +etc/pki/ +etc/pki/ca-trust/ +etc/pki/ca-trust/README +etc/pki/ca-trust/ca-legacy.conf +etc/pki/ca-trust/extracted/ +etc/pki/ca-trust/extracted/README +etc/pki/ca-trust/extracted/java/ +etc/pki/ca-trust/extracted/java/README +etc/pki/ca-trust/extracted/java/cacerts +etc/pki/ca-trust/extracted/openssl/ +etc/pki/ca-trust/extracted/openssl/README +etc/pki/ca-trust/extracted/openssl/ca-bundle.trust.crt +etc/pki/ca-trust/extracted/pem/ +etc/pki/ca-trust/extracted/pem/README +etc/pki/ca-trust/extracted/pem/email-ca-bundle.pem +etc/pki/ca-trust/extracted/pem/objsign-ca-bundle.pem +etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem +etc/pki/ca-trust/source/ +etc/pki/ca-trust/source/README +etc/pki/ca-trust/source/anchors/ +etc/pki/ca-trust/source/blacklist/ +etc/pki/ca-trust/source/ca-bundle.legacy.crt +etc/pki/java/ +etc/pki/java/cacerts +etc/pki/rpm-gpg/ +etc/pki/rpm-gpg/RPM-GPG-KEY-amazon-linux-2 +etc/pki/tls/ +etc/pki/tls/cert.pem +etc/pki/tls/certs/ +etc/pki/tls/certs/ca-bundle.crt +etc/pki/tls/certs/ca-bundle.trust.crt +etc/pki/tls/misc/ +etc/pki/tls/openssl.cnf +etc/pki/tls/private/ +etc/pm/ +etc/pm/config.d/ +etc/pm/power.d/ +etc/pm/sleep.d/ +etc/popt.d/ +etc/prelink.conf.d/ +etc/prelink.conf.d/nss-softokn-prelink.conf +etc/printcap +etc/profile +etc/profile.d/ +etc/profile.d/colorgrep.csh +etc/profile.d/colorgrep.sh +etc/profile.d/colorls.csh +etc/profile.d/colorls.sh +etc/profile.d/csh.local +etc/profile.d/sh.local +etc/protocols +etc/rc.d/ +etc/rc.d/init.d/ +etc/rc.d/rc0.d/ +etc/rc.d/rc1.d/ +etc/rc.d/rc2.d/ +etc/rc.d/rc3.d/ +etc/rc.d/rc4.d/ +etc/rc.d/rc5.d/ +etc/rc.d/rc6.d/ +etc/rc0.d +etc/rc1.d +etc/rc2.d +etc/rc3.d +etc/rc4.d +etc/rc5.d +etc/rc6.d +etc/resolv.conf +etc/rpc +etc/rpm/ +etc/rpm/macros.dist +etc/services +etc/shells +etc/skel/ +etc/skel/.bash_logout +etc/skel/.bash_profile +etc/skel/.bashrc +etc/ssl/ +etc/ssl/certs +etc/subgid +etc/subuid +etc/sysconfig/ +etc/system-release +etc/system-release-cpe +etc/terminfo/ +etc/update-motd.d/ +etc/update-motd.d/30-banner +etc/update-motd.d/70-available-updates +etc/xdg/ +etc/xdg/autostart/ +etc/xinetd.d/ +etc/yum.conf +etc/yum.repos.d/ +etc/yum.repos.d/amzn2-core.repo +etc/yum/ +etc/yum/fssnap.d/ +etc/yum/pluginconf.d/ +etc/yum/pluginconf.d/ovl.conf +etc/yum/pluginconf.d/priorities.conf +etc/yum/protected.d/ +etc/yum/vars/ +etc/yum/vars/awsdomain +etc/yum/vars/awsregion +etc/yum/vars/product +etc/yum/vars/target +etc/yum/version-groups.conf +home/ +lib +lib64 +media/ +mnt/ +opt/ +run/ +sbin +srv/ +usr/ +usr/bin/ +usr/bin/[ +usr/bin/alias +usr/bin/arch +usr/bin/awk +usr/bin/base64 +usr/bin/basename +usr/bin/bash +usr/bin/bashbug +usr/bin/bashbug-64 +usr/bin/bg +usr/bin/ca-legacy +usr/bin/captoinfo +usr/bin/cat +usr/bin/catchsegv +usr/bin/cd +usr/bin/chcon +usr/bin/chgrp +usr/bin/chmod +usr/bin/chown +usr/bin/cksum +usr/bin/clear +usr/bin/comm +usr/bin/command +usr/bin/cp +usr/bin/csplit +usr/bin/cut +usr/bin/date +usr/bin/dd +usr/bin/df +usr/bin/dgawk +usr/bin/dir +usr/bin/dircolors +usr/bin/dirname +usr/bin/du +usr/bin/echo +usr/bin/egrep +usr/bin/env +usr/bin/expand +usr/bin/expr +usr/bin/factor +usr/bin/false +usr/bin/fc +usr/bin/fg +usr/bin/fgrep +usr/bin/fmt +usr/bin/fold +usr/bin/gawk +usr/bin/gencat +usr/bin/getconf +usr/bin/getent +usr/bin/getopts +usr/bin/grep +usr/bin/groups +usr/bin/head +usr/bin/hostid +usr/bin/iconv +usr/bin/id +usr/bin/igawk +usr/bin/info +usr/bin/infocmp +usr/bin/infokey +usr/bin/infotocap +usr/bin/install +usr/bin/jobs +usr/bin/join +usr/bin/ldd +usr/bin/link +usr/bin/ln +usr/bin/locale +usr/bin/localedef +usr/bin/logname +usr/bin/ls +usr/bin/makedb +usr/bin/md5sum +usr/bin/mkdir +usr/bin/mkfifo +usr/bin/mknod +usr/bin/mktemp +usr/bin/mv +usr/bin/nice +usr/bin/nl +usr/bin/nohup +usr/bin/nproc +usr/bin/numfmt +usr/bin/od +usr/bin/p11-kit +usr/bin/paste +usr/bin/pathchk +usr/bin/pgawk +usr/bin/pinky +usr/bin/pldd +usr/bin/pr +usr/bin/printenv +usr/bin/printf +usr/bin/ptx +usr/bin/pwd +usr/bin/read +usr/bin/readlink +usr/bin/realpath +usr/bin/reset +usr/bin/rm +usr/bin/rmdir +usr/bin/rpcgen +usr/bin/runcon +usr/bin/sed +usr/bin/seq +usr/bin/sh +usr/bin/sha1sum +usr/bin/sha224sum +usr/bin/sha256sum +usr/bin/sha384sum +usr/bin/sha512sum +usr/bin/shred +usr/bin/shuf +usr/bin/sleep +usr/bin/sort +usr/bin/sotruss +usr/bin/split +usr/bin/sprof +usr/bin/stat +usr/bin/stdbuf +usr/bin/stty +usr/bin/sum +usr/bin/sync +usr/bin/tabs +usr/bin/tac +usr/bin/tail +usr/bin/tee +usr/bin/test +usr/bin/tic +usr/bin/timeout +usr/bin/toe +usr/bin/touch +usr/bin/tput +usr/bin/tr +usr/bin/true +usr/bin/truncate +usr/bin/trust +usr/bin/tset +usr/bin/tsort +usr/bin/tty +usr/bin/tzselect +usr/bin/umask +usr/bin/unalias +usr/bin/uname +usr/bin/unexpand +usr/bin/uniq +usr/bin/unlink +usr/bin/update-ca-trust +usr/bin/users +usr/bin/vdir +usr/bin/wait +usr/bin/wc +usr/bin/who +usr/bin/whoami +usr/bin/yes +usr/etc/ +usr/games/ +usr/include/ +usr/lib/ +usr/lib/debug/ +usr/lib/debug/bin +usr/lib/debug/lib +usr/lib/debug/lib64 +usr/lib/debug/sbin +usr/lib/debug/usr/ +usr/lib/debug/usr/.dwz +usr/lib/debug/usr/bin/ +usr/lib/debug/usr/lib/ +usr/lib/debug/usr/lib64/ +usr/lib/debug/usr/sbin/ +usr/lib/dracut/ +usr/lib/dracut/dracut.conf.d/ +usr/lib/dracut/dracut.conf.d/50-nss-softokn.conf +usr/lib/dracut/modules.d/ +usr/lib/dracut/modules.d/05nss-softokn/ +usr/lib/dracut/modules.d/05nss-softokn/module-setup.sh +usr/lib/games/ +usr/lib/locale/ +usr/lib/locale/C.utf8/ +usr/lib/locale/C.utf8/LC_ADDRESS +usr/lib/locale/C.utf8/LC_COLLATE +usr/lib/locale/C.utf8/LC_CTYPE +usr/lib/locale/C.utf8/LC_IDENTIFICATION +usr/lib/locale/C.utf8/LC_MEASUREMENT +usr/lib/locale/C.utf8/LC_MESSAGES/ +usr/lib/locale/C.utf8/LC_MESSAGES/SYS_LC_MESSAGES +usr/lib/locale/C.utf8/LC_MONETARY +usr/lib/locale/C.utf8/LC_NAME +usr/lib/locale/C.utf8/LC_NUMERIC +usr/lib/locale/C.utf8/LC_PAPER +usr/lib/locale/C.utf8/LC_TELEPHONE +usr/lib/locale/C.utf8/LC_TIME +usr/lib/modules/ +usr/lib/sse2/ +usr/lib/systemd/ +usr/lib/systemd/system-preset/ +usr/lib/systemd/system-preset/85-display-manager.preset +usr/lib/systemd/system-preset/90-default.preset +usr/lib/systemd/systemd-sysv-install +usr/lib/tmpfiles.d/ +usr/lib/tmpfiles.d/libselinux.conf +usr/lib64/ +usr/lib64/.libcrypto.so.1.0.2k.hmac +usr/lib64/.libcrypto.so.10.hmac +usr/lib64/.libssl.so.1.0.2k.hmac +usr/lib64/.libssl.so.10.hmac +usr/lib64/X11/ +usr/lib64/audit/ +usr/lib64/audit/sotruss-lib.so +usr/lib64/fipscheck/ +usr/lib64/fipscheck/libgmp.so.10.2.0.hmac +usr/lib64/fipscheck/libgmp.so.10.hmac +usr/lib64/games/ +usr/lib64/gconv/ +usr/lib64/gconv/ANSI_X3.110.so +usr/lib64/gconv/ARMSCII-8.so +usr/lib64/gconv/ASMO_449.so +usr/lib64/gconv/BIG5.so +usr/lib64/gconv/BIG5HKSCS.so +usr/lib64/gconv/BRF.so +usr/lib64/gconv/CP10007.so +usr/lib64/gconv/CP1125.so +usr/lib64/gconv/CP1250.so +usr/lib64/gconv/CP1251.so +usr/lib64/gconv/CP1252.so +usr/lib64/gconv/CP1253.so +usr/lib64/gconv/CP1254.so +usr/lib64/gconv/CP1255.so +usr/lib64/gconv/CP1256.so +usr/lib64/gconv/CP1257.so +usr/lib64/gconv/CP1258.so +usr/lib64/gconv/CP737.so +usr/lib64/gconv/CP770.so +usr/lib64/gconv/CP771.so +usr/lib64/gconv/CP772.so +usr/lib64/gconv/CP773.so +usr/lib64/gconv/CP774.so +usr/lib64/gconv/CP775.so +usr/lib64/gconv/CP932.so +usr/lib64/gconv/CSN_369103.so +usr/lib64/gconv/CWI.so +usr/lib64/gconv/DEC-MCS.so +usr/lib64/gconv/EBCDIC-AT-DE-A.so +usr/lib64/gconv/EBCDIC-AT-DE.so +usr/lib64/gconv/EBCDIC-CA-FR.so +usr/lib64/gconv/EBCDIC-DK-NO-A.so +usr/lib64/gconv/EBCDIC-DK-NO.so +usr/lib64/gconv/EBCDIC-ES-A.so +usr/lib64/gconv/EBCDIC-ES-S.so +usr/lib64/gconv/EBCDIC-ES.so +usr/lib64/gconv/EBCDIC-FI-SE-A.so +usr/lib64/gconv/EBCDIC-FI-SE.so +usr/lib64/gconv/EBCDIC-FR.so +usr/lib64/gconv/EBCDIC-IS-FRISS.so +usr/lib64/gconv/EBCDIC-IT.so +usr/lib64/gconv/EBCDIC-PT.so +usr/lib64/gconv/EBCDIC-UK.so +usr/lib64/gconv/EBCDIC-US.so +usr/lib64/gconv/ECMA-CYRILLIC.so +usr/lib64/gconv/EUC-CN.so +usr/lib64/gconv/EUC-JISX0213.so +usr/lib64/gconv/EUC-JP-MS.so +usr/lib64/gconv/EUC-JP.so +usr/lib64/gconv/EUC-KR.so +usr/lib64/gconv/EUC-TW.so +usr/lib64/gconv/GB18030.so +usr/lib64/gconv/GBBIG5.so +usr/lib64/gconv/GBGBK.so +usr/lib64/gconv/GBK.so +usr/lib64/gconv/GEORGIAN-ACADEMY.so +usr/lib64/gconv/GEORGIAN-PS.so +usr/lib64/gconv/GOST_19768-74.so +usr/lib64/gconv/GREEK-CCITT.so +usr/lib64/gconv/GREEK7-OLD.so +usr/lib64/gconv/GREEK7.so +usr/lib64/gconv/HP-GREEK8.so +usr/lib64/gconv/HP-ROMAN8.so +usr/lib64/gconv/HP-ROMAN9.so +usr/lib64/gconv/HP-THAI8.so +usr/lib64/gconv/HP-TURKISH8.so +usr/lib64/gconv/IBM037.so +usr/lib64/gconv/IBM038.so +usr/lib64/gconv/IBM1004.so +usr/lib64/gconv/IBM1008.so +usr/lib64/gconv/IBM1008_420.so +usr/lib64/gconv/IBM1025.so +usr/lib64/gconv/IBM1026.so +usr/lib64/gconv/IBM1046.so +usr/lib64/gconv/IBM1047.so +usr/lib64/gconv/IBM1097.so +usr/lib64/gconv/IBM1112.so +usr/lib64/gconv/IBM1122.so +usr/lib64/gconv/IBM1123.so +usr/lib64/gconv/IBM1124.so +usr/lib64/gconv/IBM1129.so +usr/lib64/gconv/IBM1130.so +usr/lib64/gconv/IBM1132.so +usr/lib64/gconv/IBM1133.so +usr/lib64/gconv/IBM1137.so +usr/lib64/gconv/IBM1140.so +usr/lib64/gconv/IBM1141.so +usr/lib64/gconv/IBM1142.so +usr/lib64/gconv/IBM1143.so +usr/lib64/gconv/IBM1144.so +usr/lib64/gconv/IBM1145.so +usr/lib64/gconv/IBM1146.so +usr/lib64/gconv/IBM1147.so +usr/lib64/gconv/IBM1148.so +usr/lib64/gconv/IBM1149.so +usr/lib64/gconv/IBM1153.so +usr/lib64/gconv/IBM1154.so +usr/lib64/gconv/IBM1155.so +usr/lib64/gconv/IBM1156.so +usr/lib64/gconv/IBM1157.so +usr/lib64/gconv/IBM1158.so +usr/lib64/gconv/IBM1160.so +usr/lib64/gconv/IBM1161.so +usr/lib64/gconv/IBM1162.so +usr/lib64/gconv/IBM1163.so +usr/lib64/gconv/IBM1164.so +usr/lib64/gconv/IBM1166.so +usr/lib64/gconv/IBM1167.so +usr/lib64/gconv/IBM12712.so +usr/lib64/gconv/IBM1364.so +usr/lib64/gconv/IBM1371.so +usr/lib64/gconv/IBM1388.so +usr/lib64/gconv/IBM1390.so +usr/lib64/gconv/IBM1399.so +usr/lib64/gconv/IBM16804.so +usr/lib64/gconv/IBM256.so +usr/lib64/gconv/IBM273.so +usr/lib64/gconv/IBM274.so +usr/lib64/gconv/IBM275.so +usr/lib64/gconv/IBM277.so +usr/lib64/gconv/IBM278.so +usr/lib64/gconv/IBM280.so +usr/lib64/gconv/IBM281.so +usr/lib64/gconv/IBM284.so +usr/lib64/gconv/IBM285.so +usr/lib64/gconv/IBM290.so +usr/lib64/gconv/IBM297.so +usr/lib64/gconv/IBM420.so +usr/lib64/gconv/IBM423.so +usr/lib64/gconv/IBM424.so +usr/lib64/gconv/IBM437.so +usr/lib64/gconv/IBM4517.so +usr/lib64/gconv/IBM4899.so +usr/lib64/gconv/IBM4909.so +usr/lib64/gconv/IBM4971.so +usr/lib64/gconv/IBM500.so +usr/lib64/gconv/IBM5347.so +usr/lib64/gconv/IBM803.so +usr/lib64/gconv/IBM850.so +usr/lib64/gconv/IBM851.so +usr/lib64/gconv/IBM852.so +usr/lib64/gconv/IBM855.so +usr/lib64/gconv/IBM856.so +usr/lib64/gconv/IBM857.so +usr/lib64/gconv/IBM858.so +usr/lib64/gconv/IBM860.so +usr/lib64/gconv/IBM861.so +usr/lib64/gconv/IBM862.so +usr/lib64/gconv/IBM863.so +usr/lib64/gconv/IBM864.so +usr/lib64/gconv/IBM865.so +usr/lib64/gconv/IBM866.so +usr/lib64/gconv/IBM866NAV.so +usr/lib64/gconv/IBM868.so +usr/lib64/gconv/IBM869.so +usr/lib64/gconv/IBM870.so +usr/lib64/gconv/IBM871.so +usr/lib64/gconv/IBM874.so +usr/lib64/gconv/IBM875.so +usr/lib64/gconv/IBM880.so +usr/lib64/gconv/IBM891.so +usr/lib64/gconv/IBM901.so +usr/lib64/gconv/IBM902.so +usr/lib64/gconv/IBM903.so +usr/lib64/gconv/IBM9030.so +usr/lib64/gconv/IBM904.so +usr/lib64/gconv/IBM905.so +usr/lib64/gconv/IBM9066.so +usr/lib64/gconv/IBM918.so +usr/lib64/gconv/IBM921.so +usr/lib64/gconv/IBM922.so +usr/lib64/gconv/IBM930.so +usr/lib64/gconv/IBM932.so +usr/lib64/gconv/IBM933.so +usr/lib64/gconv/IBM935.so +usr/lib64/gconv/IBM937.so +usr/lib64/gconv/IBM939.so +usr/lib64/gconv/IBM943.so +usr/lib64/gconv/IBM9448.so +usr/lib64/gconv/IEC_P27-1.so +usr/lib64/gconv/INIS-8.so +usr/lib64/gconv/INIS-CYRILLIC.so +usr/lib64/gconv/INIS.so +usr/lib64/gconv/ISIRI-3342.so +usr/lib64/gconv/ISO-2022-CN-EXT.so +usr/lib64/gconv/ISO-2022-CN.so +usr/lib64/gconv/ISO-2022-JP-3.so +usr/lib64/gconv/ISO-2022-JP.so +usr/lib64/gconv/ISO-2022-KR.so +usr/lib64/gconv/ISO-IR-197.so +usr/lib64/gconv/ISO-IR-209.so +usr/lib64/gconv/ISO646.so +usr/lib64/gconv/ISO8859-1.so +usr/lib64/gconv/ISO8859-10.so +usr/lib64/gconv/ISO8859-11.so +usr/lib64/gconv/ISO8859-13.so +usr/lib64/gconv/ISO8859-14.so +usr/lib64/gconv/ISO8859-15.so +usr/lib64/gconv/ISO8859-16.so +usr/lib64/gconv/ISO8859-2.so +usr/lib64/gconv/ISO8859-3.so +usr/lib64/gconv/ISO8859-4.so +usr/lib64/gconv/ISO8859-5.so +usr/lib64/gconv/ISO8859-6.so +usr/lib64/gconv/ISO8859-7.so +usr/lib64/gconv/ISO8859-8.so +usr/lib64/gconv/ISO8859-9.so +usr/lib64/gconv/ISO8859-9E.so +usr/lib64/gconv/ISO_10367-BOX.so +usr/lib64/gconv/ISO_11548-1.so +usr/lib64/gconv/ISO_2033.so +usr/lib64/gconv/ISO_5427-EXT.so +usr/lib64/gconv/ISO_5427.so +usr/lib64/gconv/ISO_5428.so +usr/lib64/gconv/ISO_6937-2.so +usr/lib64/gconv/ISO_6937.so +usr/lib64/gconv/JOHAB.so +usr/lib64/gconv/KOI-8.so +usr/lib64/gconv/KOI8-R.so +usr/lib64/gconv/KOI8-RU.so +usr/lib64/gconv/KOI8-T.so +usr/lib64/gconv/KOI8-U.so +usr/lib64/gconv/LATIN-GREEK-1.so +usr/lib64/gconv/LATIN-GREEK.so +usr/lib64/gconv/MAC-CENTRALEUROPE.so +usr/lib64/gconv/MAC-IS.so +usr/lib64/gconv/MAC-SAMI.so +usr/lib64/gconv/MAC-UK.so +usr/lib64/gconv/MACINTOSH.so +usr/lib64/gconv/MIK.so +usr/lib64/gconv/NATS-DANO.so +usr/lib64/gconv/NATS-SEFI.so +usr/lib64/gconv/PT154.so +usr/lib64/gconv/RK1048.so +usr/lib64/gconv/SAMI-WS2.so +usr/lib64/gconv/SHIFT_JISX0213.so +usr/lib64/gconv/SJIS.so +usr/lib64/gconv/T.61.so +usr/lib64/gconv/TCVN5712-1.so +usr/lib64/gconv/TIS-620.so +usr/lib64/gconv/TSCII.so +usr/lib64/gconv/UHC.so +usr/lib64/gconv/UNICODE.so +usr/lib64/gconv/UTF-16.so +usr/lib64/gconv/UTF-32.so +usr/lib64/gconv/UTF-7.so +usr/lib64/gconv/VISCII.so +usr/lib64/gconv/gconv-modules +usr/lib64/gconv/gconv-modules.cache +usr/lib64/gconv/libCNS.so +usr/lib64/gconv/libGB.so +usr/lib64/gconv/libISOIR165.so +usr/lib64/gconv/libJIS.so +usr/lib64/gconv/libJISX0213.so +usr/lib64/gconv/libKSC.so +usr/lib64/krb5/ +usr/lib64/krb5/plugins/ +usr/lib64/krb5/plugins/authdata/ +usr/lib64/krb5/plugins/kdb/ +usr/lib64/krb5/plugins/libkrb5/ +usr/lib64/krb5/plugins/preauth/ +usr/lib64/krb5/plugins/tls/ +usr/lib64/krb5/plugins/tls/k5tls.so +usr/lib64/ld-2.26.so +usr/lib64/ld-linux-x86-64.so.2 +usr/lib64/libBrokenLocale-2.26.so +usr/lib64/libBrokenLocale.so.1 +usr/lib64/libSegFault.so +usr/lib64/libacl.so.1 +usr/lib64/libacl.so.1.1.0 +usr/lib64/libanl-2.26.so +usr/lib64/libanl.so.1 +usr/lib64/libattr.so.1 +usr/lib64/libattr.so.1.1.0 +usr/lib64/libc-2.26.so +usr/lib64/libc.so.6 +usr/lib64/libcap.so.2 +usr/lib64/libcap.so.2.22 +usr/lib64/libcidn-2.26.so +usr/lib64/libcidn.so.1 +usr/lib64/libcom_err.so.2 +usr/lib64/libcom_err.so.2.1 +usr/lib64/libcrypto.so.1.0.2k +usr/lib64/libcrypto.so.10 +usr/lib64/libdl-2.26.so +usr/lib64/libdl.so.2 +usr/lib64/libffi.so.6 +usr/lib64/libffi.so.6.0.1 +usr/lib64/libform.so.6 +usr/lib64/libform.so.6.0 +usr/lib64/libformw.so.6 +usr/lib64/libformw.so.6.0 +usr/lib64/libfreebl3.chk +usr/lib64/libfreebl3.so +usr/lib64/libfreeblpriv3.chk +usr/lib64/libfreeblpriv3.so +usr/lib64/libgcc_s-7-20180303.so.1 +usr/lib64/libgcc_s.so.1 +usr/lib64/libgmp.so.10 +usr/lib64/libgmp.so.10.2.0 +usr/lib64/libgmpxx.so.4 +usr/lib64/libgmpxx.so.4.4.0 +usr/lib64/libgssapi_krb5.so.2 +usr/lib64/libgssapi_krb5.so.2.2 +usr/lib64/libgssrpc.so.4 +usr/lib64/libgssrpc.so.4.2 +usr/lib64/libk5crypto.so.3 +usr/lib64/libk5crypto.so.3.1 +usr/lib64/libkdb5.so.8 +usr/lib64/libkdb5.so.8.0 +usr/lib64/libkeyutils.so.1 +usr/lib64/libkeyutils.so.1.5 +usr/lib64/libkrad.so.0 +usr/lib64/libkrad.so.0.0 +usr/lib64/libkrb5.so.3 +usr/lib64/libkrb5.so.3.3 +usr/lib64/libkrb5support.so.0 +usr/lib64/libkrb5support.so.0.1 +usr/lib64/libm-2.26.so +usr/lib64/libm.so.6 +usr/lib64/libmemusage.so +usr/lib64/libmenu.so.6 +usr/lib64/libmenu.so.6.0 +usr/lib64/libmenuw.so.6 +usr/lib64/libmenuw.so.6.0 +usr/lib64/libmvec-2.26.so +usr/lib64/libmvec.so.1 +usr/lib64/libncurses.so.6 +usr/lib64/libncurses.so.6.0 +usr/lib64/libncursesw.so.6 +usr/lib64/libncursesw.so.6.0 +usr/lib64/libnsl-2.26.so +usr/lib64/libnsl.so.1 +usr/lib64/libnspr4.so +usr/lib64/libnss_compat-2.26.so +usr/lib64/libnss_compat.so.2 +usr/lib64/libnss_dns-2.26.so +usr/lib64/libnss_dns.so.2 +usr/lib64/libnss_files-2.26.so +usr/lib64/libnss_files.so.2 +usr/lib64/libnssckbi.so +usr/lib64/libnssutil3.so +usr/lib64/libp11-kit.so.0 +usr/lib64/libp11-kit.so.0.3.0 +usr/lib64/libpanel.so.6 +usr/lib64/libpanel.so.6.0 +usr/lib64/libpanelw.so.6 +usr/lib64/libpanelw.so.6.0 +usr/lib64/libpcprofile.so +usr/lib64/libpcre.so.1 +usr/lib64/libpcre.so.1.2.0 +usr/lib64/libpcre16.so.0 +usr/lib64/libpcre16.so.0.2.0 +usr/lib64/libpcre32.so.0 +usr/lib64/libpcre32.so.0.0.0 +usr/lib64/libpcrecpp.so.0 +usr/lib64/libpcrecpp.so.0.0.0 +usr/lib64/libpcreposix.so.0 +usr/lib64/libpcreposix.so.0.0.1 +usr/lib64/libplc4.so +usr/lib64/libplds4.so +usr/lib64/libpopt.so.0 +usr/lib64/libpopt.so.0.0.0 +usr/lib64/libpthread-2.26.so +usr/lib64/libpthread.so.0 +usr/lib64/libresolv-2.26.so +usr/lib64/libresolv.so.2 +usr/lib64/librt-2.26.so +usr/lib64/librt.so.1 +usr/lib64/libselinux.so.1 +usr/lib64/libsepol.so.1 +usr/lib64/libssl.so.1.0.2k +usr/lib64/libssl.so.10 +usr/lib64/libstdc++.so.6 +usr/lib64/libstdc++.so.6.0.24 +usr/lib64/libtasn1.so.6 +usr/lib64/libtasn1.so.6.5.3 +usr/lib64/libthread_db-1.0.so +usr/lib64/libthread_db.so.1 +usr/lib64/libtic.so.6 +usr/lib64/libtic.so.6.0 +usr/lib64/libtinfo.so.6 +usr/lib64/libtinfo.so.6.0 +usr/lib64/libutil-2.26.so +usr/lib64/libutil.so.1 +usr/lib64/libverto.so.1 +usr/lib64/libverto.so.1.0.0 +usr/lib64/libz.so.1 +usr/lib64/libz.so.1.2.7 +usr/lib64/openssl/ +usr/lib64/openssl/engines/ +usr/lib64/openssl/engines/lib4758cca.so +usr/lib64/openssl/engines/libaep.so +usr/lib64/openssl/engines/libatalla.so +usr/lib64/openssl/engines/libcapi.so +usr/lib64/openssl/engines/libchil.so +usr/lib64/openssl/engines/libcswift.so +usr/lib64/openssl/engines/libgmp.so +usr/lib64/openssl/engines/libnuron.so +usr/lib64/openssl/engines/libpadlock.so +usr/lib64/openssl/engines/libsureware.so +usr/lib64/openssl/engines/libubsec.so +usr/lib64/p11-kit-proxy.so +usr/lib64/p11-kit-trust.so +usr/lib64/pkcs11/ +usr/lib64/pkcs11/p11-kit-trust.so +usr/lib64/pm-utils/ +usr/lib64/pm-utils/module.d/ +usr/lib64/pm-utils/power.d/ +usr/lib64/pm-utils/sleep.d/ +usr/lib64/security/ +usr/lib64/security/pam_cap.so +usr/lib64/sse2/ +usr/lib64/tls/ +usr/libexec/ +usr/libexec/awk/ +usr/libexec/awk/grcat +usr/libexec/awk/pwcat +usr/libexec/coreutils/ +usr/libexec/coreutils/libstdbuf.so +usr/libexec/getconf/ +usr/libexec/getconf/POSIX_V6_LP64_OFF64 +usr/libexec/getconf/POSIX_V7_LP64_OFF64 +usr/libexec/getconf/XBS5_LP64_OFF64 +usr/libexec/grepconf.sh +usr/libexec/p11-kit/ +usr/libexec/p11-kit/p11-kit-remote +usr/libexec/p11-kit/trust-extract-compat +usr/local/ +usr/local/bin/ +usr/local/etc/ +usr/local/games/ +usr/local/include/ +usr/local/lib/ +usr/local/lib64/ +usr/local/libexec/ +usr/local/sbin/ +usr/local/share/ +usr/local/share/applications/ +usr/local/share/info/ +usr/local/share/man/ +usr/local/share/man/man1/ +usr/local/share/man/man1x/ +usr/local/share/man/man2/ +usr/local/share/man/man2x/ +usr/local/share/man/man3/ +usr/local/share/man/man3x/ +usr/local/share/man/man4/ +usr/local/share/man/man4x/ +usr/local/share/man/man5/ +usr/local/share/man/man5x/ +usr/local/share/man/man6/ +usr/local/share/man/man6x/ +usr/local/share/man/man7/ +usr/local/share/man/man7x/ +usr/local/share/man/man8/ +usr/local/share/man/man8x/ +usr/local/share/man/man9/ +usr/local/share/man/man9x/ +usr/local/share/man/mann/ +usr/local/src/ +usr/sbin/ +usr/sbin/alternatives +usr/sbin/capsh +usr/sbin/chkconfig +usr/sbin/getcap +usr/sbin/getpcaps +usr/sbin/iconvconfig +usr/sbin/iconvconfig.x86_64 +usr/sbin/install-info +usr/sbin/ldconfig +usr/sbin/sefcontext_compile +usr/sbin/setcap +usr/sbin/sln +usr/sbin/update-alternatives +usr/sbin/zdump +usr/sbin/zic +usr/share/ +usr/share/X11/ +usr/share/aclocal/ +usr/share/applications/ +usr/share/augeas/ +usr/share/augeas/lenses/ +usr/share/awk/ +usr/share/awk/assert.awk +usr/share/awk/bits2str.awk +usr/share/awk/cliff_rand.awk +usr/share/awk/ctime.awk +usr/share/awk/ftrans.awk +usr/share/awk/getopt.awk +usr/share/awk/gettime.awk +usr/share/awk/group.awk +usr/share/awk/join.awk +usr/share/awk/libintl.awk +usr/share/awk/noassign.awk +usr/share/awk/ord.awk +usr/share/awk/passwd.awk +usr/share/awk/quicksort.awk +usr/share/awk/readable.awk +usr/share/awk/rewind.awk +usr/share/awk/round.awk +usr/share/awk/strtonum.awk +usr/share/awk/walkarray.awk +usr/share/awk/zerofile.awk +usr/share/backgrounds/ +usr/share/desktop-directories/ +usr/share/dict/ +usr/share/doc/ +usr/share/doc/bash-4.2.46/ +usr/share/doc/bash-4.2.46/COPYING +usr/share/doc/ca-certificates-2018.2.22/ +usr/share/doc/ca-certificates-2018.2.22/README +usr/share/doc/coreutils-8.22/ +usr/share/doc/coreutils-8.22/ABOUT-NLS +usr/share/doc/coreutils-8.22/COPYING +usr/share/doc/coreutils-8.22/ChangeLog.bz2 +usr/share/doc/coreutils-8.22/NEWS +usr/share/doc/coreutils-8.22/README +usr/share/doc/coreutils-8.22/THANKS +usr/share/doc/coreutils-8.22/TODO +usr/share/doc/coreutils-8.22/fileutils/ +usr/share/doc/coreutils-8.22/fileutils/ChangeLog-1997.bz2 +usr/share/doc/coreutils-8.22/fileutils/ChangeLog.bz2 +usr/share/doc/coreutils-8.22/fileutils/NEWS +usr/share/doc/coreutils-8.22/sh-utils/ +usr/share/doc/coreutils-8.22/sh-utils/ChangeLog.0.bz2 +usr/share/doc/coreutils-8.22/sh-utils/ChangeLog.bz2 +usr/share/doc/coreutils-8.22/sh-utils/NEWS +usr/share/doc/coreutils-8.22/textutils/ +usr/share/doc/coreutils-8.22/textutils/ChangeLog.bz2 +usr/share/doc/coreutils-8.22/textutils/NEWS +usr/share/doc/gawk-4.0.2/ +usr/share/doc/gawk-4.0.2/COPYING +usr/share/doc/gawk-4.0.2/FUTURES +usr/share/doc/gawk-4.0.2/LIMITATIONS +usr/share/doc/gawk-4.0.2/NEWS +usr/share/doc/gawk-4.0.2/POSIX.STD +usr/share/doc/gawk-4.0.2/README +usr/share/doc/gawk-4.0.2/README.multibyte +usr/share/doc/gawk-4.0.2/README.tests +usr/share/doc/glibc-2.26/ +usr/share/doc/glibc-2.26/BUGS +usr/share/doc/glibc-2.26/CONFORMANCE +usr/share/doc/glibc-2.26/INSTALL +usr/share/doc/glibc-2.26/NEWS +usr/share/doc/glibc-2.26/README +usr/share/doc/glibc-2.26/rtld-debugger-interface.txt +usr/share/doc/glibc-common-2.26/ +usr/share/doc/glibc-common-2.26/README.timezone +usr/share/doc/glibc-common-2.26/gai.conf +usr/share/doc/gmp-6.0.0/ +usr/share/doc/gmp-6.0.0/NEWS +usr/share/doc/gmp-6.0.0/README +usr/share/doc/grep-2.20/ +usr/share/doc/grep-2.20/ABOUT-NLS +usr/share/doc/grep-2.20/AUTHORS +usr/share/doc/grep-2.20/COPYING +usr/share/doc/grep-2.20/ChangeLog +usr/share/doc/grep-2.20/NEWS +usr/share/doc/grep-2.20/README +usr/share/doc/grep-2.20/THANKS +usr/share/doc/grep-2.20/TODO +usr/share/doc/info-5.1/ +usr/share/doc/info-5.1/COPYING +usr/share/doc/keyutils-libs-1.5.8/ +usr/share/doc/keyutils-libs-1.5.8/LICENCE.LGPL +usr/share/doc/krb5-libs-1.15.1/ +usr/share/doc/krb5-libs-1.15.1/NOTICE +usr/share/doc/krb5-libs-1.15.1/README +usr/share/doc/krb5-libs-1.15.1/examples/ +usr/share/doc/krb5-libs-1.15.1/examples/kdc.conf +usr/share/doc/krb5-libs-1.15.1/examples/krb5.conf +usr/share/doc/krb5-libs-1.15.1/examples/services.append +usr/share/doc/libcap-2.22/ +usr/share/doc/libcap-2.22/License +usr/share/doc/libcap-2.22/capability.notes +usr/share/doc/libcom_err-1.42.9/ +usr/share/doc/libcom_err-1.42.9/COPYING +usr/share/doc/libffi-3.0.13/ +usr/share/doc/libffi-3.0.13/LICENSE +usr/share/doc/libffi-3.0.13/README +usr/share/doc/libtasn1-4.10/ +usr/share/doc/libtasn1-4.10/AUTHORS +usr/share/doc/libtasn1-4.10/COPYING +usr/share/doc/libtasn1-4.10/COPYING.LIB +usr/share/doc/libtasn1-4.10/NEWS +usr/share/doc/libtasn1-4.10/README +usr/share/doc/libtasn1-4.10/THANKS +usr/share/doc/libtasn1-4.10/TODO +usr/share/doc/libtasn1-4.10/libtasn1.pdf +usr/share/doc/libverto-0.2.5/ +usr/share/doc/libverto-0.2.5/AUTHORS +usr/share/doc/libverto-0.2.5/COPYING +usr/share/doc/libverto-0.2.5/ChangeLog +usr/share/doc/libverto-0.2.5/NEWS +usr/share/doc/libverto-0.2.5/README +usr/share/doc/ncurses-6.0/ +usr/share/doc/ncurses-6.0/ANNOUNCE +usr/share/doc/ncurses-6.0/AUTHORS +usr/share/doc/ncurses-6.0/NEWS.bz2 +usr/share/doc/ncurses-6.0/README +usr/share/doc/ncurses-6.0/TO-DO +usr/share/doc/ncurses-base-6.0/ +usr/share/doc/ncurses-base-6.0/README +usr/share/doc/p11-kit-0.23.5/ +usr/share/doc/p11-kit-0.23.5/AUTHORS +usr/share/doc/p11-kit-0.23.5/COPYING +usr/share/doc/p11-kit-0.23.5/NEWS +usr/share/doc/p11-kit-0.23.5/README +usr/share/doc/p11-kit-0.23.5/pkcs11.conf.example +usr/share/doc/pcre-8.32/ +usr/share/doc/pcre-8.32/AUTHORS +usr/share/doc/pcre-8.32/COPYING +usr/share/doc/pcre-8.32/ChangeLog +usr/share/doc/pcre-8.32/LICENCE +usr/share/doc/pcre-8.32/NEWS +usr/share/doc/pcre-8.32/README +usr/share/doc/popt-1.13/ +usr/share/doc/popt-1.13/CHANGES +usr/share/doc/popt-1.13/COPYING +usr/share/doc/sed-4.2.2/ +usr/share/doc/sed-4.2.2/AUTHORS +usr/share/doc/sed-4.2.2/BUGS +usr/share/doc/sed-4.2.2/COPYING +usr/share/doc/sed-4.2.2/COPYING.DOC +usr/share/doc/sed-4.2.2/NEWS +usr/share/doc/sed-4.2.2/README +usr/share/doc/sed-4.2.2/THANKS +usr/share/doc/sed-4.2.2/sedfaq.txt.gz +usr/share/doc/setup-2.8.71/ +usr/share/doc/setup-2.8.71/COPYING +usr/share/doc/setup-2.8.71/uidgid +usr/share/doc/system-release/ +usr/share/doc/system-release/GPL +usr/share/doc/tzdata-2018i/ +usr/share/doc/tzdata-2018i/README +usr/share/doc/tzdata-2018i/theory.html +usr/share/doc/tzdata-2018i/tz-art.html +usr/share/doc/tzdata-2018i/tz-link.html +usr/share/doc/zlib-1.2.7/ +usr/share/doc/zlib-1.2.7/ChangeLog +usr/share/doc/zlib-1.2.7/FAQ +usr/share/doc/zlib-1.2.7/README +usr/share/empty/ +usr/share/games/ +usr/share/gcc-7/ +usr/share/gcc-7/python/ +usr/share/gcc-7/python/libstdcxx/ +usr/share/gcc-7/python/libstdcxx/__init__.py +usr/share/gcc-7/python/libstdcxx/__init__.pyc +usr/share/gcc-7/python/libstdcxx/__init__.pyo +usr/share/gcc-7/python/libstdcxx/v6/ +usr/share/gcc-7/python/libstdcxx/v6/__init__.py +usr/share/gcc-7/python/libstdcxx/v6/__init__.pyc +usr/share/gcc-7/python/libstdcxx/v6/__init__.pyo +usr/share/gcc-7/python/libstdcxx/v6/printers.py +usr/share/gcc-7/python/libstdcxx/v6/printers.pyc +usr/share/gcc-7/python/libstdcxx/v6/printers.pyo +usr/share/gcc-7/python/libstdcxx/v6/xmethods.py +usr/share/gcc-7/python/libstdcxx/v6/xmethods.pyc +usr/share/gcc-7/python/libstdcxx/v6/xmethods.pyo +usr/share/gdb/ +usr/share/gdb/auto-load/ +usr/share/gdb/auto-load/usr/ +usr/share/gdb/auto-load/usr/lib64/ +usr/share/gdb/auto-load/usr/lib64/libstdc++.so.6.0.24-gdb.py +usr/share/gdb/auto-load/usr/lib64/libstdc++.so.6.0.24-gdb.pyc +usr/share/gdb/auto-load/usr/lib64/libstdc++.so.6.0.24-gdb.pyo +usr/share/ghostscript/ +usr/share/ghostscript/conf.d/ +usr/share/gnome/ +usr/share/i18n/ +usr/share/i18n/charmaps/ +usr/share/i18n/locales/ +usr/share/icons/ +usr/share/idl/ +usr/share/info/ +usr/share/info/bash.info.gz +usr/share/info/coreutils.info.gz +usr/share/info/dir +usr/share/info/gawk.info.gz +usr/share/info/gawkinet.info.gz +usr/share/info/grep.info.gz +usr/share/info/info-stnd.info.gz +usr/share/info/info.info.gz +usr/share/info/sed.info.gz +usr/share/licenses/ +usr/share/licenses/chkconfig-1.7.4/ +usr/share/licenses/chkconfig-1.7.4/COPYING +usr/share/licenses/glibc-2.26/ +usr/share/licenses/glibc-2.26/COPYING +usr/share/licenses/glibc-2.26/COPYING.LIB +usr/share/licenses/glibc-2.26/LICENSES +usr/share/licenses/gmp-6.0.0/ +usr/share/licenses/gmp-6.0.0/COPYING +usr/share/licenses/gmp-6.0.0/COPYING.LESSERv3 +usr/share/licenses/gmp-6.0.0/COPYINGv2 +usr/share/licenses/gmp-6.0.0/COPYINGv3 +usr/share/licenses/krb5-libs-1.15.1/ +usr/share/licenses/krb5-libs-1.15.1/LICENSE +usr/share/licenses/libgcc-7.3.1/ +usr/share/licenses/libgcc-7.3.1/COPYING +usr/share/licenses/libgcc-7.3.1/COPYING.LIB +usr/share/licenses/libgcc-7.3.1/COPYING.RUNTIME +usr/share/licenses/libgcc-7.3.1/COPYING3 +usr/share/licenses/libgcc-7.3.1/COPYING3.LIB +usr/share/licenses/libsepol-2.5/ +usr/share/licenses/libsepol-2.5/COPYING +usr/share/licenses/ncurses-base-6.0/ +usr/share/licenses/ncurses-base-6.0/COPYING +usr/share/licenses/openssl-libs-1.0.2k/ +usr/share/licenses/openssl-libs-1.0.2k/LICENSE +usr/share/locale/ +usr/share/locale/aa/ +usr/share/locale/aa/LC_MESSAGES/ +usr/share/locale/ab/ +usr/share/locale/ab/LC_MESSAGES/ +usr/share/locale/ace/ +usr/share/locale/ace/LC_MESSAGES/ +usr/share/locale/ach/ +usr/share/locale/ach/LC_MESSAGES/ +usr/share/locale/ada/ +usr/share/locale/ada/LC_MESSAGES/ +usr/share/locale/ady/ +usr/share/locale/ady/LC_MESSAGES/ +usr/share/locale/ae/ +usr/share/locale/ae/LC_MESSAGES/ +usr/share/locale/af/ +usr/share/locale/af/LC_MESSAGES/ +usr/share/locale/af/LC_MESSAGES/bash.mo +usr/share/locale/af/LC_MESSAGES/coreutils.mo +usr/share/locale/af/LC_MESSAGES/grep.mo +usr/share/locale/af/LC_MESSAGES/sed.mo +usr/share/locale/af/LC_TIME/ +usr/share/locale/af/LC_TIME/coreutils.mo +usr/share/locale/af_ZA/ +usr/share/locale/af_ZA/LC_MESSAGES/ +usr/share/locale/afa/ +usr/share/locale/afa/LC_MESSAGES/ +usr/share/locale/afh/ +usr/share/locale/afh/LC_MESSAGES/ +usr/share/locale/ain/ +usr/share/locale/ain/LC_MESSAGES/ +usr/share/locale/ak/ +usr/share/locale/ak/LC_MESSAGES/ +usr/share/locale/akk/ +usr/share/locale/akk/LC_MESSAGES/ +usr/share/locale/ale/ +usr/share/locale/ale/LC_MESSAGES/ +usr/share/locale/alg/ +usr/share/locale/alg/LC_MESSAGES/ +usr/share/locale/alt/ +usr/share/locale/alt/LC_MESSAGES/ +usr/share/locale/am/ +usr/share/locale/am/LC_MESSAGES/ +usr/share/locale/am_ET/ +usr/share/locale/am_ET/LC_MESSAGES/ +usr/share/locale/an/ +usr/share/locale/an/LC_MESSAGES/ +usr/share/locale/ang/ +usr/share/locale/ang/LC_MESSAGES/ +usr/share/locale/anp/ +usr/share/locale/anp/LC_MESSAGES/ +usr/share/locale/apa/ +usr/share/locale/apa/LC_MESSAGES/ +usr/share/locale/ar/ +usr/share/locale/ar/LC_MESSAGES/ +usr/share/locale/ar/LC_MESSAGES/chkconfig.mo +usr/share/locale/arc/ +usr/share/locale/arc/LC_MESSAGES/ +usr/share/locale/arn/ +usr/share/locale/arn/LC_MESSAGES/ +usr/share/locale/arp/ +usr/share/locale/arp/LC_MESSAGES/ +usr/share/locale/art/ +usr/share/locale/art/LC_MESSAGES/ +usr/share/locale/arw/ +usr/share/locale/arw/LC_MESSAGES/ +usr/share/locale/as/ +usr/share/locale/as/LC_MESSAGES/ +usr/share/locale/as/LC_MESSAGES/chkconfig.mo +usr/share/locale/ast/ +usr/share/locale/ast/LC_MESSAGES/ +usr/share/locale/ast/LC_MESSAGES/sed.mo +usr/share/locale/ast_ES/ +usr/share/locale/ast_ES/LC_MESSAGES/ +usr/share/locale/ath/ +usr/share/locale/ath/LC_MESSAGES/ +usr/share/locale/aus/ +usr/share/locale/aus/LC_MESSAGES/ +usr/share/locale/av/ +usr/share/locale/av/LC_MESSAGES/ +usr/share/locale/awa/ +usr/share/locale/awa/LC_MESSAGES/ +usr/share/locale/ay/ +usr/share/locale/ay/LC_MESSAGES/ +usr/share/locale/az/ +usr/share/locale/az/LC_MESSAGES/ +usr/share/locale/az_IR/ +usr/share/locale/az_IR/LC_MESSAGES/ +usr/share/locale/ba/ +usr/share/locale/ba/LC_MESSAGES/ +usr/share/locale/bad/ +usr/share/locale/bad/LC_MESSAGES/ +usr/share/locale/bai/ +usr/share/locale/bai/LC_MESSAGES/ +usr/share/locale/bal/ +usr/share/locale/bal/LC_MESSAGES/ +usr/share/locale/bal/LC_MESSAGES/chkconfig.mo +usr/share/locale/ban/ +usr/share/locale/ban/LC_MESSAGES/ +usr/share/locale/bas/ +usr/share/locale/bas/LC_MESSAGES/ +usr/share/locale/bat/ +usr/share/locale/bat/LC_MESSAGES/ +usr/share/locale/be/ +usr/share/locale/be/LC_MESSAGES/ +usr/share/locale/be/LC_MESSAGES/chkconfig.mo +usr/share/locale/be/LC_MESSAGES/coreutils.mo +usr/share/locale/be/LC_MESSAGES/grep.mo +usr/share/locale/be/LC_TIME/ +usr/share/locale/be/LC_TIME/coreutils.mo +usr/share/locale/be@latin/ +usr/share/locale/be@latin/LC_MESSAGES/ +usr/share/locale/bej/ +usr/share/locale/bej/LC_MESSAGES/ +usr/share/locale/bem/ +usr/share/locale/bem/LC_MESSAGES/ +usr/share/locale/ber/ +usr/share/locale/ber/LC_MESSAGES/ +usr/share/locale/bg/ +usr/share/locale/bg/LC_MESSAGES/ +usr/share/locale/bg/LC_MESSAGES/bash.mo +usr/share/locale/bg/LC_MESSAGES/chkconfig.mo +usr/share/locale/bg/LC_MESSAGES/coreutils.mo +usr/share/locale/bg/LC_MESSAGES/grep.mo +usr/share/locale/bg/LC_TIME/ +usr/share/locale/bg/LC_TIME/coreutils.mo +usr/share/locale/bg_BG/ +usr/share/locale/bg_BG/LC_MESSAGES/ +usr/share/locale/bh/ +usr/share/locale/bh/LC_MESSAGES/ +usr/share/locale/bho/ +usr/share/locale/bho/LC_MESSAGES/ +usr/share/locale/bi/ +usr/share/locale/bi/LC_MESSAGES/ +usr/share/locale/bik/ +usr/share/locale/bik/LC_MESSAGES/ +usr/share/locale/bin/ +usr/share/locale/bin/LC_MESSAGES/ +usr/share/locale/bla/ +usr/share/locale/bla/LC_MESSAGES/ +usr/share/locale/bm/ +usr/share/locale/bm/LC_MESSAGES/ +usr/share/locale/bn/ +usr/share/locale/bn/LC_MESSAGES/ +usr/share/locale/bn/LC_MESSAGES/chkconfig.mo +usr/share/locale/bn_IN/ +usr/share/locale/bn_IN/LC_MESSAGES/ +usr/share/locale/bn_IN/LC_MESSAGES/chkconfig.mo +usr/share/locale/bnt/ +usr/share/locale/bnt/LC_MESSAGES/ +usr/share/locale/bo/ +usr/share/locale/bo/LC_MESSAGES/ +usr/share/locale/br/ +usr/share/locale/br/LC_MESSAGES/ +usr/share/locale/bra/ +usr/share/locale/bra/LC_MESSAGES/ +usr/share/locale/brx/ +usr/share/locale/brx/LC_MESSAGES/ +usr/share/locale/bs/ +usr/share/locale/bs/LC_MESSAGES/ +usr/share/locale/bs/LC_MESSAGES/chkconfig.mo +usr/share/locale/btk/ +usr/share/locale/btk/LC_MESSAGES/ +usr/share/locale/bua/ +usr/share/locale/bua/LC_MESSAGES/ +usr/share/locale/bug/ +usr/share/locale/bug/LC_MESSAGES/ +usr/share/locale/byn/ +usr/share/locale/byn/LC_MESSAGES/ +usr/share/locale/ca/ +usr/share/locale/ca/LC_MESSAGES/ +usr/share/locale/ca/LC_MESSAGES/bash.mo +usr/share/locale/ca/LC_MESSAGES/chkconfig.mo +usr/share/locale/ca/LC_MESSAGES/coreutils.mo +usr/share/locale/ca/LC_MESSAGES/grep.mo +usr/share/locale/ca/LC_MESSAGES/sed.mo +usr/share/locale/ca/LC_TIME/ +usr/share/locale/ca/LC_TIME/coreutils.mo +usr/share/locale/ca@valencia/ +usr/share/locale/ca@valencia/LC_MESSAGES/ +usr/share/locale/ca_ES/ +usr/share/locale/ca_ES/LC_MESSAGES/ +usr/share/locale/ca_ES@valencian/ +usr/share/locale/ca_ES@valencian/LC_MESSAGES/ +usr/share/locale/cad/ +usr/share/locale/cad/LC_MESSAGES/ +usr/share/locale/cai/ +usr/share/locale/cai/LC_MESSAGES/ +usr/share/locale/car/ +usr/share/locale/car/LC_MESSAGES/ +usr/share/locale/cau/ +usr/share/locale/cau/LC_MESSAGES/ +usr/share/locale/ce/ +usr/share/locale/ce/LC_MESSAGES/ +usr/share/locale/ceb/ +usr/share/locale/ceb/LC_MESSAGES/ +usr/share/locale/cel/ +usr/share/locale/cel/LC_MESSAGES/ +usr/share/locale/ch/ +usr/share/locale/ch/LC_MESSAGES/ +usr/share/locale/chb/ +usr/share/locale/chb/LC_MESSAGES/ +usr/share/locale/chg/ +usr/share/locale/chg/LC_MESSAGES/ +usr/share/locale/chk/ +usr/share/locale/chk/LC_MESSAGES/ +usr/share/locale/chm/ +usr/share/locale/chm/LC_MESSAGES/ +usr/share/locale/chn/ +usr/share/locale/chn/LC_MESSAGES/ +usr/share/locale/cho/ +usr/share/locale/cho/LC_MESSAGES/ +usr/share/locale/chp/ +usr/share/locale/chp/LC_MESSAGES/ +usr/share/locale/chr/ +usr/share/locale/chr/LC_MESSAGES/ +usr/share/locale/chy/ +usr/share/locale/chy/LC_MESSAGES/ +usr/share/locale/cmc/ +usr/share/locale/cmc/LC_MESSAGES/ +usr/share/locale/co/ +usr/share/locale/co/LC_MESSAGES/ +usr/share/locale/cop/ +usr/share/locale/cop/LC_MESSAGES/ +usr/share/locale/cpe/ +usr/share/locale/cpe/LC_MESSAGES/ +usr/share/locale/cpf/ +usr/share/locale/cpf/LC_MESSAGES/ +usr/share/locale/cpp/ +usr/share/locale/cpp/LC_MESSAGES/ +usr/share/locale/cr/ +usr/share/locale/cr/LC_MESSAGES/ +usr/share/locale/crh/ +usr/share/locale/crh/LC_MESSAGES/ +usr/share/locale/crp/ +usr/share/locale/crp/LC_MESSAGES/ +usr/share/locale/cs/ +usr/share/locale/cs/LC_MESSAGES/ +usr/share/locale/cs/LC_MESSAGES/bash.mo +usr/share/locale/cs/LC_MESSAGES/chkconfig.mo +usr/share/locale/cs/LC_MESSAGES/coreutils.mo +usr/share/locale/cs/LC_MESSAGES/grep.mo +usr/share/locale/cs/LC_MESSAGES/popt.mo +usr/share/locale/cs/LC_MESSAGES/sed.mo +usr/share/locale/cs/LC_TIME/ +usr/share/locale/cs/LC_TIME/coreutils.mo +usr/share/locale/cs_CZ/ +usr/share/locale/cs_CZ/LC_MESSAGES/ +usr/share/locale/csb/ +usr/share/locale/csb/LC_MESSAGES/ +usr/share/locale/cu/ +usr/share/locale/cu/LC_MESSAGES/ +usr/share/locale/cus/ +usr/share/locale/cus/LC_MESSAGES/ +usr/share/locale/cv/ +usr/share/locale/cv/LC_MESSAGES/ +usr/share/locale/cy/ +usr/share/locale/cy/LC_MESSAGES/ +usr/share/locale/cy/LC_MESSAGES/chkconfig.mo +usr/share/locale/da/ +usr/share/locale/da/LC_MESSAGES/ +usr/share/locale/da/LC_MESSAGES/chkconfig.mo +usr/share/locale/da/LC_MESSAGES/coreutils.mo +usr/share/locale/da/LC_MESSAGES/gawk.mo +usr/share/locale/da/LC_MESSAGES/grep.mo +usr/share/locale/da/LC_MESSAGES/popt.mo +usr/share/locale/da/LC_MESSAGES/sed.mo +usr/share/locale/da/LC_TIME/ +usr/share/locale/da/LC_TIME/coreutils.mo +usr/share/locale/dak/ +usr/share/locale/dak/LC_MESSAGES/ +usr/share/locale/dar/ +usr/share/locale/dar/LC_MESSAGES/ +usr/share/locale/day/ +usr/share/locale/day/LC_MESSAGES/ +usr/share/locale/de/ +usr/share/locale/de/LC_MESSAGES/ +usr/share/locale/de/LC_MESSAGES/bash.mo +usr/share/locale/de/LC_MESSAGES/chkconfig.mo +usr/share/locale/de/LC_MESSAGES/coreutils.mo +usr/share/locale/de/LC_MESSAGES/gawk.mo +usr/share/locale/de/LC_MESSAGES/grep.mo +usr/share/locale/de/LC_MESSAGES/libstdc++.mo +usr/share/locale/de/LC_MESSAGES/mit-krb5.mo +usr/share/locale/de/LC_MESSAGES/popt.mo +usr/share/locale/de/LC_MESSAGES/sed.mo +usr/share/locale/de/LC_TIME/ +usr/share/locale/de/LC_TIME/coreutils.mo +usr/share/locale/de_AT/ +usr/share/locale/de_AT/LC_MESSAGES/ +usr/share/locale/de_CH/ +usr/share/locale/de_CH/LC_MESSAGES/ +usr/share/locale/de_DE/ +usr/share/locale/de_DE/LC_MESSAGES/ +usr/share/locale/default/ +usr/share/locale/default/LC_MESSAGES/ +usr/share/locale/del/ +usr/share/locale/del/LC_MESSAGES/ +usr/share/locale/den/ +usr/share/locale/den/LC_MESSAGES/ +usr/share/locale/dgr/ +usr/share/locale/dgr/LC_MESSAGES/ +usr/share/locale/din/ +usr/share/locale/din/LC_MESSAGES/ +usr/share/locale/doi/ +usr/share/locale/doi/LC_MESSAGES/ +usr/share/locale/dra/ +usr/share/locale/dra/LC_MESSAGES/ +usr/share/locale/dsb/ +usr/share/locale/dsb/LC_MESSAGES/ +usr/share/locale/dua/ +usr/share/locale/dua/LC_MESSAGES/ +usr/share/locale/dum/ +usr/share/locale/dum/LC_MESSAGES/ +usr/share/locale/dv/ +usr/share/locale/dv/LC_MESSAGES/ +usr/share/locale/dyu/ +usr/share/locale/dyu/LC_MESSAGES/ +usr/share/locale/dz/ +usr/share/locale/dz/LC_MESSAGES/ +usr/share/locale/ee/ +usr/share/locale/ee/LC_MESSAGES/ +usr/share/locale/efi/ +usr/share/locale/efi/LC_MESSAGES/ +usr/share/locale/egy/ +usr/share/locale/egy/LC_MESSAGES/ +usr/share/locale/eka/ +usr/share/locale/eka/LC_MESSAGES/ +usr/share/locale/el/ +usr/share/locale/el/LC_MESSAGES/ +usr/share/locale/el/LC_MESSAGES/chkconfig.mo +usr/share/locale/el/LC_MESSAGES/coreutils.mo +usr/share/locale/el/LC_MESSAGES/grep.mo +usr/share/locale/el/LC_MESSAGES/sed.mo +usr/share/locale/el/LC_TIME/ +usr/share/locale/el/LC_TIME/coreutils.mo +usr/share/locale/el_GR/ +usr/share/locale/el_GR/LC_MESSAGES/ +usr/share/locale/elx/ +usr/share/locale/elx/LC_MESSAGES/ +usr/share/locale/en/ +usr/share/locale/en/LC_MESSAGES/ +usr/share/locale/en@boldquot/ +usr/share/locale/en@boldquot/LC_MESSAGES/ +usr/share/locale/en@boldquot/LC_MESSAGES/bash.mo +usr/share/locale/en@quot/ +usr/share/locale/en@quot/LC_MESSAGES/ +usr/share/locale/en@quot/LC_MESSAGES/bash.mo +usr/share/locale/en@shaw/ +usr/share/locale/en@shaw/LC_MESSAGES/ +usr/share/locale/en_AU/ +usr/share/locale/en_AU/LC_MESSAGES/ +usr/share/locale/en_CA/ +usr/share/locale/en_CA/LC_MESSAGES/ +usr/share/locale/en_GB/ +usr/share/locale/en_GB/LC_MESSAGES/ +usr/share/locale/en_GB/LC_MESSAGES/chkconfig.mo +usr/share/locale/en_NZ/ +usr/share/locale/en_NZ/LC_MESSAGES/ +usr/share/locale/en_US/ +usr/share/locale/en_US/LC_MESSAGES/ +usr/share/locale/en_US/LC_MESSAGES/mit-krb5.mo +usr/share/locale/enm/ +usr/share/locale/enm/LC_MESSAGES/ +usr/share/locale/eo/ +usr/share/locale/eo/LC_MESSAGES/ +usr/share/locale/eo/LC_MESSAGES/bash.mo +usr/share/locale/eo/LC_MESSAGES/coreutils.mo +usr/share/locale/eo/LC_MESSAGES/grep.mo +usr/share/locale/eo/LC_MESSAGES/sed.mo +usr/share/locale/eo/LC_TIME/ +usr/share/locale/eo/LC_TIME/coreutils.mo +usr/share/locale/es/ +usr/share/locale/es/LC_MESSAGES/ +usr/share/locale/es/LC_MESSAGES/bash.mo +usr/share/locale/es/LC_MESSAGES/chkconfig.mo +usr/share/locale/es/LC_MESSAGES/coreutils.mo +usr/share/locale/es/LC_MESSAGES/gawk.mo +usr/share/locale/es/LC_MESSAGES/grep.mo +usr/share/locale/es/LC_MESSAGES/popt.mo +usr/share/locale/es/LC_MESSAGES/sed.mo +usr/share/locale/es/LC_TIME/ +usr/share/locale/es/LC_TIME/coreutils.mo +usr/share/locale/es_AR/ +usr/share/locale/es_AR/LC_MESSAGES/ +usr/share/locale/es_CL/ +usr/share/locale/es_CL/LC_MESSAGES/ +usr/share/locale/es_CO/ +usr/share/locale/es_CO/LC_MESSAGES/ +usr/share/locale/es_CR/ +usr/share/locale/es_CR/LC_MESSAGES/ +usr/share/locale/es_DO/ +usr/share/locale/es_DO/LC_MESSAGES/ +usr/share/locale/es_EC/ +usr/share/locale/es_EC/LC_MESSAGES/ +usr/share/locale/es_ES/ +usr/share/locale/es_ES/LC_MESSAGES/ +usr/share/locale/es_GT/ +usr/share/locale/es_GT/LC_MESSAGES/ +usr/share/locale/es_HN/ +usr/share/locale/es_HN/LC_MESSAGES/ +usr/share/locale/es_MX/ +usr/share/locale/es_MX/LC_MESSAGES/ +usr/share/locale/es_NI/ +usr/share/locale/es_NI/LC_MESSAGES/ +usr/share/locale/es_PA/ +usr/share/locale/es_PA/LC_MESSAGES/ +usr/share/locale/es_PE/ +usr/share/locale/es_PE/LC_MESSAGES/ +usr/share/locale/es_PR/ +usr/share/locale/es_PR/LC_MESSAGES/ +usr/share/locale/es_SV/ +usr/share/locale/es_SV/LC_MESSAGES/ +usr/share/locale/es_UY/ +usr/share/locale/es_UY/LC_MESSAGES/ +usr/share/locale/es_VE/ +usr/share/locale/es_VE/LC_MESSAGES/ +usr/share/locale/et/ +usr/share/locale/et/LC_MESSAGES/ +usr/share/locale/et/LC_MESSAGES/bash.mo +usr/share/locale/et/LC_MESSAGES/chkconfig.mo +usr/share/locale/et/LC_MESSAGES/coreutils.mo +usr/share/locale/et/LC_MESSAGES/grep.mo +usr/share/locale/et/LC_MESSAGES/sed.mo +usr/share/locale/et/LC_TIME/ +usr/share/locale/et/LC_TIME/coreutils.mo +usr/share/locale/et_EE/ +usr/share/locale/et_EE/LC_MESSAGES/ +usr/share/locale/eu/ +usr/share/locale/eu/LC_MESSAGES/ +usr/share/locale/eu/LC_MESSAGES/chkconfig.mo +usr/share/locale/eu/LC_MESSAGES/coreutils.mo +usr/share/locale/eu/LC_MESSAGES/grep.mo +usr/share/locale/eu/LC_MESSAGES/sed.mo +usr/share/locale/eu/LC_TIME/ +usr/share/locale/eu/LC_TIME/coreutils.mo +usr/share/locale/eu_ES/ +usr/share/locale/eu_ES/LC_MESSAGES/ +usr/share/locale/ewo/ +usr/share/locale/ewo/LC_MESSAGES/ +usr/share/locale/fa/ +usr/share/locale/fa/LC_MESSAGES/ +usr/share/locale/fa/LC_MESSAGES/chkconfig.mo +usr/share/locale/fa_IR/ +usr/share/locale/fa_IR/LC_MESSAGES/ +usr/share/locale/fan/ +usr/share/locale/fan/LC_MESSAGES/ +usr/share/locale/fat/ +usr/share/locale/fat/LC_MESSAGES/ +usr/share/locale/ff/ +usr/share/locale/ff/LC_MESSAGES/ +usr/share/locale/fi/ +usr/share/locale/fi/LC_MESSAGES/ +usr/share/locale/fi/LC_MESSAGES/bash.mo +usr/share/locale/fi/LC_MESSAGES/chkconfig.mo +usr/share/locale/fi/LC_MESSAGES/coreutils.mo +usr/share/locale/fi/LC_MESSAGES/gawk.mo +usr/share/locale/fi/LC_MESSAGES/grep.mo +usr/share/locale/fi/LC_MESSAGES/sed.mo +usr/share/locale/fi/LC_TIME/ +usr/share/locale/fi/LC_TIME/coreutils.mo +usr/share/locale/fi_FI/ +usr/share/locale/fi_FI/LC_MESSAGES/ +usr/share/locale/fil/ +usr/share/locale/fil/LC_MESSAGES/ +usr/share/locale/fiu/ +usr/share/locale/fiu/LC_MESSAGES/ +usr/share/locale/fj/ +usr/share/locale/fj/LC_MESSAGES/ +usr/share/locale/fo/ +usr/share/locale/fo/LC_MESSAGES/ +usr/share/locale/fon/ +usr/share/locale/fon/LC_MESSAGES/ +usr/share/locale/fr/ +usr/share/locale/fr/LC_MESSAGES/ +usr/share/locale/fr/LC_MESSAGES/bash.mo +usr/share/locale/fr/LC_MESSAGES/chkconfig.mo +usr/share/locale/fr/LC_MESSAGES/coreutils.mo +usr/share/locale/fr/LC_MESSAGES/gawk.mo +usr/share/locale/fr/LC_MESSAGES/grep.mo +usr/share/locale/fr/LC_MESSAGES/libstdc++.mo +usr/share/locale/fr/LC_MESSAGES/popt.mo +usr/share/locale/fr/LC_MESSAGES/sed.mo +usr/share/locale/fr/LC_TIME/ +usr/share/locale/fr/LC_TIME/coreutils.mo +usr/share/locale/fr_BE/ +usr/share/locale/fr_BE/LC_MESSAGES/ +usr/share/locale/fr_CA/ +usr/share/locale/fr_CA/LC_MESSAGES/ +usr/share/locale/fr_CH/ +usr/share/locale/fr_CH/LC_MESSAGES/ +usr/share/locale/fr_FR/ +usr/share/locale/fr_FR/LC_MESSAGES/ +usr/share/locale/frm/ +usr/share/locale/frm/LC_MESSAGES/ +usr/share/locale/fro/ +usr/share/locale/fro/LC_MESSAGES/ +usr/share/locale/frr/ +usr/share/locale/frr/LC_MESSAGES/ +usr/share/locale/frs/ +usr/share/locale/frs/LC_MESSAGES/ +usr/share/locale/fur/ +usr/share/locale/fur/LC_MESSAGES/ +usr/share/locale/fy/ +usr/share/locale/fy/LC_MESSAGES/ +usr/share/locale/ga/ +usr/share/locale/ga/LC_MESSAGES/ +usr/share/locale/ga/LC_MESSAGES/bash.mo +usr/share/locale/ga/LC_MESSAGES/coreutils.mo +usr/share/locale/ga/LC_MESSAGES/grep.mo +usr/share/locale/ga/LC_MESSAGES/popt.mo +usr/share/locale/ga/LC_MESSAGES/sed.mo +usr/share/locale/ga/LC_TIME/ +usr/share/locale/ga/LC_TIME/coreutils.mo +usr/share/locale/gaa/ +usr/share/locale/gaa/LC_MESSAGES/ +usr/share/locale/gay/ +usr/share/locale/gay/LC_MESSAGES/ +usr/share/locale/gba/ +usr/share/locale/gba/LC_MESSAGES/ +usr/share/locale/gd/ +usr/share/locale/gd/LC_MESSAGES/ +usr/share/locale/gem/ +usr/share/locale/gem/LC_MESSAGES/ +usr/share/locale/gez/ +usr/share/locale/gez/LC_MESSAGES/ +usr/share/locale/gil/ +usr/share/locale/gil/LC_MESSAGES/ +usr/share/locale/gl/ +usr/share/locale/gl/LC_MESSAGES/ +usr/share/locale/gl/LC_MESSAGES/chkconfig.mo +usr/share/locale/gl/LC_MESSAGES/coreutils.mo +usr/share/locale/gl/LC_MESSAGES/grep.mo +usr/share/locale/gl/LC_MESSAGES/popt.mo +usr/share/locale/gl/LC_MESSAGES/sed.mo +usr/share/locale/gl/LC_TIME/ +usr/share/locale/gl/LC_TIME/coreutils.mo +usr/share/locale/gl_ES/ +usr/share/locale/gl_ES/LC_MESSAGES/ +usr/share/locale/gmh/ +usr/share/locale/gmh/LC_MESSAGES/ +usr/share/locale/gn/ +usr/share/locale/gn/LC_MESSAGES/ +usr/share/locale/goh/ +usr/share/locale/goh/LC_MESSAGES/ +usr/share/locale/gon/ +usr/share/locale/gon/LC_MESSAGES/ +usr/share/locale/gor/ +usr/share/locale/gor/LC_MESSAGES/ +usr/share/locale/got/ +usr/share/locale/got/LC_MESSAGES/ +usr/share/locale/grb/ +usr/share/locale/grb/LC_MESSAGES/ +usr/share/locale/grc/ +usr/share/locale/grc/LC_MESSAGES/ +usr/share/locale/gsw/ +usr/share/locale/gsw/LC_MESSAGES/ +usr/share/locale/gu/ +usr/share/locale/gu/LC_MESSAGES/ +usr/share/locale/gu/LC_MESSAGES/chkconfig.mo +usr/share/locale/gv/ +usr/share/locale/gv/LC_MESSAGES/ +usr/share/locale/gwi/ +usr/share/locale/gwi/LC_MESSAGES/ +usr/share/locale/ha/ +usr/share/locale/ha/LC_MESSAGES/ +usr/share/locale/hai/ +usr/share/locale/hai/LC_MESSAGES/ +usr/share/locale/haw/ +usr/share/locale/haw/LC_MESSAGES/ +usr/share/locale/he/ +usr/share/locale/he/LC_MESSAGES/ +usr/share/locale/he/LC_MESSAGES/chkconfig.mo +usr/share/locale/he/LC_MESSAGES/grep.mo +usr/share/locale/he/LC_MESSAGES/sed.mo +usr/share/locale/he_IL/ +usr/share/locale/he_IL/LC_MESSAGES/ +usr/share/locale/hi/ +usr/share/locale/hi/LC_MESSAGES/ +usr/share/locale/hi/LC_MESSAGES/chkconfig.mo +usr/share/locale/hil/ +usr/share/locale/hil/LC_MESSAGES/ +usr/share/locale/him/ +usr/share/locale/him/LC_MESSAGES/ +usr/share/locale/hit/ +usr/share/locale/hit/LC_MESSAGES/ +usr/share/locale/hmn/ +usr/share/locale/hmn/LC_MESSAGES/ +usr/share/locale/ho/ +usr/share/locale/ho/LC_MESSAGES/ +usr/share/locale/hr/ +usr/share/locale/hr/LC_MESSAGES/ +usr/share/locale/hr/LC_MESSAGES/chkconfig.mo +usr/share/locale/hr/LC_MESSAGES/coreutils.mo +usr/share/locale/hr/LC_MESSAGES/grep.mo +usr/share/locale/hr/LC_MESSAGES/sed.mo +usr/share/locale/hr/LC_TIME/ +usr/share/locale/hr/LC_TIME/coreutils.mo +usr/share/locale/hr_HR/ +usr/share/locale/hr_HR/LC_MESSAGES/ +usr/share/locale/hsb/ +usr/share/locale/hsb/LC_MESSAGES/ +usr/share/locale/ht/ +usr/share/locale/ht/LC_MESSAGES/ +usr/share/locale/hu/ +usr/share/locale/hu/LC_MESSAGES/ +usr/share/locale/hu/LC_MESSAGES/bash.mo +usr/share/locale/hu/LC_MESSAGES/chkconfig.mo +usr/share/locale/hu/LC_MESSAGES/coreutils.mo +usr/share/locale/hu/LC_MESSAGES/grep.mo +usr/share/locale/hu/LC_MESSAGES/popt.mo +usr/share/locale/hu/LC_MESSAGES/sed.mo +usr/share/locale/hu/LC_TIME/ +usr/share/locale/hu/LC_TIME/coreutils.mo +usr/share/locale/hu_HU/ +usr/share/locale/hu_HU/LC_MESSAGES/ +usr/share/locale/hup/ +usr/share/locale/hup/LC_MESSAGES/ +usr/share/locale/hy/ +usr/share/locale/hy/LC_MESSAGES/ +usr/share/locale/hy/LC_MESSAGES/chkconfig.mo +usr/share/locale/hz/ +usr/share/locale/hz/LC_MESSAGES/ +usr/share/locale/ia/ +usr/share/locale/ia/LC_MESSAGES/ +usr/share/locale/ia/LC_MESSAGES/chkconfig.mo +usr/share/locale/ia/LC_MESSAGES/coreutils.mo +usr/share/locale/ia/LC_TIME/ +usr/share/locale/ia/LC_TIME/coreutils.mo +usr/share/locale/iba/ +usr/share/locale/iba/LC_MESSAGES/ +usr/share/locale/id/ +usr/share/locale/id/LC_MESSAGES/ +usr/share/locale/id/LC_MESSAGES/bash.mo +usr/share/locale/id/LC_MESSAGES/chkconfig.mo +usr/share/locale/id/LC_MESSAGES/coreutils.mo +usr/share/locale/id/LC_MESSAGES/grep.mo +usr/share/locale/id/LC_MESSAGES/sed.mo +usr/share/locale/id/LC_TIME/ +usr/share/locale/id/LC_TIME/coreutils.mo +usr/share/locale/ie/ +usr/share/locale/ie/LC_MESSAGES/ +usr/share/locale/ig/ +usr/share/locale/ig/LC_MESSAGES/ +usr/share/locale/ii/ +usr/share/locale/ii/LC_MESSAGES/ +usr/share/locale/ijo/ +usr/share/locale/ijo/LC_MESSAGES/ +usr/share/locale/ik/ +usr/share/locale/ik/LC_MESSAGES/ +usr/share/locale/ilo/ +usr/share/locale/ilo/LC_MESSAGES/ +usr/share/locale/inc/ +usr/share/locale/inc/LC_MESSAGES/ +usr/share/locale/ine/ +usr/share/locale/ine/LC_MESSAGES/ +usr/share/locale/inh/ +usr/share/locale/inh/LC_MESSAGES/ +usr/share/locale/io/ +usr/share/locale/io/LC_MESSAGES/ +usr/share/locale/ira/ +usr/share/locale/ira/LC_MESSAGES/ +usr/share/locale/iro/ +usr/share/locale/iro/LC_MESSAGES/ +usr/share/locale/is/ +usr/share/locale/is/LC_MESSAGES/ +usr/share/locale/is/LC_MESSAGES/chkconfig.mo +usr/share/locale/is/LC_MESSAGES/popt.mo +usr/share/locale/it/ +usr/share/locale/it/LC_MESSAGES/ +usr/share/locale/it/LC_MESSAGES/chkconfig.mo +usr/share/locale/it/LC_MESSAGES/coreutils.mo +usr/share/locale/it/LC_MESSAGES/gawk.mo +usr/share/locale/it/LC_MESSAGES/grep.mo +usr/share/locale/it/LC_MESSAGES/popt.mo +usr/share/locale/it/LC_MESSAGES/sed.mo +usr/share/locale/it/LC_TIME/ +usr/share/locale/it/LC_TIME/coreutils.mo +usr/share/locale/it_CH/ +usr/share/locale/it_CH/LC_MESSAGES/ +usr/share/locale/it_IT/ +usr/share/locale/it_IT/LC_MESSAGES/ +usr/share/locale/iu/ +usr/share/locale/iu/LC_MESSAGES/ +usr/share/locale/ja/ +usr/share/locale/ja/LC_MESSAGES/ +usr/share/locale/ja/LC_MESSAGES/bash.mo +usr/share/locale/ja/LC_MESSAGES/chkconfig.mo +usr/share/locale/ja/LC_MESSAGES/coreutils.mo +usr/share/locale/ja/LC_MESSAGES/gawk.mo +usr/share/locale/ja/LC_MESSAGES/grep.mo +usr/share/locale/ja/LC_MESSAGES/popt.mo +usr/share/locale/ja/LC_MESSAGES/sed.mo +usr/share/locale/ja/LC_TIME/ +usr/share/locale/ja/LC_TIME/coreutils.mo +usr/share/locale/ja_JP/ +usr/share/locale/ja_JP/LC_MESSAGES/ +usr/share/locale/jbo/ +usr/share/locale/jbo/LC_MESSAGES/ +usr/share/locale/jpr/ +usr/share/locale/jpr/LC_MESSAGES/ +usr/share/locale/jrb/ +usr/share/locale/jrb/LC_MESSAGES/ +usr/share/locale/jv/ +usr/share/locale/jv/LC_MESSAGES/ +usr/share/locale/ka/ +usr/share/locale/ka/LC_MESSAGES/ +usr/share/locale/ka/LC_MESSAGES/chkconfig.mo +usr/share/locale/kaa/ +usr/share/locale/kaa/LC_MESSAGES/ +usr/share/locale/kab/ +usr/share/locale/kab/LC_MESSAGES/ +usr/share/locale/kac/ +usr/share/locale/kac/LC_MESSAGES/ +usr/share/locale/kam/ +usr/share/locale/kam/LC_MESSAGES/ +usr/share/locale/kar/ +usr/share/locale/kar/LC_MESSAGES/ +usr/share/locale/kaw/ +usr/share/locale/kaw/LC_MESSAGES/ +usr/share/locale/kbd/ +usr/share/locale/kbd/LC_MESSAGES/ +usr/share/locale/kg/ +usr/share/locale/kg/LC_MESSAGES/ +usr/share/locale/kha/ +usr/share/locale/kha/LC_MESSAGES/ +usr/share/locale/khi/ +usr/share/locale/khi/LC_MESSAGES/ +usr/share/locale/kho/ +usr/share/locale/kho/LC_MESSAGES/ +usr/share/locale/ki/ +usr/share/locale/ki/LC_MESSAGES/ +usr/share/locale/kj/ +usr/share/locale/kj/LC_MESSAGES/ +usr/share/locale/kk/ +usr/share/locale/kk/LC_MESSAGES/ +usr/share/locale/kk/LC_MESSAGES/coreutils.mo +usr/share/locale/kk/LC_TIME/ +usr/share/locale/kk/LC_TIME/coreutils.mo +usr/share/locale/kl/ +usr/share/locale/kl/LC_MESSAGES/ +usr/share/locale/km/ +usr/share/locale/km/LC_MESSAGES/ +usr/share/locale/km/LC_MESSAGES/chkconfig.mo +usr/share/locale/kmb/ +usr/share/locale/kmb/LC_MESSAGES/ +usr/share/locale/kn/ +usr/share/locale/kn/LC_MESSAGES/ +usr/share/locale/kn/LC_MESSAGES/chkconfig.mo +usr/share/locale/ko/ +usr/share/locale/ko/LC_MESSAGES/ +usr/share/locale/ko/LC_MESSAGES/chkconfig.mo +usr/share/locale/ko/LC_MESSAGES/coreutils.mo +usr/share/locale/ko/LC_MESSAGES/grep.mo +usr/share/locale/ko/LC_MESSAGES/popt.mo +usr/share/locale/ko/LC_MESSAGES/sed.mo +usr/share/locale/ko/LC_TIME/ +usr/share/locale/ko/LC_TIME/coreutils.mo +usr/share/locale/ko_KR/ +usr/share/locale/ko_KR/LC_MESSAGES/ +usr/share/locale/kok/ +usr/share/locale/kok/LC_MESSAGES/ +usr/share/locale/kos/ +usr/share/locale/kos/LC_MESSAGES/ +usr/share/locale/kpe/ +usr/share/locale/kpe/LC_MESSAGES/ +usr/share/locale/kr/ +usr/share/locale/kr/LC_MESSAGES/ +usr/share/locale/krc/ +usr/share/locale/krc/LC_MESSAGES/ +usr/share/locale/krl/ +usr/share/locale/krl/LC_MESSAGES/ +usr/share/locale/kro/ +usr/share/locale/kro/LC_MESSAGES/ +usr/share/locale/kru/ +usr/share/locale/kru/LC_MESSAGES/ +usr/share/locale/ks/ +usr/share/locale/ks/LC_MESSAGES/ +usr/share/locale/ks@devanagari/ +usr/share/locale/ks@devanagari/LC_MESSAGES/ +usr/share/locale/ku/ +usr/share/locale/ku/LC_MESSAGES/ +usr/share/locale/ku/LC_MESSAGES/chkconfig.mo +usr/share/locale/kum/ +usr/share/locale/kum/LC_MESSAGES/ +usr/share/locale/kut/ +usr/share/locale/kut/LC_MESSAGES/ +usr/share/locale/kv/ +usr/share/locale/kv/LC_MESSAGES/ +usr/share/locale/kw/ +usr/share/locale/kw/LC_MESSAGES/ +usr/share/locale/ky/ +usr/share/locale/ky/LC_MESSAGES/ +usr/share/locale/ky/LC_MESSAGES/grep.mo +usr/share/locale/la/ +usr/share/locale/la/LC_MESSAGES/ +usr/share/locale/lad/ +usr/share/locale/lad/LC_MESSAGES/ +usr/share/locale/lah/ +usr/share/locale/lah/LC_MESSAGES/ +usr/share/locale/lam/ +usr/share/locale/lam/LC_MESSAGES/ +usr/share/locale/lb/ +usr/share/locale/lb/LC_MESSAGES/ +usr/share/locale/lez/ +usr/share/locale/lez/LC_MESSAGES/ +usr/share/locale/lg/ +usr/share/locale/lg/LC_MESSAGES/ +usr/share/locale/lg/LC_MESSAGES/coreutils.mo +usr/share/locale/lg/LC_TIME/ +usr/share/locale/lg/LC_TIME/coreutils.mo +usr/share/locale/li/ +usr/share/locale/li/LC_MESSAGES/ +usr/share/locale/ln/ +usr/share/locale/ln/LC_MESSAGES/ +usr/share/locale/lo/ +usr/share/locale/lo/LC_MESSAGES/ +usr/share/locale/lo/LC_MESSAGES/chkconfig.mo +usr/share/locale/locale.alias +usr/share/locale/lol/ +usr/share/locale/lol/LC_MESSAGES/ +usr/share/locale/loz/ +usr/share/locale/loz/LC_MESSAGES/ +usr/share/locale/lt/ +usr/share/locale/lt/LC_MESSAGES/ +usr/share/locale/lt/LC_MESSAGES/bash.mo +usr/share/locale/lt/LC_MESSAGES/coreutils.mo +usr/share/locale/lt/LC_MESSAGES/grep.mo +usr/share/locale/lt/LC_TIME/ +usr/share/locale/lt/LC_TIME/coreutils.mo +usr/share/locale/lu/ +usr/share/locale/lu/LC_MESSAGES/ +usr/share/locale/lua/ +usr/share/locale/lua/LC_MESSAGES/ +usr/share/locale/lui/ +usr/share/locale/lui/LC_MESSAGES/ +usr/share/locale/lun/ +usr/share/locale/lun/LC_MESSAGES/ +usr/share/locale/luo/ +usr/share/locale/luo/LC_MESSAGES/ +usr/share/locale/lus/ +usr/share/locale/lus/LC_MESSAGES/ +usr/share/locale/lv/ +usr/share/locale/lv/LC_MESSAGES/ +usr/share/locale/lv/LC_MESSAGES/chkconfig.mo +usr/share/locale/lv_LV/ +usr/share/locale/lv_LV/LC_MESSAGES/ +usr/share/locale/mad/ +usr/share/locale/mad/LC_MESSAGES/ +usr/share/locale/mag/ +usr/share/locale/mag/LC_MESSAGES/ +usr/share/locale/mai/ +usr/share/locale/mai/LC_MESSAGES/ +usr/share/locale/mai/LC_MESSAGES/chkconfig.mo +usr/share/locale/mak/ +usr/share/locale/mak/LC_MESSAGES/ +usr/share/locale/man/ +usr/share/locale/man/LC_MESSAGES/ +usr/share/locale/map/ +usr/share/locale/map/LC_MESSAGES/ +usr/share/locale/mas/ +usr/share/locale/mas/LC_MESSAGES/ +usr/share/locale/mdf/ +usr/share/locale/mdf/LC_MESSAGES/ +usr/share/locale/mdr/ +usr/share/locale/mdr/LC_MESSAGES/ +usr/share/locale/men/ +usr/share/locale/men/LC_MESSAGES/ +usr/share/locale/mg/ +usr/share/locale/mg/LC_MESSAGES/ +usr/share/locale/mga/ +usr/share/locale/mga/LC_MESSAGES/ +usr/share/locale/mh/ +usr/share/locale/mh/LC_MESSAGES/ +usr/share/locale/mi/ +usr/share/locale/mi/LC_MESSAGES/ +usr/share/locale/mic/ +usr/share/locale/mic/LC_MESSAGES/ +usr/share/locale/min/ +usr/share/locale/min/LC_MESSAGES/ +usr/share/locale/mis/ +usr/share/locale/mis/LC_MESSAGES/ +usr/share/locale/mk/ +usr/share/locale/mk/LC_MESSAGES/ +usr/share/locale/mk/LC_MESSAGES/chkconfig.mo +usr/share/locale/mkh/ +usr/share/locale/mkh/LC_MESSAGES/ +usr/share/locale/ml/ +usr/share/locale/ml/LC_MESSAGES/ +usr/share/locale/ml/LC_MESSAGES/chkconfig.mo +usr/share/locale/mn/ +usr/share/locale/mn/LC_MESSAGES/ +usr/share/locale/mnc/ +usr/share/locale/mnc/LC_MESSAGES/ +usr/share/locale/mni/ +usr/share/locale/mni/LC_MESSAGES/ +usr/share/locale/mno/ +usr/share/locale/mno/LC_MESSAGES/ +usr/share/locale/mo/ +usr/share/locale/mo/LC_MESSAGES/ +usr/share/locale/moh/ +usr/share/locale/moh/LC_MESSAGES/ +usr/share/locale/mos/ +usr/share/locale/mos/LC_MESSAGES/ +usr/share/locale/mr/ +usr/share/locale/mr/LC_MESSAGES/ +usr/share/locale/mr/LC_MESSAGES/chkconfig.mo +usr/share/locale/ms/ +usr/share/locale/ms/LC_MESSAGES/ +usr/share/locale/ms/LC_MESSAGES/chkconfig.mo +usr/share/locale/ms/LC_MESSAGES/coreutils.mo +usr/share/locale/ms/LC_TIME/ +usr/share/locale/ms/LC_TIME/coreutils.mo +usr/share/locale/ms_MY/ +usr/share/locale/ms_MY/LC_MESSAGES/ +usr/share/locale/mt/ +usr/share/locale/mt/LC_MESSAGES/ +usr/share/locale/mul/ +usr/share/locale/mul/LC_MESSAGES/ +usr/share/locale/mun/ +usr/share/locale/mun/LC_MESSAGES/ +usr/share/locale/mus/ +usr/share/locale/mus/LC_MESSAGES/ +usr/share/locale/mwl/ +usr/share/locale/mwl/LC_MESSAGES/ +usr/share/locale/mwr/ +usr/share/locale/mwr/LC_MESSAGES/ +usr/share/locale/my/ +usr/share/locale/my/LC_MESSAGES/ +usr/share/locale/my/LC_MESSAGES/chkconfig.mo +usr/share/locale/my_MM/ +usr/share/locale/my_MM/LC_MESSAGES/ +usr/share/locale/myn/ +usr/share/locale/myn/LC_MESSAGES/ +usr/share/locale/myv/ +usr/share/locale/myv/LC_MESSAGES/ +usr/share/locale/na/ +usr/share/locale/na/LC_MESSAGES/ +usr/share/locale/nah/ +usr/share/locale/nah/LC_MESSAGES/ +usr/share/locale/nai/ +usr/share/locale/nai/LC_MESSAGES/ +usr/share/locale/nap/ +usr/share/locale/nap/LC_MESSAGES/ +usr/share/locale/nb/ +usr/share/locale/nb/LC_MESSAGES/ +usr/share/locale/nb/LC_MESSAGES/chkconfig.mo +usr/share/locale/nb/LC_MESSAGES/coreutils.mo +usr/share/locale/nb/LC_MESSAGES/grep.mo +usr/share/locale/nb/LC_MESSAGES/popt.mo +usr/share/locale/nb/LC_MESSAGES/sed.mo +usr/share/locale/nb/LC_TIME/ +usr/share/locale/nb/LC_TIME/coreutils.mo +usr/share/locale/nb_NO/ +usr/share/locale/nb_NO/LC_MESSAGES/ +usr/share/locale/nd/ +usr/share/locale/nd/LC_MESSAGES/ +usr/share/locale/nds/ +usr/share/locale/nds/LC_MESSAGES/ +usr/share/locale/nds/LC_MESSAGES/chkconfig.mo +usr/share/locale/nds@NFE/ +usr/share/locale/nds@NFE/LC_MESSAGES/ +usr/share/locale/nds_DE/ +usr/share/locale/nds_DE/LC_MESSAGES/ +usr/share/locale/ne/ +usr/share/locale/ne/LC_MESSAGES/ +usr/share/locale/new/ +usr/share/locale/new/LC_MESSAGES/ +usr/share/locale/ng/ +usr/share/locale/ng/LC_MESSAGES/ +usr/share/locale/nia/ +usr/share/locale/nia/LC_MESSAGES/ +usr/share/locale/nic/ +usr/share/locale/nic/LC_MESSAGES/ +usr/share/locale/niu/ +usr/share/locale/niu/LC_MESSAGES/ +usr/share/locale/nl/ +usr/share/locale/nl/LC_MESSAGES/ +usr/share/locale/nl/LC_MESSAGES/bash.mo +usr/share/locale/nl/LC_MESSAGES/chkconfig.mo +usr/share/locale/nl/LC_MESSAGES/coreutils.mo +usr/share/locale/nl/LC_MESSAGES/gawk.mo +usr/share/locale/nl/LC_MESSAGES/grep.mo +usr/share/locale/nl/LC_MESSAGES/popt.mo +usr/share/locale/nl/LC_MESSAGES/sed.mo +usr/share/locale/nl/LC_TIME/ +usr/share/locale/nl/LC_TIME/coreutils.mo +usr/share/locale/nl_BE/ +usr/share/locale/nl_BE/LC_MESSAGES/ +usr/share/locale/nl_NL/ +usr/share/locale/nl_NL/LC_MESSAGES/ +usr/share/locale/nn/ +usr/share/locale/nn/LC_MESSAGES/ +usr/share/locale/nn/LC_MESSAGES/chkconfig.mo +usr/share/locale/no/ +usr/share/locale/no/LC_MESSAGES/ +usr/share/locale/nog/ +usr/share/locale/nog/LC_MESSAGES/ +usr/share/locale/non/ +usr/share/locale/non/LC_MESSAGES/ +usr/share/locale/nqo/ +usr/share/locale/nqo/LC_MESSAGES/ +usr/share/locale/nr/ +usr/share/locale/nr/LC_MESSAGES/ +usr/share/locale/nso/ +usr/share/locale/nso/LC_MESSAGES/ +usr/share/locale/nub/ +usr/share/locale/nub/LC_MESSAGES/ +usr/share/locale/nv/ +usr/share/locale/nv/LC_MESSAGES/ +usr/share/locale/nwc/ +usr/share/locale/nwc/LC_MESSAGES/ +usr/share/locale/ny/ +usr/share/locale/ny/LC_MESSAGES/ +usr/share/locale/nym/ +usr/share/locale/nym/LC_MESSAGES/ +usr/share/locale/nyn/ +usr/share/locale/nyn/LC_MESSAGES/ +usr/share/locale/nyo/ +usr/share/locale/nyo/LC_MESSAGES/ +usr/share/locale/nzi/ +usr/share/locale/nzi/LC_MESSAGES/ +usr/share/locale/oc/ +usr/share/locale/oc/LC_MESSAGES/ +usr/share/locale/oj/ +usr/share/locale/oj/LC_MESSAGES/ +usr/share/locale/om/ +usr/share/locale/om/LC_MESSAGES/ +usr/share/locale/or/ +usr/share/locale/or/LC_MESSAGES/ +usr/share/locale/or/LC_MESSAGES/chkconfig.mo +usr/share/locale/os/ +usr/share/locale/os/LC_MESSAGES/ +usr/share/locale/osa/ +usr/share/locale/osa/LC_MESSAGES/ +usr/share/locale/ota/ +usr/share/locale/ota/LC_MESSAGES/ +usr/share/locale/oto/ +usr/share/locale/oto/LC_MESSAGES/ +usr/share/locale/pa/ +usr/share/locale/pa/LC_MESSAGES/ +usr/share/locale/pa/LC_MESSAGES/chkconfig.mo +usr/share/locale/pa/LC_MESSAGES/grep.mo +usr/share/locale/paa/ +usr/share/locale/paa/LC_MESSAGES/ +usr/share/locale/pag/ +usr/share/locale/pag/LC_MESSAGES/ +usr/share/locale/pal/ +usr/share/locale/pal/LC_MESSAGES/ +usr/share/locale/pam/ +usr/share/locale/pam/LC_MESSAGES/ +usr/share/locale/pap/ +usr/share/locale/pap/LC_MESSAGES/ +usr/share/locale/pau/ +usr/share/locale/pau/LC_MESSAGES/ +usr/share/locale/peo/ +usr/share/locale/peo/LC_MESSAGES/ +usr/share/locale/phi/ +usr/share/locale/phi/LC_MESSAGES/ +usr/share/locale/phn/ +usr/share/locale/phn/LC_MESSAGES/ +usr/share/locale/pi/ +usr/share/locale/pi/LC_MESSAGES/ +usr/share/locale/pl/ +usr/share/locale/pl/LC_MESSAGES/ +usr/share/locale/pl/LC_MESSAGES/bash.mo +usr/share/locale/pl/LC_MESSAGES/chkconfig.mo +usr/share/locale/pl/LC_MESSAGES/coreutils.mo +usr/share/locale/pl/LC_MESSAGES/gawk.mo +usr/share/locale/pl/LC_MESSAGES/grep.mo +usr/share/locale/pl/LC_MESSAGES/popt.mo +usr/share/locale/pl/LC_MESSAGES/sed.mo +usr/share/locale/pl/LC_TIME/ +usr/share/locale/pl/LC_TIME/coreutils.mo +usr/share/locale/pl_PL/ +usr/share/locale/pl_PL/LC_MESSAGES/ +usr/share/locale/pon/ +usr/share/locale/pon/LC_MESSAGES/ +usr/share/locale/pra/ +usr/share/locale/pra/LC_MESSAGES/ +usr/share/locale/pro/ +usr/share/locale/pro/LC_MESSAGES/ +usr/share/locale/ps/ +usr/share/locale/ps/LC_MESSAGES/ +usr/share/locale/pt/ +usr/share/locale/pt/LC_MESSAGES/ +usr/share/locale/pt/LC_MESSAGES/chkconfig.mo +usr/share/locale/pt/LC_MESSAGES/coreutils.mo +usr/share/locale/pt/LC_MESSAGES/grep.mo +usr/share/locale/pt/LC_MESSAGES/popt.mo +usr/share/locale/pt/LC_MESSAGES/sed.mo +usr/share/locale/pt/LC_TIME/ +usr/share/locale/pt/LC_TIME/coreutils.mo +usr/share/locale/pt_BR/ +usr/share/locale/pt_BR/LC_MESSAGES/ +usr/share/locale/pt_BR/LC_MESSAGES/bash.mo +usr/share/locale/pt_BR/LC_MESSAGES/chkconfig.mo +usr/share/locale/pt_BR/LC_MESSAGES/coreutils.mo +usr/share/locale/pt_BR/LC_MESSAGES/grep.mo +usr/share/locale/pt_BR/LC_MESSAGES/sed.mo +usr/share/locale/pt_BR/LC_TIME/ +usr/share/locale/pt_BR/LC_TIME/coreutils.mo +usr/share/locale/pt_PT/ +usr/share/locale/pt_PT/LC_MESSAGES/ +usr/share/locale/qaa-qtz/ +usr/share/locale/qaa-qtz/LC_MESSAGES/ +usr/share/locale/qu/ +usr/share/locale/qu/LC_MESSAGES/ +usr/share/locale/raj/ +usr/share/locale/raj/LC_MESSAGES/ +usr/share/locale/rap/ +usr/share/locale/rap/LC_MESSAGES/ +usr/share/locale/rar/ +usr/share/locale/rar/LC_MESSAGES/ +usr/share/locale/rm/ +usr/share/locale/rm/LC_MESSAGES/ +usr/share/locale/rn/ +usr/share/locale/rn/LC_MESSAGES/ +usr/share/locale/ro/ +usr/share/locale/ro/LC_MESSAGES/ +usr/share/locale/ro/LC_MESSAGES/bash.mo +usr/share/locale/ro/LC_MESSAGES/chkconfig.mo +usr/share/locale/ro/LC_MESSAGES/coreutils.mo +usr/share/locale/ro/LC_MESSAGES/grep.mo +usr/share/locale/ro/LC_MESSAGES/popt.mo +usr/share/locale/ro/LC_MESSAGES/sed.mo +usr/share/locale/ro/LC_TIME/ +usr/share/locale/ro/LC_TIME/coreutils.mo +usr/share/locale/roa/ +usr/share/locale/roa/LC_MESSAGES/ +usr/share/locale/rom/ +usr/share/locale/rom/LC_MESSAGES/ +usr/share/locale/ru/ +usr/share/locale/ru/LC_MESSAGES/ +usr/share/locale/ru/LC_MESSAGES/bash.mo +usr/share/locale/ru/LC_MESSAGES/chkconfig.mo +usr/share/locale/ru/LC_MESSAGES/coreutils.mo +usr/share/locale/ru/LC_MESSAGES/grep.mo +usr/share/locale/ru/LC_MESSAGES/popt.mo +usr/share/locale/ru/LC_MESSAGES/sed.mo +usr/share/locale/ru/LC_TIME/ +usr/share/locale/ru/LC_TIME/coreutils.mo +usr/share/locale/ru_RU/ +usr/share/locale/ru_RU/LC_MESSAGES/ +usr/share/locale/rup/ +usr/share/locale/rup/LC_MESSAGES/ +usr/share/locale/rw/ +usr/share/locale/rw/LC_MESSAGES/ +usr/share/locale/sa/ +usr/share/locale/sa/LC_MESSAGES/ +usr/share/locale/sad/ +usr/share/locale/sad/LC_MESSAGES/ +usr/share/locale/sah/ +usr/share/locale/sah/LC_MESSAGES/ +usr/share/locale/sai/ +usr/share/locale/sai/LC_MESSAGES/ +usr/share/locale/sal/ +usr/share/locale/sal/LC_MESSAGES/ +usr/share/locale/sam/ +usr/share/locale/sam/LC_MESSAGES/ +usr/share/locale/sas/ +usr/share/locale/sas/LC_MESSAGES/ +usr/share/locale/sat/ +usr/share/locale/sat/LC_MESSAGES/ +usr/share/locale/sc/ +usr/share/locale/sc/LC_MESSAGES/ +usr/share/locale/scn/ +usr/share/locale/scn/LC_MESSAGES/ +usr/share/locale/sco/ +usr/share/locale/sco/LC_MESSAGES/ +usr/share/locale/sd/ +usr/share/locale/sd/LC_MESSAGES/ +usr/share/locale/se/ +usr/share/locale/se/LC_MESSAGES/ +usr/share/locale/sel/ +usr/share/locale/sel/LC_MESSAGES/ +usr/share/locale/sem/ +usr/share/locale/sem/LC_MESSAGES/ +usr/share/locale/sg/ +usr/share/locale/sg/LC_MESSAGES/ +usr/share/locale/sga/ +usr/share/locale/sga/LC_MESSAGES/ +usr/share/locale/sgn/ +usr/share/locale/sgn/LC_MESSAGES/ +usr/share/locale/shn/ +usr/share/locale/shn/LC_MESSAGES/ +usr/share/locale/si/ +usr/share/locale/si/LC_MESSAGES/ +usr/share/locale/si/LC_MESSAGES/chkconfig.mo +usr/share/locale/sid/ +usr/share/locale/sid/LC_MESSAGES/ +usr/share/locale/sio/ +usr/share/locale/sio/LC_MESSAGES/ +usr/share/locale/sit/ +usr/share/locale/sit/LC_MESSAGES/ +usr/share/locale/sk/ +usr/share/locale/sk/LC_MESSAGES/ +usr/share/locale/sk/LC_MESSAGES/bash.mo +usr/share/locale/sk/LC_MESSAGES/chkconfig.mo +usr/share/locale/sk/LC_MESSAGES/coreutils.mo +usr/share/locale/sk/LC_MESSAGES/grep.mo +usr/share/locale/sk/LC_MESSAGES/popt.mo +usr/share/locale/sk/LC_MESSAGES/sed.mo +usr/share/locale/sk/LC_TIME/ +usr/share/locale/sk/LC_TIME/coreutils.mo +usr/share/locale/sl/ +usr/share/locale/sl/LC_MESSAGES/ +usr/share/locale/sl/LC_MESSAGES/chkconfig.mo +usr/share/locale/sl/LC_MESSAGES/coreutils.mo +usr/share/locale/sl/LC_MESSAGES/grep.mo +usr/share/locale/sl/LC_MESSAGES/popt.mo +usr/share/locale/sl/LC_MESSAGES/sed.mo +usr/share/locale/sl/LC_TIME/ +usr/share/locale/sl/LC_TIME/coreutils.mo +usr/share/locale/sl_SI/ +usr/share/locale/sl_SI/LC_MESSAGES/ +usr/share/locale/sla/ +usr/share/locale/sla/LC_MESSAGES/ +usr/share/locale/sm/ +usr/share/locale/sm/LC_MESSAGES/ +usr/share/locale/sma/ +usr/share/locale/sma/LC_MESSAGES/ +usr/share/locale/smi/ +usr/share/locale/smi/LC_MESSAGES/ +usr/share/locale/smj/ +usr/share/locale/smj/LC_MESSAGES/ +usr/share/locale/smn/ +usr/share/locale/smn/LC_MESSAGES/ +usr/share/locale/sms/ +usr/share/locale/sms/LC_MESSAGES/ +usr/share/locale/sn/ +usr/share/locale/sn/LC_MESSAGES/ +usr/share/locale/snk/ +usr/share/locale/snk/LC_MESSAGES/ +usr/share/locale/so/ +usr/share/locale/so/LC_MESSAGES/ +usr/share/locale/sog/ +usr/share/locale/sog/LC_MESSAGES/ +usr/share/locale/son/ +usr/share/locale/son/LC_MESSAGES/ +usr/share/locale/sq/ +usr/share/locale/sq/LC_MESSAGES/ +usr/share/locale/sq/LC_MESSAGES/chkconfig.mo +usr/share/locale/sq_AL/ +usr/share/locale/sq_AL/LC_MESSAGES/ +usr/share/locale/sr/ +usr/share/locale/sr/LC_MESSAGES/ +usr/share/locale/sr/LC_MESSAGES/chkconfig.mo +usr/share/locale/sr/LC_MESSAGES/grep.mo +usr/share/locale/sr/LC_MESSAGES/sed.mo +usr/share/locale/sr@Latn/ +usr/share/locale/sr@Latn/LC_MESSAGES/ +usr/share/locale/sr@ije/ +usr/share/locale/sr@ije/LC_MESSAGES/ +usr/share/locale/sr@ijekavian/ +usr/share/locale/sr@ijekavian/LC_MESSAGES/ +usr/share/locale/sr@ijekavianlatin/ +usr/share/locale/sr@ijekavianlatin/LC_MESSAGES/ +usr/share/locale/sr@latin/ +usr/share/locale/sr@latin/LC_MESSAGES/ +usr/share/locale/sr@latin/LC_MESSAGES/chkconfig.mo +usr/share/locale/sr_RS/ +usr/share/locale/sr_RS/LC_MESSAGES/ +usr/share/locale/srn/ +usr/share/locale/srn/LC_MESSAGES/ +usr/share/locale/srr/ +usr/share/locale/srr/LC_MESSAGES/ +usr/share/locale/ss/ +usr/share/locale/ss/LC_MESSAGES/ +usr/share/locale/ssa/ +usr/share/locale/ssa/LC_MESSAGES/ +usr/share/locale/st/ +usr/share/locale/st/LC_MESSAGES/ +usr/share/locale/su/ +usr/share/locale/su/LC_MESSAGES/ +usr/share/locale/suk/ +usr/share/locale/suk/LC_MESSAGES/ +usr/share/locale/sus/ +usr/share/locale/sus/LC_MESSAGES/ +usr/share/locale/sux/ +usr/share/locale/sux/LC_MESSAGES/ +usr/share/locale/sv/ +usr/share/locale/sv/LC_MESSAGES/ +usr/share/locale/sv/LC_MESSAGES/bash.mo +usr/share/locale/sv/LC_MESSAGES/chkconfig.mo +usr/share/locale/sv/LC_MESSAGES/coreutils.mo +usr/share/locale/sv/LC_MESSAGES/gawk.mo +usr/share/locale/sv/LC_MESSAGES/grep.mo +usr/share/locale/sv/LC_MESSAGES/popt.mo +usr/share/locale/sv/LC_MESSAGES/sed.mo +usr/share/locale/sv/LC_TIME/ +usr/share/locale/sv/LC_TIME/coreutils.mo +usr/share/locale/sv_SE/ +usr/share/locale/sv_SE/LC_MESSAGES/ +usr/share/locale/sw/ +usr/share/locale/sw/LC_MESSAGES/ +usr/share/locale/syc/ +usr/share/locale/syc/LC_MESSAGES/ +usr/share/locale/syr/ +usr/share/locale/syr/LC_MESSAGES/ +usr/share/locale/ta/ +usr/share/locale/ta/LC_MESSAGES/ +usr/share/locale/ta/LC_MESSAGES/chkconfig.mo +usr/share/locale/tai/ +usr/share/locale/tai/LC_MESSAGES/ +usr/share/locale/te/ +usr/share/locale/te/LC_MESSAGES/ +usr/share/locale/te/LC_MESSAGES/chkconfig.mo +usr/share/locale/tem/ +usr/share/locale/tem/LC_MESSAGES/ +usr/share/locale/ter/ +usr/share/locale/ter/LC_MESSAGES/ +usr/share/locale/tet/ +usr/share/locale/tet/LC_MESSAGES/ +usr/share/locale/tg/ +usr/share/locale/tg/LC_MESSAGES/ +usr/share/locale/tg/LC_MESSAGES/chkconfig.mo +usr/share/locale/th/ +usr/share/locale/th/LC_MESSAGES/ +usr/share/locale/th/LC_MESSAGES/chkconfig.mo +usr/share/locale/th/LC_MESSAGES/grep.mo +usr/share/locale/ti/ +usr/share/locale/ti/LC_MESSAGES/ +usr/share/locale/tig/ +usr/share/locale/tig/LC_MESSAGES/ +usr/share/locale/tiv/ +usr/share/locale/tiv/LC_MESSAGES/ +usr/share/locale/tk/ +usr/share/locale/tk/LC_MESSAGES/ +usr/share/locale/tkl/ +usr/share/locale/tkl/LC_MESSAGES/ +usr/share/locale/tl/ +usr/share/locale/tl/LC_MESSAGES/ +usr/share/locale/tlh/ +usr/share/locale/tlh/LC_MESSAGES/ +usr/share/locale/tli/ +usr/share/locale/tli/LC_MESSAGES/ +usr/share/locale/tmh/ +usr/share/locale/tmh/LC_MESSAGES/ +usr/share/locale/tn/ +usr/share/locale/tn/LC_MESSAGES/ +usr/share/locale/to/ +usr/share/locale/to/LC_MESSAGES/ +usr/share/locale/tog/ +usr/share/locale/tog/LC_MESSAGES/ +usr/share/locale/tpi/ +usr/share/locale/tpi/LC_MESSAGES/ +usr/share/locale/tr/ +usr/share/locale/tr/LC_MESSAGES/ +usr/share/locale/tr/LC_MESSAGES/bash.mo +usr/share/locale/tr/LC_MESSAGES/chkconfig.mo +usr/share/locale/tr/LC_MESSAGES/coreutils.mo +usr/share/locale/tr/LC_MESSAGES/grep.mo +usr/share/locale/tr/LC_MESSAGES/popt.mo +usr/share/locale/tr/LC_MESSAGES/sed.mo +usr/share/locale/tr/LC_TIME/ +usr/share/locale/tr/LC_TIME/coreutils.mo +usr/share/locale/ts/ +usr/share/locale/ts/LC_MESSAGES/ +usr/share/locale/tsi/ +usr/share/locale/tsi/LC_MESSAGES/ +usr/share/locale/tt/ +usr/share/locale/tt/LC_MESSAGES/ +usr/share/locale/tum/ +usr/share/locale/tum/LC_MESSAGES/ +usr/share/locale/tup/ +usr/share/locale/tup/LC_MESSAGES/ +usr/share/locale/tut/ +usr/share/locale/tut/LC_MESSAGES/ +usr/share/locale/tvl/ +usr/share/locale/tvl/LC_MESSAGES/ +usr/share/locale/tw/ +usr/share/locale/tw/LC_MESSAGES/ +usr/share/locale/ty/ +usr/share/locale/ty/LC_MESSAGES/ +usr/share/locale/tyv/ +usr/share/locale/tyv/LC_MESSAGES/ +usr/share/locale/udm/ +usr/share/locale/udm/LC_MESSAGES/ +usr/share/locale/ug/ +usr/share/locale/ug/LC_MESSAGES/ +usr/share/locale/uga/ +usr/share/locale/uga/LC_MESSAGES/ +usr/share/locale/uk/ +usr/share/locale/uk/LC_MESSAGES/ +usr/share/locale/uk/LC_MESSAGES/bash.mo +usr/share/locale/uk/LC_MESSAGES/chkconfig.mo +usr/share/locale/uk/LC_MESSAGES/coreutils.mo +usr/share/locale/uk/LC_MESSAGES/grep.mo +usr/share/locale/uk/LC_MESSAGES/popt.mo +usr/share/locale/uk/LC_MESSAGES/sed.mo +usr/share/locale/uk/LC_TIME/ +usr/share/locale/uk/LC_TIME/coreutils.mo +usr/share/locale/uk_UA/ +usr/share/locale/uk_UA/LC_MESSAGES/ +usr/share/locale/umb/ +usr/share/locale/umb/LC_MESSAGES/ +usr/share/locale/und/ +usr/share/locale/und/LC_MESSAGES/ +usr/share/locale/ur/ +usr/share/locale/ur/LC_MESSAGES/ +usr/share/locale/ur/LC_MESSAGES/chkconfig.mo +usr/share/locale/ur_PK/ +usr/share/locale/ur_PK/LC_MESSAGES/ +usr/share/locale/uz/ +usr/share/locale/uz/LC_MESSAGES/ +usr/share/locale/uz@Latn/ +usr/share/locale/uz@Latn/LC_MESSAGES/ +usr/share/locale/uz@cyrillic/ +usr/share/locale/uz@cyrillic/LC_MESSAGES/ +usr/share/locale/vai/ +usr/share/locale/vai/LC_MESSAGES/ +usr/share/locale/ve/ +usr/share/locale/ve/LC_MESSAGES/ +usr/share/locale/vi/ +usr/share/locale/vi/LC_MESSAGES/ +usr/share/locale/vi/LC_MESSAGES/bash.mo +usr/share/locale/vi/LC_MESSAGES/chkconfig.mo +usr/share/locale/vi/LC_MESSAGES/coreutils.mo +usr/share/locale/vi/LC_MESSAGES/gawk.mo +usr/share/locale/vi/LC_MESSAGES/grep.mo +usr/share/locale/vi/LC_MESSAGES/popt.mo +usr/share/locale/vi/LC_MESSAGES/sed.mo +usr/share/locale/vi/LC_TIME/ +usr/share/locale/vi/LC_TIME/coreutils.mo +usr/share/locale/vo/ +usr/share/locale/vo/LC_MESSAGES/ +usr/share/locale/vot/ +usr/share/locale/vot/LC_MESSAGES/ +usr/share/locale/wa/ +usr/share/locale/wa/LC_MESSAGES/ +usr/share/locale/wa/LC_MESSAGES/popt.mo +usr/share/locale/wak/ +usr/share/locale/wak/LC_MESSAGES/ +usr/share/locale/wal/ +usr/share/locale/wal/LC_MESSAGES/ +usr/share/locale/war/ +usr/share/locale/war/LC_MESSAGES/ +usr/share/locale/was/ +usr/share/locale/was/LC_MESSAGES/ +usr/share/locale/wen/ +usr/share/locale/wen/LC_MESSAGES/ +usr/share/locale/wo/ +usr/share/locale/wo/LC_MESSAGES/ +usr/share/locale/xal/ +usr/share/locale/xal/LC_MESSAGES/ +usr/share/locale/xh/ +usr/share/locale/xh/LC_MESSAGES/ +usr/share/locale/yao/ +usr/share/locale/yao/LC_MESSAGES/ +usr/share/locale/yap/ +usr/share/locale/yap/LC_MESSAGES/ +usr/share/locale/yi/ +usr/share/locale/yi/LC_MESSAGES/ +usr/share/locale/yo/ +usr/share/locale/yo/LC_MESSAGES/ +usr/share/locale/ypk/ +usr/share/locale/ypk/LC_MESSAGES/ +usr/share/locale/za/ +usr/share/locale/za/LC_MESSAGES/ +usr/share/locale/zap/ +usr/share/locale/zap/LC_MESSAGES/ +usr/share/locale/zbl/ +usr/share/locale/zbl/LC_MESSAGES/ +usr/share/locale/zen/ +usr/share/locale/zen/LC_MESSAGES/ +usr/share/locale/zgh/ +usr/share/locale/zgh/LC_MESSAGES/ +usr/share/locale/zh/ +usr/share/locale/zh/LC_MESSAGES/ +usr/share/locale/zh_CN.GB2312/ +usr/share/locale/zh_CN.GB2312/LC_MESSAGES/ +usr/share/locale/zh_CN/ +usr/share/locale/zh_CN/LC_MESSAGES/ +usr/share/locale/zh_CN/LC_MESSAGES/bash.mo +usr/share/locale/zh_CN/LC_MESSAGES/chkconfig.mo +usr/share/locale/zh_CN/LC_MESSAGES/coreutils.mo +usr/share/locale/zh_CN/LC_MESSAGES/grep.mo +usr/share/locale/zh_CN/LC_MESSAGES/popt.mo +usr/share/locale/zh_CN/LC_MESSAGES/sed.mo +usr/share/locale/zh_CN/LC_TIME/ +usr/share/locale/zh_CN/LC_TIME/coreutils.mo +usr/share/locale/zh_HK/ +usr/share/locale/zh_HK/LC_MESSAGES/ +usr/share/locale/zh_TW.Big5/ +usr/share/locale/zh_TW.Big5/LC_MESSAGES/ +usr/share/locale/zh_TW/ +usr/share/locale/zh_TW/LC_MESSAGES/ +usr/share/locale/zh_TW/LC_MESSAGES/bash.mo +usr/share/locale/zh_TW/LC_MESSAGES/chkconfig.mo +usr/share/locale/zh_TW/LC_MESSAGES/coreutils.mo +usr/share/locale/zh_TW/LC_MESSAGES/grep.mo +usr/share/locale/zh_TW/LC_MESSAGES/sed.mo +usr/share/locale/zh_TW/LC_TIME/ +usr/share/locale/zh_TW/LC_TIME/coreutils.mo +usr/share/locale/znd/ +usr/share/locale/znd/LC_MESSAGES/ +usr/share/locale/zu/ +usr/share/locale/zu/LC_MESSAGES/ +usr/share/locale/zun/ +usr/share/locale/zun/LC_MESSAGES/ +usr/share/locale/zxx/ +usr/share/locale/zxx/LC_MESSAGES/ +usr/share/locale/zza/ +usr/share/locale/zza/LC_MESSAGES/ +usr/share/man/ +usr/share/man/man0p/ +usr/share/man/man1/ +usr/share/man/man1/..1.gz +usr/share/man/man1/:.1.gz +usr/share/man/man1/[.1.gz +usr/share/man/man1/alias.1.gz +usr/share/man/man1/arch.1.gz +usr/share/man/man1/awk.1.gz +usr/share/man/man1/base64.1.gz +usr/share/man/man1/basename.1.gz +usr/share/man/man1/bash.1.gz +usr/share/man/man1/bashbug-64.1.gz +usr/share/man/man1/bashbug.1.gz +usr/share/man/man1/bg.1.gz +usr/share/man/man1/bind.1.gz +usr/share/man/man1/break.1.gz +usr/share/man/man1/builtin.1.gz +usr/share/man/man1/builtins.1.gz +usr/share/man/man1/caller.1.gz +usr/share/man/man1/capsh.1.gz +usr/share/man/man1/captoinfo.1m.gz +usr/share/man/man1/cat.1.gz +usr/share/man/man1/cd.1.gz +usr/share/man/man1/chcon.1.gz +usr/share/man/man1/chgrp.1.gz +usr/share/man/man1/chmod.1.gz +usr/share/man/man1/chown.1.gz +usr/share/man/man1/chroot.1.gz +usr/share/man/man1/cksum.1.gz +usr/share/man/man1/clear.1.gz +usr/share/man/man1/comm.1.gz +usr/share/man/man1/command.1.gz +usr/share/man/man1/compgen.1.gz +usr/share/man/man1/complete.1.gz +usr/share/man/man1/compopt.1.gz +usr/share/man/man1/continue.1.gz +usr/share/man/man1/cp.1.gz +usr/share/man/man1/csplit.1.gz +usr/share/man/man1/cut.1.gz +usr/share/man/man1/date.1.gz +usr/share/man/man1/dd.1.gz +usr/share/man/man1/declare.1.gz +usr/share/man/man1/df.1.gz +usr/share/man/man1/dgawk.1.gz +usr/share/man/man1/dir.1.gz +usr/share/man/man1/dircolors.1.gz +usr/share/man/man1/dirname.1.gz +usr/share/man/man1/dirs.1.gz +usr/share/man/man1/disown.1.gz +usr/share/man/man1/du.1.gz +usr/share/man/man1/echo.1.gz +usr/share/man/man1/egrep.1.gz +usr/share/man/man1/enable.1.gz +usr/share/man/man1/env.1.gz +usr/share/man/man1/eval.1.gz +usr/share/man/man1/exec.1.gz +usr/share/man/man1/exit.1.gz +usr/share/man/man1/expand.1.gz +usr/share/man/man1/export.1.gz +usr/share/man/man1/expr.1.gz +usr/share/man/man1/factor.1.gz +usr/share/man/man1/false.1.gz +usr/share/man/man1/fc.1.gz +usr/share/man/man1/fg.1.gz +usr/share/man/man1/fgrep.1.gz +usr/share/man/man1/fmt.1.gz +usr/share/man/man1/fold.1.gz +usr/share/man/man1/gawk.1.gz +usr/share/man/man1/getopts.1.gz +usr/share/man/man1/grep.1.gz +usr/share/man/man1/groups.1.gz +usr/share/man/man1/hash.1.gz +usr/share/man/man1/head.1.gz +usr/share/man/man1/help.1.gz +usr/share/man/man1/history.1.gz +usr/share/man/man1/hostid.1.gz +usr/share/man/man1/id.1.gz +usr/share/man/man1/igawk.1.gz +usr/share/man/man1/info.1.gz +usr/share/man/man1/infocmp.1m.gz +usr/share/man/man1/infokey.1.gz +usr/share/man/man1/infotocap.1m.gz +usr/share/man/man1/install-info.1.gz +usr/share/man/man1/install.1.gz +usr/share/man/man1/jobs.1.gz +usr/share/man/man1/join.1.gz +usr/share/man/man1/let.1.gz +usr/share/man/man1/link.1.gz +usr/share/man/man1/ln.1.gz +usr/share/man/man1/local.1.gz +usr/share/man/man1/logname.1.gz +usr/share/man/man1/logout.1.gz +usr/share/man/man1/ls.1.gz +usr/share/man/man1/mapfile.1.gz +usr/share/man/man1/md5sum.1.gz +usr/share/man/man1/mkdir.1.gz +usr/share/man/man1/mkfifo.1.gz +usr/share/man/man1/mknod.1.gz +usr/share/man/man1/mktemp.1.gz +usr/share/man/man1/mv.1.gz +usr/share/man/man1/nice.1.gz +usr/share/man/man1/nl.1.gz +usr/share/man/man1/nohup.1.gz +usr/share/man/man1/nproc.1.gz +usr/share/man/man1/numfmt.1.gz +usr/share/man/man1/od.1.gz +usr/share/man/man1/paste.1.gz +usr/share/man/man1/pathchk.1.gz +usr/share/man/man1/pgawk.1.gz +usr/share/man/man1/pinky.1.gz +usr/share/man/man1/popd.1.gz +usr/share/man/man1/pr.1.gz +usr/share/man/man1/printenv.1.gz +usr/share/man/man1/printf.1.gz +usr/share/man/man1/ptx.1.gz +usr/share/man/man1/pushd.1.gz +usr/share/man/man1/pwd.1.gz +usr/share/man/man1/read.1.gz +usr/share/man/man1/readlink.1.gz +usr/share/man/man1/readonly.1.gz +usr/share/man/man1/realpath.1.gz +usr/share/man/man1/reset.1.gz +usr/share/man/man1/return.1.gz +usr/share/man/man1/rm.1.gz +usr/share/man/man1/rmdir.1.gz +usr/share/man/man1/runcon.1.gz +usr/share/man/man1/sed.1.gz +usr/share/man/man1/seq.1.gz +usr/share/man/man1/set.1.gz +usr/share/man/man1/sh.1.gz +usr/share/man/man1/sha1sum.1.gz +usr/share/man/man1/sha224sum.1.gz +usr/share/man/man1/sha256sum.1.gz +usr/share/man/man1/sha384sum.1.gz +usr/share/man/man1/sha512sum.1.gz +usr/share/man/man1/shift.1.gz +usr/share/man/man1/shopt.1.gz +usr/share/man/man1/shred.1.gz +usr/share/man/man1/shuf.1.gz +usr/share/man/man1/sleep.1.gz +usr/share/man/man1/sort.1.gz +usr/share/man/man1/source.1.gz +usr/share/man/man1/split.1.gz +usr/share/man/man1/stat.1.gz +usr/share/man/man1/stdbuf.1.gz +usr/share/man/man1/stty.1.gz +usr/share/man/man1/sum.1.gz +usr/share/man/man1/suspend.1.gz +usr/share/man/man1/sync.1.gz +usr/share/man/man1/tabs.1.gz +usr/share/man/man1/tac.1.gz +usr/share/man/man1/tail.1.gz +usr/share/man/man1/tee.1.gz +usr/share/man/man1/test.1.gz +usr/share/man/man1/tic.1m.gz +usr/share/man/man1/timeout.1.gz +usr/share/man/man1/times.1.gz +usr/share/man/man1/toe.1m.gz +usr/share/man/man1/touch.1.gz +usr/share/man/man1/tput.1.gz +usr/share/man/man1/tr.1.gz +usr/share/man/man1/trap.1.gz +usr/share/man/man1/true.1.gz +usr/share/man/man1/truncate.1.gz +usr/share/man/man1/trust.1.gz +usr/share/man/man1/tset.1.gz +usr/share/man/man1/tsort.1.gz +usr/share/man/man1/tty.1.gz +usr/share/man/man1/type.1.gz +usr/share/man/man1/typeset.1.gz +usr/share/man/man1/ulimit.1.gz +usr/share/man/man1/umask.1.gz +usr/share/man/man1/unalias.1.gz +usr/share/man/man1/uname.1.gz +usr/share/man/man1/unexpand.1.gz +usr/share/man/man1/uniq.1.gz +usr/share/man/man1/unlink.1.gz +usr/share/man/man1/unset.1.gz +usr/share/man/man1/users.1.gz +usr/share/man/man1/vdir.1.gz +usr/share/man/man1/wait.1.gz +usr/share/man/man1/wc.1.gz +usr/share/man/man1/who.1.gz +usr/share/man/man1/whoami.1.gz +usr/share/man/man1/yes.1.gz +usr/share/man/man1p/ +usr/share/man/man1x/ +usr/share/man/man2/ +usr/share/man/man2x/ +usr/share/man/man3/ +usr/share/man/man3p/ +usr/share/man/man3x/ +usr/share/man/man4/ +usr/share/man/man4x/ +usr/share/man/man5/ +usr/share/man/man5/.k5identity.5.gz +usr/share/man/man5/.k5login.5.gz +usr/share/man/man5/info.5.gz +usr/share/man/man5/k5identity.5.gz +usr/share/man/man5/k5login.5.gz +usr/share/man/man5/krb5.conf.5.gz +usr/share/man/man5/pkcs11.conf.5.gz +usr/share/man/man5/term.5.gz +usr/share/man/man5/terminfo.5.gz +usr/share/man/man5x/ +usr/share/man/man6/ +usr/share/man/man6x/ +usr/share/man/man7/ +usr/share/man/man7/term.7.gz +usr/share/man/man7x/ +usr/share/man/man8/ +usr/share/man/man8/alternatives.8.gz +usr/share/man/man8/ca-legacy.8.gz +usr/share/man/man8/chkconfig.8.gz +usr/share/man/man8/getcap.8.gz +usr/share/man/man8/getpcaps.8.gz +usr/share/man/man8/p11-kit.8.gz +usr/share/man/man8/setcap.8.gz +usr/share/man/man8/update-alternatives.8.gz +usr/share/man/man8/update-ca-trust.8.gz +usr/share/man/man8x/ +usr/share/man/man9/ +usr/share/man/man9x/ +usr/share/man/mann/ +usr/share/mime-info/ +usr/share/misc/ +usr/share/omf/ +usr/share/p11-kit/ +usr/share/p11-kit/modules/ +usr/share/p11-kit/modules/p11-kit-trust.module +usr/share/pixmaps/ +usr/share/pki/ +usr/share/pki/ca-trust-legacy/ +usr/share/pki/ca-trust-legacy/ca-bundle.legacy.default.crt +usr/share/pki/ca-trust-legacy/ca-bundle.legacy.disable.crt +usr/share/pki/ca-trust-source/ +usr/share/pki/ca-trust-source/README +usr/share/pki/ca-trust-source/anchors/ +usr/share/pki/ca-trust-source/blacklist/ +usr/share/pki/ca-trust-source/ca-bundle.trust.p11-kit +usr/share/sounds/ +usr/share/tabset/ +usr/share/tabset/std +usr/share/tabset/stdcrt +usr/share/tabset/vt100 +usr/share/tabset/vt300 +usr/share/terminfo/ +usr/share/terminfo/A/ +usr/share/terminfo/A/Apple_Terminal +usr/share/terminfo/E/ +usr/share/terminfo/E/Eterm +usr/share/terminfo/E/Eterm-256color +usr/share/terminfo/E/Eterm-88color +usr/share/terminfo/E/Eterm-color +usr/share/terminfo/a/ +usr/share/terminfo/a/ansi +usr/share/terminfo/a/ansi80x25 +usr/share/terminfo/a/ansis +usr/share/terminfo/a/aterm +usr/share/terminfo/b/ +usr/share/terminfo/b/bterm +usr/share/terminfo/c/ +usr/share/terminfo/c/cons25 +usr/share/terminfo/c/cygwin +usr/share/terminfo/d/ +usr/share/terminfo/d/dumb +usr/share/terminfo/e/ +usr/share/terminfo/e/eterm +usr/share/terminfo/e/eterm-color +usr/share/terminfo/g/ +usr/share/terminfo/g/gnome +usr/share/terminfo/g/gnome-256color +usr/share/terminfo/h/ +usr/share/terminfo/h/hurd +usr/share/terminfo/j/ +usr/share/terminfo/j/jfbterm +usr/share/terminfo/k/ +usr/share/terminfo/k/kon +usr/share/terminfo/k/kon2 +usr/share/terminfo/k/konsole +usr/share/terminfo/k/konsole-256color +usr/share/terminfo/l/ +usr/share/terminfo/l/linux +usr/share/terminfo/m/ +usr/share/terminfo/m/mach +usr/share/terminfo/m/mach-bold +usr/share/terminfo/m/mach-color +usr/share/terminfo/m/mach-gnu +usr/share/terminfo/m/mach-gnu-color +usr/share/terminfo/m/mlterm +usr/share/terminfo/m/mrxvt +usr/share/terminfo/n/ +usr/share/terminfo/n/nsterm +usr/share/terminfo/n/nxterm +usr/share/terminfo/p/ +usr/share/terminfo/p/pcansi +usr/share/terminfo/p/putty +usr/share/terminfo/p/putty-256color +usr/share/terminfo/r/ +usr/share/terminfo/r/rxvt +usr/share/terminfo/r/rxvt-16color +usr/share/terminfo/r/rxvt-256color +usr/share/terminfo/r/rxvt-88color +usr/share/terminfo/r/rxvt-basic +usr/share/terminfo/r/rxvt-color +usr/share/terminfo/r/rxvt-cygwin +usr/share/terminfo/r/rxvt-cygwin-native +usr/share/terminfo/r/rxvt-unicode +usr/share/terminfo/r/rxvt-xpm +usr/share/terminfo/s/ +usr/share/terminfo/s/screen +usr/share/terminfo/s/screen-16color +usr/share/terminfo/s/screen-256color +usr/share/terminfo/s/screen.Eterm +usr/share/terminfo/s/screen.gnome +usr/share/terminfo/s/screen.konsole +usr/share/terminfo/s/screen.konsole-256color +usr/share/terminfo/s/screen.linux +usr/share/terminfo/s/screen.mlterm +usr/share/terminfo/s/screen.mlterm-256color +usr/share/terminfo/s/screen.mrxvt +usr/share/terminfo/s/screen.putty +usr/share/terminfo/s/screen.putty-256color +usr/share/terminfo/s/screen.rxvt +usr/share/terminfo/s/screen.teraterm +usr/share/terminfo/s/screen.vte +usr/share/terminfo/s/screen.vte-256color +usr/share/terminfo/s/screen.xterm-256color +usr/share/terminfo/s/screen.xterm-new +usr/share/terminfo/s/screen.xterm-r6 +usr/share/terminfo/s/screen.xterm-xfree86 +usr/share/terminfo/s/st +usr/share/terminfo/s/st-16color +usr/share/terminfo/s/st-256color +usr/share/terminfo/s/stterm +usr/share/terminfo/s/stterm-16color +usr/share/terminfo/s/stterm-256color +usr/share/terminfo/s/sun +usr/share/terminfo/s/sun1 +usr/share/terminfo/s/sun2 +usr/share/terminfo/t/ +usr/share/terminfo/t/teraterm +usr/share/terminfo/t/teraterm2.3 +usr/share/terminfo/t/tmux +usr/share/terminfo/t/tmux-256color +usr/share/terminfo/v/ +usr/share/terminfo/v/vs100 +usr/share/terminfo/v/vt100 +usr/share/terminfo/v/vt100-am +usr/share/terminfo/v/vt100-nav +usr/share/terminfo/v/vt102 +usr/share/terminfo/v/vt200 +usr/share/terminfo/v/vt220 +usr/share/terminfo/v/vt52 +usr/share/terminfo/v/vte +usr/share/terminfo/v/vte-256color +usr/share/terminfo/v/vwmterm +usr/share/terminfo/w/ +usr/share/terminfo/w/wsvt25 +usr/share/terminfo/w/wsvt25m +usr/share/terminfo/x/ +usr/share/terminfo/x/xfce +usr/share/terminfo/x/xterm +usr/share/terminfo/x/xterm-1002 +usr/share/terminfo/x/xterm-1003 +usr/share/terminfo/x/xterm-1005 +usr/share/terminfo/x/xterm-1006 +usr/share/terminfo/x/xterm-16color +usr/share/terminfo/x/xterm-24 +usr/share/terminfo/x/xterm-256color +usr/share/terminfo/x/xterm-88color +usr/share/terminfo/x/xterm-8bit +usr/share/terminfo/x/xterm-basic +usr/share/terminfo/x/xterm-bold +usr/share/terminfo/x/xterm-color +usr/share/terminfo/x/xterm-hp +usr/share/terminfo/x/xterm-new +usr/share/terminfo/x/xterm-nic +usr/share/terminfo/x/xterm-noapp +usr/share/terminfo/x/xterm-old +usr/share/terminfo/x/xterm-pcolor +usr/share/terminfo/x/xterm-r5 +usr/share/terminfo/x/xterm-r6 +usr/share/terminfo/x/xterm-sco +usr/share/terminfo/x/xterm-sun +usr/share/terminfo/x/xterm-utf8 +usr/share/terminfo/x/xterm-vt220 +usr/share/terminfo/x/xterm-vt52 +usr/share/terminfo/x/xterm-x10mouse +usr/share/terminfo/x/xterm-x11hilite +usr/share/terminfo/x/xterm-x11mouse +usr/share/terminfo/x/xterm-xf86-v32 +usr/share/terminfo/x/xterm-xf86-v33 +usr/share/terminfo/x/xterm-xf86-v333 +usr/share/terminfo/x/xterm-xf86-v40 +usr/share/terminfo/x/xterm-xf86-v43 +usr/share/terminfo/x/xterm-xf86-v44 +usr/share/terminfo/x/xterm-xfree86 +usr/share/terminfo/x/xterm-xi +usr/share/terminfo/x/xterms +usr/share/themes/ +usr/share/xsessions/ +usr/share/zoneinfo/ +usr/share/zoneinfo/Africa/ +usr/share/zoneinfo/Africa/Abidjan +usr/share/zoneinfo/Africa/Accra +usr/share/zoneinfo/Africa/Addis_Ababa +usr/share/zoneinfo/Africa/Algiers +usr/share/zoneinfo/Africa/Asmara +usr/share/zoneinfo/Africa/Asmera +usr/share/zoneinfo/Africa/Bamako +usr/share/zoneinfo/Africa/Bangui +usr/share/zoneinfo/Africa/Banjul +usr/share/zoneinfo/Africa/Bissau +usr/share/zoneinfo/Africa/Blantyre +usr/share/zoneinfo/Africa/Brazzaville +usr/share/zoneinfo/Africa/Bujumbura +usr/share/zoneinfo/Africa/Cairo +usr/share/zoneinfo/Africa/Casablanca +usr/share/zoneinfo/Africa/Ceuta +usr/share/zoneinfo/Africa/Conakry +usr/share/zoneinfo/Africa/Dakar +usr/share/zoneinfo/Africa/Dar_es_Salaam +usr/share/zoneinfo/Africa/Djibouti +usr/share/zoneinfo/Africa/Douala +usr/share/zoneinfo/Africa/El_Aaiun +usr/share/zoneinfo/Africa/Freetown +usr/share/zoneinfo/Africa/Gaborone +usr/share/zoneinfo/Africa/Harare +usr/share/zoneinfo/Africa/Johannesburg +usr/share/zoneinfo/Africa/Juba +usr/share/zoneinfo/Africa/Kampala +usr/share/zoneinfo/Africa/Khartoum +usr/share/zoneinfo/Africa/Kigali +usr/share/zoneinfo/Africa/Kinshasa +usr/share/zoneinfo/Africa/Lagos +usr/share/zoneinfo/Africa/Libreville +usr/share/zoneinfo/Africa/Lome +usr/share/zoneinfo/Africa/Luanda +usr/share/zoneinfo/Africa/Lubumbashi +usr/share/zoneinfo/Africa/Lusaka +usr/share/zoneinfo/Africa/Malabo +usr/share/zoneinfo/Africa/Maputo +usr/share/zoneinfo/Africa/Maseru +usr/share/zoneinfo/Africa/Mbabane +usr/share/zoneinfo/Africa/Mogadishu +usr/share/zoneinfo/Africa/Monrovia +usr/share/zoneinfo/Africa/Nairobi +usr/share/zoneinfo/Africa/Ndjamena +usr/share/zoneinfo/Africa/Niamey +usr/share/zoneinfo/Africa/Nouakchott +usr/share/zoneinfo/Africa/Ouagadougou +usr/share/zoneinfo/Africa/Porto-Novo +usr/share/zoneinfo/Africa/Sao_Tome +usr/share/zoneinfo/Africa/Timbuktu +usr/share/zoneinfo/Africa/Tripoli +usr/share/zoneinfo/Africa/Tunis +usr/share/zoneinfo/Africa/Windhoek +usr/share/zoneinfo/America/ +usr/share/zoneinfo/America/Adak +usr/share/zoneinfo/America/Anchorage +usr/share/zoneinfo/America/Anguilla +usr/share/zoneinfo/America/Antigua +usr/share/zoneinfo/America/Araguaina +usr/share/zoneinfo/America/Argentina/ +usr/share/zoneinfo/America/Argentina/Buenos_Aires +usr/share/zoneinfo/America/Argentina/Catamarca +usr/share/zoneinfo/America/Argentina/ComodRivadavia +usr/share/zoneinfo/America/Argentina/Cordoba +usr/share/zoneinfo/America/Argentina/Jujuy +usr/share/zoneinfo/America/Argentina/La_Rioja +usr/share/zoneinfo/America/Argentina/Mendoza +usr/share/zoneinfo/America/Argentina/Rio_Gallegos +usr/share/zoneinfo/America/Argentina/Salta +usr/share/zoneinfo/America/Argentina/San_Juan +usr/share/zoneinfo/America/Argentina/San_Luis +usr/share/zoneinfo/America/Argentina/Tucuman +usr/share/zoneinfo/America/Argentina/Ushuaia +usr/share/zoneinfo/America/Aruba +usr/share/zoneinfo/America/Asuncion +usr/share/zoneinfo/America/Atikokan +usr/share/zoneinfo/America/Atka +usr/share/zoneinfo/America/Bahia +usr/share/zoneinfo/America/Bahia_Banderas +usr/share/zoneinfo/America/Barbados +usr/share/zoneinfo/America/Belem +usr/share/zoneinfo/America/Belize +usr/share/zoneinfo/America/Blanc-Sablon +usr/share/zoneinfo/America/Boa_Vista +usr/share/zoneinfo/America/Bogota +usr/share/zoneinfo/America/Boise +usr/share/zoneinfo/America/Buenos_Aires +usr/share/zoneinfo/America/Cambridge_Bay +usr/share/zoneinfo/America/Campo_Grande +usr/share/zoneinfo/America/Cancun +usr/share/zoneinfo/America/Caracas +usr/share/zoneinfo/America/Catamarca +usr/share/zoneinfo/America/Cayenne +usr/share/zoneinfo/America/Cayman +usr/share/zoneinfo/America/Chicago +usr/share/zoneinfo/America/Chihuahua +usr/share/zoneinfo/America/Coral_Harbour +usr/share/zoneinfo/America/Cordoba +usr/share/zoneinfo/America/Costa_Rica +usr/share/zoneinfo/America/Creston +usr/share/zoneinfo/America/Cuiaba +usr/share/zoneinfo/America/Curacao +usr/share/zoneinfo/America/Danmarkshavn +usr/share/zoneinfo/America/Dawson +usr/share/zoneinfo/America/Dawson_Creek +usr/share/zoneinfo/America/Denver +usr/share/zoneinfo/America/Detroit +usr/share/zoneinfo/America/Dominica +usr/share/zoneinfo/America/Edmonton +usr/share/zoneinfo/America/Eirunepe +usr/share/zoneinfo/America/El_Salvador +usr/share/zoneinfo/America/Ensenada +usr/share/zoneinfo/America/Fort_Nelson +usr/share/zoneinfo/America/Fort_Wayne +usr/share/zoneinfo/America/Fortaleza +usr/share/zoneinfo/America/Glace_Bay +usr/share/zoneinfo/America/Godthab +usr/share/zoneinfo/America/Goose_Bay +usr/share/zoneinfo/America/Grand_Turk +usr/share/zoneinfo/America/Grenada +usr/share/zoneinfo/America/Guadeloupe +usr/share/zoneinfo/America/Guatemala +usr/share/zoneinfo/America/Guayaquil +usr/share/zoneinfo/America/Guyana +usr/share/zoneinfo/America/Halifax +usr/share/zoneinfo/America/Havana +usr/share/zoneinfo/America/Hermosillo +usr/share/zoneinfo/America/Indiana/ +usr/share/zoneinfo/America/Indiana/Indianapolis +usr/share/zoneinfo/America/Indiana/Knox +usr/share/zoneinfo/America/Indiana/Marengo +usr/share/zoneinfo/America/Indiana/Petersburg +usr/share/zoneinfo/America/Indiana/Tell_City +usr/share/zoneinfo/America/Indiana/Vevay +usr/share/zoneinfo/America/Indiana/Vincennes +usr/share/zoneinfo/America/Indiana/Winamac +usr/share/zoneinfo/America/Indianapolis +usr/share/zoneinfo/America/Inuvik +usr/share/zoneinfo/America/Iqaluit +usr/share/zoneinfo/America/Jamaica +usr/share/zoneinfo/America/Jujuy +usr/share/zoneinfo/America/Juneau +usr/share/zoneinfo/America/Kentucky/ +usr/share/zoneinfo/America/Kentucky/Louisville +usr/share/zoneinfo/America/Kentucky/Monticello +usr/share/zoneinfo/America/Knox_IN +usr/share/zoneinfo/America/Kralendijk +usr/share/zoneinfo/America/La_Paz +usr/share/zoneinfo/America/Lima +usr/share/zoneinfo/America/Los_Angeles +usr/share/zoneinfo/America/Louisville +usr/share/zoneinfo/America/Lower_Princes +usr/share/zoneinfo/America/Maceio +usr/share/zoneinfo/America/Managua +usr/share/zoneinfo/America/Manaus +usr/share/zoneinfo/America/Marigot +usr/share/zoneinfo/America/Martinique +usr/share/zoneinfo/America/Matamoros +usr/share/zoneinfo/America/Mazatlan +usr/share/zoneinfo/America/Mendoza +usr/share/zoneinfo/America/Menominee +usr/share/zoneinfo/America/Merida +usr/share/zoneinfo/America/Metlakatla +usr/share/zoneinfo/America/Mexico_City +usr/share/zoneinfo/America/Miquelon +usr/share/zoneinfo/America/Moncton +usr/share/zoneinfo/America/Monterrey +usr/share/zoneinfo/America/Montevideo +usr/share/zoneinfo/America/Montreal +usr/share/zoneinfo/America/Montserrat +usr/share/zoneinfo/America/Nassau +usr/share/zoneinfo/America/New_York +usr/share/zoneinfo/America/Nipigon +usr/share/zoneinfo/America/Nome +usr/share/zoneinfo/America/Noronha +usr/share/zoneinfo/America/North_Dakota/ +usr/share/zoneinfo/America/North_Dakota/Beulah +usr/share/zoneinfo/America/North_Dakota/Center +usr/share/zoneinfo/America/North_Dakota/New_Salem +usr/share/zoneinfo/America/Ojinaga +usr/share/zoneinfo/America/Panama +usr/share/zoneinfo/America/Pangnirtung +usr/share/zoneinfo/America/Paramaribo +usr/share/zoneinfo/America/Phoenix +usr/share/zoneinfo/America/Port-au-Prince +usr/share/zoneinfo/America/Port_of_Spain +usr/share/zoneinfo/America/Porto_Acre +usr/share/zoneinfo/America/Porto_Velho +usr/share/zoneinfo/America/Puerto_Rico +usr/share/zoneinfo/America/Punta_Arenas +usr/share/zoneinfo/America/Rainy_River +usr/share/zoneinfo/America/Rankin_Inlet +usr/share/zoneinfo/America/Recife +usr/share/zoneinfo/America/Regina +usr/share/zoneinfo/America/Resolute +usr/share/zoneinfo/America/Rio_Branco +usr/share/zoneinfo/America/Rosario +usr/share/zoneinfo/America/Santa_Isabel +usr/share/zoneinfo/America/Santarem +usr/share/zoneinfo/America/Santiago +usr/share/zoneinfo/America/Santo_Domingo +usr/share/zoneinfo/America/Sao_Paulo +usr/share/zoneinfo/America/Scoresbysund +usr/share/zoneinfo/America/Shiprock +usr/share/zoneinfo/America/Sitka +usr/share/zoneinfo/America/St_Barthelemy +usr/share/zoneinfo/America/St_Johns +usr/share/zoneinfo/America/St_Kitts +usr/share/zoneinfo/America/St_Lucia +usr/share/zoneinfo/America/St_Thomas +usr/share/zoneinfo/America/St_Vincent +usr/share/zoneinfo/America/Swift_Current +usr/share/zoneinfo/America/Tegucigalpa +usr/share/zoneinfo/America/Thule +usr/share/zoneinfo/America/Thunder_Bay +usr/share/zoneinfo/America/Tijuana +usr/share/zoneinfo/America/Toronto +usr/share/zoneinfo/America/Tortola +usr/share/zoneinfo/America/Vancouver +usr/share/zoneinfo/America/Virgin +usr/share/zoneinfo/America/Whitehorse +usr/share/zoneinfo/America/Winnipeg +usr/share/zoneinfo/America/Yakutat +usr/share/zoneinfo/America/Yellowknife +usr/share/zoneinfo/Antarctica/ +usr/share/zoneinfo/Antarctica/Casey +usr/share/zoneinfo/Antarctica/Davis +usr/share/zoneinfo/Antarctica/DumontDUrville +usr/share/zoneinfo/Antarctica/Macquarie +usr/share/zoneinfo/Antarctica/Mawson +usr/share/zoneinfo/Antarctica/McMurdo +usr/share/zoneinfo/Antarctica/Palmer +usr/share/zoneinfo/Antarctica/Rothera +usr/share/zoneinfo/Antarctica/South_Pole +usr/share/zoneinfo/Antarctica/Syowa +usr/share/zoneinfo/Antarctica/Troll +usr/share/zoneinfo/Antarctica/Vostok +usr/share/zoneinfo/Arctic/ +usr/share/zoneinfo/Arctic/Longyearbyen +usr/share/zoneinfo/Asia/ +usr/share/zoneinfo/Asia/Aden +usr/share/zoneinfo/Asia/Almaty +usr/share/zoneinfo/Asia/Amman +usr/share/zoneinfo/Asia/Anadyr +usr/share/zoneinfo/Asia/Aqtau +usr/share/zoneinfo/Asia/Aqtobe +usr/share/zoneinfo/Asia/Ashgabat +usr/share/zoneinfo/Asia/Ashkhabad +usr/share/zoneinfo/Asia/Atyrau +usr/share/zoneinfo/Asia/Baghdad +usr/share/zoneinfo/Asia/Bahrain +usr/share/zoneinfo/Asia/Baku +usr/share/zoneinfo/Asia/Bangkok +usr/share/zoneinfo/Asia/Barnaul +usr/share/zoneinfo/Asia/Beirut +usr/share/zoneinfo/Asia/Bishkek +usr/share/zoneinfo/Asia/Brunei +usr/share/zoneinfo/Asia/Calcutta +usr/share/zoneinfo/Asia/Chita +usr/share/zoneinfo/Asia/Choibalsan +usr/share/zoneinfo/Asia/Chongqing +usr/share/zoneinfo/Asia/Chungking +usr/share/zoneinfo/Asia/Colombo +usr/share/zoneinfo/Asia/Dacca +usr/share/zoneinfo/Asia/Damascus +usr/share/zoneinfo/Asia/Dhaka +usr/share/zoneinfo/Asia/Dili +usr/share/zoneinfo/Asia/Dubai +usr/share/zoneinfo/Asia/Dushanbe +usr/share/zoneinfo/Asia/Famagusta +usr/share/zoneinfo/Asia/Gaza +usr/share/zoneinfo/Asia/Harbin +usr/share/zoneinfo/Asia/Hebron +usr/share/zoneinfo/Asia/Ho_Chi_Minh +usr/share/zoneinfo/Asia/Hong_Kong +usr/share/zoneinfo/Asia/Hovd +usr/share/zoneinfo/Asia/Irkutsk +usr/share/zoneinfo/Asia/Istanbul +usr/share/zoneinfo/Asia/Jakarta +usr/share/zoneinfo/Asia/Jayapura +usr/share/zoneinfo/Asia/Jerusalem +usr/share/zoneinfo/Asia/Kabul +usr/share/zoneinfo/Asia/Kamchatka +usr/share/zoneinfo/Asia/Karachi +usr/share/zoneinfo/Asia/Kashgar +usr/share/zoneinfo/Asia/Kathmandu +usr/share/zoneinfo/Asia/Katmandu +usr/share/zoneinfo/Asia/Khandyga +usr/share/zoneinfo/Asia/Kolkata +usr/share/zoneinfo/Asia/Krasnoyarsk +usr/share/zoneinfo/Asia/Kuala_Lumpur +usr/share/zoneinfo/Asia/Kuching +usr/share/zoneinfo/Asia/Kuwait +usr/share/zoneinfo/Asia/Macao +usr/share/zoneinfo/Asia/Macau +usr/share/zoneinfo/Asia/Magadan +usr/share/zoneinfo/Asia/Makassar +usr/share/zoneinfo/Asia/Manila +usr/share/zoneinfo/Asia/Muscat +usr/share/zoneinfo/Asia/Nicosia +usr/share/zoneinfo/Asia/Novokuznetsk +usr/share/zoneinfo/Asia/Novosibirsk +usr/share/zoneinfo/Asia/Omsk +usr/share/zoneinfo/Asia/Oral +usr/share/zoneinfo/Asia/Phnom_Penh +usr/share/zoneinfo/Asia/Pontianak +usr/share/zoneinfo/Asia/Pyongyang +usr/share/zoneinfo/Asia/Qatar +usr/share/zoneinfo/Asia/Qostanay +usr/share/zoneinfo/Asia/Qyzylorda +usr/share/zoneinfo/Asia/Rangoon +usr/share/zoneinfo/Asia/Riyadh +usr/share/zoneinfo/Asia/Saigon +usr/share/zoneinfo/Asia/Sakhalin +usr/share/zoneinfo/Asia/Samarkand +usr/share/zoneinfo/Asia/Seoul +usr/share/zoneinfo/Asia/Shanghai +usr/share/zoneinfo/Asia/Singapore +usr/share/zoneinfo/Asia/Srednekolymsk +usr/share/zoneinfo/Asia/Taipei +usr/share/zoneinfo/Asia/Tashkent +usr/share/zoneinfo/Asia/Tbilisi +usr/share/zoneinfo/Asia/Tehran +usr/share/zoneinfo/Asia/Tel_Aviv +usr/share/zoneinfo/Asia/Thimbu +usr/share/zoneinfo/Asia/Thimphu +usr/share/zoneinfo/Asia/Tokyo +usr/share/zoneinfo/Asia/Tomsk +usr/share/zoneinfo/Asia/Ujung_Pandang +usr/share/zoneinfo/Asia/Ulaanbaatar +usr/share/zoneinfo/Asia/Ulan_Bator +usr/share/zoneinfo/Asia/Urumqi +usr/share/zoneinfo/Asia/Ust-Nera +usr/share/zoneinfo/Asia/Vientiane +usr/share/zoneinfo/Asia/Vladivostok +usr/share/zoneinfo/Asia/Yakutsk +usr/share/zoneinfo/Asia/Yangon +usr/share/zoneinfo/Asia/Yekaterinburg +usr/share/zoneinfo/Asia/Yerevan +usr/share/zoneinfo/Atlantic/ +usr/share/zoneinfo/Atlantic/Azores +usr/share/zoneinfo/Atlantic/Bermuda +usr/share/zoneinfo/Atlantic/Canary +usr/share/zoneinfo/Atlantic/Cape_Verde +usr/share/zoneinfo/Atlantic/Faeroe +usr/share/zoneinfo/Atlantic/Faroe +usr/share/zoneinfo/Atlantic/Jan_Mayen +usr/share/zoneinfo/Atlantic/Madeira +usr/share/zoneinfo/Atlantic/Reykjavik +usr/share/zoneinfo/Atlantic/South_Georgia +usr/share/zoneinfo/Atlantic/St_Helena +usr/share/zoneinfo/Atlantic/Stanley +usr/share/zoneinfo/Australia/ +usr/share/zoneinfo/Australia/ACT +usr/share/zoneinfo/Australia/Adelaide +usr/share/zoneinfo/Australia/Brisbane +usr/share/zoneinfo/Australia/Broken_Hill +usr/share/zoneinfo/Australia/Canberra +usr/share/zoneinfo/Australia/Currie +usr/share/zoneinfo/Australia/Darwin +usr/share/zoneinfo/Australia/Eucla +usr/share/zoneinfo/Australia/Hobart +usr/share/zoneinfo/Australia/LHI +usr/share/zoneinfo/Australia/Lindeman +usr/share/zoneinfo/Australia/Lord_Howe +usr/share/zoneinfo/Australia/Melbourne +usr/share/zoneinfo/Australia/NSW +usr/share/zoneinfo/Australia/North +usr/share/zoneinfo/Australia/Perth +usr/share/zoneinfo/Australia/Queensland +usr/share/zoneinfo/Australia/South +usr/share/zoneinfo/Australia/Sydney +usr/share/zoneinfo/Australia/Tasmania +usr/share/zoneinfo/Australia/Victoria +usr/share/zoneinfo/Australia/West +usr/share/zoneinfo/Australia/Yancowinna +usr/share/zoneinfo/Brazil/ +usr/share/zoneinfo/Brazil/Acre +usr/share/zoneinfo/Brazil/DeNoronha +usr/share/zoneinfo/Brazil/East +usr/share/zoneinfo/Brazil/West +usr/share/zoneinfo/CET +usr/share/zoneinfo/CST6CDT +usr/share/zoneinfo/Canada/ +usr/share/zoneinfo/Canada/Atlantic +usr/share/zoneinfo/Canada/Central +usr/share/zoneinfo/Canada/Eastern +usr/share/zoneinfo/Canada/Mountain +usr/share/zoneinfo/Canada/Newfoundland +usr/share/zoneinfo/Canada/Pacific +usr/share/zoneinfo/Canada/Saskatchewan +usr/share/zoneinfo/Canada/Yukon +usr/share/zoneinfo/Chile/ +usr/share/zoneinfo/Chile/Continental +usr/share/zoneinfo/Chile/EasterIsland +usr/share/zoneinfo/Cuba +usr/share/zoneinfo/EET +usr/share/zoneinfo/EST +usr/share/zoneinfo/EST5EDT +usr/share/zoneinfo/Egypt +usr/share/zoneinfo/Eire +usr/share/zoneinfo/Etc/ +usr/share/zoneinfo/Etc/GMT +usr/share/zoneinfo/Etc/GMT+0 +usr/share/zoneinfo/Etc/GMT+1 +usr/share/zoneinfo/Etc/GMT+10 +usr/share/zoneinfo/Etc/GMT+11 +usr/share/zoneinfo/Etc/GMT+12 +usr/share/zoneinfo/Etc/GMT+2 +usr/share/zoneinfo/Etc/GMT+3 +usr/share/zoneinfo/Etc/GMT+4 +usr/share/zoneinfo/Etc/GMT+5 +usr/share/zoneinfo/Etc/GMT+6 +usr/share/zoneinfo/Etc/GMT+7 +usr/share/zoneinfo/Etc/GMT+8 +usr/share/zoneinfo/Etc/GMT+9 +usr/share/zoneinfo/Etc/GMT-0 +usr/share/zoneinfo/Etc/GMT-1 +usr/share/zoneinfo/Etc/GMT-10 +usr/share/zoneinfo/Etc/GMT-11 +usr/share/zoneinfo/Etc/GMT-12 +usr/share/zoneinfo/Etc/GMT-13 +usr/share/zoneinfo/Etc/GMT-14 +usr/share/zoneinfo/Etc/GMT-2 +usr/share/zoneinfo/Etc/GMT-3 +usr/share/zoneinfo/Etc/GMT-4 +usr/share/zoneinfo/Etc/GMT-5 +usr/share/zoneinfo/Etc/GMT-6 +usr/share/zoneinfo/Etc/GMT-7 +usr/share/zoneinfo/Etc/GMT-8 +usr/share/zoneinfo/Etc/GMT-9 +usr/share/zoneinfo/Etc/GMT0 +usr/share/zoneinfo/Etc/Greenwich +usr/share/zoneinfo/Etc/UCT +usr/share/zoneinfo/Etc/UTC +usr/share/zoneinfo/Etc/Universal +usr/share/zoneinfo/Etc/Zulu +usr/share/zoneinfo/Europe/ +usr/share/zoneinfo/Europe/Amsterdam +usr/share/zoneinfo/Europe/Andorra +usr/share/zoneinfo/Europe/Astrakhan +usr/share/zoneinfo/Europe/Athens +usr/share/zoneinfo/Europe/Belfast +usr/share/zoneinfo/Europe/Belgrade +usr/share/zoneinfo/Europe/Berlin +usr/share/zoneinfo/Europe/Bratislava +usr/share/zoneinfo/Europe/Brussels +usr/share/zoneinfo/Europe/Bucharest +usr/share/zoneinfo/Europe/Budapest +usr/share/zoneinfo/Europe/Busingen +usr/share/zoneinfo/Europe/Chisinau +usr/share/zoneinfo/Europe/Copenhagen +usr/share/zoneinfo/Europe/Dublin +usr/share/zoneinfo/Europe/Gibraltar +usr/share/zoneinfo/Europe/Guernsey +usr/share/zoneinfo/Europe/Helsinki +usr/share/zoneinfo/Europe/Isle_of_Man +usr/share/zoneinfo/Europe/Istanbul +usr/share/zoneinfo/Europe/Jersey +usr/share/zoneinfo/Europe/Kaliningrad +usr/share/zoneinfo/Europe/Kiev +usr/share/zoneinfo/Europe/Kirov +usr/share/zoneinfo/Europe/Lisbon +usr/share/zoneinfo/Europe/Ljubljana +usr/share/zoneinfo/Europe/London +usr/share/zoneinfo/Europe/Luxembourg +usr/share/zoneinfo/Europe/Madrid +usr/share/zoneinfo/Europe/Malta +usr/share/zoneinfo/Europe/Mariehamn +usr/share/zoneinfo/Europe/Minsk +usr/share/zoneinfo/Europe/Monaco +usr/share/zoneinfo/Europe/Moscow +usr/share/zoneinfo/Europe/Nicosia +usr/share/zoneinfo/Europe/Oslo +usr/share/zoneinfo/Europe/Paris +usr/share/zoneinfo/Europe/Podgorica +usr/share/zoneinfo/Europe/Prague +usr/share/zoneinfo/Europe/Riga +usr/share/zoneinfo/Europe/Rome +usr/share/zoneinfo/Europe/Samara +usr/share/zoneinfo/Europe/San_Marino +usr/share/zoneinfo/Europe/Sarajevo +usr/share/zoneinfo/Europe/Saratov +usr/share/zoneinfo/Europe/Simferopol +usr/share/zoneinfo/Europe/Skopje +usr/share/zoneinfo/Europe/Sofia +usr/share/zoneinfo/Europe/Stockholm +usr/share/zoneinfo/Europe/Tallinn +usr/share/zoneinfo/Europe/Tirane +usr/share/zoneinfo/Europe/Tiraspol +usr/share/zoneinfo/Europe/Ulyanovsk +usr/share/zoneinfo/Europe/Uzhgorod +usr/share/zoneinfo/Europe/Vaduz +usr/share/zoneinfo/Europe/Vatican +usr/share/zoneinfo/Europe/Vienna +usr/share/zoneinfo/Europe/Vilnius +usr/share/zoneinfo/Europe/Volgograd +usr/share/zoneinfo/Europe/Warsaw +usr/share/zoneinfo/Europe/Zagreb +usr/share/zoneinfo/Europe/Zaporozhye +usr/share/zoneinfo/Europe/Zurich +usr/share/zoneinfo/GB +usr/share/zoneinfo/GB-Eire +usr/share/zoneinfo/GMT +usr/share/zoneinfo/GMT+0 +usr/share/zoneinfo/GMT-0 +usr/share/zoneinfo/GMT0 +usr/share/zoneinfo/Greenwich +usr/share/zoneinfo/HST +usr/share/zoneinfo/Hongkong +usr/share/zoneinfo/Iceland +usr/share/zoneinfo/Indian/ +usr/share/zoneinfo/Indian/Antananarivo +usr/share/zoneinfo/Indian/Chagos +usr/share/zoneinfo/Indian/Christmas +usr/share/zoneinfo/Indian/Cocos +usr/share/zoneinfo/Indian/Comoro +usr/share/zoneinfo/Indian/Kerguelen +usr/share/zoneinfo/Indian/Mahe +usr/share/zoneinfo/Indian/Maldives +usr/share/zoneinfo/Indian/Mauritius +usr/share/zoneinfo/Indian/Mayotte +usr/share/zoneinfo/Indian/Reunion +usr/share/zoneinfo/Iran +usr/share/zoneinfo/Israel +usr/share/zoneinfo/Jamaica +usr/share/zoneinfo/Japan +usr/share/zoneinfo/Kwajalein +usr/share/zoneinfo/Libya +usr/share/zoneinfo/MET +usr/share/zoneinfo/MST +usr/share/zoneinfo/MST7MDT +usr/share/zoneinfo/Mexico/ +usr/share/zoneinfo/Mexico/BajaNorte +usr/share/zoneinfo/Mexico/BajaSur +usr/share/zoneinfo/Mexico/General +usr/share/zoneinfo/NZ +usr/share/zoneinfo/NZ-CHAT +usr/share/zoneinfo/Navajo +usr/share/zoneinfo/PRC +usr/share/zoneinfo/PST8PDT +usr/share/zoneinfo/Pacific/ +usr/share/zoneinfo/Pacific/Apia +usr/share/zoneinfo/Pacific/Auckland +usr/share/zoneinfo/Pacific/Bougainville +usr/share/zoneinfo/Pacific/Chatham +usr/share/zoneinfo/Pacific/Chuuk +usr/share/zoneinfo/Pacific/Easter +usr/share/zoneinfo/Pacific/Efate +usr/share/zoneinfo/Pacific/Enderbury +usr/share/zoneinfo/Pacific/Fakaofo +usr/share/zoneinfo/Pacific/Fiji +usr/share/zoneinfo/Pacific/Funafuti +usr/share/zoneinfo/Pacific/Galapagos +usr/share/zoneinfo/Pacific/Gambier +usr/share/zoneinfo/Pacific/Guadalcanal +usr/share/zoneinfo/Pacific/Guam +usr/share/zoneinfo/Pacific/Honolulu +usr/share/zoneinfo/Pacific/Johnston +usr/share/zoneinfo/Pacific/Kiritimati +usr/share/zoneinfo/Pacific/Kosrae +usr/share/zoneinfo/Pacific/Kwajalein +usr/share/zoneinfo/Pacific/Majuro +usr/share/zoneinfo/Pacific/Marquesas +usr/share/zoneinfo/Pacific/Midway +usr/share/zoneinfo/Pacific/Nauru +usr/share/zoneinfo/Pacific/Niue +usr/share/zoneinfo/Pacific/Norfolk +usr/share/zoneinfo/Pacific/Noumea +usr/share/zoneinfo/Pacific/Pago_Pago +usr/share/zoneinfo/Pacific/Palau +usr/share/zoneinfo/Pacific/Pitcairn +usr/share/zoneinfo/Pacific/Pohnpei +usr/share/zoneinfo/Pacific/Ponape +usr/share/zoneinfo/Pacific/Port_Moresby +usr/share/zoneinfo/Pacific/Rarotonga +usr/share/zoneinfo/Pacific/Saipan +usr/share/zoneinfo/Pacific/Samoa +usr/share/zoneinfo/Pacific/Tahiti +usr/share/zoneinfo/Pacific/Tarawa +usr/share/zoneinfo/Pacific/Tongatapu +usr/share/zoneinfo/Pacific/Truk +usr/share/zoneinfo/Pacific/Wake +usr/share/zoneinfo/Pacific/Wallis +usr/share/zoneinfo/Pacific/Yap +usr/share/zoneinfo/Poland +usr/share/zoneinfo/Portugal +usr/share/zoneinfo/ROC +usr/share/zoneinfo/ROK +usr/share/zoneinfo/Singapore +usr/share/zoneinfo/Turkey +usr/share/zoneinfo/UCT +usr/share/zoneinfo/US/ +usr/share/zoneinfo/US/Alaska +usr/share/zoneinfo/US/Aleutian +usr/share/zoneinfo/US/Arizona +usr/share/zoneinfo/US/Central +usr/share/zoneinfo/US/East-Indiana +usr/share/zoneinfo/US/Eastern +usr/share/zoneinfo/US/Hawaii +usr/share/zoneinfo/US/Indiana-Starke +usr/share/zoneinfo/US/Michigan +usr/share/zoneinfo/US/Mountain +usr/share/zoneinfo/US/Pacific +usr/share/zoneinfo/US/Pacific-New +usr/share/zoneinfo/US/Samoa +usr/share/zoneinfo/UTC +usr/share/zoneinfo/Universal +usr/share/zoneinfo/W-SU +usr/share/zoneinfo/WET +usr/share/zoneinfo/Zulu +usr/share/zoneinfo/iso3166.tab +usr/share/zoneinfo/leapseconds +usr/share/zoneinfo/posix/ +usr/share/zoneinfo/posix/Africa/ +usr/share/zoneinfo/posix/Africa/Abidjan +usr/share/zoneinfo/posix/Africa/Accra +usr/share/zoneinfo/posix/Africa/Addis_Ababa +usr/share/zoneinfo/posix/Africa/Algiers +usr/share/zoneinfo/posix/Africa/Asmara +usr/share/zoneinfo/posix/Africa/Asmera +usr/share/zoneinfo/posix/Africa/Bamako +usr/share/zoneinfo/posix/Africa/Bangui +usr/share/zoneinfo/posix/Africa/Banjul +usr/share/zoneinfo/posix/Africa/Bissau +usr/share/zoneinfo/posix/Africa/Blantyre +usr/share/zoneinfo/posix/Africa/Brazzaville +usr/share/zoneinfo/posix/Africa/Bujumbura +usr/share/zoneinfo/posix/Africa/Cairo +usr/share/zoneinfo/posix/Africa/Casablanca +usr/share/zoneinfo/posix/Africa/Ceuta +usr/share/zoneinfo/posix/Africa/Conakry +usr/share/zoneinfo/posix/Africa/Dakar +usr/share/zoneinfo/posix/Africa/Dar_es_Salaam +usr/share/zoneinfo/posix/Africa/Djibouti +usr/share/zoneinfo/posix/Africa/Douala +usr/share/zoneinfo/posix/Africa/El_Aaiun +usr/share/zoneinfo/posix/Africa/Freetown +usr/share/zoneinfo/posix/Africa/Gaborone +usr/share/zoneinfo/posix/Africa/Harare +usr/share/zoneinfo/posix/Africa/Johannesburg +usr/share/zoneinfo/posix/Africa/Juba +usr/share/zoneinfo/posix/Africa/Kampala +usr/share/zoneinfo/posix/Africa/Khartoum +usr/share/zoneinfo/posix/Africa/Kigali +usr/share/zoneinfo/posix/Africa/Kinshasa +usr/share/zoneinfo/posix/Africa/Lagos +usr/share/zoneinfo/posix/Africa/Libreville +usr/share/zoneinfo/posix/Africa/Lome +usr/share/zoneinfo/posix/Africa/Luanda +usr/share/zoneinfo/posix/Africa/Lubumbashi +usr/share/zoneinfo/posix/Africa/Lusaka +usr/share/zoneinfo/posix/Africa/Malabo +usr/share/zoneinfo/posix/Africa/Maputo +usr/share/zoneinfo/posix/Africa/Maseru +usr/share/zoneinfo/posix/Africa/Mbabane +usr/share/zoneinfo/posix/Africa/Mogadishu +usr/share/zoneinfo/posix/Africa/Monrovia +usr/share/zoneinfo/posix/Africa/Nairobi +usr/share/zoneinfo/posix/Africa/Ndjamena +usr/share/zoneinfo/posix/Africa/Niamey +usr/share/zoneinfo/posix/Africa/Nouakchott +usr/share/zoneinfo/posix/Africa/Ouagadougou +usr/share/zoneinfo/posix/Africa/Porto-Novo +usr/share/zoneinfo/posix/Africa/Sao_Tome +usr/share/zoneinfo/posix/Africa/Timbuktu +usr/share/zoneinfo/posix/Africa/Tripoli +usr/share/zoneinfo/posix/Africa/Tunis +usr/share/zoneinfo/posix/Africa/Windhoek +usr/share/zoneinfo/posix/America/ +usr/share/zoneinfo/posix/America/Adak +usr/share/zoneinfo/posix/America/Anchorage +usr/share/zoneinfo/posix/America/Anguilla +usr/share/zoneinfo/posix/America/Antigua +usr/share/zoneinfo/posix/America/Araguaina +usr/share/zoneinfo/posix/America/Argentina/ +usr/share/zoneinfo/posix/America/Argentina/Buenos_Aires +usr/share/zoneinfo/posix/America/Argentina/Catamarca +usr/share/zoneinfo/posix/America/Argentina/ComodRivadavia +usr/share/zoneinfo/posix/America/Argentina/Cordoba +usr/share/zoneinfo/posix/America/Argentina/Jujuy +usr/share/zoneinfo/posix/America/Argentina/La_Rioja +usr/share/zoneinfo/posix/America/Argentina/Mendoza +usr/share/zoneinfo/posix/America/Argentina/Rio_Gallegos +usr/share/zoneinfo/posix/America/Argentina/Salta +usr/share/zoneinfo/posix/America/Argentina/San_Juan +usr/share/zoneinfo/posix/America/Argentina/San_Luis +usr/share/zoneinfo/posix/America/Argentina/Tucuman +usr/share/zoneinfo/posix/America/Argentina/Ushuaia +usr/share/zoneinfo/posix/America/Aruba +usr/share/zoneinfo/posix/America/Asuncion +usr/share/zoneinfo/posix/America/Atikokan +usr/share/zoneinfo/posix/America/Atka +usr/share/zoneinfo/posix/America/Bahia +usr/share/zoneinfo/posix/America/Bahia_Banderas +usr/share/zoneinfo/posix/America/Barbados +usr/share/zoneinfo/posix/America/Belem +usr/share/zoneinfo/posix/America/Belize +usr/share/zoneinfo/posix/America/Blanc-Sablon +usr/share/zoneinfo/posix/America/Boa_Vista +usr/share/zoneinfo/posix/America/Bogota +usr/share/zoneinfo/posix/America/Boise +usr/share/zoneinfo/posix/America/Buenos_Aires +usr/share/zoneinfo/posix/America/Cambridge_Bay +usr/share/zoneinfo/posix/America/Campo_Grande +usr/share/zoneinfo/posix/America/Cancun +usr/share/zoneinfo/posix/America/Caracas +usr/share/zoneinfo/posix/America/Catamarca +usr/share/zoneinfo/posix/America/Cayenne +usr/share/zoneinfo/posix/America/Cayman +usr/share/zoneinfo/posix/America/Chicago +usr/share/zoneinfo/posix/America/Chihuahua +usr/share/zoneinfo/posix/America/Coral_Harbour +usr/share/zoneinfo/posix/America/Cordoba +usr/share/zoneinfo/posix/America/Costa_Rica +usr/share/zoneinfo/posix/America/Creston +usr/share/zoneinfo/posix/America/Cuiaba +usr/share/zoneinfo/posix/America/Curacao +usr/share/zoneinfo/posix/America/Danmarkshavn +usr/share/zoneinfo/posix/America/Dawson +usr/share/zoneinfo/posix/America/Dawson_Creek +usr/share/zoneinfo/posix/America/Denver +usr/share/zoneinfo/posix/America/Detroit +usr/share/zoneinfo/posix/America/Dominica +usr/share/zoneinfo/posix/America/Edmonton +usr/share/zoneinfo/posix/America/Eirunepe +usr/share/zoneinfo/posix/America/El_Salvador +usr/share/zoneinfo/posix/America/Ensenada +usr/share/zoneinfo/posix/America/Fort_Nelson +usr/share/zoneinfo/posix/America/Fort_Wayne +usr/share/zoneinfo/posix/America/Fortaleza +usr/share/zoneinfo/posix/America/Glace_Bay +usr/share/zoneinfo/posix/America/Godthab +usr/share/zoneinfo/posix/America/Goose_Bay +usr/share/zoneinfo/posix/America/Grand_Turk +usr/share/zoneinfo/posix/America/Grenada +usr/share/zoneinfo/posix/America/Guadeloupe +usr/share/zoneinfo/posix/America/Guatemala +usr/share/zoneinfo/posix/America/Guayaquil +usr/share/zoneinfo/posix/America/Guyana +usr/share/zoneinfo/posix/America/Halifax +usr/share/zoneinfo/posix/America/Havana +usr/share/zoneinfo/posix/America/Hermosillo +usr/share/zoneinfo/posix/America/Indiana/ +usr/share/zoneinfo/posix/America/Indiana/Indianapolis +usr/share/zoneinfo/posix/America/Indiana/Knox +usr/share/zoneinfo/posix/America/Indiana/Marengo +usr/share/zoneinfo/posix/America/Indiana/Petersburg +usr/share/zoneinfo/posix/America/Indiana/Tell_City +usr/share/zoneinfo/posix/America/Indiana/Vevay +usr/share/zoneinfo/posix/America/Indiana/Vincennes +usr/share/zoneinfo/posix/America/Indiana/Winamac +usr/share/zoneinfo/posix/America/Indianapolis +usr/share/zoneinfo/posix/America/Inuvik +usr/share/zoneinfo/posix/America/Iqaluit +usr/share/zoneinfo/posix/America/Jamaica +usr/share/zoneinfo/posix/America/Jujuy +usr/share/zoneinfo/posix/America/Juneau +usr/share/zoneinfo/posix/America/Kentucky/ +usr/share/zoneinfo/posix/America/Kentucky/Louisville +usr/share/zoneinfo/posix/America/Kentucky/Monticello +usr/share/zoneinfo/posix/America/Knox_IN +usr/share/zoneinfo/posix/America/Kralendijk +usr/share/zoneinfo/posix/America/La_Paz +usr/share/zoneinfo/posix/America/Lima +usr/share/zoneinfo/posix/America/Los_Angeles +usr/share/zoneinfo/posix/America/Louisville +usr/share/zoneinfo/posix/America/Lower_Princes +usr/share/zoneinfo/posix/America/Maceio +usr/share/zoneinfo/posix/America/Managua +usr/share/zoneinfo/posix/America/Manaus +usr/share/zoneinfo/posix/America/Marigot +usr/share/zoneinfo/posix/America/Martinique +usr/share/zoneinfo/posix/America/Matamoros +usr/share/zoneinfo/posix/America/Mazatlan +usr/share/zoneinfo/posix/America/Mendoza +usr/share/zoneinfo/posix/America/Menominee +usr/share/zoneinfo/posix/America/Merida +usr/share/zoneinfo/posix/America/Metlakatla +usr/share/zoneinfo/posix/America/Mexico_City +usr/share/zoneinfo/posix/America/Miquelon +usr/share/zoneinfo/posix/America/Moncton +usr/share/zoneinfo/posix/America/Monterrey +usr/share/zoneinfo/posix/America/Montevideo +usr/share/zoneinfo/posix/America/Montreal +usr/share/zoneinfo/posix/America/Montserrat +usr/share/zoneinfo/posix/America/Nassau +usr/share/zoneinfo/posix/America/New_York +usr/share/zoneinfo/posix/America/Nipigon +usr/share/zoneinfo/posix/America/Nome +usr/share/zoneinfo/posix/America/Noronha +usr/share/zoneinfo/posix/America/North_Dakota/ +usr/share/zoneinfo/posix/America/North_Dakota/Beulah +usr/share/zoneinfo/posix/America/North_Dakota/Center +usr/share/zoneinfo/posix/America/North_Dakota/New_Salem +usr/share/zoneinfo/posix/America/Ojinaga +usr/share/zoneinfo/posix/America/Panama +usr/share/zoneinfo/posix/America/Pangnirtung +usr/share/zoneinfo/posix/America/Paramaribo +usr/share/zoneinfo/posix/America/Phoenix +usr/share/zoneinfo/posix/America/Port-au-Prince +usr/share/zoneinfo/posix/America/Port_of_Spain +usr/share/zoneinfo/posix/America/Porto_Acre +usr/share/zoneinfo/posix/America/Porto_Velho +usr/share/zoneinfo/posix/America/Puerto_Rico +usr/share/zoneinfo/posix/America/Punta_Arenas +usr/share/zoneinfo/posix/America/Rainy_River +usr/share/zoneinfo/posix/America/Rankin_Inlet +usr/share/zoneinfo/posix/America/Recife +usr/share/zoneinfo/posix/America/Regina +usr/share/zoneinfo/posix/America/Resolute +usr/share/zoneinfo/posix/America/Rio_Branco +usr/share/zoneinfo/posix/America/Rosario +usr/share/zoneinfo/posix/America/Santa_Isabel +usr/share/zoneinfo/posix/America/Santarem +usr/share/zoneinfo/posix/America/Santiago +usr/share/zoneinfo/posix/America/Santo_Domingo +usr/share/zoneinfo/posix/America/Sao_Paulo +usr/share/zoneinfo/posix/America/Scoresbysund +usr/share/zoneinfo/posix/America/Shiprock +usr/share/zoneinfo/posix/America/Sitka +usr/share/zoneinfo/posix/America/St_Barthelemy +usr/share/zoneinfo/posix/America/St_Johns +usr/share/zoneinfo/posix/America/St_Kitts +usr/share/zoneinfo/posix/America/St_Lucia +usr/share/zoneinfo/posix/America/St_Thomas +usr/share/zoneinfo/posix/America/St_Vincent +usr/share/zoneinfo/posix/America/Swift_Current +usr/share/zoneinfo/posix/America/Tegucigalpa +usr/share/zoneinfo/posix/America/Thule +usr/share/zoneinfo/posix/America/Thunder_Bay +usr/share/zoneinfo/posix/America/Tijuana +usr/share/zoneinfo/posix/America/Toronto +usr/share/zoneinfo/posix/America/Tortola +usr/share/zoneinfo/posix/America/Vancouver +usr/share/zoneinfo/posix/America/Virgin +usr/share/zoneinfo/posix/America/Whitehorse +usr/share/zoneinfo/posix/America/Winnipeg +usr/share/zoneinfo/posix/America/Yakutat +usr/share/zoneinfo/posix/America/Yellowknife +usr/share/zoneinfo/posix/Antarctica/ +usr/share/zoneinfo/posix/Antarctica/Casey +usr/share/zoneinfo/posix/Antarctica/Davis +usr/share/zoneinfo/posix/Antarctica/DumontDUrville +usr/share/zoneinfo/posix/Antarctica/Macquarie +usr/share/zoneinfo/posix/Antarctica/Mawson +usr/share/zoneinfo/posix/Antarctica/McMurdo +usr/share/zoneinfo/posix/Antarctica/Palmer +usr/share/zoneinfo/posix/Antarctica/Rothera +usr/share/zoneinfo/posix/Antarctica/South_Pole +usr/share/zoneinfo/posix/Antarctica/Syowa +usr/share/zoneinfo/posix/Antarctica/Troll +usr/share/zoneinfo/posix/Antarctica/Vostok +usr/share/zoneinfo/posix/Arctic/ +usr/share/zoneinfo/posix/Arctic/Longyearbyen +usr/share/zoneinfo/posix/Asia/ +usr/share/zoneinfo/posix/Asia/Aden +usr/share/zoneinfo/posix/Asia/Almaty +usr/share/zoneinfo/posix/Asia/Amman +usr/share/zoneinfo/posix/Asia/Anadyr +usr/share/zoneinfo/posix/Asia/Aqtau +usr/share/zoneinfo/posix/Asia/Aqtobe +usr/share/zoneinfo/posix/Asia/Ashgabat +usr/share/zoneinfo/posix/Asia/Ashkhabad +usr/share/zoneinfo/posix/Asia/Atyrau +usr/share/zoneinfo/posix/Asia/Baghdad +usr/share/zoneinfo/posix/Asia/Bahrain +usr/share/zoneinfo/posix/Asia/Baku +usr/share/zoneinfo/posix/Asia/Bangkok +usr/share/zoneinfo/posix/Asia/Barnaul +usr/share/zoneinfo/posix/Asia/Beirut +usr/share/zoneinfo/posix/Asia/Bishkek +usr/share/zoneinfo/posix/Asia/Brunei +usr/share/zoneinfo/posix/Asia/Calcutta +usr/share/zoneinfo/posix/Asia/Chita +usr/share/zoneinfo/posix/Asia/Choibalsan +usr/share/zoneinfo/posix/Asia/Chongqing +usr/share/zoneinfo/posix/Asia/Chungking +usr/share/zoneinfo/posix/Asia/Colombo +usr/share/zoneinfo/posix/Asia/Dacca +usr/share/zoneinfo/posix/Asia/Damascus +usr/share/zoneinfo/posix/Asia/Dhaka +usr/share/zoneinfo/posix/Asia/Dili +usr/share/zoneinfo/posix/Asia/Dubai +usr/share/zoneinfo/posix/Asia/Dushanbe +usr/share/zoneinfo/posix/Asia/Famagusta +usr/share/zoneinfo/posix/Asia/Gaza +usr/share/zoneinfo/posix/Asia/Harbin +usr/share/zoneinfo/posix/Asia/Hebron +usr/share/zoneinfo/posix/Asia/Ho_Chi_Minh +usr/share/zoneinfo/posix/Asia/Hong_Kong +usr/share/zoneinfo/posix/Asia/Hovd +usr/share/zoneinfo/posix/Asia/Irkutsk +usr/share/zoneinfo/posix/Asia/Istanbul +usr/share/zoneinfo/posix/Asia/Jakarta +usr/share/zoneinfo/posix/Asia/Jayapura +usr/share/zoneinfo/posix/Asia/Jerusalem +usr/share/zoneinfo/posix/Asia/Kabul +usr/share/zoneinfo/posix/Asia/Kamchatka +usr/share/zoneinfo/posix/Asia/Karachi +usr/share/zoneinfo/posix/Asia/Kashgar +usr/share/zoneinfo/posix/Asia/Kathmandu +usr/share/zoneinfo/posix/Asia/Katmandu +usr/share/zoneinfo/posix/Asia/Khandyga +usr/share/zoneinfo/posix/Asia/Kolkata +usr/share/zoneinfo/posix/Asia/Krasnoyarsk +usr/share/zoneinfo/posix/Asia/Kuala_Lumpur +usr/share/zoneinfo/posix/Asia/Kuching +usr/share/zoneinfo/posix/Asia/Kuwait +usr/share/zoneinfo/posix/Asia/Macao +usr/share/zoneinfo/posix/Asia/Macau +usr/share/zoneinfo/posix/Asia/Magadan +usr/share/zoneinfo/posix/Asia/Makassar +usr/share/zoneinfo/posix/Asia/Manila +usr/share/zoneinfo/posix/Asia/Muscat +usr/share/zoneinfo/posix/Asia/Nicosia +usr/share/zoneinfo/posix/Asia/Novokuznetsk +usr/share/zoneinfo/posix/Asia/Novosibirsk +usr/share/zoneinfo/posix/Asia/Omsk +usr/share/zoneinfo/posix/Asia/Oral +usr/share/zoneinfo/posix/Asia/Phnom_Penh +usr/share/zoneinfo/posix/Asia/Pontianak +usr/share/zoneinfo/posix/Asia/Pyongyang +usr/share/zoneinfo/posix/Asia/Qatar +usr/share/zoneinfo/posix/Asia/Qostanay +usr/share/zoneinfo/posix/Asia/Qyzylorda +usr/share/zoneinfo/posix/Asia/Rangoon +usr/share/zoneinfo/posix/Asia/Riyadh +usr/share/zoneinfo/posix/Asia/Saigon +usr/share/zoneinfo/posix/Asia/Sakhalin +usr/share/zoneinfo/posix/Asia/Samarkand +usr/share/zoneinfo/posix/Asia/Seoul +usr/share/zoneinfo/posix/Asia/Shanghai +usr/share/zoneinfo/posix/Asia/Singapore +usr/share/zoneinfo/posix/Asia/Srednekolymsk +usr/share/zoneinfo/posix/Asia/Taipei +usr/share/zoneinfo/posix/Asia/Tashkent +usr/share/zoneinfo/posix/Asia/Tbilisi +usr/share/zoneinfo/posix/Asia/Tehran +usr/share/zoneinfo/posix/Asia/Tel_Aviv +usr/share/zoneinfo/posix/Asia/Thimbu +usr/share/zoneinfo/posix/Asia/Thimphu +usr/share/zoneinfo/posix/Asia/Tokyo +usr/share/zoneinfo/posix/Asia/Tomsk +usr/share/zoneinfo/posix/Asia/Ujung_Pandang +usr/share/zoneinfo/posix/Asia/Ulaanbaatar +usr/share/zoneinfo/posix/Asia/Ulan_Bator +usr/share/zoneinfo/posix/Asia/Urumqi +usr/share/zoneinfo/posix/Asia/Ust-Nera +usr/share/zoneinfo/posix/Asia/Vientiane +usr/share/zoneinfo/posix/Asia/Vladivostok +usr/share/zoneinfo/posix/Asia/Yakutsk +usr/share/zoneinfo/posix/Asia/Yangon +usr/share/zoneinfo/posix/Asia/Yekaterinburg +usr/share/zoneinfo/posix/Asia/Yerevan +usr/share/zoneinfo/posix/Atlantic/ +usr/share/zoneinfo/posix/Atlantic/Azores +usr/share/zoneinfo/posix/Atlantic/Bermuda +usr/share/zoneinfo/posix/Atlantic/Canary +usr/share/zoneinfo/posix/Atlantic/Cape_Verde +usr/share/zoneinfo/posix/Atlantic/Faeroe +usr/share/zoneinfo/posix/Atlantic/Faroe +usr/share/zoneinfo/posix/Atlantic/Jan_Mayen +usr/share/zoneinfo/posix/Atlantic/Madeira +usr/share/zoneinfo/posix/Atlantic/Reykjavik +usr/share/zoneinfo/posix/Atlantic/South_Georgia +usr/share/zoneinfo/posix/Atlantic/St_Helena +usr/share/zoneinfo/posix/Atlantic/Stanley +usr/share/zoneinfo/posix/Australia/ +usr/share/zoneinfo/posix/Australia/ACT +usr/share/zoneinfo/posix/Australia/Adelaide +usr/share/zoneinfo/posix/Australia/Brisbane +usr/share/zoneinfo/posix/Australia/Broken_Hill +usr/share/zoneinfo/posix/Australia/Canberra +usr/share/zoneinfo/posix/Australia/Currie +usr/share/zoneinfo/posix/Australia/Darwin +usr/share/zoneinfo/posix/Australia/Eucla +usr/share/zoneinfo/posix/Australia/Hobart +usr/share/zoneinfo/posix/Australia/LHI +usr/share/zoneinfo/posix/Australia/Lindeman +usr/share/zoneinfo/posix/Australia/Lord_Howe +usr/share/zoneinfo/posix/Australia/Melbourne +usr/share/zoneinfo/posix/Australia/NSW +usr/share/zoneinfo/posix/Australia/North +usr/share/zoneinfo/posix/Australia/Perth +usr/share/zoneinfo/posix/Australia/Queensland +usr/share/zoneinfo/posix/Australia/South +usr/share/zoneinfo/posix/Australia/Sydney +usr/share/zoneinfo/posix/Australia/Tasmania +usr/share/zoneinfo/posix/Australia/Victoria +usr/share/zoneinfo/posix/Australia/West +usr/share/zoneinfo/posix/Australia/Yancowinna +usr/share/zoneinfo/posix/Brazil/ +usr/share/zoneinfo/posix/Brazil/Acre +usr/share/zoneinfo/posix/Brazil/DeNoronha +usr/share/zoneinfo/posix/Brazil/East +usr/share/zoneinfo/posix/Brazil/West +usr/share/zoneinfo/posix/CET +usr/share/zoneinfo/posix/CST6CDT +usr/share/zoneinfo/posix/Canada/ +usr/share/zoneinfo/posix/Canada/Atlantic +usr/share/zoneinfo/posix/Canada/Central +usr/share/zoneinfo/posix/Canada/Eastern +usr/share/zoneinfo/posix/Canada/Mountain +usr/share/zoneinfo/posix/Canada/Newfoundland +usr/share/zoneinfo/posix/Canada/Pacific +usr/share/zoneinfo/posix/Canada/Saskatchewan +usr/share/zoneinfo/posix/Canada/Yukon +usr/share/zoneinfo/posix/Chile/ +usr/share/zoneinfo/posix/Chile/Continental +usr/share/zoneinfo/posix/Chile/EasterIsland +usr/share/zoneinfo/posix/Cuba +usr/share/zoneinfo/posix/EET +usr/share/zoneinfo/posix/EST +usr/share/zoneinfo/posix/EST5EDT +usr/share/zoneinfo/posix/Egypt +usr/share/zoneinfo/posix/Eire +usr/share/zoneinfo/posix/Etc/ +usr/share/zoneinfo/posix/Etc/GMT +usr/share/zoneinfo/posix/Etc/GMT+0 +usr/share/zoneinfo/posix/Etc/GMT+1 +usr/share/zoneinfo/posix/Etc/GMT+10 +usr/share/zoneinfo/posix/Etc/GMT+11 +usr/share/zoneinfo/posix/Etc/GMT+12 +usr/share/zoneinfo/posix/Etc/GMT+2 +usr/share/zoneinfo/posix/Etc/GMT+3 +usr/share/zoneinfo/posix/Etc/GMT+4 +usr/share/zoneinfo/posix/Etc/GMT+5 +usr/share/zoneinfo/posix/Etc/GMT+6 +usr/share/zoneinfo/posix/Etc/GMT+7 +usr/share/zoneinfo/posix/Etc/GMT+8 +usr/share/zoneinfo/posix/Etc/GMT+9 +usr/share/zoneinfo/posix/Etc/GMT-0 +usr/share/zoneinfo/posix/Etc/GMT-1 +usr/share/zoneinfo/posix/Etc/GMT-10 +usr/share/zoneinfo/posix/Etc/GMT-11 +usr/share/zoneinfo/posix/Etc/GMT-12 +usr/share/zoneinfo/posix/Etc/GMT-13 +usr/share/zoneinfo/posix/Etc/GMT-14 +usr/share/zoneinfo/posix/Etc/GMT-2 +usr/share/zoneinfo/posix/Etc/GMT-3 +usr/share/zoneinfo/posix/Etc/GMT-4 +usr/share/zoneinfo/posix/Etc/GMT-5 +usr/share/zoneinfo/posix/Etc/GMT-6 +usr/share/zoneinfo/posix/Etc/GMT-7 +usr/share/zoneinfo/posix/Etc/GMT-8 +usr/share/zoneinfo/posix/Etc/GMT-9 +usr/share/zoneinfo/posix/Etc/GMT0 +usr/share/zoneinfo/posix/Etc/Greenwich +usr/share/zoneinfo/posix/Etc/UCT +usr/share/zoneinfo/posix/Etc/UTC +usr/share/zoneinfo/posix/Etc/Universal +usr/share/zoneinfo/posix/Etc/Zulu +usr/share/zoneinfo/posix/Europe/ +usr/share/zoneinfo/posix/Europe/Amsterdam +usr/share/zoneinfo/posix/Europe/Andorra +usr/share/zoneinfo/posix/Europe/Astrakhan +usr/share/zoneinfo/posix/Europe/Athens +usr/share/zoneinfo/posix/Europe/Belfast +usr/share/zoneinfo/posix/Europe/Belgrade +usr/share/zoneinfo/posix/Europe/Berlin +usr/share/zoneinfo/posix/Europe/Bratislava +usr/share/zoneinfo/posix/Europe/Brussels +usr/share/zoneinfo/posix/Europe/Bucharest +usr/share/zoneinfo/posix/Europe/Budapest +usr/share/zoneinfo/posix/Europe/Busingen +usr/share/zoneinfo/posix/Europe/Chisinau +usr/share/zoneinfo/posix/Europe/Copenhagen +usr/share/zoneinfo/posix/Europe/Dublin +usr/share/zoneinfo/posix/Europe/Gibraltar +usr/share/zoneinfo/posix/Europe/Guernsey +usr/share/zoneinfo/posix/Europe/Helsinki +usr/share/zoneinfo/posix/Europe/Isle_of_Man +usr/share/zoneinfo/posix/Europe/Istanbul +usr/share/zoneinfo/posix/Europe/Jersey +usr/share/zoneinfo/posix/Europe/Kaliningrad +usr/share/zoneinfo/posix/Europe/Kiev +usr/share/zoneinfo/posix/Europe/Kirov +usr/share/zoneinfo/posix/Europe/Lisbon +usr/share/zoneinfo/posix/Europe/Ljubljana +usr/share/zoneinfo/posix/Europe/London +usr/share/zoneinfo/posix/Europe/Luxembourg +usr/share/zoneinfo/posix/Europe/Madrid +usr/share/zoneinfo/posix/Europe/Malta +usr/share/zoneinfo/posix/Europe/Mariehamn +usr/share/zoneinfo/posix/Europe/Minsk +usr/share/zoneinfo/posix/Europe/Monaco +usr/share/zoneinfo/posix/Europe/Moscow +usr/share/zoneinfo/posix/Europe/Nicosia +usr/share/zoneinfo/posix/Europe/Oslo +usr/share/zoneinfo/posix/Europe/Paris +usr/share/zoneinfo/posix/Europe/Podgorica +usr/share/zoneinfo/posix/Europe/Prague +usr/share/zoneinfo/posix/Europe/Riga +usr/share/zoneinfo/posix/Europe/Rome +usr/share/zoneinfo/posix/Europe/Samara +usr/share/zoneinfo/posix/Europe/San_Marino +usr/share/zoneinfo/posix/Europe/Sarajevo +usr/share/zoneinfo/posix/Europe/Saratov +usr/share/zoneinfo/posix/Europe/Simferopol +usr/share/zoneinfo/posix/Europe/Skopje +usr/share/zoneinfo/posix/Europe/Sofia +usr/share/zoneinfo/posix/Europe/Stockholm +usr/share/zoneinfo/posix/Europe/Tallinn +usr/share/zoneinfo/posix/Europe/Tirane +usr/share/zoneinfo/posix/Europe/Tiraspol +usr/share/zoneinfo/posix/Europe/Ulyanovsk +usr/share/zoneinfo/posix/Europe/Uzhgorod +usr/share/zoneinfo/posix/Europe/Vaduz +usr/share/zoneinfo/posix/Europe/Vatican +usr/share/zoneinfo/posix/Europe/Vienna +usr/share/zoneinfo/posix/Europe/Vilnius +usr/share/zoneinfo/posix/Europe/Volgograd +usr/share/zoneinfo/posix/Europe/Warsaw +usr/share/zoneinfo/posix/Europe/Zagreb +usr/share/zoneinfo/posix/Europe/Zaporozhye +usr/share/zoneinfo/posix/Europe/Zurich +usr/share/zoneinfo/posix/GB +usr/share/zoneinfo/posix/GB-Eire +usr/share/zoneinfo/posix/GMT +usr/share/zoneinfo/posix/GMT+0 +usr/share/zoneinfo/posix/GMT-0 +usr/share/zoneinfo/posix/GMT0 +usr/share/zoneinfo/posix/Greenwich +usr/share/zoneinfo/posix/HST +usr/share/zoneinfo/posix/Hongkong +usr/share/zoneinfo/posix/Iceland +usr/share/zoneinfo/posix/Indian/ +usr/share/zoneinfo/posix/Indian/Antananarivo +usr/share/zoneinfo/posix/Indian/Chagos +usr/share/zoneinfo/posix/Indian/Christmas +usr/share/zoneinfo/posix/Indian/Cocos +usr/share/zoneinfo/posix/Indian/Comoro +usr/share/zoneinfo/posix/Indian/Kerguelen +usr/share/zoneinfo/posix/Indian/Mahe +usr/share/zoneinfo/posix/Indian/Maldives +usr/share/zoneinfo/posix/Indian/Mauritius +usr/share/zoneinfo/posix/Indian/Mayotte +usr/share/zoneinfo/posix/Indian/Reunion +usr/share/zoneinfo/posix/Iran +usr/share/zoneinfo/posix/Israel +usr/share/zoneinfo/posix/Jamaica +usr/share/zoneinfo/posix/Japan +usr/share/zoneinfo/posix/Kwajalein +usr/share/zoneinfo/posix/Libya +usr/share/zoneinfo/posix/MET +usr/share/zoneinfo/posix/MST +usr/share/zoneinfo/posix/MST7MDT +usr/share/zoneinfo/posix/Mexico/ +usr/share/zoneinfo/posix/Mexico/BajaNorte +usr/share/zoneinfo/posix/Mexico/BajaSur +usr/share/zoneinfo/posix/Mexico/General +usr/share/zoneinfo/posix/NZ +usr/share/zoneinfo/posix/NZ-CHAT +usr/share/zoneinfo/posix/Navajo +usr/share/zoneinfo/posix/PRC +usr/share/zoneinfo/posix/PST8PDT +usr/share/zoneinfo/posix/Pacific/ +usr/share/zoneinfo/posix/Pacific/Apia +usr/share/zoneinfo/posix/Pacific/Auckland +usr/share/zoneinfo/posix/Pacific/Bougainville +usr/share/zoneinfo/posix/Pacific/Chatham +usr/share/zoneinfo/posix/Pacific/Chuuk +usr/share/zoneinfo/posix/Pacific/Easter +usr/share/zoneinfo/posix/Pacific/Efate +usr/share/zoneinfo/posix/Pacific/Enderbury +usr/share/zoneinfo/posix/Pacific/Fakaofo +usr/share/zoneinfo/posix/Pacific/Fiji +usr/share/zoneinfo/posix/Pacific/Funafuti +usr/share/zoneinfo/posix/Pacific/Galapagos +usr/share/zoneinfo/posix/Pacific/Gambier +usr/share/zoneinfo/posix/Pacific/Guadalcanal +usr/share/zoneinfo/posix/Pacific/Guam +usr/share/zoneinfo/posix/Pacific/Honolulu +usr/share/zoneinfo/posix/Pacific/Johnston +usr/share/zoneinfo/posix/Pacific/Kiritimati +usr/share/zoneinfo/posix/Pacific/Kosrae +usr/share/zoneinfo/posix/Pacific/Kwajalein +usr/share/zoneinfo/posix/Pacific/Majuro +usr/share/zoneinfo/posix/Pacific/Marquesas +usr/share/zoneinfo/posix/Pacific/Midway +usr/share/zoneinfo/posix/Pacific/Nauru +usr/share/zoneinfo/posix/Pacific/Niue +usr/share/zoneinfo/posix/Pacific/Norfolk +usr/share/zoneinfo/posix/Pacific/Noumea +usr/share/zoneinfo/posix/Pacific/Pago_Pago +usr/share/zoneinfo/posix/Pacific/Palau +usr/share/zoneinfo/posix/Pacific/Pitcairn +usr/share/zoneinfo/posix/Pacific/Pohnpei +usr/share/zoneinfo/posix/Pacific/Ponape +usr/share/zoneinfo/posix/Pacific/Port_Moresby +usr/share/zoneinfo/posix/Pacific/Rarotonga +usr/share/zoneinfo/posix/Pacific/Saipan +usr/share/zoneinfo/posix/Pacific/Samoa +usr/share/zoneinfo/posix/Pacific/Tahiti +usr/share/zoneinfo/posix/Pacific/Tarawa +usr/share/zoneinfo/posix/Pacific/Tongatapu +usr/share/zoneinfo/posix/Pacific/Truk +usr/share/zoneinfo/posix/Pacific/Wake +usr/share/zoneinfo/posix/Pacific/Wallis +usr/share/zoneinfo/posix/Pacific/Yap +usr/share/zoneinfo/posix/Poland +usr/share/zoneinfo/posix/Portugal +usr/share/zoneinfo/posix/ROC +usr/share/zoneinfo/posix/ROK +usr/share/zoneinfo/posix/Singapore +usr/share/zoneinfo/posix/Turkey +usr/share/zoneinfo/posix/UCT +usr/share/zoneinfo/posix/US/ +usr/share/zoneinfo/posix/US/Alaska +usr/share/zoneinfo/posix/US/Aleutian +usr/share/zoneinfo/posix/US/Arizona +usr/share/zoneinfo/posix/US/Central +usr/share/zoneinfo/posix/US/East-Indiana +usr/share/zoneinfo/posix/US/Eastern +usr/share/zoneinfo/posix/US/Hawaii +usr/share/zoneinfo/posix/US/Indiana-Starke +usr/share/zoneinfo/posix/US/Michigan +usr/share/zoneinfo/posix/US/Mountain +usr/share/zoneinfo/posix/US/Pacific +usr/share/zoneinfo/posix/US/Pacific-New +usr/share/zoneinfo/posix/US/Samoa +usr/share/zoneinfo/posix/UTC +usr/share/zoneinfo/posix/Universal +usr/share/zoneinfo/posix/W-SU +usr/share/zoneinfo/posix/WET +usr/share/zoneinfo/posix/Zulu +usr/share/zoneinfo/posixrules +usr/share/zoneinfo/right/ +usr/share/zoneinfo/right/Africa/ +usr/share/zoneinfo/right/Africa/Abidjan +usr/share/zoneinfo/right/Africa/Accra +usr/share/zoneinfo/right/Africa/Addis_Ababa +usr/share/zoneinfo/right/Africa/Algiers +usr/share/zoneinfo/right/Africa/Asmara +usr/share/zoneinfo/right/Africa/Asmera +usr/share/zoneinfo/right/Africa/Bamako +usr/share/zoneinfo/right/Africa/Bangui +usr/share/zoneinfo/right/Africa/Banjul +usr/share/zoneinfo/right/Africa/Bissau +usr/share/zoneinfo/right/Africa/Blantyre +usr/share/zoneinfo/right/Africa/Brazzaville +usr/share/zoneinfo/right/Africa/Bujumbura +usr/share/zoneinfo/right/Africa/Cairo +usr/share/zoneinfo/right/Africa/Casablanca +usr/share/zoneinfo/right/Africa/Ceuta +usr/share/zoneinfo/right/Africa/Conakry +usr/share/zoneinfo/right/Africa/Dakar +usr/share/zoneinfo/right/Africa/Dar_es_Salaam +usr/share/zoneinfo/right/Africa/Djibouti +usr/share/zoneinfo/right/Africa/Douala +usr/share/zoneinfo/right/Africa/El_Aaiun +usr/share/zoneinfo/right/Africa/Freetown +usr/share/zoneinfo/right/Africa/Gaborone +usr/share/zoneinfo/right/Africa/Harare +usr/share/zoneinfo/right/Africa/Johannesburg +usr/share/zoneinfo/right/Africa/Juba +usr/share/zoneinfo/right/Africa/Kampala +usr/share/zoneinfo/right/Africa/Khartoum +usr/share/zoneinfo/right/Africa/Kigali +usr/share/zoneinfo/right/Africa/Kinshasa +usr/share/zoneinfo/right/Africa/Lagos +usr/share/zoneinfo/right/Africa/Libreville +usr/share/zoneinfo/right/Africa/Lome +usr/share/zoneinfo/right/Africa/Luanda +usr/share/zoneinfo/right/Africa/Lubumbashi +usr/share/zoneinfo/right/Africa/Lusaka +usr/share/zoneinfo/right/Africa/Malabo +usr/share/zoneinfo/right/Africa/Maputo +usr/share/zoneinfo/right/Africa/Maseru +usr/share/zoneinfo/right/Africa/Mbabane +usr/share/zoneinfo/right/Africa/Mogadishu +usr/share/zoneinfo/right/Africa/Monrovia +usr/share/zoneinfo/right/Africa/Nairobi +usr/share/zoneinfo/right/Africa/Ndjamena +usr/share/zoneinfo/right/Africa/Niamey +usr/share/zoneinfo/right/Africa/Nouakchott +usr/share/zoneinfo/right/Africa/Ouagadougou +usr/share/zoneinfo/right/Africa/Porto-Novo +usr/share/zoneinfo/right/Africa/Sao_Tome +usr/share/zoneinfo/right/Africa/Timbuktu +usr/share/zoneinfo/right/Africa/Tripoli +usr/share/zoneinfo/right/Africa/Tunis +usr/share/zoneinfo/right/Africa/Windhoek +usr/share/zoneinfo/right/America/ +usr/share/zoneinfo/right/America/Adak +usr/share/zoneinfo/right/America/Anchorage +usr/share/zoneinfo/right/America/Anguilla +usr/share/zoneinfo/right/America/Antigua +usr/share/zoneinfo/right/America/Araguaina +usr/share/zoneinfo/right/America/Argentina/ +usr/share/zoneinfo/right/America/Argentina/Buenos_Aires +usr/share/zoneinfo/right/America/Argentina/Catamarca +usr/share/zoneinfo/right/America/Argentina/ComodRivadavia +usr/share/zoneinfo/right/America/Argentina/Cordoba +usr/share/zoneinfo/right/America/Argentina/Jujuy +usr/share/zoneinfo/right/America/Argentina/La_Rioja +usr/share/zoneinfo/right/America/Argentina/Mendoza +usr/share/zoneinfo/right/America/Argentina/Rio_Gallegos +usr/share/zoneinfo/right/America/Argentina/Salta +usr/share/zoneinfo/right/America/Argentina/San_Juan +usr/share/zoneinfo/right/America/Argentina/San_Luis +usr/share/zoneinfo/right/America/Argentina/Tucuman +usr/share/zoneinfo/right/America/Argentina/Ushuaia +usr/share/zoneinfo/right/America/Aruba +usr/share/zoneinfo/right/America/Asuncion +usr/share/zoneinfo/right/America/Atikokan +usr/share/zoneinfo/right/America/Atka +usr/share/zoneinfo/right/America/Bahia +usr/share/zoneinfo/right/America/Bahia_Banderas +usr/share/zoneinfo/right/America/Barbados +usr/share/zoneinfo/right/America/Belem +usr/share/zoneinfo/right/America/Belize +usr/share/zoneinfo/right/America/Blanc-Sablon +usr/share/zoneinfo/right/America/Boa_Vista +usr/share/zoneinfo/right/America/Bogota +usr/share/zoneinfo/right/America/Boise +usr/share/zoneinfo/right/America/Buenos_Aires +usr/share/zoneinfo/right/America/Cambridge_Bay +usr/share/zoneinfo/right/America/Campo_Grande +usr/share/zoneinfo/right/America/Cancun +usr/share/zoneinfo/right/America/Caracas +usr/share/zoneinfo/right/America/Catamarca +usr/share/zoneinfo/right/America/Cayenne +usr/share/zoneinfo/right/America/Cayman +usr/share/zoneinfo/right/America/Chicago +usr/share/zoneinfo/right/America/Chihuahua +usr/share/zoneinfo/right/America/Coral_Harbour +usr/share/zoneinfo/right/America/Cordoba +usr/share/zoneinfo/right/America/Costa_Rica +usr/share/zoneinfo/right/America/Creston +usr/share/zoneinfo/right/America/Cuiaba +usr/share/zoneinfo/right/America/Curacao +usr/share/zoneinfo/right/America/Danmarkshavn +usr/share/zoneinfo/right/America/Dawson +usr/share/zoneinfo/right/America/Dawson_Creek +usr/share/zoneinfo/right/America/Denver +usr/share/zoneinfo/right/America/Detroit +usr/share/zoneinfo/right/America/Dominica +usr/share/zoneinfo/right/America/Edmonton +usr/share/zoneinfo/right/America/Eirunepe +usr/share/zoneinfo/right/America/El_Salvador +usr/share/zoneinfo/right/America/Ensenada +usr/share/zoneinfo/right/America/Fort_Nelson +usr/share/zoneinfo/right/America/Fort_Wayne +usr/share/zoneinfo/right/America/Fortaleza +usr/share/zoneinfo/right/America/Glace_Bay +usr/share/zoneinfo/right/America/Godthab +usr/share/zoneinfo/right/America/Goose_Bay +usr/share/zoneinfo/right/America/Grand_Turk +usr/share/zoneinfo/right/America/Grenada +usr/share/zoneinfo/right/America/Guadeloupe +usr/share/zoneinfo/right/America/Guatemala +usr/share/zoneinfo/right/America/Guayaquil +usr/share/zoneinfo/right/America/Guyana +usr/share/zoneinfo/right/America/Halifax +usr/share/zoneinfo/right/America/Havana +usr/share/zoneinfo/right/America/Hermosillo +usr/share/zoneinfo/right/America/Indiana/ +usr/share/zoneinfo/right/America/Indiana/Indianapolis +usr/share/zoneinfo/right/America/Indiana/Knox +usr/share/zoneinfo/right/America/Indiana/Marengo +usr/share/zoneinfo/right/America/Indiana/Petersburg +usr/share/zoneinfo/right/America/Indiana/Tell_City +usr/share/zoneinfo/right/America/Indiana/Vevay +usr/share/zoneinfo/right/America/Indiana/Vincennes +usr/share/zoneinfo/right/America/Indiana/Winamac +usr/share/zoneinfo/right/America/Indianapolis +usr/share/zoneinfo/right/America/Inuvik +usr/share/zoneinfo/right/America/Iqaluit +usr/share/zoneinfo/right/America/Jamaica +usr/share/zoneinfo/right/America/Jujuy +usr/share/zoneinfo/right/America/Juneau +usr/share/zoneinfo/right/America/Kentucky/ +usr/share/zoneinfo/right/America/Kentucky/Louisville +usr/share/zoneinfo/right/America/Kentucky/Monticello +usr/share/zoneinfo/right/America/Knox_IN +usr/share/zoneinfo/right/America/Kralendijk +usr/share/zoneinfo/right/America/La_Paz +usr/share/zoneinfo/right/America/Lima +usr/share/zoneinfo/right/America/Los_Angeles +usr/share/zoneinfo/right/America/Louisville +usr/share/zoneinfo/right/America/Lower_Princes +usr/share/zoneinfo/right/America/Maceio +usr/share/zoneinfo/right/America/Managua +usr/share/zoneinfo/right/America/Manaus +usr/share/zoneinfo/right/America/Marigot +usr/share/zoneinfo/right/America/Martinique +usr/share/zoneinfo/right/America/Matamoros +usr/share/zoneinfo/right/America/Mazatlan +usr/share/zoneinfo/right/America/Mendoza +usr/share/zoneinfo/right/America/Menominee +usr/share/zoneinfo/right/America/Merida +usr/share/zoneinfo/right/America/Metlakatla +usr/share/zoneinfo/right/America/Mexico_City +usr/share/zoneinfo/right/America/Miquelon +usr/share/zoneinfo/right/America/Moncton +usr/share/zoneinfo/right/America/Monterrey +usr/share/zoneinfo/right/America/Montevideo +usr/share/zoneinfo/right/America/Montreal +usr/share/zoneinfo/right/America/Montserrat +usr/share/zoneinfo/right/America/Nassau +usr/share/zoneinfo/right/America/New_York +usr/share/zoneinfo/right/America/Nipigon +usr/share/zoneinfo/right/America/Nome +usr/share/zoneinfo/right/America/Noronha +usr/share/zoneinfo/right/America/North_Dakota/ +usr/share/zoneinfo/right/America/North_Dakota/Beulah +usr/share/zoneinfo/right/America/North_Dakota/Center +usr/share/zoneinfo/right/America/North_Dakota/New_Salem +usr/share/zoneinfo/right/America/Ojinaga +usr/share/zoneinfo/right/America/Panama +usr/share/zoneinfo/right/America/Pangnirtung +usr/share/zoneinfo/right/America/Paramaribo +usr/share/zoneinfo/right/America/Phoenix +usr/share/zoneinfo/right/America/Port-au-Prince +usr/share/zoneinfo/right/America/Port_of_Spain +usr/share/zoneinfo/right/America/Porto_Acre +usr/share/zoneinfo/right/America/Porto_Velho +usr/share/zoneinfo/right/America/Puerto_Rico +usr/share/zoneinfo/right/America/Punta_Arenas +usr/share/zoneinfo/right/America/Rainy_River +usr/share/zoneinfo/right/America/Rankin_Inlet +usr/share/zoneinfo/right/America/Recife +usr/share/zoneinfo/right/America/Regina +usr/share/zoneinfo/right/America/Resolute +usr/share/zoneinfo/right/America/Rio_Branco +usr/share/zoneinfo/right/America/Rosario +usr/share/zoneinfo/right/America/Santa_Isabel +usr/share/zoneinfo/right/America/Santarem +usr/share/zoneinfo/right/America/Santiago +usr/share/zoneinfo/right/America/Santo_Domingo +usr/share/zoneinfo/right/America/Sao_Paulo +usr/share/zoneinfo/right/America/Scoresbysund +usr/share/zoneinfo/right/America/Shiprock +usr/share/zoneinfo/right/America/Sitka +usr/share/zoneinfo/right/America/St_Barthelemy +usr/share/zoneinfo/right/America/St_Johns +usr/share/zoneinfo/right/America/St_Kitts +usr/share/zoneinfo/right/America/St_Lucia +usr/share/zoneinfo/right/America/St_Thomas +usr/share/zoneinfo/right/America/St_Vincent +usr/share/zoneinfo/right/America/Swift_Current +usr/share/zoneinfo/right/America/Tegucigalpa +usr/share/zoneinfo/right/America/Thule +usr/share/zoneinfo/right/America/Thunder_Bay +usr/share/zoneinfo/right/America/Tijuana +usr/share/zoneinfo/right/America/Toronto +usr/share/zoneinfo/right/America/Tortola +usr/share/zoneinfo/right/America/Vancouver +usr/share/zoneinfo/right/America/Virgin +usr/share/zoneinfo/right/America/Whitehorse +usr/share/zoneinfo/right/America/Winnipeg +usr/share/zoneinfo/right/America/Yakutat +usr/share/zoneinfo/right/America/Yellowknife +usr/share/zoneinfo/right/Antarctica/ +usr/share/zoneinfo/right/Antarctica/Casey +usr/share/zoneinfo/right/Antarctica/Davis +usr/share/zoneinfo/right/Antarctica/DumontDUrville +usr/share/zoneinfo/right/Antarctica/Macquarie +usr/share/zoneinfo/right/Antarctica/Mawson +usr/share/zoneinfo/right/Antarctica/McMurdo +usr/share/zoneinfo/right/Antarctica/Palmer +usr/share/zoneinfo/right/Antarctica/Rothera +usr/share/zoneinfo/right/Antarctica/South_Pole +usr/share/zoneinfo/right/Antarctica/Syowa +usr/share/zoneinfo/right/Antarctica/Troll +usr/share/zoneinfo/right/Antarctica/Vostok +usr/share/zoneinfo/right/Arctic/ +usr/share/zoneinfo/right/Arctic/Longyearbyen +usr/share/zoneinfo/right/Asia/ +usr/share/zoneinfo/right/Asia/Aden +usr/share/zoneinfo/right/Asia/Almaty +usr/share/zoneinfo/right/Asia/Amman +usr/share/zoneinfo/right/Asia/Anadyr +usr/share/zoneinfo/right/Asia/Aqtau +usr/share/zoneinfo/right/Asia/Aqtobe +usr/share/zoneinfo/right/Asia/Ashgabat +usr/share/zoneinfo/right/Asia/Ashkhabad +usr/share/zoneinfo/right/Asia/Atyrau +usr/share/zoneinfo/right/Asia/Baghdad +usr/share/zoneinfo/right/Asia/Bahrain +usr/share/zoneinfo/right/Asia/Baku +usr/share/zoneinfo/right/Asia/Bangkok +usr/share/zoneinfo/right/Asia/Barnaul +usr/share/zoneinfo/right/Asia/Beirut +usr/share/zoneinfo/right/Asia/Bishkek +usr/share/zoneinfo/right/Asia/Brunei +usr/share/zoneinfo/right/Asia/Calcutta +usr/share/zoneinfo/right/Asia/Chita +usr/share/zoneinfo/right/Asia/Choibalsan +usr/share/zoneinfo/right/Asia/Chongqing +usr/share/zoneinfo/right/Asia/Chungking +usr/share/zoneinfo/right/Asia/Colombo +usr/share/zoneinfo/right/Asia/Dacca +usr/share/zoneinfo/right/Asia/Damascus +usr/share/zoneinfo/right/Asia/Dhaka +usr/share/zoneinfo/right/Asia/Dili +usr/share/zoneinfo/right/Asia/Dubai +usr/share/zoneinfo/right/Asia/Dushanbe +usr/share/zoneinfo/right/Asia/Famagusta +usr/share/zoneinfo/right/Asia/Gaza +usr/share/zoneinfo/right/Asia/Harbin +usr/share/zoneinfo/right/Asia/Hebron +usr/share/zoneinfo/right/Asia/Ho_Chi_Minh +usr/share/zoneinfo/right/Asia/Hong_Kong +usr/share/zoneinfo/right/Asia/Hovd +usr/share/zoneinfo/right/Asia/Irkutsk +usr/share/zoneinfo/right/Asia/Istanbul +usr/share/zoneinfo/right/Asia/Jakarta +usr/share/zoneinfo/right/Asia/Jayapura +usr/share/zoneinfo/right/Asia/Jerusalem +usr/share/zoneinfo/right/Asia/Kabul +usr/share/zoneinfo/right/Asia/Kamchatka +usr/share/zoneinfo/right/Asia/Karachi +usr/share/zoneinfo/right/Asia/Kashgar +usr/share/zoneinfo/right/Asia/Kathmandu +usr/share/zoneinfo/right/Asia/Katmandu +usr/share/zoneinfo/right/Asia/Khandyga +usr/share/zoneinfo/right/Asia/Kolkata +usr/share/zoneinfo/right/Asia/Krasnoyarsk +usr/share/zoneinfo/right/Asia/Kuala_Lumpur +usr/share/zoneinfo/right/Asia/Kuching +usr/share/zoneinfo/right/Asia/Kuwait +usr/share/zoneinfo/right/Asia/Macao +usr/share/zoneinfo/right/Asia/Macau +usr/share/zoneinfo/right/Asia/Magadan +usr/share/zoneinfo/right/Asia/Makassar +usr/share/zoneinfo/right/Asia/Manila +usr/share/zoneinfo/right/Asia/Muscat +usr/share/zoneinfo/right/Asia/Nicosia +usr/share/zoneinfo/right/Asia/Novokuznetsk +usr/share/zoneinfo/right/Asia/Novosibirsk +usr/share/zoneinfo/right/Asia/Omsk +usr/share/zoneinfo/right/Asia/Oral +usr/share/zoneinfo/right/Asia/Phnom_Penh +usr/share/zoneinfo/right/Asia/Pontianak +usr/share/zoneinfo/right/Asia/Pyongyang +usr/share/zoneinfo/right/Asia/Qatar +usr/share/zoneinfo/right/Asia/Qostanay +usr/share/zoneinfo/right/Asia/Qyzylorda +usr/share/zoneinfo/right/Asia/Rangoon +usr/share/zoneinfo/right/Asia/Riyadh +usr/share/zoneinfo/right/Asia/Saigon +usr/share/zoneinfo/right/Asia/Sakhalin +usr/share/zoneinfo/right/Asia/Samarkand +usr/share/zoneinfo/right/Asia/Seoul +usr/share/zoneinfo/right/Asia/Shanghai +usr/share/zoneinfo/right/Asia/Singapore +usr/share/zoneinfo/right/Asia/Srednekolymsk +usr/share/zoneinfo/right/Asia/Taipei +usr/share/zoneinfo/right/Asia/Tashkent +usr/share/zoneinfo/right/Asia/Tbilisi +usr/share/zoneinfo/right/Asia/Tehran +usr/share/zoneinfo/right/Asia/Tel_Aviv +usr/share/zoneinfo/right/Asia/Thimbu +usr/share/zoneinfo/right/Asia/Thimphu +usr/share/zoneinfo/right/Asia/Tokyo +usr/share/zoneinfo/right/Asia/Tomsk +usr/share/zoneinfo/right/Asia/Ujung_Pandang +usr/share/zoneinfo/right/Asia/Ulaanbaatar +usr/share/zoneinfo/right/Asia/Ulan_Bator +usr/share/zoneinfo/right/Asia/Urumqi +usr/share/zoneinfo/right/Asia/Ust-Nera +usr/share/zoneinfo/right/Asia/Vientiane +usr/share/zoneinfo/right/Asia/Vladivostok +usr/share/zoneinfo/right/Asia/Yakutsk +usr/share/zoneinfo/right/Asia/Yangon +usr/share/zoneinfo/right/Asia/Yekaterinburg +usr/share/zoneinfo/right/Asia/Yerevan +usr/share/zoneinfo/right/Atlantic/ +usr/share/zoneinfo/right/Atlantic/Azores +usr/share/zoneinfo/right/Atlantic/Bermuda +usr/share/zoneinfo/right/Atlantic/Canary +usr/share/zoneinfo/right/Atlantic/Cape_Verde +usr/share/zoneinfo/right/Atlantic/Faeroe +usr/share/zoneinfo/right/Atlantic/Faroe +usr/share/zoneinfo/right/Atlantic/Jan_Mayen +usr/share/zoneinfo/right/Atlantic/Madeira +usr/share/zoneinfo/right/Atlantic/Reykjavik +usr/share/zoneinfo/right/Atlantic/South_Georgia +usr/share/zoneinfo/right/Atlantic/St_Helena +usr/share/zoneinfo/right/Atlantic/Stanley +usr/share/zoneinfo/right/Australia/ +usr/share/zoneinfo/right/Australia/ACT +usr/share/zoneinfo/right/Australia/Adelaide +usr/share/zoneinfo/right/Australia/Brisbane +usr/share/zoneinfo/right/Australia/Broken_Hill +usr/share/zoneinfo/right/Australia/Canberra +usr/share/zoneinfo/right/Australia/Currie +usr/share/zoneinfo/right/Australia/Darwin +usr/share/zoneinfo/right/Australia/Eucla +usr/share/zoneinfo/right/Australia/Hobart +usr/share/zoneinfo/right/Australia/LHI +usr/share/zoneinfo/right/Australia/Lindeman +usr/share/zoneinfo/right/Australia/Lord_Howe +usr/share/zoneinfo/right/Australia/Melbourne +usr/share/zoneinfo/right/Australia/NSW +usr/share/zoneinfo/right/Australia/North +usr/share/zoneinfo/right/Australia/Perth +usr/share/zoneinfo/right/Australia/Queensland +usr/share/zoneinfo/right/Australia/South +usr/share/zoneinfo/right/Australia/Sydney +usr/share/zoneinfo/right/Australia/Tasmania +usr/share/zoneinfo/right/Australia/Victoria +usr/share/zoneinfo/right/Australia/West +usr/share/zoneinfo/right/Australia/Yancowinna +usr/share/zoneinfo/right/Brazil/ +usr/share/zoneinfo/right/Brazil/Acre +usr/share/zoneinfo/right/Brazil/DeNoronha +usr/share/zoneinfo/right/Brazil/East +usr/share/zoneinfo/right/Brazil/West +usr/share/zoneinfo/right/CET +usr/share/zoneinfo/right/CST6CDT +usr/share/zoneinfo/right/Canada/ +usr/share/zoneinfo/right/Canada/Atlantic +usr/share/zoneinfo/right/Canada/Central +usr/share/zoneinfo/right/Canada/Eastern +usr/share/zoneinfo/right/Canada/Mountain +usr/share/zoneinfo/right/Canada/Newfoundland +usr/share/zoneinfo/right/Canada/Pacific +usr/share/zoneinfo/right/Canada/Saskatchewan +usr/share/zoneinfo/right/Canada/Yukon +usr/share/zoneinfo/right/Chile/ +usr/share/zoneinfo/right/Chile/Continental +usr/share/zoneinfo/right/Chile/EasterIsland +usr/share/zoneinfo/right/Cuba +usr/share/zoneinfo/right/EET +usr/share/zoneinfo/right/EST +usr/share/zoneinfo/right/EST5EDT +usr/share/zoneinfo/right/Egypt +usr/share/zoneinfo/right/Eire +usr/share/zoneinfo/right/Etc/ +usr/share/zoneinfo/right/Etc/GMT +usr/share/zoneinfo/right/Etc/GMT+0 +usr/share/zoneinfo/right/Etc/GMT+1 +usr/share/zoneinfo/right/Etc/GMT+10 +usr/share/zoneinfo/right/Etc/GMT+11 +usr/share/zoneinfo/right/Etc/GMT+12 +usr/share/zoneinfo/right/Etc/GMT+2 +usr/share/zoneinfo/right/Etc/GMT+3 +usr/share/zoneinfo/right/Etc/GMT+4 +usr/share/zoneinfo/right/Etc/GMT+5 +usr/share/zoneinfo/right/Etc/GMT+6 +usr/share/zoneinfo/right/Etc/GMT+7 +usr/share/zoneinfo/right/Etc/GMT+8 +usr/share/zoneinfo/right/Etc/GMT+9 +usr/share/zoneinfo/right/Etc/GMT-0 +usr/share/zoneinfo/right/Etc/GMT-1 +usr/share/zoneinfo/right/Etc/GMT-10 +usr/share/zoneinfo/right/Etc/GMT-11 +usr/share/zoneinfo/right/Etc/GMT-12 +usr/share/zoneinfo/right/Etc/GMT-13 +usr/share/zoneinfo/right/Etc/GMT-14 +usr/share/zoneinfo/right/Etc/GMT-2 +usr/share/zoneinfo/right/Etc/GMT-3 +usr/share/zoneinfo/right/Etc/GMT-4 +usr/share/zoneinfo/right/Etc/GMT-5 +usr/share/zoneinfo/right/Etc/GMT-6 +usr/share/zoneinfo/right/Etc/GMT-7 +usr/share/zoneinfo/right/Etc/GMT-8 +usr/share/zoneinfo/right/Etc/GMT-9 +usr/share/zoneinfo/right/Etc/GMT0 +usr/share/zoneinfo/right/Etc/Greenwich +usr/share/zoneinfo/right/Etc/UCT +usr/share/zoneinfo/right/Etc/UTC +usr/share/zoneinfo/right/Etc/Universal +usr/share/zoneinfo/right/Etc/Zulu +usr/share/zoneinfo/right/Europe/ +usr/share/zoneinfo/right/Europe/Amsterdam +usr/share/zoneinfo/right/Europe/Andorra +usr/share/zoneinfo/right/Europe/Astrakhan +usr/share/zoneinfo/right/Europe/Athens +usr/share/zoneinfo/right/Europe/Belfast +usr/share/zoneinfo/right/Europe/Belgrade +usr/share/zoneinfo/right/Europe/Berlin +usr/share/zoneinfo/right/Europe/Bratislava +usr/share/zoneinfo/right/Europe/Brussels +usr/share/zoneinfo/right/Europe/Bucharest +usr/share/zoneinfo/right/Europe/Budapest +usr/share/zoneinfo/right/Europe/Busingen +usr/share/zoneinfo/right/Europe/Chisinau +usr/share/zoneinfo/right/Europe/Copenhagen +usr/share/zoneinfo/right/Europe/Dublin +usr/share/zoneinfo/right/Europe/Gibraltar +usr/share/zoneinfo/right/Europe/Guernsey +usr/share/zoneinfo/right/Europe/Helsinki +usr/share/zoneinfo/right/Europe/Isle_of_Man +usr/share/zoneinfo/right/Europe/Istanbul +usr/share/zoneinfo/right/Europe/Jersey +usr/share/zoneinfo/right/Europe/Kaliningrad +usr/share/zoneinfo/right/Europe/Kiev +usr/share/zoneinfo/right/Europe/Kirov +usr/share/zoneinfo/right/Europe/Lisbon +usr/share/zoneinfo/right/Europe/Ljubljana +usr/share/zoneinfo/right/Europe/London +usr/share/zoneinfo/right/Europe/Luxembourg +usr/share/zoneinfo/right/Europe/Madrid +usr/share/zoneinfo/right/Europe/Malta +usr/share/zoneinfo/right/Europe/Mariehamn +usr/share/zoneinfo/right/Europe/Minsk +usr/share/zoneinfo/right/Europe/Monaco +usr/share/zoneinfo/right/Europe/Moscow +usr/share/zoneinfo/right/Europe/Nicosia +usr/share/zoneinfo/right/Europe/Oslo +usr/share/zoneinfo/right/Europe/Paris +usr/share/zoneinfo/right/Europe/Podgorica +usr/share/zoneinfo/right/Europe/Prague +usr/share/zoneinfo/right/Europe/Riga +usr/share/zoneinfo/right/Europe/Rome +usr/share/zoneinfo/right/Europe/Samara +usr/share/zoneinfo/right/Europe/San_Marino +usr/share/zoneinfo/right/Europe/Sarajevo +usr/share/zoneinfo/right/Europe/Saratov +usr/share/zoneinfo/right/Europe/Simferopol +usr/share/zoneinfo/right/Europe/Skopje +usr/share/zoneinfo/right/Europe/Sofia +usr/share/zoneinfo/right/Europe/Stockholm +usr/share/zoneinfo/right/Europe/Tallinn +usr/share/zoneinfo/right/Europe/Tirane +usr/share/zoneinfo/right/Europe/Tiraspol +usr/share/zoneinfo/right/Europe/Ulyanovsk +usr/share/zoneinfo/right/Europe/Uzhgorod +usr/share/zoneinfo/right/Europe/Vaduz +usr/share/zoneinfo/right/Europe/Vatican +usr/share/zoneinfo/right/Europe/Vienna +usr/share/zoneinfo/right/Europe/Vilnius +usr/share/zoneinfo/right/Europe/Volgograd +usr/share/zoneinfo/right/Europe/Warsaw +usr/share/zoneinfo/right/Europe/Zagreb +usr/share/zoneinfo/right/Europe/Zaporozhye +usr/share/zoneinfo/right/Europe/Zurich +usr/share/zoneinfo/right/GB +usr/share/zoneinfo/right/GB-Eire +usr/share/zoneinfo/right/GMT +usr/share/zoneinfo/right/GMT+0 +usr/share/zoneinfo/right/GMT-0 +usr/share/zoneinfo/right/GMT0 +usr/share/zoneinfo/right/Greenwich +usr/share/zoneinfo/right/HST +usr/share/zoneinfo/right/Hongkong +usr/share/zoneinfo/right/Iceland +usr/share/zoneinfo/right/Indian/ +usr/share/zoneinfo/right/Indian/Antananarivo +usr/share/zoneinfo/right/Indian/Chagos +usr/share/zoneinfo/right/Indian/Christmas +usr/share/zoneinfo/right/Indian/Cocos +usr/share/zoneinfo/right/Indian/Comoro +usr/share/zoneinfo/right/Indian/Kerguelen +usr/share/zoneinfo/right/Indian/Mahe +usr/share/zoneinfo/right/Indian/Maldives +usr/share/zoneinfo/right/Indian/Mauritius +usr/share/zoneinfo/right/Indian/Mayotte +usr/share/zoneinfo/right/Indian/Reunion +usr/share/zoneinfo/right/Iran +usr/share/zoneinfo/right/Israel +usr/share/zoneinfo/right/Jamaica +usr/share/zoneinfo/right/Japan +usr/share/zoneinfo/right/Kwajalein +usr/share/zoneinfo/right/Libya +usr/share/zoneinfo/right/MET +usr/share/zoneinfo/right/MST +usr/share/zoneinfo/right/MST7MDT +usr/share/zoneinfo/right/Mexico/ +usr/share/zoneinfo/right/Mexico/BajaNorte +usr/share/zoneinfo/right/Mexico/BajaSur +usr/share/zoneinfo/right/Mexico/General +usr/share/zoneinfo/right/NZ +usr/share/zoneinfo/right/NZ-CHAT +usr/share/zoneinfo/right/Navajo +usr/share/zoneinfo/right/PRC +usr/share/zoneinfo/right/PST8PDT +usr/share/zoneinfo/right/Pacific/ +usr/share/zoneinfo/right/Pacific/Apia +usr/share/zoneinfo/right/Pacific/Auckland +usr/share/zoneinfo/right/Pacific/Bougainville +usr/share/zoneinfo/right/Pacific/Chatham +usr/share/zoneinfo/right/Pacific/Chuuk +usr/share/zoneinfo/right/Pacific/Easter +usr/share/zoneinfo/right/Pacific/Efate +usr/share/zoneinfo/right/Pacific/Enderbury +usr/share/zoneinfo/right/Pacific/Fakaofo +usr/share/zoneinfo/right/Pacific/Fiji +usr/share/zoneinfo/right/Pacific/Funafuti +usr/share/zoneinfo/right/Pacific/Galapagos +usr/share/zoneinfo/right/Pacific/Gambier +usr/share/zoneinfo/right/Pacific/Guadalcanal +usr/share/zoneinfo/right/Pacific/Guam +usr/share/zoneinfo/right/Pacific/Honolulu +usr/share/zoneinfo/right/Pacific/Johnston +usr/share/zoneinfo/right/Pacific/Kiritimati +usr/share/zoneinfo/right/Pacific/Kosrae +usr/share/zoneinfo/right/Pacific/Kwajalein +usr/share/zoneinfo/right/Pacific/Majuro +usr/share/zoneinfo/right/Pacific/Marquesas +usr/share/zoneinfo/right/Pacific/Midway +usr/share/zoneinfo/right/Pacific/Nauru +usr/share/zoneinfo/right/Pacific/Niue +usr/share/zoneinfo/right/Pacific/Norfolk +usr/share/zoneinfo/right/Pacific/Noumea +usr/share/zoneinfo/right/Pacific/Pago_Pago +usr/share/zoneinfo/right/Pacific/Palau +usr/share/zoneinfo/right/Pacific/Pitcairn +usr/share/zoneinfo/right/Pacific/Pohnpei +usr/share/zoneinfo/right/Pacific/Ponape +usr/share/zoneinfo/right/Pacific/Port_Moresby +usr/share/zoneinfo/right/Pacific/Rarotonga +usr/share/zoneinfo/right/Pacific/Saipan +usr/share/zoneinfo/right/Pacific/Samoa +usr/share/zoneinfo/right/Pacific/Tahiti +usr/share/zoneinfo/right/Pacific/Tarawa +usr/share/zoneinfo/right/Pacific/Tongatapu +usr/share/zoneinfo/right/Pacific/Truk +usr/share/zoneinfo/right/Pacific/Wake +usr/share/zoneinfo/right/Pacific/Wallis +usr/share/zoneinfo/right/Pacific/Yap +usr/share/zoneinfo/right/Poland +usr/share/zoneinfo/right/Portugal +usr/share/zoneinfo/right/ROC +usr/share/zoneinfo/right/ROK +usr/share/zoneinfo/right/Singapore +usr/share/zoneinfo/right/Turkey +usr/share/zoneinfo/right/UCT +usr/share/zoneinfo/right/US/ +usr/share/zoneinfo/right/US/Alaska +usr/share/zoneinfo/right/US/Aleutian +usr/share/zoneinfo/right/US/Arizona +usr/share/zoneinfo/right/US/Central +usr/share/zoneinfo/right/US/East-Indiana +usr/share/zoneinfo/right/US/Eastern +usr/share/zoneinfo/right/US/Hawaii +usr/share/zoneinfo/right/US/Indiana-Starke +usr/share/zoneinfo/right/US/Michigan +usr/share/zoneinfo/right/US/Mountain +usr/share/zoneinfo/right/US/Pacific +usr/share/zoneinfo/right/US/Pacific-New +usr/share/zoneinfo/right/US/Samoa +usr/share/zoneinfo/right/UTC +usr/share/zoneinfo/right/Universal +usr/share/zoneinfo/right/W-SU +usr/share/zoneinfo/right/WET +usr/share/zoneinfo/right/Zulu +usr/share/zoneinfo/tzdata.zi +usr/share/zoneinfo/zone.tab +usr/share/zoneinfo/zone1970.tab +usr/src/ +usr/src/debug/ +usr/src/kernels/ +usr/tmp +var/ +var/adm/ +var/cache/ +var/cache/yum/ +var/cache/yum/x86_64/ +var/cache/yum/x86_64/2/ +var/cache/yum/x86_64/2/.gpgkeyschecked.yum +var/cache/yum/x86_64/2/amzn2-core-debuginfo/ +var/cache/yum/x86_64/2/amzn2-core-debuginfo/cachecookie +var/cache/yum/x86_64/2/amzn2-core-debuginfo/gen/ +var/cache/yum/x86_64/2/amzn2-core-debuginfo/gen/primary_db.sqlite +var/cache/yum/x86_64/2/amzn2-core-debuginfo/mirrorlist.txt +var/cache/yum/x86_64/2/amzn2-core-debuginfo/packages/ +var/cache/yum/x86_64/2/amzn2-core-debuginfo/primary.sqlite.gz +var/cache/yum/x86_64/2/amzn2-core-debuginfo/repomd.xml +var/cache/yum/x86_64/2/amzn2-core-source/ +var/cache/yum/x86_64/2/amzn2-core-source/cachecookie +var/cache/yum/x86_64/2/amzn2-core-source/gen/ +var/cache/yum/x86_64/2/amzn2-core-source/gen/primary_db.sqlite +var/cache/yum/x86_64/2/amzn2-core-source/mirrorlist.txt +var/cache/yum/x86_64/2/amzn2-core-source/packages/ +var/cache/yum/x86_64/2/amzn2-core-source/primary.sqlite.gz +var/cache/yum/x86_64/2/amzn2-core-source/repomd.xml +var/cache/yum/x86_64/2/amzn2-core/ +var/cache/yum/x86_64/2/amzn2-core/gen/ +var/cache/yum/x86_64/2/amzn2-core/packages/ +var/cache/yum/x86_64/2/timedhosts +var/db/ +var/empty/ +var/games/ +var/gopher/ +var/kerberos/ +var/kerberos/krb5/ +var/kerberos/krb5/user/ +var/lang/ +var/lib/ +var/lib/alternatives/ +var/lib/alternatives/libnssckbi.so.x86_64 +var/lib/games/ +var/lib/misc/ +var/lib/rpm-state/ +var/lib/rpm/ +var/lib/rpm/.dbenv.lock +var/lib/rpm/.rpm.lock +var/lib/rpm/Basenames +var/lib/rpm/Conflictname +var/lib/rpm/Dirnames +var/lib/rpm/Group +var/lib/rpm/Installtid +var/lib/rpm/Name +var/lib/rpm/Obsoletename +var/lib/rpm/Packages +var/lib/rpm/Providename +var/lib/rpm/Requirename +var/lib/rpm/Sha1header +var/lib/rpm/Sigmd5 +var/lib/rpm/Triggername +var/lib/yum/ +var/lib/yum/history/ +var/lib/yum/history/2019-04-17/ +var/lib/yum/repos/ +var/lib/yum/repos/x86_64/ +var/lib/yum/repos/x86_64/2/ +var/lib/yum/repos/x86_64/2/amzn2-core-debuginfo/ +var/lib/yum/repos/x86_64/2/amzn2-core-source/ +var/lib/yum/repos/x86_64/2/amzn2-core/ +var/lib/yum/rpmdb-indexes/ +var/lib/yum/uuid +var/lib/yum/yumdb/ +var/lib/yum/yumdb/b/ +var/lib/yum/yumdb/b/abe9213729802ba0e84b05f37c998e44dbcd14ab-basesystem-10.0-7.amzn2.0.1-noarch/ +var/lib/yum/yumdb/b/abe9213729802ba0e84b05f37c998e44dbcd14ab-basesystem-10.0-7.amzn2.0.1-noarch/checksum_data +var/lib/yum/yumdb/b/abe9213729802ba0e84b05f37c998e44dbcd14ab-basesystem-10.0-7.amzn2.0.1-noarch/checksum_type +var/lib/yum/yumdb/b/abe9213729802ba0e84b05f37c998e44dbcd14ab-basesystem-10.0-7.amzn2.0.1-noarch/command_line +var/lib/yum/yumdb/b/abe9213729802ba0e84b05f37c998e44dbcd14ab-basesystem-10.0-7.amzn2.0.1-noarch/from_repo +var/lib/yum/yumdb/b/abe9213729802ba0e84b05f37c998e44dbcd14ab-basesystem-10.0-7.amzn2.0.1-noarch/from_repo_revision +var/lib/yum/yumdb/b/abe9213729802ba0e84b05f37c998e44dbcd14ab-basesystem-10.0-7.amzn2.0.1-noarch/from_repo_timestamp +var/lib/yum/yumdb/b/abe9213729802ba0e84b05f37c998e44dbcd14ab-basesystem-10.0-7.amzn2.0.1-noarch/installed_by +var/lib/yum/yumdb/b/abe9213729802ba0e84b05f37c998e44dbcd14ab-basesystem-10.0-7.amzn2.0.1-noarch/origin_url +var/lib/yum/yumdb/b/abe9213729802ba0e84b05f37c998e44dbcd14ab-basesystem-10.0-7.amzn2.0.1-noarch/reason +var/lib/yum/yumdb/b/abe9213729802ba0e84b05f37c998e44dbcd14ab-basesystem-10.0-7.amzn2.0.1-noarch/releasever +var/lib/yum/yumdb/b/abe9213729802ba0e84b05f37c998e44dbcd14ab-basesystem-10.0-7.amzn2.0.1-noarch/var_awsdomain +var/lib/yum/yumdb/b/abe9213729802ba0e84b05f37c998e44dbcd14ab-basesystem-10.0-7.amzn2.0.1-noarch/var_awsregion +var/lib/yum/yumdb/b/abe9213729802ba0e84b05f37c998e44dbcd14ab-basesystem-10.0-7.amzn2.0.1-noarch/var_product +var/lib/yum/yumdb/b/abe9213729802ba0e84b05f37c998e44dbcd14ab-basesystem-10.0-7.amzn2.0.1-noarch/var_target +var/lib/yum/yumdb/b/abe9213729802ba0e84b05f37c998e44dbcd14ab-basesystem-10.0-7.amzn2.0.1-noarch/var_uuid +var/lib/yum/yumdb/b/f38c9497b7d2456be143df5a29777b037d409a0b-bash-4.2.46-30.amzn2-x86_64/ +var/lib/yum/yumdb/b/f38c9497b7d2456be143df5a29777b037d409a0b-bash-4.2.46-30.amzn2-x86_64/checksum_data +var/lib/yum/yumdb/b/f38c9497b7d2456be143df5a29777b037d409a0b-bash-4.2.46-30.amzn2-x86_64/checksum_type +var/lib/yum/yumdb/b/f38c9497b7d2456be143df5a29777b037d409a0b-bash-4.2.46-30.amzn2-x86_64/command_line +var/lib/yum/yumdb/b/f38c9497b7d2456be143df5a29777b037d409a0b-bash-4.2.46-30.amzn2-x86_64/from_repo +var/lib/yum/yumdb/b/f38c9497b7d2456be143df5a29777b037d409a0b-bash-4.2.46-30.amzn2-x86_64/from_repo_revision +var/lib/yum/yumdb/b/f38c9497b7d2456be143df5a29777b037d409a0b-bash-4.2.46-30.amzn2-x86_64/from_repo_timestamp +var/lib/yum/yumdb/b/f38c9497b7d2456be143df5a29777b037d409a0b-bash-4.2.46-30.amzn2-x86_64/installed_by +var/lib/yum/yumdb/b/f38c9497b7d2456be143df5a29777b037d409a0b-bash-4.2.46-30.amzn2-x86_64/origin_url +var/lib/yum/yumdb/b/f38c9497b7d2456be143df5a29777b037d409a0b-bash-4.2.46-30.amzn2-x86_64/reason +var/lib/yum/yumdb/b/f38c9497b7d2456be143df5a29777b037d409a0b-bash-4.2.46-30.amzn2-x86_64/releasever +var/lib/yum/yumdb/b/f38c9497b7d2456be143df5a29777b037d409a0b-bash-4.2.46-30.amzn2-x86_64/var_awsdomain +var/lib/yum/yumdb/b/f38c9497b7d2456be143df5a29777b037d409a0b-bash-4.2.46-30.amzn2-x86_64/var_awsregion +var/lib/yum/yumdb/b/f38c9497b7d2456be143df5a29777b037d409a0b-bash-4.2.46-30.amzn2-x86_64/var_product +var/lib/yum/yumdb/b/f38c9497b7d2456be143df5a29777b037d409a0b-bash-4.2.46-30.amzn2-x86_64/var_target +var/lib/yum/yumdb/b/f38c9497b7d2456be143df5a29777b037d409a0b-bash-4.2.46-30.amzn2-x86_64/var_uuid +var/lib/yum/yumdb/c/ +var/lib/yum/yumdb/c/51c0528864578eff88028cb4effceeac11e50c88-chkconfig-1.7.4-1.amzn2.0.2-x86_64/ +var/lib/yum/yumdb/c/51c0528864578eff88028cb4effceeac11e50c88-chkconfig-1.7.4-1.amzn2.0.2-x86_64/checksum_data +var/lib/yum/yumdb/c/51c0528864578eff88028cb4effceeac11e50c88-chkconfig-1.7.4-1.amzn2.0.2-x86_64/checksum_type +var/lib/yum/yumdb/c/51c0528864578eff88028cb4effceeac11e50c88-chkconfig-1.7.4-1.amzn2.0.2-x86_64/command_line +var/lib/yum/yumdb/c/51c0528864578eff88028cb4effceeac11e50c88-chkconfig-1.7.4-1.amzn2.0.2-x86_64/from_repo +var/lib/yum/yumdb/c/51c0528864578eff88028cb4effceeac11e50c88-chkconfig-1.7.4-1.amzn2.0.2-x86_64/from_repo_revision +var/lib/yum/yumdb/c/51c0528864578eff88028cb4effceeac11e50c88-chkconfig-1.7.4-1.amzn2.0.2-x86_64/from_repo_timestamp +var/lib/yum/yumdb/c/51c0528864578eff88028cb4effceeac11e50c88-chkconfig-1.7.4-1.amzn2.0.2-x86_64/installed_by +var/lib/yum/yumdb/c/51c0528864578eff88028cb4effceeac11e50c88-chkconfig-1.7.4-1.amzn2.0.2-x86_64/origin_url +var/lib/yum/yumdb/c/51c0528864578eff88028cb4effceeac11e50c88-chkconfig-1.7.4-1.amzn2.0.2-x86_64/reason +var/lib/yum/yumdb/c/51c0528864578eff88028cb4effceeac11e50c88-chkconfig-1.7.4-1.amzn2.0.2-x86_64/releasever +var/lib/yum/yumdb/c/51c0528864578eff88028cb4effceeac11e50c88-chkconfig-1.7.4-1.amzn2.0.2-x86_64/var_awsdomain +var/lib/yum/yumdb/c/51c0528864578eff88028cb4effceeac11e50c88-chkconfig-1.7.4-1.amzn2.0.2-x86_64/var_awsregion +var/lib/yum/yumdb/c/51c0528864578eff88028cb4effceeac11e50c88-chkconfig-1.7.4-1.amzn2.0.2-x86_64/var_product +var/lib/yum/yumdb/c/51c0528864578eff88028cb4effceeac11e50c88-chkconfig-1.7.4-1.amzn2.0.2-x86_64/var_target +var/lib/yum/yumdb/c/51c0528864578eff88028cb4effceeac11e50c88-chkconfig-1.7.4-1.amzn2.0.2-x86_64/var_uuid +var/lib/yum/yumdb/c/b67cb84c66af9eef603f938bdeb3532ff64b9aed-ca-certificates-2018.2.22-70.0.amzn2-noarch/ +var/lib/yum/yumdb/c/b67cb84c66af9eef603f938bdeb3532ff64b9aed-ca-certificates-2018.2.22-70.0.amzn2-noarch/checksum_data +var/lib/yum/yumdb/c/b67cb84c66af9eef603f938bdeb3532ff64b9aed-ca-certificates-2018.2.22-70.0.amzn2-noarch/checksum_type +var/lib/yum/yumdb/c/b67cb84c66af9eef603f938bdeb3532ff64b9aed-ca-certificates-2018.2.22-70.0.amzn2-noarch/command_line +var/lib/yum/yumdb/c/b67cb84c66af9eef603f938bdeb3532ff64b9aed-ca-certificates-2018.2.22-70.0.amzn2-noarch/from_repo +var/lib/yum/yumdb/c/b67cb84c66af9eef603f938bdeb3532ff64b9aed-ca-certificates-2018.2.22-70.0.amzn2-noarch/from_repo_revision +var/lib/yum/yumdb/c/b67cb84c66af9eef603f938bdeb3532ff64b9aed-ca-certificates-2018.2.22-70.0.amzn2-noarch/from_repo_timestamp +var/lib/yum/yumdb/c/b67cb84c66af9eef603f938bdeb3532ff64b9aed-ca-certificates-2018.2.22-70.0.amzn2-noarch/installed_by +var/lib/yum/yumdb/c/b67cb84c66af9eef603f938bdeb3532ff64b9aed-ca-certificates-2018.2.22-70.0.amzn2-noarch/origin_url +var/lib/yum/yumdb/c/b67cb84c66af9eef603f938bdeb3532ff64b9aed-ca-certificates-2018.2.22-70.0.amzn2-noarch/reason +var/lib/yum/yumdb/c/b67cb84c66af9eef603f938bdeb3532ff64b9aed-ca-certificates-2018.2.22-70.0.amzn2-noarch/releasever +var/lib/yum/yumdb/c/b67cb84c66af9eef603f938bdeb3532ff64b9aed-ca-certificates-2018.2.22-70.0.amzn2-noarch/var_awsdomain +var/lib/yum/yumdb/c/b67cb84c66af9eef603f938bdeb3532ff64b9aed-ca-certificates-2018.2.22-70.0.amzn2-noarch/var_awsregion +var/lib/yum/yumdb/c/b67cb84c66af9eef603f938bdeb3532ff64b9aed-ca-certificates-2018.2.22-70.0.amzn2-noarch/var_product +var/lib/yum/yumdb/c/b67cb84c66af9eef603f938bdeb3532ff64b9aed-ca-certificates-2018.2.22-70.0.amzn2-noarch/var_target +var/lib/yum/yumdb/c/b67cb84c66af9eef603f938bdeb3532ff64b9aed-ca-certificates-2018.2.22-70.0.amzn2-noarch/var_uuid +var/lib/yum/yumdb/c/ee1646f4b53cae79a73d8a15fc6ce11e837c7636-coreutils-8.22-21.amzn2-x86_64/ +var/lib/yum/yumdb/c/ee1646f4b53cae79a73d8a15fc6ce11e837c7636-coreutils-8.22-21.amzn2-x86_64/checksum_data +var/lib/yum/yumdb/c/ee1646f4b53cae79a73d8a15fc6ce11e837c7636-coreutils-8.22-21.amzn2-x86_64/checksum_type +var/lib/yum/yumdb/c/ee1646f4b53cae79a73d8a15fc6ce11e837c7636-coreutils-8.22-21.amzn2-x86_64/command_line +var/lib/yum/yumdb/c/ee1646f4b53cae79a73d8a15fc6ce11e837c7636-coreutils-8.22-21.amzn2-x86_64/from_repo +var/lib/yum/yumdb/c/ee1646f4b53cae79a73d8a15fc6ce11e837c7636-coreutils-8.22-21.amzn2-x86_64/from_repo_revision +var/lib/yum/yumdb/c/ee1646f4b53cae79a73d8a15fc6ce11e837c7636-coreutils-8.22-21.amzn2-x86_64/from_repo_timestamp +var/lib/yum/yumdb/c/ee1646f4b53cae79a73d8a15fc6ce11e837c7636-coreutils-8.22-21.amzn2-x86_64/installed_by +var/lib/yum/yumdb/c/ee1646f4b53cae79a73d8a15fc6ce11e837c7636-coreutils-8.22-21.amzn2-x86_64/origin_url +var/lib/yum/yumdb/c/ee1646f4b53cae79a73d8a15fc6ce11e837c7636-coreutils-8.22-21.amzn2-x86_64/reason +var/lib/yum/yumdb/c/ee1646f4b53cae79a73d8a15fc6ce11e837c7636-coreutils-8.22-21.amzn2-x86_64/releasever +var/lib/yum/yumdb/c/ee1646f4b53cae79a73d8a15fc6ce11e837c7636-coreutils-8.22-21.amzn2-x86_64/var_awsdomain +var/lib/yum/yumdb/c/ee1646f4b53cae79a73d8a15fc6ce11e837c7636-coreutils-8.22-21.amzn2-x86_64/var_awsregion +var/lib/yum/yumdb/c/ee1646f4b53cae79a73d8a15fc6ce11e837c7636-coreutils-8.22-21.amzn2-x86_64/var_product +var/lib/yum/yumdb/c/ee1646f4b53cae79a73d8a15fc6ce11e837c7636-coreutils-8.22-21.amzn2-x86_64/var_target +var/lib/yum/yumdb/c/ee1646f4b53cae79a73d8a15fc6ce11e837c7636-coreutils-8.22-21.amzn2-x86_64/var_uuid +var/lib/yum/yumdb/f/ +var/lib/yum/yumdb/f/37e34aa0e10049bda7940b99b0a33f0f6d7573dc-filesystem-3.2-25.amzn2.0.4-x86_64/ +var/lib/yum/yumdb/f/37e34aa0e10049bda7940b99b0a33f0f6d7573dc-filesystem-3.2-25.amzn2.0.4-x86_64/checksum_data +var/lib/yum/yumdb/f/37e34aa0e10049bda7940b99b0a33f0f6d7573dc-filesystem-3.2-25.amzn2.0.4-x86_64/checksum_type +var/lib/yum/yumdb/f/37e34aa0e10049bda7940b99b0a33f0f6d7573dc-filesystem-3.2-25.amzn2.0.4-x86_64/command_line +var/lib/yum/yumdb/f/37e34aa0e10049bda7940b99b0a33f0f6d7573dc-filesystem-3.2-25.amzn2.0.4-x86_64/from_repo +var/lib/yum/yumdb/f/37e34aa0e10049bda7940b99b0a33f0f6d7573dc-filesystem-3.2-25.amzn2.0.4-x86_64/from_repo_revision +var/lib/yum/yumdb/f/37e34aa0e10049bda7940b99b0a33f0f6d7573dc-filesystem-3.2-25.amzn2.0.4-x86_64/from_repo_timestamp +var/lib/yum/yumdb/f/37e34aa0e10049bda7940b99b0a33f0f6d7573dc-filesystem-3.2-25.amzn2.0.4-x86_64/installed_by +var/lib/yum/yumdb/f/37e34aa0e10049bda7940b99b0a33f0f6d7573dc-filesystem-3.2-25.amzn2.0.4-x86_64/origin_url +var/lib/yum/yumdb/f/37e34aa0e10049bda7940b99b0a33f0f6d7573dc-filesystem-3.2-25.amzn2.0.4-x86_64/reason +var/lib/yum/yumdb/f/37e34aa0e10049bda7940b99b0a33f0f6d7573dc-filesystem-3.2-25.amzn2.0.4-x86_64/releasever +var/lib/yum/yumdb/f/37e34aa0e10049bda7940b99b0a33f0f6d7573dc-filesystem-3.2-25.amzn2.0.4-x86_64/var_awsdomain +var/lib/yum/yumdb/f/37e34aa0e10049bda7940b99b0a33f0f6d7573dc-filesystem-3.2-25.amzn2.0.4-x86_64/var_awsregion +var/lib/yum/yumdb/f/37e34aa0e10049bda7940b99b0a33f0f6d7573dc-filesystem-3.2-25.amzn2.0.4-x86_64/var_product +var/lib/yum/yumdb/f/37e34aa0e10049bda7940b99b0a33f0f6d7573dc-filesystem-3.2-25.amzn2.0.4-x86_64/var_target +var/lib/yum/yumdb/f/37e34aa0e10049bda7940b99b0a33f0f6d7573dc-filesystem-3.2-25.amzn2.0.4-x86_64/var_uuid +var/lib/yum/yumdb/g/ +var/lib/yum/yumdb/g/08827a5383fae7bc558a018f860a1f56b2e12b70-glibc-minimal-langpack-2.26-32.amzn2.0.1-x86_64/ +var/lib/yum/yumdb/g/08827a5383fae7bc558a018f860a1f56b2e12b70-glibc-minimal-langpack-2.26-32.amzn2.0.1-x86_64/checksum_data +var/lib/yum/yumdb/g/08827a5383fae7bc558a018f860a1f56b2e12b70-glibc-minimal-langpack-2.26-32.amzn2.0.1-x86_64/checksum_type +var/lib/yum/yumdb/g/08827a5383fae7bc558a018f860a1f56b2e12b70-glibc-minimal-langpack-2.26-32.amzn2.0.1-x86_64/command_line +var/lib/yum/yumdb/g/08827a5383fae7bc558a018f860a1f56b2e12b70-glibc-minimal-langpack-2.26-32.amzn2.0.1-x86_64/from_repo +var/lib/yum/yumdb/g/08827a5383fae7bc558a018f860a1f56b2e12b70-glibc-minimal-langpack-2.26-32.amzn2.0.1-x86_64/from_repo_revision +var/lib/yum/yumdb/g/08827a5383fae7bc558a018f860a1f56b2e12b70-glibc-minimal-langpack-2.26-32.amzn2.0.1-x86_64/from_repo_timestamp +var/lib/yum/yumdb/g/08827a5383fae7bc558a018f860a1f56b2e12b70-glibc-minimal-langpack-2.26-32.amzn2.0.1-x86_64/installed_by +var/lib/yum/yumdb/g/08827a5383fae7bc558a018f860a1f56b2e12b70-glibc-minimal-langpack-2.26-32.amzn2.0.1-x86_64/origin_url +var/lib/yum/yumdb/g/08827a5383fae7bc558a018f860a1f56b2e12b70-glibc-minimal-langpack-2.26-32.amzn2.0.1-x86_64/reason +var/lib/yum/yumdb/g/08827a5383fae7bc558a018f860a1f56b2e12b70-glibc-minimal-langpack-2.26-32.amzn2.0.1-x86_64/releasever +var/lib/yum/yumdb/g/08827a5383fae7bc558a018f860a1f56b2e12b70-glibc-minimal-langpack-2.26-32.amzn2.0.1-x86_64/var_awsdomain +var/lib/yum/yumdb/g/08827a5383fae7bc558a018f860a1f56b2e12b70-glibc-minimal-langpack-2.26-32.amzn2.0.1-x86_64/var_awsregion +var/lib/yum/yumdb/g/08827a5383fae7bc558a018f860a1f56b2e12b70-glibc-minimal-langpack-2.26-32.amzn2.0.1-x86_64/var_product +var/lib/yum/yumdb/g/08827a5383fae7bc558a018f860a1f56b2e12b70-glibc-minimal-langpack-2.26-32.amzn2.0.1-x86_64/var_target +var/lib/yum/yumdb/g/08827a5383fae7bc558a018f860a1f56b2e12b70-glibc-minimal-langpack-2.26-32.amzn2.0.1-x86_64/var_uuid +var/lib/yum/yumdb/g/25f8d0fdd0249e0d18751be11c0a59272a31e888-gawk-4.0.2-4.amzn2.1.2-x86_64/ +var/lib/yum/yumdb/g/25f8d0fdd0249e0d18751be11c0a59272a31e888-gawk-4.0.2-4.amzn2.1.2-x86_64/checksum_data +var/lib/yum/yumdb/g/25f8d0fdd0249e0d18751be11c0a59272a31e888-gawk-4.0.2-4.amzn2.1.2-x86_64/checksum_type +var/lib/yum/yumdb/g/25f8d0fdd0249e0d18751be11c0a59272a31e888-gawk-4.0.2-4.amzn2.1.2-x86_64/command_line +var/lib/yum/yumdb/g/25f8d0fdd0249e0d18751be11c0a59272a31e888-gawk-4.0.2-4.amzn2.1.2-x86_64/from_repo +var/lib/yum/yumdb/g/25f8d0fdd0249e0d18751be11c0a59272a31e888-gawk-4.0.2-4.amzn2.1.2-x86_64/from_repo_revision +var/lib/yum/yumdb/g/25f8d0fdd0249e0d18751be11c0a59272a31e888-gawk-4.0.2-4.amzn2.1.2-x86_64/from_repo_timestamp +var/lib/yum/yumdb/g/25f8d0fdd0249e0d18751be11c0a59272a31e888-gawk-4.0.2-4.amzn2.1.2-x86_64/installed_by +var/lib/yum/yumdb/g/25f8d0fdd0249e0d18751be11c0a59272a31e888-gawk-4.0.2-4.amzn2.1.2-x86_64/origin_url +var/lib/yum/yumdb/g/25f8d0fdd0249e0d18751be11c0a59272a31e888-gawk-4.0.2-4.amzn2.1.2-x86_64/reason +var/lib/yum/yumdb/g/25f8d0fdd0249e0d18751be11c0a59272a31e888-gawk-4.0.2-4.amzn2.1.2-x86_64/releasever +var/lib/yum/yumdb/g/25f8d0fdd0249e0d18751be11c0a59272a31e888-gawk-4.0.2-4.amzn2.1.2-x86_64/var_awsdomain +var/lib/yum/yumdb/g/25f8d0fdd0249e0d18751be11c0a59272a31e888-gawk-4.0.2-4.amzn2.1.2-x86_64/var_awsregion +var/lib/yum/yumdb/g/25f8d0fdd0249e0d18751be11c0a59272a31e888-gawk-4.0.2-4.amzn2.1.2-x86_64/var_product +var/lib/yum/yumdb/g/25f8d0fdd0249e0d18751be11c0a59272a31e888-gawk-4.0.2-4.amzn2.1.2-x86_64/var_target +var/lib/yum/yumdb/g/25f8d0fdd0249e0d18751be11c0a59272a31e888-gawk-4.0.2-4.amzn2.1.2-x86_64/var_uuid +var/lib/yum/yumdb/g/9e802914b5902cb280b41a72e98c92458d72e7c4-gmp-6.0.0-15.amzn2.0.2-x86_64/ +var/lib/yum/yumdb/g/9e802914b5902cb280b41a72e98c92458d72e7c4-gmp-6.0.0-15.amzn2.0.2-x86_64/checksum_data +var/lib/yum/yumdb/g/9e802914b5902cb280b41a72e98c92458d72e7c4-gmp-6.0.0-15.amzn2.0.2-x86_64/checksum_type +var/lib/yum/yumdb/g/9e802914b5902cb280b41a72e98c92458d72e7c4-gmp-6.0.0-15.amzn2.0.2-x86_64/command_line +var/lib/yum/yumdb/g/9e802914b5902cb280b41a72e98c92458d72e7c4-gmp-6.0.0-15.amzn2.0.2-x86_64/from_repo +var/lib/yum/yumdb/g/9e802914b5902cb280b41a72e98c92458d72e7c4-gmp-6.0.0-15.amzn2.0.2-x86_64/from_repo_revision +var/lib/yum/yumdb/g/9e802914b5902cb280b41a72e98c92458d72e7c4-gmp-6.0.0-15.amzn2.0.2-x86_64/from_repo_timestamp +var/lib/yum/yumdb/g/9e802914b5902cb280b41a72e98c92458d72e7c4-gmp-6.0.0-15.amzn2.0.2-x86_64/installed_by +var/lib/yum/yumdb/g/9e802914b5902cb280b41a72e98c92458d72e7c4-gmp-6.0.0-15.amzn2.0.2-x86_64/origin_url +var/lib/yum/yumdb/g/9e802914b5902cb280b41a72e98c92458d72e7c4-gmp-6.0.0-15.amzn2.0.2-x86_64/reason +var/lib/yum/yumdb/g/9e802914b5902cb280b41a72e98c92458d72e7c4-gmp-6.0.0-15.amzn2.0.2-x86_64/releasever +var/lib/yum/yumdb/g/9e802914b5902cb280b41a72e98c92458d72e7c4-gmp-6.0.0-15.amzn2.0.2-x86_64/var_awsdomain +var/lib/yum/yumdb/g/9e802914b5902cb280b41a72e98c92458d72e7c4-gmp-6.0.0-15.amzn2.0.2-x86_64/var_awsregion +var/lib/yum/yumdb/g/9e802914b5902cb280b41a72e98c92458d72e7c4-gmp-6.0.0-15.amzn2.0.2-x86_64/var_product +var/lib/yum/yumdb/g/9e802914b5902cb280b41a72e98c92458d72e7c4-gmp-6.0.0-15.amzn2.0.2-x86_64/var_target +var/lib/yum/yumdb/g/9e802914b5902cb280b41a72e98c92458d72e7c4-gmp-6.0.0-15.amzn2.0.2-x86_64/var_uuid +var/lib/yum/yumdb/g/d5143d68c579aca6a94b542006a3302d442ead62-glibc-common-2.26-32.amzn2.0.1-x86_64/ +var/lib/yum/yumdb/g/d5143d68c579aca6a94b542006a3302d442ead62-glibc-common-2.26-32.amzn2.0.1-x86_64/checksum_data +var/lib/yum/yumdb/g/d5143d68c579aca6a94b542006a3302d442ead62-glibc-common-2.26-32.amzn2.0.1-x86_64/checksum_type +var/lib/yum/yumdb/g/d5143d68c579aca6a94b542006a3302d442ead62-glibc-common-2.26-32.amzn2.0.1-x86_64/command_line +var/lib/yum/yumdb/g/d5143d68c579aca6a94b542006a3302d442ead62-glibc-common-2.26-32.amzn2.0.1-x86_64/from_repo +var/lib/yum/yumdb/g/d5143d68c579aca6a94b542006a3302d442ead62-glibc-common-2.26-32.amzn2.0.1-x86_64/from_repo_revision +var/lib/yum/yumdb/g/d5143d68c579aca6a94b542006a3302d442ead62-glibc-common-2.26-32.amzn2.0.1-x86_64/from_repo_timestamp +var/lib/yum/yumdb/g/d5143d68c579aca6a94b542006a3302d442ead62-glibc-common-2.26-32.amzn2.0.1-x86_64/installed_by +var/lib/yum/yumdb/g/d5143d68c579aca6a94b542006a3302d442ead62-glibc-common-2.26-32.amzn2.0.1-x86_64/origin_url +var/lib/yum/yumdb/g/d5143d68c579aca6a94b542006a3302d442ead62-glibc-common-2.26-32.amzn2.0.1-x86_64/reason +var/lib/yum/yumdb/g/d5143d68c579aca6a94b542006a3302d442ead62-glibc-common-2.26-32.amzn2.0.1-x86_64/releasever +var/lib/yum/yumdb/g/d5143d68c579aca6a94b542006a3302d442ead62-glibc-common-2.26-32.amzn2.0.1-x86_64/var_awsdomain +var/lib/yum/yumdb/g/d5143d68c579aca6a94b542006a3302d442ead62-glibc-common-2.26-32.amzn2.0.1-x86_64/var_awsregion +var/lib/yum/yumdb/g/d5143d68c579aca6a94b542006a3302d442ead62-glibc-common-2.26-32.amzn2.0.1-x86_64/var_product +var/lib/yum/yumdb/g/d5143d68c579aca6a94b542006a3302d442ead62-glibc-common-2.26-32.amzn2.0.1-x86_64/var_target +var/lib/yum/yumdb/g/d5143d68c579aca6a94b542006a3302d442ead62-glibc-common-2.26-32.amzn2.0.1-x86_64/var_uuid +var/lib/yum/yumdb/g/e50d2dbc5253bfdaa3bfc8075189181b849df402-grep-2.20-3.amzn2.0.2-x86_64/ +var/lib/yum/yumdb/g/e50d2dbc5253bfdaa3bfc8075189181b849df402-grep-2.20-3.amzn2.0.2-x86_64/checksum_data +var/lib/yum/yumdb/g/e50d2dbc5253bfdaa3bfc8075189181b849df402-grep-2.20-3.amzn2.0.2-x86_64/checksum_type +var/lib/yum/yumdb/g/e50d2dbc5253bfdaa3bfc8075189181b849df402-grep-2.20-3.amzn2.0.2-x86_64/command_line +var/lib/yum/yumdb/g/e50d2dbc5253bfdaa3bfc8075189181b849df402-grep-2.20-3.amzn2.0.2-x86_64/from_repo +var/lib/yum/yumdb/g/e50d2dbc5253bfdaa3bfc8075189181b849df402-grep-2.20-3.amzn2.0.2-x86_64/from_repo_revision +var/lib/yum/yumdb/g/e50d2dbc5253bfdaa3bfc8075189181b849df402-grep-2.20-3.amzn2.0.2-x86_64/from_repo_timestamp +var/lib/yum/yumdb/g/e50d2dbc5253bfdaa3bfc8075189181b849df402-grep-2.20-3.amzn2.0.2-x86_64/installed_by +var/lib/yum/yumdb/g/e50d2dbc5253bfdaa3bfc8075189181b849df402-grep-2.20-3.amzn2.0.2-x86_64/origin_url +var/lib/yum/yumdb/g/e50d2dbc5253bfdaa3bfc8075189181b849df402-grep-2.20-3.amzn2.0.2-x86_64/reason +var/lib/yum/yumdb/g/e50d2dbc5253bfdaa3bfc8075189181b849df402-grep-2.20-3.amzn2.0.2-x86_64/releasever +var/lib/yum/yumdb/g/e50d2dbc5253bfdaa3bfc8075189181b849df402-grep-2.20-3.amzn2.0.2-x86_64/var_awsdomain +var/lib/yum/yumdb/g/e50d2dbc5253bfdaa3bfc8075189181b849df402-grep-2.20-3.amzn2.0.2-x86_64/var_awsregion +var/lib/yum/yumdb/g/e50d2dbc5253bfdaa3bfc8075189181b849df402-grep-2.20-3.amzn2.0.2-x86_64/var_product +var/lib/yum/yumdb/g/e50d2dbc5253bfdaa3bfc8075189181b849df402-grep-2.20-3.amzn2.0.2-x86_64/var_target +var/lib/yum/yumdb/g/e50d2dbc5253bfdaa3bfc8075189181b849df402-grep-2.20-3.amzn2.0.2-x86_64/var_uuid +var/lib/yum/yumdb/g/e754eca2bb053c341297995d7c2418cbee3bfedc-glibc-2.26-32.amzn2.0.1-x86_64/ +var/lib/yum/yumdb/g/e754eca2bb053c341297995d7c2418cbee3bfedc-glibc-2.26-32.amzn2.0.1-x86_64/checksum_data +var/lib/yum/yumdb/g/e754eca2bb053c341297995d7c2418cbee3bfedc-glibc-2.26-32.amzn2.0.1-x86_64/checksum_type +var/lib/yum/yumdb/g/e754eca2bb053c341297995d7c2418cbee3bfedc-glibc-2.26-32.amzn2.0.1-x86_64/command_line +var/lib/yum/yumdb/g/e754eca2bb053c341297995d7c2418cbee3bfedc-glibc-2.26-32.amzn2.0.1-x86_64/from_repo +var/lib/yum/yumdb/g/e754eca2bb053c341297995d7c2418cbee3bfedc-glibc-2.26-32.amzn2.0.1-x86_64/from_repo_revision +var/lib/yum/yumdb/g/e754eca2bb053c341297995d7c2418cbee3bfedc-glibc-2.26-32.amzn2.0.1-x86_64/from_repo_timestamp +var/lib/yum/yumdb/g/e754eca2bb053c341297995d7c2418cbee3bfedc-glibc-2.26-32.amzn2.0.1-x86_64/installed_by +var/lib/yum/yumdb/g/e754eca2bb053c341297995d7c2418cbee3bfedc-glibc-2.26-32.amzn2.0.1-x86_64/origin_url +var/lib/yum/yumdb/g/e754eca2bb053c341297995d7c2418cbee3bfedc-glibc-2.26-32.amzn2.0.1-x86_64/reason +var/lib/yum/yumdb/g/e754eca2bb053c341297995d7c2418cbee3bfedc-glibc-2.26-32.amzn2.0.1-x86_64/releasever +var/lib/yum/yumdb/g/e754eca2bb053c341297995d7c2418cbee3bfedc-glibc-2.26-32.amzn2.0.1-x86_64/var_awsdomain +var/lib/yum/yumdb/g/e754eca2bb053c341297995d7c2418cbee3bfedc-glibc-2.26-32.amzn2.0.1-x86_64/var_awsregion +var/lib/yum/yumdb/g/e754eca2bb053c341297995d7c2418cbee3bfedc-glibc-2.26-32.amzn2.0.1-x86_64/var_product +var/lib/yum/yumdb/g/e754eca2bb053c341297995d7c2418cbee3bfedc-glibc-2.26-32.amzn2.0.1-x86_64/var_target +var/lib/yum/yumdb/g/e754eca2bb053c341297995d7c2418cbee3bfedc-glibc-2.26-32.amzn2.0.1-x86_64/var_uuid +var/lib/yum/yumdb/i/ +var/lib/yum/yumdb/i/1485a43be531fbfd124383c181eb9541ef353ecc-info-5.1-5.amzn2-x86_64/ +var/lib/yum/yumdb/i/1485a43be531fbfd124383c181eb9541ef353ecc-info-5.1-5.amzn2-x86_64/checksum_data +var/lib/yum/yumdb/i/1485a43be531fbfd124383c181eb9541ef353ecc-info-5.1-5.amzn2-x86_64/checksum_type +var/lib/yum/yumdb/i/1485a43be531fbfd124383c181eb9541ef353ecc-info-5.1-5.amzn2-x86_64/command_line +var/lib/yum/yumdb/i/1485a43be531fbfd124383c181eb9541ef353ecc-info-5.1-5.amzn2-x86_64/from_repo +var/lib/yum/yumdb/i/1485a43be531fbfd124383c181eb9541ef353ecc-info-5.1-5.amzn2-x86_64/from_repo_revision +var/lib/yum/yumdb/i/1485a43be531fbfd124383c181eb9541ef353ecc-info-5.1-5.amzn2-x86_64/from_repo_timestamp +var/lib/yum/yumdb/i/1485a43be531fbfd124383c181eb9541ef353ecc-info-5.1-5.amzn2-x86_64/installed_by +var/lib/yum/yumdb/i/1485a43be531fbfd124383c181eb9541ef353ecc-info-5.1-5.amzn2-x86_64/origin_url +var/lib/yum/yumdb/i/1485a43be531fbfd124383c181eb9541ef353ecc-info-5.1-5.amzn2-x86_64/reason +var/lib/yum/yumdb/i/1485a43be531fbfd124383c181eb9541ef353ecc-info-5.1-5.amzn2-x86_64/releasever +var/lib/yum/yumdb/i/1485a43be531fbfd124383c181eb9541ef353ecc-info-5.1-5.amzn2-x86_64/var_awsdomain +var/lib/yum/yumdb/i/1485a43be531fbfd124383c181eb9541ef353ecc-info-5.1-5.amzn2-x86_64/var_awsregion +var/lib/yum/yumdb/i/1485a43be531fbfd124383c181eb9541ef353ecc-info-5.1-5.amzn2-x86_64/var_product +var/lib/yum/yumdb/i/1485a43be531fbfd124383c181eb9541ef353ecc-info-5.1-5.amzn2-x86_64/var_target +var/lib/yum/yumdb/i/1485a43be531fbfd124383c181eb9541ef353ecc-info-5.1-5.amzn2-x86_64/var_uuid +var/lib/yum/yumdb/k/ +var/lib/yum/yumdb/k/0bbbe79087587bf8a850e36cb3be72287f6c286e-keyutils-libs-1.5.8-3.amzn2.0.2-x86_64/ +var/lib/yum/yumdb/k/0bbbe79087587bf8a850e36cb3be72287f6c286e-keyutils-libs-1.5.8-3.amzn2.0.2-x86_64/checksum_data +var/lib/yum/yumdb/k/0bbbe79087587bf8a850e36cb3be72287f6c286e-keyutils-libs-1.5.8-3.amzn2.0.2-x86_64/checksum_type +var/lib/yum/yumdb/k/0bbbe79087587bf8a850e36cb3be72287f6c286e-keyutils-libs-1.5.8-3.amzn2.0.2-x86_64/command_line +var/lib/yum/yumdb/k/0bbbe79087587bf8a850e36cb3be72287f6c286e-keyutils-libs-1.5.8-3.amzn2.0.2-x86_64/from_repo +var/lib/yum/yumdb/k/0bbbe79087587bf8a850e36cb3be72287f6c286e-keyutils-libs-1.5.8-3.amzn2.0.2-x86_64/from_repo_revision +var/lib/yum/yumdb/k/0bbbe79087587bf8a850e36cb3be72287f6c286e-keyutils-libs-1.5.8-3.amzn2.0.2-x86_64/from_repo_timestamp +var/lib/yum/yumdb/k/0bbbe79087587bf8a850e36cb3be72287f6c286e-keyutils-libs-1.5.8-3.amzn2.0.2-x86_64/installed_by +var/lib/yum/yumdb/k/0bbbe79087587bf8a850e36cb3be72287f6c286e-keyutils-libs-1.5.8-3.amzn2.0.2-x86_64/origin_url +var/lib/yum/yumdb/k/0bbbe79087587bf8a850e36cb3be72287f6c286e-keyutils-libs-1.5.8-3.amzn2.0.2-x86_64/reason +var/lib/yum/yumdb/k/0bbbe79087587bf8a850e36cb3be72287f6c286e-keyutils-libs-1.5.8-3.amzn2.0.2-x86_64/releasever +var/lib/yum/yumdb/k/0bbbe79087587bf8a850e36cb3be72287f6c286e-keyutils-libs-1.5.8-3.amzn2.0.2-x86_64/var_awsdomain +var/lib/yum/yumdb/k/0bbbe79087587bf8a850e36cb3be72287f6c286e-keyutils-libs-1.5.8-3.amzn2.0.2-x86_64/var_awsregion +var/lib/yum/yumdb/k/0bbbe79087587bf8a850e36cb3be72287f6c286e-keyutils-libs-1.5.8-3.amzn2.0.2-x86_64/var_product +var/lib/yum/yumdb/k/0bbbe79087587bf8a850e36cb3be72287f6c286e-keyutils-libs-1.5.8-3.amzn2.0.2-x86_64/var_target +var/lib/yum/yumdb/k/0bbbe79087587bf8a850e36cb3be72287f6c286e-keyutils-libs-1.5.8-3.amzn2.0.2-x86_64/var_uuid +var/lib/yum/yumdb/k/46d2b3b8789714a82c881f74df9d3288451efb46-krb5-libs-1.15.1-20.amzn2.0.1-x86_64/ +var/lib/yum/yumdb/k/46d2b3b8789714a82c881f74df9d3288451efb46-krb5-libs-1.15.1-20.amzn2.0.1-x86_64/checksum_data +var/lib/yum/yumdb/k/46d2b3b8789714a82c881f74df9d3288451efb46-krb5-libs-1.15.1-20.amzn2.0.1-x86_64/checksum_type +var/lib/yum/yumdb/k/46d2b3b8789714a82c881f74df9d3288451efb46-krb5-libs-1.15.1-20.amzn2.0.1-x86_64/command_line +var/lib/yum/yumdb/k/46d2b3b8789714a82c881f74df9d3288451efb46-krb5-libs-1.15.1-20.amzn2.0.1-x86_64/from_repo +var/lib/yum/yumdb/k/46d2b3b8789714a82c881f74df9d3288451efb46-krb5-libs-1.15.1-20.amzn2.0.1-x86_64/from_repo_revision +var/lib/yum/yumdb/k/46d2b3b8789714a82c881f74df9d3288451efb46-krb5-libs-1.15.1-20.amzn2.0.1-x86_64/from_repo_timestamp +var/lib/yum/yumdb/k/46d2b3b8789714a82c881f74df9d3288451efb46-krb5-libs-1.15.1-20.amzn2.0.1-x86_64/installed_by +var/lib/yum/yumdb/k/46d2b3b8789714a82c881f74df9d3288451efb46-krb5-libs-1.15.1-20.amzn2.0.1-x86_64/origin_url +var/lib/yum/yumdb/k/46d2b3b8789714a82c881f74df9d3288451efb46-krb5-libs-1.15.1-20.amzn2.0.1-x86_64/reason +var/lib/yum/yumdb/k/46d2b3b8789714a82c881f74df9d3288451efb46-krb5-libs-1.15.1-20.amzn2.0.1-x86_64/releasever +var/lib/yum/yumdb/k/46d2b3b8789714a82c881f74df9d3288451efb46-krb5-libs-1.15.1-20.amzn2.0.1-x86_64/var_awsdomain +var/lib/yum/yumdb/k/46d2b3b8789714a82c881f74df9d3288451efb46-krb5-libs-1.15.1-20.amzn2.0.1-x86_64/var_awsregion +var/lib/yum/yumdb/k/46d2b3b8789714a82c881f74df9d3288451efb46-krb5-libs-1.15.1-20.amzn2.0.1-x86_64/var_product +var/lib/yum/yumdb/k/46d2b3b8789714a82c881f74df9d3288451efb46-krb5-libs-1.15.1-20.amzn2.0.1-x86_64/var_target +var/lib/yum/yumdb/k/46d2b3b8789714a82c881f74df9d3288451efb46-krb5-libs-1.15.1-20.amzn2.0.1-x86_64/var_uuid +var/lib/yum/yumdb/l/ +var/lib/yum/yumdb/l/01d9706a801aff995cac7c685da0d0d70487163b-libgcc-7.3.1-5.amzn2.0.2-x86_64/ +var/lib/yum/yumdb/l/01d9706a801aff995cac7c685da0d0d70487163b-libgcc-7.3.1-5.amzn2.0.2-x86_64/checksum_data +var/lib/yum/yumdb/l/01d9706a801aff995cac7c685da0d0d70487163b-libgcc-7.3.1-5.amzn2.0.2-x86_64/checksum_type +var/lib/yum/yumdb/l/01d9706a801aff995cac7c685da0d0d70487163b-libgcc-7.3.1-5.amzn2.0.2-x86_64/command_line +var/lib/yum/yumdb/l/01d9706a801aff995cac7c685da0d0d70487163b-libgcc-7.3.1-5.amzn2.0.2-x86_64/from_repo +var/lib/yum/yumdb/l/01d9706a801aff995cac7c685da0d0d70487163b-libgcc-7.3.1-5.amzn2.0.2-x86_64/from_repo_revision +var/lib/yum/yumdb/l/01d9706a801aff995cac7c685da0d0d70487163b-libgcc-7.3.1-5.amzn2.0.2-x86_64/from_repo_timestamp +var/lib/yum/yumdb/l/01d9706a801aff995cac7c685da0d0d70487163b-libgcc-7.3.1-5.amzn2.0.2-x86_64/installed_by +var/lib/yum/yumdb/l/01d9706a801aff995cac7c685da0d0d70487163b-libgcc-7.3.1-5.amzn2.0.2-x86_64/origin_url +var/lib/yum/yumdb/l/01d9706a801aff995cac7c685da0d0d70487163b-libgcc-7.3.1-5.amzn2.0.2-x86_64/reason +var/lib/yum/yumdb/l/01d9706a801aff995cac7c685da0d0d70487163b-libgcc-7.3.1-5.amzn2.0.2-x86_64/releasever +var/lib/yum/yumdb/l/01d9706a801aff995cac7c685da0d0d70487163b-libgcc-7.3.1-5.amzn2.0.2-x86_64/var_awsdomain +var/lib/yum/yumdb/l/01d9706a801aff995cac7c685da0d0d70487163b-libgcc-7.3.1-5.amzn2.0.2-x86_64/var_awsregion +var/lib/yum/yumdb/l/01d9706a801aff995cac7c685da0d0d70487163b-libgcc-7.3.1-5.amzn2.0.2-x86_64/var_product +var/lib/yum/yumdb/l/01d9706a801aff995cac7c685da0d0d70487163b-libgcc-7.3.1-5.amzn2.0.2-x86_64/var_target +var/lib/yum/yumdb/l/01d9706a801aff995cac7c685da0d0d70487163b-libgcc-7.3.1-5.amzn2.0.2-x86_64/var_uuid +var/lib/yum/yumdb/l/02094ebf8068422d950b9341b03337ca493f18f5-libattr-2.4.46-12.amzn2.0.2-x86_64/ +var/lib/yum/yumdb/l/02094ebf8068422d950b9341b03337ca493f18f5-libattr-2.4.46-12.amzn2.0.2-x86_64/checksum_data +var/lib/yum/yumdb/l/02094ebf8068422d950b9341b03337ca493f18f5-libattr-2.4.46-12.amzn2.0.2-x86_64/checksum_type +var/lib/yum/yumdb/l/02094ebf8068422d950b9341b03337ca493f18f5-libattr-2.4.46-12.amzn2.0.2-x86_64/command_line +var/lib/yum/yumdb/l/02094ebf8068422d950b9341b03337ca493f18f5-libattr-2.4.46-12.amzn2.0.2-x86_64/from_repo +var/lib/yum/yumdb/l/02094ebf8068422d950b9341b03337ca493f18f5-libattr-2.4.46-12.amzn2.0.2-x86_64/from_repo_revision +var/lib/yum/yumdb/l/02094ebf8068422d950b9341b03337ca493f18f5-libattr-2.4.46-12.amzn2.0.2-x86_64/from_repo_timestamp +var/lib/yum/yumdb/l/02094ebf8068422d950b9341b03337ca493f18f5-libattr-2.4.46-12.amzn2.0.2-x86_64/installed_by +var/lib/yum/yumdb/l/02094ebf8068422d950b9341b03337ca493f18f5-libattr-2.4.46-12.amzn2.0.2-x86_64/origin_url +var/lib/yum/yumdb/l/02094ebf8068422d950b9341b03337ca493f18f5-libattr-2.4.46-12.amzn2.0.2-x86_64/reason +var/lib/yum/yumdb/l/02094ebf8068422d950b9341b03337ca493f18f5-libattr-2.4.46-12.amzn2.0.2-x86_64/releasever +var/lib/yum/yumdb/l/02094ebf8068422d950b9341b03337ca493f18f5-libattr-2.4.46-12.amzn2.0.2-x86_64/var_awsdomain +var/lib/yum/yumdb/l/02094ebf8068422d950b9341b03337ca493f18f5-libattr-2.4.46-12.amzn2.0.2-x86_64/var_awsregion +var/lib/yum/yumdb/l/02094ebf8068422d950b9341b03337ca493f18f5-libattr-2.4.46-12.amzn2.0.2-x86_64/var_product +var/lib/yum/yumdb/l/02094ebf8068422d950b9341b03337ca493f18f5-libattr-2.4.46-12.amzn2.0.2-x86_64/var_target +var/lib/yum/yumdb/l/02094ebf8068422d950b9341b03337ca493f18f5-libattr-2.4.46-12.amzn2.0.2-x86_64/var_uuid +var/lib/yum/yumdb/l/0d9d7009ca82361ff1a14a923e8a69e0f05c1ed6-libffi-3.0.13-18.amzn2.0.2-x86_64/ +var/lib/yum/yumdb/l/0d9d7009ca82361ff1a14a923e8a69e0f05c1ed6-libffi-3.0.13-18.amzn2.0.2-x86_64/checksum_data +var/lib/yum/yumdb/l/0d9d7009ca82361ff1a14a923e8a69e0f05c1ed6-libffi-3.0.13-18.amzn2.0.2-x86_64/checksum_type +var/lib/yum/yumdb/l/0d9d7009ca82361ff1a14a923e8a69e0f05c1ed6-libffi-3.0.13-18.amzn2.0.2-x86_64/command_line +var/lib/yum/yumdb/l/0d9d7009ca82361ff1a14a923e8a69e0f05c1ed6-libffi-3.0.13-18.amzn2.0.2-x86_64/from_repo +var/lib/yum/yumdb/l/0d9d7009ca82361ff1a14a923e8a69e0f05c1ed6-libffi-3.0.13-18.amzn2.0.2-x86_64/from_repo_revision +var/lib/yum/yumdb/l/0d9d7009ca82361ff1a14a923e8a69e0f05c1ed6-libffi-3.0.13-18.amzn2.0.2-x86_64/from_repo_timestamp +var/lib/yum/yumdb/l/0d9d7009ca82361ff1a14a923e8a69e0f05c1ed6-libffi-3.0.13-18.amzn2.0.2-x86_64/installed_by +var/lib/yum/yumdb/l/0d9d7009ca82361ff1a14a923e8a69e0f05c1ed6-libffi-3.0.13-18.amzn2.0.2-x86_64/origin_url +var/lib/yum/yumdb/l/0d9d7009ca82361ff1a14a923e8a69e0f05c1ed6-libffi-3.0.13-18.amzn2.0.2-x86_64/reason +var/lib/yum/yumdb/l/0d9d7009ca82361ff1a14a923e8a69e0f05c1ed6-libffi-3.0.13-18.amzn2.0.2-x86_64/releasever +var/lib/yum/yumdb/l/0d9d7009ca82361ff1a14a923e8a69e0f05c1ed6-libffi-3.0.13-18.amzn2.0.2-x86_64/var_awsdomain +var/lib/yum/yumdb/l/0d9d7009ca82361ff1a14a923e8a69e0f05c1ed6-libffi-3.0.13-18.amzn2.0.2-x86_64/var_awsregion +var/lib/yum/yumdb/l/0d9d7009ca82361ff1a14a923e8a69e0f05c1ed6-libffi-3.0.13-18.amzn2.0.2-x86_64/var_product +var/lib/yum/yumdb/l/0d9d7009ca82361ff1a14a923e8a69e0f05c1ed6-libffi-3.0.13-18.amzn2.0.2-x86_64/var_target +var/lib/yum/yumdb/l/0d9d7009ca82361ff1a14a923e8a69e0f05c1ed6-libffi-3.0.13-18.amzn2.0.2-x86_64/var_uuid +var/lib/yum/yumdb/l/3e5b9117e826c74df190bc44536d8c2eb1ded5fd-libcom_err-1.42.9-12.amzn2.0.2-x86_64/ +var/lib/yum/yumdb/l/3e5b9117e826c74df190bc44536d8c2eb1ded5fd-libcom_err-1.42.9-12.amzn2.0.2-x86_64/checksum_data +var/lib/yum/yumdb/l/3e5b9117e826c74df190bc44536d8c2eb1ded5fd-libcom_err-1.42.9-12.amzn2.0.2-x86_64/checksum_type +var/lib/yum/yumdb/l/3e5b9117e826c74df190bc44536d8c2eb1ded5fd-libcom_err-1.42.9-12.amzn2.0.2-x86_64/command_line +var/lib/yum/yumdb/l/3e5b9117e826c74df190bc44536d8c2eb1ded5fd-libcom_err-1.42.9-12.amzn2.0.2-x86_64/from_repo +var/lib/yum/yumdb/l/3e5b9117e826c74df190bc44536d8c2eb1ded5fd-libcom_err-1.42.9-12.amzn2.0.2-x86_64/from_repo_revision +var/lib/yum/yumdb/l/3e5b9117e826c74df190bc44536d8c2eb1ded5fd-libcom_err-1.42.9-12.amzn2.0.2-x86_64/from_repo_timestamp +var/lib/yum/yumdb/l/3e5b9117e826c74df190bc44536d8c2eb1ded5fd-libcom_err-1.42.9-12.amzn2.0.2-x86_64/installed_by +var/lib/yum/yumdb/l/3e5b9117e826c74df190bc44536d8c2eb1ded5fd-libcom_err-1.42.9-12.amzn2.0.2-x86_64/origin_url +var/lib/yum/yumdb/l/3e5b9117e826c74df190bc44536d8c2eb1ded5fd-libcom_err-1.42.9-12.amzn2.0.2-x86_64/reason +var/lib/yum/yumdb/l/3e5b9117e826c74df190bc44536d8c2eb1ded5fd-libcom_err-1.42.9-12.amzn2.0.2-x86_64/releasever +var/lib/yum/yumdb/l/3e5b9117e826c74df190bc44536d8c2eb1ded5fd-libcom_err-1.42.9-12.amzn2.0.2-x86_64/var_awsdomain +var/lib/yum/yumdb/l/3e5b9117e826c74df190bc44536d8c2eb1ded5fd-libcom_err-1.42.9-12.amzn2.0.2-x86_64/var_awsregion +var/lib/yum/yumdb/l/3e5b9117e826c74df190bc44536d8c2eb1ded5fd-libcom_err-1.42.9-12.amzn2.0.2-x86_64/var_product +var/lib/yum/yumdb/l/3e5b9117e826c74df190bc44536d8c2eb1ded5fd-libcom_err-1.42.9-12.amzn2.0.2-x86_64/var_target +var/lib/yum/yumdb/l/3e5b9117e826c74df190bc44536d8c2eb1ded5fd-libcom_err-1.42.9-12.amzn2.0.2-x86_64/var_uuid +var/lib/yum/yumdb/l/67c56e4ef3c5c67d6b7ef5214042754ec99c163e-libsepol-2.5-8.1.amzn2.0.2-x86_64/ +var/lib/yum/yumdb/l/67c56e4ef3c5c67d6b7ef5214042754ec99c163e-libsepol-2.5-8.1.amzn2.0.2-x86_64/checksum_data +var/lib/yum/yumdb/l/67c56e4ef3c5c67d6b7ef5214042754ec99c163e-libsepol-2.5-8.1.amzn2.0.2-x86_64/checksum_type +var/lib/yum/yumdb/l/67c56e4ef3c5c67d6b7ef5214042754ec99c163e-libsepol-2.5-8.1.amzn2.0.2-x86_64/command_line +var/lib/yum/yumdb/l/67c56e4ef3c5c67d6b7ef5214042754ec99c163e-libsepol-2.5-8.1.amzn2.0.2-x86_64/from_repo +var/lib/yum/yumdb/l/67c56e4ef3c5c67d6b7ef5214042754ec99c163e-libsepol-2.5-8.1.amzn2.0.2-x86_64/from_repo_revision +var/lib/yum/yumdb/l/67c56e4ef3c5c67d6b7ef5214042754ec99c163e-libsepol-2.5-8.1.amzn2.0.2-x86_64/from_repo_timestamp +var/lib/yum/yumdb/l/67c56e4ef3c5c67d6b7ef5214042754ec99c163e-libsepol-2.5-8.1.amzn2.0.2-x86_64/installed_by +var/lib/yum/yumdb/l/67c56e4ef3c5c67d6b7ef5214042754ec99c163e-libsepol-2.5-8.1.amzn2.0.2-x86_64/origin_url +var/lib/yum/yumdb/l/67c56e4ef3c5c67d6b7ef5214042754ec99c163e-libsepol-2.5-8.1.amzn2.0.2-x86_64/reason +var/lib/yum/yumdb/l/67c56e4ef3c5c67d6b7ef5214042754ec99c163e-libsepol-2.5-8.1.amzn2.0.2-x86_64/releasever +var/lib/yum/yumdb/l/67c56e4ef3c5c67d6b7ef5214042754ec99c163e-libsepol-2.5-8.1.amzn2.0.2-x86_64/var_awsdomain +var/lib/yum/yumdb/l/67c56e4ef3c5c67d6b7ef5214042754ec99c163e-libsepol-2.5-8.1.amzn2.0.2-x86_64/var_awsregion +var/lib/yum/yumdb/l/67c56e4ef3c5c67d6b7ef5214042754ec99c163e-libsepol-2.5-8.1.amzn2.0.2-x86_64/var_product +var/lib/yum/yumdb/l/67c56e4ef3c5c67d6b7ef5214042754ec99c163e-libsepol-2.5-8.1.amzn2.0.2-x86_64/var_target +var/lib/yum/yumdb/l/67c56e4ef3c5c67d6b7ef5214042754ec99c163e-libsepol-2.5-8.1.amzn2.0.2-x86_64/var_uuid +var/lib/yum/yumdb/l/7bcb1f19f5e02fc6c06c843fb2589f629be26d91-libverto-0.2.5-4.amzn2.0.2-x86_64/ +var/lib/yum/yumdb/l/7bcb1f19f5e02fc6c06c843fb2589f629be26d91-libverto-0.2.5-4.amzn2.0.2-x86_64/checksum_data +var/lib/yum/yumdb/l/7bcb1f19f5e02fc6c06c843fb2589f629be26d91-libverto-0.2.5-4.amzn2.0.2-x86_64/checksum_type +var/lib/yum/yumdb/l/7bcb1f19f5e02fc6c06c843fb2589f629be26d91-libverto-0.2.5-4.amzn2.0.2-x86_64/command_line +var/lib/yum/yumdb/l/7bcb1f19f5e02fc6c06c843fb2589f629be26d91-libverto-0.2.5-4.amzn2.0.2-x86_64/from_repo +var/lib/yum/yumdb/l/7bcb1f19f5e02fc6c06c843fb2589f629be26d91-libverto-0.2.5-4.amzn2.0.2-x86_64/from_repo_revision +var/lib/yum/yumdb/l/7bcb1f19f5e02fc6c06c843fb2589f629be26d91-libverto-0.2.5-4.amzn2.0.2-x86_64/from_repo_timestamp +var/lib/yum/yumdb/l/7bcb1f19f5e02fc6c06c843fb2589f629be26d91-libverto-0.2.5-4.amzn2.0.2-x86_64/installed_by +var/lib/yum/yumdb/l/7bcb1f19f5e02fc6c06c843fb2589f629be26d91-libverto-0.2.5-4.amzn2.0.2-x86_64/origin_url +var/lib/yum/yumdb/l/7bcb1f19f5e02fc6c06c843fb2589f629be26d91-libverto-0.2.5-4.amzn2.0.2-x86_64/reason +var/lib/yum/yumdb/l/7bcb1f19f5e02fc6c06c843fb2589f629be26d91-libverto-0.2.5-4.amzn2.0.2-x86_64/releasever +var/lib/yum/yumdb/l/7bcb1f19f5e02fc6c06c843fb2589f629be26d91-libverto-0.2.5-4.amzn2.0.2-x86_64/var_awsdomain +var/lib/yum/yumdb/l/7bcb1f19f5e02fc6c06c843fb2589f629be26d91-libverto-0.2.5-4.amzn2.0.2-x86_64/var_awsregion +var/lib/yum/yumdb/l/7bcb1f19f5e02fc6c06c843fb2589f629be26d91-libverto-0.2.5-4.amzn2.0.2-x86_64/var_product +var/lib/yum/yumdb/l/7bcb1f19f5e02fc6c06c843fb2589f629be26d91-libverto-0.2.5-4.amzn2.0.2-x86_64/var_target +var/lib/yum/yumdb/l/7bcb1f19f5e02fc6c06c843fb2589f629be26d91-libverto-0.2.5-4.amzn2.0.2-x86_64/var_uuid +var/lib/yum/yumdb/l/a7d00a39361cd9f8bf3f082c381bc8be064c7a1b-libacl-2.2.51-14.amzn2-x86_64/ +var/lib/yum/yumdb/l/a7d00a39361cd9f8bf3f082c381bc8be064c7a1b-libacl-2.2.51-14.amzn2-x86_64/checksum_data +var/lib/yum/yumdb/l/a7d00a39361cd9f8bf3f082c381bc8be064c7a1b-libacl-2.2.51-14.amzn2-x86_64/checksum_type +var/lib/yum/yumdb/l/a7d00a39361cd9f8bf3f082c381bc8be064c7a1b-libacl-2.2.51-14.amzn2-x86_64/command_line +var/lib/yum/yumdb/l/a7d00a39361cd9f8bf3f082c381bc8be064c7a1b-libacl-2.2.51-14.amzn2-x86_64/from_repo +var/lib/yum/yumdb/l/a7d00a39361cd9f8bf3f082c381bc8be064c7a1b-libacl-2.2.51-14.amzn2-x86_64/from_repo_revision +var/lib/yum/yumdb/l/a7d00a39361cd9f8bf3f082c381bc8be064c7a1b-libacl-2.2.51-14.amzn2-x86_64/from_repo_timestamp +var/lib/yum/yumdb/l/a7d00a39361cd9f8bf3f082c381bc8be064c7a1b-libacl-2.2.51-14.amzn2-x86_64/installed_by +var/lib/yum/yumdb/l/a7d00a39361cd9f8bf3f082c381bc8be064c7a1b-libacl-2.2.51-14.amzn2-x86_64/origin_url +var/lib/yum/yumdb/l/a7d00a39361cd9f8bf3f082c381bc8be064c7a1b-libacl-2.2.51-14.amzn2-x86_64/reason +var/lib/yum/yumdb/l/a7d00a39361cd9f8bf3f082c381bc8be064c7a1b-libacl-2.2.51-14.amzn2-x86_64/releasever +var/lib/yum/yumdb/l/a7d00a39361cd9f8bf3f082c381bc8be064c7a1b-libacl-2.2.51-14.amzn2-x86_64/var_awsdomain +var/lib/yum/yumdb/l/a7d00a39361cd9f8bf3f082c381bc8be064c7a1b-libacl-2.2.51-14.amzn2-x86_64/var_awsregion +var/lib/yum/yumdb/l/a7d00a39361cd9f8bf3f082c381bc8be064c7a1b-libacl-2.2.51-14.amzn2-x86_64/var_product +var/lib/yum/yumdb/l/a7d00a39361cd9f8bf3f082c381bc8be064c7a1b-libacl-2.2.51-14.amzn2-x86_64/var_target +var/lib/yum/yumdb/l/a7d00a39361cd9f8bf3f082c381bc8be064c7a1b-libacl-2.2.51-14.amzn2-x86_64/var_uuid +var/lib/yum/yumdb/l/bbb319b7b97df7ceb9e9a627ef6d9321f546c859-libstdc++-7.3.1-5.amzn2.0.2-x86_64/ +var/lib/yum/yumdb/l/bbb319b7b97df7ceb9e9a627ef6d9321f546c859-libstdc++-7.3.1-5.amzn2.0.2-x86_64/checksum_data +var/lib/yum/yumdb/l/bbb319b7b97df7ceb9e9a627ef6d9321f546c859-libstdc++-7.3.1-5.amzn2.0.2-x86_64/checksum_type +var/lib/yum/yumdb/l/bbb319b7b97df7ceb9e9a627ef6d9321f546c859-libstdc++-7.3.1-5.amzn2.0.2-x86_64/command_line +var/lib/yum/yumdb/l/bbb319b7b97df7ceb9e9a627ef6d9321f546c859-libstdc++-7.3.1-5.amzn2.0.2-x86_64/from_repo +var/lib/yum/yumdb/l/bbb319b7b97df7ceb9e9a627ef6d9321f546c859-libstdc++-7.3.1-5.amzn2.0.2-x86_64/from_repo_revision +var/lib/yum/yumdb/l/bbb319b7b97df7ceb9e9a627ef6d9321f546c859-libstdc++-7.3.1-5.amzn2.0.2-x86_64/from_repo_timestamp +var/lib/yum/yumdb/l/bbb319b7b97df7ceb9e9a627ef6d9321f546c859-libstdc++-7.3.1-5.amzn2.0.2-x86_64/installed_by +var/lib/yum/yumdb/l/bbb319b7b97df7ceb9e9a627ef6d9321f546c859-libstdc++-7.3.1-5.amzn2.0.2-x86_64/origin_url +var/lib/yum/yumdb/l/bbb319b7b97df7ceb9e9a627ef6d9321f546c859-libstdc++-7.3.1-5.amzn2.0.2-x86_64/reason +var/lib/yum/yumdb/l/bbb319b7b97df7ceb9e9a627ef6d9321f546c859-libstdc++-7.3.1-5.amzn2.0.2-x86_64/releasever +var/lib/yum/yumdb/l/bbb319b7b97df7ceb9e9a627ef6d9321f546c859-libstdc++-7.3.1-5.amzn2.0.2-x86_64/var_awsdomain +var/lib/yum/yumdb/l/bbb319b7b97df7ceb9e9a627ef6d9321f546c859-libstdc++-7.3.1-5.amzn2.0.2-x86_64/var_awsregion +var/lib/yum/yumdb/l/bbb319b7b97df7ceb9e9a627ef6d9321f546c859-libstdc++-7.3.1-5.amzn2.0.2-x86_64/var_product +var/lib/yum/yumdb/l/bbb319b7b97df7ceb9e9a627ef6d9321f546c859-libstdc++-7.3.1-5.amzn2.0.2-x86_64/var_target +var/lib/yum/yumdb/l/bbb319b7b97df7ceb9e9a627ef6d9321f546c859-libstdc++-7.3.1-5.amzn2.0.2-x86_64/var_uuid +var/lib/yum/yumdb/l/dc768c264c8f1f522fde1bc7adf3e3bf6411ba83-libselinux-2.5-12.amzn2.0.2-x86_64/ +var/lib/yum/yumdb/l/dc768c264c8f1f522fde1bc7adf3e3bf6411ba83-libselinux-2.5-12.amzn2.0.2-x86_64/checksum_data +var/lib/yum/yumdb/l/dc768c264c8f1f522fde1bc7adf3e3bf6411ba83-libselinux-2.5-12.amzn2.0.2-x86_64/checksum_type +var/lib/yum/yumdb/l/dc768c264c8f1f522fde1bc7adf3e3bf6411ba83-libselinux-2.5-12.amzn2.0.2-x86_64/command_line +var/lib/yum/yumdb/l/dc768c264c8f1f522fde1bc7adf3e3bf6411ba83-libselinux-2.5-12.amzn2.0.2-x86_64/from_repo +var/lib/yum/yumdb/l/dc768c264c8f1f522fde1bc7adf3e3bf6411ba83-libselinux-2.5-12.amzn2.0.2-x86_64/from_repo_revision +var/lib/yum/yumdb/l/dc768c264c8f1f522fde1bc7adf3e3bf6411ba83-libselinux-2.5-12.amzn2.0.2-x86_64/from_repo_timestamp +var/lib/yum/yumdb/l/dc768c264c8f1f522fde1bc7adf3e3bf6411ba83-libselinux-2.5-12.amzn2.0.2-x86_64/installed_by +var/lib/yum/yumdb/l/dc768c264c8f1f522fde1bc7adf3e3bf6411ba83-libselinux-2.5-12.amzn2.0.2-x86_64/origin_url +var/lib/yum/yumdb/l/dc768c264c8f1f522fde1bc7adf3e3bf6411ba83-libselinux-2.5-12.amzn2.0.2-x86_64/reason +var/lib/yum/yumdb/l/dc768c264c8f1f522fde1bc7adf3e3bf6411ba83-libselinux-2.5-12.amzn2.0.2-x86_64/releasever +var/lib/yum/yumdb/l/dc768c264c8f1f522fde1bc7adf3e3bf6411ba83-libselinux-2.5-12.amzn2.0.2-x86_64/var_awsdomain +var/lib/yum/yumdb/l/dc768c264c8f1f522fde1bc7adf3e3bf6411ba83-libselinux-2.5-12.amzn2.0.2-x86_64/var_awsregion +var/lib/yum/yumdb/l/dc768c264c8f1f522fde1bc7adf3e3bf6411ba83-libselinux-2.5-12.amzn2.0.2-x86_64/var_product +var/lib/yum/yumdb/l/dc768c264c8f1f522fde1bc7adf3e3bf6411ba83-libselinux-2.5-12.amzn2.0.2-x86_64/var_target +var/lib/yum/yumdb/l/dc768c264c8f1f522fde1bc7adf3e3bf6411ba83-libselinux-2.5-12.amzn2.0.2-x86_64/var_uuid +var/lib/yum/yumdb/l/e30882c56b0d0aaf587b7dc54a12716053a5f2d7-libcap-2.22-9.amzn2.0.2-x86_64/ +var/lib/yum/yumdb/l/e30882c56b0d0aaf587b7dc54a12716053a5f2d7-libcap-2.22-9.amzn2.0.2-x86_64/checksum_data +var/lib/yum/yumdb/l/e30882c56b0d0aaf587b7dc54a12716053a5f2d7-libcap-2.22-9.amzn2.0.2-x86_64/checksum_type +var/lib/yum/yumdb/l/e30882c56b0d0aaf587b7dc54a12716053a5f2d7-libcap-2.22-9.amzn2.0.2-x86_64/command_line +var/lib/yum/yumdb/l/e30882c56b0d0aaf587b7dc54a12716053a5f2d7-libcap-2.22-9.amzn2.0.2-x86_64/from_repo +var/lib/yum/yumdb/l/e30882c56b0d0aaf587b7dc54a12716053a5f2d7-libcap-2.22-9.amzn2.0.2-x86_64/from_repo_revision +var/lib/yum/yumdb/l/e30882c56b0d0aaf587b7dc54a12716053a5f2d7-libcap-2.22-9.amzn2.0.2-x86_64/from_repo_timestamp +var/lib/yum/yumdb/l/e30882c56b0d0aaf587b7dc54a12716053a5f2d7-libcap-2.22-9.amzn2.0.2-x86_64/installed_by +var/lib/yum/yumdb/l/e30882c56b0d0aaf587b7dc54a12716053a5f2d7-libcap-2.22-9.amzn2.0.2-x86_64/origin_url +var/lib/yum/yumdb/l/e30882c56b0d0aaf587b7dc54a12716053a5f2d7-libcap-2.22-9.amzn2.0.2-x86_64/reason +var/lib/yum/yumdb/l/e30882c56b0d0aaf587b7dc54a12716053a5f2d7-libcap-2.22-9.amzn2.0.2-x86_64/releasever +var/lib/yum/yumdb/l/e30882c56b0d0aaf587b7dc54a12716053a5f2d7-libcap-2.22-9.amzn2.0.2-x86_64/var_awsdomain +var/lib/yum/yumdb/l/e30882c56b0d0aaf587b7dc54a12716053a5f2d7-libcap-2.22-9.amzn2.0.2-x86_64/var_awsregion +var/lib/yum/yumdb/l/e30882c56b0d0aaf587b7dc54a12716053a5f2d7-libcap-2.22-9.amzn2.0.2-x86_64/var_product +var/lib/yum/yumdb/l/e30882c56b0d0aaf587b7dc54a12716053a5f2d7-libcap-2.22-9.amzn2.0.2-x86_64/var_target +var/lib/yum/yumdb/l/e30882c56b0d0aaf587b7dc54a12716053a5f2d7-libcap-2.22-9.amzn2.0.2-x86_64/var_uuid +var/lib/yum/yumdb/l/fb0a29842c79aaed98a69a207a69db8bfc690ea8-libtasn1-4.10-1.amzn2.0.2-x86_64/ +var/lib/yum/yumdb/l/fb0a29842c79aaed98a69a207a69db8bfc690ea8-libtasn1-4.10-1.amzn2.0.2-x86_64/checksum_data +var/lib/yum/yumdb/l/fb0a29842c79aaed98a69a207a69db8bfc690ea8-libtasn1-4.10-1.amzn2.0.2-x86_64/checksum_type +var/lib/yum/yumdb/l/fb0a29842c79aaed98a69a207a69db8bfc690ea8-libtasn1-4.10-1.amzn2.0.2-x86_64/command_line +var/lib/yum/yumdb/l/fb0a29842c79aaed98a69a207a69db8bfc690ea8-libtasn1-4.10-1.amzn2.0.2-x86_64/from_repo +var/lib/yum/yumdb/l/fb0a29842c79aaed98a69a207a69db8bfc690ea8-libtasn1-4.10-1.amzn2.0.2-x86_64/from_repo_revision +var/lib/yum/yumdb/l/fb0a29842c79aaed98a69a207a69db8bfc690ea8-libtasn1-4.10-1.amzn2.0.2-x86_64/from_repo_timestamp +var/lib/yum/yumdb/l/fb0a29842c79aaed98a69a207a69db8bfc690ea8-libtasn1-4.10-1.amzn2.0.2-x86_64/installed_by +var/lib/yum/yumdb/l/fb0a29842c79aaed98a69a207a69db8bfc690ea8-libtasn1-4.10-1.amzn2.0.2-x86_64/origin_url +var/lib/yum/yumdb/l/fb0a29842c79aaed98a69a207a69db8bfc690ea8-libtasn1-4.10-1.amzn2.0.2-x86_64/reason +var/lib/yum/yumdb/l/fb0a29842c79aaed98a69a207a69db8bfc690ea8-libtasn1-4.10-1.amzn2.0.2-x86_64/releasever +var/lib/yum/yumdb/l/fb0a29842c79aaed98a69a207a69db8bfc690ea8-libtasn1-4.10-1.amzn2.0.2-x86_64/var_awsdomain +var/lib/yum/yumdb/l/fb0a29842c79aaed98a69a207a69db8bfc690ea8-libtasn1-4.10-1.amzn2.0.2-x86_64/var_awsregion +var/lib/yum/yumdb/l/fb0a29842c79aaed98a69a207a69db8bfc690ea8-libtasn1-4.10-1.amzn2.0.2-x86_64/var_product +var/lib/yum/yumdb/l/fb0a29842c79aaed98a69a207a69db8bfc690ea8-libtasn1-4.10-1.amzn2.0.2-x86_64/var_target +var/lib/yum/yumdb/l/fb0a29842c79aaed98a69a207a69db8bfc690ea8-libtasn1-4.10-1.amzn2.0.2-x86_64/var_uuid +var/lib/yum/yumdb/n/ +var/lib/yum/yumdb/n/18848c4b77546e0d0a6903f087e2d93351a875da-ncurses-base-6.0-8.20170212.amzn2.1.2-noarch/ +var/lib/yum/yumdb/n/18848c4b77546e0d0a6903f087e2d93351a875da-ncurses-base-6.0-8.20170212.amzn2.1.2-noarch/checksum_data +var/lib/yum/yumdb/n/18848c4b77546e0d0a6903f087e2d93351a875da-ncurses-base-6.0-8.20170212.amzn2.1.2-noarch/checksum_type +var/lib/yum/yumdb/n/18848c4b77546e0d0a6903f087e2d93351a875da-ncurses-base-6.0-8.20170212.amzn2.1.2-noarch/command_line +var/lib/yum/yumdb/n/18848c4b77546e0d0a6903f087e2d93351a875da-ncurses-base-6.0-8.20170212.amzn2.1.2-noarch/from_repo +var/lib/yum/yumdb/n/18848c4b77546e0d0a6903f087e2d93351a875da-ncurses-base-6.0-8.20170212.amzn2.1.2-noarch/from_repo_revision +var/lib/yum/yumdb/n/18848c4b77546e0d0a6903f087e2d93351a875da-ncurses-base-6.0-8.20170212.amzn2.1.2-noarch/from_repo_timestamp +var/lib/yum/yumdb/n/18848c4b77546e0d0a6903f087e2d93351a875da-ncurses-base-6.0-8.20170212.amzn2.1.2-noarch/installed_by +var/lib/yum/yumdb/n/18848c4b77546e0d0a6903f087e2d93351a875da-ncurses-base-6.0-8.20170212.amzn2.1.2-noarch/origin_url +var/lib/yum/yumdb/n/18848c4b77546e0d0a6903f087e2d93351a875da-ncurses-base-6.0-8.20170212.amzn2.1.2-noarch/reason +var/lib/yum/yumdb/n/18848c4b77546e0d0a6903f087e2d93351a875da-ncurses-base-6.0-8.20170212.amzn2.1.2-noarch/releasever +var/lib/yum/yumdb/n/18848c4b77546e0d0a6903f087e2d93351a875da-ncurses-base-6.0-8.20170212.amzn2.1.2-noarch/var_awsdomain +var/lib/yum/yumdb/n/18848c4b77546e0d0a6903f087e2d93351a875da-ncurses-base-6.0-8.20170212.amzn2.1.2-noarch/var_awsregion +var/lib/yum/yumdb/n/18848c4b77546e0d0a6903f087e2d93351a875da-ncurses-base-6.0-8.20170212.amzn2.1.2-noarch/var_product +var/lib/yum/yumdb/n/18848c4b77546e0d0a6903f087e2d93351a875da-ncurses-base-6.0-8.20170212.amzn2.1.2-noarch/var_target +var/lib/yum/yumdb/n/18848c4b77546e0d0a6903f087e2d93351a875da-ncurses-base-6.0-8.20170212.amzn2.1.2-noarch/var_uuid +var/lib/yum/yumdb/n/3c4da0ea324860d493fb112daeb65a20c05c702f-nss-softokn-freebl-3.36.0-5.amzn2-x86_64/ +var/lib/yum/yumdb/n/3c4da0ea324860d493fb112daeb65a20c05c702f-nss-softokn-freebl-3.36.0-5.amzn2-x86_64/checksum_data +var/lib/yum/yumdb/n/3c4da0ea324860d493fb112daeb65a20c05c702f-nss-softokn-freebl-3.36.0-5.amzn2-x86_64/checksum_type +var/lib/yum/yumdb/n/3c4da0ea324860d493fb112daeb65a20c05c702f-nss-softokn-freebl-3.36.0-5.amzn2-x86_64/command_line +var/lib/yum/yumdb/n/3c4da0ea324860d493fb112daeb65a20c05c702f-nss-softokn-freebl-3.36.0-5.amzn2-x86_64/from_repo +var/lib/yum/yumdb/n/3c4da0ea324860d493fb112daeb65a20c05c702f-nss-softokn-freebl-3.36.0-5.amzn2-x86_64/from_repo_revision +var/lib/yum/yumdb/n/3c4da0ea324860d493fb112daeb65a20c05c702f-nss-softokn-freebl-3.36.0-5.amzn2-x86_64/from_repo_timestamp +var/lib/yum/yumdb/n/3c4da0ea324860d493fb112daeb65a20c05c702f-nss-softokn-freebl-3.36.0-5.amzn2-x86_64/installed_by +var/lib/yum/yumdb/n/3c4da0ea324860d493fb112daeb65a20c05c702f-nss-softokn-freebl-3.36.0-5.amzn2-x86_64/origin_url +var/lib/yum/yumdb/n/3c4da0ea324860d493fb112daeb65a20c05c702f-nss-softokn-freebl-3.36.0-5.amzn2-x86_64/reason +var/lib/yum/yumdb/n/3c4da0ea324860d493fb112daeb65a20c05c702f-nss-softokn-freebl-3.36.0-5.amzn2-x86_64/releasever +var/lib/yum/yumdb/n/3c4da0ea324860d493fb112daeb65a20c05c702f-nss-softokn-freebl-3.36.0-5.amzn2-x86_64/var_awsdomain +var/lib/yum/yumdb/n/3c4da0ea324860d493fb112daeb65a20c05c702f-nss-softokn-freebl-3.36.0-5.amzn2-x86_64/var_awsregion +var/lib/yum/yumdb/n/3c4da0ea324860d493fb112daeb65a20c05c702f-nss-softokn-freebl-3.36.0-5.amzn2-x86_64/var_product +var/lib/yum/yumdb/n/3c4da0ea324860d493fb112daeb65a20c05c702f-nss-softokn-freebl-3.36.0-5.amzn2-x86_64/var_target +var/lib/yum/yumdb/n/3c4da0ea324860d493fb112daeb65a20c05c702f-nss-softokn-freebl-3.36.0-5.amzn2-x86_64/var_uuid +var/lib/yum/yumdb/n/975470857966da6ba4cb56cda4d05bbc481023eb-ncurses-libs-6.0-8.20170212.amzn2.1.2-x86_64/ +var/lib/yum/yumdb/n/975470857966da6ba4cb56cda4d05bbc481023eb-ncurses-libs-6.0-8.20170212.amzn2.1.2-x86_64/checksum_data +var/lib/yum/yumdb/n/975470857966da6ba4cb56cda4d05bbc481023eb-ncurses-libs-6.0-8.20170212.amzn2.1.2-x86_64/checksum_type +var/lib/yum/yumdb/n/975470857966da6ba4cb56cda4d05bbc481023eb-ncurses-libs-6.0-8.20170212.amzn2.1.2-x86_64/command_line +var/lib/yum/yumdb/n/975470857966da6ba4cb56cda4d05bbc481023eb-ncurses-libs-6.0-8.20170212.amzn2.1.2-x86_64/from_repo +var/lib/yum/yumdb/n/975470857966da6ba4cb56cda4d05bbc481023eb-ncurses-libs-6.0-8.20170212.amzn2.1.2-x86_64/from_repo_revision +var/lib/yum/yumdb/n/975470857966da6ba4cb56cda4d05bbc481023eb-ncurses-libs-6.0-8.20170212.amzn2.1.2-x86_64/from_repo_timestamp +var/lib/yum/yumdb/n/975470857966da6ba4cb56cda4d05bbc481023eb-ncurses-libs-6.0-8.20170212.amzn2.1.2-x86_64/installed_by +var/lib/yum/yumdb/n/975470857966da6ba4cb56cda4d05bbc481023eb-ncurses-libs-6.0-8.20170212.amzn2.1.2-x86_64/origin_url +var/lib/yum/yumdb/n/975470857966da6ba4cb56cda4d05bbc481023eb-ncurses-libs-6.0-8.20170212.amzn2.1.2-x86_64/reason +var/lib/yum/yumdb/n/975470857966da6ba4cb56cda4d05bbc481023eb-ncurses-libs-6.0-8.20170212.amzn2.1.2-x86_64/releasever +var/lib/yum/yumdb/n/975470857966da6ba4cb56cda4d05bbc481023eb-ncurses-libs-6.0-8.20170212.amzn2.1.2-x86_64/var_awsdomain +var/lib/yum/yumdb/n/975470857966da6ba4cb56cda4d05bbc481023eb-ncurses-libs-6.0-8.20170212.amzn2.1.2-x86_64/var_awsregion +var/lib/yum/yumdb/n/975470857966da6ba4cb56cda4d05bbc481023eb-ncurses-libs-6.0-8.20170212.amzn2.1.2-x86_64/var_product +var/lib/yum/yumdb/n/975470857966da6ba4cb56cda4d05bbc481023eb-ncurses-libs-6.0-8.20170212.amzn2.1.2-x86_64/var_target +var/lib/yum/yumdb/n/975470857966da6ba4cb56cda4d05bbc481023eb-ncurses-libs-6.0-8.20170212.amzn2.1.2-x86_64/var_uuid +var/lib/yum/yumdb/n/a54ddd8cbb47e1daf4d141ee41890e8ca8ce5c05-nss-util-3.36.0-1.amzn2-x86_64/ +var/lib/yum/yumdb/n/a54ddd8cbb47e1daf4d141ee41890e8ca8ce5c05-nss-util-3.36.0-1.amzn2-x86_64/checksum_data +var/lib/yum/yumdb/n/a54ddd8cbb47e1daf4d141ee41890e8ca8ce5c05-nss-util-3.36.0-1.amzn2-x86_64/checksum_type +var/lib/yum/yumdb/n/a54ddd8cbb47e1daf4d141ee41890e8ca8ce5c05-nss-util-3.36.0-1.amzn2-x86_64/command_line +var/lib/yum/yumdb/n/a54ddd8cbb47e1daf4d141ee41890e8ca8ce5c05-nss-util-3.36.0-1.amzn2-x86_64/from_repo +var/lib/yum/yumdb/n/a54ddd8cbb47e1daf4d141ee41890e8ca8ce5c05-nss-util-3.36.0-1.amzn2-x86_64/from_repo_revision +var/lib/yum/yumdb/n/a54ddd8cbb47e1daf4d141ee41890e8ca8ce5c05-nss-util-3.36.0-1.amzn2-x86_64/from_repo_timestamp +var/lib/yum/yumdb/n/a54ddd8cbb47e1daf4d141ee41890e8ca8ce5c05-nss-util-3.36.0-1.amzn2-x86_64/installed_by +var/lib/yum/yumdb/n/a54ddd8cbb47e1daf4d141ee41890e8ca8ce5c05-nss-util-3.36.0-1.amzn2-x86_64/origin_url +var/lib/yum/yumdb/n/a54ddd8cbb47e1daf4d141ee41890e8ca8ce5c05-nss-util-3.36.0-1.amzn2-x86_64/reason +var/lib/yum/yumdb/n/a54ddd8cbb47e1daf4d141ee41890e8ca8ce5c05-nss-util-3.36.0-1.amzn2-x86_64/releasever +var/lib/yum/yumdb/n/a54ddd8cbb47e1daf4d141ee41890e8ca8ce5c05-nss-util-3.36.0-1.amzn2-x86_64/var_awsdomain +var/lib/yum/yumdb/n/a54ddd8cbb47e1daf4d141ee41890e8ca8ce5c05-nss-util-3.36.0-1.amzn2-x86_64/var_awsregion +var/lib/yum/yumdb/n/a54ddd8cbb47e1daf4d141ee41890e8ca8ce5c05-nss-util-3.36.0-1.amzn2-x86_64/var_product +var/lib/yum/yumdb/n/a54ddd8cbb47e1daf4d141ee41890e8ca8ce5c05-nss-util-3.36.0-1.amzn2-x86_64/var_target +var/lib/yum/yumdb/n/a54ddd8cbb47e1daf4d141ee41890e8ca8ce5c05-nss-util-3.36.0-1.amzn2-x86_64/var_uuid +var/lib/yum/yumdb/n/c2023f3183c41fefcd78162100dac046cc9d7339-nspr-4.19.0-1.amzn2-x86_64/ +var/lib/yum/yumdb/n/c2023f3183c41fefcd78162100dac046cc9d7339-nspr-4.19.0-1.amzn2-x86_64/checksum_data +var/lib/yum/yumdb/n/c2023f3183c41fefcd78162100dac046cc9d7339-nspr-4.19.0-1.amzn2-x86_64/checksum_type +var/lib/yum/yumdb/n/c2023f3183c41fefcd78162100dac046cc9d7339-nspr-4.19.0-1.amzn2-x86_64/command_line +var/lib/yum/yumdb/n/c2023f3183c41fefcd78162100dac046cc9d7339-nspr-4.19.0-1.amzn2-x86_64/from_repo +var/lib/yum/yumdb/n/c2023f3183c41fefcd78162100dac046cc9d7339-nspr-4.19.0-1.amzn2-x86_64/from_repo_revision +var/lib/yum/yumdb/n/c2023f3183c41fefcd78162100dac046cc9d7339-nspr-4.19.0-1.amzn2-x86_64/from_repo_timestamp +var/lib/yum/yumdb/n/c2023f3183c41fefcd78162100dac046cc9d7339-nspr-4.19.0-1.amzn2-x86_64/installed_by +var/lib/yum/yumdb/n/c2023f3183c41fefcd78162100dac046cc9d7339-nspr-4.19.0-1.amzn2-x86_64/origin_url +var/lib/yum/yumdb/n/c2023f3183c41fefcd78162100dac046cc9d7339-nspr-4.19.0-1.amzn2-x86_64/reason +var/lib/yum/yumdb/n/c2023f3183c41fefcd78162100dac046cc9d7339-nspr-4.19.0-1.amzn2-x86_64/releasever +var/lib/yum/yumdb/n/c2023f3183c41fefcd78162100dac046cc9d7339-nspr-4.19.0-1.amzn2-x86_64/var_awsdomain +var/lib/yum/yumdb/n/c2023f3183c41fefcd78162100dac046cc9d7339-nspr-4.19.0-1.amzn2-x86_64/var_awsregion +var/lib/yum/yumdb/n/c2023f3183c41fefcd78162100dac046cc9d7339-nspr-4.19.0-1.amzn2-x86_64/var_product +var/lib/yum/yumdb/n/c2023f3183c41fefcd78162100dac046cc9d7339-nspr-4.19.0-1.amzn2-x86_64/var_target +var/lib/yum/yumdb/n/c2023f3183c41fefcd78162100dac046cc9d7339-nspr-4.19.0-1.amzn2-x86_64/var_uuid +var/lib/yum/yumdb/n/eaf7b924b2ea7f2a05e5b7ff2703b6b68694b42b-ncurses-6.0-8.20170212.amzn2.1.2-x86_64/ +var/lib/yum/yumdb/n/eaf7b924b2ea7f2a05e5b7ff2703b6b68694b42b-ncurses-6.0-8.20170212.amzn2.1.2-x86_64/checksum_data +var/lib/yum/yumdb/n/eaf7b924b2ea7f2a05e5b7ff2703b6b68694b42b-ncurses-6.0-8.20170212.amzn2.1.2-x86_64/checksum_type +var/lib/yum/yumdb/n/eaf7b924b2ea7f2a05e5b7ff2703b6b68694b42b-ncurses-6.0-8.20170212.amzn2.1.2-x86_64/command_line +var/lib/yum/yumdb/n/eaf7b924b2ea7f2a05e5b7ff2703b6b68694b42b-ncurses-6.0-8.20170212.amzn2.1.2-x86_64/from_repo +var/lib/yum/yumdb/n/eaf7b924b2ea7f2a05e5b7ff2703b6b68694b42b-ncurses-6.0-8.20170212.amzn2.1.2-x86_64/from_repo_revision +var/lib/yum/yumdb/n/eaf7b924b2ea7f2a05e5b7ff2703b6b68694b42b-ncurses-6.0-8.20170212.amzn2.1.2-x86_64/from_repo_timestamp +var/lib/yum/yumdb/n/eaf7b924b2ea7f2a05e5b7ff2703b6b68694b42b-ncurses-6.0-8.20170212.amzn2.1.2-x86_64/installed_by +var/lib/yum/yumdb/n/eaf7b924b2ea7f2a05e5b7ff2703b6b68694b42b-ncurses-6.0-8.20170212.amzn2.1.2-x86_64/origin_url +var/lib/yum/yumdb/n/eaf7b924b2ea7f2a05e5b7ff2703b6b68694b42b-ncurses-6.0-8.20170212.amzn2.1.2-x86_64/reason +var/lib/yum/yumdb/n/eaf7b924b2ea7f2a05e5b7ff2703b6b68694b42b-ncurses-6.0-8.20170212.amzn2.1.2-x86_64/releasever +var/lib/yum/yumdb/n/eaf7b924b2ea7f2a05e5b7ff2703b6b68694b42b-ncurses-6.0-8.20170212.amzn2.1.2-x86_64/var_awsdomain +var/lib/yum/yumdb/n/eaf7b924b2ea7f2a05e5b7ff2703b6b68694b42b-ncurses-6.0-8.20170212.amzn2.1.2-x86_64/var_awsregion +var/lib/yum/yumdb/n/eaf7b924b2ea7f2a05e5b7ff2703b6b68694b42b-ncurses-6.0-8.20170212.amzn2.1.2-x86_64/var_product +var/lib/yum/yumdb/n/eaf7b924b2ea7f2a05e5b7ff2703b6b68694b42b-ncurses-6.0-8.20170212.amzn2.1.2-x86_64/var_target +var/lib/yum/yumdb/n/eaf7b924b2ea7f2a05e5b7ff2703b6b68694b42b-ncurses-6.0-8.20170212.amzn2.1.2-x86_64/var_uuid +var/lib/yum/yumdb/o/ +var/lib/yum/yumdb/o/6a059dc7cb60687169f7c9dd924d6d2a5910b717-openssl-libs-1.0.2k-16.amzn2.1.1-x86_64/ +var/lib/yum/yumdb/o/6a059dc7cb60687169f7c9dd924d6d2a5910b717-openssl-libs-1.0.2k-16.amzn2.1.1-x86_64/checksum_data +var/lib/yum/yumdb/o/6a059dc7cb60687169f7c9dd924d6d2a5910b717-openssl-libs-1.0.2k-16.amzn2.1.1-x86_64/checksum_type +var/lib/yum/yumdb/o/6a059dc7cb60687169f7c9dd924d6d2a5910b717-openssl-libs-1.0.2k-16.amzn2.1.1-x86_64/command_line +var/lib/yum/yumdb/o/6a059dc7cb60687169f7c9dd924d6d2a5910b717-openssl-libs-1.0.2k-16.amzn2.1.1-x86_64/from_repo +var/lib/yum/yumdb/o/6a059dc7cb60687169f7c9dd924d6d2a5910b717-openssl-libs-1.0.2k-16.amzn2.1.1-x86_64/from_repo_revision +var/lib/yum/yumdb/o/6a059dc7cb60687169f7c9dd924d6d2a5910b717-openssl-libs-1.0.2k-16.amzn2.1.1-x86_64/from_repo_timestamp +var/lib/yum/yumdb/o/6a059dc7cb60687169f7c9dd924d6d2a5910b717-openssl-libs-1.0.2k-16.amzn2.1.1-x86_64/installed_by +var/lib/yum/yumdb/o/6a059dc7cb60687169f7c9dd924d6d2a5910b717-openssl-libs-1.0.2k-16.amzn2.1.1-x86_64/origin_url +var/lib/yum/yumdb/o/6a059dc7cb60687169f7c9dd924d6d2a5910b717-openssl-libs-1.0.2k-16.amzn2.1.1-x86_64/reason +var/lib/yum/yumdb/o/6a059dc7cb60687169f7c9dd924d6d2a5910b717-openssl-libs-1.0.2k-16.amzn2.1.1-x86_64/releasever +var/lib/yum/yumdb/o/6a059dc7cb60687169f7c9dd924d6d2a5910b717-openssl-libs-1.0.2k-16.amzn2.1.1-x86_64/var_awsdomain +var/lib/yum/yumdb/o/6a059dc7cb60687169f7c9dd924d6d2a5910b717-openssl-libs-1.0.2k-16.amzn2.1.1-x86_64/var_awsregion +var/lib/yum/yumdb/o/6a059dc7cb60687169f7c9dd924d6d2a5910b717-openssl-libs-1.0.2k-16.amzn2.1.1-x86_64/var_product +var/lib/yum/yumdb/o/6a059dc7cb60687169f7c9dd924d6d2a5910b717-openssl-libs-1.0.2k-16.amzn2.1.1-x86_64/var_target +var/lib/yum/yumdb/o/6a059dc7cb60687169f7c9dd924d6d2a5910b717-openssl-libs-1.0.2k-16.amzn2.1.1-x86_64/var_uuid +var/lib/yum/yumdb/p/ +var/lib/yum/yumdb/p/06a4fa049dd3ab93135eb7126d8d2575807f3efc-p11-kit-0.23.5-3.amzn2.0.2-x86_64/ +var/lib/yum/yumdb/p/06a4fa049dd3ab93135eb7126d8d2575807f3efc-p11-kit-0.23.5-3.amzn2.0.2-x86_64/checksum_data +var/lib/yum/yumdb/p/06a4fa049dd3ab93135eb7126d8d2575807f3efc-p11-kit-0.23.5-3.amzn2.0.2-x86_64/checksum_type +var/lib/yum/yumdb/p/06a4fa049dd3ab93135eb7126d8d2575807f3efc-p11-kit-0.23.5-3.amzn2.0.2-x86_64/command_line +var/lib/yum/yumdb/p/06a4fa049dd3ab93135eb7126d8d2575807f3efc-p11-kit-0.23.5-3.amzn2.0.2-x86_64/from_repo +var/lib/yum/yumdb/p/06a4fa049dd3ab93135eb7126d8d2575807f3efc-p11-kit-0.23.5-3.amzn2.0.2-x86_64/from_repo_revision +var/lib/yum/yumdb/p/06a4fa049dd3ab93135eb7126d8d2575807f3efc-p11-kit-0.23.5-3.amzn2.0.2-x86_64/from_repo_timestamp +var/lib/yum/yumdb/p/06a4fa049dd3ab93135eb7126d8d2575807f3efc-p11-kit-0.23.5-3.amzn2.0.2-x86_64/installed_by +var/lib/yum/yumdb/p/06a4fa049dd3ab93135eb7126d8d2575807f3efc-p11-kit-0.23.5-3.amzn2.0.2-x86_64/origin_url +var/lib/yum/yumdb/p/06a4fa049dd3ab93135eb7126d8d2575807f3efc-p11-kit-0.23.5-3.amzn2.0.2-x86_64/reason +var/lib/yum/yumdb/p/06a4fa049dd3ab93135eb7126d8d2575807f3efc-p11-kit-0.23.5-3.amzn2.0.2-x86_64/releasever +var/lib/yum/yumdb/p/06a4fa049dd3ab93135eb7126d8d2575807f3efc-p11-kit-0.23.5-3.amzn2.0.2-x86_64/var_awsdomain +var/lib/yum/yumdb/p/06a4fa049dd3ab93135eb7126d8d2575807f3efc-p11-kit-0.23.5-3.amzn2.0.2-x86_64/var_awsregion +var/lib/yum/yumdb/p/06a4fa049dd3ab93135eb7126d8d2575807f3efc-p11-kit-0.23.5-3.amzn2.0.2-x86_64/var_product +var/lib/yum/yumdb/p/06a4fa049dd3ab93135eb7126d8d2575807f3efc-p11-kit-0.23.5-3.amzn2.0.2-x86_64/var_target +var/lib/yum/yumdb/p/06a4fa049dd3ab93135eb7126d8d2575807f3efc-p11-kit-0.23.5-3.amzn2.0.2-x86_64/var_uuid +var/lib/yum/yumdb/p/4d2ab69e625c5f687cdae3ed041b2f814cb03425-p11-kit-trust-0.23.5-3.amzn2.0.2-x86_64/ +var/lib/yum/yumdb/p/4d2ab69e625c5f687cdae3ed041b2f814cb03425-p11-kit-trust-0.23.5-3.amzn2.0.2-x86_64/checksum_data +var/lib/yum/yumdb/p/4d2ab69e625c5f687cdae3ed041b2f814cb03425-p11-kit-trust-0.23.5-3.amzn2.0.2-x86_64/checksum_type +var/lib/yum/yumdb/p/4d2ab69e625c5f687cdae3ed041b2f814cb03425-p11-kit-trust-0.23.5-3.amzn2.0.2-x86_64/command_line +var/lib/yum/yumdb/p/4d2ab69e625c5f687cdae3ed041b2f814cb03425-p11-kit-trust-0.23.5-3.amzn2.0.2-x86_64/from_repo +var/lib/yum/yumdb/p/4d2ab69e625c5f687cdae3ed041b2f814cb03425-p11-kit-trust-0.23.5-3.amzn2.0.2-x86_64/from_repo_revision +var/lib/yum/yumdb/p/4d2ab69e625c5f687cdae3ed041b2f814cb03425-p11-kit-trust-0.23.5-3.amzn2.0.2-x86_64/from_repo_timestamp +var/lib/yum/yumdb/p/4d2ab69e625c5f687cdae3ed041b2f814cb03425-p11-kit-trust-0.23.5-3.amzn2.0.2-x86_64/installed_by +var/lib/yum/yumdb/p/4d2ab69e625c5f687cdae3ed041b2f814cb03425-p11-kit-trust-0.23.5-3.amzn2.0.2-x86_64/origin_url +var/lib/yum/yumdb/p/4d2ab69e625c5f687cdae3ed041b2f814cb03425-p11-kit-trust-0.23.5-3.amzn2.0.2-x86_64/reason +var/lib/yum/yumdb/p/4d2ab69e625c5f687cdae3ed041b2f814cb03425-p11-kit-trust-0.23.5-3.amzn2.0.2-x86_64/releasever +var/lib/yum/yumdb/p/4d2ab69e625c5f687cdae3ed041b2f814cb03425-p11-kit-trust-0.23.5-3.amzn2.0.2-x86_64/var_awsdomain +var/lib/yum/yumdb/p/4d2ab69e625c5f687cdae3ed041b2f814cb03425-p11-kit-trust-0.23.5-3.amzn2.0.2-x86_64/var_awsregion +var/lib/yum/yumdb/p/4d2ab69e625c5f687cdae3ed041b2f814cb03425-p11-kit-trust-0.23.5-3.amzn2.0.2-x86_64/var_product +var/lib/yum/yumdb/p/4d2ab69e625c5f687cdae3ed041b2f814cb03425-p11-kit-trust-0.23.5-3.amzn2.0.2-x86_64/var_target +var/lib/yum/yumdb/p/4d2ab69e625c5f687cdae3ed041b2f814cb03425-p11-kit-trust-0.23.5-3.amzn2.0.2-x86_64/var_uuid +var/lib/yum/yumdb/p/cd5c0a9a33d1ee4fc15aeb60ea0527391a975cda-popt-1.13-16.amzn2.0.2-x86_64/ +var/lib/yum/yumdb/p/cd5c0a9a33d1ee4fc15aeb60ea0527391a975cda-popt-1.13-16.amzn2.0.2-x86_64/checksum_data +var/lib/yum/yumdb/p/cd5c0a9a33d1ee4fc15aeb60ea0527391a975cda-popt-1.13-16.amzn2.0.2-x86_64/checksum_type +var/lib/yum/yumdb/p/cd5c0a9a33d1ee4fc15aeb60ea0527391a975cda-popt-1.13-16.amzn2.0.2-x86_64/command_line +var/lib/yum/yumdb/p/cd5c0a9a33d1ee4fc15aeb60ea0527391a975cda-popt-1.13-16.amzn2.0.2-x86_64/from_repo +var/lib/yum/yumdb/p/cd5c0a9a33d1ee4fc15aeb60ea0527391a975cda-popt-1.13-16.amzn2.0.2-x86_64/from_repo_revision +var/lib/yum/yumdb/p/cd5c0a9a33d1ee4fc15aeb60ea0527391a975cda-popt-1.13-16.amzn2.0.2-x86_64/from_repo_timestamp +var/lib/yum/yumdb/p/cd5c0a9a33d1ee4fc15aeb60ea0527391a975cda-popt-1.13-16.amzn2.0.2-x86_64/installed_by +var/lib/yum/yumdb/p/cd5c0a9a33d1ee4fc15aeb60ea0527391a975cda-popt-1.13-16.amzn2.0.2-x86_64/origin_url +var/lib/yum/yumdb/p/cd5c0a9a33d1ee4fc15aeb60ea0527391a975cda-popt-1.13-16.amzn2.0.2-x86_64/reason +var/lib/yum/yumdb/p/cd5c0a9a33d1ee4fc15aeb60ea0527391a975cda-popt-1.13-16.amzn2.0.2-x86_64/releasever +var/lib/yum/yumdb/p/cd5c0a9a33d1ee4fc15aeb60ea0527391a975cda-popt-1.13-16.amzn2.0.2-x86_64/var_awsdomain +var/lib/yum/yumdb/p/cd5c0a9a33d1ee4fc15aeb60ea0527391a975cda-popt-1.13-16.amzn2.0.2-x86_64/var_awsregion +var/lib/yum/yumdb/p/cd5c0a9a33d1ee4fc15aeb60ea0527391a975cda-popt-1.13-16.amzn2.0.2-x86_64/var_product +var/lib/yum/yumdb/p/cd5c0a9a33d1ee4fc15aeb60ea0527391a975cda-popt-1.13-16.amzn2.0.2-x86_64/var_target +var/lib/yum/yumdb/p/cd5c0a9a33d1ee4fc15aeb60ea0527391a975cda-popt-1.13-16.amzn2.0.2-x86_64/var_uuid +var/lib/yum/yumdb/p/f92ca6f8626bce847854023c5823242c7b972791-pcre-8.32-17.amzn2.0.2-x86_64/ +var/lib/yum/yumdb/p/f92ca6f8626bce847854023c5823242c7b972791-pcre-8.32-17.amzn2.0.2-x86_64/checksum_data +var/lib/yum/yumdb/p/f92ca6f8626bce847854023c5823242c7b972791-pcre-8.32-17.amzn2.0.2-x86_64/checksum_type +var/lib/yum/yumdb/p/f92ca6f8626bce847854023c5823242c7b972791-pcre-8.32-17.amzn2.0.2-x86_64/command_line +var/lib/yum/yumdb/p/f92ca6f8626bce847854023c5823242c7b972791-pcre-8.32-17.amzn2.0.2-x86_64/from_repo +var/lib/yum/yumdb/p/f92ca6f8626bce847854023c5823242c7b972791-pcre-8.32-17.amzn2.0.2-x86_64/from_repo_revision +var/lib/yum/yumdb/p/f92ca6f8626bce847854023c5823242c7b972791-pcre-8.32-17.amzn2.0.2-x86_64/from_repo_timestamp +var/lib/yum/yumdb/p/f92ca6f8626bce847854023c5823242c7b972791-pcre-8.32-17.amzn2.0.2-x86_64/installed_by +var/lib/yum/yumdb/p/f92ca6f8626bce847854023c5823242c7b972791-pcre-8.32-17.amzn2.0.2-x86_64/origin_url +var/lib/yum/yumdb/p/f92ca6f8626bce847854023c5823242c7b972791-pcre-8.32-17.amzn2.0.2-x86_64/reason +var/lib/yum/yumdb/p/f92ca6f8626bce847854023c5823242c7b972791-pcre-8.32-17.amzn2.0.2-x86_64/releasever +var/lib/yum/yumdb/p/f92ca6f8626bce847854023c5823242c7b972791-pcre-8.32-17.amzn2.0.2-x86_64/var_awsdomain +var/lib/yum/yumdb/p/f92ca6f8626bce847854023c5823242c7b972791-pcre-8.32-17.amzn2.0.2-x86_64/var_awsregion +var/lib/yum/yumdb/p/f92ca6f8626bce847854023c5823242c7b972791-pcre-8.32-17.amzn2.0.2-x86_64/var_product +var/lib/yum/yumdb/p/f92ca6f8626bce847854023c5823242c7b972791-pcre-8.32-17.amzn2.0.2-x86_64/var_target +var/lib/yum/yumdb/p/f92ca6f8626bce847854023c5823242c7b972791-pcre-8.32-17.amzn2.0.2-x86_64/var_uuid +var/lib/yum/yumdb/s/ +var/lib/yum/yumdb/s/2a1614add581dc1f5554d85e2a5eb9270e6c18c1-setup-2.8.71-10.amzn2-noarch/ +var/lib/yum/yumdb/s/2a1614add581dc1f5554d85e2a5eb9270e6c18c1-setup-2.8.71-10.amzn2-noarch/checksum_data +var/lib/yum/yumdb/s/2a1614add581dc1f5554d85e2a5eb9270e6c18c1-setup-2.8.71-10.amzn2-noarch/checksum_type +var/lib/yum/yumdb/s/2a1614add581dc1f5554d85e2a5eb9270e6c18c1-setup-2.8.71-10.amzn2-noarch/command_line +var/lib/yum/yumdb/s/2a1614add581dc1f5554d85e2a5eb9270e6c18c1-setup-2.8.71-10.amzn2-noarch/from_repo +var/lib/yum/yumdb/s/2a1614add581dc1f5554d85e2a5eb9270e6c18c1-setup-2.8.71-10.amzn2-noarch/from_repo_revision +var/lib/yum/yumdb/s/2a1614add581dc1f5554d85e2a5eb9270e6c18c1-setup-2.8.71-10.amzn2-noarch/from_repo_timestamp +var/lib/yum/yumdb/s/2a1614add581dc1f5554d85e2a5eb9270e6c18c1-setup-2.8.71-10.amzn2-noarch/installed_by +var/lib/yum/yumdb/s/2a1614add581dc1f5554d85e2a5eb9270e6c18c1-setup-2.8.71-10.amzn2-noarch/origin_url +var/lib/yum/yumdb/s/2a1614add581dc1f5554d85e2a5eb9270e6c18c1-setup-2.8.71-10.amzn2-noarch/reason +var/lib/yum/yumdb/s/2a1614add581dc1f5554d85e2a5eb9270e6c18c1-setup-2.8.71-10.amzn2-noarch/releasever +var/lib/yum/yumdb/s/2a1614add581dc1f5554d85e2a5eb9270e6c18c1-setup-2.8.71-10.amzn2-noarch/var_awsdomain +var/lib/yum/yumdb/s/2a1614add581dc1f5554d85e2a5eb9270e6c18c1-setup-2.8.71-10.amzn2-noarch/var_awsregion +var/lib/yum/yumdb/s/2a1614add581dc1f5554d85e2a5eb9270e6c18c1-setup-2.8.71-10.amzn2-noarch/var_product +var/lib/yum/yumdb/s/2a1614add581dc1f5554d85e2a5eb9270e6c18c1-setup-2.8.71-10.amzn2-noarch/var_target +var/lib/yum/yumdb/s/2a1614add581dc1f5554d85e2a5eb9270e6c18c1-setup-2.8.71-10.amzn2-noarch/var_uuid +var/lib/yum/yumdb/s/cfb233165aa1699bf653b8e2084d60c134cc8cec-sed-4.2.2-5.amzn2.0.2-x86_64/ +var/lib/yum/yumdb/s/cfb233165aa1699bf653b8e2084d60c134cc8cec-sed-4.2.2-5.amzn2.0.2-x86_64/checksum_data +var/lib/yum/yumdb/s/cfb233165aa1699bf653b8e2084d60c134cc8cec-sed-4.2.2-5.amzn2.0.2-x86_64/checksum_type +var/lib/yum/yumdb/s/cfb233165aa1699bf653b8e2084d60c134cc8cec-sed-4.2.2-5.amzn2.0.2-x86_64/command_line +var/lib/yum/yumdb/s/cfb233165aa1699bf653b8e2084d60c134cc8cec-sed-4.2.2-5.amzn2.0.2-x86_64/from_repo +var/lib/yum/yumdb/s/cfb233165aa1699bf653b8e2084d60c134cc8cec-sed-4.2.2-5.amzn2.0.2-x86_64/from_repo_revision +var/lib/yum/yumdb/s/cfb233165aa1699bf653b8e2084d60c134cc8cec-sed-4.2.2-5.amzn2.0.2-x86_64/from_repo_timestamp +var/lib/yum/yumdb/s/cfb233165aa1699bf653b8e2084d60c134cc8cec-sed-4.2.2-5.amzn2.0.2-x86_64/installed_by +var/lib/yum/yumdb/s/cfb233165aa1699bf653b8e2084d60c134cc8cec-sed-4.2.2-5.amzn2.0.2-x86_64/origin_url +var/lib/yum/yumdb/s/cfb233165aa1699bf653b8e2084d60c134cc8cec-sed-4.2.2-5.amzn2.0.2-x86_64/reason +var/lib/yum/yumdb/s/cfb233165aa1699bf653b8e2084d60c134cc8cec-sed-4.2.2-5.amzn2.0.2-x86_64/releasever +var/lib/yum/yumdb/s/cfb233165aa1699bf653b8e2084d60c134cc8cec-sed-4.2.2-5.amzn2.0.2-x86_64/var_awsdomain +var/lib/yum/yumdb/s/cfb233165aa1699bf653b8e2084d60c134cc8cec-sed-4.2.2-5.amzn2.0.2-x86_64/var_awsregion +var/lib/yum/yumdb/s/cfb233165aa1699bf653b8e2084d60c134cc8cec-sed-4.2.2-5.amzn2.0.2-x86_64/var_product +var/lib/yum/yumdb/s/cfb233165aa1699bf653b8e2084d60c134cc8cec-sed-4.2.2-5.amzn2.0.2-x86_64/var_target +var/lib/yum/yumdb/s/cfb233165aa1699bf653b8e2084d60c134cc8cec-sed-4.2.2-5.amzn2.0.2-x86_64/var_uuid +var/lib/yum/yumdb/s/f665c1cb1163ad21ab611daadab4874c66d0b29f-system-release-2-10.amzn2-x86_64/ +var/lib/yum/yumdb/s/f665c1cb1163ad21ab611daadab4874c66d0b29f-system-release-2-10.amzn2-x86_64/checksum_data +var/lib/yum/yumdb/s/f665c1cb1163ad21ab611daadab4874c66d0b29f-system-release-2-10.amzn2-x86_64/checksum_type +var/lib/yum/yumdb/s/f665c1cb1163ad21ab611daadab4874c66d0b29f-system-release-2-10.amzn2-x86_64/command_line +var/lib/yum/yumdb/s/f665c1cb1163ad21ab611daadab4874c66d0b29f-system-release-2-10.amzn2-x86_64/from_repo +var/lib/yum/yumdb/s/f665c1cb1163ad21ab611daadab4874c66d0b29f-system-release-2-10.amzn2-x86_64/from_repo_revision +var/lib/yum/yumdb/s/f665c1cb1163ad21ab611daadab4874c66d0b29f-system-release-2-10.amzn2-x86_64/from_repo_timestamp +var/lib/yum/yumdb/s/f665c1cb1163ad21ab611daadab4874c66d0b29f-system-release-2-10.amzn2-x86_64/installed_by +var/lib/yum/yumdb/s/f665c1cb1163ad21ab611daadab4874c66d0b29f-system-release-2-10.amzn2-x86_64/origin_url +var/lib/yum/yumdb/s/f665c1cb1163ad21ab611daadab4874c66d0b29f-system-release-2-10.amzn2-x86_64/reason +var/lib/yum/yumdb/s/f665c1cb1163ad21ab611daadab4874c66d0b29f-system-release-2-10.amzn2-x86_64/releasever +var/lib/yum/yumdb/s/f665c1cb1163ad21ab611daadab4874c66d0b29f-system-release-2-10.amzn2-x86_64/var_awsdomain +var/lib/yum/yumdb/s/f665c1cb1163ad21ab611daadab4874c66d0b29f-system-release-2-10.amzn2-x86_64/var_awsregion +var/lib/yum/yumdb/s/f665c1cb1163ad21ab611daadab4874c66d0b29f-system-release-2-10.amzn2-x86_64/var_product +var/lib/yum/yumdb/s/f665c1cb1163ad21ab611daadab4874c66d0b29f-system-release-2-10.amzn2-x86_64/var_target +var/lib/yum/yumdb/s/f665c1cb1163ad21ab611daadab4874c66d0b29f-system-release-2-10.amzn2-x86_64/var_uuid +var/lib/yum/yumdb/t/ +var/lib/yum/yumdb/t/95bee05b2a022a0d24fb86160571e2a1658d9288-tzdata-2018i-1.amzn2-noarch/ +var/lib/yum/yumdb/t/95bee05b2a022a0d24fb86160571e2a1658d9288-tzdata-2018i-1.amzn2-noarch/checksum_data +var/lib/yum/yumdb/t/95bee05b2a022a0d24fb86160571e2a1658d9288-tzdata-2018i-1.amzn2-noarch/checksum_type +var/lib/yum/yumdb/t/95bee05b2a022a0d24fb86160571e2a1658d9288-tzdata-2018i-1.amzn2-noarch/command_line +var/lib/yum/yumdb/t/95bee05b2a022a0d24fb86160571e2a1658d9288-tzdata-2018i-1.amzn2-noarch/from_repo +var/lib/yum/yumdb/t/95bee05b2a022a0d24fb86160571e2a1658d9288-tzdata-2018i-1.amzn2-noarch/from_repo_revision +var/lib/yum/yumdb/t/95bee05b2a022a0d24fb86160571e2a1658d9288-tzdata-2018i-1.amzn2-noarch/from_repo_timestamp +var/lib/yum/yumdb/t/95bee05b2a022a0d24fb86160571e2a1658d9288-tzdata-2018i-1.amzn2-noarch/installed_by +var/lib/yum/yumdb/t/95bee05b2a022a0d24fb86160571e2a1658d9288-tzdata-2018i-1.amzn2-noarch/origin_url +var/lib/yum/yumdb/t/95bee05b2a022a0d24fb86160571e2a1658d9288-tzdata-2018i-1.amzn2-noarch/reason +var/lib/yum/yumdb/t/95bee05b2a022a0d24fb86160571e2a1658d9288-tzdata-2018i-1.amzn2-noarch/releasever +var/lib/yum/yumdb/t/95bee05b2a022a0d24fb86160571e2a1658d9288-tzdata-2018i-1.amzn2-noarch/var_awsdomain +var/lib/yum/yumdb/t/95bee05b2a022a0d24fb86160571e2a1658d9288-tzdata-2018i-1.amzn2-noarch/var_awsregion +var/lib/yum/yumdb/t/95bee05b2a022a0d24fb86160571e2a1658d9288-tzdata-2018i-1.amzn2-noarch/var_product +var/lib/yum/yumdb/t/95bee05b2a022a0d24fb86160571e2a1658d9288-tzdata-2018i-1.amzn2-noarch/var_target +var/lib/yum/yumdb/t/95bee05b2a022a0d24fb86160571e2a1658d9288-tzdata-2018i-1.amzn2-noarch/var_uuid +var/lib/yum/yumdb/z/ +var/lib/yum/yumdb/z/53438c664cc7f5a896e9a949326aeea69d4512cd-zlib-1.2.7-17.amzn2.0.2-x86_64/ +var/lib/yum/yumdb/z/53438c664cc7f5a896e9a949326aeea69d4512cd-zlib-1.2.7-17.amzn2.0.2-x86_64/checksum_data +var/lib/yum/yumdb/z/53438c664cc7f5a896e9a949326aeea69d4512cd-zlib-1.2.7-17.amzn2.0.2-x86_64/checksum_type +var/lib/yum/yumdb/z/53438c664cc7f5a896e9a949326aeea69d4512cd-zlib-1.2.7-17.amzn2.0.2-x86_64/command_line +var/lib/yum/yumdb/z/53438c664cc7f5a896e9a949326aeea69d4512cd-zlib-1.2.7-17.amzn2.0.2-x86_64/from_repo +var/lib/yum/yumdb/z/53438c664cc7f5a896e9a949326aeea69d4512cd-zlib-1.2.7-17.amzn2.0.2-x86_64/from_repo_revision +var/lib/yum/yumdb/z/53438c664cc7f5a896e9a949326aeea69d4512cd-zlib-1.2.7-17.amzn2.0.2-x86_64/from_repo_timestamp +var/lib/yum/yumdb/z/53438c664cc7f5a896e9a949326aeea69d4512cd-zlib-1.2.7-17.amzn2.0.2-x86_64/installed_by +var/lib/yum/yumdb/z/53438c664cc7f5a896e9a949326aeea69d4512cd-zlib-1.2.7-17.amzn2.0.2-x86_64/origin_url +var/lib/yum/yumdb/z/53438c664cc7f5a896e9a949326aeea69d4512cd-zlib-1.2.7-17.amzn2.0.2-x86_64/reason +var/lib/yum/yumdb/z/53438c664cc7f5a896e9a949326aeea69d4512cd-zlib-1.2.7-17.amzn2.0.2-x86_64/releasever +var/lib/yum/yumdb/z/53438c664cc7f5a896e9a949326aeea69d4512cd-zlib-1.2.7-17.amzn2.0.2-x86_64/var_awsdomain +var/lib/yum/yumdb/z/53438c664cc7f5a896e9a949326aeea69d4512cd-zlib-1.2.7-17.amzn2.0.2-x86_64/var_awsregion +var/lib/yum/yumdb/z/53438c664cc7f5a896e9a949326aeea69d4512cd-zlib-1.2.7-17.amzn2.0.2-x86_64/var_product +var/lib/yum/yumdb/z/53438c664cc7f5a896e9a949326aeea69d4512cd-zlib-1.2.7-17.amzn2.0.2-x86_64/var_target +var/lib/yum/yumdb/z/53438c664cc7f5a896e9a949326aeea69d4512cd-zlib-1.2.7-17.amzn2.0.2-x86_64/var_uuid +var/local/ +var/lock +var/log/ +var/mail +var/nis/ +var/opt/ +var/preserve/ +var/rapid/ +var/run +var/runtime/ +var/spool/ +var/spool/lpd/ +var/spool/mail/ +var/task/ +var/tmp/ +var/tracer/ +var/yp/ diff --git a/base/base-2/missing.txt b/base/base-2/missing.txt new file mode 100644 index 00000000..75028323 --- /dev/null +++ b/base/base-2/missing.txt @@ -0,0 +1,10 @@ +/etc/securetty +/etc/shadow +/etc/gshadow +/var/log/yum.log +/var/lib/yum/history/2019-04-17/1 +/var/lib/yum/history/history-2019-04-17.sqlite +/var/cache/ldconfig +/usr/sbin/build-locale-archive +/usr/sbin/glibc_post_upgrade.x86_64 +/root/ diff --git a/base/base-2/packages.txt b/base/base-2/packages.txt new file mode 100644 index 00000000..d4ef293b --- /dev/null +++ b/base/base-2/packages.txt @@ -0,0 +1,42 @@ +basesystem-10.0-7.amzn2.0.1.noarch +bash-4.2.46-30.amzn2.x86_64 +ca-certificates-2018.2.22-70.0.amzn2.noarch +chkconfig-1.7.4-1.amzn2.0.2.x86_64 +coreutils-8.22-21.amzn2.x86_64 +filesystem-3.2-25.amzn2.0.4.x86_64 +gawk-4.0.2-4.amzn2.1.2.x86_64 +glibc-2.26-32.amzn2.0.1.x86_64 +glibc-common-2.26-32.amzn2.0.1.x86_64 +glibc-minimal-langpack-2.26-32.amzn2.0.1.x86_64 +gmp-6.0.0-15.amzn2.0.2.x86_64 +grep-2.20-3.amzn2.0.2.x86_64 +info-5.1-5.amzn2.x86_64 +keyutils-libs-1.5.8-3.amzn2.0.2.x86_64 +krb5-libs-1.15.1-20.amzn2.0.1.x86_64 +libacl-2.2.51-14.amzn2.x86_64 +libattr-2.4.46-12.amzn2.0.2.x86_64 +libcap-2.22-9.amzn2.0.2.x86_64 +libcom_err-1.42.9-12.amzn2.0.2.x86_64 +libffi-3.0.13-18.amzn2.0.2.x86_64 +libgcc-7.3.1-5.amzn2.0.2.x86_64 +libselinux-2.5-12.amzn2.0.2.x86_64 +libsepol-2.5-8.1.amzn2.0.2.x86_64 +libstdc++-7.3.1-5.amzn2.0.2.x86_64 +libtasn1-4.10-1.amzn2.0.2.x86_64 +libverto-0.2.5-4.amzn2.0.2.x86_64 +ncurses-6.0-8.20170212.amzn2.1.2.x86_64 +ncurses-base-6.0-8.20170212.amzn2.1.2.noarch +ncurses-libs-6.0-8.20170212.amzn2.1.2.x86_64 +nspr-4.19.0-1.amzn2.x86_64 +nss-softokn-freebl-3.36.0-5.amzn2.x86_64 +nss-util-3.36.0-1.amzn2.x86_64 +openssl-libs-1.0.2k-16.amzn2.1.1.x86_64 +p11-kit-0.23.5-3.amzn2.0.2.x86_64 +p11-kit-trust-0.23.5-3.amzn2.0.2.x86_64 +pcre-8.32-17.amzn2.0.2.x86_64 +popt-1.13-16.amzn2.0.2.x86_64 +sed-4.2.2-5.amzn2.0.2.x86_64 +setup-2.8.71-10.amzn2.noarch +system-release-2-10.amzn2.x86_64 +tzdata-2018i-1.amzn2.noarch +zlib-1.2.7-17.amzn2.0.2.x86_64 diff --git a/base/build-2/Dockerfile b/base/build-2/Dockerfile new file mode 100644 index 00000000..9c373e3c --- /dev/null +++ b/base/build-2/Dockerfile @@ -0,0 +1,22 @@ +FROM amazonlinux:2 + +RUN mkdir -p /tmp/etc && \ + cp /etc/yum.conf /tmp/etc/ && \ + cp -R /etc/yum /tmp/etc/ && \ + echo 2 > /tmp/etc/yum/vars/releasever && \ + yum install -y --installroot=/tmp yum yum-plugin-ovl yum-plugin-priorities + + +FROM lambci/lambda-base-2 + +ENV PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/bin + +COPY --from=0 /tmp / + +RUN yum install -y glibc-langpack-en && \ + yum groupinstall -y development && \ + yum install -y which clang cmake python-devel python3-devel amazon-linux-extras && \ + amazon-linux-extras install -y docker && \ + pip3 install -U pip setuptools --no-cache-dir && \ + yum clean all && \ + rm -rf /var/cache/yum diff --git a/base/build-all.sh b/base/build-all.sh index fbe07bab..e33bb3c3 100755 --- a/base/build-all.sh +++ b/base/build-all.sh @@ -1,6 +1,6 @@ #!/bin/bash -RUNTIMES="provided nodejs4.3 nodejs6.10 nodejs8.10 python2.7 python3.6 python3.7 ruby2.5 java8 go1.x dotnetcore2.0 dotnetcore2.1" +RUNTIMES="provided nodejs4.3 nodejs6.10 nodejs8.10 nodejs10.x python2.7 python3.6 python3.7 ruby2.5 java8 go1.x dotnetcore2.0 dotnetcore2.1" TOP_DIR="${PWD}/.." diff --git a/base/create-base-2.sh b/base/create-base-2.sh new file mode 100755 index 00000000..b776e6a0 --- /dev/null +++ b/base/create-base-2.sh @@ -0,0 +1,7 @@ +#!/bin/bash + +curl -O https://lambci.s3.amazonaws.com/fs/base-2.tgz + +docker build --squash -t lambci/lambda-base-2 -f ./base-2/Dockerfile . + +rm ./base-2.tgz diff --git a/base/create-build-2.sh b/base/create-build-2.sh new file mode 100755 index 00000000..bd848cf6 --- /dev/null +++ b/base/create-build-2.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +docker build --no-cache --squash -t lambci/lambda-base-2:build -f ./build-2/Dockerfile . diff --git a/base/diff.sh b/base/diff.sh index 36015867..d1d937df 100755 --- a/base/diff.sh +++ b/base/diff.sh @@ -1,6 +1,6 @@ #!/bin/bash -RUNTIMES="nodejs4.3 nodejs6.10 nodejs8.10 python2.7 python3.6 python3.7 ruby2.5 java8 go1.x dotnetcore2.0 dotnetcore2.1 provided" +RUNTIMES="provided nodejs4.3 nodejs6.10 nodejs8.10 python2.7 python3.6 python3.7 ruby2.5 java8 go1.x dotnetcore2.0 dotnetcore2.1" rm -rf diff mkdir -p diff diff --git a/base/dump-node10x.js b/base/dump-node10x.js new file mode 100644 index 00000000..a799e472 --- /dev/null +++ b/base/dump-node10x.js @@ -0,0 +1,56 @@ +const fs = require('fs') +const { execSync } = require('child_process') +const AWS = require('aws-sdk') +const s3 = new AWS.S3() + +// Depends on tar-find-layer for the tar/find/xargs binaries +exports.handler = async(event, context) => { + const execOpts = { stdio: 'inherit', maxBuffer: 16 * 1024 * 1024 } + + let filename = 'base-2.tgz' + let cmd = 'tar -cpzf /tmp/' + filename + + ' -C / --exclude=/proc --exclude=/sys --exclude=/dev --exclude=/tmp ' + + '--exclude=/var/task/* --exclude=/var/runtime/* --exclude=/var/lang/* --exclude=/var/rapid/* --exclude=/opt/* ' + + '--numeric-owner --ignore-failed-read /' + + execSync(event.cmd || cmd, execOpts) + if (event.cmd) return + + console.log('Zipping done! Uploading...') + + let data = await s3.upload({ + Bucket: 'lambci', + Key: 'fs/' + filename, + Body: fs.createReadStream('/tmp/' + filename), + ACL: 'public-read', + }).promise() + + filename = 'nodejs10.x.tgz' + cmd = 'tar -cpzf /tmp/' + filename + + ' --numeric-owner --ignore-failed-read /var/runtime /var/lang /var/rapid' + + execSync(cmd, execOpts) + + console.log('Zipping done! Uploading...') + + data = await s3.upload({ + Bucket: 'lambci', + Key: 'fs/' + filename, + Body: fs.createReadStream('/tmp/' + filename), + ACL: 'public-read', + }).promise() + + console.log('Uploading done!') + + console.log(process.execPath) + console.log(process.execArgv) + console.log(process.argv) + console.log(process.cwd()) + console.log(__filename) + console.log(process.env) + execSync('echo /proc/1/environ; xargs -n 1 -0 < /proc/1/environ', execOpts) + execSync("bash -O extglob -c 'for cmd in /proc/+([0-9])/cmdline; do echo $cmd; xargs -n 1 -0 < $cmd; done'", execOpts) + console.log(context) + + return data +} diff --git a/base/dump.sh b/base/dump.sh index 00ce0ebb..a33ceb1d 100755 --- a/base/dump.sh +++ b/base/dump.sh @@ -1,6 +1,6 @@ #!/bin/bash -RUNTIMES="node43 node610 node810 python27 python36 python37 ruby25 java8 go1x dotnetcore20 dotnetcore21 provided" +RUNTIMES="node43 node610 node810 node10x python27 python36 python37 ruby25 java8 go1x dotnetcore20 dotnetcore21 provided" for RUNTIME in $RUNTIMES; do echo $RUNTIME diff --git a/base/publish-all.sh b/base/publish-all.sh index 02a3e7de..8d06d475 100755 --- a/base/publish-all.sh +++ b/base/publish-all.sh @@ -1,8 +1,9 @@ #!/bin/bash -RUNTIMES="provided nodejs4.3 nodejs6.10 nodejs8.10 python2.7 python3.6 python3.7 ruby2.5 java8 go1.x dotnetcore2.0 dotnetcore2.1" +RUNTIMES="provided nodejs4.3 nodejs6.10 nodejs8.10 nodejs10.x python2.7 python3.6 python3.7 ruby2.5 java8 go1.x dotnetcore2.0 dotnetcore2.1" docker push lambci/lambda-base +docker push lambci/lambda-base-2 for RUNTIME in $RUNTIMES; do echo $RUNTIME @@ -10,6 +11,7 @@ for RUNTIME in $RUNTIMES; do done docker push lambci/lambda-base:build +docker push lambci/lambda-base-2:build for RUNTIME in $RUNTIMES; do echo build-${RUNTIME} diff --git a/base/tag-all.sh b/base/tag-all.sh index bb619250..97a68682 100755 --- a/base/tag-all.sh +++ b/base/tag-all.sh @@ -1,6 +1,6 @@ #!/bin/bash -RUNTIMES="provided nodejs4.3 nodejs6.10 nodejs8.10 python2.7 python3.6 python3.7 ruby2.5 java8 go1.x dotnetcore2.0 dotnetcore2.1" +RUNTIMES="provided nodejs4.3 nodejs6.10 nodejs8.10 nodejs10.x python2.7 python3.6 python3.7 ruby2.5 java8 go1.x dotnetcore2.0 dotnetcore2.1" git tag -f latest diff --git a/base/tar-find-layer/Dockerfile b/base/tar-find-layer/Dockerfile new file mode 100644 index 00000000..6191749b --- /dev/null +++ b/base/tar-find-layer/Dockerfile @@ -0,0 +1,26 @@ +FROM lambci/lambda-base-2 + +# We don't have `find` on Lambda anymore, so use bash to simulate find ! -type d +RUN find() { local d; for d in "$@"; do ls -1A "$d" | while read f; do i="$d/$f"; [ -d "$i" ] && [ ! -L "$i" ] && find "$i" || echo $i; done; done; } && \ + cd /usr && \ + find bin lib64 | sort > /fs.txt + + +FROM lambci/lambda-base-2:build + +COPY --from=0 /fs.txt / + +RUN mkdir -p /tmp/etc && \ + cp /etc/yum.conf /tmp/etc/ && \ + cp -R /etc/yum /tmp/etc/ && \ + echo 2 > /tmp/etc/yum/vars/releasever && \ + yum install -y --installroot=/tmp findutils gzip tar && \ + cd /tmp/usr && \ + bash -c 'comm -13 /fs.txt <(find bin lib64 ! -type d | sort)' | tar -c -T - | tar -x -C /opt && \ + cd /opt && \ + rm -rf lib && \ + mv lib64 lib && \ + zip -yr /tmp/layer.zip bin lib + +# docker build -t tar-ps-layer . +# docker run --rm tar-ps-layer cat /tmp/layer.zip > layer.zip diff --git a/base/test-all.sh b/base/test-all.sh index a8aefafc..aac1c26a 100755 --- a/base/test-all.sh +++ b/base/test-all.sh @@ -9,6 +9,7 @@ docker run --rm -v "$PWD":/var/task lambci/lambda:nodejs8.10 cd ${EXAMPLES_DIR}/nodejs8.10 docker run --rm -v "$PWD":/var/task lambci/lambda:nodejs8.10 +docker run --rm -v "$PWD":/var/task lambci/lambda:nodejs10.x index.handler cd ${EXAMPLES_DIR}/nodejs-native-module docker run --rm -v "$PWD":/var/task lambci/lambda:build-nodejs4.3 diff --git a/nodejs10.x/build/Dockerfile b/nodejs10.x/build/Dockerfile new file mode 100644 index 00000000..d17bf95b --- /dev/null +++ b/nodejs10.x/build/Dockerfile @@ -0,0 +1,13 @@ +FROM lambci/lambda-base-2:build + +ENV PATH=/var/lang/bin:$PATH \ + LD_LIBRARY_PATH=/var/lang/lib:$LD_LIBRARY_PATH \ + AWS_EXECUTION_ENV=AWS_Lambda_nodejs10.x \ + NODE_PATH=/opt/nodejs/node10/node_modules:/opt/nodejs/node_modules:/var/runtime/node_modules + +RUN rm -rf /var/runtime /var/lang /var/rapid && \ + curl https://lambci.s3.amazonaws.com/fs/nodejs10.x.tgz | tar -zx -C / + +# Add these as a separate layer as they get updated frequently +RUN pip3 install -U pip setuptools --no-cache-dir && \ + pip install -U awscli boto3 aws-sam-cli==0.15.0 aws-lambda-builders==0.3.0 --no-cache-dir diff --git a/nodejs10.x/run/Dockerfile b/nodejs10.x/run/Dockerfile new file mode 100644 index 00000000..50e783fc --- /dev/null +++ b/nodejs10.x/run/Dockerfile @@ -0,0 +1,21 @@ +FROM lambci/lambda-base + +RUN curl https://lambci.s3.amazonaws.com/fs/nodejs10.x.tgz | tar -zx -C /opt + + +FROM lambci/lambda:provided + + +FROM lambci/lambda-base-2 + +ENV PATH=/var/lang/bin:$PATH \ + LD_LIBRARY_PATH=/var/lang/lib:$LD_LIBRARY_PATH \ + AWS_EXECUTION_ENV=AWS_Lambda_nodejs10.x + +COPY --from=0 /opt/* /var/ + +COPY --from=1 /var/runtime/init /var/rapid/init + +USER sbx_user1051 + +ENTRYPOINT ["/var/rapid/init", "--bootstrap", "/var/runtime/bootstrap"] From 69a09489ed84229c6852382a3b490af9c2608587 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Mon, 13 May 2019 15:52:40 -0400 Subject: [PATCH 017/271] Update AWS SAM CLI to 0.16.0 --- dotnetcore2.0/build/Dockerfile | 2 +- dotnetcore2.1/build/Dockerfile | 2 +- go1.x/build/Dockerfile | 2 +- java8/build/Dockerfile | 2 +- nodejs10.x/build/Dockerfile | 2 +- nodejs4.3/build/Dockerfile | 2 +- nodejs6.10/build/Dockerfile | 2 +- nodejs8.10/build/Dockerfile | 2 +- provided/build/Dockerfile | 2 +- python2.7/build/Dockerfile | 2 +- python3.6/build/Dockerfile | 2 +- python3.7/build/Dockerfile | 2 +- ruby2.5/build/Dockerfile | 2 +- 13 files changed, 13 insertions(+), 13 deletions(-) diff --git a/dotnetcore2.0/build/Dockerfile b/dotnetcore2.0/build/Dockerfile index 4ebd5e4b..90846aa3 100644 --- a/dotnetcore2.0/build/Dockerfile +++ b/dotnetcore2.0/build/Dockerfile @@ -19,6 +19,6 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ - pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.15.0 aws-lambda-builders==0.3.0 --no-cache-dir + pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.16.0 aws-lambda-builders==0.3.0 --no-cache-dir CMD ["dotnet", "build"] diff --git a/dotnetcore2.1/build/Dockerfile b/dotnetcore2.1/build/Dockerfile index 710abff4..89410ba9 100644 --- a/dotnetcore2.1/build/Dockerfile +++ b/dotnetcore2.1/build/Dockerfile @@ -19,6 +19,6 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ - pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.15.0 aws-lambda-builders==0.3.0 --no-cache-dir + pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.16.0 aws-lambda-builders==0.3.0 --no-cache-dir CMD ["dotnet", "build"] diff --git a/go1.x/build/Dockerfile b/go1.x/build/Dockerfile index 1d7d8b02..fb1fc47e 100644 --- a/go1.x/build/Dockerfile +++ b/go1.x/build/Dockerfile @@ -16,6 +16,6 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ - pip install -U awscli boto3 aws-sam-cli==0.15.0 aws-lambda-builders==0.3.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.16.0 aws-lambda-builders==0.3.0 --no-cache-dir CMD ["dep", "ensure"] diff --git a/java8/build/Dockerfile b/java8/build/Dockerfile index ac2d4a4b..da90de7c 100644 --- a/java8/build/Dockerfile +++ b/java8/build/Dockerfile @@ -16,4 +16,4 @@ ENV PATH="/usr/local/gradle/gradle-5.2/bin:/usr/local/maven/apache-maven-3.6.0/b # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ - pip install -U awscli boto3 aws-sam-cli==0.15.0 aws-lambda-builders==0.3.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.16.0 aws-lambda-builders==0.3.0 --no-cache-dir diff --git a/nodejs10.x/build/Dockerfile b/nodejs10.x/build/Dockerfile index d17bf95b..ebb9e427 100644 --- a/nodejs10.x/build/Dockerfile +++ b/nodejs10.x/build/Dockerfile @@ -10,4 +10,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN pip3 install -U pip setuptools --no-cache-dir && \ - pip install -U awscli boto3 aws-sam-cli==0.15.0 aws-lambda-builders==0.3.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.16.0 aws-lambda-builders==0.3.0 --no-cache-dir diff --git a/nodejs4.3/build/Dockerfile b/nodejs4.3/build/Dockerfile index 839b2a4a..26c1754a 100644 --- a/nodejs4.3/build/Dockerfile +++ b/nodejs4.3/build/Dockerfile @@ -11,6 +11,6 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ - pip install -U awscli boto3 aws-sam-cli==0.15.0 aws-lambda-builders==0.3.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.16.0 aws-lambda-builders==0.3.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/nodejs6.10/build/Dockerfile b/nodejs6.10/build/Dockerfile index 721012d0..51b35b43 100644 --- a/nodejs6.10/build/Dockerfile +++ b/nodejs6.10/build/Dockerfile @@ -11,6 +11,6 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ - pip install -U awscli boto3 aws-sam-cli==0.15.0 aws-lambda-builders==0.3.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.16.0 aws-lambda-builders==0.3.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/nodejs8.10/build/Dockerfile b/nodejs8.10/build/Dockerfile index b797238c..afa9d76c 100644 --- a/nodejs8.10/build/Dockerfile +++ b/nodejs8.10/build/Dockerfile @@ -11,6 +11,6 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ - pip install -U awscli boto3 aws-sam-cli==0.15.0 aws-lambda-builders==0.3.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.16.0 aws-lambda-builders==0.3.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/provided/build/Dockerfile b/provided/build/Dockerfile index e8970cc8..87b8933b 100644 --- a/provided/build/Dockerfile +++ b/provided/build/Dockerfile @@ -2,4 +2,4 @@ FROM lambci/lambda-base:build # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ - pip install -U awscli boto3 aws-sam-cli==0.15.0 aws-lambda-builders==0.3.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.16.0 aws-lambda-builders==0.3.0 --no-cache-dir diff --git a/python2.7/build/Dockerfile b/python2.7/build/Dockerfile index 8a0d6459..b225f34e 100644 --- a/python2.7/build/Dockerfile +++ b/python2.7/build/Dockerfile @@ -9,4 +9,4 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ pip install -U virtualenv pipenv --no-cache-dir && \ - pip install -U awscli boto3 aws-sam-cli==0.15.0 aws-lambda-builders==0.3.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.16.0 aws-lambda-builders==0.3.0 --no-cache-dir diff --git a/python3.6/build/Dockerfile b/python3.6/build/Dockerfile index 564d9e25..a5e2d068 100644 --- a/python3.6/build/Dockerfile +++ b/python3.6/build/Dockerfile @@ -19,4 +19,4 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ - pip install -U awscli boto3 aws-sam-cli==0.15.0 aws-lambda-builders==0.3.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.16.0 aws-lambda-builders==0.3.0 --no-cache-dir diff --git a/python3.7/build/Dockerfile b/python3.7/build/Dockerfile index 839ed0e2..701e3155 100644 --- a/python3.7/build/Dockerfile +++ b/python3.7/build/Dockerfile @@ -12,4 +12,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ - pip install -U awscli boto3 aws-sam-cli==0.15.0 aws-lambda-builders==0.3.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.16.0 aws-lambda-builders==0.3.0 --no-cache-dir diff --git a/ruby2.5/build/Dockerfile b/ruby2.5/build/Dockerfile index 82af4d2a..42eff457 100644 --- a/ruby2.5/build/Dockerfile +++ b/ruby2.5/build/Dockerfile @@ -14,4 +14,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ RUN gem update --system --no-document && \ gem install --no-document bundler && \ curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ - pip install -U awscli boto3 aws-sam-cli==0.15.0 aws-lambda-builders==0.3.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.16.0 aws-lambda-builders==0.3.0 --no-cache-dir From e2c23e6d10f6ff423611650cf235340f4d1f9adf Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Sat, 11 May 2019 23:03:08 -0400 Subject: [PATCH 018/271] Update for 2019-05-14 runtime changes --- base/Dockerfile | 4 ++-- base/build/Dockerfile | 27 +++++----------------- base/dump-python36.py | 2 +- base/dump-python37.py | 2 +- base/test-all.sh | 2 +- examples/nodejs-native-module/package.json | 2 +- examples/nodejs-native-module/test.js | 5 ++-- java8/build/Dockerfile | 2 +- 8 files changed, 15 insertions(+), 31 deletions(-) diff --git a/base/Dockerfile b/base/Dockerfile index 69ae7e93..8cdf775a 100644 --- a/base/Dockerfile +++ b/base/Dockerfile @@ -24,8 +24,8 @@ ENV PATH=/usr/local/bin:/usr/bin/:/bin:/opt/bin \ _X_AMZN_TRACE_ID='Parent=11560be54abce8ed' RUN yum reinstall -y filesystem; \ - rm -rf /var/cache/yum /var/lib/rpm/__db.* && \ - > /var/log/yum.log && \ + yum clean all && \ + rm -rf /var/cache/yum && \ mkdir /tmp && \ chown sbx_user1051:495 /tmp && \ chmod 700 /tmp diff --git a/base/build/Dockerfile b/base/build/Dockerfile index 15ae24d5..da2c2e2f 100644 --- a/base/build/Dockerfile +++ b/base/build/Dockerfile @@ -3,7 +3,6 @@ FROM lambci/lambda-base ENV PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/bin # A couple of packages are either missing critical-ish files, or didn't make it into the tar -# Reinstalling filesystem might not succeed fully, but continue anyway RUN chmod 1777 /tmp && \ /usr/bin/python3 -c "from configparser import SafeConfigParser; \ yum_conf = SafeConfigParser(); \ @@ -14,25 +13,11 @@ f = open('/etc/yum.conf', 'w'); \ yum_conf.write(f); \ f.close();" && \ rpm --rebuilddb && \ - yum install -y --releasever=latest yum-plugin-ovl && \ - yum clean all && \ - yum reinstall -y setup pam shadow-utils audit-libs iptables && \ - yum clean all && \ - yum reinstall -y --releasever=latest glibc glibc-common && \ - yum clean all && \ - yum list installed | grep installed | awk '{print $1}' | xargs yum reinstall -y && \ - yum clean all && \ - yum install -y --releasever=latest glibc-devel libdrm-devel && \ - yum clean all && \ + yum install -y yum-plugin-ovl && \ + yum reinstall -y setup pam shadow-utils audit-libs && \ yum groupinstall -y development && \ - yum install -y clang cmake docker libffi-devel python27-devel python34-devel \ - libmpc-devel mpfr-devel gmp-devel cairo-devel expat-devel libicu-devel lua-devel \ - ncurses-devel readline-devel db4-devel gdbm-devel sqlite-devel keyutils-libs-devel libcom_err-devel && \ - yum clean all && \ - yum install -y --releasever=latest pcre-devel ImageMagick-devel libxml2-devel libxslt-devel && \ - yum install -y --releasever=latest libcurl-devel-$(yum list installed | grep libcurl | awk '{print $2}') && \ - yum install -y --releasever=latest krb5-devel-$(yum list installed | grep krb5 | awk '{print $2}') && \ + yum install -y clang cmake docker python27-devel python36-devel \ + ImageMagick-devel cairo-devel libssh2-devel libxslt-devel libmpc-devel readline-devel db4-devel \ + libffi-devel expat-devel libicu-devel lua-devel gdbm-devel sqlite-devel pcre-devel libcurl-devel && \ yum clean all && \ - yum install -y libssh2-devel && \ - rm -rf /var/cache/yum /var/lib/rpm/__db.* && \ - > /var/log/yum.log + rm -rf /var/cache/yum diff --git a/base/dump-python36.py b/base/dump-python36.py index ae34c129..6a123412 100644 --- a/base/dump-python36.py +++ b/base/dump-python36.py @@ -12,7 +12,7 @@ def lambda_handler(event, context): if 'cmd' in event: - return print(subprocess.check_output(['sh', '-c', event['cmd']])) + return print(subprocess.check_output(['sh', '-c', event['cmd']]).decode('utf-8')) filename = 'python3.6.tgz' diff --git a/base/dump-python37.py b/base/dump-python37.py index 0f25e987..fd9c5dca 100644 --- a/base/dump-python37.py +++ b/base/dump-python37.py @@ -12,7 +12,7 @@ def lambda_handler(event, context): if 'cmd' in event: - return print(subprocess.check_output(['sh', '-c', event['cmd']])) + return print(subprocess.check_output(['sh', '-c', event['cmd']]).decode('utf-8')) filename = 'python3.7.tgz' diff --git a/base/test-all.sh b/base/test-all.sh index aac1c26a..023e2fab 100755 --- a/base/test-all.sh +++ b/base/test-all.sh @@ -12,7 +12,7 @@ docker run --rm -v "$PWD":/var/task lambci/lambda:nodejs8.10 docker run --rm -v "$PWD":/var/task lambci/lambda:nodejs10.x index.handler cd ${EXAMPLES_DIR}/nodejs-native-module -docker run --rm -v "$PWD":/var/task lambci/lambda:build-nodejs4.3 +npm run build npm test cd ${EXAMPLES_DIR}/python diff --git a/examples/nodejs-native-module/package.json b/examples/nodejs-native-module/package.json index c996b394..c6fbc20c 100644 --- a/examples/nodejs-native-module/package.json +++ b/examples/nodejs-native-module/package.json @@ -3,7 +3,7 @@ "version": "1.0.0", "main": "index.js", "scripts": { - "build": "docker run --rm -v \"$PWD\":/var/task lambci/lambda:build-nodejs4.3", + "build": "docker run --rm -v \"$PWD\":/var/task lambci/lambda:build-nodejs6.10 npm rebuild", "test": "node test.js" }, "dependencies": { diff --git a/examples/nodejs-native-module/test.js b/examples/nodejs-native-module/test.js index 70416838..3fc5775d 100644 --- a/examples/nodejs-native-module/test.js +++ b/examples/nodejs-native-module/test.js @@ -1,10 +1,9 @@ var dockerLambda = require('../..') -var match = dockerLambda({event: {password: 'lambda-docker'}}) +var match = dockerLambda({ event: { password: 'lambda-docker' }, dockerImage: 'lambci/lambda:nodejs6.10' }) console.log(match === 'Matches!' ? 'Match Passed' : 'Match Failed: ' + match) - -var nonMatch = dockerLambda({event: {password: 'lambda-mocker'}}) +var nonMatch = dockerLambda({ event: { password: 'lambda-mocker' }, dockerImage: 'lambci/lambda:nodejs6.10' }) console.log(nonMatch === 'NopeNopeNope' ? 'Non-Match Passed' : 'Non-Match Failed: ' + nonMatch) diff --git a/java8/build/Dockerfile b/java8/build/Dockerfile index da90de7c..b0fea600 100644 --- a/java8/build/Dockerfile +++ b/java8/build/Dockerfile @@ -6,7 +6,7 @@ WORKDIR / RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/java8.tgz | tar -zx -C / && \ - yum install -y --releasever=latest java-1.8.0-openjdk-devel-1.8.0.181 && \ + yum install -y java-1.8.0-openjdk-devel && \ mkdir /usr/local/gradle && curl -L -o gradle.zip https://services.gradle.org/distributions/gradle-5.2-bin.zip && \ unzip -d /usr/local/gradle gradle.zip && rm gradle.zip && mkdir /usr/local/maven && \ curl -L http://mirror.metrocast.net/apache/maven/maven-3/3.6.0/binaries/apache-maven-3.6.0-bin.tar.gz | \ From 05534b9667f61da79c000bac12db8ca634188da0 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Tue, 14 May 2019 13:44:58 -0400 Subject: [PATCH 019/271] Update dotnetcore2.1 SDK version to match v2.1.10 --- dotnetcore2.1/build/Dockerfile | 3 ++- .../run/MockBootstraps/lib/Bootstrap.dll | Bin 146432 -> 146432 bytes 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/dotnetcore2.1/build/Dockerfile b/dotnetcore2.1/build/Dockerfile index 89410ba9..4bf39f01 100644 --- a/dotnetcore2.1/build/Dockerfile +++ b/dotnetcore2.1/build/Dockerfile @@ -1,9 +1,10 @@ FROM lambci/lambda-base:build +# Check https://dotnet.microsoft.com/download/dotnet-core/2.1 for versions ENV PATH=/var/lang/bin:$PATH \ LD_LIBRARY_PATH=/var/lang/lib:$LD_LIBRARY_PATH \ AWS_EXECUTION_ENV=AWS_Lambda_dotnetcore2.1 \ - DOTNET_SDK_VERSION=2.1.504 \ + DOTNET_SDK_VERSION=2.1.603 \ DOTNET_CLI_TELEMETRY_OPTOUT=1 \ NUGET_XMLDOC_MODE=skip diff --git a/dotnetcore2.1/run/MockBootstraps/lib/Bootstrap.dll b/dotnetcore2.1/run/MockBootstraps/lib/Bootstrap.dll index 33616baf65fe13e2fe10cb942fb7b2e2773bb597..320566c4fa0ea200bec0e68ffc9588dcbb2b4f28 100644 GIT binary patch delta 7991 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 D3?;5F delta 8108 zcmZ|U30PIt+6VCWT^tS@L_LT{!3hi$aEgOCf(YV(a7INGMG!&7H0ShcbdLldiCW1$ zie#x|Hek+JXb$leQI@Hxr6~&eA=+&ar_j>8Yj`i8x97P&59#mx-?i4e_TFcoeQ4!< zZRLG!-74Klcd-0BxHa+YNY{36aV=&FVxVx|SN(SECkv0a&uI{XlD-}bq z$(4srpHyBf{v_}p2JUdA!iQzVV38|sM1X5uY`nXdJ|Mim>&@5z?@ljd0q8pR>d*_I z;&E&nca4wn4QCL>i@SB=g^T)ou>h|p%KkHcPQ-p#z{SB^ti5;WOlQ`C+*?bD_lYZ2i&8H!JhMFdqH}ehTkUH{a&cJrkn_Oq1 zmNbJma}L_iq~*E31v_a0Z{|BV{crJR&V%pquB1H^Xk@oxCh7S=1KfuBq$6QQ zb_bS`z6>+K9a!lkKC~rU?!qdPw|z2KG06~MWcT1TQb2$K?!h+F$8njK-(UynOx#Sa z3R38Vxt3-)ES0ZCPgu%TO_?#SMt>hp%#&xbQ0pC+XSoj-WLN?-datrPfZX|NzrTd6 zv-}PRNH@lmTK<6J3q+=N{|IWOO5msPH!Y7KbdktPpkKfa%VW4DRSa{24_FX&i$zup z!vl_4+;GTZ5bGDq!>z;RG8B`3X3=43i%wWPu=Nr#uuw~mG%^j1Bumdg(6B4%&_I#( zP?Bd^!@g1_kRNx}qG42vYAs%v$i>$$f%w=Pme!a?;o87^79U(ERj4hD4F+Exf5aoVCaKw*FX6+8ktL{&<2kQtF(LQyxSE_+y);VuyKr33qEJ z43{c|xJUzZ#srd=xvjMe&LRCzi~+h~zElYq#&)y@;2J4)L<6y!vY_}NYasSnCRQkh zTO-1(-ErD-A!ji>91&sdf%X+D{L~a-4Z(F%>imXbsmkPO3d8L!nY%R%_qS-UwHKb1 zs?kiQQPw_qNeS$IcDnb$`%=}gp|=tGV(9Z?y*wwpnxKb%m@29I?uRp^3bpn2K%Om7 z;zuUQ+7GLgU`SU3gyVfuN>2lra7eD0v=CBy>LCJ0ldhQ_U<77K)xg&#BkPX~q)Ier z@6hqq{+LT#7b3KZ^mnQCq;0aYjMObmRPH2wCbNU2{ZiGWtFrPm>AcKpN%x&Hyg{sx z3*IHgNWlwYPbHd54)i87FEc%vv;P6}TP(nC7xRx4Exo@q(P zRZ7}Bd|(DPkSh7W42)f)ni)Fqs&yJBkdg=9;7VTO`ttNRXSI5fZ}g^hIvUrC0gaxX ziN~!ou`6k<&kn90QhC~IKFwVHD9cFOZk>e#m2j~s7-r!RQo&?Bmznf^;9gz{ugDc} zJU<1q(d;Cy?s?ey3|5i)m_M;Tizi+crNtmVPv_$g>x5j8H1kjELVPS$sBKE{vMoZ7 zVv*%(dlL*?2B|`A7S9%=A7#(;Y%zAHYzWVmU|6wy>*i^89xlNM3Oy!vv^|GIX<(;` zUAf{ZyFV`2wiJ^n^BLcZD_LdoVp)ber5bTVZ#^tSzki6<8nJWtEuPD;JLxl&WLgPqVWtK%Mli3ndAM;Ghay%lX=3If*Qu&(4sKdGy zctR>q>o&?{TY=wl@%@X^!M5kIzGYyn?FBTrMBjx_FxlO@5=%EI{Tw*fmWSu0T+kGg zVk^KCB_hj%WZR4l|5lGrZClX3 zg=XpfsckDBkt&9EwiC88{7Q;{xa&E$VJ(#|j5}xBj@et)zza#2ZExd^GNn$b4Yqes z+a~0Kh_Ih*@8SVcLbrRiax8mGWih?{%{%bIcBPqN{^s{F@NK1nu!pvtIQLy4e*I-- zyV-Z)-xOhNc5C|{ENhXUeIGvco+!%}j_a7t0iCr-O~`G)9xI1{>fsjw0O- z2!wCYLc&1gnj|Hj%8Kk~u)N$=|Lr*EhpI%bb{>z>0P(PL9&6M9ZMz-0PEpoidEI^i z&r{Z9*~(Q)N7vTqnT&B*Go6KNa&ysX1Pq)h(7QisW;*pWgDrPL*SBN=+i3_xt<+pmL@GYtw9ep(MDt<_s7=4QCOD=I+(RN22P5eK+OyRMpQ(U)5!!ozq8&J1P9vSTg zhfrtI?WjO#zzC8)8o3gcU=DwhxQ6MZ_Z>n@q)MP5{*e6|p4-jmbn=glylKbmjo5XM zTtZ%m*Rh9G39L>sny;f(su)fVueM*u8Kmae6ZRi*8EM0abM~LGR7#!DU$9K7(KDTY zN%;leQ<=6f$N<0KJ}GCTr#BCO#X}VO^YB;vga)4AUsrG9mz345c+`^wJtKkn0xA2~l+~93|q~z2@Z@1BXuR6e@x7*l;BwD+J9Y~_J zI~YI`t=+{Cl4$KNhLc2V_i!*tv~~~UNTRjha4g9wdixENC0&s2Q)_R=j{E-qRNTh^ zsYcJ}vpiA@nt=G}!3myhv=_IuIDUPP)ezWb7`fIbH}W#4Z{=Pxc6M zFxG~2JtK^(GwIi?r@2B&%?Sgz!llH1Z&(@ID3u3)@Jgo}t0JD^)3~v52gDMEn%IRK zn@tkCaAPY;Vi#^~BZ=>VYcEM`!i`-aiMHL?Pb9G=H+F}V#*em}lfegS!PjKinshxQ ziZ|1VB=+mZLX^Ot{~p1O4OZfNigW1LDyc>knKvsT&EemqTeIC#`EvJd*ik9RSFK)pliz-NWSh3Iv>_dI^xlw^JQ&66m92&n`eX0$hwl=-PvlAH#F#i*k;nJ%mh8y9#XWs33{^s zC0+9{K?plb>f>pGPs+b!^j<3y^kIETL%mJV zmklTF;p)f6kp_VYo@Uvk_Bs=Uv!x_I-i(R8OggBUAcAcr)xe)g{nB>ACS%u9$-r*>!(Ir&+$*=;@Og3`s0i30tR{xMq>ep+hWYwwzQF5DI2i zNGcA{@oYWm>0U!D7WR&k=NkSNv9Jn~iQm;NtV&8;m79_*?6_01MoSNAVpjH@5)^jH zZEIx>r2KA0UN+Y0klM@+Ymm2{g^RqJFHLwaLqf6D}x@{xQHs?n}a2!<4vr9v%zxX=O;@J>_M3p8-W@FteRR+C z>!fAt}+m31d2<7P)X zix6`1d&x$fV7v^~r0L8ir6x^h6KUW)Hv^=z3{suD0Ww(T6P450Y|6%HMUH9gWhpgh zCVTCP%1rjAlrtZ$LXjhrmD9jnzTfHWz!L+rSk)5)v)C6@xtleyEOw4G#a*bLq|=0c zCM9_a-6!3Y(j5^;E#C>ty+mkGg!Zk3x{yAX3MHj_i!73KQYw}-5kzJtMe2kmkp_DR zWs@$*))tVQb7VKUM7?Zg6=|K+dQ!4%rc6p5(k!-9N}Z-Gc7Q5hgtr`7>|;`fuH2E$ zE|G@dTaFp*2htZ#_5f$H>ym1kS?nf-zq*$@X0gXoYQY@V>ZmwusxpW9O6BvrZ;&I0 z1(JHZ6>)`<-f(|_vsr&qH-23_!(yexEc`)e4ojf0&MnF@hn2O2B72Xrb8dThHu{)Y zUN!S98z-fjd6rF<%7+51bUe$ZlXPxXj(Kc8={ff*$9$Gc+Nb-xuVVo#kW|wwWNRsO zxlL`gknNFD3oc@=z1O=`Y-((XWGn5JD?8(bDnowdmQ$zvC&lgh(ZBcbz^GxBIko7Q zY}&GD(qlk=Gvw_qkJV|K-bnLio?0Jo|IwK7J4lwNcGC<8uBsVsj^L z&x$?^Vm3B}v)K{!>Y}dnDxcgrY|5^b(!_{+8*YB^idsfZJWDJYSlqn>OSM;SG_jAd bvP~qr Date: Wed, 15 May 2019 09:34:37 -0400 Subject: [PATCH 020/271] Explicitly install gcc72-c++ MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fixes #182 Fixes #183 Seems it's not part of the `development` group, whereas gcc72-gcc is 🙄 --- base/build/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/base/build/Dockerfile b/base/build/Dockerfile index da2c2e2f..c2787409 100644 --- a/base/build/Dockerfile +++ b/base/build/Dockerfile @@ -16,7 +16,7 @@ f.close();" && \ yum install -y yum-plugin-ovl && \ yum reinstall -y setup pam shadow-utils audit-libs && \ yum groupinstall -y development && \ - yum install -y clang cmake docker python27-devel python36-devel \ + yum install -y gcc72-c++ clang cmake docker python27-devel python36-devel \ ImageMagick-devel cairo-devel libssh2-devel libxslt-devel libmpc-devel readline-devel db4-devel \ libffi-devel expat-devel libicu-devel lua-devel gdbm-devel sqlite-devel pcre-devel libcurl-devel && \ yum clean all && \ From 735997ddec3eb86e2b7f8e325ae4d285d7515d76 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Wed, 15 May 2019 10:01:10 -0400 Subject: [PATCH 021/271] Add pip install tests --- base/test-all.sh | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/base/test-all.sh b/base/test-all.sh index 023e2fab..a5f9c610 100755 --- a/base/test-all.sh +++ b/base/test-all.sh @@ -20,6 +20,10 @@ docker run --rm -v "$PWD":/var/task lambci/lambda:python2.7 docker run --rm -v "$PWD":/var/task lambci/lambda:python3.6 docker run --rm -v "$PWD":/var/task lambci/lambda:python3.7 lambda_function.lambda_handler +docker run --rm -it lambci/lambda:build-python2.7 pip install marisa-trie +docker run --rm -it lambci/lambda:build-python3.6 pip install marisa-trie +docker run --rm -it lambci/lambda:build-python3.7 pip install marisa-trie + cd ${EXAMPLES_DIR}/ruby docker run --rm -v "$PWD":/var/task lambci/lambda:ruby2.5 lambda_function.lambda_handler From 942d7bfe95f75409937341ae325ef1c88aab029e Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Wed, 15 May 2019 10:27:38 -0400 Subject: [PATCH 022/271] Real fix for c++ 48 / 72 issue MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Turns out 7.2 creates incompatible binaries – they won't run on Lambda. Rollback and force gcc/g++/cpp to be 4.8 --- base/build/Dockerfile | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/base/build/Dockerfile b/base/build/Dockerfile index c2787409..f773c861 100644 --- a/base/build/Dockerfile +++ b/base/build/Dockerfile @@ -16,8 +16,11 @@ f.close();" && \ yum install -y yum-plugin-ovl && \ yum reinstall -y setup pam shadow-utils audit-libs && \ yum groupinstall -y development && \ - yum install -y gcc72-c++ clang cmake docker python27-devel python36-devel \ + yum install -y clang cmake docker python27-devel python36-devel \ ImageMagick-devel cairo-devel libssh2-devel libxslt-devel libmpc-devel readline-devel db4-devel \ libffi-devel expat-devel libicu-devel lua-devel gdbm-devel sqlite-devel pcre-devel libcurl-devel && \ + alternatives --set gcc /usr/bin/gcc48 && \ + alternatives --set g++ /usr/bin/g++48 && \ + alternatives --set cpp /usr/bin/cpp48 && \ yum clean all && \ rm -rf /var/cache/yum From e738ca8e434750d2eff438967f57c8e6a6c1dab1 Mon Sep 17 00:00:00 2001 From: Chris/0 Date: Fri, 17 May 2019 11:17:18 -0400 Subject: [PATCH 023/271] Enables Use of .NET Global Tools in Build Image (#156) Tools currently can't find `dotnet` because it's installed in a nonstandard location. The environment variable `DOTNET_ROOT` tells tools where to look. This and adding the tools path to `PATH` enables use of .NET Global Tools. --- dotnetcore2.1/build/Dockerfile | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/dotnetcore2.1/build/Dockerfile b/dotnetcore2.1/build/Dockerfile index 4bf39f01..c1919cc6 100644 --- a/dotnetcore2.1/build/Dockerfile +++ b/dotnetcore2.1/build/Dockerfile @@ -1,7 +1,8 @@ -FROM lambci/lambda-base:build +FROM lambci/lambda-base:build # Check https://dotnet.microsoft.com/download/dotnet-core/2.1 for versions -ENV PATH=/var/lang/bin:$PATH \ +ENV DOTNET_ROOT=/var/lang/bin \ + PATH=$DOTNET_ROOT:~/.dotnet/tools:$PATH \ LD_LIBRARY_PATH=/var/lang/lib:$LD_LIBRARY_PATH \ AWS_EXECUTION_ENV=AWS_Lambda_dotnetcore2.1 \ DOTNET_SDK_VERSION=2.1.603 \ @@ -11,7 +12,7 @@ ENV PATH=/var/lang/bin:$PATH \ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/dotnetcore2.1.tgz | tar -zx -C / && \ yum install -y libunwind && \ - curl https://dot.net/v1/dotnet-install.sh | bash -s -- -v $DOTNET_SDK_VERSION -i /var/lang/bin && \ + curl https://dot.net/v1/dotnet-install.sh | bash -s -- -v $DOTNET_SDK_VERSION -i $DOTNET_ROOT && \ mkdir /tmp/warmup && \ cd /tmp/warmup && \ dotnet new && \ From 1338a1aa142430d6ba684e9d61624217191a3541 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Fri, 17 May 2019 11:58:32 -0400 Subject: [PATCH 024/271] Fix PATH issues with dotnetcore2.1 build image --- dotnetcore2.1/build/Dockerfile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/dotnetcore2.1/build/Dockerfile b/dotnetcore2.1/build/Dockerfile index c1919cc6..702a5f1c 100644 --- a/dotnetcore2.1/build/Dockerfile +++ b/dotnetcore2.1/build/Dockerfile @@ -1,8 +1,8 @@ FROM lambci/lambda-base:build # Check https://dotnet.microsoft.com/download/dotnet-core/2.1 for versions -ENV DOTNET_ROOT=/var/lang/bin \ - PATH=$DOTNET_ROOT:~/.dotnet/tools:$PATH \ +ENV DOTNET_ROOT=/var/lang/bin +ENV PATH=/root/.dotnet/tools:$DOTNET_ROOT:$PATH \ LD_LIBRARY_PATH=/var/lang/lib:$LD_LIBRARY_PATH \ AWS_EXECUTION_ENV=AWS_Lambda_dotnetcore2.1 \ DOTNET_SDK_VERSION=2.1.603 \ @@ -17,7 +17,7 @@ RUN rm -rf /var/runtime /var/lang && \ cd /tmp/warmup && \ dotnet new && \ cd / && \ - rm -rf /tmp/warmup /tmp/NuGetScratch + rm -rf /tmp/warmup /tmp/NuGetScratch /tmp/.dotnet # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ From 04be94c81bfda9c194429e14bc06fcb3ebc1e45f Mon Sep 17 00:00:00 2001 From: Chris/0 Date: Fri, 17 May 2019 12:31:22 -0400 Subject: [PATCH 025/271] Install Amazon Lambda Global Tools by Default (#187) --- dotnetcore2.1/build/Dockerfile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/dotnetcore2.1/build/Dockerfile b/dotnetcore2.1/build/Dockerfile index 702a5f1c..de434e20 100644 --- a/dotnetcore2.1/build/Dockerfile +++ b/dotnetcore2.1/build/Dockerfile @@ -21,6 +21,7 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ - pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.16.0 aws-lambda-builders==0.3.0 --no-cache-dir + pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.16.0 aws-lambda-builders==0.3.0 --no-cache-dir && \ + dotnet tool install --global Amazon.Lambda.Tools --version 3.2.3 CMD ["dotnet", "build"] From 5c32d536023d6585c3300df21493d72baa5990f0 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Wed, 22 May 2019 17:59:53 -0400 Subject: [PATCH 026/271] Tighten up base-2 building --- base/base-2/Dockerfile | 3 ++- base/build-2/Dockerfile | 10 ++++------ 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/base/base-2/Dockerfile b/base/base-2/Dockerfile index b9fdab08..7c2ae2fa 100644 --- a/base/base-2/Dockerfile +++ b/base/base-2/Dockerfile @@ -25,7 +25,8 @@ ENV PATH=/usr/local/bin:/usr/bin/:/bin:/opt/bin \ RUN rm -rf /var/cache/yum /var/lib/rpm/__db.* && \ > /var/log/yum.log && \ - mkdir /tmp && \ + mkdir -p /root /tmp && \ + chmod 550 /root && \ chown sbx_user1051:495 /tmp && \ chmod 700 /tmp diff --git a/base/build-2/Dockerfile b/base/build-2/Dockerfile index 9c373e3c..fb4d2a1d 100644 --- a/base/build-2/Dockerfile +++ b/base/build-2/Dockerfile @@ -1,17 +1,15 @@ FROM amazonlinux:2 -RUN mkdir -p /tmp/etc && \ - cp /etc/yum.conf /tmp/etc/ && \ - cp -R /etc/yum /tmp/etc/ && \ - echo 2 > /tmp/etc/yum/vars/releasever && \ - yum install -y --installroot=/tmp yum yum-plugin-ovl yum-plugin-priorities +RUN yum list yum && \ + yum install -y --releasever=2 --installroot=/installroot yum yum-plugin-ovl yum-plugin-priorities FROM lambci/lambda-base-2 ENV PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/bin -COPY --from=0 /tmp / +COPY --from=0 /installroot/etc /etc/ +COPY --from=0 /installroot/usr /usr/ RUN yum install -y glibc-langpack-en && \ yum groupinstall -y development && \ From a549d675806ca7f24cdfc771b8c31f69da748299 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Thu, 13 Jun 2019 13:38:32 -0400 Subject: [PATCH 027/271] Only bind and listen to 127.0.0.1 for provided init --- provided/run/init.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/provided/run/init.go b/provided/run/init.go index 7256fd36..058e93b5 100644 --- a/provided/run/init.go +++ b/provided/run/init.go @@ -204,7 +204,7 @@ func main() { }) }) - listener, err := net.Listen("tcp", ":9001") + listener, err := net.Listen("tcp", "127.0.0.1:9001") if err != nil { abortRequest(err) return @@ -214,7 +214,7 @@ func main() { go server.Serve(listener) - res, err := http.Get("http://" + listener.Addr().String() + "/2018-06-01/ping") + res, err := http.Get("http://127.0.0.1:9001/2018-06-01/ping") if err != nil { abortRequest(err) return From fca1a8a338040bc6513a2788282310d5811ecaf4 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Sun, 23 Jun 2019 17:00:34 -0400 Subject: [PATCH 028/271] Add diff script for Amazon Linux 2 based runtimes --- .gitignore | 1 + base/diff-2.sh | 39 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 40 insertions(+) create mode 100755 base/diff-2.sh diff --git a/.gitignore b/.gitignore index 11f25f84..1f54115e 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,6 @@ node_modules base/diff +base/diff-2 *.pyc *.vs *.userprefs diff --git a/base/diff-2.sh b/base/diff-2.sh new file mode 100755 index 00000000..852336ee --- /dev/null +++ b/base/diff-2.sh @@ -0,0 +1,39 @@ +#!/bin/bash + +RUNTIMES="nodejs10.x" + +rm -rf diff-2 +mkdir -p diff-2 + +for RUNTIME in $RUNTIMES; do + docker pull lambci/lambda:${RUNTIME} + + mkdir -p ./diff-2/${RUNTIME}/docker/var + CONTAINER=$(docker create lambci/lambda:${RUNTIME}) + docker cp ${CONTAINER}:/var/runtime ./diff-2/${RUNTIME}/docker/var + docker cp ${CONTAINER}:/var/lang ./diff-2/${RUNTIME}/docker/var + + curl https://lambci.s3.amazonaws.com/fs/${RUNTIME}.tgz > ./diff-2/${RUNTIME}.tgz + + mkdir -p ./diff-2/${RUNTIME}/lambda + tar -zxf ./diff-2/${RUNTIME}.tgz -C ./diff-2/${RUNTIME}/lambda -- var/runtime var/lang + + tar -ztf ./diff-2/${RUNTIME}.tgz | sed 's/\/$//' | sort > ./diff-2/${RUNTIME}/fs.lambda.txt +done + +curl https://lambci.s3.amazonaws.com/fs/base-2.tgz > ./diff-2/base-2.tgz + +{ tar -ztf ./diff-2/nodejs10.x.tgz; tar -ztf ./diff-2/base-2.tgz; } | grep -v '/$' \ + | grep -v '^dev/' | grep -v '^proc/' | grep -v '^sys/' | sort > ./diff-2/nodejs10.x/fs.lambda.txt + +docker run --rm --entrypoint bash lambci/lambda:nodejs10.x -c \ + 'find() { local d; for d in "$@"; do ls -1A "$d" | while read f; do i="$d/$f"; [ -d "$i" ] && [ ! -L "$i" ] && find "$i" || echo $i; done; done; }; find /' \ + | sed -E 's/^\/+//' | grep -v '^dev/' | grep -v '^proc/' | grep -v '^sys/' | sort > ./diff-2/nodejs10.x/fs.docker.txt + +DIFF_DIR="${PWD}/diff-2" + +cd ${DIFF_DIR}/nodejs10.x +pwd +diff fs.docker.txt fs.lambda.txt | grep -v 'var/runtime/' | grep -v 'var/lang' +diff -r docker/var/runtime lambda/var/runtime +diff -qr docker lambda From e0fcd859b1fd445dbbfa02528d0d39ef74825c51 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Thu, 11 Jul 2019 12:53:51 -0400 Subject: [PATCH 029/271] Update aws-sam-cli to 0.18.0 in build images --- dotnetcore2.0/build/Dockerfile | 2 +- dotnetcore2.1/build/Dockerfile | 2 +- go1.x/build/Dockerfile | 2 +- java8/build/Dockerfile | 2 +- nodejs10.x/build/Dockerfile | 2 +- nodejs6.10/build/Dockerfile | 2 +- nodejs8.10/build/Dockerfile | 2 +- provided/build/Dockerfile | 2 +- python2.7/build/Dockerfile | 2 +- python3.6/build/Dockerfile | 2 +- python3.7/build/Dockerfile | 2 +- ruby2.5/build/Dockerfile | 2 +- 12 files changed, 12 insertions(+), 12 deletions(-) diff --git a/dotnetcore2.0/build/Dockerfile b/dotnetcore2.0/build/Dockerfile index 90846aa3..b26c913d 100644 --- a/dotnetcore2.0/build/Dockerfile +++ b/dotnetcore2.0/build/Dockerfile @@ -19,6 +19,6 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ - pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.16.0 aws-lambda-builders==0.3.0 --no-cache-dir + pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.18.0 aws-lambda-builders==0.3.0 --no-cache-dir CMD ["dotnet", "build"] diff --git a/dotnetcore2.1/build/Dockerfile b/dotnetcore2.1/build/Dockerfile index de434e20..18a124db 100644 --- a/dotnetcore2.1/build/Dockerfile +++ b/dotnetcore2.1/build/Dockerfile @@ -21,7 +21,7 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ - pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.16.0 aws-lambda-builders==0.3.0 --no-cache-dir && \ + pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.18.0 aws-lambda-builders==0.3.0 --no-cache-dir && \ dotnet tool install --global Amazon.Lambda.Tools --version 3.2.3 CMD ["dotnet", "build"] diff --git a/go1.x/build/Dockerfile b/go1.x/build/Dockerfile index fb1fc47e..4ddba0d8 100644 --- a/go1.x/build/Dockerfile +++ b/go1.x/build/Dockerfile @@ -16,6 +16,6 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ - pip install -U awscli boto3 aws-sam-cli==0.16.0 aws-lambda-builders==0.3.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.18.0 aws-lambda-builders==0.3.0 --no-cache-dir CMD ["dep", "ensure"] diff --git a/java8/build/Dockerfile b/java8/build/Dockerfile index b0fea600..83c3f0dc 100644 --- a/java8/build/Dockerfile +++ b/java8/build/Dockerfile @@ -16,4 +16,4 @@ ENV PATH="/usr/local/gradle/gradle-5.2/bin:/usr/local/maven/apache-maven-3.6.0/b # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ - pip install -U awscli boto3 aws-sam-cli==0.16.0 aws-lambda-builders==0.3.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.18.0 aws-lambda-builders==0.3.0 --no-cache-dir diff --git a/nodejs10.x/build/Dockerfile b/nodejs10.x/build/Dockerfile index ebb9e427..2526285c 100644 --- a/nodejs10.x/build/Dockerfile +++ b/nodejs10.x/build/Dockerfile @@ -10,4 +10,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN pip3 install -U pip setuptools --no-cache-dir && \ - pip install -U awscli boto3 aws-sam-cli==0.16.0 aws-lambda-builders==0.3.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.18.0 aws-lambda-builders==0.3.0 --no-cache-dir diff --git a/nodejs6.10/build/Dockerfile b/nodejs6.10/build/Dockerfile index 51b35b43..525c1a71 100644 --- a/nodejs6.10/build/Dockerfile +++ b/nodejs6.10/build/Dockerfile @@ -11,6 +11,6 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ - pip install -U awscli boto3 aws-sam-cli==0.16.0 aws-lambda-builders==0.3.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.18.0 aws-lambda-builders==0.3.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/nodejs8.10/build/Dockerfile b/nodejs8.10/build/Dockerfile index afa9d76c..966817e7 100644 --- a/nodejs8.10/build/Dockerfile +++ b/nodejs8.10/build/Dockerfile @@ -11,6 +11,6 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ - pip install -U awscli boto3 aws-sam-cli==0.16.0 aws-lambda-builders==0.3.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.18.0 aws-lambda-builders==0.3.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/provided/build/Dockerfile b/provided/build/Dockerfile index 87b8933b..07d38087 100644 --- a/provided/build/Dockerfile +++ b/provided/build/Dockerfile @@ -2,4 +2,4 @@ FROM lambci/lambda-base:build # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ - pip install -U awscli boto3 aws-sam-cli==0.16.0 aws-lambda-builders==0.3.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.18.0 aws-lambda-builders==0.3.0 --no-cache-dir diff --git a/python2.7/build/Dockerfile b/python2.7/build/Dockerfile index b225f34e..9fe39a32 100644 --- a/python2.7/build/Dockerfile +++ b/python2.7/build/Dockerfile @@ -9,4 +9,4 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ pip install -U virtualenv pipenv --no-cache-dir && \ - pip install -U awscli boto3 aws-sam-cli==0.16.0 aws-lambda-builders==0.3.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.18.0 aws-lambda-builders==0.3.0 --no-cache-dir diff --git a/python3.6/build/Dockerfile b/python3.6/build/Dockerfile index a5e2d068..29773de0 100644 --- a/python3.6/build/Dockerfile +++ b/python3.6/build/Dockerfile @@ -19,4 +19,4 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ - pip install -U awscli boto3 aws-sam-cli==0.16.0 aws-lambda-builders==0.3.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.18.0 aws-lambda-builders==0.3.0 --no-cache-dir diff --git a/python3.7/build/Dockerfile b/python3.7/build/Dockerfile index 701e3155..a7cfd12b 100644 --- a/python3.7/build/Dockerfile +++ b/python3.7/build/Dockerfile @@ -12,4 +12,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ - pip install -U awscli boto3 aws-sam-cli==0.16.0 aws-lambda-builders==0.3.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.18.0 aws-lambda-builders==0.3.0 --no-cache-dir diff --git a/ruby2.5/build/Dockerfile b/ruby2.5/build/Dockerfile index 42eff457..a0bf5790 100644 --- a/ruby2.5/build/Dockerfile +++ b/ruby2.5/build/Dockerfile @@ -14,4 +14,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ RUN gem update --system --no-document && \ gem install --no-document bundler && \ curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ - pip install -U awscli boto3 aws-sam-cli==0.16.0 aws-lambda-builders==0.3.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.18.0 aws-lambda-builders==0.3.0 --no-cache-dir From cce1f052417ce9fe1cc8a01d2f4ad914acd74bdf Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Thu, 11 Jul 2019 13:57:38 -0400 Subject: [PATCH 030/271] Missed nodejs4.3 --- nodejs4.3/build/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nodejs4.3/build/Dockerfile b/nodejs4.3/build/Dockerfile index 26c1754a..64ffdf92 100644 --- a/nodejs4.3/build/Dockerfile +++ b/nodejs4.3/build/Dockerfile @@ -11,6 +11,6 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ - pip install -U awscli boto3 aws-sam-cli==0.16.0 aws-lambda-builders==0.3.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.18.0 aws-lambda-builders==0.3.0 --no-cache-dir CMD ["npm", "rebuild"] From edacbea14ef4cc10ed01a32c2ecfa0325cebf94b Mon Sep 17 00:00:00 2001 From: Brandon Shackelford Date: Fri, 26 Jul 2019 12:47:22 -0700 Subject: [PATCH 031/271] Fix Node v4.3 entrypoint (#202) --- base/native-test.sh | 4 ++-- nodejs4.3/run/Dockerfile | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/base/native-test.sh b/base/native-test.sh index 20477aa0..5d1a89ed 100755 --- a/base/native-test.sh +++ b/base/native-test.sh @@ -22,8 +22,8 @@ CMD="BUILD_ONLY=true npm install --build-from-source \ " docker run --rm \ - -e PATH=/usr/local/lib64/node-v4.3.x/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/bin \ - -e LD_LIBRARY_PATH=/usr/local/lib64/node-v4.3.x/lib:/lib64:/usr/lib64:/var/runtime:/var/runtime/lib:/var/task:/var/task/lib:/opt/lib \ + -e PATH=/var/lang/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/bin \ + -e LD_LIBRARY_PATH=/var/lang/lib:/lib64:/usr/lib64:/var/runtime:/var/runtime/lib:/var/task:/var/task/lib:/opt/lib \ -e AWS_EXECUTION_ENV=AWS_Lambda_nodejs4.3 \ -e NODE_PATH=/var/runtime:/var/task:/var/runtime/node_modules \ -e npm_config_unsafe-perm=true \ diff --git a/nodejs4.3/run/Dockerfile b/nodejs4.3/run/Dockerfile index 07fad17e..a4e9cd9c 100644 --- a/nodejs4.3/run/Dockerfile +++ b/nodejs4.3/run/Dockerfile @@ -1,7 +1,7 @@ FROM lambci/lambda-base -ENV PATH=/usr/local/lib64/node-v4.3.x/bin:$PATH \ - LD_LIBRARY_PATH=/usr/local/lib64/node-v4.3.x/lib:$LD_LIBRARY_PATH \ +ENV PATH=/var/lang/bin:$PATH \ + LD_LIBRARY_PATH=/var/lang/lib:$LD_LIBRARY_PATH \ AWS_EXECUTION_ENV=AWS_Lambda_nodejs4.3 \ NODE_PATH=/var/runtime:/var/task:/var/runtime/node_modules @@ -12,6 +12,6 @@ COPY awslambda-mock.js /var/runtime/node_modules/awslambda/build/Release/awslamb USER sbx_user1051 -ENTRYPOINT ["/usr/local/lib64/node-v4.3.x/bin/node", "--expose-gc", "--max-executable-size=160", "--max-semi-space-size=150", "--max-old-space-size=2547", \ +ENTRYPOINT ["/var/lang/bin/node", "--expose-gc", "--max-executable-size=160", "--max-semi-space-size=150", "--max-old-space-size=2547", \ "/var/runtime/node_modules/awslambda/index.js"] From 753a33e47465c849ffecea5592f48c6512b18324 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Fri, 26 Jul 2019 15:53:30 -0400 Subject: [PATCH 032/271] Fix remaining Node.js 4.3 paths --- base/dump-nodejs43.js | 10 +++++----- nodejs4.3/build/Dockerfile | 4 ++-- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/base/dump-nodejs43.js b/base/dump-nodejs43.js index 7385e920..0d618643 100644 --- a/base/dump-nodejs43.js +++ b/base/dump-nodejs43.js @@ -45,15 +45,15 @@ exports.handler = function(event, context, cb) { }) } -// /usr/local/lib64/node-v4.3.x/bin/node -// [ '--max-old-space-size=1229', '--max-semi-space-size=76', '--max-executable-size=153', '--expose-gc' ] -// [ '/usr/local/lib64/node-v4.3.x/bin/node', '/var/runtime/node_modules/awslambda/index.js' ] +// /var/lang/bin/node +// [ '--max-old-space-size=2547', '--max-semi-space-size=150', '--max-executable-size=160', '--expose-gc' ] +// [ '/var/lang/bin/node', '/var/runtime/node_modules/awslambda/index.js' ] // /var/task // /var/task/index.js // { -// PATH: '/usr/local/lib64/node-v4.3.x/bin:/usr/local/bin:/usr/bin/:/bin:/opt/bin', +// PATH: '/var/lang/bin:/usr/local/bin:/usr/bin/:/bin:/opt/bin', // LANG: 'en_US.UTF-8', -// LD_LIBRARY_PATH: '/usr/local/lib64/node-v4.3.x/lib:/lib64:/usr/lib64:/var/runtime:/var/runtime/lib:/var/task:/var/task/lib:/opt/lib', +// LD_LIBRARY_PATH: '/var/lang/lib:/lib64:/usr/lib64:/var/runtime:/var/runtime/lib:/var/task:/var/task/lib:/opt/lib', // LAMBDA_TASK_ROOT: '/var/task', // LAMBDA_RUNTIME_DIR: '/var/runtime', // AWS_REGION: 'us-east-1', diff --git a/nodejs4.3/build/Dockerfile b/nodejs4.3/build/Dockerfile index 64ffdf92..a0431294 100644 --- a/nodejs4.3/build/Dockerfile +++ b/nodejs4.3/build/Dockerfile @@ -1,7 +1,7 @@ FROM lambci/lambda-base:build -ENV PATH=/usr/local/lib64/node-v4.3.x/bin:$PATH \ - LD_LIBRARY_PATH=/usr/local/lib64/node-v4.3.x/lib:$LD_LIBRARY_PATH \ +ENV PATH=/var/lang/bin:$PATH \ + LD_LIBRARY_PATH=/var/lang/lib:$LD_LIBRARY_PATH \ AWS_EXECUTION_ENV=AWS_Lambda_nodejs4.3 \ NODE_PATH=/var/runtime:/var/task:/var/runtime/node_modules \ npm_config_unsafe-perm=true From 095c1e6272156d60b5b48fd5f6653ad2325e827b Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Fri, 26 Jul 2019 15:54:01 -0400 Subject: [PATCH 033/271] Ignore everything but base tarballs when building base images --- base/.dockerignore | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/base/.dockerignore b/base/.dockerignore index e7794243..83ea83a0 100644 --- a/base/.dockerignore +++ b/base/.dockerignore @@ -1 +1,2 @@ -diff +** +!base*.tgz From b492f25024d7f8781a90c31c72d61dabef4289f6 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Wed, 7 Aug 2019 09:50:28 -0400 Subject: [PATCH 034/271] Update yum package list to match latest on build --- README.md | 30 ++++++++++++++++++------------ 1 file changed, 18 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index d79713f1..29c68795 100644 --- a/README.md +++ b/README.md @@ -263,21 +263,27 @@ Options to pass to `dockerLambda()`: - `returnSpawnResult` Yum packages installed on build images: + - `development` (group, includes `gcc-c++`, `autoconf`, `automake`, `git`, `vim`, etc) - `aws-cli` - - `zip` - - `git` - - `vim` + - `aws-sam-cli` - `docker` (Docker in Docker!) - - `gcc-c++` - `clang` - - `openssl-devel` - `cmake` - - `autoconf` - - `automake` - - `libtool` - - `xz-libs` - - `libffi-devel` - `python27-devel` + - `python36-devel` + - `ImageMagick-devel` + - `cairo-devel` + - `libssh2-devel` + - `libxslt-devel` - `libmpc-devel` - - `mpfr-devel` - - `gmp-devel` + - `readline-devel` + - `db4-devel` + - `libffi-devel` + - `expat-devel` + - `libicu-devel` + - `lua-devel` + - `gdbm-devel` + - `sqlite-devel` + - `pcre-devel` + - `libcurl-devel` + - `yum-plugin-ovl` From 68378d0c6fc80e2138f070e7b0d9d6af8b48a4a3 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Fri, 16 Aug 2019 15:10:26 -0400 Subject: [PATCH 035/271] Update latest base versions and AWS SAM CLI to 0.19.0 --- base/build-all.sh | 2 +- base/diff-2.sh | 2 +- base/publish-all.sh | 2 +- base/tag-all.sh | 2 +- dotnetcore2.0/build/Dockerfile | 4 +++- dotnetcore2.1/build/Dockerfile | 5 +++-- .../run/MockBootstraps/lib/Bootstrap.dll | Bin 146432 -> 146432 bytes go1.x/build/Dockerfile | 5 +++-- java8/build/Dockerfile | 2 +- nodejs10.x/build/Dockerfile | 2 +- nodejs4.3/build/Dockerfile | 2 +- nodejs6.10/build/Dockerfile | 2 +- nodejs8.10/build/Dockerfile | 2 +- provided/build/Dockerfile | 2 +- python2.7/build/Dockerfile | 2 +- python3.6/build/Dockerfile | 2 +- python3.7/build/Dockerfile | 2 +- ruby2.5/build/Dockerfile | 2 +- 18 files changed, 23 insertions(+), 19 deletions(-) diff --git a/base/build-all.sh b/base/build-all.sh index e33bb3c3..0a0d9ed4 100755 --- a/base/build-all.sh +++ b/base/build-all.sh @@ -1,6 +1,6 @@ #!/bin/bash -RUNTIMES="provided nodejs4.3 nodejs6.10 nodejs8.10 nodejs10.x python2.7 python3.6 python3.7 ruby2.5 java8 go1.x dotnetcore2.0 dotnetcore2.1" +RUNTIMES="provided go1.x nodejs4.3 nodejs6.10 nodejs8.10 nodejs10.x python2.7 python3.6 python3.7 ruby2.5 java8 dotnetcore2.0 dotnetcore2.1" TOP_DIR="${PWD}/.." diff --git a/base/diff-2.sh b/base/diff-2.sh index 852336ee..cac42f8a 100755 --- a/base/diff-2.sh +++ b/base/diff-2.sh @@ -35,5 +35,5 @@ DIFF_DIR="${PWD}/diff-2" cd ${DIFF_DIR}/nodejs10.x pwd diff fs.docker.txt fs.lambda.txt | grep -v 'var/runtime/' | grep -v 'var/lang' -diff -r docker/var/runtime lambda/var/runtime +diff docker/var/runtime lambda/var/runtime diff -qr docker lambda diff --git a/base/publish-all.sh b/base/publish-all.sh index 8d06d475..30603bca 100755 --- a/base/publish-all.sh +++ b/base/publish-all.sh @@ -1,6 +1,6 @@ #!/bin/bash -RUNTIMES="provided nodejs4.3 nodejs6.10 nodejs8.10 nodejs10.x python2.7 python3.6 python3.7 ruby2.5 java8 go1.x dotnetcore2.0 dotnetcore2.1" +RUNTIMES="provided go1.x nodejs4.3 nodejs6.10 nodejs8.10 nodejs10.x python2.7 python3.6 python3.7 ruby2.5 java8 dotnetcore2.0 dotnetcore2.1" docker push lambci/lambda-base docker push lambci/lambda-base-2 diff --git a/base/tag-all.sh b/base/tag-all.sh index 97a68682..82bd6ca4 100755 --- a/base/tag-all.sh +++ b/base/tag-all.sh @@ -1,6 +1,6 @@ #!/bin/bash -RUNTIMES="provided nodejs4.3 nodejs6.10 nodejs8.10 nodejs10.x python2.7 python3.6 python3.7 ruby2.5 java8 go1.x dotnetcore2.0 dotnetcore2.1" +RUNTIMES="provided go1.x nodejs4.3 nodejs6.10 nodejs8.10 nodejs10.x python2.7 python3.6 python3.7 ruby2.5 java8 dotnetcore2.0 dotnetcore2.1" git tag -f latest diff --git a/dotnetcore2.0/build/Dockerfile b/dotnetcore2.0/build/Dockerfile index b26c913d..66558f9a 100644 --- a/dotnetcore2.0/build/Dockerfile +++ b/dotnetcore2.0/build/Dockerfile @@ -1,5 +1,7 @@ FROM lambci/lambda-base:build +# Run: docker run --rm --entrypoint dotnet lambci/lambda:dotnetcore2.1 --info +# Check https://dotnet.microsoft.com/download/dotnet-core/2.0 for versions ENV PATH=/var/lang/bin:$PATH \ LD_LIBRARY_PATH=/var/lang/lib:$LD_LIBRARY_PATH \ AWS_EXECUTION_ENV=AWS_Lambda_dotnetcore2.0 \ @@ -19,6 +21,6 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ - pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.18.0 aws-lambda-builders==0.3.0 --no-cache-dir + pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.19.0 aws-lambda-builders==0.3.0 --no-cache-dir CMD ["dotnet", "build"] diff --git a/dotnetcore2.1/build/Dockerfile b/dotnetcore2.1/build/Dockerfile index 18a124db..ad9dafbf 100644 --- a/dotnetcore2.1/build/Dockerfile +++ b/dotnetcore2.1/build/Dockerfile @@ -1,11 +1,12 @@ FROM lambci/lambda-base:build +# Run: docker run --rm --entrypoint dotnet lambci/lambda:dotnetcore2.1 --info # Check https://dotnet.microsoft.com/download/dotnet-core/2.1 for versions ENV DOTNET_ROOT=/var/lang/bin ENV PATH=/root/.dotnet/tools:$DOTNET_ROOT:$PATH \ LD_LIBRARY_PATH=/var/lang/lib:$LD_LIBRARY_PATH \ AWS_EXECUTION_ENV=AWS_Lambda_dotnetcore2.1 \ - DOTNET_SDK_VERSION=2.1.603 \ + DOTNET_SDK_VERSION=2.1.700 \ DOTNET_CLI_TELEMETRY_OPTOUT=1 \ NUGET_XMLDOC_MODE=skip @@ -21,7 +22,7 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ - pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.18.0 aws-lambda-builders==0.3.0 --no-cache-dir && \ + pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.19.0 aws-lambda-builders==0.3.0 --no-cache-dir && \ dotnet tool install --global Amazon.Lambda.Tools --version 3.2.3 CMD ["dotnet", "build"] diff --git a/dotnetcore2.1/run/MockBootstraps/lib/Bootstrap.dll b/dotnetcore2.1/run/MockBootstraps/lib/Bootstrap.dll index 320566c4fa0ea200bec0e68ffc9588dcbb2b4f28..33616baf65fe13e2fe10cb942fb7b2e2773bb597 100644 GIT binary patch delta 8108 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 bvP~qr?8YeuHsHxK^ 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 D3?;5F diff --git a/go1.x/build/Dockerfile b/go1.x/build/Dockerfile index 4ddba0d8..1d0a099c 100644 --- a/go1.x/build/Dockerfile +++ b/go1.x/build/Dockerfile @@ -1,6 +1,7 @@ FROM lambci/lambda-base:build -ENV GOLANG_VERSION=1.12 \ +# https://golang.org/doc/devel/release.html +ENV GOLANG_VERSION=1.12.9 \ GOPATH=/go \ PATH=/go/bin:/usr/local/go/bin:$PATH \ AWS_EXECUTION_ENV=AWS_Lambda_go1.x @@ -16,6 +17,6 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ - pip install -U awscli boto3 aws-sam-cli==0.18.0 aws-lambda-builders==0.3.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.19.0 aws-lambda-builders==0.3.0 --no-cache-dir CMD ["dep", "ensure"] diff --git a/java8/build/Dockerfile b/java8/build/Dockerfile index 83c3f0dc..cb08bfd0 100644 --- a/java8/build/Dockerfile +++ b/java8/build/Dockerfile @@ -16,4 +16,4 @@ ENV PATH="/usr/local/gradle/gradle-5.2/bin:/usr/local/maven/apache-maven-3.6.0/b # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ - pip install -U awscli boto3 aws-sam-cli==0.18.0 aws-lambda-builders==0.3.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.19.0 aws-lambda-builders==0.3.0 --no-cache-dir diff --git a/nodejs10.x/build/Dockerfile b/nodejs10.x/build/Dockerfile index 2526285c..ee5059a8 100644 --- a/nodejs10.x/build/Dockerfile +++ b/nodejs10.x/build/Dockerfile @@ -10,4 +10,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN pip3 install -U pip setuptools --no-cache-dir && \ - pip install -U awscli boto3 aws-sam-cli==0.18.0 aws-lambda-builders==0.3.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.19.0 aws-lambda-builders==0.3.0 --no-cache-dir diff --git a/nodejs4.3/build/Dockerfile b/nodejs4.3/build/Dockerfile index a0431294..fdf29489 100644 --- a/nodejs4.3/build/Dockerfile +++ b/nodejs4.3/build/Dockerfile @@ -11,6 +11,6 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ - pip install -U awscli boto3 aws-sam-cli==0.18.0 aws-lambda-builders==0.3.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.19.0 aws-lambda-builders==0.3.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/nodejs6.10/build/Dockerfile b/nodejs6.10/build/Dockerfile index 525c1a71..98d74eeb 100644 --- a/nodejs6.10/build/Dockerfile +++ b/nodejs6.10/build/Dockerfile @@ -11,6 +11,6 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ - pip install -U awscli boto3 aws-sam-cli==0.18.0 aws-lambda-builders==0.3.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.19.0 aws-lambda-builders==0.3.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/nodejs8.10/build/Dockerfile b/nodejs8.10/build/Dockerfile index 966817e7..b298b380 100644 --- a/nodejs8.10/build/Dockerfile +++ b/nodejs8.10/build/Dockerfile @@ -11,6 +11,6 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ - pip install -U awscli boto3 aws-sam-cli==0.18.0 aws-lambda-builders==0.3.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.19.0 aws-lambda-builders==0.3.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/provided/build/Dockerfile b/provided/build/Dockerfile index 07d38087..cbc0ee87 100644 --- a/provided/build/Dockerfile +++ b/provided/build/Dockerfile @@ -2,4 +2,4 @@ FROM lambci/lambda-base:build # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ - pip install -U awscli boto3 aws-sam-cli==0.18.0 aws-lambda-builders==0.3.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.19.0 aws-lambda-builders==0.3.0 --no-cache-dir diff --git a/python2.7/build/Dockerfile b/python2.7/build/Dockerfile index 9fe39a32..cef86e10 100644 --- a/python2.7/build/Dockerfile +++ b/python2.7/build/Dockerfile @@ -9,4 +9,4 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ pip install -U virtualenv pipenv --no-cache-dir && \ - pip install -U awscli boto3 aws-sam-cli==0.18.0 aws-lambda-builders==0.3.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.19.0 aws-lambda-builders==0.3.0 --no-cache-dir diff --git a/python3.6/build/Dockerfile b/python3.6/build/Dockerfile index 29773de0..0d71d705 100644 --- a/python3.6/build/Dockerfile +++ b/python3.6/build/Dockerfile @@ -19,4 +19,4 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ - pip install -U awscli boto3 aws-sam-cli==0.18.0 aws-lambda-builders==0.3.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.19.0 aws-lambda-builders==0.3.0 --no-cache-dir diff --git a/python3.7/build/Dockerfile b/python3.7/build/Dockerfile index a7cfd12b..ce459878 100644 --- a/python3.7/build/Dockerfile +++ b/python3.7/build/Dockerfile @@ -12,4 +12,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ - pip install -U awscli boto3 aws-sam-cli==0.18.0 aws-lambda-builders==0.3.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.19.0 aws-lambda-builders==0.3.0 --no-cache-dir diff --git a/ruby2.5/build/Dockerfile b/ruby2.5/build/Dockerfile index a0bf5790..47c52a94 100644 --- a/ruby2.5/build/Dockerfile +++ b/ruby2.5/build/Dockerfile @@ -14,4 +14,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ RUN gem update --system --no-document && \ gem install --no-document bundler && \ curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ - pip install -U awscli boto3 aws-sam-cli==0.18.0 aws-lambda-builders==0.3.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.19.0 aws-lambda-builders==0.3.0 --no-cache-dir From a3cf3b6d735d012d7483ccb226b0503ad3d5a17d Mon Sep 17 00:00:00 2001 From: Chris/0 Date: Tue, 20 Aug 2019 01:50:26 -0400 Subject: [PATCH 036/271] Update Amazon.Lambda.Tools Version to Latest (#206) --- dotnetcore2.1/build/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dotnetcore2.1/build/Dockerfile b/dotnetcore2.1/build/Dockerfile index ad9dafbf..bcd12c14 100644 --- a/dotnetcore2.1/build/Dockerfile +++ b/dotnetcore2.1/build/Dockerfile @@ -23,6 +23,6 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.19.0 aws-lambda-builders==0.3.0 --no-cache-dir && \ - dotnet tool install --global Amazon.Lambda.Tools --version 3.2.3 + dotnet tool install --global Amazon.Lambda.Tools --version 3.3.0 CMD ["dotnet", "build"] From c9cb4faf572ce963ec5beff96fad24c57f79ecbe Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Tue, 20 Aug 2019 10:55:43 -0700 Subject: [PATCH 037/271] Bump aws-lambda-builders to 0.4.0 --- dotnetcore2.0/build/Dockerfile | 2 +- dotnetcore2.1/build/Dockerfile | 2 +- go1.x/build/Dockerfile | 2 +- java8/build/Dockerfile | 2 +- nodejs10.x/build/Dockerfile | 2 +- nodejs4.3/build/Dockerfile | 2 +- nodejs6.10/build/Dockerfile | 2 +- nodejs8.10/build/Dockerfile | 2 +- provided/build/Dockerfile | 2 +- python2.7/build/Dockerfile | 2 +- python3.6/build/Dockerfile | 2 +- python3.7/build/Dockerfile | 2 +- ruby2.5/build/Dockerfile | 2 +- 13 files changed, 13 insertions(+), 13 deletions(-) diff --git a/dotnetcore2.0/build/Dockerfile b/dotnetcore2.0/build/Dockerfile index 66558f9a..a8b52540 100644 --- a/dotnetcore2.0/build/Dockerfile +++ b/dotnetcore2.0/build/Dockerfile @@ -21,6 +21,6 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ - pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.19.0 aws-lambda-builders==0.3.0 --no-cache-dir + pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.19.0 aws-lambda-builders==0.4.0 --no-cache-dir CMD ["dotnet", "build"] diff --git a/dotnetcore2.1/build/Dockerfile b/dotnetcore2.1/build/Dockerfile index bcd12c14..de0fbd28 100644 --- a/dotnetcore2.1/build/Dockerfile +++ b/dotnetcore2.1/build/Dockerfile @@ -22,7 +22,7 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ - pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.19.0 aws-lambda-builders==0.3.0 --no-cache-dir && \ + pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.19.0 aws-lambda-builders==0.4.0 --no-cache-dir && \ dotnet tool install --global Amazon.Lambda.Tools --version 3.3.0 CMD ["dotnet", "build"] diff --git a/go1.x/build/Dockerfile b/go1.x/build/Dockerfile index 1d0a099c..350be5cc 100644 --- a/go1.x/build/Dockerfile +++ b/go1.x/build/Dockerfile @@ -17,6 +17,6 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ - pip install -U awscli boto3 aws-sam-cli==0.19.0 aws-lambda-builders==0.3.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.19.0 aws-lambda-builders==0.4.0 --no-cache-dir CMD ["dep", "ensure"] diff --git a/java8/build/Dockerfile b/java8/build/Dockerfile index cb08bfd0..e89227d3 100644 --- a/java8/build/Dockerfile +++ b/java8/build/Dockerfile @@ -16,4 +16,4 @@ ENV PATH="/usr/local/gradle/gradle-5.2/bin:/usr/local/maven/apache-maven-3.6.0/b # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ - pip install -U awscli boto3 aws-sam-cli==0.19.0 aws-lambda-builders==0.3.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.19.0 aws-lambda-builders==0.4.0 --no-cache-dir diff --git a/nodejs10.x/build/Dockerfile b/nodejs10.x/build/Dockerfile index ee5059a8..7de780c7 100644 --- a/nodejs10.x/build/Dockerfile +++ b/nodejs10.x/build/Dockerfile @@ -10,4 +10,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN pip3 install -U pip setuptools --no-cache-dir && \ - pip install -U awscli boto3 aws-sam-cli==0.19.0 aws-lambda-builders==0.3.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.19.0 aws-lambda-builders==0.4.0 --no-cache-dir diff --git a/nodejs4.3/build/Dockerfile b/nodejs4.3/build/Dockerfile index fdf29489..fc283d04 100644 --- a/nodejs4.3/build/Dockerfile +++ b/nodejs4.3/build/Dockerfile @@ -11,6 +11,6 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ - pip install -U awscli boto3 aws-sam-cli==0.19.0 aws-lambda-builders==0.3.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.19.0 aws-lambda-builders==0.4.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/nodejs6.10/build/Dockerfile b/nodejs6.10/build/Dockerfile index 98d74eeb..b4ea2be8 100644 --- a/nodejs6.10/build/Dockerfile +++ b/nodejs6.10/build/Dockerfile @@ -11,6 +11,6 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ - pip install -U awscli boto3 aws-sam-cli==0.19.0 aws-lambda-builders==0.3.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.19.0 aws-lambda-builders==0.4.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/nodejs8.10/build/Dockerfile b/nodejs8.10/build/Dockerfile index b298b380..1abf53b0 100644 --- a/nodejs8.10/build/Dockerfile +++ b/nodejs8.10/build/Dockerfile @@ -11,6 +11,6 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ - pip install -U awscli boto3 aws-sam-cli==0.19.0 aws-lambda-builders==0.3.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.19.0 aws-lambda-builders==0.4.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/provided/build/Dockerfile b/provided/build/Dockerfile index cbc0ee87..94bd1e30 100644 --- a/provided/build/Dockerfile +++ b/provided/build/Dockerfile @@ -2,4 +2,4 @@ FROM lambci/lambda-base:build # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ - pip install -U awscli boto3 aws-sam-cli==0.19.0 aws-lambda-builders==0.3.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.19.0 aws-lambda-builders==0.4.0 --no-cache-dir diff --git a/python2.7/build/Dockerfile b/python2.7/build/Dockerfile index cef86e10..911fb05b 100644 --- a/python2.7/build/Dockerfile +++ b/python2.7/build/Dockerfile @@ -9,4 +9,4 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ pip install -U virtualenv pipenv --no-cache-dir && \ - pip install -U awscli boto3 aws-sam-cli==0.19.0 aws-lambda-builders==0.3.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.19.0 aws-lambda-builders==0.4.0 --no-cache-dir diff --git a/python3.6/build/Dockerfile b/python3.6/build/Dockerfile index 0d71d705..8cfc7bf1 100644 --- a/python3.6/build/Dockerfile +++ b/python3.6/build/Dockerfile @@ -19,4 +19,4 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ - pip install -U awscli boto3 aws-sam-cli==0.19.0 aws-lambda-builders==0.3.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.19.0 aws-lambda-builders==0.4.0 --no-cache-dir diff --git a/python3.7/build/Dockerfile b/python3.7/build/Dockerfile index ce459878..8613975e 100644 --- a/python3.7/build/Dockerfile +++ b/python3.7/build/Dockerfile @@ -12,4 +12,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ - pip install -U awscli boto3 aws-sam-cli==0.19.0 aws-lambda-builders==0.3.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.19.0 aws-lambda-builders==0.4.0 --no-cache-dir diff --git a/ruby2.5/build/Dockerfile b/ruby2.5/build/Dockerfile index 47c52a94..40cd063d 100644 --- a/ruby2.5/build/Dockerfile +++ b/ruby2.5/build/Dockerfile @@ -14,4 +14,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ RUN gem update --system --no-document && \ gem install --no-document bundler && \ curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ - pip install -U awscli boto3 aws-sam-cli==0.19.0 aws-lambda-builders==0.3.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.19.0 aws-lambda-builders==0.4.0 --no-cache-dir From 8eab818a1a3079c67ed615925b6345b482dd0376 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Tue, 10 Sep 2019 10:14:39 -0400 Subject: [PATCH 038/271] Update Amazon Linux 2 base differences --- base/base-2/amazonlinux2.txt | 18 +++++++++--------- base/base-2/diff.txt | 16 ++++++++-------- base/base-2/packages.txt | 2 +- 3 files changed, 18 insertions(+), 18 deletions(-) diff --git a/base/base-2/amazonlinux2.txt b/base/base-2/amazonlinux2.txt index c6cfc2df..bfaf1679 100644 --- a/base/base-2/amazonlinux2.txt +++ b/base/base-2/amazonlinux2.txt @@ -1,4 +1,4 @@ -amazon-linux-extras-1.6.7-1.amzn2.noarch +amazon-linux-extras-1.6.9-1.amzn2.noarch basesystem-10.0-7.amzn2.0.1.noarch bash-4.2.46-30.amzn2.x86_64 bzip2-libs-1.0.6-13.amzn2.0.2.x86_64 @@ -6,7 +6,7 @@ ca-certificates-2018.2.22-70.0.amzn2.noarch chkconfig-1.7.4-1.amzn2.0.2.x86_64 coreutils-8.22-21.amzn2.x86_64 cpio-2.11-27.amzn2.x86_64 -curl-7.61.1-9.amzn2.0.1.x86_64 +curl-7.61.1-11.amzn2.0.2.x86_64 cyrus-sasl-lib-2.1.26-23.amzn2.x86_64 diffutils-3.3-4.amzn2.0.2.x86_64 elfutils-libelf-0.170-4.amzn2.x86_64 @@ -35,7 +35,7 @@ libblkid-2.30.2-2.amzn2.0.4.x86_64 libcap-2.22-9.amzn2.0.2.x86_64 libcom_err-1.42.9-12.amzn2.0.2.x86_64 libcrypt-2.26-32.amzn2.0.1.x86_64 -libcurl-7.61.1-9.amzn2.0.1.x86_64 +libcurl-7.61.1-11.amzn2.0.2.x86_64 libdb-5.3.21-24.amzn2.0.3.x86_64 libdb-utils-5.3.21-24.amzn2.0.3.x86_64 libffi-3.0.13-18.amzn2.0.2.x86_64 @@ -48,7 +48,7 @@ libmount-2.30.2-2.amzn2.0.4.x86_64 libnghttp2-1.31.1-1.amzn2.0.2.x86_64 libselinux-2.5-12.amzn2.0.2.x86_64 libsepol-2.5-8.1.amzn2.0.2.x86_64 -libssh2-1.4.3-12.amzn2.2.x86_64 +libssh2-1.4.3-12.amzn2.2.1.x86_64 libstdc++-7.3.1-5.amzn2.0.2.x86_64 libtasn1-4.10-1.amzn2.0.2.x86_64 libunistring-0.9.3-9.amzn2.0.2.x86_64 @@ -62,8 +62,8 @@ ncurses-libs-6.0-8.20170212.amzn2.1.2.x86_64 nspr-4.19.0-1.amzn2.x86_64 nss-3.36.0-7.amzn2.x86_64 nss-pem-1.0.3-5.amzn2.x86_64 -nss-softokn-3.36.0-5.amzn2.x86_64 -nss-softokn-freebl-3.36.0-5.amzn2.x86_64 +nss-softokn-3.36.0-5.amzn2.0.1.x86_64 +nss-softokn-freebl-3.36.0-5.amzn2.0.1.x86_64 nss-sysinit-3.36.0-7.amzn2.x86_64 nss-tools-3.36.0-7.amzn2.x86_64 nss-util-3.36.0-1.amzn2.x86_64 @@ -77,9 +77,9 @@ popt-1.13-16.amzn2.0.2.x86_64 pth-2.0.7-23.amzn2.0.2.x86_64 pygpgme-0.3-9.amzn2.0.2.x86_64 pyliblzma-0.5.3-11.amzn2.0.2.x86_64 -python-2.7.14-58.amzn2.0.4.x86_64 +python-2.7.16-2.amzn2.0.1.x86_64 python-iniparse-0.4-9.amzn2.noarch -python-libs-2.7.14-58.amzn2.0.4.x86_64 +python-libs-2.7.16-2.amzn2.0.1.x86_64 python-pycurl-7.19.0-19.amzn2.0.2.x86_64 python-urlgrabber-3.10-8.amzn2.noarch pyxattr-0.5.1-5.amzn2.0.2.x86_64 @@ -94,7 +94,7 @@ shared-mime-info-1.8-4.amzn2.x86_64 sqlite-3.7.17-8.amzn2.0.2.x86_64 system-release-2-10.amzn2.x86_64 tzdata-2018i-1.amzn2.noarch -vim-minimal-7.4.160-4.amzn2.0.16.x86_64 +vim-minimal-8.1.1602-1.amzn2.x86_64 xz-libs-5.2.2-1.amzn2.0.2.x86_64 yum-3.4.3-158.amzn2.0.2.noarch yum-metadata-parser-1.1.4-10.amzn2.0.2.x86_64 diff --git a/base/base-2/diff.txt b/base/base-2/diff.txt index 0f22e291..12feac86 100644 --- a/base/base-2/diff.txt +++ b/base/base-2/diff.txt @@ -1,7 +1,7 @@ -amazon-linux-extras-1.6.7-1.amzn2.noarch +amazon-linux-extras-1.6.9-1.amzn2.noarch bzip2-libs-1.0.6-13.amzn2.0.2.x86_64 cpio-2.11-27.amzn2.x86_64 -curl-7.61.1-9.amzn2.0.1.x86_64 +curl-7.61.1-11.amzn2.0.2.x86_64 cyrus-sasl-lib-2.1.26-23.amzn2.x86_64 diffutils-3.3-4.amzn2.0.2.x86_64 elfutils-libelf-0.170-4.amzn2.x86_64 @@ -16,7 +16,7 @@ gpgme-1.3.2-5.amzn2.0.2.x86_64 libassuan-2.1.0-3.amzn2.0.2.x86_64 libblkid-2.30.2-2.amzn2.0.4.x86_64 libcrypt-2.26-32.amzn2.0.1.x86_64 -libcurl-7.61.1-9.amzn2.0.1.x86_64 +libcurl-7.61.1-11.amzn2.0.2.x86_64 libdb-5.3.21-24.amzn2.0.3.x86_64 libdb-utils-5.3.21-24.amzn2.0.3.x86_64 libgcrypt-1.5.3-14.amzn2.0.2.x86_64 @@ -25,14 +25,14 @@ libidn2-2.0.4-1.amzn2.0.2.x86_64 libmetalink-0.1.2-7.amzn2.0.2.x86_64 libmount-2.30.2-2.amzn2.0.4.x86_64 libnghttp2-1.31.1-1.amzn2.0.2.x86_64 -libssh2-1.4.3-12.amzn2.2.x86_64 +libssh2-1.4.3-12.amzn2.2.1.x86_64 libunistring-0.9.3-9.amzn2.0.2.x86_64 libuuid-2.30.2-2.amzn2.0.4.x86_64 libxml2-2.9.1-6.amzn2.3.2.x86_64 lua-5.1.4-15.amzn2.0.2.x86_64 nss-3.36.0-7.amzn2.x86_64 nss-pem-1.0.3-5.amzn2.x86_64 -nss-softokn-3.36.0-5.amzn2.x86_64 +nss-softokn-3.36.0-5.amzn2.0.1.x86_64 nss-sysinit-3.36.0-7.amzn2.x86_64 nss-tools-3.36.0-7.amzn2.x86_64 openldap-2.4.44-15.amzn2.x86_64 @@ -40,9 +40,9 @@ pinentry-0.8.1-17.amzn2.0.2.x86_64 pth-2.0.7-23.amzn2.0.2.x86_64 pygpgme-0.3-9.amzn2.0.2.x86_64 pyliblzma-0.5.3-11.amzn2.0.2.x86_64 -python-2.7.14-58.amzn2.0.4.x86_64 +python-2.7.16-2.amzn2.0.1.x86_64 python-iniparse-0.4-9.amzn2.noarch -python-libs-2.7.14-58.amzn2.0.4.x86_64 +python-libs-2.7.16-2.amzn2.0.1.x86_64 python-pycurl-7.19.0-19.amzn2.0.2.x86_64 python-urlgrabber-3.10-8.amzn2.noarch pyxattr-0.5.1-5.amzn2.0.2.x86_64 @@ -53,7 +53,7 @@ rpm-libs-4.11.3-25.amzn2.0.3.x86_64 rpm-python-4.11.3-25.amzn2.0.3.x86_64 shared-mime-info-1.8-4.amzn2.x86_64 sqlite-3.7.17-8.amzn2.0.2.x86_64 -vim-minimal-7.4.160-4.amzn2.0.16.x86_64 +vim-minimal-8.1.1602-1.amzn2.x86_64 xz-libs-5.2.2-1.amzn2.0.2.x86_64 yum-3.4.3-158.amzn2.0.2.noarch yum-metadata-parser-1.1.4-10.amzn2.0.2.x86_64 diff --git a/base/base-2/packages.txt b/base/base-2/packages.txt index d4ef293b..ce55eec8 100644 --- a/base/base-2/packages.txt +++ b/base/base-2/packages.txt @@ -28,7 +28,7 @@ ncurses-6.0-8.20170212.amzn2.1.2.x86_64 ncurses-base-6.0-8.20170212.amzn2.1.2.noarch ncurses-libs-6.0-8.20170212.amzn2.1.2.x86_64 nspr-4.19.0-1.amzn2.x86_64 -nss-softokn-freebl-3.36.0-5.amzn2.x86_64 +nss-softokn-freebl-3.36.0-5.amzn2.0.1.x86_64 nss-util-3.36.0-1.amzn2.x86_64 openssl-libs-1.0.2k-16.amzn2.1.1.x86_64 p11-kit-0.23.5-3.amzn2.0.2.x86_64 From dbb98a86dd2125fe7b2a40a18d926e3cc77fec30 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Fri, 20 Sep 2019 12:46:12 -0400 Subject: [PATCH 039/271] Ensure we regenerate request ID after seeding rand Fixes #210 --- provided/run/init.go | 1 + 1 file changed, 1 insertion(+) diff --git a/provided/run/init.go b/provided/run/init.go index 058e93b5..389fab23 100644 --- a/provided/run/init.go +++ b/provided/run/init.go @@ -41,6 +41,7 @@ var mockContext = &MockLambdaContext{} func main() { rand.Seed(time.Now().UTC().UnixNano()) + curRequestID = fakeGuid() bootstrapPath := flag.String("bootstrap", "/var/runtime/bootstrap", "path to bootstrap") bootstrapArgsString := flag.String("bootstrap-args", "[]", "additional arguments passed to bootstrap, as a stringified JSON Array") From 1bae7988248e084e12bcf05b729e0b7a05e7a377 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Mon, 23 Sep 2019 10:44:33 -0400 Subject: [PATCH 040/271] Update to aws-sam-cli 0.22.0 on build images --- dotnetcore2.0/build/Dockerfile | 2 +- dotnetcore2.1/build/Dockerfile | 2 +- go1.x/build/Dockerfile | 2 +- java8/build/Dockerfile | 2 +- nodejs10.x/build/Dockerfile | 2 +- nodejs4.3/build/Dockerfile | 2 +- nodejs6.10/build/Dockerfile | 2 +- nodejs8.10/build/Dockerfile | 2 +- provided/build/Dockerfile | 2 +- python2.7/build/Dockerfile | 2 +- python3.6/build/Dockerfile | 2 +- python3.7/build/Dockerfile | 2 +- ruby2.5/build/Dockerfile | 2 +- 13 files changed, 13 insertions(+), 13 deletions(-) diff --git a/dotnetcore2.0/build/Dockerfile b/dotnetcore2.0/build/Dockerfile index a8b52540..9f9b7035 100644 --- a/dotnetcore2.0/build/Dockerfile +++ b/dotnetcore2.0/build/Dockerfile @@ -21,6 +21,6 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ - pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.19.0 aws-lambda-builders==0.4.0 --no-cache-dir + pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.22.0 aws-lambda-builders==0.4.0 --no-cache-dir CMD ["dotnet", "build"] diff --git a/dotnetcore2.1/build/Dockerfile b/dotnetcore2.1/build/Dockerfile index de0fbd28..e7750c8a 100644 --- a/dotnetcore2.1/build/Dockerfile +++ b/dotnetcore2.1/build/Dockerfile @@ -22,7 +22,7 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ - pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.19.0 aws-lambda-builders==0.4.0 --no-cache-dir && \ + pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.22.0 aws-lambda-builders==0.4.0 --no-cache-dir && \ dotnet tool install --global Amazon.Lambda.Tools --version 3.3.0 CMD ["dotnet", "build"] diff --git a/go1.x/build/Dockerfile b/go1.x/build/Dockerfile index 350be5cc..55e17c9d 100644 --- a/go1.x/build/Dockerfile +++ b/go1.x/build/Dockerfile @@ -17,6 +17,6 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ - pip install -U awscli boto3 aws-sam-cli==0.19.0 aws-lambda-builders==0.4.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.22.0 aws-lambda-builders==0.4.0 --no-cache-dir CMD ["dep", "ensure"] diff --git a/java8/build/Dockerfile b/java8/build/Dockerfile index e89227d3..8fd895c1 100644 --- a/java8/build/Dockerfile +++ b/java8/build/Dockerfile @@ -16,4 +16,4 @@ ENV PATH="/usr/local/gradle/gradle-5.2/bin:/usr/local/maven/apache-maven-3.6.0/b # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ - pip install -U awscli boto3 aws-sam-cli==0.19.0 aws-lambda-builders==0.4.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.22.0 aws-lambda-builders==0.4.0 --no-cache-dir diff --git a/nodejs10.x/build/Dockerfile b/nodejs10.x/build/Dockerfile index 7de780c7..5c03d82f 100644 --- a/nodejs10.x/build/Dockerfile +++ b/nodejs10.x/build/Dockerfile @@ -10,4 +10,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN pip3 install -U pip setuptools --no-cache-dir && \ - pip install -U awscli boto3 aws-sam-cli==0.19.0 aws-lambda-builders==0.4.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.22.0 aws-lambda-builders==0.4.0 --no-cache-dir diff --git a/nodejs4.3/build/Dockerfile b/nodejs4.3/build/Dockerfile index fc283d04..8322cee3 100644 --- a/nodejs4.3/build/Dockerfile +++ b/nodejs4.3/build/Dockerfile @@ -11,6 +11,6 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ - pip install -U awscli boto3 aws-sam-cli==0.19.0 aws-lambda-builders==0.4.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.22.0 aws-lambda-builders==0.4.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/nodejs6.10/build/Dockerfile b/nodejs6.10/build/Dockerfile index b4ea2be8..7833bbb7 100644 --- a/nodejs6.10/build/Dockerfile +++ b/nodejs6.10/build/Dockerfile @@ -11,6 +11,6 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ - pip install -U awscli boto3 aws-sam-cli==0.19.0 aws-lambda-builders==0.4.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.22.0 aws-lambda-builders==0.4.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/nodejs8.10/build/Dockerfile b/nodejs8.10/build/Dockerfile index 1abf53b0..d469fccc 100644 --- a/nodejs8.10/build/Dockerfile +++ b/nodejs8.10/build/Dockerfile @@ -11,6 +11,6 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ - pip install -U awscli boto3 aws-sam-cli==0.19.0 aws-lambda-builders==0.4.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.22.0 aws-lambda-builders==0.4.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/provided/build/Dockerfile b/provided/build/Dockerfile index 94bd1e30..74e2e688 100644 --- a/provided/build/Dockerfile +++ b/provided/build/Dockerfile @@ -2,4 +2,4 @@ FROM lambci/lambda-base:build # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ - pip install -U awscli boto3 aws-sam-cli==0.19.0 aws-lambda-builders==0.4.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.22.0 aws-lambda-builders==0.4.0 --no-cache-dir diff --git a/python2.7/build/Dockerfile b/python2.7/build/Dockerfile index 911fb05b..02c57251 100644 --- a/python2.7/build/Dockerfile +++ b/python2.7/build/Dockerfile @@ -9,4 +9,4 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ pip install -U virtualenv pipenv --no-cache-dir && \ - pip install -U awscli boto3 aws-sam-cli==0.19.0 aws-lambda-builders==0.4.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.22.0 aws-lambda-builders==0.4.0 --no-cache-dir diff --git a/python3.6/build/Dockerfile b/python3.6/build/Dockerfile index 8cfc7bf1..a0ce3ee3 100644 --- a/python3.6/build/Dockerfile +++ b/python3.6/build/Dockerfile @@ -19,4 +19,4 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ - pip install -U awscli boto3 aws-sam-cli==0.19.0 aws-lambda-builders==0.4.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.22.0 aws-lambda-builders==0.4.0 --no-cache-dir diff --git a/python3.7/build/Dockerfile b/python3.7/build/Dockerfile index 8613975e..f5457f07 100644 --- a/python3.7/build/Dockerfile +++ b/python3.7/build/Dockerfile @@ -12,4 +12,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ - pip install -U awscli boto3 aws-sam-cli==0.19.0 aws-lambda-builders==0.4.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.22.0 aws-lambda-builders==0.4.0 --no-cache-dir diff --git a/ruby2.5/build/Dockerfile b/ruby2.5/build/Dockerfile index 40cd063d..4f5f4771 100644 --- a/ruby2.5/build/Dockerfile +++ b/ruby2.5/build/Dockerfile @@ -14,4 +14,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ RUN gem update --system --no-document && \ gem install --no-document bundler && \ curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ - pip install -U awscli boto3 aws-sam-cli==0.19.0 aws-lambda-builders==0.4.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.22.0 aws-lambda-builders==0.4.0 --no-cache-dir From e12c86491dfa194f83aa9519287378c733f5e3c9 Mon Sep 17 00:00:00 2001 From: Ari Palo Date: Mon, 7 Oct 2019 17:26:12 +0300 Subject: [PATCH 041/271] Update Golang version to 1.13.1 (#214) --- go1.x/build/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/go1.x/build/Dockerfile b/go1.x/build/Dockerfile index 55e17c9d..e9e81e87 100644 --- a/go1.x/build/Dockerfile +++ b/go1.x/build/Dockerfile @@ -1,7 +1,7 @@ FROM lambci/lambda-base:build # https://golang.org/doc/devel/release.html -ENV GOLANG_VERSION=1.12.9 \ +ENV GOLANG_VERSION=1.13.1 \ GOPATH=/go \ PATH=/go/bin:/usr/local/go/bin:$PATH \ AWS_EXECUTION_ENV=AWS_Lambda_go1.x From 42cc33b19792a25e829e2d8d01b798d5bf2539e7 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Wed, 2 Oct 2019 17:25:46 -0400 Subject: [PATCH 042/271] Make diff output a little easier to read --- base/diff-2.sh | 2 ++ base/diff.sh | 12 ++++++++++++ 2 files changed, 14 insertions(+) diff --git a/base/diff-2.sh b/base/diff-2.sh index cac42f8a..13fba545 100755 --- a/base/diff-2.sh +++ b/base/diff-2.sh @@ -35,5 +35,7 @@ DIFF_DIR="${PWD}/diff-2" cd ${DIFF_DIR}/nodejs10.x pwd diff fs.docker.txt fs.lambda.txt | grep -v 'var/runtime/' | grep -v 'var/lang' +echo diff docker/var/runtime lambda/var/runtime +echo diff -qr docker lambda diff --git a/base/diff.sh b/base/diff.sh index d1d937df..c0370c9f 100755 --- a/base/diff.sh +++ b/base/diff.sh @@ -34,28 +34,34 @@ DIFF_DIR="${PWD}/diff" cd ${DIFF_DIR}/python2.7 pwd diff fs.docker.txt fs.lambda.txt | grep -v '^< dev/' | grep -v '^< proc/' | grep -v '^< sys/' | grep -v 'var/runtime/' +echo diff docker/var/runtime/awslambda/bootstrap.py lambda/var/runtime/awslambda/bootstrap.py diff -qr docker lambda +echo cd ${DIFF_DIR}/nodejs4.3 pwd diff docker/var/runtime/node_modules/awslambda/index.js lambda/var/runtime/node_modules/awslambda/index.js diff -qr docker lambda +echo cd ${DIFF_DIR}/nodejs6.10 pwd diff docker/var/runtime/node_modules/awslambda/index.js lambda/var/runtime/node_modules/awslambda/index.js diff -qr docker lambda +echo cd ${DIFF_DIR}/nodejs8.10 pwd diff docker/var/runtime/node_modules/awslambda/index.js lambda/var/runtime/node_modules/awslambda/index.js diff -qr docker lambda +echo cd ${DIFF_DIR}/python3.6 pwd diff docker/var/runtime/awslambda/bootstrap.py lambda/var/runtime/awslambda/bootstrap.py diff -qr docker lambda | grep -v __pycache__ +echo cd ${DIFF_DIR}/python3.7 pwd @@ -63,25 +69,31 @@ diff docker/var/runtime/bootstrap lambda/var/runtime/bootstrap diff docker/var/runtime/bootstrap.py lambda/var/runtime/bootstrap.py diff docker/var/runtime/lambda_runtime_client.py lambda/var/runtime/lambda_runtime_client.py diff -qr docker lambda | grep -v __pycache__ +echo cd ${DIFF_DIR}/ruby2.5 pwd diff docker/var/runtime/bootstrap lambda/var/runtime/bootstrap diff docker/var/runtime/lib lambda/var/runtime/lib diff -qr docker lambda +echo cd ${DIFF_DIR}/java8 pwd diff -qr docker lambda +echo cd ${DIFF_DIR}/go1.x pwd diff -qr docker lambda +echo cd ${DIFF_DIR}/dotnetcore2.0 pwd diff -qr docker lambda +echo cd ${DIFF_DIR}/dotnetcore2.1 pwd diff -qr docker lambda +echo From ec3f2893bdcd97cce0eec87e962b6362fd019045 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Wed, 2 Oct 2019 17:52:35 -0400 Subject: [PATCH 043/271] Add dotnetcore2.1 pdb --- .../run/MockBootstraps/lib/Bootstrap.pdb | Bin 0 -> 44780 bytes dotnetcore2.1/run/update_libs.sh | 4 ++-- examples/dotnetcore2.1/test.csproj | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) create mode 100644 dotnetcore2.1/run/MockBootstraps/lib/Bootstrap.pdb diff --git a/dotnetcore2.1/run/MockBootstraps/lib/Bootstrap.pdb b/dotnetcore2.1/run/MockBootstraps/lib/Bootstrap.pdb new file mode 100644 index 0000000000000000000000000000000000000000..620532bed8cbbbc8fd5fad74ea36aaedd05be8dd GIT binary patch literal 44780 zcmd752Y6h?_4hwpyjn@Sl2%$3t9Qw=B=_FC<=*6mn=H$=Y+2n!80?i~Obrk)H9$f! zq1Vtmp%X&y353uS5<;kfB>X>T?%maRF+A`4KEMC_yn1|g<~wKZ^f`0p%-rj#OXo~= zD2I|iAGB!t)cjpTst4-;r#7`nVt*L-^`}#|?wNXVruW8UD_bXC(!TQh zl@8@u@%CktVsn)))nVdof!-nCy)LENoJwVbzXU&u`#ywMQyp$O^e3o_z)`qFSL+}@ z6pkl;Nh1NuvcqvCu0-K)kmXR5A^0TUa%dUcUxV)<+S9~-HO`?vjB~1c;=%Dw_1~aF zC8RplfeeQ_l;Ko&1c%C>;8f@1UV;1O42SyL45vDIrbGQ=rc-@~>!0OR2WL6d z`MAqwJJjacPW3GA`?x==p}aLtl{?3whR<=Tk8r=i&6?*>1Lrx_<+!)u4xjH(Gv_-DLsvpKK(|BpLytkfhhBl+faLo{T#Xgx)!<*dKP*I`W))#aj0~t8kzyEfjXd5pi7}U zp$DO7pqHT!p--W&q1YJe0aZa`p<|$S=yd2V=xyjb=v_q5mrz!$L+yb=&{t3avv2~m z8`=+@1|5Pff^L9rXNLY8@-jn%P(D-%jfSSjyVRec&!GQ6Zl6mfLFrHtG#r`?&4QLf zt3^cqkN&yTX43tg zLg|u5KXr9RKXnuI5cCA}67(kYXXx+Hw@_;TeyRYP0$mKf0QJl4r_!Ox(0r&7O3Lb| z3Zdc9YG@a97IYuJODb>!6dMUqFvRC+B(8{ZLiDN1Xs&33&=UY8-SLbQSan^giS$^r#$Y473{B z1)T-m3jG5L6nWHm=p^V-=&w+q*rNtR3!&qoL(ol-t0YEkDUou=s6E;h|Nkq0F={{M zJF~>A>Po$8SDBP6Ry|o3tDb{ih2DbRhdzNmhrWdz<*~{OB|>RX4pa<{gf4>ag^~uu zsS}`oL2VUrY9DlAMZEePN*EZgWJq)M2h{U}l2zg0WK|8- zK#QR5&_U>;!71uJ=&w-TkQ6lnS_G|u>W2hX?9iY}g3_T}s06BnhCySYDbQ?aA+#J? z3vGh7L+wx(6oO8KPKVAJnyMxYOI0E0H_!)A#qdc41U&&g3w;3n z8(KIbO~sE)Q;VRBMy9K{QRylGWk7jQDO4qD(Erw7hN>Tx!Lu1^8`K8vf%ZcOp`YpW z`ZE^#GZy+Q*XaJL2&#aFK%=2a&<5xrbQbgk^f8n;roT#u^2QvkK$*%tHdEz6rBD?# z92y5rg%&_hK_5f$<1*E9=-P2v>Ko{L$TL1m`Jo_`1rLcij z@sfXz8ZjY9O@$Uf$3R;rNO-QgYeKGi5XzdEtID8x&_|GaQm$GL-3t93nlL$6-3Yx6 zHBHG?S3=K2{io)tA<$;%T<8+$O6X2#(6n520J;lGn+_kk73!RktB!+ChOUKfosp-U zGxOA7Xw*z8SDspI(K!c%C&`fB}EHjSjFI3mhDpbFL?tvbL zUV{DveFZsZ7pep(Z+4N|3-v%JLuW$g%`R5oLXMhZ<%Rk~CD0IP0#pO7t|?J>LJvTX zL9asZLSNLBs+u{aY7w*nYJ>Jb2cT1-^Po$h!_almozMew%9MX@nR#6G zLu;W%b|p#;P*2Sppq__bgWiTdfc^%30euHK=MPY^>|B(pP{+)#P#d8}s1@1`?StMb zt57H4o(7!_U83U;R9OoKszPW0G#DBMOe<1hbK`LqSV092W3%X>nm`}x)*v9dIfqH`UmtM zC~gV55L65efhIyTp#{)#XdSc}YKC?}`=Eo+>Cm~*CD4`74bbh-{Y$JoAG6&TwW|wa z|HP;_m&B+~pwFT2pyZ_{|Nl>ajLKXZqY9x4XecxmnhMQ-z8|r~hfzE<1 zgf4@wfo_5Bh8~8Vf?j~$fc^`WEsIfupi$5yXcn{(S^=$xwm>b*!u5<*yO+hPeb5P! zusC(vvN&}%bRl$UBs@u7wT$&ojizbvR;hW-G(3;hN94EhH8 z9`e)%l^+U1Sx_M~02&O9f+j*UYQtqrRr6|7)lz6RRHwsJRbzyosak6@)oy4%bfON= zRA*>6SKSnem#bc=%~fwee}?{|!(-GxYlo--%d^owO*=)7fiXcKv-|k*;5-8hKR*f= zMB&0HToi?iqi{(SE;Vor`IQ-1HVx%bct8}ch{6L6Jcs86J81#2R|KI-unR1I!WZl| z_*GzO5&4tyR7c@KQFw3^9ukFzM&V&mc({S3z9XXWNCS)gWt4#jfJcMTv+-HBnK1?y z!9Es@o~ilr{5S(=fX9R5Y<>!Of`K!^6T$H|zsJTtFlHt-1)2okZ}W$OCmXolzYCRz8Eoj!8ta*6nwzI zGCof*a6b4TIM{EH#M z?5mJdQdbL?fSd7;ws9$#qlQR&W#9tvc=)&Rd^uSDzP51%Sk_wEd<%adSjN7rcY-Uy zC*ZHJaTWM<`~}eM@Ty~ z$Ad?M$J%%TcrLii#uLG(f-y?#_>;hg!SCDr$>5j4$J%%b7{jTW48D`}r-J2g1&-ip z;P1dPzXeYR4}d52y$d|Ujz5$%?>2A;Y2E{#Y4c@0yVt-C@CDC;e;MgXn+l!{o<>^7 z*tiD#5V+UIbHFa1odUj(_;bPXHyOI$z;WOQ3@iq+2MsL!_YioV{k-rWHn6M@zcsM5 z|0Ce}c6`B)f*06W#`j|eP6R&=UTE`0K0g6oWMdhRPl6ZQSoH6wqVVrny~BKwKhGFg z)|1~GSoqHxSoqHwSmxvNQTT-@{9+V-$-p8HUpBDFqgM>P7W}G#opg)fTIyE-PsYn@ z;N^CGH^YD3z!TxWVPIK5-ZbzY#y}Wf3Qy+PA6e~I*y&0A-ZHTC&)WtT{+|pi{q>H4 zh5zR${H}o|{(A(ypJZ=YIvS zva!s^PYgWSz@kftzV|oytL^ww{=XYoWbCH~UQc-hA47a;`=K^o11<&UgZ}}4Em-~} z|IZ98`-OiRSPV6v8+Z`-3j@o1`_jOoZ+-<{XQwaxucPocQTSg59zy(YqwseImh}E@ z;9=nZ7&$YT)tUG6TzcUv6M2-v9&4c&jk*RPaCp zi#)6}u*jn-1K$U(Hn7OAL5`eA`J_BUz#HxI%KEt6z{%hh2A1_`rK2Dc--G-X+{p8y zuYF?kw}EBtc*(|1;D_+HLaT_s11x{ip2y$~W0?CA1yfX=4ugBluVFq(6ke6aM}9=Ri&1-FAHGza5SN5zI9ijl1BBu5y~q zKNkF7{8>;l@%P%#%lHx84VJMn&c;1pSx?Gr+zUQr;}+r{u%AyPtku9WzT3bj*!)T0 zc1KkN%lgw{;6?+B?5nr&L7o@gOXg1}bvn^bPuhQH6y6nu_c(?`;>&#KGO*}F#~N75 zzt_Oh2FH=!Nk)FhJ7Oa^3I091DAl$1s^u@JI^sCf+fB44J>#0E-rqwp0`_;3`yG7A4X3SSk4ua3gk zMB!_r@O4r6`Y3!u6uvPE-(+BsZ#PHbTMYa%W8qduO{6`!G^Kt6zR~WFlX(6%@NG6e z1AII94jW$zz5{%}jb(faegGUEpLc>EwE3cc-vxfi#sk6kkY^an__^1>A|LKEu<-9U zu<##n%#S>u3VzVQuiN-x@{_TBxs4wIKY%|DdWiUs+U2Q{v~4V7E#JnE!@mM7<5~Dm zfDhxJV&f;l|G_W$KMemVu>5@l{TBQ?8+RC3WV@^H7+CmE8d&&G8CdwQ8d&(R8CdwQ8(8>n7+CnCGn?i6gMo$rM+3|AZy8wle=@M} z-!ZW8|Lj;CNxuyIuECf1?-^L)zi(jSe_&wYe`us9ZT^vgW&i!Lfiu8=F|f#U!Oznl zV!s`0;}^gp%VbRb75m8@~sZxs(fi&-3rw&&wPV`~g^G$rCpI5WF1!6*m3|9Kyfb#vg;P z!#~@`e*wRSzdxj$wb&4-7=NN4hVifP${ZK`3H<+uZWk1?7YL+4u%<0XWvi2}COd$J=-f{2~MQgD+Tag*U*PY4el8 zH{)Ld6~j-lpI-+q0jJwo_8X;Oxlt~EKAbXerj6SOD+g!UcwrQtZsTnDGS-Wr0mRR- z<8QEWE_e!lX|D?Sa(i9=q`d}4;YtJVgp>Vx-a~9Wp7^pBNqf#BlL_|oGQW7uB7&uUylxS}!sm612p0ZaXJ-UUe)9}0 z@^YyWU!GrPV0pgQz`~c;FT&*!{t9PT1dG13(!f%ORR)$it~Ri&!N(X_;;%7q6?m@!Z0}FqHfrVdZ)K}K{jRs%h*Be;kZ*m?RsgLXz8w@P#<7NZPer8J)-Wr7) z4J`HBX5dorb|Zf&Pm_VAJUfi|Ql4f5uL8FiSkiAbu%s{VO@;eQ(r-7gq~GBTMffuR zI}I%TwbQ`TU%Lz}{M`l?{vHDhzstZPzmJW=dkrl0JI=t8-tkd*pYw!BdF4D`@FeDk zj6Gh1(s(jh`X&#&AN~}3{!AcD@HDWrh3F*R&QsKMn_mv@F|d@k*T4br0R!iQ57M6D z=OxV(4J_?@l7WSPvVnzvih+eM=bqv8gnycWh5s`H3;%Qj3;zrQ3;*W^7XDcV7XH}= z7XBdv3;!Gg3;$dL3;#R=3;%or3;zNG3;#j`3;!3+Ga~i91AH<38Fqh2{7Vch@qcMx z;s46O!oSqO!oSSG!oR}6!k2U9aDKwS(!j$1wSk3ym4StSwSk3yjq^|>y*=P-!L#i8 z$oedJHaLi1=Iix5FK>y-pQLw#fhD~g4J`bd3@rRxoEJo%7kPeb6#h*VzAXyh9)<6S z!gogDyQ1*jQTU!He6LYnDgS*2{}}N71}+CbVBmu`o=f}4-0OfIbY7z7+wCRu^PwpG za1{P+6n@0Og*^W#c!8aswBKU}mhwJsVBtRzg`bSVPetLU4J`J%-x*lO!!ypyBl!#e z_XZYu_^g3NKEL4PyxuOa$k!L6@Jj}k=U+Ckr2mS6<@r~m@M}@{^(g#?fhD~+4J_&X zAqxM|z|x0rMd7!j@SmdaJ5l)0QTW{`{9Y7(KMH?fU@7m12A1-D6oo%Fu#C6A7+B)} z)xaL`CsFusQTS5>%lh`2fu+B`a`IM+-M`Y`UmIA)<2MGD@%S$T%l`XY@Iw1}>7P_r zAC~xO1{Qw0fu%kf2A25!4J`394J`4q3@q`pqi~LaMPB6^SmNgySklioa0R#kyvUfJ zg;BUD3KvJ=k|AyIf}6do3ZhezQN2A2Fr8d&t*Q3jU$#=1%(<&*I^&cL$2 zA8%lZKgl&962BjKvVrCKDF&83`_w2r!xbBOUgFO*u&kQ1U1K7A+3(IZu*9EdU@6~1 z*NjMf*^e!X!i%Huk|?}13NMSowNZF^6kZX9S4QDgQFwI}J|+sUiNb56@VY3xJ_>J$ z!u772Nc%{8Z8C5cxWT~EpPQrbRs$!(-|ni7q$lH{$-vS-I}9xOH5*vsw;Fg1xZTyD zYVG-P7I>$DCB0n+mgjdz;XMYH_{TE7!|91Wu-EnL2$u07e;b*+PIbK$Pi;hqh5c<3 zpybz~ehK%7;plgSJJhQ#iD~(-*6CPJS!r6_r*upSx6*OhIa;|qt8;l&bKl~ZHyd>P zT~Z0PPN#pP_FE}j%3|bFe-@EzmvD;?k#M)#N+@q{!{z-YLcBVJ-7J2G`W@je-ro<$ z^yoM-cANmu^431TPIWhNXcPTZ8f9=QUZ&^S6PcQBH3ok_wG6ID-NrBPHxb*be3U#E z$tEW@Np7)=q`~#+R`TmO2})WcQCrcHbV=kSSMrtkPR(Vnqw8BrI&R%oyqSUDDyP?e z>ON9N>(svw8^43}v$^_L_KKDToUa4mcd5zzy7gHWI~dYr9VOpzKU)1IWwt_``erBP z)vaxDk0)hDg@}E%UjKfnp8~y0UZca?4mChoL2Wz>MUsCX@Cf!PBN3>wOPaa`-r|>b=GUzr;TKB_)6t=x*JJfbe(6EtyVXSF*_-vVlXUM)A$_q8$Wuj> z+^Mdjgf7J^;5-$hOI5-zZ?Y3JhLZ>>l|0L?N&oVB5uSZX`)}311IX9GnTez(Cq2Af zsKYID3;>T-VL)GmJG)ndxy zQ~#tce!c`DcFRWyPt@&}gvA^yxDJuB2>ng>%bU6kQWvax`gf@g7YnvSS^o2NuLa;b z)$d7@w-@Qy=0d5ptAsR(VQF>(nK5=@Pni35llTn7Kcq+*cgFYj^cxp1a_>S|(8FMeHWFlC^3@b}ZVyghvNLwcu$l6cjA zY8tD);@LRmp-1Q)VsfseTl+1-UEE=ikl)~Us*m|~+aXWtI1=tszvs7~=EkT8@yF^o zPW8i)?9%OEr6~z>S6%nlnYvZCP#!n8f+V#X!udu7rHaulCU0ZNpV-*=&WbM8Wb)!G zJ^b<=8h%}9*pfm6PxVtf`SqwtI)(oHVoxS_`hu9I->K~uF11+4c}Ax{m6+`JDG%Q^ z;n%4Kz;&s=>GaF_<$D*jyhptbH%9+*zNnuSu2a?Uyi0vR9I@NV?{@qSHHi3F+I7#q zqC+0m+!S3l%l{E^c*~6zuxz*vb*pZrTZ!pXQ+U>`E~gfJtAh{^I;fOkfsUWT*l?<$ zddyfW!Y-X-7inR+*Y(<`bNo!l$DD3Jt|SBAl6oFSi0or z>5_lXuTxo)*^;Qch(S7pyKK2?$=><8{FZdRLZ>Fb)|(R8b?`g2%tS{fCf~dv7g8qN zrCN242lZ3Qy6<%7tNFUctTavk^W-jRtS1F|UTP!ww{en?Bp{8z*NNh#!9-6GU4w7c z1ZB@AdXMO`d>ttx8CUjsV(;NQKsmC96g^&aYpj$dVgnMr%36bxN@b5AcK>{cuO^ij z;ub;08jl`OidzPiYkYl01@1toQsXrPt8oWGgEfAyawzUFNcI|>npKU&9R+*#0Ujb9l)2X`(sPvb8~Ex=s}Ez
hhfQDnOWa>UmqM38GFGpE4ntQ$`fu9O;_(wluV3HPQeW59F<5nW zwKmi=Z*EyOL^ZE(Z0;O36nCfPiSQ(hppnCE9-hXIWpy3fm#N0)T`k)irq^}WscjuC z&Dzu2-qN~$lLU2IPRB;#PwD7tu2&6v>eZepJC1E$)?QcNP_xNS08f3(mgdIJmPIWs zO`!IMww(89UYA= z&CBbW8p#G&-`>z^q0Q}eI~ry-HZ*NgO)Xot@HM(A^_|4Ef|_^kSh#tnMCq^sb~JQu zZP}!DHh0uf#KvPAHZAR}tKY7xpz3#abhhkR+R)xeM#na^*EDx@)-~5R*o=nuqp%vo zaVXKw_U36Vn;KL@dwWZJz4$t|w(M-$G-FSF(@qej=&0M$K+|t(*}1W)L2Yj2$12hS z%4mC+(UBTTuW3(RM@PesjZIw|=o+i0x*Z!g)h*dcOY&f2$Gp0Z&V|k7*xA0Kv2*LZ zM*L0k(|BJawIX&~M|;P76uz8&B5Eqk$XRbx5O?zY$_J z-jVFS_RrTtJsUZ?;;m*!*XiJ~h&Uso(b7#XI>zQ43O*6rb_S84D%3xX2(9zn`+|j^TwLL9Oo7R(T zBV+$)-9IJVPKru&G;Crl?rc!H9IB*QCW4Z(X-N?oOIpBh9+xV@yW%8x*gKb+Sy7YZkpe)Lp65t!+2*< zHP;Oe?-{Ux{jLWW+`7dlg1;VuvI5$?Q!t zcQ$LGH>JH<853x}7Iv~GL?oCI6q#pwM(bFTrk)xaiD>IX^-Yb;Rx2^>wP&CX5lO+= z>C#{`D-2n-T8pmTGuqYp^4n}0=S~Ru2uYvJ6c<0EU({f2Q=)73TSM$X40ZMSssWg6E8Z* z9`Ai|cDFOn+NlSESG)F{iDanydQxf|9))y3JEhV~Y|W-cox0ixW?4D~=_O;nwLS>8 zmx>5Wq@;c-Jl_TEX|L;&p`jV_kPHu6&g$e2bCt8!K((cT`O{c0sdZ2qTfBDYrt1)y zvXphNrg>^tCwwi=I*?(EK+Dn}9cgHjYjx69P9r8qNvo!IPA53n^{>L~+&Reoz z_}Jx%G__=G_l)Ed9wRf5}l+PV?0|U zEn*j>Lv3&9>WEC7g&Vgu)OU*Vq2-F|XsO@c&`Ce-Xld`7*SMpxQ+4cY)k3!haiVtY zZ0eNdM4a%_Xr;ltp*qb3>uIE9WuiuUgoqoK*OoX|q7c=gS~Sd~v@oM&pbl*kRz$Qc z+e2B*ri7+xGSKfgaAb%+S3r!oyN)KS|5@e%&=m^H2P`rKY}j_=aybE}ryQ%!`3D zm#POBUhce9d6sr{u+}A8PW7~wrY3rZm7*i_he6f$aL7FhYiVmky`|}GinZA_3;C$4 z!|TX$jC9nxT3S0}Wjc4XGD|b&X^m?stLes;J=0p+8>Y=$QZ=+{h^wQ$K6YwLODB_| zt~GAi*2eZtjN;BNw=`tD{7grKuCDJ$9Hh22?+N`pbWZ4(p=&}n23N;?KXT!XO^rRl zlCwH)e0AIh4S#&xLo*aqr-+j~R6F@2wUakiJJ}PplQY$FW@;yQj&|}ESk4md_*Vxc zm5L48Dc-D|vKH->?hNovVHMmPh~b7H+w*u&vQM_l#rxUarn-0gmGgMMF(q~^?xMw& zR6B_sI+^H$eh|HXRP^jPz9h*mICNo(xPj0m+D!^wrd@yNO6?|uuCc>!u-#jGG;fH|9Twv&-j}qWyumxlUDrK_VD>2Y`{y ztHw*5LN_-qk9D&x@9(i5k>s;OUj)Qtoe=sa96QC$Ba$NQlqZg53!KzVPhi zz9Z@QoN6v@8|+RE#5g+Lv{JbTD`c!QnP#F9o%^%780+=RZDFT!?Vaf6e$vtecdsHiD8bp% zc2Y2Dr|$Ixr$z_obT=5mkwkL3w-cOZrX7;4ZgzJY;VDuS>QCo6v6ygo8Z(^qC5=Vp zBVhpv3rbl3NSKbNi_sURddTR=>b}8mxwqQx zowj?Q?LO=e5U;TNDSw<}lMKrKo-PR~=zh^3YlUQ3A-UauAY_A^IOSd)C$Ia%aL52F zWPJBO{mG7v62}gi*!|ydNS+m^peNQyS$eyoC)Ka#K)x3%QBRKFtBPfS>~S+1Gu$+B zWQY+vr>DXnFQYhK25_XR6+J_Am4^3>^bcje7xawt`&6u3ZmK)Ef4sjyMx-x#Ec+7b zB1u&C%+sxr)3c1$*dVPDwCbMSvz9WilaLfEq<_z5LRQ<;SXwNzrzIRxY{kj!*%K9# z)zcjgvD3-!IfamL$}&GL?<(fs0cDU>M|JxX%ZD_9WN4HGE3^6$tSUWPA}i>CP9@Z6P%<& zAH)lDG0YSR(&9sl09~*?X`;(=G;V^(l^n@la}xz-yN`gm5pI%>9N}t6(OD~iMcBA|-|~wM zHLdqux-rJd`-OgY*I+d?j&9Wbtk=6Dn#htCtWhzRkMC}K|5toGk!Zy$kY@v4GG+`` za5W`xAXS<~dcM@%<>5^TBCtTSNJxd!WTl|NvJxu}GE2fOCI5o$T@%YXjj(=~Zp z>pz~k?HNZ4lSuWi2qegw!z$vI3aQk=Xoe0|Df(>E@DvFOjL<=RR~=1rj1Ec~tAh%4 z5;f6DEbL1nb*YY@woC`f_*`x`CnOm` zdU&*3!kqjt`r{lc#aAeihY5pu#*Z-C@i}%0WKi{^YWy$|j-{lfp&JnDdM;Inu*(*W zwaU%Vn<%;+f{t149!-@6E)_wD{1_|45@nGu&GVsq7HKp_=XO4;S2{mi_DN8T}N zn1?IOI`3F_ms2hDuvQF}iH?rp}I?5l@5hi>k3}w zY#SPGw_w_jmridEoICppmQ2A4f2v^XQbd2RX66yA}p-l%W%3=?dRgWBmt-UIL;IkyK9hiqa>9wSTzR+ga}EDs*h}dXu$GbfT*k zIyQu%>hEQQ4AvF#bn%1?=_aQ)!@1hq#mC*_C@JULK9wVqb%^wRxf>Oz+)3uC3Fr*N zSk;6#zcl*A`nG(EGD9FwIdIBeExdY(u@r|c^e zq~&8>>^rhlQ5<8DdBVpXDTH%_)0^U)7-7Kn(l|SiQ9pN7Bi9YTc;<DW|y-t~K3vz^{Fl@!k zUG@ewJE9iqy<{KMTAtn?=~Ofq<-*o5*{jH2Hw<;;KBy!2m&joTnv;95mRVZ49PQj4 zcZ723IYPM%YokB$KtvlwAxCP9_84$Z*AJkL@@Yr3Q3uAIz!BPLTv!{;6G?*5^h=|} zTUG?E+z$3)zd)jyVM(@x@H!`R_fKVcnD3}&b~EP0p|fcvQLkJ5oU>6W_g2_X}b*~^4P=*FsnZi|tjoQ)M|cY0muUpR^R@9ZkbKws$X@+XN6Ax=aP z-`A8M9+aid-9}|mrw=e3h)$l4O}!`kef_yQ-FpVJw^^iwa%|{54?)V7y7yw6c^Md$ zP-0f}UJYR4NQ|Q1n{|we-a80H!Up9IhtK8fy&pXfl|EH6Vkxl#pY;12+v2#>L9L`H z`Mods<0OU!UbjHJt#OI1)`u#U<HYl@#4x{nrT4;VIn$rR6232{u0y*~)cJxW;iQNmK4d%dDG*_EZ)xZ5Lo z5@Djh(L4@Mn|yUO0n?syZ$MgBKI#O_lxKrdHQid8Q6-FYVf2L!lCVN~RyT5AygVsT zAJpk#1qr9;X{(^#fzUVfq23s#$Ur0wKL$(Wf#1z4l`V!BHaGbawcAJ37}?&Tf5%AK zVpM{3tTf_#*%Bi?oLG`5j@oFbxBUGjt{w@=UY2&v2#8r#=bRTu&a8^;DP{Z2<}_J) zmez1~_2bp$xKuUJv!B&TBxa_U$h^+%=bcn<4lh0cPk0lS=a+qlHfQ#0^)) z9#%RANWjO&xKX9%B7EjZ`qRXwHqg75RNec1swAN;Ra6l%wIF4J?wy##yvO^kFkN3i z=2bQ?KbVCp^x@wRX5sm}f=@oO^plv{kAKn8a`ra|{CniNR2 zJJN{|WIoN%Q!I66-<~AFGT|pJ(42s^TPc>wH)w?=B1FmrSF^c99>$}IA+x=*1EB3B zT6R6shf$D+zeM(+ebX~ldNCaL82CB6nA_-0DJoIAFWl8$N3%2xyZtPggh`I60*AzP zX zD`b>-Q>`V6p^g4HaRLoulaMOu|zrSN~PqM znjSh#OQwYW%$}W9NCq5Lh;@op6a~<|AEgzu3G;~Pv9h5{6&pg7FUY``7QmirMsY?W zb66lsT|fprQN$2K88SUUrX58lO*ciiSboDzAtCwQC4`{K zde|0piRmq)yNWtf3A6PvEqVE3ffoybvrSBIdEH}(l^`>eMKskigjfv)Z(5kgvKWZ) zD)QyI`C;BG->vOL zG>?q?g6`|!Y3nlr5A%`iX30xF#TB4$rv_g}(MvBNTNWo)pzr&t@1YPXZ^EE_Yo zo>s|HvNm)d&u-b&B1ze-@nv_rqhq!3taTiE)jO|Y&rwvDi*E`(x_fD=D|yJza$l)> z<(<0Z!_OU>j1 znfztQKz$B`ZCO`GZ#R?l*tDdvUR#+1`cOm<&;dM{u+=|Z#d*+e;=GKdqy3O4HisN{ z=p=vlZ*$xe(PACrb%zE*Px5p@9E+2W|MKt1AKG2Q;=L;L5G~GkX4*p^1%}DaEte0K zu(Tlr^#KFBeot5E6j~egp)W8w33eYGfuZroA%)aO8+1*?mmKlw-LPJi)8#0VacgFj zB`SYdS+G;_d+7d*2aaz`Qohh>YB)6rbPpAk*L~FD2gLATmX8FQb+y%~?%4sm#v&IT z?VheGl`JcIU*%|kAu7eo!lJ|a7}2#x!80DSN;yFaIY+I~Wo$zO#{&01m_t6D7wA5R zx{o?a-B~}^hwFLy|4Kb8k6zECRcw}2Y^vS(PyBe}r>PO1=*E{>&N?-+`)#98PDks} z8$au)g|eD=sgz=*%F@mIUrNC?FJKK;4x?DbJr=LWcT`@!JlB&M=0$aUyl*04|XqyD}rTQy`Q__mfI6r z^FL|pp7+GFH&)C@D&)ULOC#ew&%9XK&IFpUrJy`H(Gm4_W_n|6#gr9G zts7F26QSzJrKsu|a-Vg!Ttw!2V)0K#waXd4-Zj0kZc8(laU1J9Qp1N*)}{CAdEBgS zXwPsQKF@LZVQOBB(d6)lQuo8(QvI|@_A}%jT5AjMJy84j$R(^R2L!*k=#Lk#e)+23 zpS|n-iVrgar!TTj4ikel%3-{$aQx@1GTvf6 zPAt^?-%{@V96U%YM$U4ycK$bKeJaX~vVEA0VnqQ#!ItG+Yfq`pxPIu$>?$-IVbm!z2O6K5ti|3SHvi@{mrD z{f0|!5G6Tgvbe@fcJnHbBMAj=nTOr-au36c5y*c^#Cfd@NdEgZEhpTer}p`)+2wWl zkLb=|FnDL|wAR4OUp)T#(BC$V|3~uYOI}(kN}M~0C10F@ z+DYYT6O@W>f|EAha^zh#li|>- zj;w}a-qy>fPisWAT_`=tMvDK>Qgn_Da_+lOtd+X$C;R9W4(L(RF)y$W<>+CF^vpo% zaV(g2yn!Ahd9}pTR#JAidF(Q>=O6~?eNF?DTFW%S!qNw)pe1bss4Vf*FU&S3$Ym40eiCI8K|?v^UCYh$YQ$pNoV z&2S^+#!6&HQk;BqFM#=)sxb*D6l(hA{sb{g$mN0=p_}}PGIgD5hwR;lN-gOab_6Q) zU}|ip3O(S&q}a@MotDn+Yh<~_tZ!of$V|EB=HMl}?|x+OC)clS9&op>Wx}>ccHMRA zRx$j{ieWcHL)+Jn*wJYN#%MMyV-jHHO9M05n7lH=S>I#n2sUqAs^gTyZhl@U^dPV} z*U~ekkkcZ@ToF~pDb9;wjELDe#ggQag3GF5j*4qH1#AEM@3TI6b>8SRr>(p7g|*Em zm+k%8Ns>xUI-`Pj(Mz?nZKOXhpZ5c21nfD}Pj0SccxgI4)e>nZE3Y5CK@y$ibHTDX zzKIWf^xXdI4}1O-Q#0zur*FIcR9*1k09loCa(Ml|)XjVMB%N)gdX!g7qSC#tH2BY? z1@E6y+_L$O2h#5^zx286-`qdAL=0;Fv_!EmVjm>&d=keWV=qq$dNGq%#5T7ak>Yjx zt~(ga`}NJgiW#}j`m4YLcY4tzMft9l^EvpL*_ z;(#_7CQ!0$1Nw+ZdvO+YO(Bz z=ZZY$W`jqhjF$sOelkT;V6AiWI*!n?*6g$(46vf6Jh#Zd( za_>)+``od7rjfcvJv7ThRIN6+8fS|6YHqw5nUAtCM9v2Ldr)0xc`z1oje3;m#hgHd zel9oh5Or>p&rVh3qhwm#kMv-ZohiEEDmk%Z8B7-mJhWP@tJm;Qywqx_`xs8twat{7 zF6MXF@r!sbT-9)M#9QY@Y|)aua2y|-i0sKihqD&!>z+wtFj}v2%8}Snd;Z3cf}8KU zB<6}S1@BDTa9i=b?Uz=ab4S_@GNuZGiL5tjwv5sVNgP~96HH7QhBGdi zDaKmE$3kRwv1xE)bHK;70-!7dEIqc}Q3}QmWk?CueFm?-ZK038GkGI?P$k73BcV*z zK9;mr;&AI?n&dlSjF#L56a7D}r`vCmq}viqwjb4f?*(?`Md>5cT6VPZf}FfUtJRTI z$IaVBBl(cGEovP%pW(Rq*N*F+@#;5|q8jPuKL&sM^r~rN-Z*jC%rEmVxb3DVN@M?U zOuZDgFps@5@4Dx6UX2yFfRk!ub)mKy78DKFfyFv7zeH<{*`-`>L^_pC7AL!0qX7f7 zrkP)1MH#3Avn#ceRi(Ab%<3w6AajuA4A#!NMY^dPSNo5Fw`F*2rsG&y_}9w_N1$c$ z@m7KIQzt)6l}xoa?Bn)~FeI{O=pX%9tuVqrvKXMkGB1#f4`;5lU;2tH&PSaZw|pPG z{mzTOx&E^kfBD6S*M3{{=7zTUbNin(bucf;OJ@%ei8Eico_R8JG5G2$U0!#!8(YAT z1Sa=r(P(CiJVL38QMGc{3&m*I5H^NlML`n!P>z{a$UnBMqG!w&`8QMK-z2%UvqYYm z#!>!I+6QUU6c#4=-mdYgC?O(DyyVCI)O7iJZ-0>^(-`{;u&(;lBFToq%*2&*N^IjU z8TNd_LbhJW-yCKpTO{m*F7!B#GUmwf75Q7T=vV(cvM4`asmWZ(OA~3_Pxih+E;iFP z1U5Rrv8r$yEh&H*Nr`!l(^f&^HA z`mK&<1Lz3d>*kvfThS0?JxS(J4^dVncR`T|PH8><{~~XA$r~+p2pC$Bh3+1KO=uyO zf9jhT#|135xlT1Nj)u&aY!lZpw;wpC<+@y@+o1bmhnzX$wi6)qGi| zmdVn^)Jwn+Ns&g%6S_2{Ug^<3VD(nj#RSdJb@?)U*3#alaIzqPsc4~&;r6784J z`c$XeAHQRG@T0sl@;`t6wBHW<)8rTTFZk!am^J^lw$^^`Uz2{arK%>EX_RiEbPMHJ z+HB4ce@*1u5m80I<52L~Gv0naQ2SwW#+ncBe)@%xZ@(57|NWq!Gy!RKw57G$dexFw zA5n;z9(O#7B$UY^C)^bYEb8USv@J(GF1`ZKgvip@EUabNU8ENQcadHo+~rnNln=}w zgMu)Z0vlyRl>}5yl@8fvb)({o0J7C#&X&`EtwJ*)?Ju+q0F- zAU38xwaJr~CZj^GpUbrj89i3w)-RWQwXUEGvLia5=z{D%B7$}A+Wm>!+7`yFbG3P}*bGvh%gHhFA3T zzBeDMMQg9N4Uf6DXuGS{>Oot{yX#n4)$Y0=>4=FCHGJ-RE_mAWd5gSnUGT4z!$l9r z>vly6IvdS0K%0zw1N5Xw8KeV!BlMnQ z*;uyl^v&M!oQzM#AdcX2IzuNRs6;o7mvbF#1Ja@7;gdzoFFyXSVEJKD^2@PTEN6hq z)z9tm=Bd3I=)qgj@*Sbm*fw~_dig)@l7oy;ls5kVJGU2mpO~jTG9+mK+zEV5Gjs|A zr^=a-qZ-|N{i6Rfv^2Y5B3t{=p3WfXSS>q%M|O{|EOsS;|+^jk|*?r zKi3{KOB(7M8h7!ExqNG8>dwuZ8`_UFF5Le3J+}wf-7_)nscX)-@|{a(Jsops{2#Aa z`)A8Uk*p1UzGTbLm!hqIz7$M7^mb4SL|<^SMyY!G`%?Av_oYoqlGU|u2p)PBgP+dTib{h`%^p} zMIuG+dpxWoX-mJ}EV6aLpvmsx@V8R2;=$G2^HdAyUf0agbZ=oCVvxI}bdbos{vw&N z0qAxOT{wkDQ1KQZ0oc3ei>e!lb8`<^twR5i5uvRZm>5MXnkdFfwDv6Q{>)*0ea#~b zRvxFCF5G5x1uO;ZqR~K;CA(O3G;bBR)w|~KpN}ximT@Ost&o?x$Sq#xu2;cQ8f#_WOV3U-eO?@u$dPHgdFt7boErxSuW)iW~5ZC(2f49jW1*zZwU!>)mX9j z^j9k-EOeGA@@O%!D)dXSAk|7Jrwo=-<_I0|5Xcq9rPDCig&yZREm9*%7At zwTf6#F1`J7y=)0meX4CH2X)`kD#Jc#!I8-nLlM;=qN20GdGr3U4jQ4UjJR6kA^R ziE?0OTgl_(zaYtwBZ62l<|V0VazHarOw?G@L#NKdFxGu3Ma+^SP7oy%`;0z~a&bxk z#9ZYPTTqPJA__9bDK6|wa>y=rbu#WaA#$=2k|N3Q3Z3A=@~3OTp^qLz40I>Qy$d~D z=dt3P;*lj(YD%0G?Bs1@W+Q{T|I99okhFcZO%Nq0# z&Ep6iBCZ`eU93(W+?k{L@TW@i@um+(dUTt)yb#wj+@B-6lUPUSez&(q?vM_jhkDjC zJrLx-%A$?vJGPRfAI7nG0U4edFH7%Sv- zfo(*r+U@pYC~$YBJGQyKWn$IUcAHpk&cVRM79%GUeisZL_7m$q9gqG-HqCiSC( zMaYCM7Wu%?Wfv%NtlCSzqP4;~PdK#B@Wo0M^6D`+z1h||n2VXJGOjDhG0*KSVyDSy zWkJo6snyToB3agO5}wAHzt@3{A(JP0RapCKWz1loc8gU)-*|Le40f9o~S zZN{L};;#0!#aliS-_Ll<>mAK_(|1{?i;|5b^~rG6mxyhM_U4m)na`4v7}Jtum)}nk z_le2HC%z=P*_Oo02ScaAb}n9Rld$2k)kW^*iTT~@pkSFIHna0-k=`{dmt$qW$Nca* zLMOSsrNRt7uv8B0x1mSqUYjTvo9V<@J{QWA7$}p2^D^G}(^5-v2%YWrW~*_$o~dLY zS9457Td)Afh*X7trSQkg?R@E#Of{BcS!tX&wNOtpvH9!NS*cPu{&lmsG1g<{LUpXQ zvkzS$V}zcKQK8GkJ40u8h1*+*^2jaJ(1UL8Af^@(P(^$1P4v;q{d*rogQisqma$Uw zKITtks?piJ|HE_4H?M=kzFZZw9vjfJUVmeGanDI5@y2?d!sd<-nDvFALIfg*#t*6) z_dt&ae|JOgzUr5|ht3aFo^aZSho-EWykM7BB>cm&e`*gY`d6*vK{XQ%fDKWazqpnG zQpl$?^gu^Y@;^|^dcD?*s_fwk>+XoS~4!uW-v9~{owkvPIiq2}5c4iw{ zbp^k=dUQi->^-ent`XgLWNo}OW>UY`1}{f<%SXCt`9Gemf{YP zOs@V5cm;P?gRL+}%zQ`7@txpR-+c4NO=rG8{=@U;&(D|;Q@XL{*Vgtu!P=rHSX=Z& zYcro%DkprRm5P0-DLHW@LX876Xl}EQBbM;`?yJb=Bf@MrE77XpL!mq^zhQ(n_EWMMb#9|vrkXM^|4Uta^ zNbDr3o&KS9gSE?Mjy~eMVMnRW>`B3lh2N`nP5W~ne)qJB&$6Db8U4|Y8M-z}tS+*v zv92Qotl9)hWlLI|La~!%Ei9Hp88io!H+NfHpB*D$Tg|O6LCGjeHO9P*qS?1V_XYj? zKFOT6?Y-VhFPib_?oW>U>yT4Qf3CA1YGpXIRQf7?I2jHXLC&bw%`%Q=sj-`A3VxIU z9X`tlpN}6&A_@4H8ciovNLcm5rlSh!)|h0*8DIbUkd1>C%^5r7zc|zm{Sd#WpW80k_~?>NJ!;7kmQGz7{wCUw6lhLj@bku# ze*Nj^_uP`TZ071qPET0-{8V%{Y5P zK);hKL9=G)pjkD2LBken6T`4o+L=+OBg||F=q-diGk!Zw&zVlE-^CovIm+4Q(Qav7 zx9>qU=c!=&eP92qv(!J97hT4--d+07@<;wr7`k;O*4rd8tBXp-i#=$)BH*LnQ&`O# zhP*=Ukrj>7{lJ%OhoPGMq%SqXJ(|xaujK~hJq4~#Y1JP`_86{IULQhpPD_& z643nr40EcAEZ(+mzPUrp9{x>4Ye8GH?Hb zYTk*#%zMwAGT`d^H~tuWt1L5X-tRXReWK+ERx241>^`&;XW3WdEK%vRcs`4lV4(yH zC0Qt`s_4fGqL(W^%y5(f%})w;t@C|*fBC=i&a4|Th9O+)v`r^EVu7$kZ55cFao_Kr1yKyUv-uw5yx~ms_`r^3_J9YVEtrahJh(__+{^O3< zb|bgnb|&Q=Eu)`kumv-M&pkcjmH$?{9_bkQ_`H*9W@H_Hd+m2RizF-2B+Dk1Y-Jd< z0)vzK$r^V-H3x))Go)E$En>SRmOko?9m&rI1|PO1yKQKP@-8`~CKX-(URtUFT+QdhNB= z&p!QpO}=DM;L}}G?AHgY1(s@3XbrUDB+V;G)=pW9HWL*FbKUF5SkTY z-Irs<7`NLywVyl4o+mY_%Z<44+8_P1tNRlJWYLb`@)7$MEdJM5SI&BN^6s0q-a6$^ zPyFm|srHOQU8mVax-v71HJVjYmBdN?hJoC~=RG_`x3$oe4AqrP9j0Ry57(nOe}ry; z{E_;UJA2e1y`+z4TaG~DptRr0$u!2e1OzSh;6o7d!(~PLwyJDK#2(?bt_bl=oYk9h z0-tDgXhepZTCK>g#S4S4RUGTuvn=o1xBjwV%h;-yQ+GE0?PDoHz;Bg6{AJ13wH}eK zgHkC?tY~j!B?iXIp6RK&I|Nkq)I@+|Q_q4_R!7;bacia-d&(=PW)w827fy$otK2BxNZVSjxrno1>K0v9`o`c#g={e1I&$7eMx7|x@_X^v+ zM!OX~H)*%J=ML?b_1tH>zt!&eo+q_i+ViY-(|b?Jmi*Ft&$8X~v!%XSy$_~pbwZf= zy-%k~;}!2>+MB9J^6}}KALavC2r0Mv;Na$U8#fpn=fUMBRI$3Gk~m zq0jYmh5Dn3N)?9wqj7GxQ@eTH^3_Dj)9urb=5_~cH%+@a-C5er>dx10|Lzj)7Is$z ziZ<{+8FUW{gtZq=@SXdUlxzP?F$OM`HKndx#~JnGafZ3;eAan6ZP`6p7iMPn4DD8S z&(WDxbT8Cye)lr%R&}q^{PON~+8xwguiX{hTeX|jy#s?0|K-DKy&C2mqm{r;`)0|E)};p^!cnK6d`Mx5i{195C|_ Xr`(!ZzBT5x>n6!#q1)=^ZP@=0`!45( literal 0 HcmV?d00001 diff --git a/dotnetcore2.1/run/update_libs.sh b/dotnetcore2.1/run/update_libs.sh index d6ca17dd..024c526e 100755 --- a/dotnetcore2.1/run/update_libs.sh +++ b/dotnetcore2.1/run/update_libs.sh @@ -1,7 +1,7 @@ #!/bin/sh curl https://lambci.s3.amazonaws.com/fs/dotnetcore2.1.tgz | \ - tar -xz var/runtime/Amazon.Lambda.Core.dll var/runtime/Bootstrap.dll + tar -xz var/runtime/Amazon.Lambda.Core.dll var/runtime/Bootstrap.dll var/runtime/Bootstrap.pdb -mv ./var/runtime/*.dll ./MockBootstraps/lib/ +mv ./var/runtime/*.dll ./var/runtime/*.pdb ./MockBootstraps/lib/ rm -rf ./var diff --git a/examples/dotnetcore2.1/test.csproj b/examples/dotnetcore2.1/test.csproj index 67a6e625..d6a026b0 100644 --- a/examples/dotnetcore2.1/test.csproj +++ b/examples/dotnetcore2.1/test.csproj @@ -7,7 +7,7 @@ - + From a4c2b94aaaa1e9a10d7ec84804a31d2269124a43 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Sat, 5 Oct 2019 17:18:08 -0400 Subject: [PATCH 044/271] Lint init.go --- provided/run/init.go | 124 +++++++++++++++++++++++-------------------- 1 file changed, 65 insertions(+), 59 deletions(-) diff --git a/provided/run/init.go b/provided/run/init.go index 389fab23..4fd33bb3 100644 --- a/provided/run/init.go +++ b/provided/run/init.go @@ -25,9 +25,15 @@ import ( "github.com/go-chi/render" ) -var okStatusResponse = &StatusResponse{Status: "OK", HTTPStatusCode: 202} +type key int -var curRequestID = fakeGuid() +const ( + keyRequestID key = iota +) + +var okStatusResponse = &statusResponse{Status: "OK", HTTPStatusCode: 202} + +var curRequestID = fakeGUID() var curState = "STATE_INIT" var transitions = map[string]map[string]bool{ @@ -37,11 +43,11 @@ var transitions = map[string]map[string]bool{ "STATE_INVOKE_ERROR": map[string]bool{"STATE_INVOKE_NEXT": true}, } -var mockContext = &MockLambdaContext{} +var mockContext = &mockLambdaContext{} func main() { rand.Seed(time.Now().UTC().UnixNano()) - curRequestID = fakeGuid() + curRequestID = fakeGUID() bootstrapPath := flag.String("bootstrap", "/var/runtime/bootstrap", "path to bootstrap") bootstrapArgsString := flag.String("bootstrap-args", "[]", "additional arguments passed to bootstrap, as a stringified JSON Array") @@ -77,15 +83,15 @@ func main() { } } - mockContext = &MockLambdaContext{ + mockContext = &mockLambdaContext{ EventBody: eventBody, FnName: getEnv("AWS_LAMBDA_FUNCTION_NAME", "test"), Version: getEnv("AWS_LAMBDA_FUNCTION_VERSION", "$LATEST"), MemSize: getEnv("AWS_LAMBDA_FUNCTION_MEMORY_SIZE", "1536"), Timeout: getEnv("AWS_LAMBDA_FUNCTION_TIMEOUT", "300"), Region: getEnv("AWS_REGION", getEnv("AWS_DEFAULT_REGION", "us-east-1")), - AccountId: getEnv("AWS_ACCOUNT_ID", strconv.FormatInt(int64(rand.Int31()), 10)), - XAmznTraceId: getEnv("_X_AMZN_TRACE_ID", ""), + AccountID: getEnv("AWS_ACCOUNT_ID", strconv.FormatInt(int64(rand.Int31()), 10)), + XAmznTraceID: getEnv("_X_AMZN_TRACE_ID", ""), ClientContext: getEnv("AWS_LAMBDA_CLIENT_CONTEXT", ""), CognitoIdentity: getEnv("AWS_LAMBDA_COGNITO_IDENTITY", ""), Start: time.Now(), @@ -106,7 +112,7 @@ func main() { os.Setenv("AWS_LAMBDA_LOG_STREAM_NAME", logStreamName(mockContext.Version)) os.Setenv("AWS_REGION", mockContext.Region) os.Setenv("AWS_DEFAULT_REGION", mockContext.Region) - os.Setenv("_X_AMZN_TRACE_ID", mockContext.XAmznTraceId) + os.Setenv("_X_AMZN_TRACE_ID", mockContext.XAmznTraceID) os.Setenv("_HANDLER", handler) var cmd *exec.Cmd @@ -134,7 +140,7 @@ func main() { mockContext.Cmd = cmd - render.Respond = renderJson + render.Respond = renderJSON r := chi.NewRouter() @@ -151,8 +157,8 @@ func main() { r. With(updateState("STATE_INVOKE_NEXT")). Get("/invocation/next", func(w http.ResponseWriter, r *http.Request) { - if mockContext.RequestId == "" { - mockContext.RequestId = curRequestID + if mockContext.RequestID == "" { + mockContext.RequestID = curRequestID mockContext.InitEnd = time.Now() logStartRequest() } else if mockContext.Reply != nil { @@ -164,7 +170,7 @@ func main() { w.Header().Set("Lambda-Runtime-Aws-Request-Id", curRequestID) w.Header().Set("Lambda-Runtime-Deadline-Ms", strconv.FormatInt(mockContext.Deadline().UnixNano()/1e6, 10)) w.Header().Set("Lambda-Runtime-Invoked-Function-Arn", mockContext.InvokedFunctionArn) - w.Header().Set("Lambda-Runtime-Trace-Id", mockContext.XAmznTraceId) + w.Header().Set("Lambda-Runtime-Trace-Id", mockContext.XAmznTraceID) if mockContext.ClientContext != "" { w.Header().Set("Lambda-Runtime-Client-Context", mockContext.ClientContext) @@ -184,7 +190,7 @@ func main() { Post("/response", func(w http.ResponseWriter, r *http.Request) { body, err := ioutil.ReadAll(r.Body) if err != nil { - render.Render(w, r, &ErrResponse{ + render.Render(w, r, &errResponse{ HTTPStatusCode: 500, ErrorType: "BodyReadError", // TODO: not sure what this would be in production? ErrorMessage: err.Error(), @@ -192,7 +198,7 @@ func main() { return } - mockContext.Reply = &InvokeResponse{Payload: body} + mockContext.Reply = &invokeResponse{Payload: body} render.Render(w, r, okStatusResponse) w.(http.Flusher).Flush() @@ -241,12 +247,12 @@ func main() { } func handleErrorRequest(w http.ResponseWriter, r *http.Request) { - lambdaErr := &LambdaError{} - statusResponse := okStatusResponse + lambdaErr := &lambdaError{} + response := okStatusResponse body, err := ioutil.ReadAll(r.Body) if err != nil || json.Unmarshal(body, lambdaErr) != nil { - statusResponse = &StatusResponse{Status: "InvalidErrorShape", HTTPStatusCode: 299} + response = &statusResponse{Status: "InvalidErrorShape", HTTPStatusCode: 299} } errorType := r.Header.Get("Lambda-Runtime-Function-Error-Type") @@ -254,9 +260,9 @@ func handleErrorRequest(w http.ResponseWriter, r *http.Request) { lambdaErr.Type = errorType } - mockContext.Reply = &InvokeResponse{Error: lambdaErr} + mockContext.Reply = &invokeResponse{Error: lambdaErr} - render.Render(w, r, statusResponse) + render.Render(w, r, response) w.(http.Flusher).Flush() endInvoke(nil) @@ -266,7 +272,7 @@ func updateState(nextState string) func(http.Handler) http.Handler { return func(next http.Handler) http.Handler { return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { if _, ok := transitions[nextState][curState]; !ok { - render.Render(w, r, &ErrResponse{ + render.Render(w, r, &errResponse{ HTTPStatusCode: 403, ErrorType: "InvalidStateTransition", ErrorMessage: fmt.Sprintf("Transition from %s to %s is not allowed.", curState, nextState), @@ -284,7 +290,7 @@ func awsRequestIDValidator(next http.Handler) http.Handler { requestID := chi.URLParam(r, "requestID") if requestID != curRequestID { - render.Render(w, r, &ErrResponse{ + render.Render(w, r, &errResponse{ HTTPStatusCode: 400, ErrorType: "InvalidRequestID", ErrorMessage: "Invalid request ID", @@ -292,34 +298,34 @@ func awsRequestIDValidator(next http.Handler) http.Handler { return } - ctx := context.WithValue(r.Context(), "requestID", requestID) + ctx := context.WithValue(r.Context(), keyRequestID, requestID) next.ServeHTTP(w, r.WithContext(ctx)) }) } -type StatusResponse struct { +type statusResponse struct { HTTPStatusCode int `json:"-"` Status string `json:"status"` } -func (sr *StatusResponse) Render(w http.ResponseWriter, r *http.Request) error { +func (sr *statusResponse) Render(w http.ResponseWriter, r *http.Request) error { render.Status(r, sr.HTTPStatusCode) return nil } -type ErrResponse struct { +type errResponse struct { HTTPStatusCode int `json:"-"` ErrorType string `json:"errorType,omitempty"` ErrorMessage string `json:"errorMessage"` } -func (e *ErrResponse) Render(w http.ResponseWriter, r *http.Request) error { +func (e *errResponse) Render(w http.ResponseWriter, r *http.Request) error { render.Status(r, e.HTTPStatusCode) return nil } -func renderJson(w http.ResponseWriter, r *http.Request, v interface{}) { +func renderJSON(w http.ResponseWriter, r *http.Request, v interface{}) { buf := &bytes.Buffer{} enc := json.NewEncoder(buf) enc.SetEscapeHTML(true) @@ -336,13 +342,13 @@ func renderJson(w http.ResponseWriter, r *http.Request, v interface{}) { } func abortRequest(err error) { - endInvoke(&ExitError{err: err}) + endInvoke(&exitError{err: err}) } func endInvoke(err error) { logStart := false - if mockContext.RequestId == "" { - mockContext.RequestId = curRequestID + if mockContext.RequestID == "" { + mockContext.RequestID = curRequestID logStart = true } mockContext.MaxMem, _ = allProcsMemoryInMb() @@ -357,7 +363,7 @@ func endInvoke(err error) { } func logStartRequest() { - systemLog("START RequestId: " + mockContext.RequestId + " Version: " + mockContext.Version) + systemLog("START RequestId: " + mockContext.RequestID + " Version: " + mockContext.Version) } func logEndRequest(err error) { @@ -376,7 +382,7 @@ func logEndRequest(err error) { initStr = fmt.Sprintf("Init Duration: %.2f ms\t", initDiffMs) } - systemLog("END RequestId: " + mockContext.RequestId) + systemLog("END RequestId: " + mockContext.RequestID) systemLog(fmt.Sprintf( "REPORT RequestId: %s\t"+ initStr+ @@ -384,21 +390,21 @@ func logEndRequest(err error) { "Billed Duration: %.f ms\t"+ "Memory Size: %s MB\t"+ "Max Memory Used: %d MB\t", - mockContext.RequestId, diffMs, math.Ceil(diffMs/100)*100, mockContext.MemSize, mockContext.MaxMem)) + mockContext.RequestID, diffMs, math.Ceil(diffMs/100)*100, mockContext.MemSize, mockContext.MaxMem)) if err == nil && mockContext.HasExpired() { err = mockContext.TimeoutErr() } if err != nil { - responseErr := LambdaError{ + responseErr := lambdaError{ Message: err.Error(), Type: getErrorType(err), } if responseErr.Type == "errorString" { responseErr.Type = "" if responseErr.Message == "unexpected EOF" { - responseErr.Message = "RequestId: " + mockContext.RequestId + " Process exited before completing request" + responseErr.Message = "RequestId: " + mockContext.RequestID + " Process exited before completing request" } } else if responseErr.Type == "ExitError" { responseErr.Type = "Runtime.ExitError" // XXX: Hack to add 'Runtime.' to error type @@ -432,7 +438,7 @@ func getEnv(key, fallback string) string { return fallback } -func fakeGuid() string { +func fakeGUID() string { randBuf := make([]byte, 16) rand.Read(randBuf) @@ -463,9 +469,9 @@ func logStreamName(version string) string { return time.Now().Format("2006/01/02") + "/[" + version + "]" + string(hexBuf) } -func arn(region string, accountId string, fnName string) string { +func arn(region string, accountID string, fnName string) string { nonDigit := regexp.MustCompile(`[^\d]`) - return "arn:aws:lambda:" + region + ":" + nonDigit.ReplaceAllString(accountId, "") + ":function:" + fnName + return "arn:aws:lambda:" + region + ":" + nonDigit.ReplaceAllString(accountID, "") + ":function:" + fnName } func allProcsMemoryInMb() (uint64, error) { @@ -516,11 +522,11 @@ func calculateMemoryInKb(pid int) (uint64, error) { } func getErrorType(err interface{}) string { - if errorType := reflect.TypeOf(err); errorType.Kind() == reflect.Ptr { + errorType := reflect.TypeOf(err) + if errorType.Kind() == reflect.Ptr { return errorType.Elem().Name() - } else { - return errorType.Name() } + return errorType.Name() } func systemLog(msg string) { @@ -528,35 +534,35 @@ func systemLog(msg string) { } // Try to match the output of the Lambda web console -func systemErr(err *LambdaError) { +func systemErr(err *lambdaError) { jsonBytes, _ := json.MarshalIndent(err, "", " ") fmt.Fprintln(os.Stderr, "\033[31m"+string(jsonBytes)+"\033[0m") } -type ExitError struct { +type exitError struct { err error } -func (e *ExitError) Error() string { +func (e *exitError) Error() string { return fmt.Sprintf("RequestId: %s Error: %s", curRequestID, e.err.Error()) } -type LambdaError struct { +type lambdaError struct { Type string `json:"errorType,omitempty"` Message string `json:"errorMessage"` StackTrace []*string `json:"stackTrace,omitempty"` } -type MockLambdaContext struct { - RequestId string +type mockLambdaContext struct { + RequestID string EventBody string FnName string Version string MemSize string Timeout string Region string - AccountId string - XAmznTraceId string + AccountID string + XAmznTraceID string InvokedFunctionArn string ClientContext string CognitoIdentity string @@ -564,13 +570,13 @@ type MockLambdaContext struct { InitEnd time.Time TimeoutDuration time.Duration Pid int - Reply *InvokeResponse + Reply *invokeResponse Done chan bool Cmd *exec.Cmd MaxMem uint64 } -func (mc *MockLambdaContext) ParseTimeout() { +func (mc *mockLambdaContext) ParseTimeout() { timeoutDuration, err := time.ParseDuration(mc.Timeout + "s") if err != nil { panic(err) @@ -578,24 +584,24 @@ func (mc *MockLambdaContext) ParseTimeout() { mc.TimeoutDuration = timeoutDuration } -func (mc *MockLambdaContext) ParseFunctionArn() { - mc.InvokedFunctionArn = getEnv("AWS_LAMBDA_FUNCTION_INVOKED_ARN", arn(mc.Region, mc.AccountId, mc.FnName)) +func (mc *mockLambdaContext) ParseFunctionArn() { + mc.InvokedFunctionArn = getEnv("AWS_LAMBDA_FUNCTION_INVOKED_ARN", arn(mc.Region, mc.AccountID, mc.FnName)) } -func (mc *MockLambdaContext) Deadline() time.Time { +func (mc *mockLambdaContext) Deadline() time.Time { return mc.Start.Add(mc.TimeoutDuration) } -func (mc *MockLambdaContext) HasExpired() bool { +func (mc *mockLambdaContext) HasExpired() bool { return time.Now().After(mc.Deadline()) } -func (mc *MockLambdaContext) TimeoutErr() error { +func (mc *mockLambdaContext) TimeoutErr() error { return fmt.Errorf("%s %s Task timed out after %s.00 seconds", time.Now().Format("2006-01-02T15:04:05.999Z"), - mc.RequestId, mc.Timeout) + mc.RequestID, mc.Timeout) } -type InvokeResponse struct { +type invokeResponse struct { Payload []byte - Error *LambdaError + Error *lambdaError } From 13fb330121d82fa87792c358137c80866bbeaa5f Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Thu, 17 Oct 2019 13:46:41 -0400 Subject: [PATCH 045/271] Add Microsoft.AspNetCore.App PackageReference to dotnetcore2.1 --- .../run/MockBootstraps/MockBootstraps.csproj | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/dotnetcore2.1/run/MockBootstraps/MockBootstraps.csproj b/dotnetcore2.1/run/MockBootstraps/MockBootstraps.csproj index 0f633077..ab507ce6 100644 --- a/dotnetcore2.1/run/MockBootstraps/MockBootstraps.csproj +++ b/dotnetcore2.1/run/MockBootstraps/MockBootstraps.csproj @@ -7,11 +7,13 @@ - - lib\Bootstrap.dll - - - lib\Amazon.Lambda.Core.dll - - + + lib\Bootstrap.dll + + + lib\Amazon.Lambda.Core.dll + + + + From 945e672f17cade7f162b7f56c9d78fba6d4500c8 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Thu, 17 Oct 2019 15:15:48 -0400 Subject: [PATCH 046/271] Use Microsoft.AspNetCore.All instead of Microsoft.AspNetCore.App --- .../run/MockBootstraps/MockBootstraps.csproj | 16 +++++++++------- .../run/MockBootstraps/MockBootstraps.csproj | 2 +- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/dotnetcore2.0/run/MockBootstraps/MockBootstraps.csproj b/dotnetcore2.0/run/MockBootstraps/MockBootstraps.csproj index 6454122c..c1c4bf3e 100644 --- a/dotnetcore2.0/run/MockBootstraps/MockBootstraps.csproj +++ b/dotnetcore2.0/run/MockBootstraps/MockBootstraps.csproj @@ -7,11 +7,13 @@ - - lib\Bootstrap.dll - - - lib\Amazon.Lambda.Core.dll - - + + lib\Bootstrap.dll + + + lib\Amazon.Lambda.Core.dll + + + + diff --git a/dotnetcore2.1/run/MockBootstraps/MockBootstraps.csproj b/dotnetcore2.1/run/MockBootstraps/MockBootstraps.csproj index ab507ce6..d59e19a2 100644 --- a/dotnetcore2.1/run/MockBootstraps/MockBootstraps.csproj +++ b/dotnetcore2.1/run/MockBootstraps/MockBootstraps.csproj @@ -13,7 +13,7 @@ lib\Amazon.Lambda.Core.dll - + From 2b3af1858413878b18714ac5277870c626baea62 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Thu, 17 Oct 2019 15:19:18 -0400 Subject: [PATCH 047/271] Bump Microsoft.AspNetCore.All to 2.0.9 to make GitHub security checks happy --- dotnetcore2.0/run/MockBootstraps/MockBootstraps.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dotnetcore2.0/run/MockBootstraps/MockBootstraps.csproj b/dotnetcore2.0/run/MockBootstraps/MockBootstraps.csproj index c1c4bf3e..11067b83 100644 --- a/dotnetcore2.0/run/MockBootstraps/MockBootstraps.csproj +++ b/dotnetcore2.0/run/MockBootstraps/MockBootstraps.csproj @@ -13,7 +13,7 @@ lib\Amazon.Lambda.Core.dll - + From c7fd3f2ab770b187b8e061f157acd53f54d037ee Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Thu, 17 Oct 2019 15:20:45 -0400 Subject: [PATCH 048/271] Remove version specifiers from Microsoft.AspNetCore.All so that there's no security checking --- dotnetcore2.0/run/MockBootstraps/MockBootstraps.csproj | 2 +- dotnetcore2.1/run/MockBootstraps/MockBootstraps.csproj | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/dotnetcore2.0/run/MockBootstraps/MockBootstraps.csproj b/dotnetcore2.0/run/MockBootstraps/MockBootstraps.csproj index 11067b83..52b049dc 100644 --- a/dotnetcore2.0/run/MockBootstraps/MockBootstraps.csproj +++ b/dotnetcore2.0/run/MockBootstraps/MockBootstraps.csproj @@ -13,7 +13,7 @@ lib\Amazon.Lambda.Core.dll - + diff --git a/dotnetcore2.1/run/MockBootstraps/MockBootstraps.csproj b/dotnetcore2.1/run/MockBootstraps/MockBootstraps.csproj index d59e19a2..6ead4598 100644 --- a/dotnetcore2.1/run/MockBootstraps/MockBootstraps.csproj +++ b/dotnetcore2.1/run/MockBootstraps/MockBootstraps.csproj @@ -13,7 +13,7 @@ lib\Amazon.Lambda.Core.dll - + From 95c382d8909445f6226d08732e092b20d5a4e434 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Thu, 17 Oct 2019 15:27:44 -0400 Subject: [PATCH 049/271] Ok, so add specifiers back in, just greater than what GitHub recommends --- dotnetcore2.0/run/MockBootstraps/MockBootstraps.csproj | 2 +- dotnetcore2.1/run/MockBootstraps/MockBootstraps.csproj | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/dotnetcore2.0/run/MockBootstraps/MockBootstraps.csproj b/dotnetcore2.0/run/MockBootstraps/MockBootstraps.csproj index 52b049dc..11067b83 100644 --- a/dotnetcore2.0/run/MockBootstraps/MockBootstraps.csproj +++ b/dotnetcore2.0/run/MockBootstraps/MockBootstraps.csproj @@ -13,7 +13,7 @@ lib\Amazon.Lambda.Core.dll - + diff --git a/dotnetcore2.1/run/MockBootstraps/MockBootstraps.csproj b/dotnetcore2.1/run/MockBootstraps/MockBootstraps.csproj index 6ead4598..7a20c042 100644 --- a/dotnetcore2.1/run/MockBootstraps/MockBootstraps.csproj +++ b/dotnetcore2.1/run/MockBootstraps/MockBootstraps.csproj @@ -13,7 +13,7 @@ lib\Amazon.Lambda.Core.dll - + From 7f39da18fbbcca09ac5806003afe0bc46586f6b6 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Thu, 17 Oct 2019 18:08:41 -0400 Subject: [PATCH 050/271] Update aws-lambda-builders to 0.5.0 --- dotnetcore2.0/build/Dockerfile | 2 +- dotnetcore2.1/build/Dockerfile | 2 +- go1.x/build/Dockerfile | 2 +- java8/build/Dockerfile | 2 +- nodejs10.x/build/Dockerfile | 2 +- nodejs4.3/build/Dockerfile | 2 +- nodejs6.10/build/Dockerfile | 2 +- nodejs8.10/build/Dockerfile | 2 +- provided/build/Dockerfile | 2 +- python2.7/build/Dockerfile | 2 +- python3.6/build/Dockerfile | 2 +- python3.7/build/Dockerfile | 2 +- ruby2.5/build/Dockerfile | 2 +- 13 files changed, 13 insertions(+), 13 deletions(-) diff --git a/dotnetcore2.0/build/Dockerfile b/dotnetcore2.0/build/Dockerfile index 9f9b7035..54dc7640 100644 --- a/dotnetcore2.0/build/Dockerfile +++ b/dotnetcore2.0/build/Dockerfile @@ -21,6 +21,6 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ - pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.22.0 aws-lambda-builders==0.4.0 --no-cache-dir + pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.22.0 aws-lambda-builders==0.5.0 --no-cache-dir CMD ["dotnet", "build"] diff --git a/dotnetcore2.1/build/Dockerfile b/dotnetcore2.1/build/Dockerfile index e7750c8a..c7b1084d 100644 --- a/dotnetcore2.1/build/Dockerfile +++ b/dotnetcore2.1/build/Dockerfile @@ -22,7 +22,7 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ - pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.22.0 aws-lambda-builders==0.4.0 --no-cache-dir && \ + pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.22.0 aws-lambda-builders==0.5.0 --no-cache-dir && \ dotnet tool install --global Amazon.Lambda.Tools --version 3.3.0 CMD ["dotnet", "build"] diff --git a/go1.x/build/Dockerfile b/go1.x/build/Dockerfile index e9e81e87..a2e76b15 100644 --- a/go1.x/build/Dockerfile +++ b/go1.x/build/Dockerfile @@ -17,6 +17,6 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ - pip install -U awscli boto3 aws-sam-cli==0.22.0 aws-lambda-builders==0.4.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.22.0 aws-lambda-builders==0.5.0 --no-cache-dir CMD ["dep", "ensure"] diff --git a/java8/build/Dockerfile b/java8/build/Dockerfile index 8fd895c1..0641cbed 100644 --- a/java8/build/Dockerfile +++ b/java8/build/Dockerfile @@ -16,4 +16,4 @@ ENV PATH="/usr/local/gradle/gradle-5.2/bin:/usr/local/maven/apache-maven-3.6.0/b # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ - pip install -U awscli boto3 aws-sam-cli==0.22.0 aws-lambda-builders==0.4.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.22.0 aws-lambda-builders==0.5.0 --no-cache-dir diff --git a/nodejs10.x/build/Dockerfile b/nodejs10.x/build/Dockerfile index 5c03d82f..cba615f5 100644 --- a/nodejs10.x/build/Dockerfile +++ b/nodejs10.x/build/Dockerfile @@ -10,4 +10,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN pip3 install -U pip setuptools --no-cache-dir && \ - pip install -U awscli boto3 aws-sam-cli==0.22.0 aws-lambda-builders==0.4.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.22.0 aws-lambda-builders==0.5.0 --no-cache-dir diff --git a/nodejs4.3/build/Dockerfile b/nodejs4.3/build/Dockerfile index 8322cee3..5a141a54 100644 --- a/nodejs4.3/build/Dockerfile +++ b/nodejs4.3/build/Dockerfile @@ -11,6 +11,6 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ - pip install -U awscli boto3 aws-sam-cli==0.22.0 aws-lambda-builders==0.4.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.22.0 aws-lambda-builders==0.5.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/nodejs6.10/build/Dockerfile b/nodejs6.10/build/Dockerfile index 7833bbb7..1f4de8bc 100644 --- a/nodejs6.10/build/Dockerfile +++ b/nodejs6.10/build/Dockerfile @@ -11,6 +11,6 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ - pip install -U awscli boto3 aws-sam-cli==0.22.0 aws-lambda-builders==0.4.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.22.0 aws-lambda-builders==0.5.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/nodejs8.10/build/Dockerfile b/nodejs8.10/build/Dockerfile index d469fccc..276d866c 100644 --- a/nodejs8.10/build/Dockerfile +++ b/nodejs8.10/build/Dockerfile @@ -11,6 +11,6 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ - pip install -U awscli boto3 aws-sam-cli==0.22.0 aws-lambda-builders==0.4.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.22.0 aws-lambda-builders==0.5.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/provided/build/Dockerfile b/provided/build/Dockerfile index 74e2e688..6f334a48 100644 --- a/provided/build/Dockerfile +++ b/provided/build/Dockerfile @@ -2,4 +2,4 @@ FROM lambci/lambda-base:build # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ - pip install -U awscli boto3 aws-sam-cli==0.22.0 aws-lambda-builders==0.4.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.22.0 aws-lambda-builders==0.5.0 --no-cache-dir diff --git a/python2.7/build/Dockerfile b/python2.7/build/Dockerfile index 02c57251..aa9c5f62 100644 --- a/python2.7/build/Dockerfile +++ b/python2.7/build/Dockerfile @@ -9,4 +9,4 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ pip install -U virtualenv pipenv --no-cache-dir && \ - pip install -U awscli boto3 aws-sam-cli==0.22.0 aws-lambda-builders==0.4.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.22.0 aws-lambda-builders==0.5.0 --no-cache-dir diff --git a/python3.6/build/Dockerfile b/python3.6/build/Dockerfile index a0ce3ee3..cf2f03f5 100644 --- a/python3.6/build/Dockerfile +++ b/python3.6/build/Dockerfile @@ -19,4 +19,4 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ - pip install -U awscli boto3 aws-sam-cli==0.22.0 aws-lambda-builders==0.4.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.22.0 aws-lambda-builders==0.5.0 --no-cache-dir diff --git a/python3.7/build/Dockerfile b/python3.7/build/Dockerfile index f5457f07..c605e519 100644 --- a/python3.7/build/Dockerfile +++ b/python3.7/build/Dockerfile @@ -12,4 +12,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ - pip install -U awscli boto3 aws-sam-cli==0.22.0 aws-lambda-builders==0.4.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.22.0 aws-lambda-builders==0.5.0 --no-cache-dir diff --git a/ruby2.5/build/Dockerfile b/ruby2.5/build/Dockerfile index 4f5f4771..73288426 100644 --- a/ruby2.5/build/Dockerfile +++ b/ruby2.5/build/Dockerfile @@ -14,4 +14,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ RUN gem update --system --no-document && \ gem install --no-document bundler && \ curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ - pip install -U awscli boto3 aws-sam-cli==0.22.0 aws-lambda-builders==0.4.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.22.0 aws-lambda-builders==0.5.0 --no-cache-dir From 77c81b550fb0ef379ccf878652c0796ec21095ce Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Fri, 18 Oct 2019 11:38:34 -0400 Subject: [PATCH 051/271] Remove Microsoft.AspNetCore.All reference and traverse package dirs explicitly --- .../run/MockBootstraps/MockBootstraps.csproj | 1 - dotnetcore2.0/run/MockBootstraps/Program.cs | 25 ++++++++++++++++--- .../run/MockBootstraps/MockBootstraps.csproj | 1 - dotnetcore2.1/run/MockBootstraps/Program.cs | 25 ++++++++++++++++--- 4 files changed, 44 insertions(+), 8 deletions(-) diff --git a/dotnetcore2.0/run/MockBootstraps/MockBootstraps.csproj b/dotnetcore2.0/run/MockBootstraps/MockBootstraps.csproj index 11067b83..c7a2cca7 100644 --- a/dotnetcore2.0/run/MockBootstraps/MockBootstraps.csproj +++ b/dotnetcore2.0/run/MockBootstraps/MockBootstraps.csproj @@ -13,7 +13,6 @@ lib\Amazon.Lambda.Core.dll - diff --git a/dotnetcore2.0/run/MockBootstraps/Program.cs b/dotnetcore2.0/run/MockBootstraps/Program.cs index da0fcd1f..e44ca8fe 100644 --- a/dotnetcore2.0/run/MockBootstraps/Program.cs +++ b/dotnetcore2.0/run/MockBootstraps/Program.cs @@ -5,6 +5,7 @@ using System.Runtime.Loader; using AWSLambda.Internal.Bootstrap; using AWSLambda.Internal.Bootstrap.Context; +using System.Linq; namespace MockLambdaRuntime { @@ -14,14 +15,21 @@ class Program private const bool WaitForDebuggerFlagDefaultValue = false; /// Task root of lambda task - static string lambdaTaskRoot = EnvHelper.GetOrDefault("LAMBDA_TASK_ROOT", "/var/task"); + static readonly string lambdaTaskRoot = EnvHelper.GetOrDefault("LAMBDA_TASK_ROOT", "/var/task"); private static readonly TimeSpan _debuggerStatusQueryInterval = TimeSpan.FromMilliseconds(50); private static readonly TimeSpan _debuggerStatusQueryTimeout = TimeSpan.FromMinutes(10); + private static readonly IList assemblyDirs = new List { lambdaTaskRoot }; + /// Program entry point static void Main(string[] args) { + // Add all /var/lang/bin/shared/*/* directories to the search path + foreach (var di in new DirectoryInfo("/var/lang/bin/shared").EnumerateDirectories().SelectMany(di => di.EnumerateDirectories().Select(di2 => di2))) + { + assemblyDirs.Add(di.FullName); + } AssemblyLoadContext.Default.Resolving += OnAssemblyResolving; try @@ -87,9 +95,20 @@ static void Main(string[] args) } /// Called when an assembly could not be resolved - private static Assembly OnAssemblyResolving(AssemblyLoadContext context, AssemblyName assembly) + private static Assembly OnAssemblyResolving(AssemblyLoadContext context, AssemblyName assemblyName) { - return context.LoadFromAssemblyPath(Path.Combine(lambdaTaskRoot, $"{assembly.Name}.dll")); + foreach (var dir in assemblyDirs) + { + try + { + return context.LoadFromAssemblyPath(Path.Combine(dir, $"{assemblyName.Name}.dll")); + } + catch (FileNotFoundException) + { + continue; + } + } + throw new FileNotFoundException($"{assemblyName.Name}.dll"); } /// Try to log everything to stderr except the function result diff --git a/dotnetcore2.1/run/MockBootstraps/MockBootstraps.csproj b/dotnetcore2.1/run/MockBootstraps/MockBootstraps.csproj index 7a20c042..e09cc558 100644 --- a/dotnetcore2.1/run/MockBootstraps/MockBootstraps.csproj +++ b/dotnetcore2.1/run/MockBootstraps/MockBootstraps.csproj @@ -13,7 +13,6 @@ lib\Amazon.Lambda.Core.dll - diff --git a/dotnetcore2.1/run/MockBootstraps/Program.cs b/dotnetcore2.1/run/MockBootstraps/Program.cs index da0fcd1f..e44ca8fe 100644 --- a/dotnetcore2.1/run/MockBootstraps/Program.cs +++ b/dotnetcore2.1/run/MockBootstraps/Program.cs @@ -5,6 +5,7 @@ using System.Runtime.Loader; using AWSLambda.Internal.Bootstrap; using AWSLambda.Internal.Bootstrap.Context; +using System.Linq; namespace MockLambdaRuntime { @@ -14,14 +15,21 @@ class Program private const bool WaitForDebuggerFlagDefaultValue = false; /// Task root of lambda task - static string lambdaTaskRoot = EnvHelper.GetOrDefault("LAMBDA_TASK_ROOT", "/var/task"); + static readonly string lambdaTaskRoot = EnvHelper.GetOrDefault("LAMBDA_TASK_ROOT", "/var/task"); private static readonly TimeSpan _debuggerStatusQueryInterval = TimeSpan.FromMilliseconds(50); private static readonly TimeSpan _debuggerStatusQueryTimeout = TimeSpan.FromMinutes(10); + private static readonly IList assemblyDirs = new List { lambdaTaskRoot }; + /// Program entry point static void Main(string[] args) { + // Add all /var/lang/bin/shared/*/* directories to the search path + foreach (var di in new DirectoryInfo("/var/lang/bin/shared").EnumerateDirectories().SelectMany(di => di.EnumerateDirectories().Select(di2 => di2))) + { + assemblyDirs.Add(di.FullName); + } AssemblyLoadContext.Default.Resolving += OnAssemblyResolving; try @@ -87,9 +95,20 @@ static void Main(string[] args) } /// Called when an assembly could not be resolved - private static Assembly OnAssemblyResolving(AssemblyLoadContext context, AssemblyName assembly) + private static Assembly OnAssemblyResolving(AssemblyLoadContext context, AssemblyName assemblyName) { - return context.LoadFromAssemblyPath(Path.Combine(lambdaTaskRoot, $"{assembly.Name}.dll")); + foreach (var dir in assemblyDirs) + { + try + { + return context.LoadFromAssemblyPath(Path.Combine(dir, $"{assemblyName.Name}.dll")); + } + catch (FileNotFoundException) + { + continue; + } + } + throw new FileNotFoundException($"{assemblyName.Name}.dll"); } /// Try to log everything to stderr except the function result From bc38b5aa871b72a159c75ffbe3a194db4a67e9e2 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Sat, 2 Nov 2019 12:22:23 -0400 Subject: [PATCH 052/271] Update all build images to use Python 3.x for all pip packages (except python2.7) --- dotnetcore2.0/build/Dockerfile | 4 ++-- dotnetcore2.1/build/Dockerfile | 6 +++--- go1.x/build/Dockerfile | 6 +++--- java8/build/Dockerfile | 4 ++-- nodejs10.x/build/Dockerfile | 2 +- nodejs4.3/build/Dockerfile | 4 ++-- nodejs6.10/build/Dockerfile | 4 ++-- nodejs8.10/build/Dockerfile | 4 ++-- provided/build/Dockerfile | 4 ++-- python3.6/build/Dockerfile | 2 +- python3.7/build/Dockerfile | 2 +- ruby2.5/build/Dockerfile | 4 ++-- 12 files changed, 23 insertions(+), 23 deletions(-) diff --git a/dotnetcore2.0/build/Dockerfile b/dotnetcore2.0/build/Dockerfile index 54dc7640..dae399b6 100644 --- a/dotnetcore2.0/build/Dockerfile +++ b/dotnetcore2.0/build/Dockerfile @@ -20,7 +20,7 @@ RUN rm -rf /var/runtime /var/lang && \ rm -rf /tmp/warmup /tmp/NuGetScratch # Add these as a separate layer as they get updated frequently -RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ - pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.22.0 aws-lambda-builders==0.5.0 --no-cache-dir +RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python3 && \ + pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.30.0 aws-lambda-builders==0.5.0 --no-cache-dir CMD ["dotnet", "build"] diff --git a/dotnetcore2.1/build/Dockerfile b/dotnetcore2.1/build/Dockerfile index c7b1084d..db3b8270 100644 --- a/dotnetcore2.1/build/Dockerfile +++ b/dotnetcore2.1/build/Dockerfile @@ -21,8 +21,8 @@ RUN rm -rf /var/runtime /var/lang && \ rm -rf /tmp/warmup /tmp/NuGetScratch /tmp/.dotnet # Add these as a separate layer as they get updated frequently -RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ - pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.22.0 aws-lambda-builders==0.5.0 --no-cache-dir && \ - dotnet tool install --global Amazon.Lambda.Tools --version 3.3.0 +RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python3 && \ + pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.30.0 aws-lambda-builders==0.5.0 --no-cache-dir && \ + dotnet tool install --global Amazon.Lambda.Tools --version 3.3.1 CMD ["dotnet", "build"] diff --git a/go1.x/build/Dockerfile b/go1.x/build/Dockerfile index a2e76b15..17e97750 100644 --- a/go1.x/build/Dockerfile +++ b/go1.x/build/Dockerfile @@ -1,7 +1,7 @@ FROM lambci/lambda-base:build # https://golang.org/doc/devel/release.html -ENV GOLANG_VERSION=1.13.1 \ +ENV GOLANG_VERSION=1.13.4 \ GOPATH=/go \ PATH=/go/bin:/usr/local/go/bin:$PATH \ AWS_EXECUTION_ENV=AWS_Lambda_go1.x @@ -16,7 +16,7 @@ RUN rm -rf /var/runtime /var/lang && \ go get golang.org/x/vgo # Add these as a separate layer as they get updated frequently -RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ - pip install -U awscli boto3 aws-sam-cli==0.22.0 aws-lambda-builders==0.5.0 --no-cache-dir +RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python3 && \ + pip install -U awscli boto3 aws-sam-cli==0.30.0 aws-lambda-builders==0.5.0 --no-cache-dir CMD ["dep", "ensure"] diff --git a/java8/build/Dockerfile b/java8/build/Dockerfile index 0641cbed..1a1e2332 100644 --- a/java8/build/Dockerfile +++ b/java8/build/Dockerfile @@ -15,5 +15,5 @@ RUN rm -rf /var/runtime /var/lang && \ ENV PATH="/usr/local/gradle/gradle-5.2/bin:/usr/local/maven/apache-maven-3.6.0/bin:${PATH}" # Add these as a separate layer as they get updated frequently -RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ - pip install -U awscli boto3 aws-sam-cli==0.22.0 aws-lambda-builders==0.5.0 --no-cache-dir +RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python3 && \ + pip install -U awscli boto3 aws-sam-cli==0.30.0 aws-lambda-builders==0.5.0 --no-cache-dir diff --git a/nodejs10.x/build/Dockerfile b/nodejs10.x/build/Dockerfile index cba615f5..a85ece18 100644 --- a/nodejs10.x/build/Dockerfile +++ b/nodejs10.x/build/Dockerfile @@ -10,4 +10,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN pip3 install -U pip setuptools --no-cache-dir && \ - pip install -U awscli boto3 aws-sam-cli==0.22.0 aws-lambda-builders==0.5.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.30.0 aws-lambda-builders==0.5.0 --no-cache-dir diff --git a/nodejs4.3/build/Dockerfile b/nodejs4.3/build/Dockerfile index 5a141a54..d119faeb 100644 --- a/nodejs4.3/build/Dockerfile +++ b/nodejs4.3/build/Dockerfile @@ -10,7 +10,7 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs4.3.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ - pip install -U awscli boto3 aws-sam-cli==0.22.0 aws-lambda-builders==0.5.0 --no-cache-dir +RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python3 && \ + pip install -U awscli boto3 aws-sam-cli==0.30.0 aws-lambda-builders==0.5.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/nodejs6.10/build/Dockerfile b/nodejs6.10/build/Dockerfile index 1f4de8bc..5813022c 100644 --- a/nodejs6.10/build/Dockerfile +++ b/nodejs6.10/build/Dockerfile @@ -10,7 +10,7 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs6.10.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ - pip install -U awscli boto3 aws-sam-cli==0.22.0 aws-lambda-builders==0.5.0 --no-cache-dir +RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python3 && \ + pip install -U awscli boto3 aws-sam-cli==0.30.0 aws-lambda-builders==0.5.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/nodejs8.10/build/Dockerfile b/nodejs8.10/build/Dockerfile index 276d866c..2efc9c2e 100644 --- a/nodejs8.10/build/Dockerfile +++ b/nodejs8.10/build/Dockerfile @@ -10,7 +10,7 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs8.10.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ - pip install -U awscli boto3 aws-sam-cli==0.22.0 aws-lambda-builders==0.5.0 --no-cache-dir +RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python3 && \ + pip install -U awscli boto3 aws-sam-cli==0.30.0 aws-lambda-builders==0.5.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/provided/build/Dockerfile b/provided/build/Dockerfile index 6f334a48..f204386a 100644 --- a/provided/build/Dockerfile +++ b/provided/build/Dockerfile @@ -1,5 +1,5 @@ FROM lambci/lambda-base:build # Add these as a separate layer as they get updated frequently -RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ - pip install -U awscli boto3 aws-sam-cli==0.22.0 aws-lambda-builders==0.5.0 --no-cache-dir +RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python3 && \ + pip install -U awscli boto3 aws-sam-cli==0.30.0 aws-lambda-builders==0.5.0 --no-cache-dir diff --git a/python3.6/build/Dockerfile b/python3.6/build/Dockerfile index cf2f03f5..da737b89 100644 --- a/python3.6/build/Dockerfile +++ b/python3.6/build/Dockerfile @@ -19,4 +19,4 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ - pip install -U awscli boto3 aws-sam-cli==0.22.0 aws-lambda-builders==0.5.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.30.0 aws-lambda-builders==0.5.0 --no-cache-dir diff --git a/python3.7/build/Dockerfile b/python3.7/build/Dockerfile index c605e519..9d97eed5 100644 --- a/python3.7/build/Dockerfile +++ b/python3.7/build/Dockerfile @@ -12,4 +12,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ - pip install -U awscli boto3 aws-sam-cli==0.22.0 aws-lambda-builders==0.5.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.30.0 aws-lambda-builders==0.5.0 --no-cache-dir diff --git a/ruby2.5/build/Dockerfile b/ruby2.5/build/Dockerfile index 73288426..77ac3f29 100644 --- a/ruby2.5/build/Dockerfile +++ b/ruby2.5/build/Dockerfile @@ -13,5 +13,5 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN gem update --system --no-document && \ gem install --no-document bundler && \ - curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ - pip install -U awscli boto3 aws-sam-cli==0.22.0 aws-lambda-builders==0.5.0 --no-cache-dir + curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python3 && \ + pip install -U awscli boto3 aws-sam-cli==0.30.0 aws-lambda-builders==0.5.0 --no-cache-dir From 121b329b5cd6d4398739e195177ffcf63828b790 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Sat, 2 Nov 2019 14:55:33 -0400 Subject: [PATCH 053/271] Update go1.x/run to use go modules --- .gitignore | 1 - go1.x/run/Dockerfile | 10 +++++----- go1.x/run/Gopkg.lock | 15 --------------- go1.x/run/Gopkg.toml | 3 --- go1.x/run/go.mod | 5 +++++ go1.x/run/go.sum | 13 +++++++++++++ 6 files changed, 23 insertions(+), 24 deletions(-) delete mode 100644 go1.x/run/Gopkg.lock delete mode 100644 go1.x/run/Gopkg.toml create mode 100644 go1.x/run/go.mod create mode 100644 go1.x/run/go.sum diff --git a/.gitignore b/.gitignore index 1f54115e..6cdca017 100644 --- a/.gitignore +++ b/.gitignore @@ -11,7 +11,6 @@ bin obj examples/java/build go1.x/run/aws-lambda-mock -go1.x/run/vendor examples/go1.x/handler examples/dotnetcore2.0/pub examples/dotnetcore2.1/pub diff --git a/go1.x/run/Dockerfile b/go1.x/run/Dockerfile index 49789687..30e2f877 100644 --- a/go1.x/run/Dockerfile +++ b/go1.x/run/Dockerfile @@ -1,8 +1,8 @@ FROM golang:1 -WORKDIR /go/src/github.com/lambci/docker-lambda -RUN curl -sSL -o /usr/local/bin/dep https://github.com/golang/dep/releases/download/v0.5.0/dep-linux-amd64 && chmod +x /usr/local/bin/dep -COPY aws-lambda-mock.go Gopkg.toml Gopkg.lock ./ -RUN dep ensure +WORKDIR /app +COPY go.mod go.sum ./ +RUN go mod download +COPY aws-lambda-mock.go ./ RUN GOARCH=amd64 GOOS=linux go build aws-lambda-mock.go @@ -13,7 +13,7 @@ ENV AWS_EXECUTION_ENV=AWS_Lambda_go1.x RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/go1.x.tgz | tar -zx -C / -COPY --from=0 /go/src/github.com/lambci/docker-lambda/aws-lambda-mock /var/runtime/aws-lambda-go +COPY --from=0 /app/aws-lambda-mock /var/runtime/aws-lambda-go USER sbx_user1051 diff --git a/go1.x/run/Gopkg.lock b/go1.x/run/Gopkg.lock deleted file mode 100644 index 9969ecf5..00000000 --- a/go1.x/run/Gopkg.lock +++ /dev/null @@ -1,15 +0,0 @@ -# This file is autogenerated, do not edit; changes may be undone by the next 'dep ensure'. - - -[[projects]] - name = "github.com/aws/aws-lambda-go" - packages = ["lambda/messages"] - revision = "fafa7e49388b8991caf99308e80655ba91816b72" - version = "v1.1.0" - -[solve-meta] - analyzer-name = "dep" - analyzer-version = 1 - inputs-digest = "3c793d7717a79ec1be981b49c1a1d884b15056f98188d915ec4b154f296eeceb" - solver-name = "gps-cdcl" - solver-version = 1 diff --git a/go1.x/run/Gopkg.toml b/go1.x/run/Gopkg.toml deleted file mode 100644 index 97ec5bc8..00000000 --- a/go1.x/run/Gopkg.toml +++ /dev/null @@ -1,3 +0,0 @@ -[[constraint]] - name = "github.com/aws/aws-lambda-go" - version = "1.1.0" diff --git a/go1.x/run/go.mod b/go1.x/run/go.mod new file mode 100644 index 00000000..5a5837c4 --- /dev/null +++ b/go1.x/run/go.mod @@ -0,0 +1,5 @@ +module aws-lambda-mock + +require github.com/aws/aws-lambda-go v1.13.2 + +go 1.13 diff --git a/go1.x/run/go.sum b/go1.x/run/go.sum new file mode 100644 index 00000000..d1f9fee8 --- /dev/null +++ b/go1.x/run/go.sum @@ -0,0 +1,13 @@ +github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +github.com/aws/aws-lambda-go v1.13.2 h1:8lYuRVn6rESoUNZXdbCmtGB4bBk4vcVYojiHjE4mMrM= +github.com/aws/aws-lambda-go v1.13.2/go.mod h1:4UKl9IzQMoD+QF79YdCuzCwp8VbmG4VAQwij/eHl5CU= +github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= +github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= From aab5852f89e5bb8f391b3cee8a64852ba2d4398e Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Sat, 2 Nov 2019 15:05:35 -0400 Subject: [PATCH 054/271] Update go1.x example to use go modules --- README.md | 6 +++--- base/test-all.sh | 2 +- examples/go1.x/Gopkg.lock | 25 ------------------------- examples/go1.x/Gopkg.toml | 3 --- examples/go1.x/go.mod | 5 +++++ examples/go1.x/go.sum | 13 +++++++++++++ examples/go1.x/handler.go | 7 ++++--- 7 files changed, 26 insertions(+), 35 deletions(-) delete mode 100644 examples/go1.x/Gopkg.lock delete mode 100644 examples/go1.x/Gopkg.toml create mode 100644 examples/go1.x/go.mod create mode 100644 examples/go1.x/go.sum diff --git a/README.md b/README.md index 29c68795..5851aafb 100644 --- a/README.md +++ b/README.md @@ -53,7 +53,7 @@ docker run --rm -v "$PWD":/var/task lambci/lambda:nodejs10.x index.myHandler '{" # Use the Node.js v8.10 runtime in a similar fashion docker run --rm -v "$PWD":/var/task lambci/lambda:nodejs8.10 index.myHandler '{}' - + # Use the Node.js v6.10 runtime with the default handler (index.handler) docker run --rm -v "$PWD":/var/task lambci/lambda:nodejs6.10 @@ -111,8 +111,8 @@ To use the build images, for compilation, deployment, etc: # To compile native deps in node_modules docker run --rm -v "$PWD":/var/task lambci/lambda:build-nodejs10.x npm rebuild -# To resolve dependencies on go1.x (working directory is /go/src/handler, will run `dep ensure`) -docker run --rm -v "$PWD":/go/src/handler lambci/lambda:build-go1.x +# To resolve dependencies on go1.x (working directory is /go/src/handler) +docker run --rm -v "$PWD":/go/src/handler lambci/lambda:build-go1.x go mod download # For .NET Core 2.0, this will publish the compiled code to `./pub`, # which you can then use to run with `-v "$PWD"/pub:/var/task` diff --git a/base/test-all.sh b/base/test-all.sh index a5f9c610..cac7d39d 100755 --- a/base/test-all.sh +++ b/base/test-all.sh @@ -40,7 +40,7 @@ docker run --rm -v "$PWD":/var/task lambci/lambda:build-dotnetcore2.1 dotnet pub docker run --rm -v "$PWD"/pub:/var/task lambci/lambda:dotnetcore2.1 test::test.Function::FunctionHandler '{"some": "event"}' cd ${EXAMPLES_DIR}/go1.x -docker run --rm -v "$PWD":/go/src/handler lambci/lambda:build-go1.x sh -c 'dep ensure && go build handler.go' +docker run --rm -v "$PWD":/go/src/handler lambci/lambda:build-go1.x sh -c 'go mod download && go build handler.go' docker run --rm -v "$PWD":/var/task lambci/lambda:go1.x handler '{"Records": []}' cd ${EXAMPLES_DIR}/provided diff --git a/examples/go1.x/Gopkg.lock b/examples/go1.x/Gopkg.lock deleted file mode 100644 index 04cbf573..00000000 --- a/examples/go1.x/Gopkg.lock +++ /dev/null @@ -1,25 +0,0 @@ -# This file is autogenerated, do not edit; changes may be undone by the next 'dep ensure'. - - -[[projects]] - digest = "1:8b55da6790eeade578c1fd4ebaa5b0e641072172e1d743f3cb945ae73af463f9" - name = "github.com/aws/aws-lambda-go" - packages = [ - "events", - "lambda", - "lambda/messages", - "lambdacontext", - ] - pruneopts = "" - revision = "2d482ef09017ae953b1e8d5a6ddac5b696663a3c" - version = "v1.6.0" - -[solve-meta] - analyzer-name = "dep" - analyzer-version = 1 - input-imports = [ - "github.com/aws/aws-lambda-go/events", - "github.com/aws/aws-lambda-go/lambda", - ] - solver-name = "gps-cdcl" - solver-version = 1 diff --git a/examples/go1.x/Gopkg.toml b/examples/go1.x/Gopkg.toml deleted file mode 100644 index 149d48d7..00000000 --- a/examples/go1.x/Gopkg.toml +++ /dev/null @@ -1,3 +0,0 @@ -[[constraint]] - name = "github.com/aws/aws-lambda-go" - version = "1.6.0" diff --git a/examples/go1.x/go.mod b/examples/go1.x/go.mod new file mode 100644 index 00000000..5a5837c4 --- /dev/null +++ b/examples/go1.x/go.mod @@ -0,0 +1,5 @@ +module aws-lambda-mock + +require github.com/aws/aws-lambda-go v1.13.2 + +go 1.13 diff --git a/examples/go1.x/go.sum b/examples/go1.x/go.sum new file mode 100644 index 00000000..d1f9fee8 --- /dev/null +++ b/examples/go1.x/go.sum @@ -0,0 +1,13 @@ +github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +github.com/aws/aws-lambda-go v1.13.2 h1:8lYuRVn6rESoUNZXdbCmtGB4bBk4vcVYojiHjE4mMrM= +github.com/aws/aws-lambda-go v1.13.2/go.mod h1:4UKl9IzQMoD+QF79YdCuzCwp8VbmG4VAQwij/eHl5CU= +github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= +github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= diff --git a/examples/go1.x/handler.go b/examples/go1.x/handler.go index 69ce5aae..29f361a0 100644 --- a/examples/go1.x/handler.go +++ b/examples/go1.x/handler.go @@ -1,5 +1,5 @@ // Compile with: -// docker run --rm -v "$PWD":/go/src/handler lambci/lambda:build-go1.x sh -c 'dep ensure && go build handler.go' +// docker run --rm -v "$PWD":/go/src/handler lambci/lambda:build-go1.x sh -c 'go mod download && go build handler.go' // Run with: // docker run --rm -v "$PWD":/var/task lambci/lambda:go1.x handler '{"Records": []}' @@ -9,11 +9,12 @@ package main import ( "context" "fmt" + "github.com/aws/aws-lambda-go/events" "github.com/aws/aws-lambda-go/lambda" ) -func HandleRequest(ctx context.Context, event events.S3Event) (string, error) { +func handleRequest(ctx context.Context, event events.S3Event) (string, error) { fmt.Println(ctx) fmt.Println(event) @@ -22,5 +23,5 @@ func HandleRequest(ctx context.Context, event events.S3Event) (string, error) { } func main() { - lambda.Start(HandleRequest) + lambda.Start(handleRequest) } From 69ef42e55ce8ccbb4193ccfe5e09529664df72b0 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Sat, 2 Nov 2019 15:09:47 -0400 Subject: [PATCH 055/271] Update provided to use chi v4.0.2 --- provided/run/Dockerfile | 2 +- provided/run/go.mod | 2 +- provided/run/go.sum | 4 ++++ 3 files changed, 6 insertions(+), 2 deletions(-) create mode 100644 provided/run/go.sum diff --git a/provided/run/Dockerfile b/provided/run/Dockerfile index 42c4da70..c7b1f41c 100644 --- a/provided/run/Dockerfile +++ b/provided/run/Dockerfile @@ -1,6 +1,6 @@ FROM golang:1 WORKDIR /app -COPY go.mod ./ +COPY go.mod go.sum ./ RUN go mod download COPY init.go ./ RUN GOARCH=amd64 GOOS=linux go build init.go diff --git a/provided/run/go.mod b/provided/run/go.mod index d2cabad7..0f8b9c00 100644 --- a/provided/run/go.mod +++ b/provided/run/go.mod @@ -1,6 +1,6 @@ module init require ( - github.com/go-chi/chi v3.3.3+incompatible + github.com/go-chi/chi v4.0.2+incompatible github.com/go-chi/render v1.0.1 ) diff --git a/provided/run/go.sum b/provided/run/go.sum new file mode 100644 index 00000000..9efc7108 --- /dev/null +++ b/provided/run/go.sum @@ -0,0 +1,4 @@ +github.com/go-chi/chi v4.0.2+incompatible h1:maB6vn6FqCxrpz4FqWdh4+lwpyZIQS7YEAUcHlgXVRs= +github.com/go-chi/chi v4.0.2+incompatible/go.mod h1:eB3wogJHnLi3x/kFX2A+IbTBlXxmMeXJVKy9tTv1XzQ= +github.com/go-chi/render v1.0.1 h1:4/5tis2cKaNdnv9zFLfXzcquC9HbeZgCnxGnKrltBS8= +github.com/go-chi/render v1.0.1/go.mod h1:pq4Rr7HbnsdaeHagklXub+p6Wd16Af5l9koip1OvJns= From b811ac90142f42fd0cf8cb33292a450b935a68ea Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Sat, 2 Nov 2019 16:22:22 -0400 Subject: [PATCH 056/271] Update java example to ensure we build on java 8 --- base/test-all.sh | 2 +- examples/java/README.md | 2 +- examples/java/build.gradle | 7 +++++-- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/base/test-all.sh b/base/test-all.sh index cac7d39d..adabcded 100755 --- a/base/test-all.sh +++ b/base/test-all.sh @@ -28,7 +28,7 @@ cd ${EXAMPLES_DIR}/ruby docker run --rm -v "$PWD":/var/task lambci/lambda:ruby2.5 lambda_function.lambda_handler cd ${EXAMPLES_DIR}/java -gradle build +docker run --rm -v "$PWD":/app -w /app gradle gradle build docker run --rm -v "$PWD/build/docker":/var/task lambci/lambda:java8 org.lambci.lambda.ExampleHandler '{"some": "event"}' cd ${EXAMPLES_DIR}/dotnetcore2.0 diff --git a/examples/java/README.md b/examples/java/README.md index 4f69c6d8..72bba02f 100644 --- a/examples/java/README.md +++ b/examples/java/README.md @@ -7,7 +7,7 @@ Run with: ```sh # Will place the compiled code in `./build/docker` -gradle build +docker run --rm -v "$PWD":/app -w /app gradle gradle build # Then you can run using that directory as the task directory docker run --rm -v "$PWD/build/docker":/var/task lambci/lambda:java8 org.lambci.lambda.ExampleHandler '{"some": "event"}' diff --git a/examples/java/build.gradle b/examples/java/build.gradle index 09fb11af..b0652974 100644 --- a/examples/java/build.gradle +++ b/examples/java/build.gradle @@ -1,13 +1,16 @@ apply plugin: 'java' +sourceCompatibility = '1.8' +targetCompatibility = '1.8' + repositories { mavenCentral() } dependencies { compile ( - 'com.amazonaws:aws-lambda-java-core:1.1.0', - 'com.amazonaws:aws-lambda-java-events:1.1.0' + 'com.amazonaws:aws-lambda-java-core:1.2.0', + 'com.amazonaws:aws-lambda-java-events:2.2.7' ) } From e11a9a34b3f2099a83ac161445e4d68b41784e47 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Sat, 2 Nov 2019 16:50:29 -0400 Subject: [PATCH 057/271] Linting go1.x/run --- go1.x/run/aws-lambda-mock.go | 63 ++++++++++++++++++------------------ 1 file changed, 32 insertions(+), 31 deletions(-) diff --git a/go1.x/run/aws-lambda-mock.go b/go1.x/run/aws-lambda-mock.go index 86bdd2fa..129c578a 100644 --- a/go1.x/run/aws-lambda-mock.go +++ b/go1.x/run/aws-lambda-mock.go @@ -7,7 +7,6 @@ import ( "encoding/json" "flag" "fmt" - "github.com/aws/aws-lambda-go/lambda/messages" "io/ioutil" "math" "math/rand" @@ -20,6 +19,8 @@ import ( "strconv" "syscall" "time" + + "github.com/aws/aws-lambda-go/lambda/messages" ) func main() { @@ -28,7 +29,7 @@ func main() { debugMode := flag.Bool("debug", false, "enables delve debugging") delvePath := flag.String("delvePath", "/tmp/lambci_debug_files/dlv", "path to delve") delvePort := flag.String("delvePort", "5985", "port to start delve server on") - delveAPI := flag.String("delveAPI", "1", "delve api version") + delveAPI := flag.String("delveAPI", "1", "delve api version") flag.Parse() positionalArgs := flag.Args() var handler string @@ -53,15 +54,15 @@ func main() { } } - mockContext := &MockLambdaContext{ - RequestId: fakeGuid(), + mockContext := &mockLambdaContext{ + RequestID: fakeGUID(), EventBody: eventBody, FnName: getEnv("AWS_LAMBDA_FUNCTION_NAME", "test"), Version: getEnv("AWS_LAMBDA_FUNCTION_VERSION", "$LATEST"), MemSize: getEnv("AWS_LAMBDA_FUNCTION_MEMORY_SIZE", "1536"), Timeout: getEnv("AWS_LAMBDA_FUNCTION_TIMEOUT", "300"), Region: getEnv("AWS_REGION", getEnv("AWS_DEFAULT_REGION", "us-east-1")), - AccountId: getEnv("AWS_ACCOUNT_ID", strconv.FormatInt(int64(rand.Int31()), 10)), + AccountID: getEnv("AWS_ACCOUNT_ID", strconv.FormatInt(int64(rand.Int31()), 10)), Start: time.Now(), Pid: 1, } @@ -170,28 +171,28 @@ func main() { defer logEndRequest(mockContext, err) } -func abortRequest(mockContext *MockLambdaContext, err error) { +func abortRequest(mockContext *mockLambdaContext, err error) { logStartRequest(mockContext) logEndRequest(mockContext, err) } -func logStartRequest(mockContext *MockLambdaContext) { - systemLog("START RequestId: " + mockContext.RequestId + " Version: " + mockContext.Version) +func logStartRequest(mockContext *mockLambdaContext) { + systemLog("START RequestId: " + mockContext.RequestID + " Version: " + mockContext.Version) } -func logEndRequest(mockContext *MockLambdaContext, err error) { +func logEndRequest(mockContext *mockLambdaContext, err error) { curMem, _ := calculateMemoryInMb(mockContext.Pid) diffMs := math.Min(float64(time.Now().Sub(mockContext.Start).Nanoseconds()), float64(mockContext.TimeoutDuration.Nanoseconds())) / 1e6 - systemLog("END RequestId: " + mockContext.RequestId) + systemLog("END RequestId: " + mockContext.RequestID) systemLog(fmt.Sprintf( "REPORT RequestId: %s\t"+ "Duration: %.2f ms\t"+ "Billed Duration: %.f ms\t"+ "Memory Size: %s MB\t"+ "Max Memory Used: %d MB\t", - mockContext.RequestId, diffMs, math.Ceil(diffMs/100)*100, mockContext.MemSize, curMem)) + mockContext.RequestID, diffMs, math.Ceil(diffMs/100)*100, mockContext.MemSize, curMem)) if err == nil && mockContext.HasExpired() { err = mockContext.TimeoutErr() @@ -205,7 +206,7 @@ func logEndRequest(mockContext *MockLambdaContext, err error) { if responseErr.Type == "errorString" { responseErr.Type = "" if responseErr.Message == "unexpected EOF" { - responseErr.Message = "RequestId: " + mockContext.RequestId + " Process exited before completing request" + responseErr.Message = "RequestId: " + mockContext.RequestID + " Process exited before completing request" } } systemErr(&responseErr) @@ -228,7 +229,7 @@ func getEnv(key, fallback string) string { return fallback } -func fakeGuid() string { +func fakeGUID() string { randBuf := make([]byte, 16) rand.Read(randBuf) @@ -259,9 +260,9 @@ func logStreamName(version string) string { return time.Now().Format("2006/01/02") + "/[" + version + "]" + string(hexBuf) } -func arn(region string, accountId string, fnName string) string { +func arn(region string, accountID string, fnName string) string { nonDigit := regexp.MustCompile(`[^\d]`) - return "arn:aws:lambda:" + region + ":" + nonDigit.ReplaceAllString(accountId, "") + ":function:" + fnName + return "arn:aws:lambda:" + region + ":" + nonDigit.ReplaceAllString(accountID, "") + ":function:" + fnName } // Thanks to https://stackoverflow.com/a/31881979 @@ -294,11 +295,11 @@ func calculateMemoryInMb(pid int) (uint64, error) { } func getErrorType(err interface{}) string { - if errorType := reflect.TypeOf(err); errorType.Kind() == reflect.Ptr { + errorType := reflect.TypeOf(err) + if errorType.Kind() == reflect.Ptr { return errorType.Elem().Name() - } else { - return errorType.Name() } + return errorType.Name() } func systemLog(msg string) { @@ -307,7 +308,7 @@ func systemLog(msg string) { // Try to match the output of the Lambda web console func systemErr(err *messages.InvokeResponse_Error) { - jsonBytes, _ := json.MarshalIndent(LambdaError{ + jsonBytes, _ := json.MarshalIndent(lambdaError{ Message: err.Message, Type: err.Type, StackTrace: err.StackTrace, @@ -315,28 +316,28 @@ func systemErr(err *messages.InvokeResponse_Error) { fmt.Fprintln(os.Stderr, "\033[31m"+string(jsonBytes)+"\033[0m") } -type LambdaError struct { +type lambdaError struct { Message string `json:"errorMessage"` Type string `json:"errorType,omitempty"` StackTrace []*messages.InvokeResponse_Error_StackFrame `json:"stackTrace,omitempty"` } -type MockLambdaContext struct { - RequestId string +type mockLambdaContext struct { + RequestID string EventBody string FnName string Version string MemSize string Timeout string Region string - AccountId string + AccountID string Start time.Time TimeoutDuration time.Duration Pid int Reply *messages.InvokeResponse } -func (mc *MockLambdaContext) ParseTimeout() { +func (mc *mockLambdaContext) ParseTimeout() { timeoutDuration, err := time.ParseDuration(mc.Timeout + "s") if err != nil { panic(err) @@ -344,20 +345,20 @@ func (mc *MockLambdaContext) ParseTimeout() { mc.TimeoutDuration = timeoutDuration } -func (mc *MockLambdaContext) Deadline() time.Time { +func (mc *mockLambdaContext) Deadline() time.Time { return mc.Start.Add(mc.TimeoutDuration) } -func (mc *MockLambdaContext) HasExpired() bool { +func (mc *mockLambdaContext) HasExpired() bool { return time.Now().After(mc.Deadline()) } -func (mc *MockLambdaContext) Request() *messages.InvokeRequest { +func (mc *mockLambdaContext) Request() *messages.InvokeRequest { return &messages.InvokeRequest{ Payload: []byte(mc.EventBody), - RequestId: mc.RequestId, + RequestId: mc.RequestID, XAmznTraceId: getEnv("_X_AMZN_TRACE_ID", ""), - InvokedFunctionArn: getEnv("AWS_LAMBDA_FUNCTION_INVOKED_ARN", arn(mc.Region, mc.AccountId, mc.FnName)), + InvokedFunctionArn: getEnv("AWS_LAMBDA_FUNCTION_INVOKED_ARN", arn(mc.Region, mc.AccountID, mc.FnName)), Deadline: messages.InvokeRequest_Timestamp{ Seconds: mc.Deadline().Unix(), Nanos: int64(mc.Deadline().Nanosecond()), @@ -365,7 +366,7 @@ func (mc *MockLambdaContext) Request() *messages.InvokeRequest { } } -func (mc *MockLambdaContext) TimeoutErr() error { +func (mc *mockLambdaContext) TimeoutErr() error { return fmt.Errorf("%s %s Task timed out after %s.00 seconds", time.Now().Format("2006-01-02T15:04:05.999Z"), - mc.RequestId, mc.Timeout) + mc.RequestID, mc.Timeout) } From 30d0c2b06a047c53438ca1f6ab6cee40dcfd333d Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Wed, 6 Nov 2019 20:07:42 -0500 Subject: [PATCH 058/271] Update latest base-2 packages --- base/base-2/amazonlinux2.txt | 58 ++++++++++++++++++------------------ base/base-2/diff.txt | 32 ++++++++++---------- base/base-2/packages.txt | 25 ++++++++-------- 3 files changed, 58 insertions(+), 57 deletions(-) diff --git a/base/base-2/amazonlinux2.txt b/base/base-2/amazonlinux2.txt index bfaf1679..b338bb3e 100644 --- a/base/base-2/amazonlinux2.txt +++ b/base/base-2/amazonlinux2.txt @@ -1,4 +1,4 @@ -amazon-linux-extras-1.6.9-1.amzn2.noarch +amazon-linux-extras-1.6.9-2.amzn2.noarch basesystem-10.0-7.amzn2.0.1.noarch bash-4.2.46-30.amzn2.x86_64 bzip2-libs-1.0.6-13.amzn2.0.2.x86_64 @@ -6,21 +6,21 @@ ca-certificates-2018.2.22-70.0.amzn2.noarch chkconfig-1.7.4-1.amzn2.0.2.x86_64 coreutils-8.22-21.amzn2.x86_64 cpio-2.11-27.amzn2.x86_64 -curl-7.61.1-11.amzn2.0.2.x86_64 +curl-7.61.1-12.amzn2.0.1.x86_64 cyrus-sasl-lib-2.1.26-23.amzn2.x86_64 diffutils-3.3-4.amzn2.0.2.x86_64 -elfutils-libelf-0.170-4.amzn2.x86_64 +elfutils-libelf-0.176-2.amzn2.x86_64 expat-2.1.0-10.amzn2.0.2.x86_64 file-libs-5.11-33.amzn2.0.2.x86_64 filesystem-3.2-25.amzn2.0.4.x86_64 findutils-4.5.11-5.amzn2.0.2.x86_64 gawk-4.0.2-4.amzn2.1.2.x86_64 gdbm-1.13-6.amzn2.0.2.x86_64 -glib2-2.54.2-2.amzn2.x86_64 -glibc-2.26-32.amzn2.0.1.x86_64 -glibc-common-2.26-32.amzn2.0.1.x86_64 -glibc-langpack-en-2.26-32.amzn2.0.1.x86_64 -glibc-minimal-langpack-2.26-32.amzn2.0.1.x86_64 +glib2-2.56.1-4.amzn2.x86_64 +glibc-2.26-32.amzn2.0.2.x86_64 +glibc-common-2.26-32.amzn2.0.2.x86_64 +glibc-langpack-en-2.26-32.amzn2.0.2.x86_64 +glibc-minimal-langpack-2.26-32.amzn2.0.2.x86_64 gmp-6.0.0-15.amzn2.0.2.x86_64 gnupg2-2.0.22-5.amzn2.0.3.x86_64 gpgme-1.3.2-5.amzn2.0.2.x86_64 @@ -34,39 +34,39 @@ libattr-2.4.46-12.amzn2.0.2.x86_64 libblkid-2.30.2-2.amzn2.0.4.x86_64 libcap-2.22-9.amzn2.0.2.x86_64 libcom_err-1.42.9-12.amzn2.0.2.x86_64 -libcrypt-2.26-32.amzn2.0.1.x86_64 -libcurl-7.61.1-11.amzn2.0.2.x86_64 +libcrypt-2.26-32.amzn2.0.2.x86_64 +libcurl-7.61.1-12.amzn2.0.1.x86_64 libdb-5.3.21-24.amzn2.0.3.x86_64 libdb-utils-5.3.21-24.amzn2.0.3.x86_64 libffi-3.0.13-18.amzn2.0.2.x86_64 -libgcc-7.3.1-5.amzn2.0.2.x86_64 +libgcc-7.3.1-6.amzn2.0.4.x86_64 libgcrypt-1.5.3-14.amzn2.0.2.x86_64 libgpg-error-1.12-3.amzn2.0.3.x86_64 libidn2-2.0.4-1.amzn2.0.2.x86_64 libmetalink-0.1.2-7.amzn2.0.2.x86_64 libmount-2.30.2-2.amzn2.0.4.x86_64 -libnghttp2-1.31.1-1.amzn2.0.2.x86_64 +libnghttp2-1.39.2-1.amzn2.x86_64 libselinux-2.5-12.amzn2.0.2.x86_64 libsepol-2.5-8.1.amzn2.0.2.x86_64 -libssh2-1.4.3-12.amzn2.2.1.x86_64 -libstdc++-7.3.1-5.amzn2.0.2.x86_64 +libssh2-1.4.3-12.amzn2.2.2.x86_64 +libstdc++-7.3.1-6.amzn2.0.4.x86_64 libtasn1-4.10-1.amzn2.0.2.x86_64 libunistring-0.9.3-9.amzn2.0.2.x86_64 libuuid-2.30.2-2.amzn2.0.4.x86_64 libverto-0.2.5-4.amzn2.0.2.x86_64 -libxml2-2.9.1-6.amzn2.3.2.x86_64 +libxml2-2.9.1-6.amzn2.3.3.x86_64 lua-5.1.4-15.amzn2.0.2.x86_64 -ncurses-6.0-8.20170212.amzn2.1.2.x86_64 -ncurses-base-6.0-8.20170212.amzn2.1.2.noarch -ncurses-libs-6.0-8.20170212.amzn2.1.2.x86_64 -nspr-4.19.0-1.amzn2.x86_64 -nss-3.36.0-7.amzn2.x86_64 +ncurses-6.0-8.20170212.amzn2.1.3.x86_64 +ncurses-base-6.0-8.20170212.amzn2.1.3.noarch +ncurses-libs-6.0-8.20170212.amzn2.1.3.x86_64 +nspr-4.21.0-1.amzn2.0.2.x86_64 +nss-3.44.0-4.amzn2.0.2.x86_64 nss-pem-1.0.3-5.amzn2.x86_64 -nss-softokn-3.36.0-5.amzn2.0.1.x86_64 -nss-softokn-freebl-3.36.0-5.amzn2.0.1.x86_64 -nss-sysinit-3.36.0-7.amzn2.x86_64 -nss-tools-3.36.0-7.amzn2.x86_64 -nss-util-3.36.0-1.amzn2.x86_64 +nss-softokn-3.44.0-5.amzn2.0.2.x86_64 +nss-softokn-freebl-3.44.0-5.amzn2.0.2.x86_64 +nss-sysinit-3.44.0-4.amzn2.0.2.x86_64 +nss-tools-3.44.0-4.amzn2.0.2.x86_64 +nss-util-3.44.0-3.amzn2.0.2.x86_64 openldap-2.4.44-15.amzn2.x86_64 openssl-libs-1.0.2k-16.amzn2.1.1.x86_64 p11-kit-0.23.5-3.amzn2.0.2.x86_64 @@ -77,9 +77,9 @@ popt-1.13-16.amzn2.0.2.x86_64 pth-2.0.7-23.amzn2.0.2.x86_64 pygpgme-0.3-9.amzn2.0.2.x86_64 pyliblzma-0.5.3-11.amzn2.0.2.x86_64 -python-2.7.16-2.amzn2.0.1.x86_64 +python-2.7.16-3.amzn2.0.1.x86_64 python-iniparse-0.4-9.amzn2.noarch -python-libs-2.7.16-2.amzn2.0.1.x86_64 +python-libs-2.7.16-3.amzn2.0.1.x86_64 python-pycurl-7.19.0-19.amzn2.0.2.x86_64 python-urlgrabber-3.10-8.amzn2.noarch pyxattr-0.5.1-5.amzn2.0.2.x86_64 @@ -92,8 +92,8 @@ sed-4.2.2-5.amzn2.0.2.x86_64 setup-2.8.71-10.amzn2.noarch shared-mime-info-1.8-4.amzn2.x86_64 sqlite-3.7.17-8.amzn2.0.2.x86_64 -system-release-2-10.amzn2.x86_64 -tzdata-2018i-1.amzn2.noarch +system-release-2-11.amzn2.x86_64 +tzdata-2019c-1.amzn2.noarch vim-minimal-8.1.1602-1.amzn2.x86_64 xz-libs-5.2.2-1.amzn2.0.2.x86_64 yum-3.4.3-158.amzn2.0.2.noarch diff --git a/base/base-2/diff.txt b/base/base-2/diff.txt index 12feac86..cb9feacb 100644 --- a/base/base-2/diff.txt +++ b/base/base-2/diff.txt @@ -1,22 +1,22 @@ -amazon-linux-extras-1.6.9-1.amzn2.noarch +amazon-linux-extras-1.6.9-2.amzn2.noarch bzip2-libs-1.0.6-13.amzn2.0.2.x86_64 cpio-2.11-27.amzn2.x86_64 -curl-7.61.1-11.amzn2.0.2.x86_64 +curl-7.61.1-12.amzn2.0.1.x86_64 cyrus-sasl-lib-2.1.26-23.amzn2.x86_64 diffutils-3.3-4.amzn2.0.2.x86_64 -elfutils-libelf-0.170-4.amzn2.x86_64 +elfutils-libelf-0.176-2.amzn2.x86_64 expat-2.1.0-10.amzn2.0.2.x86_64 file-libs-5.11-33.amzn2.0.2.x86_64 findutils-4.5.11-5.amzn2.0.2.x86_64 gdbm-1.13-6.amzn2.0.2.x86_64 -glib2-2.54.2-2.amzn2.x86_64 -glibc-langpack-en-2.26-32.amzn2.0.1.x86_64 +glib2-2.56.1-4.amzn2.x86_64 +glibc-langpack-en-2.26-32.amzn2.0.2.x86_64 gnupg2-2.0.22-5.amzn2.0.3.x86_64 gpgme-1.3.2-5.amzn2.0.2.x86_64 libassuan-2.1.0-3.amzn2.0.2.x86_64 libblkid-2.30.2-2.amzn2.0.4.x86_64 -libcrypt-2.26-32.amzn2.0.1.x86_64 -libcurl-7.61.1-11.amzn2.0.2.x86_64 +libcrypt-2.26-32.amzn2.0.2.x86_64 +libcurl-7.61.1-12.amzn2.0.1.x86_64 libdb-5.3.21-24.amzn2.0.3.x86_64 libdb-utils-5.3.21-24.amzn2.0.3.x86_64 libgcrypt-1.5.3-14.amzn2.0.2.x86_64 @@ -24,25 +24,25 @@ libgpg-error-1.12-3.amzn2.0.3.x86_64 libidn2-2.0.4-1.amzn2.0.2.x86_64 libmetalink-0.1.2-7.amzn2.0.2.x86_64 libmount-2.30.2-2.amzn2.0.4.x86_64 -libnghttp2-1.31.1-1.amzn2.0.2.x86_64 -libssh2-1.4.3-12.amzn2.2.1.x86_64 +libnghttp2-1.39.2-1.amzn2.x86_64 +libssh2-1.4.3-12.amzn2.2.2.x86_64 libunistring-0.9.3-9.amzn2.0.2.x86_64 libuuid-2.30.2-2.amzn2.0.4.x86_64 -libxml2-2.9.1-6.amzn2.3.2.x86_64 +libxml2-2.9.1-6.amzn2.3.3.x86_64 lua-5.1.4-15.amzn2.0.2.x86_64 -nss-3.36.0-7.amzn2.x86_64 +nss-3.44.0-4.amzn2.0.2.x86_64 nss-pem-1.0.3-5.amzn2.x86_64 -nss-softokn-3.36.0-5.amzn2.0.1.x86_64 -nss-sysinit-3.36.0-7.amzn2.x86_64 -nss-tools-3.36.0-7.amzn2.x86_64 +nss-softokn-3.44.0-5.amzn2.0.2.x86_64 +nss-sysinit-3.44.0-4.amzn2.0.2.x86_64 +nss-tools-3.44.0-4.amzn2.0.2.x86_64 openldap-2.4.44-15.amzn2.x86_64 pinentry-0.8.1-17.amzn2.0.2.x86_64 pth-2.0.7-23.amzn2.0.2.x86_64 pygpgme-0.3-9.amzn2.0.2.x86_64 pyliblzma-0.5.3-11.amzn2.0.2.x86_64 -python-2.7.16-2.amzn2.0.1.x86_64 +python-2.7.16-3.amzn2.0.1.x86_64 python-iniparse-0.4-9.amzn2.noarch -python-libs-2.7.16-2.amzn2.0.1.x86_64 +python-libs-2.7.16-3.amzn2.0.1.x86_64 python-pycurl-7.19.0-19.amzn2.0.2.x86_64 python-urlgrabber-3.10-8.amzn2.noarch pyxattr-0.5.1-5.amzn2.0.2.x86_64 diff --git a/base/base-2/packages.txt b/base/base-2/packages.txt index ce55eec8..06d01f50 100644 --- a/base/base-2/packages.txt +++ b/base/base-2/packages.txt @@ -5,9 +5,10 @@ chkconfig-1.7.4-1.amzn2.0.2.x86_64 coreutils-8.22-21.amzn2.x86_64 filesystem-3.2-25.amzn2.0.4.x86_64 gawk-4.0.2-4.amzn2.1.2.x86_64 -glibc-2.26-32.amzn2.0.1.x86_64 -glibc-common-2.26-32.amzn2.0.1.x86_64 -glibc-minimal-langpack-2.26-32.amzn2.0.1.x86_64 +glibc-2.26-32.amzn2.0.2.x86_64 +glibc-all-langpacks-2.26-32.amzn2.0.2.x86_64 +glibc-common-2.26-32.amzn2.0.2.x86_64 +glibc-minimal-langpack-2.26-32.amzn2.0.2.x86_64 gmp-6.0.0-15.amzn2.0.2.x86_64 grep-2.20-3.amzn2.0.2.x86_64 info-5.1-5.amzn2.x86_64 @@ -18,18 +19,18 @@ libattr-2.4.46-12.amzn2.0.2.x86_64 libcap-2.22-9.amzn2.0.2.x86_64 libcom_err-1.42.9-12.amzn2.0.2.x86_64 libffi-3.0.13-18.amzn2.0.2.x86_64 -libgcc-7.3.1-5.amzn2.0.2.x86_64 +libgcc-7.3.1-6.amzn2.0.4.x86_64 libselinux-2.5-12.amzn2.0.2.x86_64 libsepol-2.5-8.1.amzn2.0.2.x86_64 -libstdc++-7.3.1-5.amzn2.0.2.x86_64 +libstdc++-7.3.1-6.amzn2.0.4.x86_64 libtasn1-4.10-1.amzn2.0.2.x86_64 libverto-0.2.5-4.amzn2.0.2.x86_64 -ncurses-6.0-8.20170212.amzn2.1.2.x86_64 -ncurses-base-6.0-8.20170212.amzn2.1.2.noarch -ncurses-libs-6.0-8.20170212.amzn2.1.2.x86_64 -nspr-4.19.0-1.amzn2.x86_64 -nss-softokn-freebl-3.36.0-5.amzn2.0.1.x86_64 -nss-util-3.36.0-1.amzn2.x86_64 +ncurses-6.0-8.20170212.amzn2.1.3.x86_64 +ncurses-base-6.0-8.20170212.amzn2.1.3.noarch +ncurses-libs-6.0-8.20170212.amzn2.1.3.x86_64 +nspr-4.21.0-1.amzn2.0.2.x86_64 +nss-softokn-freebl-3.44.0-5.amzn2.0.2.x86_64 +nss-util-3.44.0-3.amzn2.0.2.x86_64 openssl-libs-1.0.2k-16.amzn2.1.1.x86_64 p11-kit-0.23.5-3.amzn2.0.2.x86_64 p11-kit-trust-0.23.5-3.amzn2.0.2.x86_64 @@ -38,5 +39,5 @@ popt-1.13-16.amzn2.0.2.x86_64 sed-4.2.2-5.amzn2.0.2.x86_64 setup-2.8.71-10.amzn2.noarch system-release-2-10.amzn2.x86_64 -tzdata-2018i-1.amzn2.noarch +tzdata-2019b-1.amzn2.noarch zlib-1.2.7-17.amzn2.0.2.x86_64 From 220e45a714f8ce7cd30150a95e8d04ab9af4547f Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Wed, 6 Nov 2019 20:18:32 -0500 Subject: [PATCH 059/271] Simplify nodejs10.x build Dockerfile --- nodejs10.x/build/Dockerfile | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/nodejs10.x/build/Dockerfile b/nodejs10.x/build/Dockerfile index a85ece18..392a4fd8 100644 --- a/nodejs10.x/build/Dockerfile +++ b/nodejs10.x/build/Dockerfile @@ -9,5 +9,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ curl https://lambci.s3.amazonaws.com/fs/nodejs10.x.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip3 install -U pip setuptools --no-cache-dir && \ - pip install -U awscli boto3 aws-sam-cli==0.30.0 aws-lambda-builders==0.5.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.31.0 aws-lambda-builders==0.5.0 --no-cache-dir From f0286dae139d7af9401e3aa50dd91f2517f3dedf Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Wed, 6 Nov 2019 20:27:36 -0500 Subject: [PATCH 060/271] Update remaining build runtimes to aws-sam-cli 0.31.0 --- dotnetcore2.0/build/Dockerfile | 2 +- dotnetcore2.1/build/Dockerfile | 2 +- go1.x/build/Dockerfile | 2 +- java8/build/Dockerfile | 2 +- nodejs4.3/build/Dockerfile | 2 +- nodejs6.10/build/Dockerfile | 2 +- nodejs8.10/build/Dockerfile | 2 +- provided/build/Dockerfile | 2 +- python3.6/build/Dockerfile | 2 +- python3.7/build/Dockerfile | 2 +- ruby2.5/build/Dockerfile | 2 +- 11 files changed, 11 insertions(+), 11 deletions(-) diff --git a/dotnetcore2.0/build/Dockerfile b/dotnetcore2.0/build/Dockerfile index dae399b6..7bd33006 100644 --- a/dotnetcore2.0/build/Dockerfile +++ b/dotnetcore2.0/build/Dockerfile @@ -21,6 +21,6 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python3 && \ - pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.30.0 aws-lambda-builders==0.5.0 --no-cache-dir + pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.31.0 aws-lambda-builders==0.5.0 --no-cache-dir CMD ["dotnet", "build"] diff --git a/dotnetcore2.1/build/Dockerfile b/dotnetcore2.1/build/Dockerfile index db3b8270..e2a831be 100644 --- a/dotnetcore2.1/build/Dockerfile +++ b/dotnetcore2.1/build/Dockerfile @@ -22,7 +22,7 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python3 && \ - pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.30.0 aws-lambda-builders==0.5.0 --no-cache-dir && \ + pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.31.0 aws-lambda-builders==0.5.0 --no-cache-dir && \ dotnet tool install --global Amazon.Lambda.Tools --version 3.3.1 CMD ["dotnet", "build"] diff --git a/go1.x/build/Dockerfile b/go1.x/build/Dockerfile index 17e97750..ddb255ac 100644 --- a/go1.x/build/Dockerfile +++ b/go1.x/build/Dockerfile @@ -17,6 +17,6 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python3 && \ - pip install -U awscli boto3 aws-sam-cli==0.30.0 aws-lambda-builders==0.5.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.31.0 aws-lambda-builders==0.5.0 --no-cache-dir CMD ["dep", "ensure"] diff --git a/java8/build/Dockerfile b/java8/build/Dockerfile index 1a1e2332..41e28661 100644 --- a/java8/build/Dockerfile +++ b/java8/build/Dockerfile @@ -16,4 +16,4 @@ ENV PATH="/usr/local/gradle/gradle-5.2/bin:/usr/local/maven/apache-maven-3.6.0/b # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python3 && \ - pip install -U awscli boto3 aws-sam-cli==0.30.0 aws-lambda-builders==0.5.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.31.0 aws-lambda-builders==0.5.0 --no-cache-dir diff --git a/nodejs4.3/build/Dockerfile b/nodejs4.3/build/Dockerfile index d119faeb..6c2b0462 100644 --- a/nodejs4.3/build/Dockerfile +++ b/nodejs4.3/build/Dockerfile @@ -11,6 +11,6 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python3 && \ - pip install -U awscli boto3 aws-sam-cli==0.30.0 aws-lambda-builders==0.5.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.31.0 aws-lambda-builders==0.5.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/nodejs6.10/build/Dockerfile b/nodejs6.10/build/Dockerfile index 5813022c..168c866b 100644 --- a/nodejs6.10/build/Dockerfile +++ b/nodejs6.10/build/Dockerfile @@ -11,6 +11,6 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python3 && \ - pip install -U awscli boto3 aws-sam-cli==0.30.0 aws-lambda-builders==0.5.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.31.0 aws-lambda-builders==0.5.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/nodejs8.10/build/Dockerfile b/nodejs8.10/build/Dockerfile index 2efc9c2e..e1f6d6ad 100644 --- a/nodejs8.10/build/Dockerfile +++ b/nodejs8.10/build/Dockerfile @@ -11,6 +11,6 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python3 && \ - pip install -U awscli boto3 aws-sam-cli==0.30.0 aws-lambda-builders==0.5.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.31.0 aws-lambda-builders==0.5.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/provided/build/Dockerfile b/provided/build/Dockerfile index f204386a..1026540f 100644 --- a/provided/build/Dockerfile +++ b/provided/build/Dockerfile @@ -2,4 +2,4 @@ FROM lambci/lambda-base:build # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python3 && \ - pip install -U awscli boto3 aws-sam-cli==0.30.0 aws-lambda-builders==0.5.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.31.0 aws-lambda-builders==0.5.0 --no-cache-dir diff --git a/python3.6/build/Dockerfile b/python3.6/build/Dockerfile index da737b89..20b3edbe 100644 --- a/python3.6/build/Dockerfile +++ b/python3.6/build/Dockerfile @@ -19,4 +19,4 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ - pip install -U awscli boto3 aws-sam-cli==0.30.0 aws-lambda-builders==0.5.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.31.0 aws-lambda-builders==0.5.0 --no-cache-dir diff --git a/python3.7/build/Dockerfile b/python3.7/build/Dockerfile index 9d97eed5..76d6a5e1 100644 --- a/python3.7/build/Dockerfile +++ b/python3.7/build/Dockerfile @@ -12,4 +12,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ - pip install -U awscli boto3 aws-sam-cli==0.30.0 aws-lambda-builders==0.5.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.31.0 aws-lambda-builders==0.5.0 --no-cache-dir diff --git a/ruby2.5/build/Dockerfile b/ruby2.5/build/Dockerfile index 77ac3f29..d670c93f 100644 --- a/ruby2.5/build/Dockerfile +++ b/ruby2.5/build/Dockerfile @@ -14,4 +14,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ RUN gem update --system --no-document && \ gem install --no-document bundler && \ curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python3 && \ - pip install -U awscli boto3 aws-sam-cli==0.30.0 aws-lambda-builders==0.5.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.31.0 aws-lambda-builders==0.5.0 --no-cache-dir From a1c737b692deb21b20a0ed9034356e5f8d63f4df Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Wed, 6 Nov 2019 22:12:15 -0500 Subject: [PATCH 061/271] Move pip install into base build image Update python3.6 build to 3.6.9 --- base/build/Dockerfile | 1 + dotnetcore2.0/build/Dockerfile | 5 ++--- dotnetcore2.1/build/Dockerfile | 5 ++--- go1.x/build/Dockerfile | 3 +-- java8/build/Dockerfile | 3 +-- nodejs4.3/build/Dockerfile | 3 +-- nodejs6.10/build/Dockerfile | 3 +-- nodejs8.10/build/Dockerfile | 3 +-- provided/build/Dockerfile | 3 +-- python2.7/build/Dockerfile | 5 ++--- python3.6/build/Dockerfile | 6 +++--- ruby2.5/build/Dockerfile | 1 - 12 files changed, 16 insertions(+), 25 deletions(-) diff --git a/base/build/Dockerfile b/base/build/Dockerfile index f773c861..9f0e95dd 100644 --- a/base/build/Dockerfile +++ b/base/build/Dockerfile @@ -22,5 +22,6 @@ f.close();" && \ alternatives --set gcc /usr/bin/gcc48 && \ alternatives --set g++ /usr/bin/g++48 && \ alternatives --set cpp /usr/bin/cpp48 && \ + curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python3 && \ yum clean all && \ rm -rf /var/cache/yum diff --git a/dotnetcore2.0/build/Dockerfile b/dotnetcore2.0/build/Dockerfile index 7bd33006..eed41182 100644 --- a/dotnetcore2.0/build/Dockerfile +++ b/dotnetcore2.0/build/Dockerfile @@ -12,7 +12,7 @@ ENV PATH=/var/lang/bin:$PATH \ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/dotnetcore2.0.tgz | tar -zx -C / && \ yum install -y libunwind && \ - curl https://dot.net/v1/dotnet-install.sh | bash -s -- -v $DOTNET_SDK_VERSION -i /var/lang/bin && \ + curl -L https://dot.net/v1/dotnet-install.sh | bash -s -- -v $DOTNET_SDK_VERSION -i /var/lang/bin && \ mkdir /tmp/warmup && \ cd /tmp/warmup && \ dotnet new && \ @@ -20,7 +20,6 @@ RUN rm -rf /var/runtime /var/lang && \ rm -rf /tmp/warmup /tmp/NuGetScratch # Add these as a separate layer as they get updated frequently -RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python3 && \ - pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.31.0 aws-lambda-builders==0.5.0 --no-cache-dir +RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.31.0 aws-lambda-builders==0.5.0 --no-cache-dir CMD ["dotnet", "build"] diff --git a/dotnetcore2.1/build/Dockerfile b/dotnetcore2.1/build/Dockerfile index e2a831be..b31f75d3 100644 --- a/dotnetcore2.1/build/Dockerfile +++ b/dotnetcore2.1/build/Dockerfile @@ -13,7 +13,7 @@ ENV PATH=/root/.dotnet/tools:$DOTNET_ROOT:$PATH \ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/dotnetcore2.1.tgz | tar -zx -C / && \ yum install -y libunwind && \ - curl https://dot.net/v1/dotnet-install.sh | bash -s -- -v $DOTNET_SDK_VERSION -i $DOTNET_ROOT && \ + curl -L https://dot.net/v1/dotnet-install.sh | bash -s -- -v $DOTNET_SDK_VERSION -i $DOTNET_ROOT && \ mkdir /tmp/warmup && \ cd /tmp/warmup && \ dotnet new && \ @@ -21,8 +21,7 @@ RUN rm -rf /var/runtime /var/lang && \ rm -rf /tmp/warmup /tmp/NuGetScratch /tmp/.dotnet # Add these as a separate layer as they get updated frequently -RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python3 && \ - pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.31.0 aws-lambda-builders==0.5.0 --no-cache-dir && \ +RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.31.0 aws-lambda-builders==0.5.0 --no-cache-dir && \ dotnet tool install --global Amazon.Lambda.Tools --version 3.3.1 CMD ["dotnet", "build"] diff --git a/go1.x/build/Dockerfile b/go1.x/build/Dockerfile index ddb255ac..2053f5ba 100644 --- a/go1.x/build/Dockerfile +++ b/go1.x/build/Dockerfile @@ -16,7 +16,6 @@ RUN rm -rf /var/runtime /var/lang && \ go get golang.org/x/vgo # Add these as a separate layer as they get updated frequently -RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python3 && \ - pip install -U awscli boto3 aws-sam-cli==0.31.0 aws-lambda-builders==0.5.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.31.0 aws-lambda-builders==0.5.0 --no-cache-dir CMD ["dep", "ensure"] diff --git a/java8/build/Dockerfile b/java8/build/Dockerfile index 41e28661..75321d6f 100644 --- a/java8/build/Dockerfile +++ b/java8/build/Dockerfile @@ -15,5 +15,4 @@ RUN rm -rf /var/runtime /var/lang && \ ENV PATH="/usr/local/gradle/gradle-5.2/bin:/usr/local/maven/apache-maven-3.6.0/bin:${PATH}" # Add these as a separate layer as they get updated frequently -RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python3 && \ - pip install -U awscli boto3 aws-sam-cli==0.31.0 aws-lambda-builders==0.5.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.31.0 aws-lambda-builders==0.5.0 --no-cache-dir diff --git a/nodejs4.3/build/Dockerfile b/nodejs4.3/build/Dockerfile index 6c2b0462..89bf7df0 100644 --- a/nodejs4.3/build/Dockerfile +++ b/nodejs4.3/build/Dockerfile @@ -10,7 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs4.3.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python3 && \ - pip install -U awscli boto3 aws-sam-cli==0.31.0 aws-lambda-builders==0.5.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.31.0 aws-lambda-builders==0.5.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/nodejs6.10/build/Dockerfile b/nodejs6.10/build/Dockerfile index 168c866b..50bf1a3f 100644 --- a/nodejs6.10/build/Dockerfile +++ b/nodejs6.10/build/Dockerfile @@ -10,7 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs6.10.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python3 && \ - pip install -U awscli boto3 aws-sam-cli==0.31.0 aws-lambda-builders==0.5.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.31.0 aws-lambda-builders==0.5.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/nodejs8.10/build/Dockerfile b/nodejs8.10/build/Dockerfile index e1f6d6ad..ae84cdde 100644 --- a/nodejs8.10/build/Dockerfile +++ b/nodejs8.10/build/Dockerfile @@ -10,7 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs8.10.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python3 && \ - pip install -U awscli boto3 aws-sam-cli==0.31.0 aws-lambda-builders==0.5.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.31.0 aws-lambda-builders==0.5.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/provided/build/Dockerfile b/provided/build/Dockerfile index 1026540f..63827a5f 100644 --- a/provided/build/Dockerfile +++ b/provided/build/Dockerfile @@ -1,5 +1,4 @@ FROM lambci/lambda-base:build # Add these as a separate layer as they get updated frequently -RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python3 && \ - pip install -U awscli boto3 aws-sam-cli==0.31.0 aws-lambda-builders==0.5.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.31.0 aws-lambda-builders==0.5.0 --no-cache-dir diff --git a/python2.7/build/Dockerfile b/python2.7/build/Dockerfile index aa9c5f62..e7a96c0a 100644 --- a/python2.7/build/Dockerfile +++ b/python2.7/build/Dockerfile @@ -7,6 +7,5 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/python2.7.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ - pip install -U virtualenv pipenv --no-cache-dir && \ - pip install -U awscli boto3 aws-sam-cli==0.22.0 aws-lambda-builders==0.5.0 --no-cache-dir +RUN pip install -U virtualenv pipenv --no-cache-dir && \ + pip install -U awscli boto3 aws-sam-cli==0.31.0 aws-lambda-builders==0.5.0 --no-cache-dir diff --git a/python3.6/build/Dockerfile b/python3.6/build/Dockerfile index 20b3edbe..4ed93fbd 100644 --- a/python3.6/build/Dockerfile +++ b/python3.6/build/Dockerfile @@ -9,12 +9,12 @@ ENV PATH=/var/lang/bin:$PATH \ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/python3.6.tgz | tar -xz -C / && \ sed -i '/^prefix=/c\prefix=/var/lang' /var/lang/lib/pkgconfig/python-3.6.pc && \ - curl https://www.python.org/ftp/python/3.6.8/Python-3.6.8.tar.xz | tar -xJ && \ - cd Python-3.6.8 && \ + curl https://www.python.org/ftp/python/3.6.9/Python-3.6.9.tar.xz | tar -xJ && \ + cd Python-3.6.9 && \ LIBS="$LIBS -lutil -lrt" ./configure --prefix=/var/lang && \ make -j$(getconf _NPROCESSORS_ONLN) libinstall libainstall inclinstall && \ cd .. && \ - rm -rf Python-3.6.8 + rm -rf Python-3.6.9 # Add these as a separate layer as they get updated frequently RUN pip install -U pip setuptools --no-cache-dir && \ diff --git a/ruby2.5/build/Dockerfile b/ruby2.5/build/Dockerfile index d670c93f..4982ec75 100644 --- a/ruby2.5/build/Dockerfile +++ b/ruby2.5/build/Dockerfile @@ -13,5 +13,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN gem update --system --no-document && \ gem install --no-document bundler && \ - curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python3 && \ pip install -U awscli boto3 aws-sam-cli==0.31.0 aws-lambda-builders==0.5.0 --no-cache-dir From 144f3b3e36e697360ffe723f3f56bf2cf9f6b742 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Thu, 7 Nov 2019 08:08:44 -0500 Subject: [PATCH 062/271] Revert update to aws-sam-cli==0.22.0 for build-python2.7 Fixes #217 --- python2.7/build/Dockerfile | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/python2.7/build/Dockerfile b/python2.7/build/Dockerfile index e7a96c0a..aa9c5f62 100644 --- a/python2.7/build/Dockerfile +++ b/python2.7/build/Dockerfile @@ -7,5 +7,6 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/python2.7.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U virtualenv pipenv --no-cache-dir && \ - pip install -U awscli boto3 aws-sam-cli==0.31.0 aws-lambda-builders==0.5.0 --no-cache-dir +RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ + pip install -U virtualenv pipenv --no-cache-dir && \ + pip install -U awscli boto3 aws-sam-cli==0.22.0 aws-lambda-builders==0.5.0 --no-cache-dir From 51ab1a8a7e417bfbd77c06d20c6e5c7de232e815 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Thu, 7 Nov 2019 15:37:49 -0500 Subject: [PATCH 063/271] Update tar-find-layer to use yumda --- base/tar-find-layer/Dockerfile | 26 -------------------------- base/tar-find-layer/build.sh | 9 +++++++++ 2 files changed, 9 insertions(+), 26 deletions(-) delete mode 100644 base/tar-find-layer/Dockerfile create mode 100755 base/tar-find-layer/build.sh diff --git a/base/tar-find-layer/Dockerfile b/base/tar-find-layer/Dockerfile deleted file mode 100644 index 6191749b..00000000 --- a/base/tar-find-layer/Dockerfile +++ /dev/null @@ -1,26 +0,0 @@ -FROM lambci/lambda-base-2 - -# We don't have `find` on Lambda anymore, so use bash to simulate find ! -type d -RUN find() { local d; for d in "$@"; do ls -1A "$d" | while read f; do i="$d/$f"; [ -d "$i" ] && [ ! -L "$i" ] && find "$i" || echo $i; done; done; } && \ - cd /usr && \ - find bin lib64 | sort > /fs.txt - - -FROM lambci/lambda-base-2:build - -COPY --from=0 /fs.txt / - -RUN mkdir -p /tmp/etc && \ - cp /etc/yum.conf /tmp/etc/ && \ - cp -R /etc/yum /tmp/etc/ && \ - echo 2 > /tmp/etc/yum/vars/releasever && \ - yum install -y --installroot=/tmp findutils gzip tar && \ - cd /tmp/usr && \ - bash -c 'comm -13 /fs.txt <(find bin lib64 ! -type d | sort)' | tar -c -T - | tar -x -C /opt && \ - cd /opt && \ - rm -rf lib && \ - mv lib64 lib && \ - zip -yr /tmp/layer.zip bin lib - -# docker build -t tar-ps-layer . -# docker run --rm tar-ps-layer cat /tmp/layer.zip > layer.zip diff --git a/base/tar-find-layer/build.sh b/base/tar-find-layer/build.sh new file mode 100755 index 00000000..6541fbe6 --- /dev/null +++ b/base/tar-find-layer/build.sh @@ -0,0 +1,9 @@ +#!/bin/sh + +rm layer.zip + +docker run --rm -v "$PWD":/tmp/layer lambci/yumda:2 bash -c " + yum install -y findutils gzip tar && \ + cd /lambda/opt && \ + zip -yr /tmp/layer/layer.zip . +" From 290e82c69b74007957515a9a79c699fbc54d7547 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Fri, 8 Nov 2019 10:53:12 -0500 Subject: [PATCH 064/271] Update maven to 3.6.2 and gradle to 5.6.x on java8 build image --- java8/build/Dockerfile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/java8/build/Dockerfile b/java8/build/Dockerfile index 75321d6f..23bc5d9e 100644 --- a/java8/build/Dockerfile +++ b/java8/build/Dockerfile @@ -7,12 +7,12 @@ WORKDIR / RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/java8.tgz | tar -zx -C / && \ yum install -y java-1.8.0-openjdk-devel && \ - mkdir /usr/local/gradle && curl -L -o gradle.zip https://services.gradle.org/distributions/gradle-5.2-bin.zip && \ + mkdir /usr/local/gradle && curl -L -o gradle.zip https://services.gradle.org/distributions/gradle-5.6-bin.zip && \ unzip -d /usr/local/gradle gradle.zip && rm gradle.zip && mkdir /usr/local/maven && \ - curl -L http://mirror.metrocast.net/apache/maven/maven-3/3.6.0/binaries/apache-maven-3.6.0-bin.tar.gz | \ + curl -L http://mirror.metrocast.net/apache/maven/maven-3/3.6.2/binaries/apache-maven-3.6.2-bin.tar.gz | \ tar -zx -C /usr/local/maven -ENV PATH="/usr/local/gradle/gradle-5.2/bin:/usr/local/maven/apache-maven-3.6.0/bin:${PATH}" +ENV PATH="/usr/local/gradle/gradle-5.6/bin:/usr/local/maven/apache-maven-3.6.2/bin:${PATH}" # Add these as a separate layer as they get updated frequently RUN pip install -U awscli boto3 aws-sam-cli==0.31.0 aws-lambda-builders==0.5.0 --no-cache-dir From 51a1c3c68c631adc162bc95e9525ddf6cdd4be96 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Sat, 9 Nov 2019 11:14:25 -0500 Subject: [PATCH 065/271] Use LambdaBootstrap and create a mock ILambdaRuntime for dotnetcore2.1 --- .../run/MockBootstraps/MockLambdaContext.cs | 15 -- .../run/MockBootstraps/MockRuntime.cs | 217 ++++++++++++++++++ dotnetcore2.1/run/MockBootstraps/Program.cs | 67 +----- 3 files changed, 225 insertions(+), 74 deletions(-) create mode 100644 dotnetcore2.1/run/MockBootstraps/MockRuntime.cs diff --git a/dotnetcore2.1/run/MockBootstraps/MockLambdaContext.cs b/dotnetcore2.1/run/MockBootstraps/MockLambdaContext.cs index af405d9f..901df2a2 100644 --- a/dotnetcore2.1/run/MockBootstraps/MockLambdaContext.cs +++ b/dotnetcore2.1/run/MockBootstraps/MockLambdaContext.cs @@ -15,7 +15,6 @@ public MockLambdaContext(string handler, string eventBody) RequestId = Guid.NewGuid().ToString(); StartTime = DateTime.Now; InputStream = new MemoryStream(); - OutputStream = new MemoryStream(); var eventData = Encoding.UTF8.GetBytes(eventBody); InputStream.Write(eventData, 0, eventData.Length); @@ -44,20 +43,6 @@ public TimeSpan RemainingTime() public Stream InputStream { get; } - public Stream OutputStream { get; } - - public string OutputText - { - get - { - OutputStream.Position = 0; - using (TextReader reader = new StreamReader(OutputStream)) - { - return reader.ReadToEnd(); - } - } - } - public string RequestId { get; } public DateTime StartTime { get; } diff --git a/dotnetcore2.1/run/MockBootstraps/MockRuntime.cs b/dotnetcore2.1/run/MockBootstraps/MockRuntime.cs new file mode 100644 index 00000000..3c5aab76 --- /dev/null +++ b/dotnetcore2.1/run/MockBootstraps/MockRuntime.cs @@ -0,0 +1,217 @@ +using AWSLambda.Internal.Bootstrap.Context; +using AWSLambda.Internal.Bootstrap.Interop.Structures; +using MockLambdaRuntime; +using System; +using System.Collections; +using System.IO; +using System.Linq; +using System.Runtime.InteropServices; +using System.Text; + +namespace AWSLambda.Internal.Bootstrap +{ + internal class MockRuntime : ILambdaRuntime + { + private const string STACK_TRACE_INDENT = " "; + + private bool invoked; + + private Exception invokeError; + + private readonly byte[] outputBuffer = new byte[SBSharedMem.SizeOfEventBody]; + + private readonly IntPtr sharedMem = Marshal.AllocHGlobal(SBSharedMem.UnmanagedStructSize); + + private SBSharedMem curSBSharedMem; + + private readonly MockLambdaContext context; + + public IEnvironment Environment { get; } = new SystemEnvironment(); + + public IXRayProfiler XRayProfiler { get; } = new MockXRayProfiler(); + + public InitData InitData + { + get; + private set; + } + + public MockRuntime(string handler, string body) + { + context = new MockLambdaContext(handler, body); + InitData = new InitData + { + Handler = handler, + InvokeId = context.RequestId, + SuppressUserCodeInit = false, + ErrorCode = null + }; + invoked = false; + } + + public bool KeepInvokeLoopRunning() + { + return true; + } + + public void Init() + { + } + + public InvokeData ReceiveInvoke(IDictionary initialEnvironmentVariables, RuntimeReceiveInvokeBuffers buffers) + { + Console.Error.WriteLine($"START RequestId: {context.RequestId} Version: {context.FunctionVersion}"); + + invoked = true; + + curSBSharedMem = new SBSharedMem(sharedMem); + return new InvokeData(curSBSharedMem) + { + RequestId = context.RequestId, + AwsCredentials = new AwsCredentials + { + AccessKeyId = EnvHelper.GetOrDefault("AWS_ACCESS_KEY_ID", "SOME_ACCESS_KEY_ID"), + SecretAccessKey = EnvHelper.GetOrDefault("AWS_SECRET_ACCESS_KEY", "SOME_SECRET_ACCESS_KEY"), + SessionToken = System.Environment.GetEnvironmentVariable("AWS_SESSION_TOKEN") + }, + XAmznTraceId = EnvHelper.GetOrDefault("_X_AMZN_TRACE_ID", ""), + InputStream = context.InputStream, + OutputStream = new MemoryStream(outputBuffer), + LambdaContextInternal = new LambdaContextInternal( + context.RemainingTime, + SendCustomerLogMessage, + new Lazy(), + context.RequestId, + new Lazy(context.Arn), + new Lazy(string.Empty), + new Lazy(string.Empty), + initialEnvironmentVariables + ) + }; + } + + /// Try to log everything to stderr except the function result + public void SendCustomerLogMessage(string message) + { + Console.Error.WriteLine(message); + } + + public void ReportDone(string invokeId, string errorType, bool waitForExit) + { + if (!invoked) return; + + Console.Error.WriteLine($"END RequestId: {context.RequestId}"); + + Console.Error.WriteLine($"REPORT RequestId {context.RequestId}\t" + + $"Duration: {context.Duration} ms\t" + + $"Billed Duration: {context.BilledDuration} ms\t" + + $"Memory Size {context.MemorySize} MB\t" + + $"Max Memory Used: {context.MemoryUsed / (1024 * 1024)} MB"); + + if (invokeError != null) + { + Console.Error.WriteLine(invokeError); + System.Environment.Exit(1); + return; + } + + var output = Encoding.UTF8.GetString(outputBuffer, 0, curSBSharedMem.ResponseBodyLen); + + Console.WriteLine(output); + + System.Environment.Exit(string.IsNullOrEmpty(errorType) ? 0 : 1); + } + + public void ReportError(string invokeId, ExceptionResponse exceptionResponse) + { + invokeError = exceptionResponse.OriginalException; + + // XXX: For the future perhaps: + /* + StringBuilder stringBuilder = new StringBuilder(); + if (!string.IsNullOrEmpty(exceptionResponse.StackTrace)) + { + stringBuilder.AppendLine(exceptionResponse.StackTrace); + } + if (exceptionResponse.InnerException != null) + { + AppendStackTraceToStringBuilder(stringBuilder, exceptionResponse.InnerException); + } + */ + } + + private static void AppendStackTraceToStringBuilder(StringBuilder builder, ExceptionResponse ex) + { + if (!string.IsNullOrWhiteSpace(ex.StackTrace)) + { + string[] array = (from s in ex.StackTrace.Split(new string[] + { + System.Environment.NewLine + }, StringSplitOptions.None) + select s.Trim() into s + where !string.IsNullOrWhiteSpace(s) + select STACK_TRACE_INDENT + s).ToArray(); + foreach (string value in array) + { + builder.AppendLine(value); + } + } + if (ex.InnerException != null) + { + string errorMessage = ex.InnerException.ErrorMessage; + string errorType = ex.InnerException.ErrorType; + if (errorMessage != null) + { + builder.Append(errorMessage.Trim()); + builder.Append(": "); + } + builder.AppendLine(errorType); + AppendStackTraceToStringBuilder(builder, ex.InnerException); + } + } + + internal static Lazy GetCognitoClientContextInternalLazy(string text) + { + return new Lazy(delegate + { + CognitoClientContextInternal result = null; + if (!string.IsNullOrEmpty(text)) + { + try + { + return CognitoClientContextInternal.FromJson(text); + } + catch (Exception innerException) + { + throw LambdaExceptions.ValidationException(innerException, "Unable to parse client context JSON string '{0}'.", text); + } + } + return result; + }); + } + } + + internal class MockXRayProfiler : IXRayProfiler + { + public void ReportUserInitStart() + { + } + + public void ReportUserInitEnd() + { + } + + public void ReportUserInvokeStart() + { + } + + public void ReportUserInvokeEnd() + { + } + + public void ReportError(ExceptionResponse exceptionResponse) + { + } + } + +} diff --git a/dotnetcore2.1/run/MockBootstraps/Program.cs b/dotnetcore2.1/run/MockBootstraps/Program.cs index e44ca8fe..69a15a43 100644 --- a/dotnetcore2.1/run/MockBootstraps/Program.cs +++ b/dotnetcore2.1/run/MockBootstraps/Program.cs @@ -1,12 +1,12 @@ using System; using System.Collections.Generic; using System.IO; +using System.Linq; using System.Reflection; using System.Runtime.Loader; using AWSLambda.Internal.Bootstrap; -using AWSLambda.Internal.Bootstrap.Context; -using System.Linq; - +using AWSLambda.Internal.Bootstrap.ErrorHandling; + namespace MockLambdaRuntime { class Program @@ -51,40 +51,11 @@ static void Main(string[] args) } } - var lambdaContext = new MockLambdaContext(handler, body); - - var userCodeLoader = new UserCodeLoader(handler, InternalLogger.NO_OP_LOGGER); - userCodeLoader.Init(Console.Error.WriteLine); - - var lambdaContextInternal = new LambdaContextInternal(lambdaContext.RemainingTime, - LogAction, new Lazy(), - lambdaContext.RequestId, - new Lazy(lambdaContext.Arn), - new Lazy(string.Empty), - new Lazy(string.Empty), - Environment.GetEnvironmentVariables()); - - Exception lambdaException = null; - - LogRequestStart(lambdaContext); - try - { - userCodeLoader.Invoke(lambdaContext.InputStream, lambdaContext.OutputStream, lambdaContextInternal); - } - catch (Exception ex) - { - lambdaException = ex; - } - LogRequestEnd(lambdaContext); - - if (lambdaException == null) - { - Console.WriteLine(lambdaContext.OutputText); - } - else - { - Console.Error.WriteLine(lambdaException); - } + var lambdaRuntime = new MockRuntime(handler, body); + LambdaBootstrap lambdaBootstrap = new LambdaBootstrap(lambdaRuntime, InternalLogger.NO_OP_LOGGER); + UnhandledExceptionLogger.Register(); + lambdaBootstrap.Initialize(); + lambdaBootstrap.Invoke(); } // Catch all unhandled exceptions from runtime, to prevent user from hanging on them while debugging @@ -111,12 +82,6 @@ private static Assembly OnAssemblyResolving(AssemblyLoadContext context, Assembl throw new FileNotFoundException($"{assemblyName.Name}.dll"); } - /// Try to log everything to stderr except the function result - private static void LogAction(string text) - { - Console.Error.WriteLine(text); - } - /// /// Extracts "waitForDebugger" flag from args. Returns other unprocessed arguments. /// @@ -144,22 +109,6 @@ private static bool GetShouldWaitForDebuggerFlag(string[] args, out string[] unp return flagValue; } - static void LogRequestStart(MockLambdaContext context) - { - Console.Error.WriteLine($"START RequestId: {context.RequestId} Version: {context.FunctionVersion}"); - } - - static void LogRequestEnd(MockLambdaContext context) - { - Console.Error.WriteLine($"END RequestId: {context.RequestId}"); - - Console.Error.WriteLine($"REPORT RequestId {context.RequestId}\t" + - $"Duration: {context.Duration} ms\t" + - $"Billed Duration: {context.BilledDuration} ms\t" + - $"Memory Size {context.MemorySize} MB\t" + - $"Max Memory Used: {context.MemoryUsed / (1024 * 1024)} MB"); - } - /// Gets the function handler from arguments or environment static string GetFunctionHandler(string[] args) { From 119ef628249f93e2e11b480adbcbb0234937dfe9 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Sat, 9 Nov 2019 11:32:02 -0500 Subject: [PATCH 066/271] Use LambdaBootstrap and create a mock ILambdaRuntime for dotnetcore2.0 --- .../run/MockBootstraps/MockLambdaContext.cs | 15 -- .../run/MockBootstraps/MockRuntime.cs | 217 ++++++++++++++++++ dotnetcore2.0/run/MockBootstraps/Program.cs | 67 +----- .../run/MockBootstraps/lib/Bootstrap.pdb | Bin 0 -> 44556 bytes dotnetcore2.0/run/update_libs.sh | 4 +- 5 files changed, 227 insertions(+), 76 deletions(-) create mode 100644 dotnetcore2.0/run/MockBootstraps/MockRuntime.cs create mode 100644 dotnetcore2.0/run/MockBootstraps/lib/Bootstrap.pdb diff --git a/dotnetcore2.0/run/MockBootstraps/MockLambdaContext.cs b/dotnetcore2.0/run/MockBootstraps/MockLambdaContext.cs index af405d9f..901df2a2 100644 --- a/dotnetcore2.0/run/MockBootstraps/MockLambdaContext.cs +++ b/dotnetcore2.0/run/MockBootstraps/MockLambdaContext.cs @@ -15,7 +15,6 @@ public MockLambdaContext(string handler, string eventBody) RequestId = Guid.NewGuid().ToString(); StartTime = DateTime.Now; InputStream = new MemoryStream(); - OutputStream = new MemoryStream(); var eventData = Encoding.UTF8.GetBytes(eventBody); InputStream.Write(eventData, 0, eventData.Length); @@ -44,20 +43,6 @@ public TimeSpan RemainingTime() public Stream InputStream { get; } - public Stream OutputStream { get; } - - public string OutputText - { - get - { - OutputStream.Position = 0; - using (TextReader reader = new StreamReader(OutputStream)) - { - return reader.ReadToEnd(); - } - } - } - public string RequestId { get; } public DateTime StartTime { get; } diff --git a/dotnetcore2.0/run/MockBootstraps/MockRuntime.cs b/dotnetcore2.0/run/MockBootstraps/MockRuntime.cs new file mode 100644 index 00000000..3c5aab76 --- /dev/null +++ b/dotnetcore2.0/run/MockBootstraps/MockRuntime.cs @@ -0,0 +1,217 @@ +using AWSLambda.Internal.Bootstrap.Context; +using AWSLambda.Internal.Bootstrap.Interop.Structures; +using MockLambdaRuntime; +using System; +using System.Collections; +using System.IO; +using System.Linq; +using System.Runtime.InteropServices; +using System.Text; + +namespace AWSLambda.Internal.Bootstrap +{ + internal class MockRuntime : ILambdaRuntime + { + private const string STACK_TRACE_INDENT = " "; + + private bool invoked; + + private Exception invokeError; + + private readonly byte[] outputBuffer = new byte[SBSharedMem.SizeOfEventBody]; + + private readonly IntPtr sharedMem = Marshal.AllocHGlobal(SBSharedMem.UnmanagedStructSize); + + private SBSharedMem curSBSharedMem; + + private readonly MockLambdaContext context; + + public IEnvironment Environment { get; } = new SystemEnvironment(); + + public IXRayProfiler XRayProfiler { get; } = new MockXRayProfiler(); + + public InitData InitData + { + get; + private set; + } + + public MockRuntime(string handler, string body) + { + context = new MockLambdaContext(handler, body); + InitData = new InitData + { + Handler = handler, + InvokeId = context.RequestId, + SuppressUserCodeInit = false, + ErrorCode = null + }; + invoked = false; + } + + public bool KeepInvokeLoopRunning() + { + return true; + } + + public void Init() + { + } + + public InvokeData ReceiveInvoke(IDictionary initialEnvironmentVariables, RuntimeReceiveInvokeBuffers buffers) + { + Console.Error.WriteLine($"START RequestId: {context.RequestId} Version: {context.FunctionVersion}"); + + invoked = true; + + curSBSharedMem = new SBSharedMem(sharedMem); + return new InvokeData(curSBSharedMem) + { + RequestId = context.RequestId, + AwsCredentials = new AwsCredentials + { + AccessKeyId = EnvHelper.GetOrDefault("AWS_ACCESS_KEY_ID", "SOME_ACCESS_KEY_ID"), + SecretAccessKey = EnvHelper.GetOrDefault("AWS_SECRET_ACCESS_KEY", "SOME_SECRET_ACCESS_KEY"), + SessionToken = System.Environment.GetEnvironmentVariable("AWS_SESSION_TOKEN") + }, + XAmznTraceId = EnvHelper.GetOrDefault("_X_AMZN_TRACE_ID", ""), + InputStream = context.InputStream, + OutputStream = new MemoryStream(outputBuffer), + LambdaContextInternal = new LambdaContextInternal( + context.RemainingTime, + SendCustomerLogMessage, + new Lazy(), + context.RequestId, + new Lazy(context.Arn), + new Lazy(string.Empty), + new Lazy(string.Empty), + initialEnvironmentVariables + ) + }; + } + + /// Try to log everything to stderr except the function result + public void SendCustomerLogMessage(string message) + { + Console.Error.WriteLine(message); + } + + public void ReportDone(string invokeId, string errorType, bool waitForExit) + { + if (!invoked) return; + + Console.Error.WriteLine($"END RequestId: {context.RequestId}"); + + Console.Error.WriteLine($"REPORT RequestId {context.RequestId}\t" + + $"Duration: {context.Duration} ms\t" + + $"Billed Duration: {context.BilledDuration} ms\t" + + $"Memory Size {context.MemorySize} MB\t" + + $"Max Memory Used: {context.MemoryUsed / (1024 * 1024)} MB"); + + if (invokeError != null) + { + Console.Error.WriteLine(invokeError); + System.Environment.Exit(1); + return; + } + + var output = Encoding.UTF8.GetString(outputBuffer, 0, curSBSharedMem.ResponseBodyLen); + + Console.WriteLine(output); + + System.Environment.Exit(string.IsNullOrEmpty(errorType) ? 0 : 1); + } + + public void ReportError(string invokeId, ExceptionResponse exceptionResponse) + { + invokeError = exceptionResponse.OriginalException; + + // XXX: For the future perhaps: + /* + StringBuilder stringBuilder = new StringBuilder(); + if (!string.IsNullOrEmpty(exceptionResponse.StackTrace)) + { + stringBuilder.AppendLine(exceptionResponse.StackTrace); + } + if (exceptionResponse.InnerException != null) + { + AppendStackTraceToStringBuilder(stringBuilder, exceptionResponse.InnerException); + } + */ + } + + private static void AppendStackTraceToStringBuilder(StringBuilder builder, ExceptionResponse ex) + { + if (!string.IsNullOrWhiteSpace(ex.StackTrace)) + { + string[] array = (from s in ex.StackTrace.Split(new string[] + { + System.Environment.NewLine + }, StringSplitOptions.None) + select s.Trim() into s + where !string.IsNullOrWhiteSpace(s) + select STACK_TRACE_INDENT + s).ToArray(); + foreach (string value in array) + { + builder.AppendLine(value); + } + } + if (ex.InnerException != null) + { + string errorMessage = ex.InnerException.ErrorMessage; + string errorType = ex.InnerException.ErrorType; + if (errorMessage != null) + { + builder.Append(errorMessage.Trim()); + builder.Append(": "); + } + builder.AppendLine(errorType); + AppendStackTraceToStringBuilder(builder, ex.InnerException); + } + } + + internal static Lazy GetCognitoClientContextInternalLazy(string text) + { + return new Lazy(delegate + { + CognitoClientContextInternal result = null; + if (!string.IsNullOrEmpty(text)) + { + try + { + return CognitoClientContextInternal.FromJson(text); + } + catch (Exception innerException) + { + throw LambdaExceptions.ValidationException(innerException, "Unable to parse client context JSON string '{0}'.", text); + } + } + return result; + }); + } + } + + internal class MockXRayProfiler : IXRayProfiler + { + public void ReportUserInitStart() + { + } + + public void ReportUserInitEnd() + { + } + + public void ReportUserInvokeStart() + { + } + + public void ReportUserInvokeEnd() + { + } + + public void ReportError(ExceptionResponse exceptionResponse) + { + } + } + +} diff --git a/dotnetcore2.0/run/MockBootstraps/Program.cs b/dotnetcore2.0/run/MockBootstraps/Program.cs index e44ca8fe..69a15a43 100644 --- a/dotnetcore2.0/run/MockBootstraps/Program.cs +++ b/dotnetcore2.0/run/MockBootstraps/Program.cs @@ -1,12 +1,12 @@ using System; using System.Collections.Generic; using System.IO; +using System.Linq; using System.Reflection; using System.Runtime.Loader; using AWSLambda.Internal.Bootstrap; -using AWSLambda.Internal.Bootstrap.Context; -using System.Linq; - +using AWSLambda.Internal.Bootstrap.ErrorHandling; + namespace MockLambdaRuntime { class Program @@ -51,40 +51,11 @@ static void Main(string[] args) } } - var lambdaContext = new MockLambdaContext(handler, body); - - var userCodeLoader = new UserCodeLoader(handler, InternalLogger.NO_OP_LOGGER); - userCodeLoader.Init(Console.Error.WriteLine); - - var lambdaContextInternal = new LambdaContextInternal(lambdaContext.RemainingTime, - LogAction, new Lazy(), - lambdaContext.RequestId, - new Lazy(lambdaContext.Arn), - new Lazy(string.Empty), - new Lazy(string.Empty), - Environment.GetEnvironmentVariables()); - - Exception lambdaException = null; - - LogRequestStart(lambdaContext); - try - { - userCodeLoader.Invoke(lambdaContext.InputStream, lambdaContext.OutputStream, lambdaContextInternal); - } - catch (Exception ex) - { - lambdaException = ex; - } - LogRequestEnd(lambdaContext); - - if (lambdaException == null) - { - Console.WriteLine(lambdaContext.OutputText); - } - else - { - Console.Error.WriteLine(lambdaException); - } + var lambdaRuntime = new MockRuntime(handler, body); + LambdaBootstrap lambdaBootstrap = new LambdaBootstrap(lambdaRuntime, InternalLogger.NO_OP_LOGGER); + UnhandledExceptionLogger.Register(); + lambdaBootstrap.Initialize(); + lambdaBootstrap.Invoke(); } // Catch all unhandled exceptions from runtime, to prevent user from hanging on them while debugging @@ -111,12 +82,6 @@ private static Assembly OnAssemblyResolving(AssemblyLoadContext context, Assembl throw new FileNotFoundException($"{assemblyName.Name}.dll"); } - /// Try to log everything to stderr except the function result - private static void LogAction(string text) - { - Console.Error.WriteLine(text); - } - /// /// Extracts "waitForDebugger" flag from args. Returns other unprocessed arguments. /// @@ -144,22 +109,6 @@ private static bool GetShouldWaitForDebuggerFlag(string[] args, out string[] unp return flagValue; } - static void LogRequestStart(MockLambdaContext context) - { - Console.Error.WriteLine($"START RequestId: {context.RequestId} Version: {context.FunctionVersion}"); - } - - static void LogRequestEnd(MockLambdaContext context) - { - Console.Error.WriteLine($"END RequestId: {context.RequestId}"); - - Console.Error.WriteLine($"REPORT RequestId {context.RequestId}\t" + - $"Duration: {context.Duration} ms\t" + - $"Billed Duration: {context.BilledDuration} ms\t" + - $"Memory Size {context.MemorySize} MB\t" + - $"Max Memory Used: {context.MemoryUsed / (1024 * 1024)} MB"); - } - /// Gets the function handler from arguments or environment static string GetFunctionHandler(string[] args) { diff --git a/dotnetcore2.0/run/MockBootstraps/lib/Bootstrap.pdb b/dotnetcore2.0/run/MockBootstraps/lib/Bootstrap.pdb new file mode 100644 index 0000000000000000000000000000000000000000..a00a5deea9f9ac70bc344c0502df9de5b60d9a38 GIT binary patch literal 44556 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

A&IXe(0=Qq>O?SJ9_CViTaZRukv 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 Date: Sat, 9 Nov 2019 17:44:18 -0500 Subject: [PATCH 067/271] Still ReportDone if there's an error in dotnetcore2.0/2.1 --- dotnetcore2.0/run/MockBootstraps/MockRuntime.cs | 2 +- dotnetcore2.1/run/MockBootstraps/MockRuntime.cs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/dotnetcore2.0/run/MockBootstraps/MockRuntime.cs b/dotnetcore2.0/run/MockBootstraps/MockRuntime.cs index 3c5aab76..824a6a23 100644 --- a/dotnetcore2.0/run/MockBootstraps/MockRuntime.cs +++ b/dotnetcore2.0/run/MockBootstraps/MockRuntime.cs @@ -98,7 +98,7 @@ public void SendCustomerLogMessage(string message) public void ReportDone(string invokeId, string errorType, bool waitForExit) { - if (!invoked) return; + if (!invoked && invokeError == null) return; Console.Error.WriteLine($"END RequestId: {context.RequestId}"); diff --git a/dotnetcore2.1/run/MockBootstraps/MockRuntime.cs b/dotnetcore2.1/run/MockBootstraps/MockRuntime.cs index 3c5aab76..824a6a23 100644 --- a/dotnetcore2.1/run/MockBootstraps/MockRuntime.cs +++ b/dotnetcore2.1/run/MockBootstraps/MockRuntime.cs @@ -98,7 +98,7 @@ public void SendCustomerLogMessage(string message) public void ReportDone(string invokeId, string errorType, bool waitForExit) { - if (!invoked) return; + if (!invoked && invokeError == null) return; Console.Error.WriteLine($"END RequestId: {context.RequestId}"); From c833c00477c1b1a59881fbe32f87287981a21062 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Sat, 9 Nov 2019 21:02:38 -0500 Subject: [PATCH 068/271] Ensure we truncate length of output streams in dotnetcore runtimes --- dotnetcore2.0/run/MockBootstraps/MockRuntime.cs | 7 +++++-- dotnetcore2.1/run/MockBootstraps/MockRuntime.cs | 5 ++++- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/dotnetcore2.0/run/MockBootstraps/MockRuntime.cs b/dotnetcore2.0/run/MockBootstraps/MockRuntime.cs index 824a6a23..5c9a59ca 100644 --- a/dotnetcore2.0/run/MockBootstraps/MockRuntime.cs +++ b/dotnetcore2.0/run/MockBootstraps/MockRuntime.cs @@ -64,7 +64,10 @@ public InvokeData ReceiveInvoke(IDictionary initialEnvironmentVariables, Runtime invoked = true; - curSBSharedMem = new SBSharedMem(sharedMem); + var outputStream = new MemoryStream(outputBuffer); + outputStream.SetLength(0); + + curSBSharedMem = new SBSharedMem(sharedMem); return new InvokeData(curSBSharedMem) { RequestId = context.RequestId, @@ -76,7 +79,7 @@ public InvokeData ReceiveInvoke(IDictionary initialEnvironmentVariables, Runtime }, XAmznTraceId = EnvHelper.GetOrDefault("_X_AMZN_TRACE_ID", ""), InputStream = context.InputStream, - OutputStream = new MemoryStream(outputBuffer), + OutputStream = outputStream, LambdaContextInternal = new LambdaContextInternal( context.RemainingTime, SendCustomerLogMessage, diff --git a/dotnetcore2.1/run/MockBootstraps/MockRuntime.cs b/dotnetcore2.1/run/MockBootstraps/MockRuntime.cs index 824a6a23..71f07c5e 100644 --- a/dotnetcore2.1/run/MockBootstraps/MockRuntime.cs +++ b/dotnetcore2.1/run/MockBootstraps/MockRuntime.cs @@ -64,6 +64,9 @@ public InvokeData ReceiveInvoke(IDictionary initialEnvironmentVariables, Runtime invoked = true; + var outputStream = new MemoryStream(outputBuffer); + outputStream.SetLength(0); + curSBSharedMem = new SBSharedMem(sharedMem); return new InvokeData(curSBSharedMem) { @@ -76,7 +79,7 @@ public InvokeData ReceiveInvoke(IDictionary initialEnvironmentVariables, Runtime }, XAmznTraceId = EnvHelper.GetOrDefault("_X_AMZN_TRACE_ID", ""), InputStream = context.InputStream, - OutputStream = new MemoryStream(outputBuffer), + OutputStream = outputStream, LambdaContextInternal = new LambdaContextInternal( context.RemainingTime, SendCustomerLogMessage, From 4a4d81cbe84288c67aa4279d93b47d8f8d6a7e0b Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Sat, 9 Nov 2019 21:11:26 -0500 Subject: [PATCH 069/271] Fix formatting in dotnetcore2.0 code --- dotnetcore2.0/run/MockBootstraps/MockRuntime.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dotnetcore2.0/run/MockBootstraps/MockRuntime.cs b/dotnetcore2.0/run/MockBootstraps/MockRuntime.cs index 5c9a59ca..71f07c5e 100644 --- a/dotnetcore2.0/run/MockBootstraps/MockRuntime.cs +++ b/dotnetcore2.0/run/MockBootstraps/MockRuntime.cs @@ -67,7 +67,7 @@ public InvokeData ReceiveInvoke(IDictionary initialEnvironmentVariables, Runtime var outputStream = new MemoryStream(outputBuffer); outputStream.SetLength(0); - curSBSharedMem = new SBSharedMem(sharedMem); + curSBSharedMem = new SBSharedMem(sharedMem); return new InvokeData(curSBSharedMem) { RequestId = context.RequestId, From bacbe5c4659d9da070f2a717066010e09164b74b Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Sat, 9 Nov 2019 21:56:45 -0500 Subject: [PATCH 070/271] Ensure dotnetcore runtimes have the right user --- dotnetcore2.0/run/Dockerfile | 2 ++ dotnetcore2.1/run/Dockerfile | 2 ++ 2 files changed, 4 insertions(+) diff --git a/dotnetcore2.0/run/Dockerfile b/dotnetcore2.0/run/Dockerfile index 6f4b5d25..fe348e1f 100644 --- a/dotnetcore2.0/run/Dockerfile +++ b/dotnetcore2.0/run/Dockerfile @@ -21,4 +21,6 @@ RUN rm -rf /var/runtime /var/lang && \ COPY --from=0 /app/MockBootstraps.* /var/runtime/ +USER sbx_user1051 + ENTRYPOINT ["/var/lang/bin/dotnet", "/var/runtime/MockBootstraps.dll"] diff --git a/dotnetcore2.1/run/Dockerfile b/dotnetcore2.1/run/Dockerfile index 2d442d23..74004101 100644 --- a/dotnetcore2.1/run/Dockerfile +++ b/dotnetcore2.1/run/Dockerfile @@ -21,4 +21,6 @@ RUN rm -rf /var/runtime /var/lang && \ COPY --from=0 /app/MockBootstraps.* /var/runtime/ +USER sbx_user1051 + ENTRYPOINT ["/var/lang/bin/dotnet", "/var/runtime/MockBootstraps.dll"] From e0559227c003c394196bb916d602b377a8d2eb1d Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Tue, 12 Nov 2019 18:02:55 -0500 Subject: [PATCH 071/271] Update java project settings --- base/dump-java8/.classpath | 41 ++++++++++------- .../org.eclipse.core.resources.prefs | 2 + .../.settings/org.eclipse.jdt.core.prefs | 3 ++ examples/java/.classpath | 44 +++++++++++------- examples/java/.project | 46 +++++++++++-------- .../org.eclipse.buildship.core.prefs | 13 ++++++ .../org.eclipse.core.resources.prefs | 2 + .../java/.settings/org.eclipse.jdt.core.prefs | 3 ++ examples/java/README.md | 5 +- examples/java/build.gradle | 6 +-- 10 files changed, 104 insertions(+), 61 deletions(-) create mode 100644 base/dump-java8/.settings/org.eclipse.core.resources.prefs create mode 100644 examples/java/.settings/org.eclipse.buildship.core.prefs create mode 100644 examples/java/.settings/org.eclipse.core.resources.prefs diff --git a/base/dump-java8/.classpath b/base/dump-java8/.classpath index 67bbbc76..95f634dc 100644 --- a/base/dump-java8/.classpath +++ b/base/dump-java8/.classpath @@ -1,20 +1,27 @@ - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/base/dump-java8/.settings/org.eclipse.core.resources.prefs b/base/dump-java8/.settings/org.eclipse.core.resources.prefs new file mode 100644 index 00000000..2b763404 --- /dev/null +++ b/base/dump-java8/.settings/org.eclipse.core.resources.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +encoding//src/main/java=UTF-8 diff --git a/base/dump-java8/.settings/org.eclipse.jdt.core.prefs b/base/dump-java8/.settings/org.eclipse.jdt.core.prefs index 714351ae..2f5cc74c 100644 --- a/base/dump-java8/.settings/org.eclipse.jdt.core.prefs +++ b/base/dump-java8/.settings/org.eclipse.jdt.core.prefs @@ -1,5 +1,8 @@ eclipse.preferences.version=1 org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 org.eclipse.jdt.core.compiler.compliance=1.8 +org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning +org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=ignore +org.eclipse.jdt.core.compiler.release=disabled org.eclipse.jdt.core.compiler.source=1.8 diff --git a/examples/java/.classpath b/examples/java/.classpath index 67bbbc76..194b56bf 100644 --- a/examples/java/.classpath +++ b/examples/java/.classpath @@ -1,20 +1,30 @@ - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/examples/java/.project b/examples/java/.project index c305363a..d932d68d 100644 --- a/examples/java/.project +++ b/examples/java/.project @@ -1,23 +1,29 @@ - example-handler - - - - - - org.eclipse.jdt.core.javabuilder - - - - - org.eclipse.m2e.core.maven2Builder - - - - - - org.eclipse.jdt.core.javanature - org.eclipse.m2e.core.maven2Nature - + example-handler + + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.buildship.core.gradleprojectbuilder + + + + + org.eclipse.m2e.core.maven2Builder + + + + + + org.eclipse.jdt.core.javanature + org.eclipse.m2e.core.maven2Nature + org.eclipse.buildship.core.gradleprojectnature + diff --git a/examples/java/.settings/org.eclipse.buildship.core.prefs b/examples/java/.settings/org.eclipse.buildship.core.prefs new file mode 100644 index 00000000..72b2d90d --- /dev/null +++ b/examples/java/.settings/org.eclipse.buildship.core.prefs @@ -0,0 +1,13 @@ +arguments= +auto.sync=false +build.scans.enabled=false +connection.gradle.distribution=GRADLE_DISTRIBUTION(VERSION(6.0)) +connection.project.dir= +eclipse.preferences.version=1 +gradle.user.home= +java.home= +jvm.arguments= +offline.mode=false +override.workspace.settings=true +show.console.view=true +show.executions.view=true diff --git a/examples/java/.settings/org.eclipse.core.resources.prefs b/examples/java/.settings/org.eclipse.core.resources.prefs new file mode 100644 index 00000000..2b763404 --- /dev/null +++ b/examples/java/.settings/org.eclipse.core.resources.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +encoding//src/main/java=UTF-8 diff --git a/examples/java/.settings/org.eclipse.jdt.core.prefs b/examples/java/.settings/org.eclipse.jdt.core.prefs index 714351ae..2f5cc74c 100644 --- a/examples/java/.settings/org.eclipse.jdt.core.prefs +++ b/examples/java/.settings/org.eclipse.jdt.core.prefs @@ -1,5 +1,8 @@ eclipse.preferences.version=1 org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 org.eclipse.jdt.core.compiler.compliance=1.8 +org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning +org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=ignore +org.eclipse.jdt.core.compiler.release=disabled org.eclipse.jdt.core.compiler.source=1.8 diff --git a/examples/java/README.md b/examples/java/README.md index 72bba02f..d5811ddb 100644 --- a/examples/java/README.md +++ b/examples/java/README.md @@ -1,13 +1,10 @@ # Java 8 docker-lambda example -This example requires [Gradle](https://gradle.org/) to be installed to build -and layout the classes and jars correctly. - Run with: ```sh # Will place the compiled code in `./build/docker` -docker run --rm -v "$PWD":/app -w /app gradle gradle build +docker run --rm -v "$PWD":/app -w /app gradle:6.0 gradle build # Then you can run using that directory as the task directory docker run --rm -v "$PWD/build/docker":/var/task lambci/lambda:java8 org.lambci.lambda.ExampleHandler '{"some": "event"}' diff --git a/examples/java/build.gradle b/examples/java/build.gradle index b0652974..6d496c49 100644 --- a/examples/java/build.gradle +++ b/examples/java/build.gradle @@ -8,7 +8,7 @@ repositories { } dependencies { - compile ( + implementation ( 'com.amazonaws:aws-lambda-java-core:1.2.0', 'com.amazonaws:aws-lambda-java-events:2.2.7' ) @@ -18,7 +18,7 @@ task buildZip(type: Zip) { from compileJava from processResources into('lib') { - from configurations.runtime + from configurations.runtimeClasspath } } @@ -26,7 +26,7 @@ task buildDocker(type: Copy) { from compileJava from processResources into('lib') { - from configurations.runtime + from configurations.runtimeClasspath } into 'build/docker' } From 82e218fadf459b70e13ad17a52f2a275b853f2cc Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Tue, 12 Nov 2019 18:10:32 -0500 Subject: [PATCH 072/271] Use UnmanagedMemoryStream instead of MemoryStream for dotnetcore runtimes --- .../run/MockBootstraps/MockBootstraps.csproj | 1 + dotnetcore2.0/run/MockBootstraps/MockRuntime.cs | 13 ++++--------- .../run/MockBootstraps/MockBootstraps.csproj | 1 + dotnetcore2.1/run/MockBootstraps/MockRuntime.cs | 13 ++++--------- 4 files changed, 10 insertions(+), 18 deletions(-) diff --git a/dotnetcore2.0/run/MockBootstraps/MockBootstraps.csproj b/dotnetcore2.0/run/MockBootstraps/MockBootstraps.csproj index c7a2cca7..f3db9e50 100644 --- a/dotnetcore2.0/run/MockBootstraps/MockBootstraps.csproj +++ b/dotnetcore2.0/run/MockBootstraps/MockBootstraps.csproj @@ -4,6 +4,7 @@ Exe netcoreapp2.0 MockLambdaRuntime + true diff --git a/dotnetcore2.0/run/MockBootstraps/MockRuntime.cs b/dotnetcore2.0/run/MockBootstraps/MockRuntime.cs index 71f07c5e..8a28b249 100644 --- a/dotnetcore2.0/run/MockBootstraps/MockRuntime.cs +++ b/dotnetcore2.0/run/MockBootstraps/MockRuntime.cs @@ -18,8 +18,6 @@ internal class MockRuntime : ILambdaRuntime private Exception invokeError; - private readonly byte[] outputBuffer = new byte[SBSharedMem.SizeOfEventBody]; - private readonly IntPtr sharedMem = Marshal.AllocHGlobal(SBSharedMem.UnmanagedStructSize); private SBSharedMem curSBSharedMem; @@ -58,15 +56,12 @@ public void Init() { } - public InvokeData ReceiveInvoke(IDictionary initialEnvironmentVariables, RuntimeReceiveInvokeBuffers buffers) + unsafe public InvokeData ReceiveInvoke(IDictionary initialEnvironmentVariables, RuntimeReceiveInvokeBuffers buffers) { Console.Error.WriteLine($"START RequestId: {context.RequestId} Version: {context.FunctionVersion}"); invoked = true; - var outputStream = new MemoryStream(outputBuffer); - outputStream.SetLength(0); - curSBSharedMem = new SBSharedMem(sharedMem); return new InvokeData(curSBSharedMem) { @@ -79,7 +74,7 @@ public InvokeData ReceiveInvoke(IDictionary initialEnvironmentVariables, Runtime }, XAmznTraceId = EnvHelper.GetOrDefault("_X_AMZN_TRACE_ID", ""), InputStream = context.InputStream, - OutputStream = outputStream, + OutputStream = new UnmanagedMemoryStream(curSBSharedMem.EventBody, 0, SBSharedMem.SizeOfEventBody, FileAccess.Write), LambdaContextInternal = new LambdaContextInternal( context.RemainingTime, SendCustomerLogMessage, @@ -99,7 +94,7 @@ public void SendCustomerLogMessage(string message) Console.Error.WriteLine(message); } - public void ReportDone(string invokeId, string errorType, bool waitForExit) + public unsafe void ReportDone(string invokeId, string errorType, bool waitForExit) { if (!invoked && invokeError == null) return; @@ -118,7 +113,7 @@ public void ReportDone(string invokeId, string errorType, bool waitForExit) return; } - var output = Encoding.UTF8.GetString(outputBuffer, 0, curSBSharedMem.ResponseBodyLen); + var output = Interop.InteropUtils.ReadUTF8String(curSBSharedMem.EventBody, curSBSharedMem.ResponseBodyLen); Console.WriteLine(output); diff --git a/dotnetcore2.1/run/MockBootstraps/MockBootstraps.csproj b/dotnetcore2.1/run/MockBootstraps/MockBootstraps.csproj index e09cc558..ea15e720 100644 --- a/dotnetcore2.1/run/MockBootstraps/MockBootstraps.csproj +++ b/dotnetcore2.1/run/MockBootstraps/MockBootstraps.csproj @@ -4,6 +4,7 @@ Exe netcoreapp2.1 MockLambdaRuntime + true diff --git a/dotnetcore2.1/run/MockBootstraps/MockRuntime.cs b/dotnetcore2.1/run/MockBootstraps/MockRuntime.cs index 71f07c5e..8a28b249 100644 --- a/dotnetcore2.1/run/MockBootstraps/MockRuntime.cs +++ b/dotnetcore2.1/run/MockBootstraps/MockRuntime.cs @@ -18,8 +18,6 @@ internal class MockRuntime : ILambdaRuntime private Exception invokeError; - private readonly byte[] outputBuffer = new byte[SBSharedMem.SizeOfEventBody]; - private readonly IntPtr sharedMem = Marshal.AllocHGlobal(SBSharedMem.UnmanagedStructSize); private SBSharedMem curSBSharedMem; @@ -58,15 +56,12 @@ public void Init() { } - public InvokeData ReceiveInvoke(IDictionary initialEnvironmentVariables, RuntimeReceiveInvokeBuffers buffers) + unsafe public InvokeData ReceiveInvoke(IDictionary initialEnvironmentVariables, RuntimeReceiveInvokeBuffers buffers) { Console.Error.WriteLine($"START RequestId: {context.RequestId} Version: {context.FunctionVersion}"); invoked = true; - var outputStream = new MemoryStream(outputBuffer); - outputStream.SetLength(0); - curSBSharedMem = new SBSharedMem(sharedMem); return new InvokeData(curSBSharedMem) { @@ -79,7 +74,7 @@ public InvokeData ReceiveInvoke(IDictionary initialEnvironmentVariables, Runtime }, XAmznTraceId = EnvHelper.GetOrDefault("_X_AMZN_TRACE_ID", ""), InputStream = context.InputStream, - OutputStream = outputStream, + OutputStream = new UnmanagedMemoryStream(curSBSharedMem.EventBody, 0, SBSharedMem.SizeOfEventBody, FileAccess.Write), LambdaContextInternal = new LambdaContextInternal( context.RemainingTime, SendCustomerLogMessage, @@ -99,7 +94,7 @@ public void SendCustomerLogMessage(string message) Console.Error.WriteLine(message); } - public void ReportDone(string invokeId, string errorType, bool waitForExit) + public unsafe void ReportDone(string invokeId, string errorType, bool waitForExit) { if (!invoked && invokeError == null) return; @@ -118,7 +113,7 @@ public void ReportDone(string invokeId, string errorType, bool waitForExit) return; } - var output = Encoding.UTF8.GetString(outputBuffer, 0, curSBSharedMem.ResponseBodyLen); + var output = Interop.InteropUtils.ReadUTF8String(curSBSharedMem.EventBody, curSBSharedMem.ResponseBodyLen); Console.WriteLine(output); From 99d9693484d189ebcc49727aead45beb6784ead4 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Thu, 14 Nov 2019 23:13:15 -0500 Subject: [PATCH 073/271] Move dump-go1x into its own directory --- base/{ => dump-go1x}/dump-go1x.go | 14 +++++++------- base/dump-go1x/go.mod | 8 ++++++++ base/dump-go1x/go.sum | 30 ++++++++++++++++++++++++++++++ 3 files changed, 45 insertions(+), 7 deletions(-) rename base/{ => dump-go1x}/dump-go1x.go (91%) create mode 100644 base/dump-go1x/go.mod create mode 100644 base/dump-go1x/go.sum diff --git a/base/dump-go1x.go b/base/dump-go1x/dump-go1x.go similarity index 91% rename from base/dump-go1x.go rename to base/dump-go1x/dump-go1x.go index 54c13b0a..25694be8 100644 --- a/base/dump-go1x.go +++ b/base/dump-go1x/dump-go1x.go @@ -12,10 +12,10 @@ import ( "os/exec" ) -func HandleRequest(ctx context.Context, event interface{}) (*s3.PutObjectOutput, error) { +func handleRequest(ctx context.Context, event interface{}) (*s3.PutObjectResponse, error) { filename := "go1.x.tgz" - RunShell("tar -cpzf /tmp/" + filename + " --numeric-owner --ignore-failed-read /var/runtime /var/lang") + runShell("tar -cpzf /tmp/" + filename + " --numeric-owner --ignore-failed-read /var/runtime /var/lang") fmt.Println("Zipping done! Uploading...") @@ -34,16 +34,16 @@ func HandleRequest(ctx context.Context, event interface{}) (*s3.PutObjectOutput, Body: file, Bucket: aws.String("lambci"), Key: aws.String("fs/" + filename), - }).Send() + }).Send(context.Background()) if err != nil { log.Fatal(err) } fmt.Println("Uploading done!") - RunShell("ps aux") + runShell("ps aux") - RunShell("xargs --null --max-args=1 < /proc/1/environ") + runShell("xargs --null --max-args=1 < /proc/1/environ") for _, a := range os.Args { fmt.Println(a) @@ -58,7 +58,7 @@ func HandleRequest(ctx context.Context, event interface{}) (*s3.PutObjectOutput, return resp, nil } -func RunShell(shellCmd string) { +func runShell(shellCmd string) { cmd := exec.Command("sh", "-c", shellCmd) cmd.Stdout = os.Stdout cmd.Stderr = os.Stderr @@ -66,7 +66,7 @@ func RunShell(shellCmd string) { } func main() { - lambda.Start(HandleRequest) + lambda.Start(handleRequest) } /* diff --git a/base/dump-go1x/go.mod b/base/dump-go1x/go.mod new file mode 100644 index 00000000..32a59771 --- /dev/null +++ b/base/dump-go1x/go.mod @@ -0,0 +1,8 @@ +module dump-go1x + +require ( + github.com/aws/aws-lambda-go v1.13.3 + github.com/aws/aws-sdk-go-v2 v0.16.0 +) + +go 1.13 diff --git a/base/dump-go1x/go.sum b/base/dump-go1x/go.sum new file mode 100644 index 00000000..b3119fb9 --- /dev/null +++ b/base/dump-go1x/go.sum @@ -0,0 +1,30 @@ +github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +github.com/aws/aws-lambda-go v1.13.2 h1:8lYuRVn6rESoUNZXdbCmtGB4bBk4vcVYojiHjE4mMrM= +github.com/aws/aws-lambda-go v1.13.2/go.mod h1:4UKl9IzQMoD+QF79YdCuzCwp8VbmG4VAQwij/eHl5CU= +github.com/aws/aws-lambda-go v1.13.3 h1:SuCy7H3NLyp+1Mrfp+m80jcbi9KYWAs9/BXwppwRDzY= +github.com/aws/aws-lambda-go v1.13.3/go.mod h1:4UKl9IzQMoD+QF79YdCuzCwp8VbmG4VAQwij/eHl5CU= +github.com/aws/aws-sdk-go-v2 v0.16.0 h1:X5pkFnjRNdDEX18NwDGWMaWL5ocNQX0qIYEhEcsTy64= +github.com/aws/aws-sdk-go-v2 v0.16.0/go.mod h1:pFLIN9LDjOEwHfruGweAXEq0XaD6uRkY8FsRkxhuBIg= +github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= +github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af h1:pmfjZENx5imkbgOkpRUYLnmbU7UEFbjtDA2hxJ1ichM= +github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= +github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= +github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= +golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181201002055-351d144fa1fc h1:a3CU5tJYVj92DY2LaA1kUkrsqD5/3mLDhx2NcNqyW+0= +golang.org/x/net v0.0.0-20181201002055-351d144fa1fc/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/text v0.3.0 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +google.golang.org/appengine v1.2.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= From e456ae866f2a1b52e4171d88f4bee3209ee61823 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Thu, 14 Nov 2019 23:18:54 -0500 Subject: [PATCH 074/271] Fix go1.x example handler module name --- examples/go1.x/go.mod | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/go1.x/go.mod b/examples/go1.x/go.mod index 5a5837c4..f263af82 100644 --- a/examples/go1.x/go.mod +++ b/examples/go1.x/go.mod @@ -1,4 +1,4 @@ -module aws-lambda-mock +module handler require github.com/aws/aws-lambda-go v1.13.2 From 7baf83cffc34192fd674c41ee2d8a066798ab9ae Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Fri, 15 Nov 2019 10:45:28 -0500 Subject: [PATCH 075/271] Update aws-sam-cli to 0.31.1 in all build images (except python2.7) --- dotnetcore2.0/build/Dockerfile | 2 +- dotnetcore2.1/build/Dockerfile | 2 +- go1.x/build/Dockerfile | 2 +- java8/build/Dockerfile | 2 +- nodejs10.x/build/Dockerfile | 2 +- nodejs4.3/build/Dockerfile | 2 +- nodejs6.10/build/Dockerfile | 2 +- nodejs8.10/build/Dockerfile | 2 +- provided/build/Dockerfile | 2 +- python3.6/build/Dockerfile | 2 +- python3.7/build/Dockerfile | 2 +- ruby2.5/build/Dockerfile | 2 +- 12 files changed, 12 insertions(+), 12 deletions(-) diff --git a/dotnetcore2.0/build/Dockerfile b/dotnetcore2.0/build/Dockerfile index eed41182..0e735fea 100644 --- a/dotnetcore2.0/build/Dockerfile +++ b/dotnetcore2.0/build/Dockerfile @@ -20,6 +20,6 @@ RUN rm -rf /var/runtime /var/lang && \ rm -rf /tmp/warmup /tmp/NuGetScratch # Add these as a separate layer as they get updated frequently -RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.31.0 aws-lambda-builders==0.5.0 --no-cache-dir +RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.31.1 aws-lambda-builders==0.5.0 --no-cache-dir CMD ["dotnet", "build"] diff --git a/dotnetcore2.1/build/Dockerfile b/dotnetcore2.1/build/Dockerfile index b31f75d3..77515648 100644 --- a/dotnetcore2.1/build/Dockerfile +++ b/dotnetcore2.1/build/Dockerfile @@ -21,7 +21,7 @@ RUN rm -rf /var/runtime /var/lang && \ rm -rf /tmp/warmup /tmp/NuGetScratch /tmp/.dotnet # Add these as a separate layer as they get updated frequently -RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.31.0 aws-lambda-builders==0.5.0 --no-cache-dir && \ +RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.31.1 aws-lambda-builders==0.5.0 --no-cache-dir && \ dotnet tool install --global Amazon.Lambda.Tools --version 3.3.1 CMD ["dotnet", "build"] diff --git a/go1.x/build/Dockerfile b/go1.x/build/Dockerfile index 2053f5ba..bf7c147f 100644 --- a/go1.x/build/Dockerfile +++ b/go1.x/build/Dockerfile @@ -16,6 +16,6 @@ RUN rm -rf /var/runtime /var/lang && \ go get golang.org/x/vgo # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.31.0 aws-lambda-builders==0.5.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.31.1 aws-lambda-builders==0.5.0 --no-cache-dir CMD ["dep", "ensure"] diff --git a/java8/build/Dockerfile b/java8/build/Dockerfile index 23bc5d9e..7261708d 100644 --- a/java8/build/Dockerfile +++ b/java8/build/Dockerfile @@ -15,4 +15,4 @@ RUN rm -rf /var/runtime /var/lang && \ ENV PATH="/usr/local/gradle/gradle-5.6/bin:/usr/local/maven/apache-maven-3.6.2/bin:${PATH}" # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.31.0 aws-lambda-builders==0.5.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.31.1 aws-lambda-builders==0.5.0 --no-cache-dir diff --git a/nodejs10.x/build/Dockerfile b/nodejs10.x/build/Dockerfile index 392a4fd8..447594fe 100644 --- a/nodejs10.x/build/Dockerfile +++ b/nodejs10.x/build/Dockerfile @@ -9,4 +9,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ curl https://lambci.s3.amazonaws.com/fs/nodejs10.x.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.31.0 aws-lambda-builders==0.5.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.31.1 aws-lambda-builders==0.5.0 --no-cache-dir diff --git a/nodejs4.3/build/Dockerfile b/nodejs4.3/build/Dockerfile index 89bf7df0..09348b97 100644 --- a/nodejs4.3/build/Dockerfile +++ b/nodejs4.3/build/Dockerfile @@ -10,6 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs4.3.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.31.0 aws-lambda-builders==0.5.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.31.1 aws-lambda-builders==0.5.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/nodejs6.10/build/Dockerfile b/nodejs6.10/build/Dockerfile index 50bf1a3f..2631f428 100644 --- a/nodejs6.10/build/Dockerfile +++ b/nodejs6.10/build/Dockerfile @@ -10,6 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs6.10.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.31.0 aws-lambda-builders==0.5.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.31.1 aws-lambda-builders==0.5.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/nodejs8.10/build/Dockerfile b/nodejs8.10/build/Dockerfile index ae84cdde..123ef00a 100644 --- a/nodejs8.10/build/Dockerfile +++ b/nodejs8.10/build/Dockerfile @@ -10,6 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs8.10.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.31.0 aws-lambda-builders==0.5.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.31.1 aws-lambda-builders==0.5.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/provided/build/Dockerfile b/provided/build/Dockerfile index 63827a5f..b6ab5d5d 100644 --- a/provided/build/Dockerfile +++ b/provided/build/Dockerfile @@ -1,4 +1,4 @@ FROM lambci/lambda-base:build # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.31.0 aws-lambda-builders==0.5.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.31.1 aws-lambda-builders==0.5.0 --no-cache-dir diff --git a/python3.6/build/Dockerfile b/python3.6/build/Dockerfile index 4ed93fbd..aee7ebcb 100644 --- a/python3.6/build/Dockerfile +++ b/python3.6/build/Dockerfile @@ -19,4 +19,4 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ - pip install -U awscli boto3 aws-sam-cli==0.31.0 aws-lambda-builders==0.5.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.31.1 aws-lambda-builders==0.5.0 --no-cache-dir diff --git a/python3.7/build/Dockerfile b/python3.7/build/Dockerfile index 76d6a5e1..fdc99f9c 100644 --- a/python3.7/build/Dockerfile +++ b/python3.7/build/Dockerfile @@ -12,4 +12,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ - pip install -U awscli boto3 aws-sam-cli==0.31.0 aws-lambda-builders==0.5.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.31.1 aws-lambda-builders==0.5.0 --no-cache-dir diff --git a/ruby2.5/build/Dockerfile b/ruby2.5/build/Dockerfile index 4982ec75..1787aef6 100644 --- a/ruby2.5/build/Dockerfile +++ b/ruby2.5/build/Dockerfile @@ -13,4 +13,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN gem update --system --no-document && \ gem install --no-document bundler && \ - pip install -U awscli boto3 aws-sam-cli==0.31.0 aws-lambda-builders==0.5.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.31.1 aws-lambda-builders==0.5.0 --no-cache-dir From c34337ac5c01745dd2539a130bbf143031cf2893 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Fri, 15 Nov 2019 11:49:22 -0500 Subject: [PATCH 076/271] Add Docker Content Trust --- README.md | 221 +++++++++++++++++++++++++++----------------- base/publish-all.sh | 2 + 2 files changed, 137 insertions(+), 86 deletions(-) diff --git a/README.md b/README.md index 5851aafb..f6b9efb8 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,4 @@ -docker-lambda -------------- +# docker-lambda A sandboxed local environment that replicates the live [AWS Lambda](https://aws.amazon.com/lambda/) environment almost identically – including installed software and libraries, @@ -14,20 +13,25 @@ also use it to [compile native dependencies](#build-examples) knowing that you'r same library versions that exist on AWS Lambda and then deploy using the [AWS CLI](https://aws.amazon.com/cli/). -This project consists of a set of Docker images for each of the supported Lambda runtimes. +--- -There are also a set of build images that include packages like gcc-c++, git, -zip and the aws-cli for compiling and deploying. +## Contents -There's also an npm module to make it convenient to invoke from Node.js +* [Usage](#usage) +* [Run Examples](#run-examples) +* [Build Examples](#build-examples) +* [Using a Dockerfile to build](#using-a-dockerfile-to-build) +* [Docker tags](#docker-tags) +* [Verifying images](#verifying-images) +* [Environment variables](#environment-variables) +* [Build environment](#build-environment) +* [Questions](#questions) -Prerequisites -------------- +--- -You'll need [Docker](https://www.docker.com) installed +## Usage -Run Examples ------------- +### Running Lambda functions You can run your Lambdas from local directories using the `-v` arg with `docker run` – logging goes to stderr and the callback result goes to stdout. @@ -42,7 +46,18 @@ docker run [--rm] -v :/var/task [-v :/opt] lambci/lambda::/var/task [-v :/opt] lambci/lambda:build- +``` + +You can also use [yumda](https://github.com/lambci/yumda) to install precompiled native dependencies using `yum install`. + +## Run Examples ```sh # Test an index.handler function from the current directory on Node.js v10.x @@ -102,8 +117,7 @@ echo '{"some": "event"}' | docker run --rm -v "$PWD":/var/task -i -e DOCKER_LAMB You can see more examples of how to build docker images and run different runtimes in the [examples](./examples) directory. -Build Examples --------------- +## Build Examples To use the build images, for compilation, deployment, etc: @@ -125,22 +139,9 @@ docker run --rm lambci/lambda:build-python2.7 aws --version docker run -it lambci/lambda:build-python3.6 bash ``` -Using the Node.js module (`npm install docker-lambda`) – for example in tests: - -```js -var dockerLambda = require('docker-lambda') - -// Spawns synchronously, uses current dir – will throw if it fails -var lambdaCallbackResult = dockerLambda({event: {some: 'event'}}) - -// Manually specify directory and custom args -lambdaCallbackResult = dockerLambda({taskDir: __dirname, dockerArgs: ['-m', '1.5G']}) - -// Use a different image from the default Node.js v4.3 -lambdaCallbackResult = dockerLambda({dockerImage: 'lambci/lambda:nodejs6.10'}) -``` +## Using a Dockerfile to build -Create your own Docker image for finer control: +Create your own Docker image to build and deploy: ```dockerfile FROM lambci/lambda:build-nodejs8.10 @@ -151,63 +152,50 @@ COPY . . RUN npm install -# Assumes you have a .lambdaignore file with a list of files you don't want in your zip -RUN cat .lambdaignore | xargs zip -9qyr lambda.zip . -x +RUN zip -9yr lambda.zip . CMD aws lambda update-function-code --function-name mylambda --zip-file fileb://lambda.zip - -# docker build -t mylambda . -# docker run --rm -e AWS_ACCESS_KEY_ID -e AWS_SECRET_ACCESS_KEY mylambda ``` +And then: -Questions ---------- - -* *When should I use this?* - - When you want fast local reproducibility. When you don't want to spin up an - Amazon Linux EC2 instance (indeed, network aside, this is closer to the real - Lambda environment because there are a number of different files, permissions - and libraries on a default Amazon Linux instance). When you don't want to - invoke a live Lambda just to test your Lambda package – you can do it locally - from your dev machine or run tests on your CI system (assuming it has Docker - support!) - +```sh +docker build -t mylambda . +docker run --rm -e AWS_ACCESS_KEY_ID -e AWS_SECRET_ACCESS_KEY mylambda +``` -* *Wut, how?* +## Node.js module - By [tarring the full filesystem in Lambda, uploading that to S3](./base/dump-nodejs43.js), - and then [piping into Docker to create a new image from scratch](./base/create-base.sh) – - then [creating mock modules](./nodejs4.3/run/awslambda-mock.js) that will be - required/included in place of the actual native modules that communicate with - the real Lambda coordinating services. Only the native modules are mocked - out – the actual parent JS/PY/Java runner files are left alone, so their behaviors - don't need to be replicated (like the overriding of `console.log`, and custom - defined properties like `callbackWaitsForEmptyEventLoop`) +Using the Node.js module (`npm install docker-lambda`) – for example in tests: -* *What's missing from the images?* +```js +var dockerLambda = require('docker-lambda') - Hard to tell – anything that's not readable – so at least `/root/*` – - but probably a little more than that – hopefully nothing important, after all, - it's not readable by Lambda, so how could it be! +// Spawns synchronously, uses current dir – will throw if it fails +var lambdaCallbackResult = dockerLambda({event: {some: 'event'}}) -* *Is it really necessary to replicate exactly to this degree?* +// Manually specify directory and custom args +lambdaCallbackResult = dockerLambda({taskDir: __dirname, dockerArgs: ['-m', '1.5G']}) - Not for many scenarios – some compiled Linux binaries work out of the box - and an Amazon Linux Docker image can compile some binaries that work on - Lambda too, for example – but for testing it's great to be able to reliably - verify permissions issues, library linking issues, etc. +// Use a different image from the default Node.js v4.3 +lambdaCallbackResult = dockerLambda({dockerImage: 'lambci/lambda:nodejs6.10'}) +``` -* *What's this got to do with LambCI?* +Options to pass to `dockerLambda()`: + - `dockerImage` + - `handler` + - `event` + - `taskDir` + - `cleanUp` + - `addEnvVars` + - `dockerArgs` + - `spawnOptions` + - `returnSpawnResult` - Technically nothing – it's just been incredibly useful during the building - and testing of LambCI. +## Docker tags -Documentation ------------- +These follow the Lambda runtime names: -Docker tags (follow the Lambda runtime names): - `nodejs4.3` - `nodejs6.10` - `nodejs8.10` @@ -235,34 +223,53 @@ Docker tags (follow the Lambda runtime names): - `build-dotnetcore2.1` - `build-provided` -Env vars: +## Verifying images + +These images are signed using [Docker Content Trust](https://docs.docker.com/engine/security/trust/content_trust/), +with the following keys: + +- Repository Key: `e966126aacd4be5fb92e0160212dd007fc16a9b4366ef86d28fc7eb49f4d0809` +- Root Key: `031d78bcdca4171be103da6ffb55e8ddfa9bd113e0ec481ade78d897d9e65c0e` + +You can verify/inspect an image using `docker trust inspect`: + +```sh +$ docker trust inspect --pretty lambci/lambda:provided + +Signatures for lambci/lambda:provided + +SIGNED TAG DIGEST SIGNERS +provided 838c42079b5fcfd6640d486f13c1ceeb52ac661e19f9f1d240b63478e53d73f8 (Repo Admin) + +Administrative keys for lambci/lambda:provided + + Repository Key: e966126aacd4be5fb92e0160212dd007fc16a9b4366ef86d28fc7eb49f4d0809 + Root Key: 031d78bcdca4171be103da6ffb55e8ddfa9bd113e0ec481ade78d897d9e65c0e +``` + +(The `DIGEST` for a given tag may not match the example above, but the Repository and Root keys should match) + +## Environment variables + + - `AWS_LAMBDA_FUNCTION_HANDLER` or `_HANDLER` + - `AWS_LAMBDA_EVENT_BODY` - `AWS_LAMBDA_FUNCTION_NAME` - `AWS_LAMBDA_FUNCTION_VERSION` - `AWS_LAMBDA_FUNCTION_INVOKED_ARN` - `AWS_LAMBDA_FUNCTION_MEMORY_SIZE` - `AWS_LAMBDA_FUNCTION_TIMEOUT` - - `AWS_LAMBDA_FUNCTION_HANDLER` - - `AWS_LAMBDA_EVENT_BODY` - - `AWS_REGION` - - `AWS_DEFAULT_REGION` + - `_X_AMZN_TRACE_ID` + - `AWS_REGION` or `AWS_DEFAULT_REGION` - `AWS_ACCOUNT_ID` - `AWS_ACCESS_KEY_ID` - `AWS_SECRET_ACCESS_KEY` - `AWS_SESSION_TOKEN` - `DOCKER_LAMBDA_USE_STDIN` -Options to pass to `dockerLambda()`: - - `dockerImage` - - `handler` - - `event` - - `taskDir` - - `cleanUp` - - `addEnvVars` - - `dockerArgs` - - `spawnOptions` - - `returnSpawnResult` +## Build environment Yum packages installed on build images: + - `development` (group, includes `gcc-c++`, `autoconf`, `automake`, `git`, `vim`, etc) - `aws-cli` - `aws-sam-cli` @@ -287,3 +294,45 @@ Yum packages installed on build images: - `pcre-devel` - `libcurl-devel` - `yum-plugin-ovl` + +## Questions + +* *When should I use this?* + + When you want fast local reproducibility. When you don't want to spin up an + Amazon Linux EC2 instance (indeed, network aside, this is closer to the real + Lambda environment because there are a number of different files, permissions + and libraries on a default Amazon Linux instance). When you don't want to + invoke a live Lambda just to test your Lambda package – you can do it locally + from your dev machine or run tests on your CI system (assuming it has Docker + support!) + + +* *Wut, how?* + + By [tarring the full filesystem in Lambda, uploading that to S3](./base/dump-nodejs43.js), + and then [piping into Docker to create a new image from scratch](./base/create-base.sh) – + then [creating mock modules](./nodejs4.3/run/awslambda-mock.js) that will be + required/included in place of the actual native modules that communicate with + the real Lambda coordinating services. Only the native modules are mocked + out – the actual parent JS/PY/Java runner files are left alone, so their behaviors + don't need to be replicated (like the overriding of `console.log`, and custom + defined properties like `callbackWaitsForEmptyEventLoop`) + +* *What's missing from the images?* + + Hard to tell – anything that's not readable – so at least `/root/*` – + but probably a little more than that – hopefully nothing important, after all, + it's not readable by Lambda, so how could it be! + +* *Is it really necessary to replicate exactly to this degree?* + + Not for many scenarios – some compiled Linux binaries work out of the box + and an Amazon Linux Docker image can compile some binaries that work on + Lambda too, for example – but for testing it's great to be able to reliably + verify permissions issues, library linking issues, etc. + +* *What's this got to do with LambCI?* + + Technically nothing – it's just been incredibly useful during the building + and testing of LambCI. diff --git a/base/publish-all.sh b/base/publish-all.sh index 30603bca..b2245694 100755 --- a/base/publish-all.sh +++ b/base/publish-all.sh @@ -2,6 +2,8 @@ RUNTIMES="provided go1.x nodejs4.3 nodejs6.10 nodejs8.10 nodejs10.x python2.7 python3.6 python3.7 ruby2.5 java8 dotnetcore2.0 dotnetcore2.1" +export DOCKER_CONTENT_TRUST=1 + docker push lambci/lambda-base docker push lambci/lambda-base-2 From 3cb8de4d177fe77f03a5e77076c19949786f2709 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Fri, 15 Nov 2019 14:51:02 -0500 Subject: [PATCH 077/271] Read repository passphrase at start and reuse for all publishes --- base/publish-all.sh | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/base/publish-all.sh b/base/publish-all.sh index b2245694..1541598b 100755 --- a/base/publish-all.sh +++ b/base/publish-all.sh @@ -2,7 +2,12 @@ RUNTIMES="provided go1.x nodejs4.3 nodejs6.10 nodejs8.10 nodejs10.x python2.7 python3.6 python3.7 ruby2.5 java8 dotnetcore2.0 dotnetcore2.1" +echo -n "Enter repository passphrase: " +read -s DOCKER_CONTENT_TRUST_REPOSITORY_PASSPHRASE +echo + export DOCKER_CONTENT_TRUST=1 +export DOCKER_CONTENT_TRUST_REPOSITORY_PASSPHRASE docker push lambci/lambda-base docker push lambci/lambda-base-2 From 628ba68f625e7831349680f22ad7dcace4990fc9 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Mon, 7 Oct 2019 13:55:19 -0400 Subject: [PATCH 078/271] Add Lambda API to provided runtime --- provided/run/go.mod | 2 + provided/run/init.go | 687 +++++++++++++++++++++++++++++-------------- 2 files changed, 471 insertions(+), 218 deletions(-) diff --git a/provided/run/go.mod b/provided/run/go.mod index 0f8b9c00..23a90256 100644 --- a/provided/run/go.mod +++ b/provided/run/go.mod @@ -4,3 +4,5 @@ require ( github.com/go-chi/chi v4.0.2+incompatible github.com/go-chi/render v1.0.1 ) + +go 1.13 diff --git a/provided/run/init.go b/provided/run/init.go index 4fd33bb3..dd691446 100644 --- a/provided/run/init.go +++ b/provided/run/init.go @@ -4,20 +4,25 @@ import ( "bufio" "bytes" "context" + "encoding/base64" "encoding/hex" "encoding/json" "flag" "fmt" + "io" "io/ioutil" + "log" "math" "math/rand" "net" "net/http" "os" "os/exec" + "os/signal" "reflect" "regexp" "strconv" + "sync" "syscall" "time" @@ -25,15 +30,8 @@ import ( "github.com/go-chi/render" ) -type key int - -const ( - keyRequestID key = iota -) +var logDebug = false -var okStatusResponse = &statusResponse{Status: "OK", HTTPStatusCode: 202} - -var curRequestID = fakeGUID() var curState = "STATE_INIT" var transitions = map[string]map[string]bool{ @@ -43,21 +41,71 @@ var transitions = map[string]map[string]bool{ "STATE_INVOKE_ERROR": map[string]bool{"STATE_INVOKE_NEXT": true}, } -var mockContext = &mockLambdaContext{} +var acceptedResponse = &statusResponse{Status: "OK", HTTPStatusCode: 202} + +var curContext *mockLambdaContext +var bootstrapCmd *exec.Cmd +var initPrinted bool +var eventChan chan *mockLambdaContext +var stayOpen bool +var apiPort string +var exited bool +var noBootstrap bool +var bootstrapIsRunning bool +var bootstrapPath *string +var bootstrapArgs []string +var bootstrapMutex sync.Mutex +var logsBuf bytes.Buffer + +func newContext() *mockLambdaContext { + context := &mockLambdaContext{ + RequestID: fakeGUID(), + FnName: getEnv("AWS_LAMBDA_FUNCTION_NAME", "test"), + Version: getEnv("AWS_LAMBDA_FUNCTION_VERSION", "$LATEST"), + MemSize: getEnv("AWS_LAMBDA_FUNCTION_MEMORY_SIZE", "1536"), + Timeout: getEnv("AWS_LAMBDA_FUNCTION_TIMEOUT", "300"), + Region: getEnv("AWS_REGION", getEnv("AWS_DEFAULT_REGION", "us-east-1")), + AccountID: getEnv("AWS_ACCOUNT_ID", strconv.FormatInt(int64(rand.Int31()), 10)), + XAmznTraceID: getEnv("_X_AMZN_TRACE_ID", ""), + ClientContext: getEnv("AWS_LAMBDA_CLIENT_CONTEXT", ""), + CognitoIdentity: getEnv("AWS_LAMBDA_COGNITO_IDENTITY", ""), + Start: time.Now(), + Done: make(chan bool), + } + context.ParseTimeout() + context.ParseFunctionArn() + return context +} + +type key int + +const ( + keyRequestID key = iota +) func main() { rand.Seed(time.Now().UTC().UnixNano()) - curRequestID = fakeGUID() + log.SetOutput(os.Stderr) - bootstrapPath := flag.String("bootstrap", "/var/runtime/bootstrap", "path to bootstrap") + interrupt := make(chan os.Signal, 1) + signal.Notify(interrupt, os.Interrupt) + + render.Respond = renderJSON + + eventChan = make(chan *mockLambdaContext) + + stayOpen = os.Getenv("DOCKER_LAMBDA_STAY_OPEN") != "" + noBootstrap = os.Getenv("DOCKER_LAMBDA_NO_BOOTSTRAP") != "" + apiPort = getEnv("DOCKER_LAMBDA_API_PORT", "9001") + + bootstrapPath = flag.String("bootstrap", "/var/runtime/bootstrap", "path to bootstrap") bootstrapArgsString := flag.String("bootstrap-args", "[]", "additional arguments passed to bootstrap, as a stringified JSON Array") flag.Parse() positionalArgs := flag.Args() - var bootstrapArgs []string if err := json.Unmarshal([]byte(*bootstrapArgsString), &bootstrapArgs); err != nil { - abortRequest(fmt.Errorf("Value of --bootstrap-args should be a JSON Array. Error: %s", err)) + log.Fatal(fmt.Errorf("Value of --bootstrap-args should be a JSON Array. Error: %s", err)) return } @@ -67,81 +115,275 @@ func main() { } else { handler = getEnv("AWS_LAMBDA_FUNCTION_HANDLER", getEnv("_HANDLER", "handler")) } + os.Setenv("_HANDLER", handler) - var eventBody string + var eventBody []byte if len(positionalArgs) > 1 { - eventBody = positionalArgs[1] + eventBody = []byte(positionalArgs[1]) } else { - eventBody = os.Getenv("AWS_LAMBDA_EVENT_BODY") - if eventBody == "" { + eventBody = []byte(os.Getenv("AWS_LAMBDA_EVENT_BODY")) + if len(eventBody) == 0 { if os.Getenv("DOCKER_LAMBDA_USE_STDIN") != "" { - stdin, _ := ioutil.ReadAll(os.Stdin) - eventBody = string(stdin) + eventBody, _ = ioutil.ReadAll(os.Stdin) } else { - eventBody = "{}" + eventBody = []byte("{}") } } } - mockContext = &mockLambdaContext{ - EventBody: eventBody, - FnName: getEnv("AWS_LAMBDA_FUNCTION_NAME", "test"), - Version: getEnv("AWS_LAMBDA_FUNCTION_VERSION", "$LATEST"), - MemSize: getEnv("AWS_LAMBDA_FUNCTION_MEMORY_SIZE", "1536"), - Timeout: getEnv("AWS_LAMBDA_FUNCTION_TIMEOUT", "300"), - Region: getEnv("AWS_REGION", getEnv("AWS_DEFAULT_REGION", "us-east-1")), - AccountID: getEnv("AWS_ACCOUNT_ID", strconv.FormatInt(int64(rand.Int31()), 10)), - XAmznTraceID: getEnv("_X_AMZN_TRACE_ID", ""), - ClientContext: getEnv("AWS_LAMBDA_CLIENT_CONTEXT", ""), - CognitoIdentity: getEnv("AWS_LAMBDA_COGNITO_IDENTITY", ""), - Start: time.Now(), - Pid: 1, - Done: make(chan bool), + curContext = newContext() + + os.Setenv("AWS_LAMBDA_FUNCTION_NAME", curContext.FnName) + os.Setenv("AWS_LAMBDA_FUNCTION_VERSION", curContext.Version) + os.Setenv("AWS_LAMBDA_FUNCTION_MEMORY_SIZE", curContext.MemSize) + os.Setenv("AWS_LAMBDA_LOG_GROUP_NAME", "/aws/lambda/"+curContext.FnName) + os.Setenv("AWS_LAMBDA_LOG_STREAM_NAME", logStreamName(curContext.Version)) + os.Setenv("AWS_REGION", curContext.Region) + os.Setenv("AWS_DEFAULT_REGION", curContext.Region) + os.Setenv("_X_AMZN_TRACE_ID", curContext.XAmznTraceID) + + runtimeRouter := createRuntimeRouter() + + runtimeListener, err := net.Listen("tcp", ":9001") + if err != nil { + log.Fatal(err) + return } - mockContext.ParseTimeout() - mockContext.ParseFunctionArn() - awsAccessKey := getEnv("AWS_ACCESS_KEY", getEnv("AWS_ACCESS_KEY_ID", "SOME_ACCESS_KEY_ID")) - awsSecretKey := getEnv("AWS_SECRET_KEY", getEnv("AWS_SECRET_ACCESS_KEY", "SOME_SECRET_ACCESS_KEY")) - awsSessionToken := getEnv("AWS_SESSION_TOKEN", os.Getenv("AWS_SECURITY_TOKEN")) + var runtimeServer *http.Server + if apiPort == "9001" { + runtimeServer = &http.Server{Handler: addAPIRoutes(runtimeRouter)} + } else { + runtimeServer = &http.Server{Handler: runtimeRouter} + apiListener, err := net.Listen("tcp", ":"+apiPort) + if err != nil { + log.Fatal(err) + return + } + apiServer := &http.Server{Handler: addAPIRoutes(chi.NewRouter())} + go apiServer.Serve(apiListener) + } - os.Setenv("AWS_LAMBDA_FUNCTION_NAME", mockContext.FnName) - os.Setenv("AWS_LAMBDA_FUNCTION_VERSION", mockContext.Version) - os.Setenv("AWS_LAMBDA_FUNCTION_MEMORY_SIZE", mockContext.MemSize) - os.Setenv("AWS_LAMBDA_LOG_GROUP_NAME", "/aws/lambda/"+mockContext.FnName) - os.Setenv("AWS_LAMBDA_LOG_STREAM_NAME", logStreamName(mockContext.Version)) - os.Setenv("AWS_REGION", mockContext.Region) - os.Setenv("AWS_DEFAULT_REGION", mockContext.Region) - os.Setenv("_X_AMZN_TRACE_ID", mockContext.XAmznTraceID) - os.Setenv("_HANDLER", handler) + go runtimeServer.Serve(runtimeListener) + + exitCode := 0 + + if stayOpen { + systemLog(fmt.Sprintf("Lambda API listening on port %s...", apiPort)) + <-interrupt + } else { + res, err := http.Post( + "http://127.0.0.1:9001/2015-03-31/functions/"+curContext.FnName+"/invocations", + "application/json", + bytes.NewBuffer(eventBody), + ) + if err != nil { + log.Fatal(err) + return + } + functionError := res.Header.Get("X-Amz-Function-Error") + + body, err := ioutil.ReadAll(res.Body) + if err != nil { + log.Fatal(err) + return + } + res.Body.Close() - var cmd *exec.Cmd + fmt.Println("\n" + formatOneLineJSON(body)) + + if functionError != "" { + exitCode = 1 + } + } + + exit(exitCode) +} + +func formatOneLineJSON(body []byte) string { + payloadObj := &json.RawMessage{} + if json.Unmarshal(body, payloadObj) == nil { + if formattedPayload, err := json.Marshal(payloadObj); err == nil { + body = formattedPayload + } + } + return string(body) +} + +func ensureBootstrapIsRunning(context *mockLambdaContext) error { + if noBootstrap || bootstrapIsRunning { + return nil + } + bootstrapMutex.Lock() + defer bootstrapMutex.Unlock() + if bootstrapIsRunning { + return nil + } for _, cmdPath := range []string{*bootstrapPath, "/var/task/bootstrap", "/opt/bootstrap"} { if fi, err := os.Stat(cmdPath); err == nil && !fi.IsDir() { - cmd = exec.Command(cmdPath, bootstrapArgs...) + bootstrapCmd = exec.Command(cmdPath, bootstrapArgs...) break } } - if cmd == nil { - abortRequest(fmt.Errorf("Couldn't find valid bootstrap(s): [/var/task/bootstrap /opt/bootstrap]")) + if bootstrapCmd == nil { + return fmt.Errorf("Couldn't find valid bootstrap(s): [/var/task/bootstrap /opt/bootstrap]") } - cmd.Env = append(os.Environ(), + awsAccessKey := getEnv("AWS_ACCESS_KEY", getEnv("AWS_ACCESS_KEY_ID", "SOME_ACCESS_KEY_ID")) + awsSecretKey := getEnv("AWS_SECRET_KEY", getEnv("AWS_SECRET_ACCESS_KEY", "SOME_SECRET_ACCESS_KEY")) + awsSessionToken := getEnv("AWS_SESSION_TOKEN", os.Getenv("AWS_SECURITY_TOKEN")) + + bootstrapCmd.Env = append(os.Environ(), "AWS_LAMBDA_RUNTIME_API=127.0.0.1:9001", "AWS_ACCESS_KEY_ID="+awsAccessKey, "AWS_SECRET_ACCESS_KEY="+awsSecretKey, ) if len(awsSessionToken) > 0 { - cmd.Env = append(cmd.Env, "AWS_SESSION_TOKEN="+awsSessionToken) + bootstrapCmd.Env = append(bootstrapCmd.Env, "AWS_SESSION_TOKEN="+awsSessionToken) } - cmd.Stdout = os.Stderr - cmd.Stderr = os.Stderr - cmd.SysProcAttr = &syscall.SysProcAttr{Setpgid: true} - mockContext.Cmd = cmd + if stayOpen { + bootstrapCmd.Stdout = io.MultiWriter(os.Stdout, &logsBuf) + bootstrapCmd.Stderr = io.MultiWriter(os.Stderr, &logsBuf) + } else { + bootstrapCmd.Stdout = os.Stderr + bootstrapCmd.Stderr = os.Stderr + } + bootstrapCmd.SysProcAttr = &syscall.SysProcAttr{Setpgid: true} - render.Respond = renderJSON + if err := bootstrapCmd.Start(); err != nil { + return err + } + + bootstrapIsRunning = true + + // Get an initial read of memory, and update when we finish + context.MaxMem, _ = allProcsMemoryInMb() + + go func() { + bootstrapCmd.Wait() + bootstrapIsRunning = false + curState = "STATE_INIT" + if !exited { + // context may have changed, use curContext instead + curContext.SetError(fmt.Errorf("Runtime exited without providing a reason")) + } + }() + + return nil +} + +func exit(exitCode int) { + exited = true + if bootstrapCmd != nil && bootstrapCmd.Process != nil { + syscall.Kill(-bootstrapCmd.Process.Pid, syscall.SIGKILL) + } + os.Exit(exitCode) +} +func waitForContext(context *mockLambdaContext) { + if err := ensureBootstrapIsRunning(context); err != nil { + context.EndInvoke(err) + } else { + eventChan <- context + <-context.Done + } +} + +func addAPIRoutes(r *chi.Mux) *chi.Mux { + r.Post("/2015-03-31/functions/{function}/invocations", func(w http.ResponseWriter, r *http.Request) { + context := newContext() + + if r.Header.Get("X-Amz-Invocation-Type") != "" { + context.InvocationType = r.Header.Get("X-Amz-Invocation-Type") + } + if r.Header.Get("X-Amz-Client-Context") != "" { + buf, err := base64.StdEncoding.DecodeString(r.Header.Get("X-Amz-Client-Context")) + if err != nil { + render.Render(w, r, &errResponse{ + HTTPStatusCode: 400, + ErrorType: "ClientContextDecodingError", + ErrorMessage: err.Error(), + }) + return + } + context.ClientContext = string(buf) + } + if r.Header.Get("X-Amz-Log-Type") != "" { + context.LogType = r.Header.Get("X-Amz-Log-Type") + } + + if context.InvocationType == "DryRun" { + w.Header().Set("x-amzn-RequestId", context.RequestID) + w.Header().Set("x-amzn-Remapped-Content-Length", "0") + w.WriteHeader(204) + return + } + + if body, err := ioutil.ReadAll(r.Body); err == nil { + context.EventBody = string(body) + } else { + render.Render(w, r, &errResponse{ + HTTPStatusCode: 500, + ErrorType: "BodyReadError", + ErrorMessage: err.Error(), + }) + return + } + r.Body.Close() + + if context.InvocationType == "Event" { + w.Header().Set("x-amzn-RequestId", context.RequestID) + w.Header().Set("x-amzn-Remapped-Content-Length", "0") + w.Header().Set("X-Amzn-Trace-Id", context.XAmznTraceID) + w.WriteHeader(202) + go waitForContext(context) + return + } + + waitForContext(context) + + w.Header().Set("Content-Type", "application/json") + w.Header().Set("x-amzn-RequestId", context.RequestID) + w.Header().Set("x-amzn-Remapped-Content-Length", "0") + w.Header().Set("X-Amz-Executed-Version", context.Version) + w.Header().Set("X-Amzn-Trace-Id", context.XAmznTraceID) + + if context.LogType == "Tail" { + // We assume context.LogTail is already base64 encoded + w.Header().Set("X-Amz-Log-Result", context.LogTail) + } + + if context.Reply.Error != nil { + errorType := "Unhandled" + if context.ErrorType != "" { + errorType = context.ErrorType + } + w.Header().Set("X-Amz-Function-Error", errorType) + } + + // Lambda will usually return the payload instead of an error if the payload exists + if len(context.Reply.Payload) > 0 { + w.Header().Set("Content-Length", strconv.FormatInt(int64(len(context.Reply.Payload)), 10)) + w.Write(context.Reply.Payload) + return + } + + if payload, err := json.Marshal(context.Reply.Error); err == nil { + w.Header().Set("Content-Length", strconv.FormatInt(int64(len(payload)), 10)) + w.Write(payload) + } else { + render.Render(w, r, &errResponse{ + HTTPStatusCode: 500, + ErrorType: "ErrorMarshalError", + ErrorMessage: err.Error(), + }) + } + }) + return r +} + +func createRuntimeRouter() *chi.Mux { r := chi.NewRouter() r.Route("/2018-06-01", func(r chi.Router) { @@ -152,34 +394,44 @@ func main() { r.Route("/runtime", func(r chi.Router) { r. With(updateState("STATE_INIT_ERROR")). - Post("/init/error", handleErrorRequest) + Post("/init/error", func(w http.ResponseWriter, r *http.Request) { + debug("In /init/error...") + curContext = <-eventChan + handleErrorRequest(w, r) + curContext.EndInvoke(nil) + }) r. With(updateState("STATE_INVOKE_NEXT")). Get("/invocation/next", func(w http.ResponseWriter, r *http.Request) { - if mockContext.RequestID == "" { - mockContext.RequestID = curRequestID - mockContext.InitEnd = time.Now() - logStartRequest() - } else if mockContext.Reply != nil { - endInvoke(nil) - return + debug("In /invocation/next...") + if curContext.Reply != nil { + debug("Reply is not nil...") + curContext.EndInvoke(nil) } + debug("Waiting for next event...") + curContext = <-eventChan + context := curContext + context.LogStartRequest() w.Header().Set("Content-Type", "application/json") - w.Header().Set("Lambda-Runtime-Aws-Request-Id", curRequestID) - w.Header().Set("Lambda-Runtime-Deadline-Ms", strconv.FormatInt(mockContext.Deadline().UnixNano()/1e6, 10)) - w.Header().Set("Lambda-Runtime-Invoked-Function-Arn", mockContext.InvokedFunctionArn) - w.Header().Set("Lambda-Runtime-Trace-Id", mockContext.XAmznTraceID) + w.Header().Set("Lambda-Runtime-Aws-Request-Id", context.RequestID) + w.Header().Set("Lambda-Runtime-Deadline-Ms", strconv.FormatInt(context.Deadline().UnixNano()/1e6, 10)) + w.Header().Set("Lambda-Runtime-Invoked-Function-Arn", context.InvokedFunctionArn) + w.Header().Set("Lambda-Runtime-Trace-Id", context.XAmznTraceID) - if mockContext.ClientContext != "" { - w.Header().Set("Lambda-Runtime-Client-Context", mockContext.ClientContext) + if context.ClientContext != "" { + w.Header().Set("Lambda-Runtime-Client-Context", context.ClientContext) + } + if context.CognitoIdentity != "" { + w.Header().Set("Lambda-Runtime-Cognito-Identity", context.CognitoIdentity) } - if mockContext.CognitoIdentity != "" { - w.Header().Set("Lambda-Runtime-Cognito-Identity", mockContext.CognitoIdentity) + + if context.LogType != "" { + w.Header().Set("Docker-Lambda-Log-Type", context.LogType) } - w.Write([]byte(eventBody)) + w.Write([]byte(context.EventBody)) }) r.Route("/invocation/{requestID}", func(r chi.Router) { @@ -192,15 +444,19 @@ func main() { if err != nil { render.Render(w, r, &errResponse{ HTTPStatusCode: 500, - ErrorType: "BodyReadError", // TODO: not sure what this would be in production? + ErrorType: "BodyReadError", // Not sure what this would be in production? ErrorMessage: err.Error(), }) return } + r.Body.Close() + + debug("Setting Reply in /response") + curContext.Reply = &invokeResponse{Payload: body} - mockContext.Reply = &invokeResponse{Payload: body} + curContext.LogTail = extractLogTail(r, curContext) - render.Render(w, r, okStatusResponse) + render.Render(w, r, acceptedResponse) w.(http.Flusher).Flush() }) @@ -210,62 +466,33 @@ func main() { }) }) }) - - listener, err := net.Listen("tcp", "127.0.0.1:9001") - if err != nil { - abortRequest(err) - return - } - - server := &http.Server{Handler: r} - - go server.Serve(listener) - - res, err := http.Get("http://127.0.0.1:9001/2018-06-01/ping") - if err != nil { - abortRequest(err) - return - } - body, err := ioutil.ReadAll(res.Body) - if err != nil || string(body) != "pong" { - abortRequest(err) - return - } - - if err := cmd.Start(); err != nil { - abortRequest(err) - return - } - go func() { - cmd.Wait() - if mockContext.Reply == nil { - abortRequest(fmt.Errorf("Runtime exited without providing a reason")) - } - }() - - <-mockContext.Done + return r } func handleErrorRequest(w http.ResponseWriter, r *http.Request) { lambdaErr := &lambdaError{} - response := okStatusResponse + response := acceptedResponse body, err := ioutil.ReadAll(r.Body) if err != nil || json.Unmarshal(body, lambdaErr) != nil { response = &statusResponse{Status: "InvalidErrorShape", HTTPStatusCode: 299} } + r.Body.Close() errorType := r.Header.Get("Lambda-Runtime-Function-Error-Type") if errorType != "" { - lambdaErr.Type = errorType + curContext.ErrorType = errorType } - mockContext.Reply = &invokeResponse{Error: lambdaErr} + debug("Setting Reply in handleErrorRequest") + debug(lambdaErr) + + curContext.Reply = &invokeResponse{Error: lambdaErr} + + curContext.LogTail = extractLogTail(r, curContext) render.Render(w, r, response) w.(http.Flusher).Flush() - - endInvoke(nil) } func updateState(nextState string) func(http.Handler) http.Handler { @@ -289,7 +516,7 @@ func awsRequestIDValidator(next http.Handler) http.Handler { return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { requestID := chi.URLParam(r, "requestID") - if requestID != curRequestID { + if requestID != curContext.RequestID { render.Render(w, r, &errResponse{ HTTPStatusCode: 400, ErrorType: "InvalidRequestID", @@ -304,6 +531,31 @@ func awsRequestIDValidator(next http.Handler) http.Handler { }) } +func extractLogTail(r *http.Request, context *mockLambdaContext) string { + defer logsBuf.Reset() + + if context.LogType != "Tail" { + return "" + } + if noBootstrap { + return r.Header.Get("Docker-Lambda-Log-Result") + } + + // This is very annoying but seems to be necessary to ensure we get all the stdout/stderr from the subprocess + time.Sleep(1 * time.Millisecond) + + logs := logsBuf.Bytes() + + if len(logs) == 0 { + return "" + } + + if len(logs) > 4096 { + logs = logs[len(logs)-4096:] + } + return base64.StdEncoding.EncodeToString(logs) +} + type statusResponse struct { HTTPStatusCode int `json:"-"` Status string `json:"status"` @@ -341,95 +593,6 @@ func renderJSON(w http.ResponseWriter, r *http.Request, v interface{}) { w.Write(buf.Bytes()) } -func abortRequest(err error) { - endInvoke(&exitError{err: err}) -} - -func endInvoke(err error) { - logStart := false - if mockContext.RequestID == "" { - mockContext.RequestID = curRequestID - logStart = true - } - mockContext.MaxMem, _ = allProcsMemoryInMb() - if mockContext.Cmd != nil && mockContext.Cmd.Process != nil { - syscall.Kill(-mockContext.Cmd.Process.Pid, syscall.SIGKILL) - } - if logStart { - logStartRequest() - } - logEndRequest(err) - mockContext.Done <- true -} - -func logStartRequest() { - systemLog("START RequestId: " + mockContext.RequestID + " Version: " + mockContext.Version) -} - -func logEndRequest(err error) { - if mockContext.InitEnd.IsZero() { - mockContext.InitEnd = time.Now() - } - - initDiffMs := math.Min(float64(mockContext.InitEnd.Sub(mockContext.Start).Nanoseconds()), - float64(mockContext.TimeoutDuration.Nanoseconds())) / 1e6 - - diffMs := math.Min(float64(time.Now().Sub(mockContext.InitEnd).Nanoseconds()), - float64(mockContext.TimeoutDuration.Nanoseconds())) / 1e6 - - initStr := "" - if mockContext.Cmd != nil && mockContext.Cmd.Path != "/var/runtime/bootstrap" { - initStr = fmt.Sprintf("Init Duration: %.2f ms\t", initDiffMs) - } - - systemLog("END RequestId: " + mockContext.RequestID) - systemLog(fmt.Sprintf( - "REPORT RequestId: %s\t"+ - initStr+ - "Duration: %.2f ms\t"+ - "Billed Duration: %.f ms\t"+ - "Memory Size: %s MB\t"+ - "Max Memory Used: %d MB\t", - mockContext.RequestID, diffMs, math.Ceil(diffMs/100)*100, mockContext.MemSize, mockContext.MaxMem)) - - if err == nil && mockContext.HasExpired() { - err = mockContext.TimeoutErr() - } - - if err != nil { - responseErr := lambdaError{ - Message: err.Error(), - Type: getErrorType(err), - } - if responseErr.Type == "errorString" { - responseErr.Type = "" - if responseErr.Message == "unexpected EOF" { - responseErr.Message = "RequestId: " + mockContext.RequestID + " Process exited before completing request" - } - } else if responseErr.Type == "ExitError" { - responseErr.Type = "Runtime.ExitError" // XXX: Hack to add 'Runtime.' to error type - } - systemErr(&responseErr) - os.Exit(1) - } - - if mockContext.Reply.Error != nil { - systemErr(mockContext.Reply.Error) - os.Exit(1) - } - - // Try to format json as one line – if it's json - payload := mockContext.Reply.Payload - payloadObj := &json.RawMessage{} - if json.Unmarshal(payload, payloadObj) == nil { - if formattedPayload, err := json.Marshal(payloadObj); err == nil { - payload = formattedPayload - } - } - - fmt.Println(string(payload)) -} - func getEnv(key, fallback string) string { value := os.Getenv(key) if value != "" { @@ -529,22 +692,23 @@ func getErrorType(err interface{}) string { return errorType.Name() } -func systemLog(msg string) { - fmt.Fprintln(os.Stderr, "\033[32m"+msg+"\033[0m") +func debug(v ...interface{}) { + if logDebug { + log.Println(v...) + } } -// Try to match the output of the Lambda web console -func systemErr(err *lambdaError) { - jsonBytes, _ := json.MarshalIndent(err, "", " ") - fmt.Fprintln(os.Stderr, "\033[31m"+string(jsonBytes)+"\033[0m") +func systemLog(msg string) { + fmt.Fprintln(os.Stderr, "\033[32m"+msg+"\033[0m") } type exitError struct { - err error + err error + context *mockLambdaContext } func (e *exitError) Error() string { - return fmt.Sprintf("RequestId: %s Error: %s", curRequestID, e.err.Error()) + return fmt.Sprintf("RequestId: %s Error: %s", e.context.RequestID, e.err.Error()) } type lambdaError struct { @@ -569,11 +733,14 @@ type mockLambdaContext struct { Start time.Time InitEnd time.Time TimeoutDuration time.Duration - Pid int Reply *invokeResponse Done chan bool - Cmd *exec.Cmd MaxMem uint64 + InvocationType string + LogType string + LogTail string // base64 encoded tail, no greater than 4096 bytes + ErrorType string // Unhandled vs Handled + Ended bool } func (mc *mockLambdaContext) ParseTimeout() { @@ -601,6 +768,90 @@ func (mc *mockLambdaContext) TimeoutErr() error { mc.RequestID, mc.Timeout) } +func (mc *mockLambdaContext) SetError(exitErr error) { + err := &exitError{err: exitErr, context: mc} + responseErr := lambdaError{ + Message: err.Error(), + Type: getErrorType(err), + } + if responseErr.Type == "errorString" { + responseErr.Type = "" + if responseErr.Message == "unexpected EOF" { + responseErr.Message = "RequestId: " + mc.RequestID + " Process exited before completing request" + } + } else if responseErr.Type == "ExitError" { + responseErr.Type = "Runtime.ExitError" // XXX: Hack to add 'Runtime.' to error type + } + debug("Setting Reply in SetError") + debug(responseErr) + if mc.Reply == nil { + mc.Reply = &invokeResponse{Error: &responseErr} + } else { + mc.Reply.Error = &responseErr + } +} + +func (mc *mockLambdaContext) EndInvoke(exitErr error) { + debug("EndInvoke()") + if mc.Ended { + return + } + mc.Ended = true + if exitErr != nil { + debug(exitErr) + mc.SetError(exitErr) + } else if (mc.Reply == nil || mc.Reply.Error == nil) && mc.HasExpired() { + mc.Reply = &invokeResponse{ + Error: &lambdaError{ + Message: mc.TimeoutErr().Error(), + }, + } + } + if mc.InitEnd.IsZero() { + mc.LogStartRequest() + } + + mc.LogEndRequest() + + if exitErr == nil { + mc.Done <- true + } +} + +func (mc *mockLambdaContext) LogStartRequest() { + mc.InitEnd = time.Now() + systemLog("START RequestId: " + mc.RequestID + " Version: " + mc.Version) +} + +func (mc *mockLambdaContext) LogEndRequest() { + maxMem, _ := allProcsMemoryInMb() + if maxMem > mc.MaxMem { + mc.MaxMem = maxMem + } + + initDiffMs := math.Min(float64(mc.InitEnd.Sub(mc.Start).Nanoseconds()), + float64(mc.TimeoutDuration.Nanoseconds())) / 1e6 + + diffMs := math.Min(float64(time.Now().Sub(mc.InitEnd).Nanoseconds()), + float64(mc.TimeoutDuration.Nanoseconds())) / 1e6 + + initStr := "" + if !initPrinted { + initPrinted = true + initStr = fmt.Sprintf("Init Duration: %.2f ms\t", initDiffMs) + } + + systemLog("END RequestId: " + mc.RequestID) + systemLog(fmt.Sprintf( + "REPORT RequestId: %s\t"+ + initStr+ + "Duration: %.2f ms\t"+ + "Billed Duration: %.f ms\t"+ + "Memory Size: %s MB\t"+ + "Max Memory Used: %d MB\t", + mc.RequestID, diffMs, math.Ceil(diffMs/100)*100, mc.MemSize, mc.MaxMem)) +} + type invokeResponse struct { Payload []byte Error *lambdaError From 82bf969a9168e8e05194b1e3c1583a6ed0ea55d9 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Mon, 11 Nov 2019 17:38:55 -0500 Subject: [PATCH 079/271] Add Lambda API support to nodejs4.3/6.10/8.10 --- nodejs4.3/run/Dockerfile | 5 + nodejs4.3/run/awslambda-mock.js | 211 +++++++++++++++++++++---------- nodejs6.10/run/Dockerfile | 5 + nodejs6.10/run/awslambda-mock.js | 211 +++++++++++++++++++++---------- nodejs8.10/run/Dockerfile | 5 + nodejs8.10/run/awslambda-mock.js | 211 +++++++++++++++++++++---------- 6 files changed, 444 insertions(+), 204 deletions(-) diff --git a/nodejs4.3/run/Dockerfile b/nodejs4.3/run/Dockerfile index a4e9cd9c..9f1e318f 100644 --- a/nodejs4.3/run/Dockerfile +++ b/nodejs4.3/run/Dockerfile @@ -1,3 +1,6 @@ +FROM lambci/lambda:provided + + FROM lambci/lambda-base ENV PATH=/var/lang/bin:$PATH \ @@ -10,6 +13,8 @@ RUN rm -rf /var/runtime /var/lang && \ COPY awslambda-mock.js /var/runtime/node_modules/awslambda/build/Release/awslambda.js +COPY --from=0 /var/runtime/init /var/runtime/mockserver + USER sbx_user1051 ENTRYPOINT ["/var/lang/bin/node", "--expose-gc", "--max-executable-size=160", "--max-semi-space-size=150", "--max-old-space-size=2547", \ diff --git a/nodejs4.3/run/awslambda-mock.js b/nodejs4.3/run/awslambda-mock.js index 1d014d9e..f953acd9 100644 --- a/nodejs4.3/run/awslambda-mock.js +++ b/nodejs4.3/run/awslambda-mock.js @@ -1,5 +1,15 @@ var fs = require('fs') var crypto = require('crypto') +var http = require('http') +var child_process = require('child_process') + +var PING_RETRIES = 20 + +var LOGS = '' +var LOG_TAIL = false +var HAS_BUFFER_FROM = Buffer.from && Buffer.from !== Uint8Array.from + +var STAY_OPEN = process.env.DOCKER_LAMBDA_STAY_OPEN var HANDLER = process.argv[2] || process.env.AWS_LAMBDA_FUNCTION_HANDLER || process.env._HANDLER || 'index.handler' var EVENT_BODY = process.argv[3] || process.env.AWS_LAMBDA_EVENT_BODY || @@ -15,26 +25,14 @@ var ACCESS_KEY_ID = process.env.AWS_ACCESS_KEY_ID || 'SOME_ACCESS_KEY_ID' var SECRET_ACCESS_KEY = process.env.AWS_SECRET_ACCESS_KEY || 'SOME_SECRET_ACCESS_KEY' var SESSION_TOKEN = process.env.AWS_SESSION_TOKEN var INVOKED_ARN = process.env.AWS_LAMBDA_FUNCTION_INVOKED_ARN || arn(REGION, ACCOUNT_ID, FN_NAME) +var TRACE_ID = process.env._X_AMZN_TRACE_ID || 'root=1-5d9639c7-ac2df104a29f3070f507bdb4;sampled=0' +var CLIENT_CONTEXT = process.env.AWS_LAMBDA_CLIENT_CONTEXT +var COGNITO_IDENTITY = process.env.AWS_LAMBDA_COGNITO_IDENTITY +var COGNITO_IDENTITY_ID = (tryParse(COGNITO_IDENTITY) || {}).identity_id +var COGNITO_IDENTITY_POOL_ID = (tryParse(COGNITO_IDENTITY) || {}).identity_pool_id +var DEADLINE_MS = Date.now() + (TIMEOUT * 1000) -function consoleLog(str) { - process.stderr.write(formatConsole(str)) -} - -function systemLog(str) { - process.stderr.write(formatSystem(str) + '\n') -} - -function systemErr(str) { - process.stderr.write(formatErr(str) + '\n') -} - -function handleResult(resultStr, cb) { - if (!process.stdout.write('\n' + resultStr + '\n')) { - process.stdout.once('drain', cb) - } else { - process.nextTick(cb) - } -} +process.on('SIGINT', () => process.exit(0)) // Don't think this can be done in the Docker image process.umask(2) @@ -49,8 +47,18 @@ process.env.AWS_REGION = REGION process.env.AWS_DEFAULT_REGION = REGION process.env._HANDLER = HANDLER +var mockServerProcess = child_process.spawn('/var/runtime/mockserver', { + stdio: ['pipe', 'inherit', 'inherit'], + env: Object.assign({ + DOCKER_LAMBDA_NO_BOOTSTRAP: 1, + DOCKER_LAMBDA_USE_STDIN: 1, + }, process.env) +}) +mockServerProcess.on('error', console.error) +mockServerProcess.stdin.end(EVENT_BODY) +mockServerProcess.unref() + var OPTIONS = { - initInvokeId: uuid(), invokeId: uuid(), handler: HANDLER, suppressInit: true, @@ -61,11 +69,12 @@ var OPTIONS = { }, eventBody: EVENT_BODY, contextObjects: { - // clientContext: '{}', - // cognitoIdentityId: undefined, - // cognitoPoolId: undefined, + clientContext: CLIENT_CONTEXT, + cognitoIdentityId: COGNITO_IDENTITY_ID, + cognitoPoolId: COGNITO_IDENTITY_POOL_ID, }, invokedFunctionArn: INVOKED_ARN, + 'x-amzn-trace-id': TRACE_ID } // Some weird spelling error in the source? @@ -73,70 +82,132 @@ OPTIONS.invokeid = OPTIONS.invokeId var invoked = false var errored = false -var start = null +var pingPromise = new Promise(resolve => ping(PING_RETRIES, resolve)) +var reportDonePromise = new Promise(resolve => resolve()) module.exports = { - initRuntime: function() { return OPTIONS }, - waitForInvoke: function(fn) { - if (invoked) return - systemLog('START RequestId: ' + OPTIONS.invokeId + ' Version: ' + VERSION) - start = process.hrtime() - invoked = true - fn(OPTIONS) + initRuntime: function () { return OPTIONS }, + waitForInvoke: function (cb) { + Promise.all([pingPromise, reportDonePromise]).then(() => { + http.get({ + hostname: '127.0.0.1', + port: 9001, + path: '/2018-06-01/runtime/invocation/next', + }, res => { + if (res.statusCode !== 200) { + console.error(`Mock server invocation/next returned a ${res.statusCode} response`) + return process.exit(1) + } + if (invoked) { + LOGS = '' + } + invoked = true + OPTIONS.invokeId = OPTIONS.initInvokeId = OPTIONS.invokeid = res.headers['lambda-runtime-aws-request-id'] + OPTIONS.invokedFunctionArn = res.headers['lambda-runtime-invoked-function-arn'] + OPTIONS['x-amzn-trace-id'] = res.headers['lambda-runtime-trace-id'] + DEADLINE_MS = +res.headers['lambda-runtime-deadline-ms'] + + OPTIONS.contextObjects.clientContext = res.headers['lambda-runtime-client-context'] + var cognitoIdentity = tryParse(res.headers['lambda-runtime-cognito-identity']) || {} + OPTIONS.contextObjects.cognitoIdentityId = cognitoIdentity.identity_id + OPTIONS.contextObjects.cognitoPoolId = cognitoIdentity.identity_pool_id + + LOG_TAIL = res.headers['docker-lambda-log-type'] === 'Tail' + + OPTIONS.eventBody = '' + res.setEncoding('utf8') + .on('data', data => OPTIONS.eventBody += data) + .on('end', () => cb(OPTIONS)) + .on('error', function (err) { + console.error(err) + process.exit(1) + }) + }).on('error', err => { + if (err.code === 'ECONNRESET') { + return process.exit(errored ? 1 : 0) + } + console.error(err) + process.exit(1) + }) + }) }, - reportRunning: function(invokeId) {}, // eslint-disable-line no-unused-vars - reportDone: function(invokeId, errType, resultStr) { + reportRunning: function (invokeId) { }, // eslint-disable-line no-unused-vars + reportDone: function (invokeId, errType, resultStr) { if (!invoked) return - var diffMs = hrTimeMs(process.hrtime(start)) - var billedMs = Math.min(100 * (Math.floor(diffMs / 100) + 1), TIMEOUT * 1000) - systemLog('END RequestId: ' + invokeId) - systemLog([ - 'REPORT RequestId: ' + invokeId, - 'Duration: ' + diffMs.toFixed(2) + ' ms', - 'Billed Duration: ' + billedMs + ' ms', - 'Memory Size: ' + MEM_SIZE + ' MB', - 'Max Memory Used: ' + Math.round(process.memoryUsage().rss / (1024 * 1024)) + ' MB', - '', - ].join('\t')) - - var exitCode = errored || errType ? 1 : 0 - if (typeof resultStr === 'string') { - handleResult(resultStr, function() { process.exit(exitCode) }) - } else { - process.exit(exitCode) - } + if (errType) errored = true + reportDonePromise = new Promise(resolve => { + http.request({ + method: 'POST', + hostname: '127.0.0.1', + port: 9001, + path: '/2018-06-01/runtime/invocation/' + invokeId + (errType == null ? '/response' : '/error'), + headers: LOG_TAIL ? { 'Docker-Lambda-Log-Result': newBuffer(LOGS).slice(-4096).toString('base64') } : {}, + }, res => { + if (res.statusCode !== 202) { + console.error(err || 'Got status code: ' + res.statusCode) + process.exit(1) + } + resolve() + }).on('error', err => { + console.error(err) + process.exit(1) + }).end(resultStr) + }) }, - reportFault: function(invokeId, msg, errName, errStack) { + reportFault: function (invokeId, msg, errName, errStack) { errored = true systemErr(msg + (errName ? ': ' + errName : '')) if (errStack) systemErr(errStack) }, - reportUserInitStart: function() {}, - reportUserInitEnd: function() {}, - reportUserInvokeStart: function() {}, - reportUserInvokeEnd: function() {}, - reportException: function() {}, - getRemainingTime: function() { - return (TIMEOUT * 1000) - Math.floor(hrTimeMs(process.hrtime(start))) - }, + reportUserInitStart: function () { }, + reportUserInitEnd: function () { }, + reportUserInvokeStart: function () { }, + reportUserInvokeEnd: function () { }, + reportException: function () { }, + getRemainingTime: function () { return DEADLINE_MS - Date.now() }, sendConsoleLogs: consoleLog, maxLoggerErrorSize: 256 * 1024, } -function formatConsole(str) { - return str.replace(/^[0-9TZ:.-]+\t[0-9a-f-]+\t/, '\u001b[34m$&\u001b[0m') +function ping(retries, cb) { + http.get({ hostname: '127.0.0.1', port: 9001, path: '/2018-06-01/runtime/ping' }, cb).on('error', () => { + if (!retries) { + console.error('Mock server did not respond to pings in time') + process.exit(1) + } + setTimeout(ping, 5, retries - 1, cb) + }) } -function formatSystem(str) { - return '\u001b[32m' + str + '\u001b[0m' +function tryParse(cognitoIdentity) { + try { + return JSON.parse(cognitoIdentity) + } catch (e) { + return null + } } -function formatErr(str) { - return '\u001b[31m' + str + '\u001b[0m' +function consoleLog(str) { + if (STAY_OPEN) { + if (LOG_TAIL) { + LOGS += str + } + process.stdout.write(str) + } else { + process.stderr.write(formatConsole(str)) + } +} + +function systemErr(str) { + process.stderr.write(formatErr(str) + '\n') +} + +function formatConsole(str) { + return str.replace(/^[0-9TZ:.-]+\t[0-9a-f-]+\t/, '\u001b[34m$&\u001b[0m') } -function hrTimeMs(hrtime) { - return (hrtime[0] * 1e9 + hrtime[1]) / 1e6 +function formatErr(str) { + return '\u001b[31m' + str + '\u001b[0m' } // Approximates the look of a v1 UUID @@ -155,3 +226,7 @@ function randomAccountId() { function arn(region, accountId, fnName) { return 'arn:aws:lambda:' + region + ':' + accountId.replace(/[^\d]/g, '') + ':function:' + fnName } + +function newBuffer(str) { + return HAS_BUFFER_FROM ? Buffer.from(str) : new Buffer(str) +} diff --git a/nodejs6.10/run/Dockerfile b/nodejs6.10/run/Dockerfile index 9f3d4028..280cce30 100644 --- a/nodejs6.10/run/Dockerfile +++ b/nodejs6.10/run/Dockerfile @@ -1,3 +1,6 @@ +FROM lambci/lambda:provided + + FROM lambci/lambda-base ENV PATH=/var/lang/bin:$PATH \ @@ -10,6 +13,8 @@ RUN rm -rf /var/runtime /var/lang && \ COPY awslambda-mock.js /var/runtime/node_modules/awslambda/build/Release/awslambda.js +COPY --from=0 /var/runtime/init /var/runtime/mockserver + USER sbx_user1051 ENTRYPOINT ["/var/lang/bin/node", "--expose-gc", "--max-executable-size=160", "--max-semi-space-size=150", "--max-old-space-size=2547", \ diff --git a/nodejs6.10/run/awslambda-mock.js b/nodejs6.10/run/awslambda-mock.js index 1d014d9e..f953acd9 100644 --- a/nodejs6.10/run/awslambda-mock.js +++ b/nodejs6.10/run/awslambda-mock.js @@ -1,5 +1,15 @@ var fs = require('fs') var crypto = require('crypto') +var http = require('http') +var child_process = require('child_process') + +var PING_RETRIES = 20 + +var LOGS = '' +var LOG_TAIL = false +var HAS_BUFFER_FROM = Buffer.from && Buffer.from !== Uint8Array.from + +var STAY_OPEN = process.env.DOCKER_LAMBDA_STAY_OPEN var HANDLER = process.argv[2] || process.env.AWS_LAMBDA_FUNCTION_HANDLER || process.env._HANDLER || 'index.handler' var EVENT_BODY = process.argv[3] || process.env.AWS_LAMBDA_EVENT_BODY || @@ -15,26 +25,14 @@ var ACCESS_KEY_ID = process.env.AWS_ACCESS_KEY_ID || 'SOME_ACCESS_KEY_ID' var SECRET_ACCESS_KEY = process.env.AWS_SECRET_ACCESS_KEY || 'SOME_SECRET_ACCESS_KEY' var SESSION_TOKEN = process.env.AWS_SESSION_TOKEN var INVOKED_ARN = process.env.AWS_LAMBDA_FUNCTION_INVOKED_ARN || arn(REGION, ACCOUNT_ID, FN_NAME) +var TRACE_ID = process.env._X_AMZN_TRACE_ID || 'root=1-5d9639c7-ac2df104a29f3070f507bdb4;sampled=0' +var CLIENT_CONTEXT = process.env.AWS_LAMBDA_CLIENT_CONTEXT +var COGNITO_IDENTITY = process.env.AWS_LAMBDA_COGNITO_IDENTITY +var COGNITO_IDENTITY_ID = (tryParse(COGNITO_IDENTITY) || {}).identity_id +var COGNITO_IDENTITY_POOL_ID = (tryParse(COGNITO_IDENTITY) || {}).identity_pool_id +var DEADLINE_MS = Date.now() + (TIMEOUT * 1000) -function consoleLog(str) { - process.stderr.write(formatConsole(str)) -} - -function systemLog(str) { - process.stderr.write(formatSystem(str) + '\n') -} - -function systemErr(str) { - process.stderr.write(formatErr(str) + '\n') -} - -function handleResult(resultStr, cb) { - if (!process.stdout.write('\n' + resultStr + '\n')) { - process.stdout.once('drain', cb) - } else { - process.nextTick(cb) - } -} +process.on('SIGINT', () => process.exit(0)) // Don't think this can be done in the Docker image process.umask(2) @@ -49,8 +47,18 @@ process.env.AWS_REGION = REGION process.env.AWS_DEFAULT_REGION = REGION process.env._HANDLER = HANDLER +var mockServerProcess = child_process.spawn('/var/runtime/mockserver', { + stdio: ['pipe', 'inherit', 'inherit'], + env: Object.assign({ + DOCKER_LAMBDA_NO_BOOTSTRAP: 1, + DOCKER_LAMBDA_USE_STDIN: 1, + }, process.env) +}) +mockServerProcess.on('error', console.error) +mockServerProcess.stdin.end(EVENT_BODY) +mockServerProcess.unref() + var OPTIONS = { - initInvokeId: uuid(), invokeId: uuid(), handler: HANDLER, suppressInit: true, @@ -61,11 +69,12 @@ var OPTIONS = { }, eventBody: EVENT_BODY, contextObjects: { - // clientContext: '{}', - // cognitoIdentityId: undefined, - // cognitoPoolId: undefined, + clientContext: CLIENT_CONTEXT, + cognitoIdentityId: COGNITO_IDENTITY_ID, + cognitoPoolId: COGNITO_IDENTITY_POOL_ID, }, invokedFunctionArn: INVOKED_ARN, + 'x-amzn-trace-id': TRACE_ID } // Some weird spelling error in the source? @@ -73,70 +82,132 @@ OPTIONS.invokeid = OPTIONS.invokeId var invoked = false var errored = false -var start = null +var pingPromise = new Promise(resolve => ping(PING_RETRIES, resolve)) +var reportDonePromise = new Promise(resolve => resolve()) module.exports = { - initRuntime: function() { return OPTIONS }, - waitForInvoke: function(fn) { - if (invoked) return - systemLog('START RequestId: ' + OPTIONS.invokeId + ' Version: ' + VERSION) - start = process.hrtime() - invoked = true - fn(OPTIONS) + initRuntime: function () { return OPTIONS }, + waitForInvoke: function (cb) { + Promise.all([pingPromise, reportDonePromise]).then(() => { + http.get({ + hostname: '127.0.0.1', + port: 9001, + path: '/2018-06-01/runtime/invocation/next', + }, res => { + if (res.statusCode !== 200) { + console.error(`Mock server invocation/next returned a ${res.statusCode} response`) + return process.exit(1) + } + if (invoked) { + LOGS = '' + } + invoked = true + OPTIONS.invokeId = OPTIONS.initInvokeId = OPTIONS.invokeid = res.headers['lambda-runtime-aws-request-id'] + OPTIONS.invokedFunctionArn = res.headers['lambda-runtime-invoked-function-arn'] + OPTIONS['x-amzn-trace-id'] = res.headers['lambda-runtime-trace-id'] + DEADLINE_MS = +res.headers['lambda-runtime-deadline-ms'] + + OPTIONS.contextObjects.clientContext = res.headers['lambda-runtime-client-context'] + var cognitoIdentity = tryParse(res.headers['lambda-runtime-cognito-identity']) || {} + OPTIONS.contextObjects.cognitoIdentityId = cognitoIdentity.identity_id + OPTIONS.contextObjects.cognitoPoolId = cognitoIdentity.identity_pool_id + + LOG_TAIL = res.headers['docker-lambda-log-type'] === 'Tail' + + OPTIONS.eventBody = '' + res.setEncoding('utf8') + .on('data', data => OPTIONS.eventBody += data) + .on('end', () => cb(OPTIONS)) + .on('error', function (err) { + console.error(err) + process.exit(1) + }) + }).on('error', err => { + if (err.code === 'ECONNRESET') { + return process.exit(errored ? 1 : 0) + } + console.error(err) + process.exit(1) + }) + }) }, - reportRunning: function(invokeId) {}, // eslint-disable-line no-unused-vars - reportDone: function(invokeId, errType, resultStr) { + reportRunning: function (invokeId) { }, // eslint-disable-line no-unused-vars + reportDone: function (invokeId, errType, resultStr) { if (!invoked) return - var diffMs = hrTimeMs(process.hrtime(start)) - var billedMs = Math.min(100 * (Math.floor(diffMs / 100) + 1), TIMEOUT * 1000) - systemLog('END RequestId: ' + invokeId) - systemLog([ - 'REPORT RequestId: ' + invokeId, - 'Duration: ' + diffMs.toFixed(2) + ' ms', - 'Billed Duration: ' + billedMs + ' ms', - 'Memory Size: ' + MEM_SIZE + ' MB', - 'Max Memory Used: ' + Math.round(process.memoryUsage().rss / (1024 * 1024)) + ' MB', - '', - ].join('\t')) - - var exitCode = errored || errType ? 1 : 0 - if (typeof resultStr === 'string') { - handleResult(resultStr, function() { process.exit(exitCode) }) - } else { - process.exit(exitCode) - } + if (errType) errored = true + reportDonePromise = new Promise(resolve => { + http.request({ + method: 'POST', + hostname: '127.0.0.1', + port: 9001, + path: '/2018-06-01/runtime/invocation/' + invokeId + (errType == null ? '/response' : '/error'), + headers: LOG_TAIL ? { 'Docker-Lambda-Log-Result': newBuffer(LOGS).slice(-4096).toString('base64') } : {}, + }, res => { + if (res.statusCode !== 202) { + console.error(err || 'Got status code: ' + res.statusCode) + process.exit(1) + } + resolve() + }).on('error', err => { + console.error(err) + process.exit(1) + }).end(resultStr) + }) }, - reportFault: function(invokeId, msg, errName, errStack) { + reportFault: function (invokeId, msg, errName, errStack) { errored = true systemErr(msg + (errName ? ': ' + errName : '')) if (errStack) systemErr(errStack) }, - reportUserInitStart: function() {}, - reportUserInitEnd: function() {}, - reportUserInvokeStart: function() {}, - reportUserInvokeEnd: function() {}, - reportException: function() {}, - getRemainingTime: function() { - return (TIMEOUT * 1000) - Math.floor(hrTimeMs(process.hrtime(start))) - }, + reportUserInitStart: function () { }, + reportUserInitEnd: function () { }, + reportUserInvokeStart: function () { }, + reportUserInvokeEnd: function () { }, + reportException: function () { }, + getRemainingTime: function () { return DEADLINE_MS - Date.now() }, sendConsoleLogs: consoleLog, maxLoggerErrorSize: 256 * 1024, } -function formatConsole(str) { - return str.replace(/^[0-9TZ:.-]+\t[0-9a-f-]+\t/, '\u001b[34m$&\u001b[0m') +function ping(retries, cb) { + http.get({ hostname: '127.0.0.1', port: 9001, path: '/2018-06-01/runtime/ping' }, cb).on('error', () => { + if (!retries) { + console.error('Mock server did not respond to pings in time') + process.exit(1) + } + setTimeout(ping, 5, retries - 1, cb) + }) } -function formatSystem(str) { - return '\u001b[32m' + str + '\u001b[0m' +function tryParse(cognitoIdentity) { + try { + return JSON.parse(cognitoIdentity) + } catch (e) { + return null + } } -function formatErr(str) { - return '\u001b[31m' + str + '\u001b[0m' +function consoleLog(str) { + if (STAY_OPEN) { + if (LOG_TAIL) { + LOGS += str + } + process.stdout.write(str) + } else { + process.stderr.write(formatConsole(str)) + } +} + +function systemErr(str) { + process.stderr.write(formatErr(str) + '\n') +} + +function formatConsole(str) { + return str.replace(/^[0-9TZ:.-]+\t[0-9a-f-]+\t/, '\u001b[34m$&\u001b[0m') } -function hrTimeMs(hrtime) { - return (hrtime[0] * 1e9 + hrtime[1]) / 1e6 +function formatErr(str) { + return '\u001b[31m' + str + '\u001b[0m' } // Approximates the look of a v1 UUID @@ -155,3 +226,7 @@ function randomAccountId() { function arn(region, accountId, fnName) { return 'arn:aws:lambda:' + region + ':' + accountId.replace(/[^\d]/g, '') + ':function:' + fnName } + +function newBuffer(str) { + return HAS_BUFFER_FROM ? Buffer.from(str) : new Buffer(str) +} diff --git a/nodejs8.10/run/Dockerfile b/nodejs8.10/run/Dockerfile index 10e21894..ff6b8f1c 100644 --- a/nodejs8.10/run/Dockerfile +++ b/nodejs8.10/run/Dockerfile @@ -1,3 +1,6 @@ +FROM lambci/lambda:provided + + FROM lambci/lambda-base ENV PATH=/var/lang/bin:/usr/local/bin:/usr/bin/:/bin:/opt/bin \ @@ -10,6 +13,8 @@ RUN rm -rf /var/runtime /var/lang && \ COPY awslambda-mock.js /var/runtime/node_modules/awslambda/build/Release/awslambda.js +COPY --from=0 /var/runtime/init /var/runtime/mockserver + USER sbx_user1051 ENTRYPOINT ["/var/lang/bin/node", "--expose-gc", "--max-semi-space-size=150", "--max-old-space-size=2707", \ diff --git a/nodejs8.10/run/awslambda-mock.js b/nodejs8.10/run/awslambda-mock.js index 1d014d9e..f953acd9 100644 --- a/nodejs8.10/run/awslambda-mock.js +++ b/nodejs8.10/run/awslambda-mock.js @@ -1,5 +1,15 @@ var fs = require('fs') var crypto = require('crypto') +var http = require('http') +var child_process = require('child_process') + +var PING_RETRIES = 20 + +var LOGS = '' +var LOG_TAIL = false +var HAS_BUFFER_FROM = Buffer.from && Buffer.from !== Uint8Array.from + +var STAY_OPEN = process.env.DOCKER_LAMBDA_STAY_OPEN var HANDLER = process.argv[2] || process.env.AWS_LAMBDA_FUNCTION_HANDLER || process.env._HANDLER || 'index.handler' var EVENT_BODY = process.argv[3] || process.env.AWS_LAMBDA_EVENT_BODY || @@ -15,26 +25,14 @@ var ACCESS_KEY_ID = process.env.AWS_ACCESS_KEY_ID || 'SOME_ACCESS_KEY_ID' var SECRET_ACCESS_KEY = process.env.AWS_SECRET_ACCESS_KEY || 'SOME_SECRET_ACCESS_KEY' var SESSION_TOKEN = process.env.AWS_SESSION_TOKEN var INVOKED_ARN = process.env.AWS_LAMBDA_FUNCTION_INVOKED_ARN || arn(REGION, ACCOUNT_ID, FN_NAME) +var TRACE_ID = process.env._X_AMZN_TRACE_ID || 'root=1-5d9639c7-ac2df104a29f3070f507bdb4;sampled=0' +var CLIENT_CONTEXT = process.env.AWS_LAMBDA_CLIENT_CONTEXT +var COGNITO_IDENTITY = process.env.AWS_LAMBDA_COGNITO_IDENTITY +var COGNITO_IDENTITY_ID = (tryParse(COGNITO_IDENTITY) || {}).identity_id +var COGNITO_IDENTITY_POOL_ID = (tryParse(COGNITO_IDENTITY) || {}).identity_pool_id +var DEADLINE_MS = Date.now() + (TIMEOUT * 1000) -function consoleLog(str) { - process.stderr.write(formatConsole(str)) -} - -function systemLog(str) { - process.stderr.write(formatSystem(str) + '\n') -} - -function systemErr(str) { - process.stderr.write(formatErr(str) + '\n') -} - -function handleResult(resultStr, cb) { - if (!process.stdout.write('\n' + resultStr + '\n')) { - process.stdout.once('drain', cb) - } else { - process.nextTick(cb) - } -} +process.on('SIGINT', () => process.exit(0)) // Don't think this can be done in the Docker image process.umask(2) @@ -49,8 +47,18 @@ process.env.AWS_REGION = REGION process.env.AWS_DEFAULT_REGION = REGION process.env._HANDLER = HANDLER +var mockServerProcess = child_process.spawn('/var/runtime/mockserver', { + stdio: ['pipe', 'inherit', 'inherit'], + env: Object.assign({ + DOCKER_LAMBDA_NO_BOOTSTRAP: 1, + DOCKER_LAMBDA_USE_STDIN: 1, + }, process.env) +}) +mockServerProcess.on('error', console.error) +mockServerProcess.stdin.end(EVENT_BODY) +mockServerProcess.unref() + var OPTIONS = { - initInvokeId: uuid(), invokeId: uuid(), handler: HANDLER, suppressInit: true, @@ -61,11 +69,12 @@ var OPTIONS = { }, eventBody: EVENT_BODY, contextObjects: { - // clientContext: '{}', - // cognitoIdentityId: undefined, - // cognitoPoolId: undefined, + clientContext: CLIENT_CONTEXT, + cognitoIdentityId: COGNITO_IDENTITY_ID, + cognitoPoolId: COGNITO_IDENTITY_POOL_ID, }, invokedFunctionArn: INVOKED_ARN, + 'x-amzn-trace-id': TRACE_ID } // Some weird spelling error in the source? @@ -73,70 +82,132 @@ OPTIONS.invokeid = OPTIONS.invokeId var invoked = false var errored = false -var start = null +var pingPromise = new Promise(resolve => ping(PING_RETRIES, resolve)) +var reportDonePromise = new Promise(resolve => resolve()) module.exports = { - initRuntime: function() { return OPTIONS }, - waitForInvoke: function(fn) { - if (invoked) return - systemLog('START RequestId: ' + OPTIONS.invokeId + ' Version: ' + VERSION) - start = process.hrtime() - invoked = true - fn(OPTIONS) + initRuntime: function () { return OPTIONS }, + waitForInvoke: function (cb) { + Promise.all([pingPromise, reportDonePromise]).then(() => { + http.get({ + hostname: '127.0.0.1', + port: 9001, + path: '/2018-06-01/runtime/invocation/next', + }, res => { + if (res.statusCode !== 200) { + console.error(`Mock server invocation/next returned a ${res.statusCode} response`) + return process.exit(1) + } + if (invoked) { + LOGS = '' + } + invoked = true + OPTIONS.invokeId = OPTIONS.initInvokeId = OPTIONS.invokeid = res.headers['lambda-runtime-aws-request-id'] + OPTIONS.invokedFunctionArn = res.headers['lambda-runtime-invoked-function-arn'] + OPTIONS['x-amzn-trace-id'] = res.headers['lambda-runtime-trace-id'] + DEADLINE_MS = +res.headers['lambda-runtime-deadline-ms'] + + OPTIONS.contextObjects.clientContext = res.headers['lambda-runtime-client-context'] + var cognitoIdentity = tryParse(res.headers['lambda-runtime-cognito-identity']) || {} + OPTIONS.contextObjects.cognitoIdentityId = cognitoIdentity.identity_id + OPTIONS.contextObjects.cognitoPoolId = cognitoIdentity.identity_pool_id + + LOG_TAIL = res.headers['docker-lambda-log-type'] === 'Tail' + + OPTIONS.eventBody = '' + res.setEncoding('utf8') + .on('data', data => OPTIONS.eventBody += data) + .on('end', () => cb(OPTIONS)) + .on('error', function (err) { + console.error(err) + process.exit(1) + }) + }).on('error', err => { + if (err.code === 'ECONNRESET') { + return process.exit(errored ? 1 : 0) + } + console.error(err) + process.exit(1) + }) + }) }, - reportRunning: function(invokeId) {}, // eslint-disable-line no-unused-vars - reportDone: function(invokeId, errType, resultStr) { + reportRunning: function (invokeId) { }, // eslint-disable-line no-unused-vars + reportDone: function (invokeId, errType, resultStr) { if (!invoked) return - var diffMs = hrTimeMs(process.hrtime(start)) - var billedMs = Math.min(100 * (Math.floor(diffMs / 100) + 1), TIMEOUT * 1000) - systemLog('END RequestId: ' + invokeId) - systemLog([ - 'REPORT RequestId: ' + invokeId, - 'Duration: ' + diffMs.toFixed(2) + ' ms', - 'Billed Duration: ' + billedMs + ' ms', - 'Memory Size: ' + MEM_SIZE + ' MB', - 'Max Memory Used: ' + Math.round(process.memoryUsage().rss / (1024 * 1024)) + ' MB', - '', - ].join('\t')) - - var exitCode = errored || errType ? 1 : 0 - if (typeof resultStr === 'string') { - handleResult(resultStr, function() { process.exit(exitCode) }) - } else { - process.exit(exitCode) - } + if (errType) errored = true + reportDonePromise = new Promise(resolve => { + http.request({ + method: 'POST', + hostname: '127.0.0.1', + port: 9001, + path: '/2018-06-01/runtime/invocation/' + invokeId + (errType == null ? '/response' : '/error'), + headers: LOG_TAIL ? { 'Docker-Lambda-Log-Result': newBuffer(LOGS).slice(-4096).toString('base64') } : {}, + }, res => { + if (res.statusCode !== 202) { + console.error(err || 'Got status code: ' + res.statusCode) + process.exit(1) + } + resolve() + }).on('error', err => { + console.error(err) + process.exit(1) + }).end(resultStr) + }) }, - reportFault: function(invokeId, msg, errName, errStack) { + reportFault: function (invokeId, msg, errName, errStack) { errored = true systemErr(msg + (errName ? ': ' + errName : '')) if (errStack) systemErr(errStack) }, - reportUserInitStart: function() {}, - reportUserInitEnd: function() {}, - reportUserInvokeStart: function() {}, - reportUserInvokeEnd: function() {}, - reportException: function() {}, - getRemainingTime: function() { - return (TIMEOUT * 1000) - Math.floor(hrTimeMs(process.hrtime(start))) - }, + reportUserInitStart: function () { }, + reportUserInitEnd: function () { }, + reportUserInvokeStart: function () { }, + reportUserInvokeEnd: function () { }, + reportException: function () { }, + getRemainingTime: function () { return DEADLINE_MS - Date.now() }, sendConsoleLogs: consoleLog, maxLoggerErrorSize: 256 * 1024, } -function formatConsole(str) { - return str.replace(/^[0-9TZ:.-]+\t[0-9a-f-]+\t/, '\u001b[34m$&\u001b[0m') +function ping(retries, cb) { + http.get({ hostname: '127.0.0.1', port: 9001, path: '/2018-06-01/runtime/ping' }, cb).on('error', () => { + if (!retries) { + console.error('Mock server did not respond to pings in time') + process.exit(1) + } + setTimeout(ping, 5, retries - 1, cb) + }) } -function formatSystem(str) { - return '\u001b[32m' + str + '\u001b[0m' +function tryParse(cognitoIdentity) { + try { + return JSON.parse(cognitoIdentity) + } catch (e) { + return null + } } -function formatErr(str) { - return '\u001b[31m' + str + '\u001b[0m' +function consoleLog(str) { + if (STAY_OPEN) { + if (LOG_TAIL) { + LOGS += str + } + process.stdout.write(str) + } else { + process.stderr.write(formatConsole(str)) + } +} + +function systemErr(str) { + process.stderr.write(formatErr(str) + '\n') +} + +function formatConsole(str) { + return str.replace(/^[0-9TZ:.-]+\t[0-9a-f-]+\t/, '\u001b[34m$&\u001b[0m') } -function hrTimeMs(hrtime) { - return (hrtime[0] * 1e9 + hrtime[1]) / 1e6 +function formatErr(str) { + return '\u001b[31m' + str + '\u001b[0m' } // Approximates the look of a v1 UUID @@ -155,3 +226,7 @@ function randomAccountId() { function arn(region, accountId, fnName) { return 'arn:aws:lambda:' + region + ':' + accountId.replace(/[^\d]/g, '') + ':function:' + fnName } + +function newBuffer(str) { + return HAS_BUFFER_FROM ? Buffer.from(str) : new Buffer(str) +} From 871ecc01a72aea44bb601ad9e775c3defd81522e Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Fri, 18 Oct 2019 11:38:53 -0400 Subject: [PATCH 080/271] Add Lambda API support to python2.7/3.6 runtimes --- python2.7/run/Dockerfile | 7 +- python2.7/run/runtime-mock.py | 174 ---------------------- python2.7/run/runtime_mock.py | 262 ++++++++++++++++++++++++++++++++++ python3.6/run/Dockerfile | 7 +- python3.6/run/runtime-mock.py | 174 ---------------------- python3.6/run/runtime_mock.py | 262 ++++++++++++++++++++++++++++++++++ 6 files changed, 536 insertions(+), 350 deletions(-) delete mode 100644 python2.7/run/runtime-mock.py create mode 100644 python2.7/run/runtime_mock.py delete mode 100644 python3.6/run/runtime-mock.py create mode 100644 python3.6/run/runtime_mock.py diff --git a/python2.7/run/Dockerfile b/python2.7/run/Dockerfile index 17e68bd4..d90f8827 100644 --- a/python2.7/run/Dockerfile +++ b/python2.7/run/Dockerfile @@ -1,3 +1,6 @@ +FROM lambci/lambda:provided + + FROM lambci/lambda-base ENV AWS_EXECUTION_ENV=AWS_Lambda_python2.7 @@ -6,7 +9,9 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/python2.7.tgz | tar -zx -C / RUN rm /var/runtime/awslambda/runtime.so -COPY runtime-mock.py /var/runtime/awslambda/runtime.py +COPY runtime_mock.py /var/runtime/awslambda/runtime.py + +COPY --from=0 /var/runtime/init /var/runtime/mockserver USER sbx_user1051 diff --git a/python2.7/run/runtime-mock.py b/python2.7/run/runtime-mock.py deleted file mode 100644 index fc590f8a..00000000 --- a/python2.7/run/runtime-mock.py +++ /dev/null @@ -1,174 +0,0 @@ -from __future__ import print_function -import sys -import os -import random -import uuid -import time -import resource -import datetime - -orig_stdout = sys.stdout -orig_stderr = sys.stderr - -def eprint(*args, **kwargs): - print(*args, file=orig_stderr, **kwargs) - -def _random_account_id(): - return random.randint(100000000000, 999999999999) - -def _random_invoke_id(): - return str(uuid.uuid4()) - -def _arn(region, account_id, fct_name): - return 'arn:aws:lambda:%s:%s:function:%s' % (region, account_id, fct_name) - -_GLOBAL_HANDLER = sys.argv[1] if len(sys.argv) > 1 else os.environ.get('AWS_LAMBDA_FUNCTION_HANDLER', - os.environ.get('_HANDLER', 'lambda_function.lambda_handler')) -_GLOBAL_EVENT_BODY = sys.argv[2] if len(sys.argv) > 2 else os.environ.get('AWS_LAMBDA_EVENT_BODY', - (sys.stdin.read() if os.environ.get('DOCKER_LAMBDA_USE_STDIN', False) else '{}')) -_GLOBAL_FCT_NAME = os.environ.get('AWS_LAMBDA_FUNCTION_NAME', 'test') -_GLOBAL_VERSION = os.environ.get('AWS_LAMBDA_FUNCTION_VERSION', '$LATEST') -_GLOBAL_MEM_SIZE = os.environ.get('AWS_LAMBDA_FUNCTION_MEMORY_SIZE', '1536') -_GLOBAL_TIMEOUT = int(os.environ.get('AWS_LAMBDA_FUNCTION_TIMEOUT', '300')) -_GLOBAL_REGION = os.environ.get('AWS_REGION', os.environ.get('AWS_DEFAULT_REGION', 'us-east-1')) -_GLOBAL_ACCOUNT_ID = os.environ.get('AWS_ACCOUNT_ID', _random_account_id()) -_GLOBAL_ACCESS_KEY_ID = os.environ.get('AWS_ACCESS_KEY_ID', 'SOME_ACCESS_KEY_ID') -_GLOBAL_SECRET_ACCESS_KEY = os.environ.get('AWS_SECRET_ACCESS_KEY', 'SOME_SECRET_ACCESS_KEY') -_GLOBAL_SESSION_TOKEN = os.environ.get('AWS_SESSION_TOKEN', None) - -_GLOBAL_INVOKEID = _random_invoke_id() -_GLOBAL_MODE = 'event' # Either 'http' or 'event' -_GLOBAL_SUPRESS_INIT = True # Forces calling _get_handlers_delayed() -_GLOBAL_DATA_SOCK = -1 -_GLOBAL_CONTEXT_OBJS = { - 'clientcontext': None, - 'cognitoidentityid': None, - 'cognitopoolid': None, -} -_GLOBAL_CREDENTIALS = { - 'key': _GLOBAL_ACCESS_KEY_ID, - 'secret': _GLOBAL_SECRET_ACCESS_KEY, - 'session': _GLOBAL_SESSION_TOKEN -} -_GLOBAL_INVOKED_FUNCTION_ARN = os.environ.get('AWS_LAMBDA_FUNCTION_INVOKED_ARN', _arn(_GLOBAL_REGION, _GLOBAL_ACCOUNT_ID, _GLOBAL_FCT_NAME)) -_GLOBAL_XRAY_TRACE_ID = os.environ.get('_X_AMZN_TRACE_ID', None) -_GLOBAL_XRAY_PARENT_ID = None -_GLOBAL_XRAY_SAMPLED = None -_GLOBAL_X_AMZN_TRACE_ID = None -_GLOBAL_INVOKED = False -_GLOBAL_ERRORED = False -_GLOBAL_START_TIME = None -_GLOBAL_TODAY = datetime.date.today() -# export needed stuff -os.environ['AWS_LAMBDA_LOG_GROUP_NAME'] = '/aws/lambda/%s' % _GLOBAL_FCT_NAME -os.environ['AWS_LAMBDA_LOG_STREAM_NAME'] = "%s/%s/%s/[%s]%s" % ( - _GLOBAL_TODAY.year, - _GLOBAL_TODAY.month, - _GLOBAL_TODAY.day, - _GLOBAL_VERSION, - '%016x' % random.randrange(16**16) - ) -os.environ["AWS_LAMBDA_FUNCTION_NAME"] = _GLOBAL_FCT_NAME -os.environ['AWS_LAMBDA_FUNCTION_MEMORY_SIZE'] = _GLOBAL_MEM_SIZE -os.environ['AWS_LAMBDA_FUNCTION_VERSION'] = _GLOBAL_VERSION -os.environ['AWS_REGION'] = _GLOBAL_REGION -os.environ['AWS_DEFAULT_REGION'] = _GLOBAL_REGION -os.environ['_HANDLER'] = _GLOBAL_HANDLER - -def report_user_init_start(): - return - -def report_user_init_end(): - return - -def report_user_invoke_start(): - return - -def report_user_invoke_end(): - return - -def receive_start(): - sys.stdout = orig_stderr - sys.stderr = orig_stderr - return ( - _GLOBAL_INVOKEID, - _GLOBAL_MODE, - _GLOBAL_HANDLER, - _GLOBAL_SUPRESS_INIT, - _GLOBAL_CREDENTIALS - ) - -def report_running(invokeid): - return - -def receive_invoke(): - global _GLOBAL_INVOKED - global _GLOBAL_START_TIME - - if not _GLOBAL_INVOKED: - eprint( - "START RequestId: %s Version: %s" % - (_GLOBAL_INVOKEID, _GLOBAL_VERSION) - ) - _GLOBAL_INVOKED = True - _GLOBAL_START_TIME = time.time() - - return ( - _GLOBAL_INVOKEID, - _GLOBAL_DATA_SOCK, - _GLOBAL_CREDENTIALS, - _GLOBAL_EVENT_BODY, - _GLOBAL_CONTEXT_OBJS, - _GLOBAL_INVOKED_FUNCTION_ARN, - _GLOBAL_XRAY_TRACE_ID, - ) - -def report_fault(invokeid, msg, except_value, trace): - global _GLOBAL_ERRORED - - _GLOBAL_ERRORED = True - - if msg and except_value: - eprint('%s: %s' % (msg, except_value)) - if trace: - eprint('%s' % trace) - return - -def report_done(invokeid, errortype, result, is_fatal): - global _GLOBAL_INVOKED - global _GLOBAL_ERRORED - - if _GLOBAL_INVOKED: - eprint("END RequestId: %s" % invokeid) - - duration = int((time.time() - _GLOBAL_START_TIME) * 1000) - billed_duration = min(100 * int((duration / 100) + 1), _GLOBAL_TIMEOUT * 1000) - max_mem = int(resource.getrusage(resource.RUSAGE_SELF).ru_maxrss / 1024) - - eprint( - "REPORT RequestId: %s Duration: %s ms Billed Duration: %s ms Memory Size: %s MB Max Memory Used: %s MB" % ( - invokeid, duration, billed_duration, _GLOBAL_MEM_SIZE, max_mem - ) - ) - if result: - print('\n' + result, file=orig_stdout) - sys.exit(1 if _GLOBAL_ERRORED else 0) - else: - return - -def report_xray_exception(xray_json): - return - -def log_bytes(msg, fileno): - eprint(msg) - return - -def log_sb(msg): - return - -def get_remaining_time(): - return ((_GLOBAL_TIMEOUT * 1000) - int((time.time() - _GLOBAL_START_TIME) * 1000)) - -def send_console_message(msg, byte_length): - eprint(msg) - return diff --git a/python2.7/run/runtime_mock.py b/python2.7/run/runtime_mock.py new file mode 100644 index 00000000..1a7a4742 --- /dev/null +++ b/python2.7/run/runtime_mock.py @@ -0,0 +1,262 @@ +# pylint: disable=missing-docstring, global-statement, unused-argument, broad-except + +from __future__ import print_function +import sys +import os +import random +import uuid +import time +import datetime +import subprocess +import json +import traceback +import base64 +import signal +try: + # for python 3 + from http.client import HTTPConnection +except ImportError: + # for python 2 + from httplib import HTTPConnection + + +signal.signal(signal.SIGINT, lambda x, y: sys.exit(0)) + +ORIG_STDOUT = sys.stdout +ORIG_STDERR = sys.stderr + +LOGS = '' +LOG_TAIL = False + +STAY_OPEN = os.environ.get('DOCKER_LAMBDA_STAY_OPEN', '') + +HANDLER = sys.argv[1] if len(sys.argv) > 1 else os.environ.get('AWS_LAMBDA_FUNCTION_HANDLER', \ + os.environ.get('_HANDLER', 'lambda_function.lambda_handler')) +EVENT_BODY = sys.argv[2] if len(sys.argv) > 2 else os.environ.get('AWS_LAMBDA_EVENT_BODY', \ + (sys.stdin.read() if os.environ.get('DOCKER_LAMBDA_USE_STDIN', False) else '{}')) +FUNCTION_NAME = os.environ.get('AWS_LAMBDA_FUNCTION_NAME', 'test') +FUNCTION_VERSION = os.environ.get('AWS_LAMBDA_FUNCTION_VERSION', '$LATEST') +MEM_SIZE = os.environ.get('AWS_LAMBDA_FUNCTION_MEMORY_SIZE', '1536') +DEADLINE_MS = int(time.time() * 1000) + int(os.environ.get('AWS_LAMBDA_FUNCTION_TIMEOUT', '300')) +REGION = os.environ.get('AWS_REGION', os.environ.get('AWS_DEFAULT_REGION', 'us-east-1')) +ACCOUNT_ID = os.environ.get('AWS_ACCOUNT_ID', random.randint(100000000000, 999999999999)) +ACCESS_KEY_ID = os.environ.get('AWS_ACCESS_KEY_ID', 'SOME_ACCESS_KEY_ID') +SECRET_ACCESS_KEY = os.environ.get('AWS_SECRET_ACCESS_KEY', 'SOME_SECRET_ACCESS_KEY') +SESSION_TOKEN = os.environ.get('AWS_SESSION_TOKEN', None) + +INVOKEID = str(uuid.uuid4()) +INVOKE_MODE = 'event' # Either 'http' or 'event' +SUPPRESS_INIT = True # Forces calling _get_handlers_delayed() +DATA_SOCK = -1 +CONTEXT_OBJS = { + 'clientcontext': None, + 'cognitoidentityid': None, + 'cognitopoolid': None, +} +CREDENTIALS = { + 'key': ACCESS_KEY_ID, + 'secret': SECRET_ACCESS_KEY, + 'session': SESSION_TOKEN +} +INVOKED_FUNCTION_ARN = os.environ.get('AWS_LAMBDA_FUNCTION_INVOKED_ARN', \ + 'arn:aws:lambda:%s:%s:function:%s' % (REGION, ACCOUNT_ID, FUNCTION_NAME)) +XRAY_TRACE_ID = os.environ.get('_X_AMZN_TRACE_ID', None) +XRAY_PARENT_ID = None +XRAY_SAMPLED = None +TRACE_ID = None +INVOKED = False +ERRORED = False +TODAY = datetime.date.today() +# export needed stuff +os.environ['AWS_LAMBDA_LOG_GROUP_NAME'] = '/aws/lambda/%s' % FUNCTION_NAME +os.environ['AWS_LAMBDA_LOG_STREAM_NAME'] = "%s/%s/%s/[%s]%s" % ( + TODAY.year, + TODAY.month, + TODAY.day, + FUNCTION_VERSION, + '%016x' % random.randrange(16**16) +) +os.environ["AWS_LAMBDA_FUNCTION_NAME"] = FUNCTION_NAME +os.environ['AWS_LAMBDA_FUNCTION_MEMORY_SIZE'] = MEM_SIZE +os.environ['AWS_LAMBDA_FUNCTION_VERSION'] = FUNCTION_VERSION +os.environ['AWS_REGION'] = REGION +os.environ['AWS_DEFAULT_REGION'] = REGION +os.environ['_HANDLER'] = HANDLER + +MOCKSERVER_ENV = os.environ.copy() +MOCKSERVER_ENV['DOCKER_LAMBDA_NO_BOOTSTRAP'] = '1' +MOCKSERVER_ENV['DOCKER_LAMBDA_USE_STDIN'] = '1' + +MOCKSERVER_PROCESS = subprocess.Popen( + '/var/runtime/mockserver', stdin=subprocess.PIPE, env=MOCKSERVER_ENV) +MOCKSERVER_PROCESS.stdin.write(EVENT_BODY.encode()) +MOCKSERVER_PROCESS.stdin.close() + +MOCKSERVER_CONN = HTTPConnection("127.0.0.1", 9001) + + +def eprint(*args, **kwargs): + print(*args, file=ORIG_STDERR, **kwargs) + + +def report_user_init_start(): + return + + +def report_user_init_end(): + return + + +def report_user_invoke_start(): + return + + +def report_user_invoke_end(): + return + + +def receive_start(): + global MOCKSERVER_CONN + + for retry in range(20): + try: + MOCKSERVER_CONN = HTTPConnection("127.0.0.1", 9001) + MOCKSERVER_CONN.request("GET", "/2018-06-01/ping") + resp = MOCKSERVER_CONN.getresponse() + if resp.status != 200: + raise Exception("Mock server returned %d" % resp.status) + resp.read() + break + except Exception: + if retry >= 19: + raise + else: + time.sleep(.005) + continue + return ( + INVOKEID, + INVOKE_MODE, + HANDLER, + SUPPRESS_INIT, + CREDENTIALS + ) + + +def report_running(invokeid): + return + + +def receive_invoke(): + global INVOKED + global INVOKEID + global DEADLINE_MS + global INVOKED_FUNCTION_ARN + global XRAY_TRACE_ID + global EVENT_BODY + global CONTEXT_OBJS + global LOGS + global LOG_TAIL + + try: + MOCKSERVER_CONN.request("GET", "/2018-06-01/runtime/invocation/next") + resp = MOCKSERVER_CONN.getresponse() + if resp.status != 200: + raise Exception("/invocation/next return status %d" % resp.status) + except Exception: + if INVOKED and not STAY_OPEN: + sys.exit(1 if ERRORED else 0) + return () + raise + + if INVOKED: + LOGS = "" + + INVOKED = True + + INVOKEID = resp.getheader('Lambda-Runtime-Aws-Request-Id') + DEADLINE_MS = resp.getheader('Lambda-Runtime-Deadline-Ms') + INVOKED_FUNCTION_ARN = resp.getheader( + 'Lambda-Runtime-Invoked-Function-Arn') + XRAY_TRACE_ID = resp.getheader('Lambda-Runtime-Trace-Id') + cognito_identity = json.loads(resp.getheader( + 'Lambda-Runtime-Cognito-Identity', '{}')) + CONTEXT_OBJS['cognitoidentityid'] = cognito_identity.get('identity_id') + CONTEXT_OBJS['cognitopoolid'] = cognito_identity.get('identity_pool_id') + CONTEXT_OBJS['clientcontext'] = resp.getheader( + 'Lambda-Runtime-Client-Context') + + LOG_TAIL = resp.getheader('docker-lambda-log-type') == 'Tail' + + EVENT_BODY = resp.read() + + return ( + INVOKEID, + DATA_SOCK, + CREDENTIALS, + EVENT_BODY, + CONTEXT_OBJS, + INVOKED_FUNCTION_ARN, + XRAY_TRACE_ID, + ) + + +def report_fault(invokeid, msg, except_value, trace): + global ERRORED + + ERRORED = True + + if msg and except_value: + eprint('%s: %s' % (msg, except_value)) + if trace: + eprint('%s' % trace) + + +def report_done(invokeid, errortype, result, is_fatal): + global ERRORED + + if not INVOKED: + return + + if errortype is not None: + ERRORED = True + result_obj = json.loads(result) + stack_trace = result_obj.get('stackTrace') + if stack_trace is not None: + result_obj['stackTrace'] = traceback.format_list(stack_trace) + result = json.dumps(result_obj) + + headers = {"Docker-Lambda-Log-Result": base64.b64encode(LOGS.encode())} if LOG_TAIL else {} + + MOCKSERVER_CONN.request("POST", "/2018-06-01/runtime/invocation/%s/%s" % \ + (invokeid, "response" if errortype is None else "error"), result, headers) + resp = MOCKSERVER_CONN.getresponse() + if resp.status != 202: + raise Exception("/invocation/response return status %d" % resp.status) + resp.read() + + +def report_xray_exception(xray_json): + return + + +def log_bytes(msg, fileno): + global LOGS + + if STAY_OPEN: + if LOG_TAIL: + LOGS += msg + (ORIG_STDOUT if fileno == 1 else ORIG_STDERR).write(msg) + else: + ORIG_STDERR.write(msg) + + +def log_sb(msg): + return + + +def get_remaining_time(): + return DEADLINE_MS - int(time.time() * 1000) + + +def send_console_message(msg, byte_length): + log_bytes(msg + '\n', 1) diff --git a/python3.6/run/Dockerfile b/python3.6/run/Dockerfile index b894c7e3..86dcdfe0 100644 --- a/python3.6/run/Dockerfile +++ b/python3.6/run/Dockerfile @@ -1,3 +1,6 @@ +FROM lambci/lambda:provided + + FROM lambci/lambda-base ENV PATH=/var/lang/bin:$PATH \ @@ -8,7 +11,9 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/python3.6.tgz | tar -zx -C / RUN rm /var/runtime/awslambda/runtime.cpython-36m-x86_64-linux-gnu.so -COPY runtime-mock.py /var/runtime/awslambda/runtime.py +COPY runtime_mock.py /var/runtime/awslambda/runtime.py + +COPY --from=0 /var/runtime/init /var/runtime/mockserver USER sbx_user1051 diff --git a/python3.6/run/runtime-mock.py b/python3.6/run/runtime-mock.py deleted file mode 100644 index fc590f8a..00000000 --- a/python3.6/run/runtime-mock.py +++ /dev/null @@ -1,174 +0,0 @@ -from __future__ import print_function -import sys -import os -import random -import uuid -import time -import resource -import datetime - -orig_stdout = sys.stdout -orig_stderr = sys.stderr - -def eprint(*args, **kwargs): - print(*args, file=orig_stderr, **kwargs) - -def _random_account_id(): - return random.randint(100000000000, 999999999999) - -def _random_invoke_id(): - return str(uuid.uuid4()) - -def _arn(region, account_id, fct_name): - return 'arn:aws:lambda:%s:%s:function:%s' % (region, account_id, fct_name) - -_GLOBAL_HANDLER = sys.argv[1] if len(sys.argv) > 1 else os.environ.get('AWS_LAMBDA_FUNCTION_HANDLER', - os.environ.get('_HANDLER', 'lambda_function.lambda_handler')) -_GLOBAL_EVENT_BODY = sys.argv[2] if len(sys.argv) > 2 else os.environ.get('AWS_LAMBDA_EVENT_BODY', - (sys.stdin.read() if os.environ.get('DOCKER_LAMBDA_USE_STDIN', False) else '{}')) -_GLOBAL_FCT_NAME = os.environ.get('AWS_LAMBDA_FUNCTION_NAME', 'test') -_GLOBAL_VERSION = os.environ.get('AWS_LAMBDA_FUNCTION_VERSION', '$LATEST') -_GLOBAL_MEM_SIZE = os.environ.get('AWS_LAMBDA_FUNCTION_MEMORY_SIZE', '1536') -_GLOBAL_TIMEOUT = int(os.environ.get('AWS_LAMBDA_FUNCTION_TIMEOUT', '300')) -_GLOBAL_REGION = os.environ.get('AWS_REGION', os.environ.get('AWS_DEFAULT_REGION', 'us-east-1')) -_GLOBAL_ACCOUNT_ID = os.environ.get('AWS_ACCOUNT_ID', _random_account_id()) -_GLOBAL_ACCESS_KEY_ID = os.environ.get('AWS_ACCESS_KEY_ID', 'SOME_ACCESS_KEY_ID') -_GLOBAL_SECRET_ACCESS_KEY = os.environ.get('AWS_SECRET_ACCESS_KEY', 'SOME_SECRET_ACCESS_KEY') -_GLOBAL_SESSION_TOKEN = os.environ.get('AWS_SESSION_TOKEN', None) - -_GLOBAL_INVOKEID = _random_invoke_id() -_GLOBAL_MODE = 'event' # Either 'http' or 'event' -_GLOBAL_SUPRESS_INIT = True # Forces calling _get_handlers_delayed() -_GLOBAL_DATA_SOCK = -1 -_GLOBAL_CONTEXT_OBJS = { - 'clientcontext': None, - 'cognitoidentityid': None, - 'cognitopoolid': None, -} -_GLOBAL_CREDENTIALS = { - 'key': _GLOBAL_ACCESS_KEY_ID, - 'secret': _GLOBAL_SECRET_ACCESS_KEY, - 'session': _GLOBAL_SESSION_TOKEN -} -_GLOBAL_INVOKED_FUNCTION_ARN = os.environ.get('AWS_LAMBDA_FUNCTION_INVOKED_ARN', _arn(_GLOBAL_REGION, _GLOBAL_ACCOUNT_ID, _GLOBAL_FCT_NAME)) -_GLOBAL_XRAY_TRACE_ID = os.environ.get('_X_AMZN_TRACE_ID', None) -_GLOBAL_XRAY_PARENT_ID = None -_GLOBAL_XRAY_SAMPLED = None -_GLOBAL_X_AMZN_TRACE_ID = None -_GLOBAL_INVOKED = False -_GLOBAL_ERRORED = False -_GLOBAL_START_TIME = None -_GLOBAL_TODAY = datetime.date.today() -# export needed stuff -os.environ['AWS_LAMBDA_LOG_GROUP_NAME'] = '/aws/lambda/%s' % _GLOBAL_FCT_NAME -os.environ['AWS_LAMBDA_LOG_STREAM_NAME'] = "%s/%s/%s/[%s]%s" % ( - _GLOBAL_TODAY.year, - _GLOBAL_TODAY.month, - _GLOBAL_TODAY.day, - _GLOBAL_VERSION, - '%016x' % random.randrange(16**16) - ) -os.environ["AWS_LAMBDA_FUNCTION_NAME"] = _GLOBAL_FCT_NAME -os.environ['AWS_LAMBDA_FUNCTION_MEMORY_SIZE'] = _GLOBAL_MEM_SIZE -os.environ['AWS_LAMBDA_FUNCTION_VERSION'] = _GLOBAL_VERSION -os.environ['AWS_REGION'] = _GLOBAL_REGION -os.environ['AWS_DEFAULT_REGION'] = _GLOBAL_REGION -os.environ['_HANDLER'] = _GLOBAL_HANDLER - -def report_user_init_start(): - return - -def report_user_init_end(): - return - -def report_user_invoke_start(): - return - -def report_user_invoke_end(): - return - -def receive_start(): - sys.stdout = orig_stderr - sys.stderr = orig_stderr - return ( - _GLOBAL_INVOKEID, - _GLOBAL_MODE, - _GLOBAL_HANDLER, - _GLOBAL_SUPRESS_INIT, - _GLOBAL_CREDENTIALS - ) - -def report_running(invokeid): - return - -def receive_invoke(): - global _GLOBAL_INVOKED - global _GLOBAL_START_TIME - - if not _GLOBAL_INVOKED: - eprint( - "START RequestId: %s Version: %s" % - (_GLOBAL_INVOKEID, _GLOBAL_VERSION) - ) - _GLOBAL_INVOKED = True - _GLOBAL_START_TIME = time.time() - - return ( - _GLOBAL_INVOKEID, - _GLOBAL_DATA_SOCK, - _GLOBAL_CREDENTIALS, - _GLOBAL_EVENT_BODY, - _GLOBAL_CONTEXT_OBJS, - _GLOBAL_INVOKED_FUNCTION_ARN, - _GLOBAL_XRAY_TRACE_ID, - ) - -def report_fault(invokeid, msg, except_value, trace): - global _GLOBAL_ERRORED - - _GLOBAL_ERRORED = True - - if msg and except_value: - eprint('%s: %s' % (msg, except_value)) - if trace: - eprint('%s' % trace) - return - -def report_done(invokeid, errortype, result, is_fatal): - global _GLOBAL_INVOKED - global _GLOBAL_ERRORED - - if _GLOBAL_INVOKED: - eprint("END RequestId: %s" % invokeid) - - duration = int((time.time() - _GLOBAL_START_TIME) * 1000) - billed_duration = min(100 * int((duration / 100) + 1), _GLOBAL_TIMEOUT * 1000) - max_mem = int(resource.getrusage(resource.RUSAGE_SELF).ru_maxrss / 1024) - - eprint( - "REPORT RequestId: %s Duration: %s ms Billed Duration: %s ms Memory Size: %s MB Max Memory Used: %s MB" % ( - invokeid, duration, billed_duration, _GLOBAL_MEM_SIZE, max_mem - ) - ) - if result: - print('\n' + result, file=orig_stdout) - sys.exit(1 if _GLOBAL_ERRORED else 0) - else: - return - -def report_xray_exception(xray_json): - return - -def log_bytes(msg, fileno): - eprint(msg) - return - -def log_sb(msg): - return - -def get_remaining_time(): - return ((_GLOBAL_TIMEOUT * 1000) - int((time.time() - _GLOBAL_START_TIME) * 1000)) - -def send_console_message(msg, byte_length): - eprint(msg) - return diff --git a/python3.6/run/runtime_mock.py b/python3.6/run/runtime_mock.py new file mode 100644 index 00000000..1a7a4742 --- /dev/null +++ b/python3.6/run/runtime_mock.py @@ -0,0 +1,262 @@ +# pylint: disable=missing-docstring, global-statement, unused-argument, broad-except + +from __future__ import print_function +import sys +import os +import random +import uuid +import time +import datetime +import subprocess +import json +import traceback +import base64 +import signal +try: + # for python 3 + from http.client import HTTPConnection +except ImportError: + # for python 2 + from httplib import HTTPConnection + + +signal.signal(signal.SIGINT, lambda x, y: sys.exit(0)) + +ORIG_STDOUT = sys.stdout +ORIG_STDERR = sys.stderr + +LOGS = '' +LOG_TAIL = False + +STAY_OPEN = os.environ.get('DOCKER_LAMBDA_STAY_OPEN', '') + +HANDLER = sys.argv[1] if len(sys.argv) > 1 else os.environ.get('AWS_LAMBDA_FUNCTION_HANDLER', \ + os.environ.get('_HANDLER', 'lambda_function.lambda_handler')) +EVENT_BODY = sys.argv[2] if len(sys.argv) > 2 else os.environ.get('AWS_LAMBDA_EVENT_BODY', \ + (sys.stdin.read() if os.environ.get('DOCKER_LAMBDA_USE_STDIN', False) else '{}')) +FUNCTION_NAME = os.environ.get('AWS_LAMBDA_FUNCTION_NAME', 'test') +FUNCTION_VERSION = os.environ.get('AWS_LAMBDA_FUNCTION_VERSION', '$LATEST') +MEM_SIZE = os.environ.get('AWS_LAMBDA_FUNCTION_MEMORY_SIZE', '1536') +DEADLINE_MS = int(time.time() * 1000) + int(os.environ.get('AWS_LAMBDA_FUNCTION_TIMEOUT', '300')) +REGION = os.environ.get('AWS_REGION', os.environ.get('AWS_DEFAULT_REGION', 'us-east-1')) +ACCOUNT_ID = os.environ.get('AWS_ACCOUNT_ID', random.randint(100000000000, 999999999999)) +ACCESS_KEY_ID = os.environ.get('AWS_ACCESS_KEY_ID', 'SOME_ACCESS_KEY_ID') +SECRET_ACCESS_KEY = os.environ.get('AWS_SECRET_ACCESS_KEY', 'SOME_SECRET_ACCESS_KEY') +SESSION_TOKEN = os.environ.get('AWS_SESSION_TOKEN', None) + +INVOKEID = str(uuid.uuid4()) +INVOKE_MODE = 'event' # Either 'http' or 'event' +SUPPRESS_INIT = True # Forces calling _get_handlers_delayed() +DATA_SOCK = -1 +CONTEXT_OBJS = { + 'clientcontext': None, + 'cognitoidentityid': None, + 'cognitopoolid': None, +} +CREDENTIALS = { + 'key': ACCESS_KEY_ID, + 'secret': SECRET_ACCESS_KEY, + 'session': SESSION_TOKEN +} +INVOKED_FUNCTION_ARN = os.environ.get('AWS_LAMBDA_FUNCTION_INVOKED_ARN', \ + 'arn:aws:lambda:%s:%s:function:%s' % (REGION, ACCOUNT_ID, FUNCTION_NAME)) +XRAY_TRACE_ID = os.environ.get('_X_AMZN_TRACE_ID', None) +XRAY_PARENT_ID = None +XRAY_SAMPLED = None +TRACE_ID = None +INVOKED = False +ERRORED = False +TODAY = datetime.date.today() +# export needed stuff +os.environ['AWS_LAMBDA_LOG_GROUP_NAME'] = '/aws/lambda/%s' % FUNCTION_NAME +os.environ['AWS_LAMBDA_LOG_STREAM_NAME'] = "%s/%s/%s/[%s]%s" % ( + TODAY.year, + TODAY.month, + TODAY.day, + FUNCTION_VERSION, + '%016x' % random.randrange(16**16) +) +os.environ["AWS_LAMBDA_FUNCTION_NAME"] = FUNCTION_NAME +os.environ['AWS_LAMBDA_FUNCTION_MEMORY_SIZE'] = MEM_SIZE +os.environ['AWS_LAMBDA_FUNCTION_VERSION'] = FUNCTION_VERSION +os.environ['AWS_REGION'] = REGION +os.environ['AWS_DEFAULT_REGION'] = REGION +os.environ['_HANDLER'] = HANDLER + +MOCKSERVER_ENV = os.environ.copy() +MOCKSERVER_ENV['DOCKER_LAMBDA_NO_BOOTSTRAP'] = '1' +MOCKSERVER_ENV['DOCKER_LAMBDA_USE_STDIN'] = '1' + +MOCKSERVER_PROCESS = subprocess.Popen( + '/var/runtime/mockserver', stdin=subprocess.PIPE, env=MOCKSERVER_ENV) +MOCKSERVER_PROCESS.stdin.write(EVENT_BODY.encode()) +MOCKSERVER_PROCESS.stdin.close() + +MOCKSERVER_CONN = HTTPConnection("127.0.0.1", 9001) + + +def eprint(*args, **kwargs): + print(*args, file=ORIG_STDERR, **kwargs) + + +def report_user_init_start(): + return + + +def report_user_init_end(): + return + + +def report_user_invoke_start(): + return + + +def report_user_invoke_end(): + return + + +def receive_start(): + global MOCKSERVER_CONN + + for retry in range(20): + try: + MOCKSERVER_CONN = HTTPConnection("127.0.0.1", 9001) + MOCKSERVER_CONN.request("GET", "/2018-06-01/ping") + resp = MOCKSERVER_CONN.getresponse() + if resp.status != 200: + raise Exception("Mock server returned %d" % resp.status) + resp.read() + break + except Exception: + if retry >= 19: + raise + else: + time.sleep(.005) + continue + return ( + INVOKEID, + INVOKE_MODE, + HANDLER, + SUPPRESS_INIT, + CREDENTIALS + ) + + +def report_running(invokeid): + return + + +def receive_invoke(): + global INVOKED + global INVOKEID + global DEADLINE_MS + global INVOKED_FUNCTION_ARN + global XRAY_TRACE_ID + global EVENT_BODY + global CONTEXT_OBJS + global LOGS + global LOG_TAIL + + try: + MOCKSERVER_CONN.request("GET", "/2018-06-01/runtime/invocation/next") + resp = MOCKSERVER_CONN.getresponse() + if resp.status != 200: + raise Exception("/invocation/next return status %d" % resp.status) + except Exception: + if INVOKED and not STAY_OPEN: + sys.exit(1 if ERRORED else 0) + return () + raise + + if INVOKED: + LOGS = "" + + INVOKED = True + + INVOKEID = resp.getheader('Lambda-Runtime-Aws-Request-Id') + DEADLINE_MS = resp.getheader('Lambda-Runtime-Deadline-Ms') + INVOKED_FUNCTION_ARN = resp.getheader( + 'Lambda-Runtime-Invoked-Function-Arn') + XRAY_TRACE_ID = resp.getheader('Lambda-Runtime-Trace-Id') + cognito_identity = json.loads(resp.getheader( + 'Lambda-Runtime-Cognito-Identity', '{}')) + CONTEXT_OBJS['cognitoidentityid'] = cognito_identity.get('identity_id') + CONTEXT_OBJS['cognitopoolid'] = cognito_identity.get('identity_pool_id') + CONTEXT_OBJS['clientcontext'] = resp.getheader( + 'Lambda-Runtime-Client-Context') + + LOG_TAIL = resp.getheader('docker-lambda-log-type') == 'Tail' + + EVENT_BODY = resp.read() + + return ( + INVOKEID, + DATA_SOCK, + CREDENTIALS, + EVENT_BODY, + CONTEXT_OBJS, + INVOKED_FUNCTION_ARN, + XRAY_TRACE_ID, + ) + + +def report_fault(invokeid, msg, except_value, trace): + global ERRORED + + ERRORED = True + + if msg and except_value: + eprint('%s: %s' % (msg, except_value)) + if trace: + eprint('%s' % trace) + + +def report_done(invokeid, errortype, result, is_fatal): + global ERRORED + + if not INVOKED: + return + + if errortype is not None: + ERRORED = True + result_obj = json.loads(result) + stack_trace = result_obj.get('stackTrace') + if stack_trace is not None: + result_obj['stackTrace'] = traceback.format_list(stack_trace) + result = json.dumps(result_obj) + + headers = {"Docker-Lambda-Log-Result": base64.b64encode(LOGS.encode())} if LOG_TAIL else {} + + MOCKSERVER_CONN.request("POST", "/2018-06-01/runtime/invocation/%s/%s" % \ + (invokeid, "response" if errortype is None else "error"), result, headers) + resp = MOCKSERVER_CONN.getresponse() + if resp.status != 202: + raise Exception("/invocation/response return status %d" % resp.status) + resp.read() + + +def report_xray_exception(xray_json): + return + + +def log_bytes(msg, fileno): + global LOGS + + if STAY_OPEN: + if LOG_TAIL: + LOGS += msg + (ORIG_STDOUT if fileno == 1 else ORIG_STDERR).write(msg) + else: + ORIG_STDERR.write(msg) + + +def log_sb(msg): + return + + +def get_remaining_time(): + return DEADLINE_MS - int(time.time() * 1000) + + +def send_console_message(msg, byte_length): + log_bytes(msg + '\n', 1) From 3e2a2d70d1ff761291d556c3eef948c0054c2bab Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Sat, 19 Oct 2019 16:11:17 -0400 Subject: [PATCH 081/271] Add Lambda API support to java8 --- java8/run/Dockerfile | 5 + java8/run/lambda-runtime-mock/.classpath | 7 +- .../LambdaSandboxJava-1.0.jar | Bin 122901 -> 127784 bytes java8/run/lambda-runtime-mock/build.sh | 9 +- java8/run/lambda-runtime-mock/gson-2.3.1.jar | Bin 0 -> 206963 bytes .../java/lambdainternal/LambdaRuntime.java | 301 +++++++++++------- .../lambdainternal/LambdaRuntime.orig.java | 112 ------- 7 files changed, 201 insertions(+), 233 deletions(-) create mode 100644 java8/run/lambda-runtime-mock/gson-2.3.1.jar delete mode 100644 java8/run/lambda-runtime-mock/src/main/java/lambdainternal/LambdaRuntime.orig.java diff --git a/java8/run/Dockerfile b/java8/run/Dockerfile index c3bed260..0bfbe07a 100644 --- a/java8/run/Dockerfile +++ b/java8/run/Dockerfile @@ -4,6 +4,9 @@ COPY ./lambda-runtime-mock /src RUN apk add --no-cache curl && ./build.sh +FROM lambci/lambda:provided + + FROM lambci/lambda-base ENV AWS_EXECUTION_ENV=AWS_Lambda_java8 @@ -13,6 +16,8 @@ RUN rm -rf /var/runtime /var/lang && \ COPY --from=0 /src/LambdaSandboxJava-1.0.jar /var/runtime/lib/ +COPY --from=1 /var/runtime/init /var/runtime/mockserver + WORKDIR / USER sbx_user1051 diff --git a/java8/run/lambda-runtime-mock/.classpath b/java8/run/lambda-runtime-mock/.classpath index 73aea907..ed03251e 100644 --- a/java8/run/lambda-runtime-mock/.classpath +++ b/java8/run/lambda-runtime-mock/.classpath @@ -1,6 +1,7 @@ - - - + + + + diff --git a/java8/run/lambda-runtime-mock/LambdaSandboxJava-1.0.jar b/java8/run/lambda-runtime-mock/LambdaSandboxJava-1.0.jar index f47d2040261c4b9a29f04456e3980c4c7c8db804..5576d3f8cc8953ad94267ae636dcd99d4fa6bd2e 100644 GIT binary patch delta 27570 zcmZ6y1C%C9&?elrZQIkfZ5z|mw%t8%+qP}nwr$(?G89+rvMmi_J!K20H;^V|?_G9V- z0Rfr+z5kEIzhACU|0|II22B4S!3NCqA7KH^@gG4|M3|8Kh4_E<^^ar%aspurQ#&v^ z-2e9n|8j{y`2LeJ1Y!7(NC5HrkAQO~Op)pUMs5%WJp{3!kW@pF$Z!M2nt|iUz(S4tWPw1<@#3YJnbN`Vz^(m_uR6W{-go|YEteYAOV|W9QTx& z-lzcOgADu+YD)S;o%`Msbx45r!A$663v|K;+gByhR-8h`A1CIsEcq{9KwsY!^Kpdy z7YgF&0YlWywAqls@+-lfYfVJx3v2|W-rz?pENwK;Ypf#QW2wBkw`s)ko#&C(r$xUQ|!X z-HXW}V&-C>fb*>r^S;NKw-5m%_bWMN&ty%gc@0bt;nAJ)Z#jJcT~m(ah64Tv3*`4^ zUr%gZ4_ec=wD`yRSj_|O{cBXDj|zd^*g?zuyDI_R0}r6=Q$MwnG)Ca?j`z!mz!H$S zo};U|VW4Xt{mJ}lH~*X-`R>J^GxHt0k^>b0klyGyysJ*I-3Lq@@XbvqamJB^{909` zmRp-GxJ(~MHfvicb4;Q@l;|E;k#8*X4w+|T8YZd}`!j%k*pgJ7%1iO2@@D6T6PI%@<(YCW%6c$5 zlxiWkq^p|osFsN&ajCY6sBx+miA>Ec>QeFnCsfd|DNvnQS^6bpA9}Gh#Y)v6Lip^h z`*NV%iKX6ii^%1f#|W%WvDO)exTUnv?83WhGyw+vg>IgG?YI^KqczEJ&YMDUgtz4l zQp-m1@E*k~*qd1ko&8AMf&@-us*UTDl5Kv~uLN`Z$R6N)2pOnUx^*ya(p0AD!sj8_ z{Y>DvOmVB2L$DxPT@3bZaq}u!A&h+M7qZJO_iQNXGw%Zf@9$y2LkL>&2*?7CD=A|Y zdjl+I+ncu#|CTPG#2IEzNikt&Z)<*K2>nB%6hV0Wb5uDsiL!B-_`>G?87BgZ9ee>x zVR56bVQ#~W4u%+nLJUhJL<&2+8hXgzop9v{(bYEcwLhxcT%i;d){Yi`+I}%vbqi5P z7se_yX~&46hJO|P7dMyFZF`=+mN8tTRVScMkTrsho#Ktj-qFWCg=6=oarENZ`SmUT zOELEBQOT4F+YbiL%($8%uVzt5MH!;6!PT?FCs-o%jOcFFK3yoy6u)HaVW=fu)rc-C z%`(L88K=9F8$|O3N?b5rXnc0@EM2>>Y$#njzpQB0V|#k~je)L+8UyI**Ti&PsQ^F` zTmgG)6#8Vyb^Hn3&9KwD)EQ#cj>qRymTT4uPFP-gNB`3&jJ}yF%YNu?vQwG2|KJ9} zv!IU2-I~_NKsMSf&SSQrr=o|URYt}3)N8?8vzB!saQM*bS0BP%nB-XTABZY=7=MiR zk8VLTW<_k&Kp#C|1BphUtBN#9l zZ>a(5os2Hkfel+mSO(F7X!8eq^aVsac82nfMao#VvY-eOYdKQ59NNmte3G&02o8$;2en4E7H8 zR@ko-#A}$V$3Hy4F?F4ii@4F+3&Ml*arL03P1~aR*ce|6PD8C*`U3e3AS~g&m~}B1 zLfc1AkdZ)4|+1=`W z>l?TnW@6ZVYaz$g(D5`<<6aZk2PuyGlY?U!edLwHi5)t-8o~NyVuQII>YwF5Cn_8tLN~{;KW(1Pnbj1cAe_yhNi`Re_^6!8sl8SYQHZDqm8|(k`fIQq~!% zU{kB9Xjt^D6k{7Lh_mQK-VP7QGj~V<5_PL9PIq3Si_j~qfIqh`2B(Y`+AC96s0;eu z96A|LF}o-i^GKauMMAi`cYBN98v2r~+sR)&S1|Ilb+Cx9>2OysY=v8&1jB2$JX&gB zFJ(XT#;B2iBjf_GUp&gaC07C(s;BeJ(!yhclGBo{S(&9BSizRu+za?+9&{F>Ne9H1 z&cv3A7pxxfb~P}lRP73XuowryFEGpD;;f)CgK1w~FoQEg(#g%c2T9b;*oRf6nYCNb ze<*^b#ggMNx2dF@UeU>CYNOK11=rDe8!pkeua`FyGra*^4PVaBbzKOWe<`r8mz25c zWz}@1uUA(f90fVdJ2qK=ps6WHz4~RMg_HVpBLIir%BDuHT$HPf5o=&X;AI$c>A95I zW<|KufQXgj@YO{VEPRZmIWHA_w6Ev6p3~%dvIQl_o-Ztc(^OK|hL@*SyOwQ9wpkcT zYIvyv(lG!b?)??d{d`ujU0HR>>@YEB8%hoG zD`dnTgYfgV+qU&@wiS^qTp4uTQhEk3)2!YeH*3op+AQ)^G*ZeCiG?8P7M-<+A#R`l zRB5W=3U6eWLf5dmv{hFt5)MPdCM+~?bIi)Lzl8#Lm&XpIUC>=6ml*6?$J1M2+BCn2 z(#aLc3M(p1R*uLwoL!=@E(&%_tJPM1u)%cp1uL{_I2zYMQ-}BcxP*V{h`^m3$G)vB z{B<-0!caQxU&bHoQ&g?Nae97mF0SVzyp_lV9sdL|IBAS9vnUEPDJ6H_{#Mv759iL3 z>23tLNavC{I#OwG7kk|)w-pT*R5rIO)6v=4EG$#FIA@9V8<{|{Q)#(4Z{XE3!^Aw- zB}wlPVO4fmE*}0R<1l1sU_ga8q&)XCV{eoQ;ut;uF=w>?zP;~!phMi zT%?xQZJrbtuz0eV#my(Tv-}4QdNyZe33CyE>GDJ#Rsq_ntl?&;@2Nu|P@Hr6h_R2C zGtT1d((+bceXaCYLHMy>&^@8AU3*%$K}#6tDh&7pGzTKs*}t;1?gU68{x|X z+QTbs+PMn}mX{2VIPzmh^*2q{U0MXzRWfA_v5E8R-J>|p;mPucNY9mu%TYyhe!&A) z-IZMzE6YZlpISYIH4M}YRu(y&pAxzAE9}bcOj1~}U&Ry9m?-y@w8VtJOHUP46e1LN zmKRytJ=J|AGjJT=UI=pyXn}fUXyW4$hF#S-=C<2O*6-d>(zWBa=4yOLZQYv^n zJAXfi1Y*#+$XI426(7i}h0^;}8$7@qV^E&RS}`u zn4gR3brtGE@FT_4R996!xUa9QG(p3E%6wedJ-VTi6+ME`O9zxxHy2g273pcz%*rgA zS1e%hZCl^E*XFG2WUQ}qLjDYvwD)m7K|Oj+7XHgd4mu;BoP$sm^n zSve*4yPDg^7B&@Et}Uwd3|7*&=ho*pV=t+sog1yKEvxJ*K`+jiu9R`3iQ{8yjk}96 zF3u&+*|HQ4)+{_m$LG>^8Khvf>UTQebL{laO^gheNvRhm4|)rHjRq7((%*i7yw_Fp zA@#`v)s`5Ry$SZNT*0fl5xD@wlu;ncgjL8x2ICeB|B}YFW*t|;1D)i#%`Ck%y$sD0 z@R=!#S5F(zEN*gBKp;+mSWTu@@zDH(vG5ALm}j@Q@ZdGsS` zp+&oX@_(tP>r{zJUfwcO@6n9=^gnm6UKBezSa8v%y!KjmXk$Fi7MTAWp|W&%bSLFI zcB9m>(CXSuH$Y->bzcWeiTxVWNtK`4Rj2fr&=w)lM2C8mx%yd-e{5X_!M`0Nm*!xN zKaG#=6qC@VvVMd>xw{41%FjQsJ<0Oi?qSk)j^)Z>F)rSX)JO3waqjt^{~64lM~BM< z<|~Dv7JaQScJZ_s%4n&(kV3GsU4uy}J@xR3d=O98vhj(qoOE$nMx z^c#*-eRT3ekjW#E!CIHDR~G*FLj$>g#wNgU8g7L^4*nV8K$yEi!G9wWnHP|t@+tbM z%76V8Syt$rngag~Mr;I_c76`qGQg)iF!;H}i86X+Ph|~}r8T1H+^lJg40FM2?xQ7J zjGe)VC;$7Ww7|nyNTR-7j+nXF9sk+Qc4WR@L=)xB~RB}_R|U~xP{L43EOWrB-jvQ zqkTU7&a|pry2K632UjvVRX&u93s_RsCEONyZ3U75&Z(tp1aKdbU^%DCbkBiDBRaW^ zUA3R%KUA{-f7VQ`XHPC7E1zv*TsQ*T^UQq|TyC~=_xzu-P(*)^HSPu4zQ?d|e!_T4 zi4peqJElH=_j?xr>~PGcGaWfoW2qzjg2?n*+}&0N+l^b2Y^sFBMHVR9B+<5;@=`Oa zoZ1iV5h=6`8@snEZJ7nWF`fT_D*ZX?pH;8neNHI^EatRLPHEcTU#PZDY#_r2eRfMO ztxHn14!b8nL8e^<#FcVTHPB;Sla1^W`C`%Wjw#t^!sp@VEe6{R417DtB}|W`*OGO) zv=#q`cm6im4{pVPPs_Qb5f_zS>pv9*3_ikNIGRUUJjKld-L8HdApN0x6)La8z|ZlR zAN!dH5c}&+%NZDfG~E^KaxFvF43?mYTiye*BuVo44LE5$V2Qyd?!|q!Qfn%k+v}?H zx|-KjR<_qSw`V)ss)xKcba&dTeT){)+c6YuoMf^>ETjhB(?$9FCZ05p7yag6#%?|> zs1%Hu7@AVqW5U(tdjTO+zb+FKr}QFQ<1qRFEVgTrc5jA&#S@{|9fI`$PU{cRe2zvL z#a_u%LZc7$MT6v_h!_W7S?~|Z#&{nR|1=X7*+g(GLH^H_paDkQ__iMp-OPN4R_88y zU3uH{9;h5=o8!1HwuUj&xUbe(xNXo9$uAu(X{K<{CNzWLpNa`BwAjF2A=|7^?8{pK zB$%tnryqO?<-8GoWrh!enAATcq7g{up^hl^ZfX`X9i7+f_qy(%HbD`EGe7j!A^Vh; z6I>0GZSb3d%*_V8Dd#6*A?6u zP~m`_eK~`qDj9zfj(9aY>~+tV3z2F9;8Wm!UD`lWk0kL(YJ-1`LykEF;#GG7(?~yZ zRk@-CB--)cRU^))-g8DZjaY07(Qry05CWNH5KpO&iZmvNo8zmg@MW7RfmW47nWI8e zrYX-pJc7h2dBy4bM=}=thA1mg6_zg0VD(IL#1kDB;Q6w6EGSS-y_}djO=vCy+-EIo z+fHgkGdIo3-p^WF7J0Z6Y7c!J(j4nl*pG+cs(@{{ z(g5L>UR(@0U!*6QlxIj2zk@rXx}{pXEP5{pn(BNaKV9B@DlrU&$CSjXvE2dHZD7AhT^mH35^ zypauNIOZKI5}(z(VI6JrXd~}&a9GDBPUQ-`Lv9k|Z}u5+Z;rFu@DoLC+<7p)15*F+ z;>cXh_Wp6E@Yr)pSujlm=!{Bilt#RjW>gDqB>iohpgsBHk!xKjz?>)W9(i3VMhWOg zZpyak#s<|+9&D>0$)>Qs>ruFvoYFUuxmZwDqcl>3IRm2Uhr?sxgw^ zh|Zc^I44V*3leq!Ik?z?fwfeS!w;X%mNjd*7PZTD_Gs=Q({A#@G;1XHqooKhVZ`f{ zWu(W9N?9Bb)uaksO&m3Hq;*c^%RNkqdQ2BUJ%2VJDRNu!<|B?3r^XdEd#?p{>Ls+l zFC0-Q{u@C4d4x#nKyI!IGxZtk#zYRy>4BoaUhHs>#sWQxs7d$xp(?Y=Z^tt~@A8-F zl?b(#&OySfah&>Z{GZs)VTSVg(AB}5Z0+f>eCf!5Gxou=%enAeFZlMFk_EU>& z@pwEN)_@YHADY?YEOcQE{pJH#+sCRB0fzZ4S)l{MS&gUeUk)q#zgin(V53YlXNC zhQ_>7n@Q1~iP&5S$a1EZTw>b~7FiZM>5JBG){#rH6s?HlyP`BbYDwgY6MY=od(qhw zvOBf8X3+a?DKr*sa*W8vR|6Vp=FhIEBCAw!C2FYL!WG|JeId0w5?_hJ~*>^7EsiC?7(t9TIksP1M5e^Q-G%$2O z1UeFsC1fw}zao_|e=~1@3ZTWdGHPLw*T5zd^9VV$6tgvpJD^S{CatD+?1es@qd{~4 z1dtpK#0;OUbLwfNdcj(ZHoI=@e~_FYJ7SYr(}G#I8T(RX-~nL@P{dqBnc@Z#?uKms z5&L5+q4WjZZWzno&AH-Y6dgu+53bO-7DXU4^6g|{iaT%4{6fh-(J+6-Da+9m)v_S; zR=DAjYHLdi;`*AX6SF{HodJ2aOwu(9@CfC%A;tc}9tG&Me*_649(?5-me{_eqUIP` zuj3gt%=}nRFEF1x0R7%>Qi!E}?gaHnGv}>W=X$Xh=#gfpPTKKqNg{^mDrcomGQf|U zS2wMQosY!(0LkUVmfVB4e<#l$xsZhF0iJQ|eUkfG+2ULCJ3{gWgI>b6M#$9wAOZkG zc|#S8D}Es%1t3|xD3i5R#4=S&M1Sz23~ot6ybzxg8W)FX&8@^yWgqJn+CtW<^M9gC z`Mc9?xZ^3y1D`yIcB0>d1zse$GtV4S^Tw3iEAt0w+_B=tl{~NqN)gWVj!U~!&h&ex z0IksMS3{U()(C>S>$L@>)XxyXba`&@+z^&ZBC;_5Z?qxco4aD5NqRbv){nW(<8po|u_h7hj4xv@-rSBzDA0`l-$++Ya>qmB*KLdHK(y^~_Sfomw~mc#r~FSc`hMwI+p3_+h3qc) zbhN$TYcRf+$J~P5ncTd`gy836KZy1#aB?jCg+T;yOYX|uEMR&75=o9UM_M=G^I^$c(dfmiSYoHa~> zkon?jZhq$i-)6xBR2zXZHUlw^esMnc7FMwmNFp(s*3>tt)FzkCC{QRniZtNEfWmWsFX-jWNsSRF^*3oSZ z;beR#)J|yzyzkM5J#iy;YQ1VEbYqda#2(n>&XX&LS$HW3$iI>Ivmd&@*dR9c%+ADt z$#i@$mFoms81MaYRQ--Hr-8;N^kO&NIu7iLx6c`zabyof@fX)dNZ}hJpN(j=UeiKy zG9lovVaZAPl^sNF35&~VGHW&qUQtZwM;r}04oi8Q6YWU|_jmsSP(_2sP@3UdiN0gPwTEGpH>u83b-<{!^v@qJ64n;$YwoRwEM3Md1fW-g zj;)K7!s9drjA`RF{iUi_I$b=0P_9JO*AN5vB#WGZY@Zdw5ilt7-h>ZsiMdx38>a%8 zs_eBifF?Zzm`(<6Ayy23%B_%QH|wqxWV25_rIrAu_B=Ni6z4SmtV(bE^2+;6`TeMrsP#t{1CONv*U>f=S0CKF>;`vFx1o4OHYqD8@((8Nt{R>f11`;aIGe}?o z9|%Z9V{PzE_OCn;L` zK&|nl>q=|OZWhDeOl`KhCgTZ>E5(YTP%=|3mAm7Ozu+$pLn>Pc1aL@QYu30N0$WAD zdaHWJP#x`t(5=cVVw*iR3gloKVNmLprf)h} zSb&?W>2_xt$2Orr&u`FMB)5mrJyU{YZrROxdmVsSGu>ugtx=xvXp;$1f}U`(G9OWD z*6l1Q-HY*V7alyM{-ZXWcXZ{mu*NGSN&L7%fT<&$QNQO1ro)G>XI$v!K}?ptI}J%( zAadU|gdgTv=g6q(4CX*zUaZi*nBQ%d5Amncq0N+$IWnDw*QRa9JP-0s&_TrR=p1@g znIND^hN+*z(1fN41raLfH_4_O&X!$jQ4vgq%le8^f@yWZ1Q=xFY7$MB9oM~`%incw(V|Jn#;x!zM#gs(9S5F^AFmY zq;<_9F<5y2hn#PJMP300L!0H!53*w$UnzibC+3JHbm!M66&~~0V@y>yaiVEL?xfu+ zh@l^08?;E6$qk4Xg3hmuDj&bQG)4$(ekbl#aX$qwkX{t^)%bOB?T_R+?4VMP>DWJk zm0aw@mu9RZ@zZ>J#R_d(EK_RPyDAJWIs@cWb_IhRpeZhVM-g6|=6p7fp(5qAiWNG5 zkhR?#xV1ZhVtQF_v_54H<@gcnC{>!NWbJgI-!UmeYPtvB5E(cCe2zwXTGQ;A-E$kd zhE7@-ece~^e{?Lo{W}~71PDk9?Ekgk1V1}EK$b>?8=408_m=f)$C@k=oCh)-eC@6& zu~u*XFLOHhFldTASJ3vM=IzUA3K3JY{Yg6dC#|aWH(Q_PXB%|FQX30lAfa>Er`McU zLigx>w;S2|3}ZL1XiCbL?LXHqzqda}05w}+_8eaX5->TD1@MSt3j+?$yKxleuZg;W zfX>vt(XkkBJO~&R=7}Gel%dppCx^^Ckz{mPn(b4!yAwr&4*by)cUU9fVV|5MW}N)A z;Ny z;MQAhaIb60d1r31+7~S*S#|f0j~U>207Kw=Fgp&|%^k!32XDWInZ*evuwlE;R<|8i z&@r(d8&FRMJ>r@J`7+e$Ah5OhggNd_j6uN7$#)v(QHxJd)m4Twn}Q4+;e+`us$*<+ zxkb^^_u8X*EZnnG$w|6Es1G`d`Doi{GS6UP1Cd_5<1%tw#iIF}v#Nr-sVSui09&qd zn)#dwn8jDP)%2B*rA+k7QHuE^vKx;fP?TDIhMv*v-(MFXD5*BH@X#{;aa50O03prQyAcx zXt2@{dky?!m3+zem#z-q zCHGnok&Lsbjgu@7(#XEj+aR@#Pef)i|6TI)(s)iyl{old>EuYX9ql3TIwLOH$q-59 zVE$|eY1?TmHWT9}#Uo&;QbQyy_?;0%)(<3s`CB88c3cV8P6LLSJr9~lz?1y!EwFd& z0VR%p>?z|ud2sak7&SQFf;}4HyggC~YiFcJ=z&l4fmb32Y(lWW$zd10Qs;X3iut<* zt^Ud_%SYxxez3uA3eN8!0~H%p2iOsE_?|vH>WUQ)p#d-oY|rssmg0+)KsIVeCsiQQ zdJv6KSxUa&(n72s2sJf(01T4n>H~qJ*8=&mX$>+h3G5(g>+ErX!Y!RX8*rb@FWDWm zVqpmFG zP<*1uCCW-wVcv-bSEV*%RhqYSPGU^wwnMnTHc6lnr`4`U=@7q;QSEWvJ^*)rd zq^hLmD_K^HrPirRp>9!^UP?_RQjAmE#XA$K-d2<}R z$`_Jb*~Ow5(ysER0O7aaE29})dooYlR;8lhn6eT3gZ8XiIZ`$a=5Oe-JOY;O%0tm? z2%JUr%9??Nc7gHkBlvZNRxfH!Pfyj%lg_ev|oxb0RNv(o-Fb?0}2Ypk)n zIx3oK@1F5&$Ikn)=>v1Se>JOgKJ2Kze8PJqxWaIxUXpwSK(1HNO$r;WE!8xrJ(Rc< z3(Jp%KyhKH{$%M@v<}1KEtqtfpTGfoj*m=L-x1&8srpm}Y2R6}7xNksY>`P3UN5L3 zxB3`(PXQ03grrREInRbUVSv{%b`L$0#z@cf(ZI|m4AB<}4RS>eGT9d;SBR14UHS<~ z@f&?>^ue_QganzG$kLET_f%mMx?F0p@R#oyVm?Kpb!``%Ci~>bZ#j|#1jA(E-twP1 z-Y#gRG#Fg59xurs=qNFBO<8n7{xmW#6xh{0htahBM!~Ty2x=Zh!C~~5=_O$=5*{VV zcivAZ1Ld$IY7Q+PRh;q5sLA7dVo&!(c*N7s*BDO#AiLg8_dwNn&@2IPGxbCtT+G+L zXw9_-k2$2Y!9*Gna?_Ue<9lHFR^#f;FsIB=K-!i#{W282nPp6ei2f1nz_fldyEN`r zoAZGP@Z{tl|B9OCF&8qjmx^VEHh_eO8kr>{r1jIdgOW09yzzw9sm@O#c7fLsa#FL) zHNkZmZYFQs5gx&%F&CkURMLKzDgd@F?zJtbbyfN41x*3J0ur1`5+K+wA7=$(7-Es) zR=3E^O)Y7XtpqNhEJQdkBK!s!3w@>#{Ag1KaGQPN-EXu3AY}IMV6`>kRQj&W!RXtJ z?&z z=oP7w5CBUHuns%t6#;p`DX3@|G?NM1VHl zP(*$z7c66uSBd`!S1Ig{tciUC^c&on<R6F(63RfZ_}G2gD3!6|_=MfS>~t z4(TQiwYz&$a69Oq(6)~URrg=)9&O~lIu03&9v%K}uXocx>9-65+xWfGof3Us=$iz+ zG@T0LJB*BkP`d%G12Kr;w}#%L>)+;V{J}936O@NX2{6{+BcPfgs4(&nNW)Pu@_+8A z+dfR80nZDLf0NH?w?@j+)2|LC-Z?P4EUhy9TUR4|z?%^>Z+Bb*{Di%jw?jl*-_mRZ zgBs}Ga(ye{G;U8rMpvI8Ct@+?M%sgOFllo*vQ5K6c(W2gk5-2q-&*?T4(j2Can(qoPO)K+41+|iH7O( zfWXxOC~`a-bJk)L-i!0vYv+=Yx65mzVA5I!UO-5E#`5V|orQ#FQ{sg#bW`|`smU`K z0+Pta-_CZtG_%KROqHVy1B)$;=0B=1?M4j`>>B121oRwBKyW|SjLJGd`2T*$35bE1G} z$mobio6v4vFr#!iS1ZIOS=Vu>RgFClxA>8rRxEBlUCk4IQ18^?kL(u^!SlmzZf!x2 zTRUN1{7GJA!n7dyn0w(z25Ce0WQ4v0j+qtAB4aJ2N>amAya&6hDW@7^{5)fq|Wzq=((o(!OK95IbOKAP_zqoM|ZhSxn0lLd1qfd zhaaw|z(nE!3yt=`T|s%3TNbH%*oM8X>nn*iYgEei#J75>0EiYWpz1ZKb{1v0SiX@mHeWo`FqymE<4{TbB zLZnWUj&-_c_IhhWxy)wGT81Ppc7ty+`-cc#o2+zC!G4Fk=+Mh-&HnoT{Iy1-zJ>IYUA%)x8f zuRz2F7xW%MMjZoDl0W2#p+g%xjV}!BF#|y{ju8fBuWY{y_FG=F{C6r|LBAwr;HYBm zLR3GX0qQ?|L1Dh~_iJ7=!g~$~X}-cFO1iRh#M`cVQa{p0n>L!+87^$sDQl?blm}T6 z%FHD~VBo!_{ZjMtaq*cat^jq>)z5ve+uL8+nlC>!6m-QvK4HG9_J4dx1O?zZX?ly> zn(yR{E{OCU(0oNu8l%M*;Nr1#5L+0V%qCnN*P7r?ONM85QN)Et>&>HtyV=@854AJ! zNqg|lZKIs88d;^KUPo$NI(4L~ zU3%XwUz%h8F^xCj-@>=`-Xk~*75@1ryXC5q+gjnQHj~B6f%y2k#FBKPdQ?@5*)Q@M z7>8r4ycC`zITJW}s*Kolh!PUYFFBt-v!s_KAS|bE@|vU2iyVOJnOnMWB-5lTLvd2- z<*IwAwd{K#9>YsPhnXYTidH?0!t6JEoB80CClc{$CG&fKcB1l#OV@i4ZK{7rLUt+> zQB(opq-2R!dhob+-|Q?>HyWmzs-hts&WtzymLT<=Zp}modn?)QVkX=$>K&w?vHUo4 zXMs42F}`Qab`PLBHvhxou>TCJm6|V825~H#aP5c>>1tfrc`uavu)CGb*}{E}4@ZVY z9vN6oH3G*k!c-CG?1z==%NrI?uB+yQbRIX`LviR)htPelkXkR?f*G6fAa-`EkC+zmuZM{eRDKiAw&g){bex4aURaQB{OnWs?_bTTg z+FHnaSy%L1I#G|Becz=E`tI2EdxbR7HL~%T2c=2v?sc{6hs2sa3}v4usn=_XDKr`g z|0GmJ`96Te7}^IYrflvxE69kR+abG*2jsG2hYJ)5FYJ`1Zjjjnft!n1Y%(W-dvbMw zq&5tPTt4@@w}3EZp1k2$FIX~!mAsJ_>bHW?9}6&OFR_QnKJH&&+U_<-(YW@=2Mq|g zdIK(h`06m7MM8&hjGrvECJX;U9j45wM>UxC?Y8BxRF>034fe2VZ ziIP>M;8hIcg$GTgw*r3TFyc9)z8b{Kyy5_nKQv6xaiArbF;>vJ!!IAl$1JUyy9|}Q z0c<9%m{w^CE}-<4QBN#n(5>nRmC>Ta$hwoaIt=FzaSlo~xyMblWj1K;v_1ILXhz9r z2SgWhM-YhO#xRESg>lUp5T;ZObeg-;G80mb^1nn_7SPjl7$C79t!5=TS$0XVoU{P6 zIb^ca;D^&n{h7ciDR_B>Fe6OYex8ZB#&VtZ45@D*srraDg>qK4RlN~GdmOd<94Oy( zQOEN*-c*hb=+N*ee{>y<;UBug7#>+JjEsj^Q=pRRiEgf8@4Q>k4ilU^BWV%$zz;RJ zRuEf>Z_$Ng|LG(Ajq(08Pe}u!4#3}Pfs!JcL0RX4k}~YC;|=${{K+E6G8)uNMVvkv zBrc9cuNNa0{2#xNqIt0-e}T;z_e(X&ZU;CGQ0q=Dx7pkC9p49N(q&mU&9kEVSy z==u|dN8a!tOt@o;@;7>g8R5qJ@9wU7aF+nh^LsTYH9Az8Rr%`&-mV;O1G4^jfvkRE z;kmXFc0OK}a3M|~Z!?w#WdzA?SWbE^#)kG*?1}7bOiQfkcJBvJECpn<#!H@MhzPSM zS4rOEQzko9dZw3=7O6SPa#DSJ-(eQdldU%C>m2_y+zg0-zRuINXy1M2jU=*C>@z z!A1nTk+s5J5=I6*FyU1qB?A(OWW6zk!lpDoJTUHu$qPE~QitbQQ5Z3~wnsQ&P6Kd+mXz!OV2}sOSA*rG*fPLNT%+Ovo*Apx$KFmdJa>epq^Z ztGvz6hw3fjI?j!#c`zis6v9Cid;K|z6ks&@V{?4f)WaYZSfuhi4bqMtLfu$$)iOfP z*6WPdmFL!`g?XYk<{>0!6Mu(EEbf=KtbwLK14|~&faKY_^?gkX?8%<9=DM@>Jq*DR zp$di8LPe|VF1nhmJ&Bzp$Fjahc7eBpC}Rrm1(}@|KY5qDR900|;6$uLP;L1{K0vo3 zu@mNK=(#lA({R~xiVbwb>49Ht_}H4;D|>I^=bdHKx0^{27>)#{ z?GI6i5Z8pCty6Q6sf8VQ4rF9o2a?NY{1UY5WKT}U7Y>MA?w?mg67BNb5)fgW!Pt&~ zAJb@#SV_=PKV%WVbjF^Thq;u^;{cC|1^D>!*$&PmeY4v2dUZ-Xbg+OCDjwnTMHYCo zm0O!L4vd06o{VFD?=AvHAAGWr)Vn%QB6+NMFg2lh3b|r5jS8|fmcDcV%(5-iayQZH z3z_Db1bop#C}~mJ`m<#>wfdFkIpzX((iIUsrk=(t_(*KaaGkVKS2dLKJK%^*5hUeY zn6Qaa7!Zkp!#x&2MLU#dU2j;nGkzbOW4kIl5O1G2#s0jYns}vpa|T+_=C<$v!NnDB zQM4rYiN^7ijl}n6AIkG48LHpKgPyN&vrkNLs?9s-TTL#^JKtm+O8m*=XxCV}Tsb5! zv={SK?Ho$ko(%otE-Bi&A3(-ONzGRa{gxp|JXRcM$a4C#VRjYIa}5@**5hy$WO$7v zS(CuZ8XC9K_oVTKB}uf*5N5%bWDTWQlD$YO&RRxv4o*pRj!vl|pDRB#A5+vp>_HS- z4AwXy9HY#FTFfK-B;5F5KHT_%*?A|vyu#O{{z{aqa+kdDSfe)hkkIZQYgvFGt$6<% zUcUkVzqh-8jpZ&@9FVYM`PW2-dlCdXq}rS1ESHwFtHkBlr3!YVsQkfTg3PUyl`pr* zu-7d(It<-Z?&?H^h58_G^9ETGgp&jX`!e`?Sa_U{c^;-dUjIDt_@201l8TwX{aPf1 zK__E|3EZ*HXk>v#VT(T!$&1foI;S9!=4Q@*4U2*^d{WJX1?XeralE{hIL0D5(r_Zq z6yl&rUsddEktz4x$@u?0!I;NLDr|~|KyGM(G?sU06G(`Pa}~tBjpwSPvCx)@sxW*Y zIecfE>+Z%)qFICXVAbEs%((j z$PP`MW`txJ3;WfOP0w!iHD7C({EC$`rVz+0LbvAKT=kPPS`Ev79-eYe@Va#ExhG|F zIjZ)oLx`v#nemYX7ruX(ggEd>Kp}Qw+G+qJMQwZ;sQQEdq6gQO$CIS8~@yyxectNCuFEM=roJAhBh_>bWtWj}f9;K|7 z2s*_?ESs&L0e`u8zzC^e*q9jp#%xM{G{t?--)$8V>PM}X3))}Jq5S_PX8zS2EJvRp7nAmEKKdLC%vIuURflOFDEZA zCjq881U`4$?_uV8aXJMg#ZJHC;`jmpapt^6#rtuo0)+&Bt7OwoL(Ae4%09|RH3tbJ z217oxysDWYnPrCx?wpNBjnfIGV}?IT=N^4~B;eVY+XC>rvTXdme$pmzID0#ACWH@% z2r>0oXtef}6_Fz$ytIJ7q3sD{!$NAegKT-Iu-jn8^i4;9+16hDydTxn_=y_~NNv25 z!>`H{#0&=Q@{7LyI-XXqq&>TYvAsZaYjJ&c4(KQnXWiR@#%G=#jErPGRswJD%`Ie` zUBrQL1$)~VknIGWEV!#103sgA!02GF<@6%1sEnI4sUGm)cW8xoSBp-Huc&DYhRFhK${Z zt*RabQ-)*WQzWFO3J;wY=)x=uTc7ynsimgPG)QpBH(xeP9;DH);#Z#9lLS#+=l&BSG#o1glUIvWWEf$ zI%&;HJBGlrs0t@6E9PPzC8BTv!lvL#(P4G6F&(rH3c=cHF>-Iwl15=u?<-j4SP|~} zO5?D04gtnuaoBlTN)pZzK$)p!u|CNP50`r8?5qIyW3RHavs^>{hV|40tjAFhy%_eP zNXJi=Xo~=a#ToZ7|5ud#W<(6?>JMyArk@lnbE2Cfe2SkB~KAVO?R>C$O;vK*^T5=M3A+8!$im}M~sZroRf0BsUO3`VCD{TW zEl3TgJW=n}T;%Wp7u}I|k;_!pQ5kgZqSWN6CTyPYfxZb)ZXrFh&mpT7 zFY`zQ^F~5b?rC-?fIA+$3Iu+k28nT^b7YpNyJDb$)vT6tvwTf|-Xys$lVHgOF`H4b z+G6K&E_va_<6FY&wm5W_Ef9ttlI1xYrjQ*bLVB$a z67GHsfgda+rzwCJ4Bg;8REV%B=7*Xl6l82;Zzn19uj%l*1h16Pk3gXau|k~^1yIs~ ztSi6%Ofu0HtV0Zv82J`vdSy{cGHT+^Eut8tA7FjH^y(j^XR>l#m1)eQM0!};MzdY40h&Mq$#H#(thVe$WIS}0 zmFqtH&(3duV=kl9N!)xul>A?hXrpBK%zam+Vnmr%^N$hjydGJ8)X;{ zb9eWh`$){F>Yv20>9&hUlJr46aBZ3&W~cR&K@6THe^w{W;Xp9ZS6JXq?ek^-_twbf zz5I*SRF5}4tjnuQoZ&Zui_OiSGC5^9+uW8!;uV~zY8NCCnL)WmVI=0{d+}m7tLB%f zgMjAy%lGaOyW1taPoqjVx0jhj-pSO3UwUP1rE-`&E4j;enI=zW&T3O(JxshNSZ;lq z!A>^;eh?`kYMjc){9;|?JICigQ5Qvfw6x#5^Trr{R}5icQfyo5D$Rl&E^7uREPbF% zuu~%T=3X}ad8KXtt(uJE(tvrVydg6#&J!M=TjTdbKWW@8Z1BSOBnK~4CjQF*%Vgcz zMI?CdifosGh}0uikmGrZ_Qu8OGa2cx_^b>|J`cj{Hp*0NMNe0jxl26)M1ywzW;@`U zFXRl5M6A}w7LzE&y|%f<{#qlBQ51ilRYvDMYjg}c+y;q&)bXMWY%5 z0-amQj?Fnu-hBC$<3hLJ-xYlsAZLHs->QK*y4CpQFhXMF+M0jX8E!&CjaTiiw$vTs zbf)|O9B_L?a3;-JivTfr|N6D&`@L^rL0dbM!x z&YbZ#$+8xWzhGs_nuTA^HF%cMjriXlaevmz)FNf?`^rPaQ|z9+N3j}z1onGJNc@c4bzpmCPk zQcr!GA7=dh^lnMlf$^sbYcp24%}XrLoO6G&;3Hj{zd9!b7!6)|GLUX)GBj-CZ2y|k zA!n@>{$~GBuSkB1c0rtH!s`*=b`2N3OaL@A1`hk1f4a^JmFUnLBW*HBll+$(z3y6@>6E*q2%=DBN8&F_Zx_8|q$>4z;(9)+cK>lCVZw z+7j_vQVnu@zoc@l&`dT;PtWX!pIs|xal z#btQ6u%&#bujhcgFte zZJnR#KmHIHMhBih!}i#ghSr2!V1!*ffYfV)SRKdJ#PW?Yugbll@WH9@a%~el8)~5^ zlmvxvBA`r>z?~2NsURJrgsH4g7E~W@r_y$_jvhJ&x%3@;UBNV`+qAEBylO~X8`%2)kp#xZ@` zXK*~^r~J=|I&u%CQ={Lm5sXO}n+evBCjZ7yH_J01kw{Kk`&LZH((pm+x}V}c|F^H- zWJrCleU(8voBU4hD3xIl>^&F}>@|Czmum&TFy&<5TU_s_%*>+M*fyZih)WW2Iho{v zPGTT@XXnR{zkxNmY3_(dW&TI){L`!lRT_$4m8Ez1_KoIb-_eU**JlvmPFOt1Uo#qH zq<*%w8<$qMMNCVs+@cI_>^#M_*EdNf?63-ZVi)!2*@WWfH5|kaWr)TMD<<2z8AF6iwNZt^1 zy&GMoR->tK=!AcGT_qLw;CalsI~n2x9*s{!z*eOLyVZ^T06$}K+V(adEwT=e^roU9 zs6rzE$Xu@O+X9NK!lnDQhpEx@1090QUE$2y zxp2Lf6rOV=)|$BeF(lVY?+t{S8n+qy%$VR5Iu8_Y*Hea>T04?)=CDUqh^smkRb-py z|9GJI(DEiSc;xlavchNKG}rzPvwZa%EIAJWVdG`a{@v;P#JfIs6ZCFyWj_oXNlY6` zu4qwvBAxiUM|`d_cEUyFC0ppryw&yeC zofwOuoCE}Q-i+pg_lr;3`a5S{eQMX&v-(ZF>}4JMP&C=sss6l}&WxmLS~Ss>M+I9M z{Zn(e*QY8w_U7>+^%U(l-8vgyu@@yY1|^+fS5bb)Dif z$lAl~-ecp-Jv&5~P zLttZcwsLIG`r&TM!rpc9pI?mEBo!4dMm;JBbeNU&Y2T9%HBQKFnvcD+8@w)vjh4?%49$^LbX@lC6Ovsp-K z!tYrv|1I7w*zOu*`RG`({q!E4QIq^#-nWhO(Jms1w`^lte?E?(s~zAd`YllO+eRSZ z^Zj=^OLaQqv{kQsrl)yiCquHJI`|1^!HLUslivj=@J*ckia2<^Wt7?Qr+!++Mb5QI!1zu8h}^)r*7n(^NLSR^wNBS zABq`-j`Vfh=!?r=F2s_(`~|l0Vq$;w6{qpIx9*@`!7B2H8uq zf37^nDaCB{eqZMl^@Lkt;4)!?fWWLz7?}GH~><@x4c9?Dp%nW84w_M=UB zoaEZLDVg=JYtCcg_5_a}-Ny+p>qwon{XPQ!Db{h$Rgh|4Rn#vb4!QR5N#>pn*%iFlizvb`i5VO4-o`9%u>gSq% zIGo9r8qQGvSD;DGh#47xyf}rQz%;C+aBXCK?XfrGS9sBHKLd~heU)6U-?XUj{fk|yqRtWpF#VACo! z#I5QB&Ep`#y?2%rrbyc@vY^A+GozlI5i6;>uKp_2bH0Y))nIi)0q!hk|7W#7U4!oAR>bmr?<%kUi6s^A(nK-CFUPRa@G5kh=TlxBHLjM9>)^$eT{ACLt2Oh%_-Ra8MJH8`p`bn7; zzW{AzjdiA{=BY!R9aq1!%Op4DY^!Yw5x~8vyvRO6)t;Z;2$YbyO})I(BRS^YBy{K_ z+X)|Qb1DL#TJtkl`t1uPnl784l8Ku{>aL%EF1TPIX{B1WD%D^YT@vi%m!kQ5G|<*2 zXL8%MXQo2c*S>+RGx$>z^|PM?+|`}8YxjK{RJ>LU_JA1$k&^dA9}5`%|^rbH>dSxqT!R9 zaR-lUGn@*gg_VCMyoky8gYfLM*v}1k>0Vs9v$*-DawkdFAX^Wqy&-Jq#GEtUnOf!O zyc=&g@h4s?r+zQQ@5XO|TPfFe}reY+*{}72r!waEQ~>+Phk% z{Dl+#MLG!>Db7+n2-ux;DkCAMx%d0sw%mE|Ppb)E^W%-{JUI%^*El}S!Hpj`?eMg1 z!@FS`?3qPU&982i9|P)}{16K$ZP9pdwqtnz$GF#vFflkDn;OHQ>0iS9%__f93ix{a z>g6$6xJ~#<_V^y}p94)_4W6)qk0#Huh4ruJY47Mc!^s~1v?5%by(2Zmxa--m&uFsF z^+7pZ{jA(`1DZnh8f_I1dbuAxw`;1-zcjfNxYe(&Vd)bZpZi>^cygC#DRe#HgOGit z_(9HxL}J*k6u`#Qot$c0qc89ER$~+1+}Z!BhUuQ)T@lf0J@WR|G#{gVdVv@x<5j8# zD{l29+u$fp8ejYHYMHvRrX_N|Kk5@o_8z63QgwP;a%MVfonLzQTd&@UPw48#+oP)! zl^kkocr4r3R&B6bK4*B4e}#$l@!QvzWHaSs(oautQyg~a*3;}02vX^-v)S9Qz`?Gv zd((3JhQ6jPtIaEY(zC7B!qF>uqYtvjmGw5P1b5h)Gdf2UpII^}lqoc|Yi{TZnefNL zb60Hl*(m2cyQAiae7omoKn>p{H@b=2mebsN(Zu=qW5Z#leB1D&uj*bU?orB6!(daq z*q>daHg~{a2!V7_xEYl?y>Bq?>pZ3^)zGuQ(>}G}zf1jOav_(Wk<@`lrF-BZp_ci` z(&R6-df&l;Pt_^N%C%3G?2i_*!DYG1Ux#x(dex(Eg*duto?Ic5C|+sXtLWU5+E^S@ zRsx)H$FejynF7O!Z|> zU{OGRHBtYOmBxe6egc8rRU5(5a6D>ip&YS7?uX$w%}uSv-5&)zx;hRxEA|!@-0l=B zBqmuSYTELCuva`Rz|>B7K+nlj(A@RvbIZ!A&9fg36AWWg%ai<<+Da|OOuYka9Ja3C z5OcUOsf462U!>NBpMP%W94Bef2vuY2i7{&_67N`X&tDCm3o6!lJ>-^gUmMgS4vw28 ze$AmFkGCFyfN!!8rX75kKgaD#D=IAH+Pg*iZDwHAB)pDW)KaPY>t8)-4yDrpYn0V? zeX9&){dKe8b$b(iCLJgBu;|eaeW@==YmX-esI8(!1WH?+;bQfH_t$!%XLHOfuhXj( zWVx-pzjuce(d&ojUu!=zjWMdSzzr0|FWAoPmo~*|_g^H%mFDQQP-`i)yOtGn_4Ptt zO=}{DgVeP5eLIPjXm4NR+R^|^<1C5W-7~&}Jby-u_Sf`T`3&DhXTb428qa>lv+be2 zaKEIGh59a|VIf>{sm_pRDYLzimVK1c1kl6GLcMx$}_`CcSkoEy1-a@)*Pf}s2y4gj~z!>Tn z-901Do2ml66}Jc@E!GI^L>2B>QC!U`*sIES^I(VxvGlQ*kazi#|7{3yr8;Y&L}$xH zNnoV!{Yv{=_<{HcrAZio z7Hyh4zn7kWZ~SO+>P&qgp(K|-D0ZQ+ucNO6vuMQu^H`=L(DWxWlZ%N*C@ z-%TwIGW8q{DY7uekjs&mILFydIRy+R8Z8!3x1P&q?G{u;E$N}lFDnpPO+l}Gr4etC zSgj#E`Hx;bjkud>@ckIFBt-7U z;VIOYIt=Zz-}s=f0@I)h2-G33SUb8N;I`Ne|-|ehw=fPs!Ij&@rzr3AM+!2wlMsN9Ys*2 z6WZDMb*~sB?0;|xQ+u7i&I{Jy03^s=0Eovp2+@!bZGiD8xkxB4^hD_5ZD$L&if7>D;d;lN>xpjexe=LfClzPA#R#QqJ*ga~Z#yD7`4h3Ru00d(4g&HL6-vMH< z`5VB56fy!{U{V7O-sh(%(C;G0#quzi1h}RP(1GypP##}h1xzvb3bYwi49Ru_0MN-q z70{nUnpgw2*zM(;fHx-D5Fc~nprOO|fDATN<1TPKvQetQ)ggcY*>exD!3H@v0bbZ` zI#(bPyFKU*jA7bG{w;X|*6218YA<55oO}RJ>^7qxpn=_f9RNJWYJ;mIkUv+R0xnoY zME297{QZ^D$Mgx&gqJRfXN8=NOeBuUU#{eoMcP?-X zz1ouK}Qe>a%pTp!zJI-p0m^qWqGQ-&5nYfwXr-MyW+r zQ_fK5Z3@KQ&bI8iu4!1C^z$Mv`2h_6QdaX>I6-Y|TgBk^?U|w#wgM;E^CH`{3$o$$ zLWECyvLi}D6_i81xh3Sh9bSnGGtFiQigDR>sN?L*oV@rbx{GQ>;LTT;D_L1Q6L8a~ zLBWUZ^ch7x2r5$_gI|$ht~ch5*H$G|*2bML7w+=DBnx-Go|k$JKV{)2UV2{6=RyO{ zKJWCOKfP(2chqpB+djQ53RUAYWw;@ozp2X;lz7PI>76bix$#IywD0D+-a}CdRc8W= z)>5`G?&z>c;V-|e&hJcGSr#@u4ByAOg(oTQc}+^(DL(AUQhagUTs(!#dk-u9`5uXZ z5Bg8OrZ1MY-PDOYd>1BOqMuH-4fEuv!;h6izG~9>D0hBeZO)phgAeuC(EYw4paRug z5kd6;`dYxL)3ATf69R=mWn&{xaYKns%=Y zP)A=O%K#1Z6;3&zjlMD}2XxR^@5%us^wmr`0G-|m*#Vh916RmUSO0GR2HigcO6(|F zvs7UWfCGcQh8}Zg|GhP#D+DJZMUESh#7+SI{S2U|Dv-1SU_7nJDw3jTE5EUi|QF*`{l>h^p`UFKS zI}cGWgAZztH7ug2b}A5+9~7+uc#phTFqLEf3+>Mdri8&%PDH}1d1UKt6(Dqk>~wre zT+If9jTk}o8Yhql0|?25NYujz$*KX8BQ*B5Zq^g%Ocz9y6TRf|4s}#lQ^Wp!N5I~z zD|JHfg)2&s{{Pzz4t958GK;hO#H^3ocXx==0=3<{F5y3ld4}M4MvvOmB!rzFRNbi7Ys6A6?lLnZ;~emkyi<5QwIp4yC%903Us*~ zMWI1d&&h@60TH=*Dx zh%6-4iL{{R6>;B(od~FB7m5CN;54+Lq|gJ$LF8i(2c*{*LJFPGo!5>+aUw!1NkGji zjOX!0w^JEOV6dlL|LY207hT5Hki*fD*m#zgfZ+)CwASr?LHRHoz>L>Kw zTfmk;m<`c`qfN)DsAvHgLELtL1F}Vr6&Bl9$X4&lKazQ4Tv$?(DDKW07MB7f`U+5@ z{aitD_cxBYpg`;KTym`y;+)yS=8$3umLIWqj@hX9f5g@-EtuDW>7VX8g0M8Gf4)J1 zp1fftcd?|X{_RofND~VyNJ0*hkUo(Xsr`Q>$d<5sbfFCu+}~p^$kUEVafFqZP&A|` z3VIx#932EOu(lJRN9661pcWuteEV_#SG7aR032*K9azwfiD%WBDIfvTI0$JxdHc-b zVT<5{jvdF@_3wZ*juRfU>Am>I5i{#%=kf(NISyp{3AWDR;sMGbIX+c@rV&g1r1ig`#kS+FbzG zk#Lh@dTA!~&r_=C{&$f65&@&S0Fxushcqp2S4cfOG(DV*g^?L-c?2?8`n8AcDrY7{_U=^uau2Wkdd?TY8hfPxNzf>t{b#Z8repyZ&w zI6#f1E4K&I<*oV;fDFr#GrbTm+3<+R1Nx}|XR!pIp_mHB|1zmTvC9BHD32NlsOQ~O zS#L!<{15^PINp9M{qXUXa=&0{Etn(t5~wo;*sje#~-fIb-y6|dw&1+w1&@K5v{%7$=GRip}JqZN8c^Fu-Z`}4>dEv7PvnG=|=;@Vk4(7FFW z&$ywX&|;YYOd326tzZzcUh9G8{W?|?D>)KP3#rlnkD5bI6jU1Ry5$fg?C6CSjvayq z0?J*m2u1$ojV41YZ1l>YWH;p0RY<2IH2Iy3;u#zbRr_(Q;rb6qgM0v*91oF?CJLNO zf={X-4c++vt6@I~4P8HmM(cItDnrmRC;+~H^95a<2}MCULG|HdV>gB&WADPzWIwO} zxphzxX(W6tGKI7a{6`xi5-kR;^9jJ6Vaz-qZ@_z-55j~0!7IH$1CL7zfla0OM#@^`d_y6v@_nrIBoIX=iUBA;a z(_MY4>sJ*=P^o=Th{|%{5U?O1&>$d13M=x7h*S`T|J-?upb@5H-I8MvFcJ$0aBHFq z=Ji29K&<|@|3Uo6@+ZxI5Xlgr4F3uopv?aY)}UPf3K7jj$-9Tp>DQB>F!29(xPQRO zpoRbRK&30Ag2MklukxQhVlaV!;U-{={|d=qzW)lZ9YpC0)1WAgqTu|X|2@V(Dj0y# z%+AEswOJ3wPknh==y-||m<}^qUjZjUk_>j{)R4~V zrcHIT?nZ}WvwO9K?H2MN2(4!IO6jY`Q}^<^e|`4klh9SSyai=4^4t1Oy!TU&?<~*L zX5-H5fZP>+KvYCp1(rcmq#nn1g)`7OB8autzT8i+;NUWkzx{ic0Z~wHn-9{hI=brF z4r}chA1iI$DFAYFL@4d&acG~C z`S0@E=gjEZ{rt%TEYcLCDDOAflo#7rfNb!G^;<`D?a{gZn_hqzVK3e8&K(i^NAU=- z@I1@dVJLsY#Mq(o?PCIPz1?|HIDHp80BqivPCxVrd(rfMyIlj~KOL>#TB3LMJPD$5 z?9|{#Qe3FB#nyfa0JDX+1hUDsgM~SWzg#N7!WRgt<_amTY>J{E#X75`G2qJd)ROht z$9`JduqJP#BSIBDkO1_U5iC5uq&11pkH&5B)-HG6AGse@2|}A%%X!e@?;E0lsq)Dk zX!TwtJEAsm&%R(Pl<_e5h(pz!&0OUQpk#msGk(kui-y!`U}MVsNBliR1|=udVBm`Q zXNz!?m^52^Hrdw4oCUy6eYH|Ru=%b2beaVCY#{`g@sY#_Ka@2tFpU~nf*_+pdbn_7 z#ecpG3XtrTH`B+y#$C*hF$TXki5T%m+1KWzE3B5R6LJfoL<}?dXb1OCrsS}bG&`(0 zR`>3#4n=Ewhk;={dB;P3NjcVR_0>4J(*|6v~*| z9cGnff`J~X#F|9#fvl{e%E~NW5w%73Ux8vTzCKw#^{Ff3(5sX54;1_T${6s*c3TK* z}bx*UYdpsE5G3$L*H-2(b;Ec ze3it3kxm(^L;T-c2MAY7OYmd9t{m*zX*Hr|HzVS0dUm9m9qsFV%_71HqK?eSXEMV? zW`R}(T<9lpS{xH8V{{D{UGk%L8yN-nWU3N zy8#&Td*Finvq}uf54{!REI_|$mu6l#A0_*skXI_K3pNAA1RQ<(qZz7 ztBhhRCJI(Ah#wUkQ)oJ|N00?sYr@Gii&sXCje?tEK;hKH!ceF7tE*hFuPeC#%uX!u zAucWd69xV%<~KBiukyO-RehTfZmSoV#hMikXi4)&;UO#Oq2*C{Wapbmh`G2uJBbh& z85d~xPa=4nc@teupJE;|943^>F_f7hj}|uib^twOSiU+Qg`0IbH~1NO&+R9Z!I0a6_6$QL_=84aI8oh-7MF+JzG*i&i#mI!L!8+>2b>a* zQw>$LsoyD5WjpQU%$!3{%T=A`fLgZd3z@4%Wv!x0`B{~`&z)Ch*@U}BA#FVthY=xM zMpW#o25Q`poKGqHcba+i)LP65i@%1tBFoWny??~N;R{@!x@E-mr7-}TsMVa`X}pE( zaNZa-H|uIyj-B7fn3F%|QWjW? z*uJX5rVo7q+fs!Q0c`-DI6A5{+)XD;B8|}+#S5x^mJ1q_4X(rQbDvSSHWX-(hv}&pp)bQNh%WQt8D!CJDn0sZ{a#l{`uu3OCtJ%QWbs+Y0 zVoI6UvGcJQMB0tmQ4(&=1~n{=nLK6H1=Q#K zg>7Pm)HaFe1SbGZq!c_6gN#U8Mr9oYdhy3eURIJtqwAkdZ5i3RTT=>sx8ni%sD@}8 zgNMO&4eh{8Q1_nNB3jN8ijw@;2+YdwDGWJHF}ZnVZWvl5^VVP<-Ic}8AJ(@GYFeEk z9}ezSP7xwl99UbES!sS#aGP!URefm|^NL5IuXRLW;)sr~R$Af)kMB@jx_wKm?!cuOG z7Ol0l%0%h3ulvCv=k^RhY_7njQ29<1HNYcJJ3ZO_;`I<)*T z+g-H7vxDco28e8KJROn3z%`k(xJ$aqIBgG03KMhWjRU4kMb%zIVqe+adus*D3FnrN zmxJZm7LucSeWj$9b_lM+z}}(Fwjmx+K)0{GDwNJ--6v7A~$RV1+u155Yi z7CZZkGpippPaYf`Cub;;G!ko>@@nyCHoZRZ?NWACEj`=kckcGr9L) zO*-nNth;wBt-gEyk+WWYOC@vmQu>kSC(@w#d{eDsOS-E=%o^|UrF?N4lO zTHF8*&Tj*AUalLuW(CZU+E6P6cZE-XS~QLH8e1oSYWDVTB=XG9Z?EKJUBfFhIoe!U z+1v!V*^8y$OCF7?x2x#Z(6kK}@K)Tx@H3D->#ZajaF;ms%Uy2dB%asE^=4+V#btd- zn)KcmAtmxYT2M!wzt;}8E{i&#{=!BZSf&h6&mAKzdyp9oEi{}>{kF5(R4D;XiSNZH z#36`thZZrsMS_PoEOHKrvmH)^f~o#4_HcCuH>4L9r<*+KlE;I8Gd2gA1-=`Giu{M| zTdW9AD`;OA^K^9d?uFMwa485J=(CK{pWr539KR#8WaL zi4PJsyU7adYm<&z6bA-Mvomt5F5xtUU;7j%evr(6C&=Do`QgasXb$)K&Ie|#@e-87 zOK<>dqH*~eakE(vMIXh+b&k==`&Hi~w7FV}Zz`_eQP7K--(Hrt!9A19k#2EZXUtFr z6?0N-uR!`N?;fV?4~nc3*1cCRviT^G>`vX%xROV0TOMn9L4LqWf4I|$#X7Ucr#Of; z9bLu2b3IEK$mV!I$ecruefNko^n|@*Ni2?s%Cl(ABc3C6($1)H=X}e-XgN9ZD_fyq z=bpcd$^t*(?v%K-NDGap_~P5@jF7pgDPq4)jaau#TZ$Myx6pvH!gaf^W1Mfyd-r_FI3n{b z^Ba!}vHdYxd^$ql2|I|eVNs_Y(~3)?8^#}<1DV~_oPX6`CSW+icM|_gBS)*S{X0vD zmZdRwCT0fc1Z+Is$7d$#w8#apKcOv(dtPDguOUkTu1Ack;IBW%|0>Lj_U9cOvxsKp z4K(v=8g`P$k9YAz5;>3CxCc>VaIh>5(#DR=cvED35}v6^V(39&a2KaF6ikI@Vsm9v zHA#7nlD+f*!#O5Nn6GQEOqKB>~qCe8FgfHe`zqtV5>z1Wsj}=|W zO^m0K#hj+b?mn2E6O)jcx!RV%`5-`crTMKWUTpmJM4&N=RVt82qLyO%H4uL0Ufa}| zII3;Qe6!PPBYYuZa#LN593OkdDC~WS0|%F}3BpD*NtF#>tY{7E5^W$*Sm`@S9mD)j z{L^6mhppy!-@&j_jt6OA$ScbFz}etDjt!L{RDXdEk;G(8;wNCzUEhl?&#t9dy+rl( z&U8sADSP9+^9;3nU;S>TR_xEfoJG4V+WJFcNRCCKb@t&wsnDeqc1}uT!*Xlp*7T9* zcG0#mHDi87_CN{bp1PEq&Ar58Ca{7}`(2z1ESt*=nYkk z#l|^>&O$RjIPhW4rsE_%PH8pMD&cA2QX0_sL4=|1<_T1s@w@g^L4~z2U|)*7#lu4s zIm_@s!x=9SA>IG|Q16FkhV7%;Kf3v?)x|Z{?e@{FTYei0OZBz3YPP|xTUt9Smk%rq zjsZ&1W9f?q{m+lTOU1rkC2spBC#ZQb*M?=Z#OOHShjYYfQwZUn#Q#p&o226eay&p92o&cnu1%Jo z>(3(a{&dNmvAo93)w((5X6(|UGRqQ}N})lfLl=|(*jA@LBMMktf?M@;C2t^O>ARQh zxTXgy3z-(v{Js=|-`OxJoFY`@?U;O&WOguv$3tht;NR~B0(vfoLlil(sx8Dr7_K2RiF#=7b^;T9!a1bn81!HZ3)yh5IIjyQ`1*eR;* z2N7C&r3DDzBuc`PqG0tmXzC4khq7RzqUOUwcXc^H!K=31V*MLJEeCgwjf)7=TzW*z zcJw`}mmkjiqD;43X$iZJL@|?EUhvqn<)~0>&n=^Z%=9nI>G4&!7Y|E&E))A!Uf)g! z+s;hB`meu-QqI-K60OK`r7zgS{oH8X=R~`Zu8Me@qit-l7+-dc8w$3`6|~JglPFWQ zD6L(9bHR?Dk${jgkIQm2`5yVavP{#JO~T}Qas?jolr7?b-Oz)5hweOnn(O1M8gphk# zT`y2pJ-&e#GF7-Gp)ysq;~P@m94`%ZRI_G4`tt49<~J!DcI)P1b!c1X0o`(JdxBi^ zCIfZTW-7dk(1cf|Q>J@Q?bfx4XIc-DefK5nCWEF$E2fg{m`9Hmxk<*ASkFb;A4O|k z9{U&ia|outp5`HTHIwr-L7(97&nvQVE1;CI7I>^WslTlmu17uz{KX1(WV9?QoNNJ6 zj~=k|-AhVHDjA5X5WGV90m9Bs9cW#bUs^j)h?>$b+(>M#46LXYB*NbHzrb+!Pjj7Q zdnp!B)Rj0U6P(WqU-6y1#BO`ecV<{DRM)Zb34p9#%|FfivM#@Z4g{^e(xgtNGiqO4 z?2eVdpBEDiu#TU+kJYK1zGno0!36+obyqo0gCzi)n_pWb--q9A;_tE?NtyUe9 zy?$7=IY>{eAMdbe*o!AWLj<}9u9C9tDrL;z1+VdZ5SE4!gg^-UAg3$*^7vDOo1Qsc z(zVnHizqnPRaIbo^=SjA9H_@*(@s=r3y>Df{~*7;xQJ;}P{R1+2H0|Mz`p=pW)K}X z_k8#0?}8YAAkL7ij5yV27f<8Egg#;P-!nffoFACvBOQN|TkEiW*YRW`Dp}N}y$Eh9 zLcQXsxyvt0<#=?7e@CuSRkt1-5~Q`mRI1>Xu8tS9q1S|2%XeVu1+hajh-|Gcn2jfO zGeYS1&#{=NLguLj{r&K*2NMN2$df_)$9dD~vahY3o78#>p4u z9v7u{h0=QK+ED(^2aH;2LA=SqCyXlL5E(Cb2(2BOJbDk0QVI)vow@T?EQD-VFl$p) z#rxaJK`UtQ5qWclWP&5W-N3-`wJW5a$?X1X#6E`hjh3qB?;_H?p=5->DdwEzI?I=J z`%+=*Dw%`Ifk_zt>CHS3TIe9Pjm*mx@@A2S>C0FdUN)JFS1aqgfZKMy+x!xRTuz+r z-{(zQ8JW{RGsE)+xuo@4)IsbLW>jTF>35=b*2Z9u@k?CoFP{j2l3Ma^z-u*~^S7s? zoGMq#MskTToX56aVu@hWMl!lvet7%J%dhJLf_N2bnRgl3tMWNw2@n=1I)#P?Bso-J z#>|ktyPN1stP}0nEi)lu=VV<`+!hjyt0soY>?F_Zv!g7(w4D0tkv(Vpg01*@LhC0% zB?-b&la9W+E`N2v37bTxL-e8u%W6ft8agl<$9EUkGKrBznLkeK9#n!uG5(Q%8Z$yp z05^pp9^n?*-8W%KFrx&C;sZB9DEO>6gcV~QCpul`T*JS$Vr><*ntlI>6%yhLsIC21D0)tda7Hp zusKXhsN?EFNr)B_*KZ|IG`Ip=#}d)eTu4Zc(|TF;&Y(LE`<5P1(`{BaFlqWx%~ir7 zkPoE-jm!`5B3Z8nrkslh<$f#b#IAH=ea8=-VNwoyLrpxxYC>IWM3iYj34GT-Y~Tia zF@(5?PAFrP$m&4-HOL{Y$wgAJ6By#emDCRo{r-wFmoFmy`Ni}pUT5Bxnqga5`UCBF z(FjF$=Md}<(gYzM7OAA-uC@LUMFiJZ{!FCx0E}k<;zQ`$ zr=wxPZM!VSwJ1j}R%NnxByVVX73@9MHEeT)?UHIPV0yjVWbhOIR&C&r_xz={s!^kS? z2JQ#ew1D8Dr*e_7=8qDyUzTPv25kKm6o1`5NocD<_2oblrQ;sjAiiq%ONuj>$3DEj znp~2@wo)tnLe1sIWQke^@2h+u5|$6(vf;NDKmp*Sn)kE z%9|l+gEwnj0UG1n1RBpukZY0Dp>TN9CPRxy+eMj&>3C7NIzusxZdo`n`UbD+B<)uA zfc&LF=T=;$8l(MiWMqB7r4Lr$r2REc%&j~H($jvt156l{O`ihe)}}H|mcrzyy4DY&ELpZ64)ac$M@xcFYSy<*{M{<8$Y`1K$%(MArB}i)5~*yn zJjRIqkrQ)!!V*)+T?h`H5MR6?kfCc2c4Wk%kAz;sI!ha+J5*5bCcvdFXJpLK-8SHl z{ay)dAJ6%Mbnm@qwPHL47QdoE2!_MHfi5lNhqn;PC-?8G zUv#Wij7WUhPH`X%4hWs-AVoLvEQEgLr)7Q$rtaB9df~m>LVD%pcp~dj41ZNIa+Q$# zrB-b}`CIKb)t15{ZTTwJ@?om)Eqty+`_#-zhuL0hjui+mv=G zlbT#!C~GH9ja=dW#S&sw)etV4eR3S_P_i`XmR(Y#o$xb(7n!JR(2J|&?DOtdNeCv? z`}=kLC}A;Lk{hv1{J~h`9yCJK4}A8e$Uhjcc&g}TU2{yFL&k&h34}-b}#)# zdOrFDSC)fTgk@#WvXy{msA zOmm=wjf0~0|D_(~V@=PU10`+@lfi=i7gMN$O#Ckf&z&9!Rkv4CHNoydEQsF~kr!te zocazTGBHJO{Kq}gdQ|Q4H;TAr z>{)-IC;u(SpRR+gM)^pf@}?BukWoQnNGhAuK@Ox}3lFk*Yw1Qq`VibR;dd#^QhufN zxqVC9nDCPVj3t8|Rz1cI*(SbbaQMLoVWr-`%FzRGtHsK|U1v`A^RPpjm`C1p@+6e{0- zS9X0GHDl0~?5F01_+oI7wdrn~z!#|FLdz^l$SI4#XGxz~)wZ2sr~hklKAwlved?e# z&bN)}T6i?5!|fm@j?kTds3`1m@%Jfov6ivSC>f;D7pgPc=^|RT0uH?-;sX%jDru_u+BWQBrF@bHu2jWP4bui1a}?d8RF(x zG&nZ==+F53exPkFR;|i&#p-*H^}9msyT7geVP5#N?@gkci&Bl${FN;0g)FP|c&bXs zE&t>sE16%@B{^aN#mM6xk7&X`C(;gK2&?)$kY=S_WmQhOf;v9<{8Q>Y7YlLJO1Nl z&ghdL-@!mYIw1bHn>GIMOZ+d={U08_cHu7%?-mgAuhXT^x`Ps>zb$~`H1Y=xL;S}H z((Cp9)uA+Ug#Y?4=L9XJOs`o4g$H7_V0_VjVhEVUT9~sKlG4|~ldwY2I#z)GhQL9K zv5z7cSC-pd4N0hHUj-){Cy0e7x0b2wOuxk2%I0*>b_i)|!J{hSd;i1s_xdI0vn_21 z!D>Wdd({1U**V#MyoK}m`rdj8#vKB@)Dy)KNld-Whtf57>1#Mohhx281N#&hOs{)` zqr-=2q8C04Og}1~ONiW^{Mtw^^HI~ig#=?~p>t=eo^z1$pNe6Oly4+3jBbl@xZa@; zCI$V5BfG#YT=Lt+dn3)0kkJ^FvztfNRls6 z5D5756wan~+b)K&rDXGcMKa(ZfO#cF(yg#*>K~h~p=7PH+&ZkP@IH2{wyN-oH93r- zvmDt+^>Dl-v*cDeb1D{(-g7q*ZDmBYCmUQYthP2=VY%Ze)FeiVKxo9Cw?D#W#N)b~ zM=Se!kJy^)+t)O{129LYve?5sr2avDYd3vtvY*0jhd;<)&c(^v@~PGJ5ENh#WvS41 zbx2x2^<$Aj$Jn4oXF$Xybh?zmvTslw&WK8hay~PEm>l_5iUoVqmB)g;pp5a2Q=0SS zQBf1D)j2ZrBrP?IWo8wVEkS}3-d?j60p;LPfgTlwExjcQ2QZ`0_xu7Wj;f}1v7Bj| zsdm|?)>Omsrpa~)Q~HD6n%+dO1lHyfbpFCR?65U5Et5mvR!=L^2vp+4Ae%Ho!z;5RJRQRAi9ph7LiAq>LmANzQ8R%}LH`#(W@BoYXHi|9U*R z-i}j~+Kn<<1~9pFKe}>YfNxAwo=+tGU>k#DogV7vp?!CRXzl&IEoelO?y)5akV!i# zBq82vnNE_})QP$lYWX*rK|Sq41yQMip0YjruHrpLL?9VS1tAz)_rXYzcPTar7k7I& zpCe{BbGeC#KF{eIOQrZ@=%)Vz&dgF$Z7{MBE_l!kH*Vh=16aQ1dNUaG=AVUC=Nx%| zKNwea)_4;e6mpJ#e=+G+6Fu;$EiYrlu`U-?uY$&DW0ajXxFA(KKR7E6PxC}2q zw{*Xz+Ise0HfHM>kzGD449eJ-vxnvN7C9Led0J&$SR1S&~}eh zGV-BjDQr;F;7_6B(-`!JgHM*H7T|oXB4=&a(SDlrou7D0d-ppqeMOs&AtM^KbL%2J zq@U;<>TLCgS-`_zy8Z>PtZzcr;k_&id(xlW^|OJ6kkK(9W_`byvDgA9Z=*K<;X*`< z2hh|Eh@%YgIVTualg1zOgH9`s##duYZZ-v0Y zEM_;lARW=BK6^)Cb=0%p!E?Gf((J@@4_FO8z?X4=9=aF!t;Qmpvi36JEYIdtZ}|$F zMF}QS8HVlHNnj*$Cq9ZQdexC>b;g~luwVay8075}Mq+IjlP}7Cen6h4$~+^f9eKX^sw$OXK_uC38+VYN zY12BHtD97h;Y@CIjIA{!jbW|&1f<9foO3JS7&T~r#+$~}MFKEM(kyYjtK5ScnTBCb zm>X(=^wk|R7Ofjxhs2im;k5{EdPFGM_FOY#eOPzI(k zLa4OYS5#QEr7BqJIz!;nOW?wAL>szdM$KfUft!%7aY%9V zG;`4yvk5TW2^(GMM`e4^Dk*h&o&N2}1X0xsz0vO6m*6$nv)>d|qtYoNs1%A-C0+tb zhm2^Ictchg2j~D+L|hP#E=_C(v7r+Ul_YPOKJK^wv^VzmZ{dO#PKjihd8mgU z@OvGB3}5NM4lqHFyh(q50GaNw;1G`j$c}rjsKu4ev(xA`k->BL&vUG#H*sH^ST-KT z3&bw7|v zE%{{gOc5Yfc~TZ!1o`_o<(he8R{2e8^e&0Rl73f&NWwQ_2uL!YJcTS~XSTqt*j-C+ z=pZPezWf_^EZ;{`+6Z`c1*~NOj`#bUYiMI61Sp-9yRib(0-FMhVh1ygzK$}zKv_q6 zM{~XepQX#u!i8e+Ks)i^1XEDHB5GB&X;mp}3?cybHy7afCbiaqF6~(^hD!aIQnt7@ zRDLb`2b4|`;Dv*7`!26?Ivy#Ma?D0h4Rett!w9SGYC?8Q>eweTGtwbUC*37Gif)6` z)Z6SpXzkO^IQy8`eVuRBjZaKXti|^*N4v+ysi~`rcKc` z@k3L+wG#PN8SQJDzOVYbRl(>BQyf=>1GdwNw=KtYUAa69o{_$Z^)qULmL5IVOz>zlW#){AQMH5kTEQ2~7lD z0KAlFV`~93ictauf?-k$5=A1RWC=N)-T0gFp?xPGC)~zb+ZO6|{4<{4y@^;+q);Ex z*RDoR+N6Y&Xr|+-cGu&XO*X#QhmCS3khJbSU(eqfz`G6k(+Yu9EO0ji}@(&nK8BDyiiScz%&o*d-$#dpIn;(zoy-@0E(1c3@)r))N$9Q?m4!mh}qJ+?s)tsj7 zKTF>@^EQ$eY)q#N3)RI zht_B3w3&liMK37>c4sZ^pv|ux`h1=ti0&Nz?tc0;amo1#;_j&SB{LhAqxn3>C$I0L zhgMSu-4BP7Q^_~{{&9y(=zHvyPtprgtP;rONO~I;k}eYg)9?@WH_Tyzdopw8fB=PWl}g;absM( zQ*Qrcp6TyQk4ADE(0`9Q5GzIl%SD}FVjpFKiN3r-_~@OozRD0la-F3kvtK%Q<5YR9 z$q~=F8NFLlTn_Xo3YcC((~<>@!Q&y)NFW?|Dnz_aQ2zidNLnRSbwM3{ybfqzxEur% zd3iE6oJs9nO7_|JL03Lg^xv%?rw{cNc$$~oJ-8gJl)N6}vF7+Bvv+c4uNp%*xX|NP zHuYU<-;EzL+4R01O)z3;-J-?O0yjpC#Qy~7XhvdJ1=;SNhys`QBR z1Y_BG;m{J@kv?H(UvqDYCT3Nr!f~vR@HWpE5sKcQ>NeF=m3W9)0 z%7l?m8XwA(VJ;XUxkLS88QDnOR;>C|+Pq%Waw$=5PclDljBeL#Q=_TZ9KC!Q-P~!g zS@Cha>CKi&PIe9Ke7@iLxBop6=J{T(T}{Ff2?Zd7C^E9@6u?ij%3`iYHN*hJsJcJ;Ex%4%B&o_6WRHInDp2Oc=Z zLFzg)s^w7a-C$-+hif6&cgvi&_c5lw`xWGE*_39R`WX46vl}UXr(Wa3JhC%kfFezGxf zjd>NvaE*I4#^jsz9e)M7Lg#z?lJ&kyk9%dqld%S-0PsG9C7j`zk-8(RNbYd1>Y1*8DkH0|7K?QF3==WlS~Tc3vbpK~M7WI^+HVHOwd@oy{fL(rM;Vv%@6+TmAg7CYc2C zR4Mv}ED*5D(56Z_Lh^hb9NLJ4gvQ)7#NWYDvg*pU`#x88i62LXNw#P1g|!Yt$uHC3 zCHRB93_;S2KYosJ!NI~IUec<*0c2}>T9IloFH6Mj_sQZHw0^4)CURl}XNIE^GPj5H z_;6lQb8?KAI)1fGP87zva`OTPoXA#!##M`r;1Se0JUKxw?SV}X0UAcsJJp!s)-tF4H$?GV>n2l`x>Bq9|`hu#y**%1i zgWnE%*@MXjSGT;>9Fx_rMad-t{J z!ssex{IwgT6teAvxfIQOlpWFWo1(iQNO4jMfW;sJw!*py{ivzpGQ9%sSDW>C`1P8Gqq!vKNqW z$*k$+2h*|8~6|jY` zVoTC9KLbcvy!;iCOAME5hWBwy2IQuU9_pnSArV>6!@V|g$n4d2Pp1ezr!?=d2;VjO zd+Q5RR8lGNyK0$m5tFlNfM?IgujIczz;`I(iChu&Qto#~xuVqYRj>1(nOe37q2VAQ zC95XIbmuT&q`><>h{HKx6<|N`4AriMo(bov1_2_WgljQKA<>0PK&PJKKom!`m>~-u zvWj$GTmxW6t>7&)tNPPsoO*2rDMSN?xN`uf0$UJSqwB%X$5iwSkS)=Vw9;-dj|3A6 z%a@j@K*zwqL5^c;5@DL{no&@nqU>#>Bj(gLZvaB?cKV!E)>yQ|7b9I69Q&8wP?&-JwBgfy}VqkT6Dphc(CI(@TFJNxQaJE4(w_>S%smIyn+awlA83Hz(^L%SrAaV4W& zn@k7cT?h9y8KuxWE9F74Vh7_HMDPv0@Ms(ScC{{KN_In~HIQCtXzyL4LHSt_(##9$ zLmaeoEJE2;JU!Q~ch2 zC=HD5iSl{iu+}ZA*&3a{7TUD=oBm;xA1ZK05Tp!L42u7oogu9R(&tDN?GO5y@($BgJ80f zH@?0;vHB|+6>^O|J#S5Bxa~Lvkjy{G>;S0VmFEaKN+c>x4Y^%=P1HfW$mqba-0kk zW}chKijA?v8cC?c8B_9t3pArpsdbiT;E|UXbByw4YQ+Nr?K|I%c?MGgsd>0RIfV}u z3L_*HKyN%bwT9N|$IxA_8sV59@|~>SI$7Z~k8k$RX+$))e(E2wLMtL~r>niXcL(2jy8*ma7qsWkExpFRDHL|4~cF-=3cRu2ZG=*oU>V|U`_ulv3El&9^|qdbO5Q61I`$S zKy*1Oju+$$XpKhng0WR~0HUIDEV~b;MO;v&CG->-ait4vl$!Ax9HqOg-h-esOc}S> zn{A&|N@s)(*HmzKgv~Xqb+pLeul85R8y9$-#ih4UPR$EXA#O>q*x-aymCOre9@ts?{WnazKYB_Y3U#H7NG0#`8+pnD zwq#+Kl!lb?I<Z z!=mQt0&f7cMeKlG5tmeMc98e-eL10$0&JBkGa!GM84V%BykYgWf&$}zbP_TkP7OBv zwq~AGwdgd^15+g!uM8wMM#;YSawpT1%2@SI)oapd!WCQ)HyQQ+V6*aKkS8evIS)7P zzcAj+4+|A@D)P8+&PMHBsK~Z z!oTj>E;vnGVz_7`Pr8dFz%SH^3N**C|0QuU|CY?^Q7TvzR%^Rd$BG`ajRz^2)v($r zU@oUf7|12y9HD>5(_^#znFY-XF-=of`S`mi#lY=aGL!3Q#k@HbQCA7@Tj8HXT}>Ev zM;)PVdR)RjiV@!6jQ&TlRkG(8SKE^fbI~fr6{ZJ$;VC8689NsMxHSocJcbt+ zZ^>9W4idRHy)5Cam0Do-wu#uo_nBmnW8KU6?c{Y19^1NWw}vn0&+kvQw2YRB&n&0pmS?I$+J0kIW^ zvdTRVNmNJx1oxgR7AuSIWp9ZnHbRk$;m$B44hHQviwPfcmKp<%w$L-*1={!^Eo(Tw zXX^Q08)k?kc)NPO+8#5?^{;8+I$cp+{SHlvQ{gVRyn%j3N<2mwjMVAeAccQ+Yk3o7 zfj{K8MsLa^?RN*_j!CeU^_J4So1qZIknscUUn7=v>M*kkwYZizm{Zr^-3m!i$BNBc z;^#S3Nx2vcy0if~9%qUNTbd^hHNhqoM!WL2<3hXilCIGaUIh8Hc#{^DAYeC~xlt#` zGg^lAGX(fWZaX9GL9ZG!oXnn6ZSXz@F)pa|`iby4|HMQ>WSXmh1=`$PzRsKt!3$Q1 z9zu2YAYpn;p$&1>|LPrPO>Lg>V=fJ8SB$_uP?%IsjSR4k_?uf4o5`-Y*0LUza>_v5 zCvaRu%>45WS5Bmh0U`3yM(d)VBkb1*?7^mQzlxrTofUiKxU3p%OZo1bfU=&os%MF@ zWpVq0oqRuJs)ej27N>0Lf|}EOk0jf9_rg?E?}Bs-^MvceK1$mma;_2hxrvyfD?$o) z;B9RtD-%F9?VZADGX}0$Cch*tQjvs7zhxo6-v^HQZ&rIsbt^clxlGdoV$`O^6^ z-Vk-cc7}UkcF2}ddb6)?m(Dvrk0`DnlSONVk+LHOS-wy99|@K-)n4)DF=n^F1uYxP zd_yu2J!vw3fTig4fjem!TB8%!?={;*b!;km_$a9&n4KDu0_i`0N|P*A{K2gh>rOkC3$K zz@Ip@M)VWz%fdU%B0j2y?Dq#Oi1B3l+0Sq~grJ2OVGiQcE*~wPnYsk?HYEBC*b+}s zK1ho;6)Fhs`ha)YizjQ$N03CbZZ*KHG*u=#7j(63~$+|bXxx! zqfkXV9j2$BBP|6R(H z9MQ}Ic%n&Q2b9TlPB)x#l`5D)(q`G|(n6|JqZcZ}ltEfsF;Md=w4M%FwElLW9%fQs z+S#q)+B}m`i^FeUa_xEqysmD}bH_OqjA;n77uVK2kG!`nx8v80K0j_)zL7mkN}#S` ztLq~VZkUc$W{kvS7^pkLTvfEi=wNv3t1y=XN#2I=S5YP+{TdkdW3+8$Mc`L3eXj#9 z22+B{^WjK({TlQ|1;#R=fnV!Y(Fdczk_!jf^po{m!_NOt8P@_=Q`W`rj@~aSYA(|Q zB{MzAP)3uA9!m1cV-#XWks?Dgd}|F!no`|PvNoOSn+y^+RS4@ECs7UyM`+ZOurMDv2G)iZkU4H>s( z`p)bc^=(J@Ev~WHTPn#8(7pG~ioa4~a>Ux|PNJT^m}zCJxii%q}DO;9~(RXitUSXkAB9a%e%UA(xi zb?Sk#ecw+$-(WIKoVDo6b-zsyZuK~S2}|F*TgRy4UD?S}yH)fuk0UYZ7l!9652#?>yDG>V~8K#H^-6az5J?{iZD{460etzIB29;0K*ClP@$* zc6IPtn05YqZVA3G_PHRJd$v*I`NW#L=IREG{^}=`qJk2?q|dgAh%eJq*c6u&vsGw+ zPgi)WC{o?8aZTXyuFtqQH~3IO=*yJ)H!JV1?TA{NV7Y3Haq_9R=Z`O+y>8FUwx;oC zCj2(>+wjnhy6S#st8c6^^Bi&f-X7;FO2xd=&P`W0SWjMjX2Bh=#WklgPv)aBi8}(K z?l@;CjW3+J)8T3SPo`VfA9z1MDOQr#^Rmtd8(qKtY;$g!_Sm}cr*-orTjpO3I)72@ z-EnqPWN_WPD4+I2N^3r6CT>~uPsAzb$Um3ji@L|2{ibkJe?ekJ*bha29GsN=!gPyY z;IDW4iX20)y8Uzd&Ju%NhW2p|6STt6_IKB}B-JHf(oIP#TwOOV*~4CQuvegUcy76` zSXcO4c)rtN)2Woi`d@?*T!6wQ?N&Sj;+92x{Yn^oS zIwt+Dul6L~xAl&a#>0Kf<^(R^VDi-F!I5(9r0-@78uriX=@GWt%fFMHG7^SAc%olX z?jn@9O^f*poo{qKc>b)B_mlnU0j`6EMIO$^?j9HCcw`2STrnhn<4w6%-J*`ii>JLt zI?L}*jmg`uyjJ4$x_Za^sHt6hU4P4P?j9TIG{-aeptApDv-)tki7xG))8@9FjyYBF zaZU8wQ!PKo)f(5dC&<5kCZg}3Nm%(j<7Ld+dqvarX8(Ndt>8~!zU_C6rv$b>(t+*B$D$G-lt<9>x${@C>F zL!WQXOBt&)B2{T$#jUx0Bj?_>P2SxqaKAAAPWPzig;&D!hI{37CbXdW^WRyTs+cSi zYubF>ea&%Q>4Qt2k6+O(uRj$q>#3)!WsR}CKyV7qa~b%!$5cj&{>|G?O14BXH@vvd zt%h<2xZpX`5Xlv|lR_=g>_Szp>e26R1lOv+*UQyRGG$y;aG@&RUy0O2$`3DarChTM zzhguSBJm>^j=TOId#;OUNx6p_DT&Oisp2AttGmgy+#1$!_{&HIgrY`Ashiy@!8O#fop4#Iu#+&5(U1$L_kzyk2w`AQ5P-z@QRagU{SE791ZQS zIpw}(|3Kw*8Hz$a9pHQ@eBrW5#np{v4!=>vA&qD-c5Oi4TwR7TNdUCwAk@UgLej<_ zl*3{58j%`3K>^Vm7`pVHG?^0CskE^g%Hxdv?lK)2FxH?AG?5}#mIqEuXgFmjoy3Nj zYxdL~{Iv<`($jU2NXQNp4LR0RCUtvEku2_QMLO8h5~Yr{wMQCc z`p_YcXgD_~GHW=?6JSn1o{p->JfO4Zpu;2v+I=2c$Atq^%My3aN8SAegO*s$2fdZK z+}8&Avt5Wj49Mt}i;$uW1ATlk(&Wg2(NRW)>)VkcZN3y43Bp>UaN?9~lMzsI1RGD3PvEUM?OAwDa5RvcO;bB(=vz^Ef0T_Hj`H4&YY(bEz8 zk*mx#p4AKZuLsZu86kbBmif|MT3O1(>wwjpC5?lxTd`88W7j8AqcV_|`~Xs8yrK+!L!?oRG}acRrqt&tBXNBhB6lS2VKmkbpmD^W z9wRL_V%bvRk-UgQgR%W%q=)4zkQN~rQ2_)2 z8>pKRcKAcR)LAqm{St~(DiAs93zspHTbuE;CukH_e}Z&aPtL*Xsk`v$_!E>AneaRn zL@-br7A0GBG>V6+{2eccQUa#%SdWFyJVd?Dgk*08Qac{BFOEQ=7>OKbhT*pZLOJ<8 z{bF_OQVtnlif3fYYOHxQn-dtk0WN%s3|Xj5xr4xp2i4olLMh*)+W7D@q{hN!KbTMC z!JGFpa3>Ze`zFQj@gRyp>Eotn++fLW67+e5!ZUc;b2N;~ysAq4GqdrUSD%F~BuEuz zqahEzCxd}ouxZ@wvOe$~phS>He*d+ysQou4$PD$H=a9u!*&sE*W-qv)x-;`ju7dqz zus7p*X}C-^J{XC^Ur1;7u@_+9bA^#o;e~3r;RVtoQ|l9>38q2wEv0f_8@s|Tg^h0f zwoPReFn22d|E%%94ro)H@IpEfvnqkZ{U%69VR0olNscN1k|tCW2x3PI1QxvL?iNtq zpY*6D<$7!nS#R<0N1B8|U$#QVCh^cyN&szuQ>u^&K^84?UI<8gKu+Ny^-38eb+t|( z8&*qWv#N&Js>)c7nre6`M^#IclFF!DE2Jtye@2j6)(g~GaI?7a=)Iq^^xZ9HIOwI6 zKJq1STzkQ3v~lrE^gT(egwd!}OEpxUSQlH>O6`JcKx5bv%*M!2#bnX%Rhe&J?GV7U)=<@^yo(}Uk=z|#!&g2p7v>l+}16MaOS z(||^^480*EVp4#i3K;lvFZOQ&g&iVU%K}1=>K+DYpn^bP!wYrW2L=k;okngQbzfns za|EE<{sRsBmp~h&(2>!d)olR13$tiEk2UlQ1GT~JuvQr{Yek+@UECVT)ioF>TOKqI zAr??^Bd9|)RYYI&V;qWo#&_9ydSTLPujy% zV<2#G3lIv%%K+?J5&6Xz_H6~7a3ayc?$?m@bICG1%LsC_8B*!V^JDMGK$nn7VE+n? ztDP8$olFNZ7_rB69NmkC zX;d+6s>!ZHaa_{eSAb`3SU&!)s|>yw@Z6%%25!H)$>?D7t%&X0rE$$_2f(zM1n_%1 z7nj_w_%eC$aUJr&_p{4Gh6{GPv8%6*}_~H4Za5c7<>1}rHsvCU(e?E>aV(un*gh* zAQ14M%T;p-KFA+df?hHA4EifmG=DPmxe09ePq@nq2)@CylJw=El51Sb7>vRvI=LK~XWUA31ny$^sg~(L;LsYrj6mOYA|1k@_8J(nR}k^6 zP^4rwdnS_85e)o_@^k%VsvR;>43YBL{8kaOlkmT4444}}*`_vWI5?jDAIB;9wiv=U zj6~`f-dYs#m)FuhXmmjY%7KK+ql;USw%TMnxBykxf2b1H5~x`uQomI!h<#zH)alS3 z&^d+^9lR5fIqI77FlPa_5cvu?%z~;ml)tO2PW}U}C4oS9 zq`)G>?9JJUzWuA6j{*GL_D3Iqz?j#$pnVM92+Q|L*Vz$$;ITe~5f5kH(+o%;A&hui a4iTpTT1OtnK_Cc$|C%6S-(G|1CioxAua-ps diff --git a/java8/run/lambda-runtime-mock/build.sh b/java8/run/lambda-runtime-mock/build.sh index de4ae4e0..466f7e70 100755 --- a/java8/run/lambda-runtime-mock/build.sh +++ b/java8/run/lambda-runtime-mock/build.sh @@ -2,13 +2,14 @@ cd $(dirname "$0") -mkdir -p ./target/classes +curl -s https://lambci.s3.amazonaws.com/fs/java8.tgz | tar -zx -- var/runtime/lib + +mv var/runtime/lib/LambdaSandboxJava-1.0.jar var/runtime/lib/gson-*.jar ./ -javac -target 1.8 -d ./target/classes ./src/main/java/lambdainternal/LambdaRuntime.java +mkdir -p ./target/classes -curl -s https://lambci.s3.amazonaws.com/fs/java8.tgz | tar -zx -- var/runtime/lib/LambdaSandboxJava-1.0.jar +javac -target 1.8 -cp ./gson-*.jar -d ./target/classes ./src/main/java/lambdainternal/LambdaRuntime.java -mv var/runtime/lib/LambdaSandboxJava-1.0.jar ./ cp -R ./target/classes/lambdainternal ./ jar uf LambdaSandboxJava-1.0.jar lambdainternal/LambdaRuntime*.class diff --git a/java8/run/lambda-runtime-mock/gson-2.3.1.jar b/java8/run/lambda-runtime-mock/gson-2.3.1.jar new file mode 100644 index 0000000000000000000000000000000000000000..f03505751d217dbb3f752c80324aff961a33f7aa GIT binary patch literal 206963 zcma&Ob9iOlvM-!;Y}>YN+qP{R9ox2TJKeEu+ji37&Bi%r?|t8UzHhB(;g700o>?_U z`8VaIfPf(Z{`LyAMv?pbpMQQqeE-UbC=1X?$coa*|C063#kyymYlyT#(tfy(Jf>jprxNM^Y)en2Y^L5G+6f}wT z+IT~y!?-me-WF<=?Le)yJ<~qCt(xIRLuz=qVm@T5l<&GW z))fw|w-?%Bh3u~&|D_rL0KfmxAn>c&WV(_nb@SjZBf5Bv6Yis9h;A~-M z>-4`Yhw&Gj7PihNj&Z4fUU zx3eUjQDne~C*0){Jqp2<&|?w7jOq^Kq-Y zRk!=>&s*+x4ZukcodYpFq8QNx; zRL(S(2T1dWsVln?bQU&K%h{>m6lXbp4jZ-7bebGSN4v!_dupMIC4268iEG{I zGj#`w@?&PdMmN1J24qTTnjJd&$<;2V%?NqS9Cn+vQ#{Oa6*No66K=8w2+S`KxH^OZ zkUN|a942$;(CHDz7~?2s0v39k0Th~D)%o7z!`O5quSaizUdC<8`d>fA@u<*KDqE}2 z85xJ_bn|>8k2Pm;h?QsGnFGdPOqZx1$l1?BbsD^OJHV{eL(C8D?KY<;&n98w|4jOr zF0JtJdal%gKJ;V6EIc00d7A!~CHHm%D-1?R^ziE3?leJfY_?46*7f7yRSlxaL3L!5 z<{Pe?=;~4+sjYw2bkq#tEy|mRpEC_ZN}&KV`pA-k4MT8R z6ca-ZKNx}{h}w8eZ~}}Fwh#wLz>>G(;5Vm;Pi<-n$ubMpYPPnmJT;Coi$>Co=2aFI zfJ`Xt3Q#tYuA@_eJVG<24v2~2(@6|?s&}L$rLjXd+K<8po9G*%?T*7;EzPy(w<>JZ zO%?!&G^ev$m+qgdei)IE8^5Fx!N1779a2z8|MRo< z!$8DcBh)8^lJqL6L@0x0t}59yo7oK{+wwOWYAg(pjxT}N7^lley91StHOt{%8J)u~ zO>fIKB%HafVgra2%Qm2K=Bge^7#j1%nGjc)$~q+>v<{W7>Rp_!$~_*K>wO>;Jj)kw zyvi5h{?Zre!DCF>eJGgjm8!j{5W3ssklNem2s;+<&_>4lZg%bJU9k7EJR)hpZL%D{ z4~c$`_X$Ll2F>1Tr?P=acIBTSP}ZlD+Lmv)*M#~UHu0A_njKpcjw-6tMX#3?W1YOL zC0ZU8zstL*Y_2LthD*#dI&F>)eV*M(jexMB@lVEGLC)%SRmX=?_PCl?lwo~m9QNGC zCR*!g=N^v8dx2-0LbGNJ&#wR|q^6l7J!Z{X18#Q^8EBT8!?fWldg!2Yi+({RsmZ5! z)ouUjQpdFy0M*%g>}4c9rVb(@WS!JuhNu$n@s7;haw$gzC!`Mc5^AB*rsQyUnOL2? z`hvY?#=GsLEp>dO^Q*hgnZ-Zs+k}0!JG--uXJ7Tq1%figQ5=SoG7R`x%_3RpD08d!e3D61OnSqCmuLvUf8*9 zP;Nl3)4TXQ0(u6|z-|Lq5O-ypND~as9SGQX=RA0mIkAT|v8d})yRL9%9_6#8^j!T8 zw_E95ekUsC#O$?~gcVb*9}zD#PmyUqF&PfKCR!THyTlWr!gTl_O*W7RJ!0((WlU)- zYK34RXo$Pk!7IXhmsasF=y6wNt$RcTHN@L^+EROhVoZguoliH0^^%C5J7?JHr>T~L zeS@6@e?|HcswvnAk?m!Yt=ASr5L?1Zk1belG^Z+{4PL1nwCbC7s@f+S3n>$p8*FF} zX^yBzN4Zk9B=iCy+h$G<#CMGw%>~mm$zSNgT~eB>NUVFEYO%AdWX>Gg#H-sJt5bC1 zxFTLTD_yZ48|yF`EI&7YfHYrXqml#z|E%b@*xf-sGke0ftz8*iIBAUMjL+05VxT^1 zBlbA1YJc3)9^(S&EE~4HaHxM!LaVR&#DM`@Pe2f94-#QApt8AxLkX@L(mkTQ*a}P% zrdZQXUmq?-D$Df;?czrTlE`2tG5Jlqmy(+&I!%DNdLsO*nz%ve#ldzNNkn4lK*Y|m zaGCK;XoZhzG{c)6c4wErPm&lzcqL2Z1s}9l;sqbp!ymUCF!rl3E1tjfL<%xE#o9_Q zIgHdWHBUNaK*Ml&^=QRIqjZ;{Roxu9hXNJT#6BVzbdv@Z6Lx)2(9;5X_86LRa`PiB zabE9qXgtZqn~Nyd?iCclkfAQq;i6 z+0N19A0CtI(QcU+6ckhl)YcVL))kai6tv}_U|}FZSu_M3Cimc7`{UvL{UJ;F<6-Ze z+s6&xAeulkDI+B@L%RS^Q6mmBAvZh2tU5d&l=wI;L0vvU(|B^E2O}#zCskch6S%3Q zk91&+jH;emfsc%VPG_5s0?It48D}+RJt#7$INm?qA7sP~(P^WtpgJ1ePdQgP{03iDdafn)&SR2b4*jU(_$=g|582wWk(W>W4NNUJmG#=LK zs!KGM&A%+0>6#Z+wFbr39XR`2WrH#F z$C~z!eJ`Frfj)>Vr#E$Q4I?B>r`w-%hCi~Mrg=Jle!i{a0i4|i0^l-;8jB9yg%5y4 z3GF(>4O;-RxaYhbA&h+Yu6-V$3~GyAzAbI(F#w z=LB4jil)75JKzrlXl3|4v2O&136g|$PsPpakSD=k%}9Z<)wm%>_A5`gh=!=DU#%a zHWk=0znxv4-N3d7H#{LGti64$4kiZV6CM`Cv+FC60qnXEk5GrZ1pUk=$_dn)*K1mn zdv#MKlXn!v%UJK!3;>o&&ICmIM^w^CU0MbAV!MX=$7tGwfswev;nl=IS=L#qC{k13 zd5z}~JN846tdv>NT2RrDRljD$gjS`K;}s-Hp`xL@B*jGO=}Ltp5@TZbLDEetMMXig zl4QdLMinlxm5p}(%U!>uc5;(+1h)pabR7kaoFs)r;>Q8+Zt5H{N7A5Fi+Th8XlzVk zYZ+-NyS=X`vS&b(t!-k_;}05=^3$Lq3W;Q)Q7PLP<0N5e+4xqP^ihcl_8%_F62;AN zRi`nP4W_J68GYf#(ilny>c5jB#xaw3($Z~LH-Z9X6pZdP=5UO(UetCXJ8n7pF~DMn zb7@*N660h=QYW%H-g4^gO_^EPyIpulAY(15rYbbS$(YK?vxzH@_ENDg&9oxf zBiMu=^3;UMV#3&aG!Fz2^me3RQEG*W3SgF9lwh^KN^8>Cd-g-ZGG8PImfHsRTf*#a zs>8V2#z));e+}~>Jg=@HR^eQr$yr>^H+yKpUOd^!R9o)+e03LLGw^DB9@HeU zbcWD~w%Yf+FQ_pz+bl`EYFOF`iwPW;P+MiN%9X=5f;pc_jWofX@U!~o^5+t+N3vI_8Gza6LTYpAYnR(%clhc_)N2P$~H8mml6W=S>3-^!QGQ;t% z*~)D3IWRa^GYrxwU6UcvRy{ZYV{E{F$`j)?_5fMgZOWuUKcH2-3t+I4{nCWNKJuNF zx05~WBC2 zn)2cgoCX~N=C*wjJoU(}^8V`&8t!1a8^xIIVhmfQU3^7lxVyl(M#y}$!#)Aj+a)7a z(A^l-K&3Nc42tK&^nFQ@+;^LDU-*L*bvc$pI83p>#xCdO#%zZ4BoSW8I}Cvym|x~V ztaY^1`OeA5VBk93P6`Ql=B=FrE-!&mv<5cnLz}9{2TezHt#yS4saaVuS#|E%%R~D` zOK)JQWx=*|c!xCiq{l_s2<*D8^yhH`qQp|pTZ5a@jXIZG0cbm2>hlfM&kGYxRl3Dm zdvBb?z~BbZ>S^{U>n94GQP-No>q<(SR%V4 zZ-liM-?_UQZ#aCx@aiY@z1R)2d#CINSOYhA!+b!!`Vo9Vf89`5$)&CfQS<_$Oo38H zDMDJ&k#s{OCcWb%Iq#22DsxAPQK(T*vv$Z|xU!E-?HrQ2WqN1!egXZvL+T9F)Xe|( z&AdPW02Kd!91=0(KOA(lqK?!CKQhnqrtKVhrR`-!^+#RJAe^;p@e3kFfHHiGV%-a` z=`cGZ7mx(?4abUHJyHXp&lvyC2NiPzXj;dpQP#IFdYN%2NA zq;mAmS0 z9Hf#6=``&~!8=sEw#V99=^Tr6u-{)!kW4eFF`>`0ql>d`r@Ja)%kD^q7BpD0r9$p(eS_kQ=*@1=oMrcA?PdXLK)7PNh!x4^bJB@9dp*N)C)ubInfFTrciUk_Zxzf>GTJX0qNM&DStY5q95 z57j%e4_1z)zmOWERYfyco!Oy!^N@=z>3006;X=vnN$0wm~SVQu_hC5vix z2yf&?jIZCTo6-&G8$s~m?8JRXJ>ZbdfcXTW8pH?^JwH^rtVu`vOx-rK0rFE@RJ~eT z)=)K@o565-2F6He7MHZFuBE)z-sUV9D{L08y_i-nt|l5Pe_vg*U1wZ>{J!_O&h)t{ z=8^?ar#yRC51&rmfqF57;Iz*JX4@mh-P8`yx*@^!(HK;FCpWEt^;Q|I_D#}E4BXfl znp|#c&(0L`?c?45MT@y*V(yLkX++g5fcjp$VNmKtpRXv2C=+SA=Q z9{zCei3Pirr@$R@dv^!kK0JMPfAz`v^mF@)E9JY}AASkXE#XtSW#UWOIUaOhh#kIx zvh^+BQ}dTFN%(j^y{LTMY9VTmMNVz$Db*}4Yx1~`Ka%DvODAGDJJn}lV!6)T*e#AMNsfTux&EZp3d z&U3P!p26CAV^sHv zApSP33*S2CaX6$Oxv%Oupr=Kj_ax!g!qWuH!$=o@JB1W%dL?MJkqlP~Gkey2qN$r@ zJFG#WLw0Yby?>W@9=PxzrY0;$+7w}eROpbs;)joaK&*={5ZNaB1pZa`ly%+G=(0d^ zs*#DZqT66WXH*%^7Dx}|#00V>+ z-~66&MB+T8EIX&UC*iDczB;&5K@7S=foh+O_tRXFULG8r*+8UGYh|ZicK}qlLTmg) ze?>%97Xg*p;)+?&y#|~aYrCds(q>a7TMGKJjDInpS;-_>B4)1S{5_DzeGr`m$q9(R zzV2EEa5|gBj74iWKYiT2Yo;!r-5adt6qRSV#9N3V7tFFzA}nn}Z8|w(Q*n-;UgurY-?`gw)^&ny94Dhj7@126@%+9QJ;O(BSnCYF|MLfqV9L$z($SsQ|X*nC= z87eVH7`8|820k|!_ly*+sN^PRcUwV`dVL)oyW?>5~dZ*LA|a=WP4Yrqzl%R769jfb>=y9uX-|&53Oa zl$c_Y&p_1F$i%?OAS*(yli**S#W}{vD|sqK&MQDS4atsFt3~PB&W6M5yb&{Cyns(? zc1(?!1!~`Ugk$DIZeUz;u&Q9xnoV(doM0O=#Cq0Q-D#0Ik0DDNyunw4X5(SXNS1v% zl|N$7V9n$s*?Qo7^knbMo(C43~vQbAOMp&}$1v}09?sog#S4XpE| zmfjk*uDD3PdJ>HH}KJD)U4=Kuk+B*RZDzHa&y>sW&J zM2hx2x48OF?S`yA(>i$-1$=oj{Dyt=yOh@Y+c6?aiq!e@ymaaEEfC)4y`BF9va}SE zV@5p!whCAtFgOw!lR`UpBu5hItg;;u(C2fk88<`ePkhGnEO#1%TH9Wn5hcB`oJhn4 z+senEr?+TVKJ#ZG*WVIPk3kYF$jx>|tEId72z51w;KJiJ^02)^+0XFa3n(}NYmV51 zS}}PC@bApj#rdw_CiDGwsM`d}_DZXQ>lLt)x>{vCFvSbMAav(ylA0<>ea<8jN#}~P zn@;fCm*XBbi7nvK45$>WQkYjlpvuvj-Uzkkbo*}Q^|t05xws?Y3Nu8ySq3NNc*;=c z;Zww!4!br)_htv(nGAG5an_a6a3duRTX03Av5s*2vL^g7`sfWH8mbM9Xvr{_1Wc?Z z?EQ2A@oJ=%RAkCI69UvNgpwrcVGEaJDk?`x@MM4}r2wm)QcX&L_B0a?In^{oHwn(L z;pN~55^La%I2O|nOQxWTrXp+3g6jK0HHDHQl8Te}nVo9+0#sg7Dqyb0nC-n6kA*}>p>qCrzVkb+av91h{l!z>}wmh|Ft6ysDRzI?C z`L)|LZ<*lmTJ(G7E_id`efMIv|}5M6BaveD?Cycf-w zh+4*4GR1-<1z6!P9<++#Odyvy`Ov$(U;RA3W?VhAgwxs=n7>my_}$5WbKtwe56G&8 zjo-+&zNGE@wI$)xjw9e*7g*B~uN+bcY3OT?V^4JvBGqR#7UiKMs`b;=NC+(|mSJwm z#I(rQ)+w|iz#K1ALN)u}d!RO8=Q4Y```u=KW0MR3NQP@M3Y*-e%(e6hH$bO@*F}h9+@Xk)a*SD=!oNa zLIWkq1(_FMUJ9BHkrvDtpEm zJg3gRo70#oUN)n}ncyaugrZDVWu~-IucGdCEXJWqG6APF+YvmJ9!NS=9F8s;v|e-L z;T59r(XbT0EB!%4Td7VU2E-_GV;A$XPj zY6@s0;IK+;(QpHGBOBG^6$#F2MUO{>@Z35W&9x{4sOoyUw8fBgN<1wL>wK+&13AlJ z!mD?L**f)ih>58Kvj55S|JKl_YRQ9M{nldCclnw6|B(R_i@G?wIR4-L>*ypKxp{fy z;V-vM@^i|Oz?JZk0||6EkX(LIaqxg%>V%PiTa(qA#-gSbSMnj@XkUC8WJH;RY*JtH z{dS#8P$DO~B`42oj^i&bGqbmk<8?Ryrx6Ny`b=R&Cq`S!IC`r6lmKAU!AYCjHXg#H|wzHZLfthM^gQv?!46 zCX(h_j5hOnrg1}LEf{;1vf+wc_a&2fDo?I$TJ)~eoTpPQu+Dcuap$=c|rwq>3 zYC(oNE}$;`E$y9_7&*ff#$Eo0fIOm@h~Z_|O^BPpmh&`AFUy)^`=1}?j_IO7o;tJM zW3|`%O%{SG#OUec(TM%tMs3IQi#eZh@59JM%6FYZ{`p!VI!kPBt{$^wQ)w1V(5-Qk zc~#w%cRt(B)^bBUm{w8+L1S_5rx}K@P%=t6VfbvzVHBLnSrK1&bM(0fu+Wu=7n2+~ zQh>9MQACIks*@+!gU&2yw^%kyyP8V0x3lqNR8qRs+v(uPV5AyW{}Dj04$Czr`%S1ywM|1#jMi|FuT+tz#tB~ZS}~fR zbW;OrxK`fj?7WQd$ik01nRNygWkwJ}O79C11#Hli9kx75G?Gi00NW4;8-BnN-&I~X zLkJmN;=xl?)>0FUEc6gQKWZ<|Ajs=;N-(I^pp0{RPhJu;l(sMoyqDr~DEnH3hSq4+H;8$Ko`K)2;&-CCn&^JaxKx3xQBgelQ zA&n5o#|Ri~lECc;FYJd-$EeawEQz*}xy&Gy$&*Q45JyWO7cHuXkAGD03L{~EC2UBUg zB|w|xF5Bt%J|v>#jfkai5Buqz#a60Z=AITSdq3M2AV>aE6oKs>A?KUHhD3?mTj-sR z2@+dwK7avYrh;ss*vo-3n07!FTe%W)@6BACAcFQ{t|>yp+buEz-*bnRDnkP4Q9@iJ$8>tGlpp zXNqNq>7g`?mCVMg9G*;l%mg$Zl^y&C#Pu} zBPqt9MvW?V)Gf4TG~_=9e5S%}AzdF1zD5f3kV6ho5h3z5(w zQ2Yo#xjYYiWKgA>!aNELEXaPZ5a8O%mY5g4JGCo`T0%4fD@u!T&>;IFT6<2(VWe2# zE}#$<=}@_*V|G5hMx}{-?Ad4AM$8|G1xFSeCJC}-2N<#}WBVttAN@4(yF}1Z<5arI zh-TFA*9?Y(n&1@ZiBa?`V^mKF8bJQ;N`{Vh%6Pa(+6M?tDB+q7%=utOUc_GMh9tMm z_#)fJi3dIjY(l)Z$&_|?=HShuqQbawz12y~ArQU(OMZOpMWO8LiXP&zaH`W)*0PAU zaKk`A8x55~hma7Jf^9U&v-^gPtb0<@F2Zfm%#Bn82UtuBlYY(t~{7Dg|x`vO2Z?0 z9s-!g1CQkCy*p1%y;C0&^nc2auSV?mE@kj7ZNp#G}Phv5pVcpzS~=em-=!GYNxgcANz z2^H?I&hvTQS-#=nh1~NCx!wn(&<~eaE8#*XjwvwUQQpkQg9(XoKAlz1{IB|s3Eq1vm z*_s>$;dvS1)vu|K_q-PMll}a&gMsNU_hUNGPC{&MoeCR zcylH+bK?~pwQSOk12jBo=t_JjYA}ieVbzmGz`7bYtJh#S||XEE|it zRnDPtFG&%?U3E)5{LvspREQ1>B$c(@=$DWqZ_SVxR#Bs&Z?P^ZIS_D(05%b(#GUAI z_cNOu5wV?9&%C1K5S#AFFnO+3=hsowLWAF%{PR`3ZA$S_$T3rAHe{QWIwOCrnfu~C zRy_YmYjuRYpMv~zUOriHj1N8?W7$>*it~_cCvL>{1Yo!jPTRMaR@-hm@fg(ZPtP_L z-~r@~*!Y&gfCbSQPM>Mk+l9b`=yc6ubVWFE4$)|YIl_y{i4O9tt+{S)98=kD_Nfd%E?GcWd(rmSgr3^_=kF^fWaW* z8U>c@-T~^aQn!U%_e1z?rmUtak&mM%p4bpd8InZ~44KCfbNop{)7)=pmhALG)Ym9# z*^6!3N2o5P5o{4smo?-gIr&_c=nD*|s5~69J*>n=#B=>T0@LAWW?46e({-F zT7O*q3X|V8vN+O{_(9DG7z*EF+7f02sT4UB?}Q){V03r<1GR+dEsLZPVN5~l#1N@N zogZzQpH4E=w-@o1Ragcy4FraS6ejY!YT!Ma5Q4tvbf;=Eg*-2LU@{zOR^c zr{RIyYY_1UhMk*i#}TQH8YXU)1~670A`Qwu7^004XT}8LMHD;HuQ@>oZMoFbQ-_mZ z712-XN7?&NKVbKiBBnCEYZS2!gJYA@E+a&g&PrOAm9tBar-abDI?8F?#!-cXJgot$ zqL}s7moMFh+e>T1P7`OvUdMcTIBjY?jVb_>D)>rugbItU7#hS9<{4L$k%3Hmvg{#k z$!4}l>5;;U57Z42^WXOtP{an$IPUk+Z=rIL%;~bWhl#bL5-{o)!4ZKs?1Trs76^ckDbrzv>$pQpxia+hp zlv@7SEr=o)oYW>LWyZP-jgriDDn~rZ!d*?fIL0d79D8m~gehc5`S?1WZR@fgRB}!c zRJnqvaG(ylpY+%*5FLza*Q^^3YT;9D#KlJA6~b!NAC-(9Uc=JmLAjX~h=nY3`#K@^ zy`o|w`TL&=2ddJAp2(}gu(M=<$`HIu6F2qYFJP7afs2S_=W)|#3L~s}K{iD%c72*H zAnPlt7bffWaV&&Gn)Xr6dw@%%>=lLVgLMI0VAq5#F$M@*GDM+a`g=7z!Ovk@ok0a( zx*3^b6w+U7#zl6eIoo$yGGONi-3tPA5qk_timk5D!3&E~1fd<8pA&5XobxQ}Q9|w9 zw=1}iwq%YPXsk@Rf4Ikrm6>pZns9hXM!4OGcw)EcWXe;H*9E$2r0D9T5@QO4UXKR4 z+vF&7kul%~Hm=ANwyiP;JoRdQ5V5?wVz z;r)BU)mN(pTlw8qwFUp{N#VcG`Up5XJ6agJIGZ^AGoDn|a#|Ng{$zD6R9A3v2=oeO zC823aRGnd^A-0W>$keybmhYr!lEd=Yw^k^MA$A*qs_nWTx&dG9j-!hMRm(R zjJcHj)Q-qP@@wX%IE1r59Eak9wSV>1=`$gd)s3@+%+=ZeY1`!)6T4M9eiO zf<6m4cl#zxkR0#|Y`?P@@N=*UQrNskbGux7X+$w_{*3r+d&vbm_lc)+kv(&PqHaEZ z^bV$Xtf1+uV1|ERso$tB&#dj`@4Ox-AAhh*D!gDhl0G9>vQcFhY_=VLXPgkNK_cTs zzb-UOTvLRGDJ1lHpjVm)xzv{dBwB2X?nO=2Nj0kK;$kDITI^k{!&Grb=?53F%N!1L zIkvc#_OmrhZUv}uA?@US4*91S+Go5D8;Q)b*)?RV;!1dLyEVdh5T1@vK4Imj8Z#*Z^F>?!dYkep=Xzyq{XwTCm zH!wUVZSJGw8PJk9{WfRwirERSjT+6An-5(#1G)!Cw7HWxh@fNp^(?K@{f!bb>Sc@Z zmkJmwHT7-Qjl9`rn~-@SUdY*mDkw4cxrnVePuF->HENzWymda8Ha3;%{WoQwq&JsS zB`>vz>5whAwERBs{=5P(sDn_NW%CB42M7>zz=grMlF(O*1SaRT9`Fyp(L1ZUKWyk8 ziaB3M>D!~s0dC?)@g(j1cbJZCvi78q#uUO9?9oj8W!WU|Yl<${2TD6^eN6PKpFrtq zBcDq`I53xy1PKU(1LA0XX>OyUl}L%wyIJD<%Ah+ls`{?>pXQuDo%BBs4SdW`-=BUy z32@=h)5PCGvJ|VM2*IX89UkK zmHxRRdx?3z)xlq9={PjEwPM)z24?a7e9O%<`6z?C!*gqo&$6eya z#sWknb2UuB)E2IFphwIj_0@Ws%ZnaJ_hOu}H4Q}fl1OiPs`u}web3@DyBY)lAQ=t- z;Je5Ecc8{UVHkf$SNtt^lryyahD`k9pjWGEIU$*#`?g4Q$TY0X&5dC+f!ip8gP|0G zPy`$1!z?Zta+Iw*%b>A#8Z?$8Plt&mS+%MgsBQ&UtjUgQ= zk{BON6oY}$u~IwMMhXC(9~apdMACF;*iL(8jS-B_xf7OIpl)i?MfHSbn2yBAMl!-d z!&bZs0-@87L6thDsk$_yxEf$m;ygcVt;C|(-{B#XiQCFzBRu&m85VP@q2vzv)P-f>t1wz66x5%(_)M!NJ zhTjpfze`QtfB4ySF`SdfUco@Nlthg%nrvPD%T%kX#&@m(T82gEqs7k)B76}L)Kpn( zl066N(%+7_YI-H(%p3*dmSmRbR8zvbTGhZqM>p1DKzkZj{Rpe}#dGfG^7EJc9LZr6 zB_~-JEE>sxWIsjq(MY{>I9|o4g+lv zLFQBf$~aZs&zPA#MU)9p#e__}h_bd)HlawvBpbs2H>)&dN5%+1W>tUW5tV#BFc)$P0W@r;sYtQalDB@XKj zIII+YRoBxF6bfRSk!~kUi}itiVG95|=mH{~#&AJ+JU{u@s(K+%+@1(wXFSr<)Ni=6Av5sN8A}xjxC0XtK zA@}4_B733MR@O$kU+L+=OR-_@@GRBdh)K}KP`kA!dDu-0WfimwdUPjDKhfalx<9Vn z^0+EQi5VLAyKN|R;PhN^X^O?D#Cj!smU7|$eIbxrhNrpzDT_1nf%`D}nt#7hy9~&) zqZ$!78^|kUk-wed9Y8MOh<7XEEKQ1b)AZYqjS5m-B8tekgdG2vcN=0R@QNw@>@gDW z)Kz4g#Y4Q<7I$w`BkMkk>u8qpY}Rrg2ybQ+GPS@YwE+EzokcM*Kl2Crs}4*EZGN#t zXNEbBZ`1WMKh|Jn^DOJzEN+$m6XuX*p~$=Wy;a_=&~d)b%?xK^I9?seAM|*yl{8}F zUa7@RM>xk9-adk#4yaU7&MDE(hJE``d__43czP|b@wjUD#fL#JcV4d)a(oGC!>m86 zxTunda{KO#*lSg8V z!W{a%%qE7Jd9<49=@k77Sv5<*Q|G1ub+adw}!Wl%7T6;qM&8vzF~!V`C*D#N;%ZWMBci zx_m+^bW9M1v2d!UQGa-nlCEZ-nEzB<&2{i3u5yJ^ZXA1+PfOZ289PnM4mRWUB-~n! z0m9~DB7d;n5k;o7ps(Ds`z15-e&!UPjPYmNo?8e*)?Q&cJwvH(G~Aytsd!n-&`@Tb z@U8w1eaHkkQnhy~B8j$>fZS?>?6J(hWU|WO(1poOj2&w!BR~tADeaIw1~f)=LpAQG zEsz7`9^1_!)(Ehb1GTE~uDcVw1TnX#W6L*qO=!80>gPVV5WyP#J9Pkl zB%%-4nFg7rI<&#kVMiRfV2XAaeh4kw5je~xhhTz7RAJ_blx;96IUK}vwJ#l7_ z@%{UGh`#%ne+9buZe3ctIDNM+m7E<7oK4LB3A!+e>9+mB03T#F8oW=2 zfK0v+PYw=(>LO1ZlqXowMw`t+y&uU@*oYIaCKV4hB1CYtfv=y5GwEBn`Za%z=LeBv z)MUhs!0Bq%wMD9TR;Mgz2NAeS$>K#C9j{4mAv4uya-^Nlx&`s}`Q(9;Wo1i~&!%ni zp2;-nG#Y@`V_IN5l}!hn|1(rt4A0+^WC*QXol?h;F4Cx?TZL3kyEi+IZ=X`sz5C+= zme`pN=3ItUQH>1VvaAFZ0T&+d&{w$oVSh}dP)9l~n!6u9dSpMA!y!Z}RY5pQq zmA11rQ!;V1FtE1p{5$OSU!f?;%5Q&b1%6(w&DJD|4M`1o`{A$ikI8%6;6p((&HL5! zH@qmNH>Wt;G=M35QThu<3HMKbDhxSwhD6a%wvZfeY&re9&bn@T{`|b(NAshGge*`G zkM}6rVNfNJ7I!buN0)2&Al+?`LI823It>oWiedn7@je^=%%^sB7C_J z5ZI=}gid$s-ieiI9UZ4Dnd{yekooE!q%Y#iX`Zjb)okXupDD(nz~A`jsY{uQoiI{z zl9^tL5}o{pXVcB?b?7l{0wo#_V9!P7Xf(TDfU;POa^=jco1tIJwSlixhA8GO0PZ=K9i=_%))vhoUTPBs$2>2Y^JmbemxC zYg~~sVFeugB=B0ZGy);&2|!(eVF)mA8LSV!y6ut_I4dsM`9rxxKJc zHt*4SReQAs=XSrd1UOb=mxA9r`g1=7FG<7$L5Nmb(SB}TDaPGUI&z_Sx>4?2Wnfbmv-T*iy4m{)tc@TCliGQiKN{6G1}sEMZu zvfsgIcX_XI8U?1ZMs5J^cYc({LvpQ=Fy2PQxRi`HDGGA_l2p>GM#P|o52!`GjTv(Hyi)xrUy6>)sQLKAjg zoUgcvKt;2hqi>C`r?0Q4Y=y6WpabxzTtHxHN5KDrMf=-8 z0Nn()%>K71vcE+_|Njt)u!+;Z8Ui7^Z$Q2KKQq{DIRV)p0`OHs$td#saN_LcU}U;F z`yvGKar}M0`r7NGaRwn1u%JE}V0b%)QB1htvpln*vMw$am9OV-`$#=3vQ7_<*hrq! z+KtO|CvK$NIdYV($YUHP>Sb#h3^6w5?xU>8iNW5Gtxp?EI$T@t z$h1kSfv3vIPD1vrZkGiKB>Iy2Os==C0}DcxlM`X%N6s5$HH@^zi!Jmi3}ovqeEdh; z7x*H5pZzVU>F>|~2UgsT7*iI;rWmML)bY7SN?T-I^D5t+qP}nw#^PYwr$(CZCfYk*h$Bj{N~QBx%ZuS zW~xrr`Ttvc@7imx=kqK{1W}7~rSqOOe5ZlK?A9ztn(2e!0;oyhe@_285ZVwD^_Q{E! zl|6YVVnee$JTR3EI@ z?&-P+^xlO+d{2jJ52yK=Zwrv=B@yT+4^|6~*yV8M08yZ`_T6=xa|%6oS%4A)VRMFs z`MNS@jM&+EfE}c}NIycKwVC7$(~CX1UPWhz#fYrHv(9h<6EhVtJL%jrZZ zJ%#s7M~NOKN1UVw!q0yU!>qw9m>Oz&fE2r43Msuf+P8GLTkIgHP4}JyJanE%Kxm^y zJ23=)JkJnV3uXVDH!9>d3krbrH*wiZqqxvbj3OD(9ocZ;kr{?2inkz2gAgZnG!*wz z)Y_b*ES1^>`?GyW#8Gs33HfpuK*UkXq@oYQUHvSFwY2>6KvpaW29h>xH~_t5z_B!K zayxxaAtB7FjMj`5QAVVCUUa_Z%3>%?qnz)r#MT6PEoG8S5I43OXlHWf1{v&fAO-Fk z;Gv8K;~e0u9JeVC4gCylgge#zG}T{zEJFcLp~{@55(4^bt;)T{fJSXny%ce;l4L5B z+%RInyxe?U(1A35rz`#1PC0N}$YUCug;4fv*(aPl%;$K_i8R0Bi+eS zRJpSx4H{{6DqKb(vvZ|^nx?rYtC7-c5*}G6k$z4ajE0FM8yy7Zc7steVk|hfgsQzB z4)n0R@RI6LIWuN^mxrITd;w2twr;D&1i8zVF>w|5AxN`p;_5iV z`fjGh&+^M-g$2hC26H1OHIVbCO$o`T7dpa!ySORrXuaqIKFAOgboesoCqFN#2YxS`p_^)O1Ne^3p7r(3sML3-Wl$3oNQ4t~4V^xV^(% zxYHb}qvINYA!@Fb{k)j=v{GZjn)p#7a^KPe)vgf>=!2>Q*RK2n**I8Yr+s7jWW0K= zY*OIN6x;a<2JH$7@#eWMu4OSf)F&hC zBctLjf*k!`1EFFcHX>u7>PKF%JMx$4>&N7i0jo^c8#;FMAd?c{vo+=mAgtLCvCNSg zSoLFT4-MYR88w7>%7|obU14*mx4D2l$C-G1efq^*5Wpa%-e?*lwh~(Ht7UEqm%WK2 z%Remq2ZLOpA^-9P!Ja0+O30s@Eif-6Ob+J`$nvh`=?{rR-v|;QNjk~2IHc6>o zW>&MO%WyuIUw=j7=^*r@C~}Aoxb;uM7HogqO;G{eQxl0rjDdSAqMG;_8Uxy5(Qy+5Dt*WMQBs_ujka&Do)u`{0Q z^eBWDrZjb;g*m3Ut1@xQ0ZNa$Npw}vy9PSV8~UOz$2s-aCu0xzkn4U$TU6p# zg~#81_!H`&ZiN94*>d>TQ;w#vxwI;~6JOShaOX+X%Oz4(WLkMcAl^FdOfd=86#5B! zNfOO>wntYiNy@Walbo8wOm5#hKhv$OzmfTO>+ui!RwLHs9Jywm-YO82isnBRtPx6; zs?X)Fm(MXPAfKl0dTxe1qPIqAqB(wZDIbd$oiDUsCLv@Sldxe)6JU*wP$Vd$+V z(!@6nL1#uq*Ds+Xc4tRONo zdCMNf*3kZwPt?eC*)Z*mF?Y$HT2|Pm27-O5xqDoTd*zz>La$|+h(>Y?(@eH-nJI8? zjX>xt7kYNo*m(5TaQy=qn|g~=u?Q|ByWKd`SyB=H1Etcd52aXw!n9W5bg6*@^MX_O z17X&2b2-(bMeai6nV9$~jd}5+^=>CDb=RZR@q<|EDj|LAYBN47FUQLHMrekZeBb$c zG$fXru@R((IJWL4JT8RCw$DkDdN^E=H zULA>cR!pZr==n1L5hN>N8UXq)-AivlteVTnberz$ha;lLE-S9Gd3>Lepr*_f;XjG|R~5ID^n z$b#qNEn4eUo?#(Rv9pjg)pH)TM;gWYc%0+MHygDJzmGQad|} z?YdocRO=Blw*wi^Saw6#E2w!4>*7YtvkX}1M!QltQ~Jm`OX?*0Cy*6N8|V5#}8vuMAIQ@a04ar&S2`u}{R z`fsIaa10~VfB=H%*H9V;HN8P?bfl}4q5=qXcOTY>>0k%-_;<&FhUa%E5^_BPB*!pJ zSNcoW=)D^_gBZIQxtNfI6kQX`>qOA4LHcAOikKFu+GZAWE?jE*CiI^yCK{E~Dh(A| zE05Wg(jd>lS#(Mdb1D+HRN$}avzqPtF^>{i(#2Z$^VqD1jrH)xoLOI$Qe-e$P1&cQ zomxW?0+2Fl2uRwXzF#fWLSa@h&;KQH@lR44j<>?K`@6G1i1hC{eGyYLLsuIYk?)tv z|HCuat!}A}y^87!P9he@m=au%xF)7&6arU3UUz;nX1-+yG0ww5=KZ2yAp*X zky)a>;A7uW^mcSbD;X#vjJ@!x?I*(j5c+V+=?*3tf*8{qbiB92{gm^^XO`1_zW3|t zNE;~R#*Nx#3jCG^#_moKrhs4&W*`>S?&{7Z9-BH0xlUU$Z)mz3DCfYJ@pmyn&giJ- z5%N|S!9k*+3qTYz7YeW_=&~=`@`j0-n|#|&K;%IgX4ge?a4&dq{0Ys}gCT;#_V$bv z+k?}m-u6Yst`A+18t;v}YXH8RbW4l53rFOCJ?23gcD?_L=F#Wz4%kjF`BoT{KjGFG zQn1=#vBL)KzJk_pcB#utUUp-nAR9;Bb~+tDe$Ffnb9oJ6Ghh2?oq05rtw($29CW*f zAfI!^PddPUYRU@9P3{!*Qj3zm5Owh^N|1Svvc*Z7_U!#q?)8FmI{_hcBJIUwhQ&D~ zWlGbGkh5mGf^^Uf=d>8qmZg$zO)I|7WdtWJL~D#x*-erDP;AX!J4M94j7<`CZ5@r! z2`$q^ve%Tp-rh1{q+XJ7bz+0kyk~jk9{a##iko7maUh`>QCQe7r|G(5gH)S6XiEaO zs({Vf0+W0EL9FGbS4eiExoD$96N4H0!memn`5__yPxDW5>a6O0%x0XkB&^D`c!Z6p zkoJV9^F~U&D=QGWfGo!@>9AhsqAcWUI;@oynpI)Hs<|k2SbL}$w2&T8q|~}EM8m{v zfg(~Eo*3bV+1rwA7fZ%M+8dqtOJ^Mjl2-F;e;uOgs}7;gd^FnXvk;JS*z5|NfF9@T~Dsx?`)54#RNW_d+FbgQO^8dV`)`ijS-9O^Q+a*24|2ZA14 z!D%=RJ^YQ2KfZTm^Cf^zW`ZFneuaX0ti<9dr z6mjt}I!v`2T>VgOdwUsx&v$Uz{>53N-!e<_1}`gryGO(?P`wt;tkLJRCp>)5+jp(u z_3D9=WAc2OebJc7w-oU792mgAFAwz@)jKD4SKwV(cI>L%TMAi=1m_9GtI~@ES907$ zah+4fYMv5h<02MWp(w3l@sMMcG`10XV+eT(KN>f~!DzV6nqbLQL90DYPoXhleevPi zkzX+x^PI0$LJliDSw3RHsJ^dMDcsoFPo{XI-j#0vYMKykwj|WwROtG~ZI!90S3~iP zkrQ8E0kHQF>(A6EBw*j@MuPi=wyD&whF+;Ob$pE!)6+PqIKq$8HQb|KR|A0BsU-mA znitBX)*bM_l-3n`P)zPNR4WqIxkNcF$t*wH)@~JG?cF>dNScdZ#KB4$9sg_TnNy0ClVvoM|NQ8>&O`xFpr+tKdcp<%^=R6pvE7|tq&Sd(s8;Xd^<-JUqKxi)Qe z(9Eh5Z?{sddw(Y_6@}R<-F490WKwwOz9UXoV4v1K7+*$xP3CvWD9my}X7xe-FEN<} zy~vKbJk$mxFy5NP>Kv=pSp(yloIBo49c(!sYkRz}pVw_zPhyU)_M0AqT!_r4?FBD5 zy_(rd>nOln&SS04aQe!ezu%0Eqr(9l-GlOZkmQa~(-8OdGW?ta-b|67RVSM#xpKA= z82R&}&lVz;j=f*55|tKrZ|d_p{@1J-wgaA4flI)^Yr)1I31Sh2{?H!u1Xa2&)!TWy z^fa5O`hk92f?(7Zh=Wij@R`DE(qZdIc;dBIjnIW2QqP>BjH|C8^+x3iUE%_;4^;)r zgJ+f(Bqgks`4!6uBaY!!k|uu}tXX9dEzl58){jN<%yZpAW)wlhg0{;F6`Qd~-hy=T zWaq}>b6j}41QZQlM7jbDcil4F z7ZLqHJBfS1CkJVl#I#lgZfo@@u7xkP59OMvJ8Qcsa059u` zs2cb+`x!thq30@;vPKU-yyFNYy^H5ygx~2k&18vhdtio6aNzJMjUWTF zP#jo*`kbrkIZm)b*q`qU6I zPUi-q!c-~8;fZ*k4+)jnxFA*Xa!9;H9zb%D$|=zsv!fzfT-Ke$&hZ_7lBix=uwsdq z9}3VTU{XoW#Gyu$n2$%uCEO2vY9`F6L*Js9eiA>IQH+OM$&hWONxY{xw(pR_?}Iqp zGbNw&8DNf5(6%BI5+$2F5^3_FpOvO>4qczzl_1e5L28}+mIYTSw_Aj7zXDETOU{$d zSCrBkarMh^(d?wn@xYG%ap&D-)+Ty*?Xa!6dW1oYOlh*s#k-dQF@#*j-<0j!2dbRw zE;}|$ME=_TU&TECyw3Y^vUUB_tg!zE4e0;P1?d0Mr2F4`9&Kx6L6lE9yUd!%==$o` zC2MW$z?xHQ5u#!t)8=4_{?T!_ExGimzALi4Ua4Fv+GpT*#rZ=UR! z>3DYceix`??Ll!67v9}xYtRRul;>vdu1>D3TT$$fJ*4&Ke0f@!0(4?fAdf29>1Asy zM6&KL8pz3brn^NCmZVd2#-$5OF*dYUiK2-Q`RwF(5mOL^03TzMj!MxK$w!xhwU~jS z4UtKP@hV7S>jZz37PVc`nkvpFt>IlZH?N>#8?XL^z2zyK^3|S_zy8xXDa4jeX6ocZ zvFYn+q)6}nxTW>pwK@&eUqv?)^KFN`$kv&TgzOWQhpoQKNv+xd+2t?gm|H!I*@Ov5C~-_k&v|9L0;ZzjcRHCttDRTN(~&4xPN ziOAo@v_APwAtY?YOR1I!qFPpn+FC?S&mA<*l=0c#NXcsPwn}K<6IUxZKf>Ny=UlHopFYu5b9p@Xq z2x}#i79@pT_Tb!PDbwJnoA?n!1S7)9rEm#CAf*94*`APH46WX^6#fiFMwa zRSb{WCL{~25g&7WIHdcOV*84s-=Pk8`VCAKb|S3JXLoaN^#0dbHHNn z6B7NIF_8LKkB4^X1N?tv0X7$^I$^U0EMc!PJkYN(PXufIiBH%aP)1q0>;b^u7JWkr zKcFYEY=EgLC^*(Z;!WBs3=a99@&jf@qz{x^MzdF+vhAcA0z8!Hs1{F7+nPGf7`aKB zIatm&Q;zAlQAeFM?=NY5&Od|n%TjDo*UQF5!;v`Ym832V-wG=*mtsK)<%TO;i zM$avrJTfOAHI%SjD*e23*7sfxl^5sph~niu3v^OqadXQkcd6^E66W30G~W?zCqnEM z?(N6@cgwo5UdIo*YT-;M-EXf0K=Ol$t<&%MK7S3}(5%u}&vX_yoWCCEG%B8*C+aj3 zo}CL0QLeitnU}w08bgn2m(va@o$ey)hvt03-d^WZVJnC(BUNY#sS^DqUgFPpmf#5~ zQNsR$)S_ziUs>t{+fe#A1A7pM!5Zb95NuLX%PW{@T8$ep_khhkpz7&k=^3Kw8E}4R zLm>+wSrA~D1bC9sG5g~|oBia%n*wQxxX*f8w&9J!uUwB=L=&1}8Ug*R3I3fc8EqpArwn8i;fahH})=>OhCbV2dR)cz*pQY3(Yu>Q@-^$#HTA9!3dH>8Kk z^78QxJF~sn9l)QhOg{oB;1W|!449C~kkQ=Fm7c7$(H+XU zwK{>4L1d`uXj_^iSBkB)Q?0D4rFFF|FZDlW+pniH*|m|XhUuTO-FLgq`HypcT|eK? z;`xFA9o>Ov-C&$M))7E+YS3>UnHa7d8z8R8&$+#J3_`{>W;1R60Ri7U?aOI2b&Ekp zX-OQ(lIA@gzwjnEsfRxKBb2Ut7^HLghnlH#4HEPM$*VmnW3udpiZxZ)Ie4nZWq@R8 zs>Vp&yv};98SatQ4Oehgd3Uw^1&npK=m^Zp&ZUpWEpf_@49uOo-aHm~qWl=`tbO^1 z^T{7Jul8&*@5l`9vi8J`P7^nF-s}AGr-=(buXX9^k0l;~>DF@3xQuIsdtLB1yv~@s zYwk6^fJf_EaGVQptcSQMI4(m{?6~zjWVL!>Chm(MFg5{v{FL=Ly;%B{b$m>xHP5Uc&k$CW2XS z;g8-yOagtt!^ze4le zA-!TVo=hLv$#qJ6-hStmLcGq6^BLhIKe(rV2%F_{>}k10LA)qA`asfdfV>ny#-rMrtuJ_?gxg__< z78@q%=$v~DxkkssMf5{G@$$|0mTr98Gv;I7B~#KECaZtNUk5A9)oZnu_b#K$48f#) z7|KE_fp>cNnqz-3q$wzCt1qtr)|)Dt+bxxmKbLE2tL^SpXzj~P``8#TlyRXRMZ5aP zwCwZrlNrJswG1QnGSym_R+ekc;}+|NJGZqFZ@@aKw1^G;>Z}=oD`&AG2&NrNVsozQ z&Mqw=_Q-MeEdIKKb`LQJIxEF$6}Uc$zxzjs*6eujP@|kdm7(hTh6)C zxF82MO)q14ej|GJG!#;2GDV)@^0!Lu(*_W8hrE@Sa)B|WWd`-*548*0=M`}ML0M49 z#d`b&{Moo%;%lh(%e{zv?(9;;w7o;cg~?vT77Enby`twc%-vZ)H#p2u&t4;1#I0Ja zG%Qb_Kpoc#C7FF69yDG?WE;~^A!P{FuuPH@3v)s`dN>QBZTO1Orn(esdmEkqrbPW;YYz= z@3A;1y(SmE&b^9e^iB(mxcR;+RrM*T$u<&fxt44dHlGl}Qw7$DbS%{_3Fw$XBYQ}I z&4`)9>o8~fsFwt+{i%*@99Z>9EHKPN>yf48aW?7Fw0M*CXVQEr;>JelXvr>~bhQO1 zHljheT=uoSYk^c_2FsxOhL$5k5jpH=VFtjbB}P1%c}1*341#rHFcmD=I8%|{qa|3d zTg6r?4QmY&Uj-!B+!CThuwZ7|)UDlG>!-U=UH zEQ7?0MJ1ZgJB17yt`>_D=77QdSI?Xfku*;-nZ30{%!M*W^q`ha`L~yKDXGYK16}9 zC?^ZF@x<|t3PzS!Hl#)ei-i424a67dzMR}2NWJU$7iD2k-EvW-=@~>AQxfGtC~tMe zqojIJAm2wCVfQ4U*u`T?wY%G@F3^g&J`26*GpJ?QNbIus4@{%gUq^?`oD^s1GmGq+ zgF~9wH>~B&Z$2MlaIXFiR`NU(wqz_nHncoG95J+kJtHG4UqCz%>!DJ`zyvTUWo(=r zZC?%fR?|NIGH?+^2?lKsW5o9Ai+emcr1c)A=orhz~E^+Txk`E*C6aNQ=tHFUKI}n2IHb~C%?A35r z4Gp$(MMyFcue=#G4W`}07#qe8s+hkDL%jU4+nxk&2p{g~!_$M6_F&~c_(%ptH#llSg*6O7D?>^A3~@A z-d`j|#c*4r$wfLPS$ethm*<&m<})~3dc`|4v}o84J`{W&9V)=kG2*5AqNj zAsc_@4)mJxN$=TtXde|r(I5O_%B{YE;uAk|F8>k^o;@I^y20uaoj%8~qnyn{eFl9; zLO)movn+0{#b%d;%AG~0xMATThSOHQ2s$D%>QV6D9mHRNO)u@EzM&fV2eOBx5a!{kX)JIRl5I2h0iS zcR>+ueK}U#%U4T<0VCRF`3%SuBb1Cpi~YQ`vT~bIYD=|O18924?eUpO9#@l7brFB8 zzCfvamJW1!kO%G;spz6!ot26hnplG!AT9RY`TFGr!fZ}|z^I|UyhSKH64}qYam7$C z#DGK&y=cd`)|RQmqR&sODB|OSyTAGfNjFCFM7y$8RG#y8Gc&xK3|=2J4Td=CvJNha5$i_#%eiqXsjMnEKWa(C?*Ey)%8P2BX$n z!c4@NcUIPE%2?bu1yGe!Mw0~uZBzJU3Qtoq^$P8&-&LZtB+*8e^grX`29B4fFfKwg zTr7*cU^-UePK6+wEqbsN+K17b!ZW^o{HYQgq>WuI%AX8<;p+Le& z!dJHpU-q8p?9lBGb2pztdDrvJl@xOp4g2;k;*qp_7rJ$(2|ex?xXHaIo0GnLeP}ph ztTrdZI87kYx7HHvO)TA6%(3cC zV)1osxlP@KWMG<_moguASJd>4@5)1t&MLqX1@F!>t#~sltgN)Gw6&*0s-A4D zs#!IuC=W(D)nShYIF2WXxMW#XX$!^n`h#iUhO_oYTkW7p6sI4T*jHM-DzMZ?$7b;G zqSqRS2r-qn6-?De-VJL;7vH0To%#X}a$Ee5D4S2x7|)LJ_%r5pmt(#E$Zwha1^*?4 zt8ufiSD6wTA&sU^uyX~VM<2A{p36N91o{6>e7%BIU3AD=u9BO zXVO*3zeA!gYj{g|s}k}?bRgbcDvDXFzojCyCf%mnV*ppGg?EGaOl(09(Nzom;PvH# z72KiW9#FBDll~Jpz7v-|N9yY%bjr?tYN21$q^G(qH5S_a5}`#j9*;B{W?E*ZEbHuw zty)~}tC{e#Iyi=DIC+(#211Fn6Q!K!YQ~Y477=@a93%}ow*LSqug`-6O8#eH?ml*C zt{~w%P7c$Ky+00@&G3_c_>=y@+u}{s?I*UkA6gFcPVVRvI-nKec#g2lqo;^pePu&=BSAN7*PRh`zzb%DdWZh4Ko2y(9)U31ZQk@`HaDvdBgd{ok6k#ZT6V?epFcHEe0(jCuQ~Q2C z6RPyb8i4ZrjCKIg+EcU`o!f-r_s7d>Mi#yzf~l`$XtEoc>p%`X=f+SA#88VhHs}u8 zd-%~cX5x`s#4Y?cgd-`|y ztNwaGe~r*1llO<8X>Wl0n)D6bFXYdWn0{~_fA|-Z=djK_;~p5kJ?gzQh&<^gf^aYd zAwU0C$})sk>Mr5Ekh#vWauNb4m&o5c!edl0)E0{gn94)VHkq| zJ|RnH1Lj}SBq*SKVhf^N!R~w4Tn~sPX(wgJj!7wQpZ0d2Oq@ysJgT+b-$pX?0}_=Il$Y~y3t>jBdiW^d%5AJn+v%@Rhq@fx`TKW)tn z+YQWL3Q2A$nTm@0s>>ve8jOwzEp~zBylvKCl|um!kA!PsnnzLTzz$|JB|kW*My@6V^>bSY66)asfV*{p5Mfrd^s!A8s^v)V^L-K<9UlE#c zLJ$I_)=BZfs%YE>u>x8cv#@KLIxp;omdFK*2mf$D-RrQW8Uqmp(5DIu?>nh*h3oN) z`SqBxbFjj-c4oaj`hMn(lW}s-p%eqxDYJ{4icMHziYvfI-vH71{?_Rt%h4i(928kn zVa~8+J*;Dm8|7iZJm^ZR4#u>>&2ZwSF}Za3p7&t2o?aJW8z6QR*jxoXW0dWHcpgxx z$*wc|?!dhH^U280hj+nzW8QACp zOs6JnFmSXDc@xudjXh{}W^kq?9i#mbSnn89`YpzBBQ?!nX8tf>-Y;v!<3{XxrcgEr z)8ZIta;#GAdr|JsS(p;j!rI4#px6JwTDvP)WAG)x6^GlO!>ItmwZg%!zHpVk>)O3MQlaIUlu_F1)plVXfYxme*BjxJj9W`}Xw}dlj+LXAr zAwS;FitTRQ;;o$eXC*lEHaTos3|CJ6M^XS_D^Gs1YRqtHmaN zwr-Amm6c5}2q3~cmpN<$6x#WKki`sie8micNU|0yt9Z$v;Xp7U`TSvAxKfaV9L13v zB@(fQ!W+$cx=vF1ASp$9eCeEOgidmlaLlOM^Si3oq9DUqVcKxmhH9T=Ytdy3 zw+u%~eg{D(%&om_Tvsb({JXAjcO-grN4)Jl?nQ(DkEjDDGrIBqKKv6r4IMlZ1-F0u2LcdH^PyWZslwUfngE zZnT#gsqWsp?*8Z4;X#aa0h4Zl(>7!n5iN6Yu{fc0A_(u>U3Z2DgdV20qSFu)KXkE^ zFdIEEdM>R6x+Mn8Mljf=P!R{VPr*+^=tmuDi`jY0>wZ2O^t?4)Ux*s4ph{|5irUEl zvMuQJHnHPkg(URJ{_#q}&{aXcT7Snbw2~Xt0CFitxuzE# zokAK0xU35iHvN;bH9+I{Ph%BPaHu}1@AfC}cvE4KMok}^`#ND8oN&oPKuNoAelt$` zCs)9(h6VMgH?tv7Pq;lhP15N!D-e5!LpRp%%!&JI7KU9h;5*azI&?FYjo>1;Z?RWA z&(I$MPzepgoFMBF*8O$5h`7aJW$1O)GCV+~BB3=wWNV&~mf_E*K9wD?#%Hax$<;wg zZ(^E1<^r&zu7L*~{hRse_P^aOo{ap^AD`|TgMP9bjj^9wH71UQY_wonedl#;u`6tI z6y(sg$Hu}N`zF!Cy&Qhl$dZ5mp;eiXM|v@2@HE|eV!Yl$)h+=CpvcW6SAvTWb3weC zXhwLf1>Dx5j@y9Hc-pu*3Uk@i3 zL%1!r*vDQ4rI#IhkZ*y)`LcoSd!B?H3()bSlil5eBHt@|fv*K2ON~VdTO?v+nlP|Q znn&dg8SJ^3*ED+6*FZXz4QvA_rrS+{>~I4%Hyn+fei1*)4ec~!*~9kXnszKE54*So zPz=z6rt5Y&+Ma%augyArGIByWL>Y=rfNsCHXR`qK!**WiHsoCF|_ zT;8vkiZ=$Y9K1=AIcN6a?lc?KqhFR| z?136$ySCJU%=v-shnD@tIn^_ZEr;KWCE`hA@|Q^0#0aLwsFbkAG0hS?PCK%{dS%f< z3PRB?6Qp&Tt9A8!OAa&OEqoT7g|AoEd*AAg;50!EDUqr9&pB??io4^B7d)o#?$8ZN z;2vcan6*6_fowS(#_S4%)_bF3x~n6Mbz#9-^WMovnN;*2wf+Wi^OuRTfWfa-ZTRjNn#ih?~h*Q?f+zJ=!#9`ELqBYv=B zn}g3WkoS`whVX6reYfEAXM8t9jU&WkYbxx3KXLSuehKYT6IRq{R7COdOgS(4`Xh02S}r)Fa`_ zCZLU?;5tby5WQ2AwTO?RQN685l>H1Rt}CRfvJdYT#S4Zl1~HFd81ll|tgucA>ZWiK zcQPS8-tG8QTlOxS&Kmmw7WxB(exKt+qFZp${YDIOHmqfxK&uwPX2e639QTyELUvOn zo+LU-sY=0=l_Kc~FQ-o;NykRONU3w9Absq8Q_%@tz#vKoyz&+q3V{;41_}RKQFY1i zl1`j>`^2J4nn*h^Wo297D$$J#)zU3zDqA+EaNv!w?aRC33~}3A5ihNsfOCw+jYk0f zvYfw>O}K8BOYo_Rcg=`gO15jgUA96o-Wl7|l%T=efqCF;lY2d5FI`l$?fgvinp(dX zkZ;tiCkHuDY(Me|3YEpz%Bg(p=hSkp=ElLlIy=INtlX}@TalmNNDbM)X-WQ*|NY-# z*Z)iacgIai0W+e6d?}B{*mm1)MOJn&wz&>PuLPr@aM2@-E)tT;N|6ySi#zWDKPwC~ zLk&*?76cNU2VVI3?pnM&K^-ExQ8p>vAOgW_I52FdnUT--+HRaxz4W!zO#fte#2cG< z&d`}1r28&SSgBX^DNl;3yetMZuFNfCRTbV|Ep(1ers4YeZ|%$m#Us8Jn)XMURY}!L zpUBFbx>N;n$bR)x&Waj&Ja2x6Y!72?%z$x z{^yg)x!TzLM<>@OUh#h^!Y@~pBBltD!MIS8VToWF`TWJ02>WS>5gSByJFd*APrb}n zGoBUSfkx2rMUW*}7;l&1O?g^7V@#oZIG(aLoqdn}W%bZcPt&$@Eg?S-1`pkvLD%o45vzByz%Zl zfb)@FhUABBub~r?qMegpX|FUT!DPrzdW-JsS4}lNkD$T&&>ChZ0-L2$9r$Tk@P4b&&Pdf84yxKCzpmtA=yL#E6`eb`GdRaDv`Qu^ucYLd zRxPohEdojN6*Z!%BxBx`&ul_|O!;B{&9PW^5AH8F{b2aO-Kcav>>+Z_u<8-0itA1` zvj4AJ?jMl7gv!}$?0dUKe6OGXPh9#x1QY-1%=sQIC;!c^@d~eAHP`^FP!v4-qgYtF zXzvG(V+9f>#8nM}2pf4547zEo$e1T=3m)_?ptJD(!>^5SZ}MSi8Ih-_bDPibI$vkM zz0J<*19_c1J2;MxQeAnqnZsN2T^;yGhSK3Ns_2_gG1FsWRX-Dd4GE8{V&P@-C|kO$ z@fkWiy6Q7bjiw`srv@^|_a2xh#CcUA)5&|}tlvYpOo^&7{3hg3kve=!Ko2G`VU~L! zkZG1HhFBD;ydgkt@EZbuSkR_zJe0oI98zHBR1ZEBn?r@A;tcuw)u401Ad=W)6mj>L=uMxR{cr|QG5{0Vv6P{~ol7205piVKI(g$QgmN$@ zk{x`GF_<-9|0(m)2hFJ3?)6JorCj$iE&tRoC1Zlz8Xb-bZT+;W{@P$yY6PcR)d=Vs zaSkh~B@_$IVAB!tZ~Pavk@m3GF%w+% ztWlHZT7y9$k|A+VV>FL&OfDu)Gg1uz4p3y$UV(WXy3f-1D>F)G zm1bn&eUyRs;?qL+QlR3boY^*+t^f(eL23`}wVQL2gQX_0z}Q0Fp(HUYr?Lrlutv)O zhW5{yYE-9@`~Kes@pPymlOA|`O(U#$Rl*#Ghmi_Gc1!bYa-kX5RW&XUj$hP?h9^64 zI*GJ7zZyv=3pS+cdE6&H9_%^4{t7DV@;${Fy3^=78=Vj9*vVPpW>S0@o>by{nD)33 zry`4T{RKPS+I&h?rloC^D^%s3-UJAsXV)WgRcn$Ey`>b1b!^s0&U9^)z!v(`3CKV6 z0!w#^4_a@q<^`@GoC59Eg{sw<;AXGU&zpP?z!K58L*#l}Mf3;+PzOm`nOHZ4@Cj&F z0-6aW&f!l$ngbPSH3SUZlP-O1C`BE^I65TY7Va6gSupr^r9o6+=Kbj-$}MmI_Hhj` zhqoHs!q2@~u6DH{ilSg~;t0iALNt;Ym43llkKm11LTD#}L;lfh+80FWK2b&#|5k7# zDN*Y(4uyB_tC~bL#NBjbJv1Un#YuZt%fSirO`2udJ-l%Y4k1vi8UvWMR_cwp|E`Ux zAOK5!VZ>CLC-5ZhhB*9uO9IWdp%Qxs`S0Kseim@v+c$E``8}SR@Za2${*S;>vf8E^ zu_($ms6Ux30pxT%w_w<5kb^yi<} zvMUSjegYpr_Wb!d6?9ywcEERYs^wg+k2}X%TubtP{4YQHVDKt227p2F%PjgssgRz( ziDjydoA3a6RSJ(jbXLAiwK(0A5se1BXc;(A@G9(fBV81%nEV z-^Boh{$m(}Fq-rdJ9?C6B}sb5rdiCAy(#9V5;8UnA?TI=LDxG*XA(u*qUqSSZQC8& z>DabycU|=+ zm(34Q=9^U2rLi?{>Gzu)j%zfFi#>GQ<{m?(tyEZI2}v+9b&Q37>g3tTFWhW|{dzL9 zkk28oakZyU&CD)cv>9#Li@Uo@n(a7T>u`;0mw%A8HJ+uvu@cuTDN7HT+Ia5CaWieF zcDXaq{p}1pN!qekrO3!uYMnR>n0zJ0-;(S!x)Tk(ONum9PcJE}R$Vs;XTwe`AgNYI zXL`ye!6aHWZS#e)1QoiZ9N?Eqa1PU;M{nGq&)1Qb)s8EzKSn=+YLADW(`rm|u^yz2 zGbkc8%~Vq89c9vLlye24nqeOcIv?RRyCBskM{JE}Y}KPZhv*nDEWh^ZH%xoR!XdXw z(`0J2N#jX(qKw5PS>lgL)EBwpTDsd;h671d`yg41rw3xa8*fFRR;& zA!J56qYT3lh}QXYcz;%c>xtMS*y(2YJ?*B#s%47AG%Tj^BVStebUna-SQWKwMjT(N z(>o|7KwtV*gZ+iN-g*M#QumT}^lEXL`tFC0Yx{P!{c~gew;9@0M{OM^AIVb0L}4Bx;{K+Q^0GKp^~Xq1a6!VnwKF zF&ZkPnNT(sr$X|6EC7EIvw%reaB}4kOH*x;qf`#5!q9aQ(mR^5C;w!=6`1ELCw|S_ z6=e~aFBCS1EQyh?-t-nX`)KOjVz`+g^%;wopzjK7|Cv~~0PCbhqO^V19?V7yHT*d- zRDib}N@NWqye`;DX9u~#PI}!0yS>UCY+?nATXjJ>u@o}V@u^7gZT7T}f%RL(AFgwh z_sAhXwIWtGp5Xxgm&(%!U-!@W?QsUVoU4oY$(KTsjOLV72`TkYxP(h~)gQ#a8Qj8` z;`!BK+OE%XR)4gzv=8Y=wXAPg3iqAiySQHQnEiC+w) z9(}s#3eQW}sK?oq)X`B@NkeF_9HMHR!Md}Acc|WR&cj@w?A4r7A+|$Qs>a>h;&i@$ zy}=9iM7pH+)E1qKfPvsTC{)-==x|VR%IhHXid)C+#|b3C5slP%S{!UN3VBtL+d##d z0&{h#iL)rG-QooA&9L9~V7A_(Ziy|D^X~pP`QMy|Ett}uKjz`j@jvP2{CBcG(|-Y- zkf{IFsA|rN4W_(SsehF~5>BZe9@5^I0c$nTfzzOPYl)8ECk&u*WuGzocQQET)pLyi z1Qkj&fQUrIy(XP~S28DqS<2?*S?QiWS+VD-I8jL&wL-qQf+lv=#|oEkmZX&=UIH9&?NJfw z-E2jQ8*~gbPTQXH^b#%ON-5jV7uc%nQ8pG1<2_ZY!eWK(!ovG^Im^$qB4o zs9PFuNUhhfUI};{lSzNPf37DW5dHA@hr|P_sd}}cqPaADojry1_$+!U^%sy2{Hq_F zC?JR5b1Tnkus>3|?42LCWQK&ho1@5Rt;Q{=5G%evG4t8&_QhTUKJoWoqy>Hh=Le(0 z@?*TB4-)TdHIpK;PeEI8pQofN3Z_&}kE5#Aqw`rqU##henjV!@ zu{R!gV@DtN(-=0^@#$8G*8Lq{u_W5sl zy@A8Rg7J?Dm@pC$5W)Xt`UD*v4gQx5VsgrxGOj4*&#Vf$~Sq2=jy!&+dP zjO}uA#J)0)`;@xx0F-zmM%xA@ZShZzp=@&wkEv{Pj*qdVNutf()=s?L`TadlKaWs3 z80;U2IZE3-0GX-n9wC`(?HtjWzp>ti=+4F7u_)@2yLdrsbrX1L(#51;|4Y&EzgltPCHdm%L ztyMhz+u$dph4SzUNfSmE{;HzTLxX6|iULpV75Fi#BWkXal%yFevcn_^3GAd6#?pQx zJ<%w=tdV)k3){g#j&Azz1ZPbm0dXs1gDX+fJ(Wa~2~v>A@UqdTgNgk+{5|^k;i4}G zK8rESgp|=lRe4Io0H_1CY7wTTdCN6&`%atDeXsHCT}cCKVJtqE;%PXMi=^enLt|p& zmKL*YLoq2?@?)O#YOYdzJ`#4^>HIL)Qu7N{6h0|!yi|+7=Z!(5CPu8Rn~OOoxRTgX zfnmzK)=zOx0-P@v9oCTQ1b7VdsLLKvOAGQ;sB}m@vePryRD)5~nfcmH!Qw|rxE!3( z8G{;oYh^jiAx5wXT&k;VqH+;pn(N3%>S8PA^Ojl<4fSsBGJs6!S!Z8#m=4McMJ_(e zoNW{MQEOMXORc)!^18JA#lCmL2t$uD)HRRg-q{mQrKTjS33b14uqwlJ4Q-#@Qo= zk>ZXZ{ZxPWp~Ty_zT5={g7U@@NaziM!~P+LMc-}PtjWP>q?u3r-9pZJ%5Xw2|FhtT zK%KaBB^i<1enQbocYbxxnzlDQLx2?p=K>e%g@tXMn%WsZw6M};iMT>V zM!Qw&8nASqp)x18+L&6y7pnSRyYCg?8{}-$S%(kzD1#Gb9j@82S3;53a0RWtsnQ0o z7x1CwP7iYX|sjv=&&s>zCvveZv}kKX;Q-d7JP@vgr!P-E`Lo zQ~fu{??N9{d4yuvRYXi!+cdFt)*_hiZAje-qzg(w@ym6>p}^``E+;*D5HVP(8JEB133dg6%L6W+$3thC6~S z+0NVw(K>;eW--&#tzx%a`9Zug1Ne~&L`lO{G{@l(B5nj^&hk0tqH;~Zoz-}q6&WX~}DMB-HtReVjd3AH64tcM)A94@9Kt|Lp*f; z?HE?-0W0HOI(T(Wn6HOIQLrR)#N*X{z1SMSy>iacSXu|}cA%s#3(C{}!h(L8%L6t|b z1At5}RZADrvqd{$P)Xkcy2&rBe9PTsHjmf^&fp+p9~s$$=bZyHl&#jI;iubfJ)S&? z9wmf!Vja7iP1a${ojNs zYq6&U{eSSq$q&Bxp9+WnfiILjY@H3<{~N}Lj@ObN6hI7_eMGNr)vR8zDi$rP#`aeA zz5|v*%HMclqi0IEmP)Yv(%?t)zJ+)#99nM*HwS&NcXdsBoB0vqy?Y1OM@Z&vP-ky2 zG+rLa2yqc2N(!L(jDZ!Bue@k90?tM$iD`l+$uEex^bXY9xkl& z$=B}01IuxIY2^-{itkAdPERR46s`3l38Ha0a4KC}fd5aBQI-z4?ux5hcXVELZFcps z=*(Ar=92!<5H0Xqa61$p+IxmNvpvOLU@#LRA)0NSS=PzRjWWY!z6jSHdoCV=5^Dc< zV%bye6+j}-htivc=(K7rX9%1qb{tKMZ2A2vD8y!Qt^}I@iM`)C)yE5IfW@Wm9dkz) z;!xCXs#w_?Zn5IMrDG-r#-dFJTdL4!{W->k$}|c)m_blKla_tF zXvx|NA@LQg;!%!1$R28>$7lu0qC(Zeyf$1EewMq07t{73E;7iBGO8GKSOnvQ= zSu)3mf8?Y%(+9>avXUH`mjNc9^e06FfYMI;3> z5l#SieZTA{SlWJi7HdZxV2A0)?8BbRYzOU2{H>kjWf3ltV|p*vM+jCP(cAoj#7UQr3^f*vK0)O zt)iS~T~IAJ7m+Z6Dx0awnyAGJT5A)oQcFQzo1u!gOC8kqM

ripC^+uw~?YL8-=( z*jYs-nam_n8stH~mcABR=8#>jz{b$yDY&SGHCSd@RVSs)m7;>;k9-DdnyG3j$>XVc z%A1L(^3en@0A5mA1CN_*1vz)ta#EsBMN^kOy^>jy2fb980<^@T7^5FARrigw=1k_E zb@K!xSCduNg1)?>!PpUtYC@N--q=wR?ToFQUO}6=xePVGwA*!|sbIeXnVFuA6dGbw09b3k*{x4<^UVm$d3vYM$E+Ar2!ceGVS7$ zF9upoBn57}6qXuNKCVL$6FiZTN_SYoO8;jhFnVd%95N&&)UrG*ohn)kJsvFs%t^q4 zvVpQCt!kpGDvB-CgusdFsei11$P|xmgs`giPyC3x=ND0a5@VsV0hK6Om3YxY$!M=*9Rp8TNP_zMk zr4(NarwnT>T{VCnr-2e%=MMpPLm3q|)&i;(ELbXBx{!x-&UJ}G6)U|`_cv`0J>8bE zip3X1T-IM0;mCpbf{~Hk^@a#;0}vGm)umu;LxTteId9N@w1}k&xid$Rw*j(z?1BU_ zxVtVVhq`jwrod7oB$CIg-@B=_jTX zT9q7h?vE;S5~_`M)|`hjZ5LsX%#g%R$z{VdeCWU!&tgvtT!#k-Q6aPPzObjF`y6XXq9t<={Q_GA8v|B|1~Ag>W>c7N~o${Wg$Hd#Bj8{$eKs zAy!QSXtDjE%!><^TEM(%xmCijh~}Ee@}M?|iqe`ZSmu5=bNkifu{rIZO7-y)wy!MF z#zIUpN4tcDfn$3gy2<=e#lIA3vaA&>i?uOX7P&-?78Y$p7IG;dSaN2z5@(mjz+~2T zVzNF>0KRaqa@9ie4ch6({B{ebMJfaCD$L>!*a_9Oukk|aBpB{8bu^o}ii+CYJVWqB zqHfOA_!~MaU9pFupBj~Vspug}3uJ=i(Z0FQLxV(@7_&Bd^pv`cl&vM?O0dicQKw9; z2ClU=b##KCLl%I}HY!I2A4=rHT!k%Cm`$2)H37LI0(^|^+?`vqRAca*OOvZhRh*Wa z3YVy(MxE7`Qce@^L5jvap}!QSUCt)2oO}(Dx}+J@%8*&;nLvQOCd9pog;a|wb=%pM z6kQw1+&W4r_ZOb56xhNpG;!dK360;exlr%7qSp=2XD`V_2LFg5jTPt=zk zG=^K(Sr>Er!0HtpgQ+sli^Hv$Zr!W>44JO~Yz&lr!}o?I zcccqtX-Oxfix$6GdItxMswE4VS%wdG#OAA}j~Ey^6gVBFg-LO!Zl! z#W@&0yhk?Ek>R=T$dt%? zrc_^`4fwTA$StJUecr62VWw>+S27Y2k?Ceu^h-5pT4^#9^qzLDUeyqKV(i>+WxYWR z=4RXeE$RE{G&yLLr3_oK{M%Nho}9cdw=igHq3WeoPa%j}Iu0XoxqRJISTwhov`e=Q z@f&PSZ4pZU_O7-lUGx4|LEZyrh*>AetfYFEM;FCkkGZ1ALPBKHJm_xsZee$SFLMT% z9lyb1b3Ars{t=GVW2+uXOob!l-sTtMFNBZAdAPAy(Fd+@_M!XKVUwI$q32zS*K(BK z54$IqU+t38%rBXrC3ET1`H*%ghH{M%HKEJK%^=4)JF{2)47bt)Ro~1FFL=j8wY;zL zpBYIX3|D)pIPq3|W3pyWxZso)W(v?pa%8DgWl z6KP@GG5#jr3v@L(*pwui@FQZPOemg6*y9p)ro^k4|CG6di)a2dMoN>OH=eP?*q%`? zuc1byaxY=+8If#>T+b@YCsAZD3c6x}3DF({dP$F2xdgpK@Zu<%e4^S1^p;E@;x@Op zeqFGK+iaeUH=>Uh0<=?ur}5}3N$CwPSkt3KW^5xuAfHRd`D(~F1bz&EAiy;j1e2FS zW&{?M;HQrb^QKy5z2lmlNN50&Q%Te)R%)TCY)fHNg^HfE6L~7x#83Y~UOg?u&+lOK z_5v&ZqYJaDdF1k^XGT?5{%B`yVpZ8AsM;GOnPX!jv+Pq#>rIS$$CzeE=4iU*9-Z2* zIk{EQqqDjzXri|<*)HF)vf7&_+3x4G^d7Ip5hwYkDfy=0{%^~@9Q92@@=gAIcgwxc zpY3eoTt2FM3;FojZPd3@M@nP_Qo=^+yu!rK7##uvY!2TTY=1v<7g((gx+a=NDD5JW|aGTJj8Y_jQ>>Zf8hcZZ>r23tsUDVT<$#RIxh^(oFz+bA##F7g$0lk8*&To5Aqg479+~u$omG$?F!4|_ zL;8iRmSZ6Jrm3@&`4OBN`D9A0T;)YSakU84=-Gu?SG+7NO4cq<6mMw})gd^VUI*E- zZ038Z#`4WA_Ck1j5pvMPK3ow#3)EH_P4PPN?_4fs>U!nL^Wb_B_TSx++VxrPyK@)q z!H)H%&w-f^eoh-+$wxFdDyci!2J|eb zK58yHqWU?3U%+r1*WY{x4-XF+rm1TS(XOCGP7)%J4C$hZ?WWh^8nL6#HmF-)`VY6# zq2H*`t`yak*%6iCR&~R#ab5Qsmm;)aH02{JuA-AC1uc z8>4@`Q(m{AU~cithClR~&Z_WVgh2R#n0SF`ZUs3J2uR>~p(=0X?ZNnM62~>A$<+wR zQ2Jl~l*l}O<<(oW#dU@^mG>`%H6WvjdC=gS8f6VBI=r@R@fh=lqWD7q!zKk_>cjGZ zNtyb5&1e`W+mP-dRX4eqWUs-8KxjHt&emgT^RJ?Frls|1%%F+7o(tPFK~QagoO0!6 z&)JbK;*U2auDWJm?}V)i$^RCO9F4vA;?V&8)Qz3`(9Q%T5ofVUDIJJFcoy_g5 z!IRsN;Hl#n+>SJ|6b{5t^H>m~F0%b4ws=rzhP!D+6P4TqVCA#W0+2^zbtA`R zyN}uh*d8A?m3NY68Wlkrkv!Q_7_MCEnt9MfJ$P8ietl+Whpi1rUuWsB z?U$i-ympbk%HeW0j5q*EXnw$ZW=Vx&&|uN4Int_e@4Z-i)~IaL+8W|G(vaMq zRXH)|;ZqSmQIm{g+l_BtFjuB!(Ar7?W zBkcqvztU?5-t;HG@;B`nv|;=XcKyV>9+lq}{KUl{W!NS8gzg!t-NX3|Wt?;~-+ejl zC#a7Ex+F*Rf(h`=--8HH(o4$~Te+oj?>s#5@Q zjmCHPD?U;lz{^YOxi`6w>8*2k&{=?hk3PDOvCsJ_h|7R$=zj~@TZRZC+Kfqh9KKf| z7lkN21Ry4d9`-OyY7>b&Uj!wTq`Oj>#g4Iy|LC36 zf0>nSO&*e%((u$`_4Dpazw(GP?gcPRtKOkT`6E!3l8H9Q?kma~E8%Hfhox+fzIWA6 z#~nYY+5}8hK`A#zOlpTTO-4O>To`|m2Eu8el$wG~biv!69zBQ|3uAG}WMr_lPhA{> z3tQo|LCDduJ_?DqkZi7jCwhchj{+~IcK@>u>+#?6Kyiy^@XxS-18Kzb$}?s$eg`kd zbp%9)QyEVf}7!fpJAn0dvAOq1tB+HOKgDYr#mMUrwzn6 zWIBvsd_yICkzH7zAGyM-{;-^o?8 z{~w*w`?`hHV2mnmHl|u1pEznq<6l#tZVB7I;}Z3J_J+Mj*pgB}4iMi1T3cG~)dnbj zc4=|nr)f(haAT%SJakwSyVsooJ+hM2q^n|@ypzM+kavWZIS__$p`Nb9KgX#Isfuy=iCku09&z3|Qsns1& zo#`p^u_?*f`PH2=pv?&(Gr4z(iDR=)^GGQt=J}c?*A2}^oh~b`@i6Vmg}SFwo+ItT z#%!EDkrGw0r7>ytg`VMZny@iW$H(Kp3I^C-8LX~$C9JMgKnzfQMKX?r_=~QCXTG&+ zu5|&Uxx2;_E&fC+aq?9mGWGBcLoRW2E5dGfIJW?}Iq6UI7z~a9!g{RG@M=a)>mUb1 z2pPm)5`uQLiD8>MsjXjX5$x)8*THQ2^y(DXp*TZwZHkwH)BCz>Qb3(5O@nxb3|nN^ zVcCYic?seBe%*!A~-UK$G_UqNlbj7d?;c%*T0i=htFp)AD$+rishCbXIUxDmU z!Yq_udH9L>2ZHvEHW2ya`8R;hoP}=We>H(EN2*g2<8lxmc zAt-MA9kx#E4f#*f$YqTD^o=ch5YPG81E?oI3&s1@>ow)QJr5(`&+|$XY3v7lj~e19 zScL&+)3%u>q+YCh!0%oV54r0(qe6YqA_ zKkCayFASm8ucmqPWG}MdipziUuhEnrTlSt4p9~4m#Lvom3ar=UuUd);k#6d#6XTJC zHsVbeKrp-&#`1+wZ%?ekt>o~9)~J>vqREf6Y=*g_kT$njN)35-t(e<_%KvLspek*? z>9ft+Ial-GvDi9>;`sFE_jTyGYTMk&^p?=(xsO6UMu~E6+3W>bR2KrX>Bx(kr<`3F zma<9PULaIg;vf4FzhdBz{J$k3XK}Kcm|~io0ZoiqO$rj4n39^9qMDq5CdP~=#?U54 zbaL|p{RVdYiRQ$7O&&0Gb5Vs-S%0S{!!{|HKIM(_+bmUJI}2sn$EQin3>jOi<6}*i zlQ`uOm)Dl!!PR8=Tw-xf%`ow*#jlTZ?t^<&ypC6(xd6&j|2{9_FdNNGolll;k~^(H z{(yrBRoTECxxgI3z#J$YNHFJBQ{mq>@UU~o1Bf>GqCsy8RdoLTEpx{&sak<;ucubv zpcm|By@tONEC-sTpDx2kQE@V#dfN&Yh=)v)+N=rbamKSU^1{%AfNi*F7iU@=(CXWu z-TKf96k^_>+IjQ_{**e3`X;X;sa;yB{iXXmb#v1o)-j89b_<^|l*d`e2 zL%)Y@92k4u4*}Hg2^I!nOnoW7?0v_E%8tmH;z&noqBAPVjf?7rT4{T^sB3vnuM-^H z%4(dqHe|8Mg;A>$9^K+%5BQ41zTB11Mg?cr^9tNuqZ4U+&NlF+DRa-uh9zdDWp8}L zHLL8ZPwL7|>Fo{Iq<&-LlP2kYCy3HJT(iNhFea2+<0u{r5p@&`FHP`zHoZUlI|fbL zpfPYBPcxvrFry%*WU`mVWfk@dp(_77Bi=K{SLGWHC*9SC+2&lhR!_F``s9jGyf+cl zmwpQfCtnpyge1F6pfeRVP!5xoTzFF&{LYIx{9~N(xu4MHH|#2WAL>;sqqJ8Xdr;V} z_7&1b1wjZ+)2M#XGpF@Zj=$`NV4LKRVe(Q=h+Ff?uF(~ucL^WDjwQn`<`o&Qs23K< z290`gH#M9wsA#aXah_d#@8ndSj7bJ_a;yOqcTu@FxJyH>t+>x8SbPK?2QpoRg(-}pbcQ|BD;iFf4+@#(o>1y5 zoP~u}#Fd^Pu`4h2{4asNb8*L=T>WNO(3(<2uR?nL#v0*F+djSykn7d#+q@j|X6EQa z&T#FdTEQ&P;_HNtIg7|%6=D~VdwqzK@`rm8bR{3qzsTj-_5uaof_=4ki}Q)zAp^O- zRN38fK3v-fqe{{8tu@*n9QAOT2l!c?`oSI6-7}&4tJJ8ys`;-n zdX);FmLdNc(#(Hd{;yE8(4EzPg)|@7+YFO`V9KJSNBl=?yxUQQS5kbn_y{^L{Mp32 z6bvnUQG=OOsKnk-)t|TcDAhT00S>RZiQ;gT6=<&UAeb@iNn})Tvbevzr(z9PutKFI zAvqw~Pqy}zIpP&~KyJz&t^AnJ7s9(xK9rx51W>c5g}Y=vtX-9{0rHRax9R-wJ) zlsp+M4F)yn@shD{8Fa*FCs$ep-}<^#usurRZQ{&I-X6l&b=JYX^5xOj&P>nB@9Cv&7xQT7YH?w|oUz&Ax;)ViPnYMUbK!lSuowk?gM7Zr zV3y1V3i+@{&7bs9y=zm>p9qHV6PTXC==by>qMx(XNz{gv;Wy0CcIQcS#0r{nt98VR zjqnI}#LjeS$u({{X0RkLt`#3ggYaL%WCSb8TX>_~+*66Sv)GdIA5r4i*e(=o6^XV> zMmi>IFTQ z9t%wsD$zyYc@%5dOGeG0_xCElet93ht@DLizoCXvg-%#4bxb5Ir}Wsk6EV9ec?Mnx z7i8Yr{*|LXv9<>d&yUugS|h*inVO+xH;iBQ?bfml@A`ME<(uHvc)cy=gjza)Li*dw zo!LZSvTbV;q9`!2_*=_9VN+~^htiKb$|y0}9`-CrTT&0g;@u@K-_F109d1r}N5ZxP z>ijWNzucE4tI#g=fzn^Q$}TMW9llNW8!x0sYd6oA26w@(FwTvqt90iV!KsbCdM^zB zg4@3S7e8+P%}D(_KCgz|sN}nDm(Wjsc#5#g{e{q`vSZioEFU;cFo9Dkj9foPfN0+t zqHfEM1d}5}lUmJ*jxKpwK$dQj;u2a}fX=Ra(RDoE^*NdI#^SxohbYM@0gqGnk5Y1v z33=rpuK4#azDEihg51Z;KClk;J)`0d3QyHg1Rw1h$3Ta6c>c57Fv`nfd)b;96Y(x@ z-x}q9%!dzu755@E^b>4xHPvHJmN8Q&F4Rtda}%1}c(Q5MT`TDSNkR2HYrD((wz-A^ObpBZB2Ruxe7UHQ8v882Y%K&Ok7Q`1ksnt*oq#J zmIvDX)9NngS1sy-UReG+j(x#D@~o;}uwP$xjG}%x6_0L|Mc)MLi=A~ceh4!wI}}>) zK$?$(b%NhKTSb15trrA~Denl-lDPxI?`BQOzP5PIS-~+=II;(-u(I(`pp6vqGvpCRy@8)37CZ(tU78o&KlmfTZZp4@|9ybrNE|#edvqgir zAJqzSO}zCy?JSo&T1+f6r*?vortrKo>jTiTCcISpNiKc_J{# z`G>N!5SR(qbnC^QWW)j87s%c%xt8sS4eQUe29m>NS$RQaLi8$+lB5IAibS|&8Td<6 zms@;f=EdS4pACT-38W&V)asVl)ivi1N2iUxuPo#t+bk|!>(E8gfG)63 zGPDRu}S$mhdT)i z)oB#P#(l0}kfwrI0VPQU#BX*1Noa6|{J6i|<%vEM??W;iy67Z0>9$hr;28c4@>xnt z)$(P8?uZQ<&7Vg5EWvw4zG+d4arZfYVhI9=-PLOFYlVSs9rVTfpoV(IVc&BQwCCz( zvlFzZ>NZhuYsPMgwG(OScaqYXacw^vbqgw^aU-8kxy}u(hkmjPZp=dd(^=-#0PX+u z96&f;MTznUW|tm|Xclhd&8AE3Jy8y-CxqvZeQbHMPR$+A=zD}@S{9q+T}kkNyAn{M zXmGME$f^F_eYy!5^xO|^<;K@}fTwa@aDs~nMfa8Nch54Cz!U@0%7ouFLKSC(8Zes% zG>ScJ--YB4Y=jKUBDG6u1dVlS!8lAA;%G!I!!n^CuLv(4Wno{U2sIf^%{f~ZIvI6l zAI${9j%gM*KNCDXqP=E26~q(ub{kxe2#>{fo1q9}hvQwX?l;eQ^%sw-E5S4t&LEpDGBFZ_@hB=B^Y2W2QCC5lV=y@P@ zf$0fnyjOo8mdA7Y`b|${0+AIgWMI|M+P0}5jL7WQHogOtVS6yL!FfO80qwDgcgkr+ zLa&4$XQ4Y5UovYVOR;YRev>T*!x_yMXP|B66gpMts?+cHPyl(Okoz~~J@y^iEDAKh znui&8G8SU&SH~uaDD(&GD2Q|6gJ_ zupHOH4kJ3ogFNG*ZvEN^`04_0+(sN=o0}F+maXhZPzisn5_{f?aN!B#(!HUs!U$A& zv+}D9;_ih4Yfi2Lek_Uh?nM=)`nJp(;|1?#1K$`>mPvOqa)9{1i7PU zr#Hc)yL3+Ak7vQH`aZ4az>aG_K0&SJWk0EIXUM5xp&cO>8@im{94pW~G29_4ttzIr zQ1F9hz)WK>^HgOg{A2}@QA#ZMgz63yPYrm%i$@X>S>YFszhPHhBr}v zGYzumKp&r_`03MwzJaAzU6gJ+EqM`jbG59Fd%^T5ffysPFJ$%tMa^gSa$6lUb-|Z5 zJks{ESdbl~Ex+=f0K2Hw=d7lPXR6gW4R<)8o`uDJjUMDBEUo zR8L=6K6Gq$Wp8xlv=o9wGVB@M1FyaM3ym9`T6l|i4UZOW%I}gNC{ zmWTHteJ1xQGtEWK)D#~r$}@(9&m2PY7|y;GG|<#=}%CLsrUQEcGRa+ z^txrmKT_pi;J4ZLGB?Wn#waR2>ujp$r?&~>-5iEreigGWQT2$w=a7^{-knS~&UJwW z4>N*v#~aM+a{z{Q&Vmey5u$X63Z_b`wT}vEk8wcf2pYHAccXkzY6Yob$EaFi7LuMnekAmYHKH&lAN~pEaNbJ%ldhIYEOZ|C->*TA?6h`b4bdFdxJ&Z)c(k#-wrwCjfx zVxb?UiaW~tf|NhDxJC6iI4;pml_0M9hWJ0t0RPeD8>K=@-10-#6Z>iHWceT1P)C>e=j`?KmL(ttvQQSUG(Ehr1+vo-v^y5ESe{ySo!+2iy94QWFhK<8 zt$d@%aQ}>Hrh@gkv?Qioxq6OsAxwG}ATlnwJmuP+r2pzQD{}Z!vlz5@c|M-N94~kQ zK?(1}B1Hn}ZIrlcL6VdqR(-4UYU~DUbBl;m5gYT^4TFXJ%1rM*tqU<5!FYLg)&jnRgV@`}LsOqu4GJ)}yBK=Q*-Ds6z31@^*a=6!+-{-(ynL+gdo`$HVJ@mn>$ZH5gerDI{zucU)( zS%jsfbgy^%4WfND;{|Bc3U;9Pq@Is`=afaqYh;ynDJ`ej#Yz7EyaxYaS3)5TXre;^ z0&4ib_(uP~$bM>$7S8{h?3bg*YzTn2 zze|c3qF_cudEZDEM@BNPA;pt~Zl1OPFI$R-oJKCoZKO|0_G{CEDA?9`!a1G3X;Ds^ zC)+1)(Pm>tHO;9e2Ypg%-0t74PRupm3C~H+)mt*h?+;@C^Aj4M%}}`gviiT zR__>&+><>R>YlPaX?k<_^p{kfHYmUGN(L+Ukdxm1JsR)3O6;DIhgG&uw%MJzTUofB z{i9YLceI_oWjB@2=+K+?U0IgTo`_zTe0&VHPyZ8w`&;bX&v=;MBRdwafY9EP1B~=n z1l~^)gzuugT(-~1P(PQwom*}MyRz5vP(L&H-%bW(x~BWH8jlRxuVlW%6Fnt+ztzL^ ztX`u-ckb7}4^h5{2mLBv3E;jj20~fecJ6LVLR(Km{mFyLQMoCsGwL2L2?+0b1Er^s;JEu~j9C=p?p(JP6TMf*KB$FRo3={$^Q_~pG%P{9fqRB1U_Lhf)WS7bf zZwsZo2B1=cqi6o@(c$9QCa33{24vKx<_ z7AVRXN-p3ckO`H$3kgJL)Q9s@KgR*Yl#S-~&C}LSg^%mfCDMd9g^il%8b6}8lE1*uvUfxss!WK0`RMu}Q$w{={Uu|OJA29w9+53`JEW`f zdB{6$Uc{K#=IEgV62(RvQmoi!GG!Q3?F1#O7wc!?^Cct|`n^?kbzYB+5l@quG^ zYUEfXi0LRejTdRMMm&fc#=+qFVBfK-t2+l4a{KJw-tZnZvPFZK=u&lXr;Rj1Hzq(W z32ronp{$O=IvA1F|A3w9=8 z@?Bj&dQ!E|sMPD6-*k5b6{I5Abx#ax!Tga8TTrR6oa&YUmzT1N?--na%p^70plp`m zPmu#Rc;6K9L-Jhe(i_venpa4WOs!|cl~1$COex_=!Mg&uXVF{e z?3E?6Yxlp35L?^E*ng@W+P5;B;)OYgjb?|RV+zas>;oVHFXkW6NBzh*57blYwVOYd zxCeXF#YfXVKLV0!J2yvX$6;^gk^1qtOK#I*IL8{3;B#X@6S$Rly@Aan#&q!r1_A?dD5dfhJC{Jm7>^CHELA1U!s%4P*mW5uT96_UDGO^yx9wrt6jjcs?_iRIF5 zt5ilorE~O7yKyLp=ZO-L9YqAq&`L{<4HGpXE?_vY+BwBuq#xCf; zQ-aaOW`s?dYw9sOIbBnt?SNX~NJhU4G3kXnwKL@Gx@ec&sIHjcaS87gN;68UR`D}m zv^vkIjct*J{ znot_2gtp3(CNZ<5>U?p&y>w3YYlS=rt+pocY#*riw7##P`k3s`9 zK_{ipT0^q#Yoq=uU!KeWOJs@(1M)mpgRx*Tv7`^(JdWB6K^%VSw9?{8HFAc?`=LY1 zB1WM-U6@}leQu#pn)1{-jpfKw4EN3!jVf;(XoA->lf+4B;%fwduy}bw!72b}eOV~9 zDG?*;l*4%A+8$oDVj(lmYJ*@FEwkzza{>flJo);N09)bKNmRuHd*7osv8hhs? zX4C?XB?&|)omJ`3VOh#6yaw|KmNQ7$u?yG2b@L2;8-1`Mc?&OrR?t#?>|k1X z3tS*xefBc_SatG(Ha$@dC;4#LWGwbN(5&+Lk6DKwa@ZjD^RHxUOi*~SgV7XBx#vQ7 zx*{aHBTCvM(B4>9x6s!miOUw{?ikx}V`x_5wL!o8_|RJ*v-gzYrWfbr2k;P;DWyR& zM7Timbhxe@87=pU?o`TN;rn0dd0+A8d*r3Q3FWPYRjq?q@gsc@uA7HyT8FqnwyFLc zx_6R3xp3Z!;WL<}q$*?QFmr52zG!r99OB!9<_HffYpBXeeij=SmLjNIZ?)BO#!Uzj z_7?Kk>HdgvG~p`+WX*`hLK6T(mT`qm%O|(?c!t0VO0J}8cO9{%|$&@ ztPs->W2DViSNIQK1&B%;_Z-v?*cW zxk1zXA|8OWtWYV~S_80@Syh1&A_tZ%Ly7*K zF|;?+^sNj!u7FcOH94n|CC{5jeR-&k|0>3f4hfzT!^UC~$T!ExIwS?1lQ`iEGD9i_X_eifN~6sKHafors|VMHEPg@y~FIkXMyc<`&50TkP4 zn$uo1(28hBY4j4Cb_j@MV~&r)8)&zgy|wqzI71dwHn;5RfAl%HCXL7AW0WRN&31cP z)vzicBk!~Fk+1>23?W+|3iQ_$!u~-p<+jmr0vojDAsa%tU;$A?;rSc2(z9j#bIIt% zp#trcGLu}MpbROI*|p4!(gK*D8S$!pS}sEgm*j2sS2MbtpnePb+mIRdHa+-|mQ)kmu1mlxMBf|sMzX~@IH=OczJXciax^gWTmu34P`p=WI5y4HW1ow@TABCH8eT}8++8g z;Rd6NW|q}*w&hbzt(0Y741$_hHY+YuPwEG?@_G_GEH+QG+N=1p9@ubyC8-Z%xwJnt zDpd^HcEvi3_W2HJU_+x#-L;ArUS96dTozGKeh5MiQ)X|=U4ltX8PAht9?o{i4t*hP zi?!u*+ps=wZbFFZHx>wVXc%UWnzYU$pmZ5C-?qErT<2N9xnsehaO6|;d7F2@=5Q`e zDBZT5xBL}Fk8hPV>teZ#EbBJe)`iXbhL$_!k9YE`2LJJjKVy0 z{U`w>JVY-Kr)kWaP6Z=Zu}m;RDPnO<$eG$@rIhX)JaB`727aZC%}7BrGWH9+%wP;p z5(S=Ox?{~;0OZk@uoP`Htu1F!<-nd)2ipOYYGss3u6)8xDa+hk#p12yJ>1l+a_a43 zY%zTvV#AGz)dg|(Nc%Rbnw5)kn0K-qm4*c0rjzrOSlQKUYWlpejQQ&i-wIi4((`eK zeqT8)Lt4$gt-Doyb zHWMm+w0W>}MDHGJRxWGdx3R364i6er8$+8qDe62?Fk(uQS6+K$a5YY@+Qazi+=2dh zoSImPdYp;;t%;MRYIa}MR|Ck$)YzywP(r6@I+OS1$370vtZxG6Xva<)Y>Y~tUhDlZ;a$1;GQOst~dJR`u z3I*Pg$)%04c@R%yaG}~1IfMMb*T_5TYZ}wLrD`$$3~kuL666ye20BIsNQ4qg;u+B$ zX386IPzl@9l>!+~B;zkFysZ6#MVa*CdNNyi!xuh{hV}_QrwB8#D_vof$R-&TZ4lFO zzTv3JWl3!*XOJZPU2D(mS@aCAaZ&Fxll#YxfCvA~Q_5Rq(*j57*h8NoJFXP0mN8A% zEn@Q&W~xILFMhpGQo0p?{&7 zPiV}%-i2E9!sAgM)&H=l5c3W3KX2SW@4tkq0znrE;41&$ZAt#+#{G}=ISd9ei1Y=W*qMTkmdM?_#R;awHQSu14~u6O|T=7(@|07c-=cG?jHW;j@A2kyotQ z-@4FMA{;LOW2KAS>FsTA#Dg%t38w9+!-U|2e~|bN{~Sl#0<^V08!`Ry*_%9c6;4Os z%tO#id+6Cvy59%&&>?&0X|z%gX`BkFd-FCxExwaLk}J~8=;NU*XKAW?t_b=%9HuJ5 zI;P;dtG9l0a1U;T#@kIWoVhqghogvo-R#3l;mPA9rta}jy(u(pE`-*kuZ<7AXL1;h zs|@b|X)uBEB1V5AxzTt@-P~36n7(k9V9UnLPd5;foLnLLrgoAo$}0a7if)x%y!+CA ziK&3s(b2Fvaak{N@@H^j*}deBKO!b74n3lb|^FxCQUJ zljSt@8BRlWy2{O3+Czwz7jRB(%UL5@G5y45oHzR9916X>d|D?Qf)Q^7w^Sz3tBv!p z{>sY;eR>qbm=a$^uh)Nlt>t3t74?R?OQti3s~kzQlrW5M{dwJEyzAAO@D7g(D$_kd zNZgeD`jOjT`E>R6HYRndq$IjG=PfAEW=+P~r&M6P*c@dO>m*5i=3Y4D7QnZQ7YE| z&^=7Kxc65~=9RRU@G9_n{R)Nlc{ywa1U4N~X#SWsD^ahYgR}Z!%FYF4qrr zQx8xy)9uH)2?ucAlmi?OLU1Tjm)T@kYOGU@d60|j7gPILUB!N zvdi7|iVg~CWT$1>wc&@WOO}p1j=Eeo8b3>Lq&$G+ckBe8wP(}91g$nwqOm3{g9oTN z8c*sJAv&?Q)#i7Y{Lr)$AkrAphF@^dqn9ENB>j3EmQD!Bjb9*P)q$gtu@ zZzm$ABXu}3KoP(U;Oyt@2kR&6N9$)}Py`RbB%aZ&_FzbIrHJFL?frHit!$_G$br~Q zr{0h;d8@eY%4zL+jD!Df_;g4j9jHV0nRoZ5blRAI*oWZ3ZGNJHW7z)KJhQqIgBs{cbFSTzzvk!|eDVeIv*eZF+G*i+twx8Q?372b>s)i#Zx z^KukJ%;}t*EoElXvgB92&slA}FW7yE@6hU&{N?y9h10ect-@5a$X$&nzP^5eN+-&o zIe9)J65+KZq9WlIEogj7nJ`kbw4yReyNzf*>1eM?nPKNo@DeUdZoHI>k1N%OxhleS zu_~BGJ3k9S@t-iIq#%(i7B&TARAF3atdkZHb5O! zEf%PkacP-BvliU<*hI_Yx0l<0U&do>+6%g-va#ET-fKQx&MGg4E^c5#NN^G|d(V{| zSv!%umbJr@wx6*b)e~+c`Q%g$BeHx4NFn<&HwtRs(5a( z4xIlm{x*R9r&D=w!ld2&XQbixj36vr;dzv`#OcqVt<>Mp9BCcGV9<(gV@utJH`}#s zUE{h$d$EbHJ`oAVabAAlMKf|`Mv;oD{c&~Xe!$VddP*qJ;{#b6Ju*zK13xp+^g(^5 zX}3KDmq3m87AyVWGg_AyTtvT${GQCI%rz%%V|Y&d3QJp=BB9y+%185 zDlW{RKAtQkFCitWWO8tx9BNy}{) z>8sP(OD2z`0TxBgPFAk{vQ-T}#|!--3xuPNm9B{Nw!W-xevS>aE>^>p&wd= zHpJG$$-Z;4h<1{{$S_54;qLB7Ght+tewaT$j?bnR|gyJ6JL?&DUnc5F>mc|+5D(S9* z^73Y0+hn{TF!f=Jr+3%B1jV2U*2Ea0NhLp9(XpC0q}?fUi0(Ad*kxSy#Sol)+zOvg zSp*+bcb{CR*e&pl(qPNSd;!Jn73AN?;`gjD;Ulh4A5dNr5$5kd;y;8v{!oQbF#O{5 z&lypYnzlO7!2AsY1hn4(d8~-Os80+kk8K6RzH3#e6+2$)>!-#hgdHS^_%zNmg(v0P z%^!jMDkp3_YxALSGebi4V_K&Gox|xSsca`uRTN_d-&YhgvEymE{pC z|PtojghI4u^*)_U4GCnO;wMx`W68AL|3j6|169iQ>fRD zJ?>t)8x~%IGqod)KCR+il&2mK0PtHD5z^AI(5RuaVZfD8;en^@Ve=49uDO1q%wNs7 z6^*DSjr4X-zU^dE3wBZ#Br-Sugx)yJ5lK&)&RS{1)>coQr8t9K%`Mj! zZE0$cK(FYrp@$ALH6SZZCiRHELx)AnMLfBRP1<6@S^RRJ_R(#Vj>i2b76UZZ4@0kQ z!<5=jBRp{94;8un;>K%=0&rnPvsV`2w&L=ZlPK%e0n$5p>D|U$ahS=G8pIRb!u(Ma zW?!T^t+}2(CLC=nt6I3#$vN6SQC>IS>`pqC79%p&uege#>C87%6`%VtQJ%Cb%D7{l z_6v{0dw5B^1Ja5bWCWw6I7%ieOjXw{U5S4EWQbF^mj#WO#J~$PVR2bt^oW3;k8xZE`nZd~7 zMEbE)F_Q1WP8G+88O%z{%rpfmi4L{qZNH4l78#?qmFo<~CpeM}u^$F>VrxU2UdV4c^T zw^cZ|qHS989rnJlXiDq-x~xCDH*S`RxK56XP=mWZV0YhB>U+KP!%8WMije>+#|>&~ zxSbt-!SDpFpr+k$EFjBrBWzECG=eK60vmQJ9ojDsXfd#d@mP%+^imP?CyH7c=7R90}@(_CD2Lcy##q@Xzai4_K?okC3%#Z1|v1YjXf>AFZ z?6rXu*Xi@TUf}1w%9wK^dtUhvGl*4gUK6w`&vJ>E45arlki z5y^ZL2fHg$gZV&iWS zkT=6@eWbujg?uNu+$Sa{M0QG#A0K!~jh9c2D+RDBZ@kDzSYK~u1rw-HFKaDrmDc}Cm$^1@&TNDS-oxs|d39OBOcW)Q7G_^62 zGqkm|GyhW-{ZCQsC?!Svc_yScJ9t^BG6+*=I0&0c+;a*E9=+IrnVA8FA{JSkwT=`| z%~)$`Nx(o)0A{NDHsoai(qSWFsF{K^e~y6P!=rb1PEYsyhneAKL`*lI%I)lsXV(U+ zNl;8gU0xEPa|SoP9^}uXs}4YVF?Na@ye4W|Z8rPjZbtgp zWba%lGj++MnVF&Z0r8Z90CMGX2BRiyZCKR@`59uHi7S?GPkx#V?Lnm{ga@U%0`)mf z-h=(nb|ev!qAA=-!8f9K&Ps(KRPX-WQIwv#MaS#!9)YR=%I+O?6ohgUBN; zw@rHAyYA!ynI>7PPY_Q^EOxb3tf1}@Uu_kh2yj}V*K=EDGKYH1npJJiya$CET%iw9 zmigbwS*S#{PaGmsBHSh($L1z)AaY5_-9)iJ1Nz#0Mxl!7_fM)5Wq!N z)IoDGbU2r)4Hl}3SL3L*+e5NzYg3QU5b|NeSX@L=!e9KV;` zmBdEWLUe^9NZFKz;w&rsj?${!sK5pT(I?N=Rn!7OSG90sQ7m1HsK z@{BU+j{8tt_oQye+B!>Jk4GCN+RvjrM=Z0}oJYMr?-lXO&qz6Q5V6sIgN2TBBm~Tu zNR_xc%xe?J9%D|->DjYjaF~uRxp#m=c02D><~ZE2Cbb5i;*cLAMWfYT$5oKBJf~J` z#hXyZXA23s(Vx^rU{Ip$wJ%wul@feNO*AsS7Dn)=PLE(lHU>Aa{~6Yl1K%kSU`TU; z&);dV{xz(scFvZ6I#&e8PD=q*!-jffQ46m07ZV`sJgGb#ug)Zyf`t}Qlm&Th`;nS$ z>gQ}=eAp5H2&N}f%GZ#rSJy+1?@TwZH;>@k7?i|M#L+@{uwb;NRwzfhx&lxljLmvx zY;%B~e9hy=HqFu`6i!(yU-a8@T0RbE{p2O;5?f7ZI0|^uC>p1-Hxw3PanpheFu*&J zvbA%w8Iz2e{P8bl49-&q$wd~*;eAs#{!c2k=Iw7pfPh)f>`MdRr%$HS5fd0JEuT2Z zZo-e7YvVH?*EWR_H$M{8t{DzdimVLk zk$&GnzIU7n>i;h(+Xka*N^)QbkAV;U|K)W4?$`uP3?2SO=n0OKl?G)7a=8|kn(ivJ z(0M}#g;UC{@W+YzLtK2dk93caU8`h69U%Dgjx#o#6L2=O?;H@kkk zd;7Qz(m~M7x4?S_l}MpvPNu-absoJh@}!kM(lg5<%LqOOijI9;9~9QrGqAYIE}Y~) z86UeQ#j4sRU1ixlT34{oI}CpRoaRVVY@Sq}S6s}zBw11^34Y>~e9f`*Fd8?CzRvL` z=&4rWFqXUQ=LyCAK<^(oNbWB~@|#iaRY+ zR!I$_-*A@d;>Oj{pfXAimY4pL4SpAdrzNN{B4DidfDhIGCElX$4)#v}$^xTOpn^z% z_p#m70dhxBWJO*uC&$Y($q_IRM`AI=s|D=wJYjQg6VHIFS>9hC_!Bh(x2eE**>uMr z-bEMxP}Frg^H{mB-7`#4kaRCjnyrzc%5DY(4VmI;mt;0OX5^?^=_sm*l=59MwtAY+ zYmVUCl9hooDra1-YD}UV_T&r!-IfI@Jxw?tq@jkpBCn#tN%ddZUif*U8;$}LvS|~- zEpG^KmvHbIM7HmK)QGY0U zA*IQwjukID=)A5mde;upwRCU!sbm8-(>`-y%YcXo>GJf_M|5NlsSc*LDVn+Y@n^%D zAqAOpT|}2yH!0ECUM_S<&%aab@3U&$7p61_jN<>hrwjW(keI)Cy0qJXs?q)Sbg{8? z&_+Q`V22PUBi4k520R$@&#vV7cfZ&Tj!1!9d{7$S1r;tp&$*H&psAj}tQ{$oE9kmM z4s0-f3NU0y);iONix#~PCZrWQsgrEw-c4&fL_R_*VKM(8TwBsK;)*uyBsij#nJSoy zlR$%9+%~&YjaJ?>4K#G|S7d3k>yE;*5*>1>b|*dx2jh5;qD7^YA{(4xw~7&;=#|4t zzHm0YM4S{&4%M|Ru#FtN9P(6Z&T-C{k-Ick%uM(FfLNnb31MLrMX(B28@>F8p^HWq z(9k6bXy{_|7eki_x8H^?`B)e(dF*wr{PHMqhm%!yDLb1%R6}uL+&3-EfYomU2jNft zheqXJ?wUJFl{(g#h3ETytY~s7={ZX^ObQw%x&wV^u^SrI!ain_=CV`SBC=2PH}8Qi zh`$kr*`ix#;Z7{j3T$s|Z!K$+Xj0E%p@@?#d4__w*K8{S4PD}X8@fdQVd!G#rGfoF z3|*+nY68@OO>8&h{{r&-`TCPoG?h^Wk=_77bed|R#3Z4RB>-U%7!Zgyl9HWR2airV zLpa!RhNe}bUxD6Y6_Lq^$@XfG1$17nEg+&wA8DFcv(hepKDU>czr8&_!hROmf>aFT z$8I`GxdM|9#Olqh%?>k^7-AAL;T6{zqSAx1mMIQ(ghn;WPGlk{?nA0|YqIeo6!u}U zB^Y2SPMh_hOJI*$p@Vn4##)4%Brvv!Om;oqFu0_gz@JjcSb*zJ>Bev{j zjq=?|L>-sMg|%5h z$n=5k!jyLwFVA+eQYVSB#x(HoiYYn&b+_o{FXY2iWD2)9rCC_s17&)?A1i-R8iFRE zMdu-d1|+;yvgOPU977JK-NOi2rCO3!WoS;0(0%b*-iTwWGJt4+5o#?XisXX6fx)o0TNk*eHmg|Gjlh#m;{gxi&0*Qk5uDH9uOHefo^dsn-Bi5u{LouPjX&%T z;)(FBhSw7BeY${Rn?2npM{4E`0$lKV>+ifr5@{x#B@Xo>N|bETm?Od{VT!D8(t<7BQW9CJ?#3I2=3z0tA4Vd2{c2-{z6UKtwArPL?T&4{(1YGF!t&JtqRhV4blo_S1zMQh;Fj$#} ztnck}=4G_A4kF2WdKRl;fv~E@u{Qp2PGD4NS!&H%UV^J{Jgf{btF&llxX?BJEMf2= zklQ|eBb&KVDmbBNm{!p!NJKQ|W>z_6p4C|*=u=m{O9=0D6MBbV*jMcjbdBSvwTt&NxJ5hR%^6CzEXmx(%alncy^V zj!zcUx35NVp;)BE0*RIlXf^J6?=FB+d|{kSoI;+^S*dje97% z1;cds0s56-gV0kP&gh!?fshuXXMH_S2v$#|8fFfN{-kfNU`H=Phw4VpauWh3)$a6b zljJk#&SN%;&UqQPV&wO2did4qnAP!BAr4Y>4 zG@?GMF)kkczqO>V`^(^=lqXGB`I0k4OJCw_`O7y#}JFE zv9U2xh{i%127WtOT2XQiLrXZKxUo5$TQ+8NVN@nl=Iib&!WMz|9O8Bc;*s!ay>(c3 z`wNKg$DXf086MIkDTw)~AvDZcp3h#_pU-^m3EqA^r09Rl{I*OJz1tq3j@DVe%?{ok zPO706t5};)5_xLqaOJH_r&+hJLd6ucW`$)R3beh^({0SEW@Rt^r#54XdD(Lwk5 zCMhW@U>EwMI9yu;bvH9$9cD|3IkW}6vtU~na1RSGZJlOnL?FyChax{mpPGqdq2pH` zV{|f?)BhwnmsZc(&Q-$$aA$-Swwt12fh%Nj6+mm=__;RmQxjhi*lI7EM{`-3O2dq5{S|YC039I00xN;=HUkW0*4dulnq{lC z;dGm7V59Y@976IkuqvM5`OHq#KB;Y?m)$nLvap?Y{RV+e*G-UTbXn}d4aAx?L1N+Rkgd2Vh+++c+0h5HU?^f__2(b0FaFLOm@TIyq4 z3=lz0-yDqGt<~*qZ@-KVo!pKqf8lwx!}i;ovIw%6B{!dHX7Z`xr24 ze#?vLDma{oEBSSi#7%jFr86M}kP<|vltU1xwN>Y=EF!{A?7lARZyF|4Vc-;R#WJHu3Fq;X-TE7Es0MSK-&n0tN@N-bQb4g>Buka4Euf*@(kprI3U;9ShbM$N`9c>z`@S*{`9g+BmuTa<(g{~) zib99CRfhZ~W!@I?iEijBX+bo&Dz|#Et4+RF+z8+4N{{~*%~Z{D3wvrb3qh=xf+h{Dtg_inCrPN=NI0_X#bZhu!jjE31i%4dpA%q;u2;Uyiv_mRVr3PE-4bC1cLY%9h-A)!# zTf1760Z-^x^w3q(CE-1Gllc6Wu6I{2f0zjdM@IY!)BIqfo7Mavi;L3l^?5kw1Hrb$ zAW<>;M5#q@W%$Pl>d?|lBRw0va`)h6BV5}dHw}f_BVid)*j<<{s7JNF_yAM%b0Jx% zqi_v1)y{rt@So_F)EeruA(n*QnAd?CzLz`V#2hNOyOiMV0kYtdfMUshmW@NWsJ=W^ zi0R6#T{v4zd>?(pjP@i1#*S#iB1%AcyO>P&PO@}&HvU@pJS{Kw!iZt~ z&o+RqBEpW6Lq7teBcCYbGHg}&j3`~d0XXL=x6ZUgj?!m{V9YM;r&BO<75i4T3DM1s z`Ybqk$(#m~kqRK^Y5D5Qb5{Lzgl-z8-zNRAPKS;_zsx0TdAay}73{+4=;kkew`Q4V zqFv5rPI3i^(8G;iOC-}PQ?sk)gZs(ET*jv&PxV<&@!nfVd-L~}GD9M80vEf|fK&5e zG#=dvWpC+6=747r@y&9ublBV00D6JBmHYnQ=m1>-8I#iQi{X0w^*XPYnJRz|Co!o8 z8+GZq$R8{^PAzR>O;`xaO0F!FR5%G~%t3GJ4Z*1RGnz%;;aV!l-H;W{30`VNN4ns3_7Q;VXix0f!t+I z24}}z4Q^O3Hf!_hz5-hwd=M>lp-5h>*p+kOnlre0%or-Y0*dh*)_5#P^h^R zMi8bT!}v&oC`BRYLra*Y&-E_9z~HS(!PyRWxVq8E$O4@){fmf%U=1U?L!_~rMtUEl z{oln%HT{pEJ4x*3cP}jnr05bueq!FnZoTj<=+AlvBsU@WeXJ_U+Y_zBrq4Z3Y;?_Y z$@HyP6d76QiM__vN%#VjRb(?v1!;gcnfe)*B5w!#$5Q}rG1ao=b!s2##GGBUE3)Py zEmaU9nJb}E;-}j^Yu@|>Arl`N0{DI6M#@52>GQIEV$Uhz#M=j0Sa(lRf? zyzY|4V%M#2HUkOb%Om2>!(t$X!O_N)N4h+M-?ct+aN8Xq6KVJj(<@!K;?sQQsfxjR z7%}k4R_2y2qG_Kc{h_=O_eJ;qXJDde^@SpRulATt7!q{Y@es^oRs1qf`4OMy61jK` z)S_@40cuUut*AvpJ#Lv3hSI<{;qvtec%xUYtS@mfnAiJde{Cv%qhJvI?jkNg6m0DO z!=U7Uj`03Ty;WNOJ!;@HW-KG#YSOYN(z^^0^GOJY8WhS4&%O1LU2d)43?_qlOX{Zj zwGH`8ahL2o(7li0Y-)cZbCZ?T%6P3WG7u)uy);rP8tTX0K~*be zHwMKmW4uIK?b?b3@-_QVyhDX8&g9{t}k9I$K2W3GUPzrWo*V zUkIC!lHVptRQ#;H^sA)ISzpDoz$g1x)VbhWB`?{c8sg0E zcTX1Zmu!BN$sS&xH0q3&&iOZj`TLT5-2%?h3amd2!1o60_dPb6#$O;v7c2&g0pPO(#5v!$| ztr)T<({lDSQgJQPvqD-_Lru6$5w#p(9{aN~v5Zh29-fpO9+n&yo|Ir79v&A^8=D|~ z=17Z*^N;fn`v``miG`htt?|`cjVLC}A3l_r&J_ZIX%hOsAn>UcT-6KU&o24jSXqCb z)U1Dca05}f3boH*=w%wU^g~Gll+x~Hs?4eqE0_G6aw(S0K(y9+W?&$vFpMzlPr!Bs z3A6%{|7`QO1^0vTMNH23ZqOC6c~NXt#QD}eL-h}Z-D$T$>s*plCr*qf3A_g*u}OCYX*S-KO8N~L zT}C0C!R13DiY3pECIyrx!-T?mG0VXd32I^dNK0X@TU|1y33nJ4bW%&Z@LM`0w7O$# zxFAVBFVy$UP_@07h}W%H2PFnX>UhJuoNzcfIhg0b8I?y&4~QBkoUjBPt0b-!69+`o zN_T#_vV*{^%d5ecj`vkbtaRrP&rGr1GB#zG$w~q&em)U#(Xgq)aQ*NXjR*XVn;nCt zkcjpe2#lk_2=hq=E`2iLhSDKQbH;D7!?sml9HsW}NUlH1vpRml2Mp$)!41z;U0Qp$#M1A3VO_ zu#yv*xTzg*Qf>T)ap3R&NZLC5IbY3ES(igqMAI$Fa+S&gQH#~;G+NaAy0Z%(L6sI-UjFD4zM7k%7hZ4<5omE=oG&UInfdu;n5|OvqP3WwAPEzD#m9(h_1hiXP8E(? zpg58@+^nW@>K0zVLo=?WU6LU6>gj%KjSj0J7Pk&gC$1ikqhJ;oX>P3_p?sX6DUt>PMI-UfjB3-k_+vJC0g zsV^F#)|3XoULie^0|NN966%j{aps-51?|6log#)K5jrF;wBQp3)+wa(uonW2?%J3c z$e{0!<(67r$i)vY_%P2Oqh1G?3@I}pIHR22oaBE+TeLb7V1j6E_JGE{cm;iLKFUWi z>G8&?Dnpu?ao#mD(1A9RLhlw@6=c!>1!77VhhI8oO|`=j@+fg-#!-^OFL^*liyCTvW5<1qIS+- zJd{oU2|KCU{sv-w?bMfC&^(-=rZ5M%I3UpWMI94bJ__Oe@;43hJ{8LvoQt?kMAM#koO_e$^QN2^$EWhOwAOGnLvbx!i2ZC zFsO`3L`K>jtMI4z3;Vc!3^^HjAr=U2u`!|DF+yOyU3z;KgXNEUJ+lvi-#ttdN%!FD zWct>WBa&6=j;-o!(#j3F+ik7L*^N_c?y@SYPI1?K zWddDeY8M1&<<0<8?sP*XA)&f-7fIHLlbe@nJ%{)!TL`l&5xvxWtJSA$mtIyYr8jb3 zV#@|CptX+E_$0JtJNh$(pO#Nvp|vZ!+X4h@_9DZ6wITSm&dWle|e)*|HA z={D$wJlXw3zdR&{HPtbHevE&)buI`&Xw{2XBc6c=3qj541N40UC8E!-Q>8V>MHNXR zQvc2L+etq=&hxYd1Sdbc>dK%_aojXGAf_*Rhle|))DsC56A2W40Jl|ggL4<=@rLUW zcK}nQ{(O&XL=v&k`=gR8vHdKmf)v(;!3cRp8#EN9@3(gZ;wi2x&^J_x9-=TpBE9XL zN{G{nwzj@jXH4XD0eD=y%6&c34Q-+8S*#yBTLqJD`_Qe-*B#Z^$nr=?@}%DbMB)yK zp~UeQ#nIXSWBJ zC(5}OiS>fT-mRNeLHDtn6K7V#S9PA@6zMU2BUO{YQ0#a~?X&HPd@hX1dnf$Q#txlM zbV?6cwK9Mp!{3pr{#CV9?VJqFOa*Oh?2UhSc>m;~M=9F^w{MVqlauwd5!Ol6zy@0K zmzB7B)#)saaM)5*9%rP4UK+a?hIi`3FRDx5rBD@(^96bdO*8qBV3G<6?d)Ce)6BE8 z(q3N=hZ#SNyQljD;`QlY#3DAVp75X_p?_3f37 zksgK{Xr??H@g~p5@6k4!U(m57$0dVc@I#hIy#@hVS9gDYa zSL(btcM+L6z>ncYmHmFOMS-Z(B;ZO>fX`v_A<#~eIsh=-uMk_Z*7(Xdf8{fbT8#QM z=WI#_GRk)o1^3wOe&I17jv`H4=yf)Me)udpl-Tqo$Go6Hx|}+E)p_qDmGD*NLd^5~ zKE`z5^4hsp7D@dnp-mlOn+g|v1YBD3sRY3t2#l7VwE*sf9^s7pfNF8lFD+lj+Cf-# z(=1-MJyCQCa=n!1!;os{=#!fMf%s^+dhVgzQ>M|$QTS< zUYD)0a5xF_jc2aG3eNTTJoi)}A&A^F$kH>B^s%#C;Ip5V|Md(4$Sd$nHY;GyzwZnp! z)Z&{-zca5rg)dNY%iSt=M^XbVrH2#8(!a5D=kQCG@Uogr#%C42yG#u3+99n^uCxcQ zUuojFF-fW=D`-t5zx@|eO#sRWxG(+TgAH&}_jjUM|2nJxSu&(e|57lLzW**5!#!@a z&h$|>M4Qc4Aa9@X83YqsnfgXp3J@taTc?C9CD-F7{6>IHm7omU)hy&Y)n1!6 z$8d8;qYOm*HqVePLF`^M-3r8|A0ssbWQLUW=3PdU@+aH(fn5Wu=V;#9+nFh zIQ#1%ga_=#09z-wO%~o5FF2y4_rBZs2)Ht%MXnj^Xyt}hy&F7j4%?iLX2WCA`K`ka z@{}9QA;V~IHQDvs8@SaOxnq{V#*4Er0L8h>swctV4)Ow{IFrgF75EC9*5Xu1AxW~K z+>ppv8~V8V3|?7lyyh@kV#SK0Nu9FHaYpCZcynK}&umEyOan4sSiFae6v~_(r#V?} z+wHYHiDMH2>y4Le`fED&+4*K9z(x~HD^FIs4c8hM!c@kmSkBVBbyxRP1yX#+d+`+W z`O)wCen3veN!a9YU;)Z8I5y1ERnF6@bFI;*-J;6nD=ddq-7?#?f8d%`eB3n$ap7hxLR7mfV7A?&><8hM9ojK9lfM#UlME%qi<@)C3lh{t=H3#4-+PU0^_A!3|I z??aE*9khu(b5-~tN|wRb=V0IbGyP~ZS@A1Ifpx3g(;E>S2lwUjM_%OKAKzn({scG=&+9#bvyUcrV%5AZwkoNv=R+{_cQ3>cT-ZqgeE4#jWj9UMy%6MRYX2pv}?Oku7K48d4Cz51bUGV_w32^hY`b2aBMjK~}spm1%6L21Y<06K(2696r>T zR0SiNxgLKM!>Et`2tt3~Q4nNTRFzNV<~5jaYtj48ycWDnW8OEmSftbU@?6md)}BNU zquaUeqjtu4vsp4BmF1Bx5f*H0u4GaNuwIxYgSU8>eW)g^M^xm^19qds<t-;7#-?qR2@RRA@8lG!$%Dd-L^tiR9}IllOFbz5!t=slR%A6i9R9 zsk)yEBAuF5Npg>A(bL-Uck6`zUx2p<>))i=Y0mUkY3 z17Oz)CyMlkh%CLU|E3G{afZ-YWGXk5>E{&gPd~mLqZ9>>c{SOWW%`*#w=RFx_tRUN zScWLveHmo9Ltxe!(Xi_q>9E_{5$oQE>Boro`sN&&NGmmWLx1eqq4I;*5LR1`#bj62 zi%^WZZUjlHjVpgMu@1cF6f?Osg*^qYzR^Ty+!;f5TJ1Z!u>`*VM>tO{sEZ=J29;gl z4L4ckClo%7%_|ENUJRw{Ri?fcc{-ToJ_4fyaf6_1Kdh@>>fD1wO$24VrcmL12fkb} z+{&PFfRT(+;z+=$7e-FQB6A1A0dJ|VNLxC3@?Nq{Tu=Xx@Qit;ygeKWm&SbAVP?GL z+2~U^zULd?>DvhqN|t-&Y-RH~M^I(78$`B|GJqvM^#qgiPrh+ml;g+MVGKs8b#%CM zKX1%J@y6o+L)u#fRiZ8Fx`n$lad#-(oxx z0BMFw7@~+pEFrB|6~k_7qabh;0duqXPFwi+e{ zWkG5+_DBX9t5$P8Pj^GT3Z#gOV93{NfHt|Rp4eJQVND@evO}gPj~H_zxg`xCTE$bq zu!X7BNW>LB!4)d6#hI1(v(+!s4>rFkngdr{K&s-5`9OTlj!253+|lH6a4pjNY*Q6z z#ynDcXs#@7z$`k5>mq^q=R|ifPL42`EMA)mosk0__;Wr156-v~@ZDvfn>op2n-=bf>XU z2(u%j@Acj-$wo@ad!gGmG7VDCf|%j6=$9_aPzn!oq++dNr%sH8W?b+ROhegBi_nv3 z7boj|AuGl&&V!sLBoUU!1_-T_mCL^34X3s;fjXp-8n2C`)Lgjib>tt>l)DLmRoaEC z@y!2l-1JTPW3ombzwItK)AqIbu+Kj742jnG>K=A94JL7he6$_CRwzZs{PCJ70jXMw zS=_07n;j^6GeX+_=U?QeRy{M}YoB*K5zPNAH~p_FTlqgUrw)I|n3|P3t|+=Uq)?FM zVxo{B_z$>#9Hk>1#cVQBVQ8E&IChl2#uhTtb?4f&THL(1_&=bZOIn7w&bhQYUp!u# z2YFhVEQf_G9?~;fSth+a4mMKWZcmo8zQj%ebh_~&MkV^A2XrC6KKVdlR7o5m)%-z_?R+XO!y?&AabeK2;FTJ@>GK+{Y6IyX&3nC^~_&&1X#w- zEef@`E16c8DMG6bR?;lA%+|*RYCtZb&sreJx8R~FuNLQ0sFgrsmFPKh>a<64+}U8y zZ~`5{pneF8RM;pm_@%PNbV;kCEz?5>Z9LIHyRIl>|94SZ=aQW89G?+L#B^k_Cl{x{ z{$yH9ec`iZSzN~ktYJ8dan#%?=#Q3%yY8x>1~v|Vig50Mt-FlKiY#i3+fs?MtaX z$5GQQC14jVsNeub+ADL=?9aUG5UY4mpYU|&X)+7~s;(tX@F^$#hB!eP^ z;~MJi{abTi3CDU8 z!O_ksc129@y30)8up5VpTv!RtX{{*YkjECK=qWNxr!bZk`#{3qg$mrvzDwG7l9yi@ zH4EhZH3Q(6<$6G&5u1URl$3YR%8RF5zjM_f60;TMq13!BL@HNt3!n@3 z%lXW72DLv2>#LuE30b{s=C~P2%2f)l?6W(J1X#3tGIS;*Ii)hf{$X7kFqgENF&t2}oz>?v`ay;s?_wUM zyF!kYMjP6vdtobziP@4F0w&tC zy?0)Xg?{Bp0GWYWC=mxL_T6K>n`X_kD;9bDOSB zx+#72Ym?MMFJy%Q+hXps$e*`=8K9nI{t;&R44A#opMM)Lf5A-uFx`^;dsZfBWMty- zpBW}vP#RS56EV##Ej0yd2?itT_HeUGh?62SF&YP=U+!{RlD4wc@Q8gcRi4U5nhFlv zutpVhJYu|T|F|6AeK*?>(A)gtXs05KLPuyt2nC;@$e3~O-yOYeL2ET8{G(Umnz26U z$F7Q@NZ+Nz`qyfeVe{}8r4rV2rufSG>5HK3C9W(MSFlzU_=swDnx#Itgt0ynk{KLr z>YQc?$AZQw2PE$N4esh{CmQ7H)aB+7_Bo!@x0|>Yk{1U`Q@Ov&a&?neYr)s@LAcfm%%KowQdA3Xg9-#`FTd>hZ5TSsh-+5a*Dq{AhAlW z6mm+wv6bg*5cgBFjO2%7RvotK=4(uBGg+XYe#fkei}3h$M<2syNU#r?Vanh5@lVy{ zUjs@HPO#{q&uWtMe|xSuT3In~` zkZwfj3X!DAa3)WYw2>&Zg;rQo*V)dclsDMMkc8NL2kc2Mbtl{>*NqfX)$U6yhn$avz@#!yU6Q6$JvA#UU^f zW38phWJI4Fo17x{ui<;w&py@9zRMxt?^U?P!fKI+&9G*90fFC*STvm4pS+Dyz0mTE zCFlbR*){cvQv({eX&km%$S^O83}s_sGRQ-6qF z60KpZf!i-7J4)CBuZNrKAZZcxW7y^`zZ28f`9?@2F7%6lhMq*4jrbZwGIRo?gIKbT z<~|JT@e!$QRa_c$G*}3K4@yH2P7kfW1f5#sszpMr4Kx-xSGtLo&X`Fem$PDuQ?Q;G zxNR}sgLiMJ-WomOy)6EtOp%p5+~)VTRd4aiso(h!3Kx%%H$rbcwD=cb5I!o6eRsUE zmP%O+la39d4i91;?pY2I$(Hg8ouLvesmI_n1Gzinr*ntDkUdaS-4?CUm?#&uc=q|5 zK|ggcR31(Q_Yv$3t9Z-)zjV|bZ;SE&^4>xGd}?w2KXf*j{w6>YlyyJt2GIHRY6}p2 z6PWl12lY+JL`fV^vR=eAyL+Wl>M78KFSe!(<%uNd1%$l@3rlL}d_WJlx2 zsm?5shmo=eWK>{Y)Ik zmxL6OW|EuoL(#>3X0f>~}G&1zsQ5vCS)@eP%?xUs0lY z2>V2#-MVC^E}G!WCjRviY2Wn1|m0nq-;e2gau#av2 zsW}&7_dSj1)`@Yfk#JunZg59JL;ix_N?R*z9%j7?#g~YAJUxh|f zQ&q>f-<0D{^%}132?!|#X8+WjVA?esnIFKq==3%u9-5I!Jd)SRttOrV6B~0<$TtE; z2x40ovmh43Ws#zJhKG{E$O`0dyXC)+I8nS!?mJ|4K+dgc7roxmTv@f zyCgFai@ORuT9K<_oEZpll#{yyF=pB^9;5ZyNvOjd;Bb#RR-Vy5dNVSp^kfz}1XdRc zQ?B;9LUHF-4&tl_0h&VQ+76AQBxyooSf>I z)Czc5GXRrkk-nrT0R&)FL$Ru4hiPG`nI8mj>Y9@SmqEilMV*q~*wVy`cd<>H;OhqO@cDev%@?5SXM*z{FKeub}e1 zUEc$aJkI${;QUOU=kjSaUc_q3F{9Pm^Yh=1d?SmgIL|iP0IxeIDT>J9Y%Oy#bk^J7 zvm$0-W#?>U4+O?GG0z|u67$>f6-~>cUQU18A#;+iX%>PV`F0PTqmb`?P+n5BWf-!t zM!{IOMFJWEOEXJ~31};5hD)+d$!xQZ#db#~;|k)(*(4tSj*jxXIo=(D`c~@?Vptmz zmo0drH=U11+epZ~IR&FT-rtY!jpkai|PUaUl?^^_TZT1jvFv%0f6cMla}TuMx%|WGm>zOLcEWkC9{_ zHNP4?sCx9(_b1d?3B^z$sklCg3H{$ncTPhcvI#z-w^~H^XhP5a7W6rSDwR>CiSIN` zsF0;tvw&Z6VQPQ6mTBT+H^r~S15QDLExz!S{?z1dXV#Bw!yd;!-kiR{n^t+@sKXQV z(mTF-8UH;6M63`LUbffBDaKuCfm6GPu`Uyib>?mKLb~ zg6hb?BLE>*md*HN0hJN-BT;0 zz%j@WkIKw23(p{K&~lZ-8iBeks!7wXflA@F6X8JqL~>dw{V@6UZ00C5T9N;&IMR_~ zWqsDHiZ$c!aSfT^9c@h}>~NRBXyW_x7C}a=@n??0Eji0lFcLs z2MANI)>|k(a4#`{La^jo>Y_ORBmHTTjeWcqZE*R){wDi$Z%i+gTKaxCY{hH3^nB7+6&*TTRLQ{l`w$PLt+At==q5c8vy5?~=yLHOjmR5Xm>4ZTdT&e5`!g6dw?D#3KlwT9<0rk;mYU_Yh57GF|n#VE4ccbIS4qz$tRTu#Kz)(cKjREVLK69#Y#0@!hI7N>CQ=znauW z6M+*=d>*9T&#eDH8BzULd-QW%m!*@jiT!_yhV#|5Z9Y4se+Cx&)}vXe5wj7T{J}cn zTlQx#@Ic9vVz=0*unMtUmzI=WR>!UD^d9}dL!iD9b@O!ot}Ir83WXwY+Y%@4z_yX; zPPBrN=1HnOyvcCrNV(7Qd4J&f3HRiQH>t0Qa9Omi%ci5)>j5KUNbajzM&6{WzFG>? z7KKp1qC!JRrqEN*Sut2m&Zw5uV42*3p3E@6)-Kfhx%-ZmHMK&SN?#UT1ZsaZ#-pnHsOR*vIR>$S9ons2nOoWY!?1avTJ!}5caP?>pOifDQF zohI1u_by9pS2!PcW}C@qYGq9PdaDw4-`lDhi&sZh%RX|6(Mn)F6kDt6BK1Hb?chxk z#Ml`0%e;k8Iw{ep8aT;U>x@vDL|Sn@oAYz2O3RCtc$uWNRG_*{V$kb1EX5S)Z(U2a zc*o^SrnS`6ns||{UcSwuyubwr`g_xbyJw5as^NQt6UJK0<4Ctj+NFY7D$DZ?VrOn> zO}S3)2Q4@~r$7D+n%kq0{5I z!Y~Y08*NeWGhM+>P+wnjmO%3No0XkI$D?s_5dk(3TecFlmzGXyM7PEiCVBJOFf{G< zOl`o#_;2D{Hlw1RpG_j*~6%BOtEmz-hG>%>{x zTyNPpp&L;yE>C0IyeIhcflAzOGfdVg#uR|g<;o=MfY~!P7f*uS#f3eVmzp`u&KDOt z7jcy`2v^5DK2Kp~l&;+DiA&;A5~1+v>S1e5KO;uQfoVmW`U#y|8*yU0r|IQN>~n{I~9wicSY?pzx53m~ql{6qG3na_E#(`-XN!=F?HTNq}W~aESF#VO+$?O z18V14yl+T1AZiPZuTP{NVfS}9V>X>P$wXEb&5+Pfnh^}WnR9`jnV2z07`qfEFpDi& zzRtiLvF3orm<1H@;XEIof05~3>EZ7vqI~%x|LH_T`|mRBeCN zbz{jb?5`P|aqWg=7-GR;pzTQ{_pe4^PYlF{^G5&~n5pGuOhw6!srH?s2#l|(8wU+V zpf30+N@P+`R;5G~omy27jH4&3lQf@AERd9tFt62r$$H&r!EMqO;kd%uTM#z%Qc_ddk6gIubP2B}I6T|yF|3LA72P^IODu%9b8Vnan5z;a!Z z4H^VX^TeV3+NkLU;h;=mw7-xa_x`TdDWoqhZEVb{!)D zK_gNCpeCaxL=3*yVG+v;5tx`b^-^gs)Mi=Zcb-mkjI9hfRg(Ko6&gQUSd;SSzSuid zpQF7t?xe1Ox%dqSLVh>){BD&yLx^q9%nAPPqQ*YMUL(7LZ#6;2M*cwQ=7QG!)GggxYAKIj);1&Zt@a5>w?{W?ZDb-vcujFCS`He+0Rt_n(TdD_4Gkdywt8;o_6Lgnl_)|viY%mD6?GLe#{vua{WZEsLb2@}MK|WY2+uJUb2ldHeiZYFY7ANLDYKur$@#GYx`9(b+PPBJzNRB#clv zJ7xAEv*oiMlV+wQcNhv4VM^1Fpi-z(3EtC1yz9X&i27+n%AAfy}=L z_uvyImQUw3<&^e16XuC{)np|h77?@(j*ZT_JUT1-Q`6^@3WCy@A+QP4Qd5+X!9&=M3VnReB^e0vljL%wWQ^Gq}>o0}fGpoQ9v^}Z&N(T6}HL9r>w2ygN zD2Y(&xFAeU7)$I9Axchqx_kWiFKn-!Rwt*v4JayYrK>|%+M^_oqfuBowQfjg1X!(2m{TUDO)I@bWE2zaE1jlXC#-#YrnB zXDGn3;EZnkBF5BzMNsX>s&~%MI5@mn7^g#%Y)I17R?g{O(S3i`srmYSC2?uBn0DSM zDo#%KbPbqowd|{t>Y_w39w{BVOEw+I8YW3HP*upq!WSvtifnfWo;vIGM|~x45`YX%04I+SmHjf zUldYoTD)A4ntL$gajX1(%d-6ThI)MhZmoRnMnTY{TaX%sDdR)}wH7*=c0#r%!%O8% z`&)ZnsD4N#oNJ5df_ZMZz(VEIa`tC01%J>eI!+i)IUVZ+u6;9YGjCv_EH7!VXj8K8 z8+s>!$Z%0;MpFQxu=2|nswc_9OfP+-8XqJi=t->BrQvE8)wr-)U{>B0plxZiz>^ql zV82D^l#DCsJ&bKmX+zN@`kR5ZV7hLY4B+dscC46@mIY4?D~8*v{em8Fs@%)Z*_jgP zWGe6*W>baHa;?$7ZjSvpZxyi?Ni!84~D}HS$s!QonyL&N*SKlR=@@LiG~}aUm5|GOec}F;!Q-{$ zddA?!Zk=4P6+yb}x3T4gVWNgY6lWn?M#R$f}pT?H(QIvrD%3 z!pONo&39s~gO1CssHVM+?^>%w=0ndi71v5T$$P6}7u5V<)0Dr(6s|cB3C?z~b`Ymv z{kdK2Oji!45W*+djnv$~j5{F#15VHPi07npNUucrgs(=n!XtY+jlc(x`}-riLlAo8 ztA(L4`X~IdcAKvZxiacN=Q$BjN|q%K9f9|3M&bx5%hs!Wrj>*1Jey8}VYOCGGfX-? zL?^E~;#==EUpFc-d8B9`WUH1AwLAeck^Sno$J-9>tn9z05(|u=+3*GTiP}!8?dW9{ zhS=%!J7jlOn04v(YVLDkH6a^w`bv%?6+Gm7thDC`Z`DZ;HRgu_T)O4+zr)+-x>z>a z!ligMKkH%VJWPagXM}U{4W>H?`@UL4sJL3qD2qQMIC z$v|PLD4jD)8((racsL^i1|v(DoZgWJhG4#Oee2-aeUk@FM&e@9Wa%+ss=8*$%%e}T zdUV6IS}w`t`xi6=NPLvDErr#cd)8Ny4I_yG&7NSCFuq{y9JO$P9f6>h5P=;&zpL3~ zO<%#eKBI{r?NH+#RhL9f9~w(8jbtMztneg6lM>-5OnL!6$k`#&JNTYHt`mY!b4EKp z%nuzQh}t@|52|CFA%VHc^+xEmp)?LhzngnG4X|!c4jixsLP-JtKVdkv5<%{A$l++?bgc#onnoh zrnquUb!O>@2n0IVeziMc7aAqJJu5uEon%zK(AT*zjz(hEyfn1m5YE~Rm*3&fY$1%= zW$X~UY!71C_Badl`5AnT_J+ODpX-Vg^%YFM2*{aZv>_has?pfl`-BtU1kouy>^%eJ zw2g(@E+l4qfR1IBWh|&RHOz)1$ycNz_(nk8R;1>=CLwdJSUP#ycdr~Zi{~9HoD|zi z$F?oiKK!}LHvgeXDWB6y^RTrBHQq#8q6sx%VWLmoZtpNk8JSB-(s}V3lqr`9Nl_fL z7h}OcLX(YFiicqSWlyo<*G|M>2QFU?F|T&@8Z~g8PIZmWu<+rsok&NRrLpEy;}=6of&~= zYKw{?%B?7k3sdQP?XP6UQeI`pAaheOY}Ew@ ztOQR#Pj_(1e=A*R3`L_)turu6E z=8xzTzoBcK=oKl(aMbd7`*_Di;n{|_m_Ubc=b!Y@7dXA)%bH|w$)aZf-1{PJ+-B9K zd(^goTvlh4a0zG>6;e<COkhX!E*F@ND1d|6o1t0(G!>&wh-p8`)5=-03Ul#-&hi2PkV3p9bSfA8jZH zAiP2jRwi&;odredzDPAD_AC<`(%baz>1*voJM%b``a$^{-#7iL`e))SrLi>f1RgTM zM1|aMXtnk*aX^ULI$~$6gc(|<3=9F^eJG}k(wHT%BD{Xs4PYVf*H)RbZ}F2WhBve( zfx_eDv6$9TkK?yeKv z6@slElW+Mho&!Aiw=+osYBNqoHwyOPn zjJ>K*ioF;)%p)UwPRNu%26;Gjw@d1m<5C$ZH+WEwpJp?K&5Woc3MO zEH#oA!(Zk(gT*fabnd4_>;Yg4XC{#^Nq zJI~c5Yekl7*<;{DK%jQ+s$ylZTMfuP0p+bkb(OU0JuQi&s=>D@4ZrGW(ZIGSOf9EZ zq%4u1H*`t~D;ZVQIaewyrJpZonb$HYzNhKW_&TrpmZb_zP&O<2k+9ywKR9r#^DvFX zf)5eia&0mpB$6b@{w+i11Abu_WnynK$I3E((_SLInL$V-GnC2CH#vyAc*xwwaBZ*mN$0ATG$C6_lvGf zdW1PVZJl@n0A?`^+^ObXrpbLIwOq1iUPNIcF~Qd4zNrTF!tC7ZjW4k9JjbYx7f1ea z#Hva3qBU}+C!DJhKRYIZA!ev!W+$D!4?M+i0yAjhsM3m9&`8S?S#vX;<}p~ui9RvwkVlS)}v*&_k3yJ z-3uFeeDF#lB6Hlt9l_16T3_$%Hd{|nxVNTbqt2Ei75O{9=YF6!c#P>qwKn$BWgc>_ zYN~}M zO7q;>V<;n>>oM3FQh9nP4X(U}eo_~v-xBF-ec%ALII(@JV*}x`QiX!RsVoh@<*XVi za0m7APs5MDaJBqd@u$;I>ILePdSUvvtr-J%przY?m?;^{IawM0*CG|=zs(+(7V1?t z7zlX*%RvetqKYCWMq$NKA;e7ANz78z$67N^Pfx>y??zqXIfks)NLNwJnI75=Os2np z?j94(hp!VZ6YcN!udni7STs~^VKuR7C;&P=@c}>x9D3tX zQ8CEY^d-))<@$|}W?X*p2|K_q&Mbg#I+v%x4~wqW`;!N4+zp?PaSQVvTA?=SHtOCg z=GPg#O#VU;pK=rJ)#UI@dsSp4uv|3>qHaG*U>&`s9h@txIkafNP44)?nQGluov|nn z-)U(bOHq9+*VBLKyEmn0?VtxVHaEKbOn0e+}q1r2;uh4)u zS(Ho5SZD1Hn9&H|FSgzaEN8yUV;Mil?YKMd^0c_%7Mr#lb8o9Q!T=jlDhV4wZR$Kw zeaq3TdX{;SZ{Qv0QgPH*6vbU3UsI|MScUKXFxTk82e?$rNQqFKTm2YqNZ<%}9=7E) zDGc+5FX9Xqgy90Xl}S()H3h%I$9>q*!{bL-U_puwJ>+Zv=z( zh#anGr_8bPnOZE}24*nEXn8WkOL(+{04LPt70HL_Io%^Tx`U*iVTmlSC`cx?y8_dZKp}XCY=QB zu0YiL;9roKNy%Hv|39E7*FXB3|3$>KeiAWGMxK#T5diaW5v(%^rxj@spwb`#2H<>p zylpJ*hk7X3&UXYdRv0qxF9NW3_+cuL5@brAl~I%T%^e+o9^P-&zu>wqb@5ui7Hvlc zxAN0WRJd#0+D2uYMwu+Q_f#>3{9}U#blljHg2h**an&Ub?ph#$cHBf0AM8e~){0fo zxbyMRM0EBFN3frP0a3kcMwB>7#FGR{4J#v)x^SixN0y)JU!bQSe!1w1I`1er@#IKY zW2W*=#1m#$)!GHT+>`dFOLm;CjU$QSDb*|U^x6S+@nj>9qKL+a{7&b-52|T=qj{9o zO8+K@8&0_T48G<5r6#|#kV-}pw;Dwp_cGvN3C~>vX{zV_ixVs8lWSL%#$LR3aSs*1 zFiHMMNE-7K^!#H9zy2YBC#<0qXP_JI!qA5@nXry6ACCoR)tn&qG2lL%S?o>|i4GGy z{Tg~Sz9lMf$4zeSPoFb$0beb}kSFG~@5`1}QFdp0aP(-`?S$)=#>x0q8nQ3~3@b)=1G4YUJP8O%AJM(Pbu782hV!f}XfNk(#vhQ%_J;wu z{&1xXyEcab!u_YrTH;M}ahn_O^he%9x6Rx1@z1%~4erlZS7IY{d7dg?B=TSSac+tS zR>MmJh;T+E{HWDmg?lo=A?#2HM^$2?r^fxfVED$oNd!$Ez6lA`PLiz|J}ATZk9kuV zBri{ruNgeRVF$a?3!%lJGh(f-FRg^wkS!qY@&v!OMj2JtulGI)TFQQNxzpg8?dkV3 z2x_cbYx@G69MaIrJ~{#=n6D69o0=<=aqXYGd6uv>=+LzGwS^poI>%E(*(z)hg&(D& zg}wr(Km~34>a1m^124TvpGo0FSwSv4awm2kZ%V;BsBcGoOlKU?_Ve0&gdf4olE>&| zTV|u7CrEV)Uz(+tX^@i*b|58_l7N6N1EUJH=tmt;<2Z+@J0wiJ!J&dHU@>z}iL&C9 zYnlQ4j@1%*%Do^()R0$UbwKo@C85K#7wt-SOJMTd$NKG2iaiLC^gBWI&+Tuj8M%Zh z?j^{kvJ>*WMvbDGKUX>Cp^sQ^ULzAnr^|1ZF1bWO-+TwYnll?+r(ep}QZLR%3^t>x zlU_HM)MxB5W$<@S{k&Y@z_Uk~Rjbo6jXk{*UL~cj%`@Q=X9-<>Z4)yE*ri2;`th|M z<=r{?ue-U3W;`xQ!d~p)qfkQtk6<@?lKn`H(SI4qh^YDc8bMHU7L+@UNjN2(dYA0i zI_|?ysMv-bpQ`G0TCNsUXu=lQ%70Uz?-BKtC{`WP9G_OYiv@q8SypWw0%(gGtk=~G zjT7VEePOXQ0(j3gFte>b)HEm;eR3vZTHtoIf^i)hs;%qa8E-7D?9t?h8 zpWw2fMNr4OjWocf8tii{gI(Hy_JQ-ek$(R`gMDWbr%Y!>X`~~m$g6QbFpg>Hc+c%~+(3>AGLA6BCHmcpp%Yx(1fJRr+;82r8AdXLKQuCxgP+90-Uj7&n+ z^0x7+OIi&a4?|PTDP($!$Pmt3+=KNFs&DJ@D#)8QO7gy*8frK5z?rN0w3h&qkbHOp37CJ!d=6qVjAZ1a(VAq*=4bDtVQB zJqoWmY&GpKT(8@;Se08ZzhaXvLc5&R*W)~G3P8bE9HVm0+oee?qR$?U9fIyN!k1?( z-=((azAy|TMoSez&1j_zy6e}>qXgJdk5OA^F%X~Hw(8*u-BhbV!1|t!LXOk8icy-@ zx*e!beg!5EfeOzv3$^I`Ucg0EAYw#>kto@OWKtPALi|#)K>)jhsJr_#CAf2e_sow8 zs6LQtq0TeWDd?bo5y25pU-@cgN&%iF*I)nhIZVqSJWsw$j>zkR_@E^uhTkwxIK2;j zpCY7mkHPXpe&~{VxSN4*=ulUp9;p~|==2VL3vztD&oTN;jp!#$YzAMyf=$DztYcd} z)wl2sx-|+9ALJk&{HNA01aMoQqthG8A+K2UR=+-OK|_f<@K7heDS1lhnhm-~YLXAQ zBACoO$gsNyp;&2Op~q;;2I?CB5gNg_W%$|ZnCTbVS6&_uDk*%6xe+?P;`hycU-zS5w1^&y5ossq$Yx6KU6 zUl#XkbPy|Aog9Gg8r-DEzs80>yio-pc3YEvHTU_ajv2eyY?^I8y7`>{xj%>!04duV z#QWR~Lcq^f{ZpHQzxNQ*8uzKED-{N;u|{L@HpzWyXeTnWlR2ilz_*p+K!MG6vMVu^ zw*kS^Y6};P2i^fnu4+$e8bNguA>Xh`!{Y*vGocGbPxRUh#HClt30%WyC;-2+wQj6R z$zflwKW+xjwf|H~@mh2!!Pf67G_?1$j`9mDKqQrOh+(whl#9^!u=4LZ9hI2iZJEfS_;%k2EWY_$UNJ^~uIdC| zbMTX0++VlGi!Xi6wC%|x!Js@d%oX&Q|CsUgFoyi8p|Bu12nl35ttr&$I6qBhpn$px zViyTrMYSes?YO$Qts-58?5MxOx4_`AZqzi4*UAWY-1pyazErR3}6c;EgaE2a0d-O}oe9L3} zmsAz6s5R}|&%#|fvV!34HRu{iwh|J;gjgwUD*m8=#?ulR>?~Z*k(Ri;p|R& z=|{iy2jqUuPpyFSclVI->)7MiDFCXBd-D-<9X*AwH@&fikB#)BBi`#u8+Rt zQ-+??!`|J{PLV(JE8X6OJThBhik2~bwNLS6&CrKnkGTv%~ zzl99IgMeUS0_$?_@rpmNUJ&(qOoV`JKBV~6*40|aE_owfc|PUsLIuyTVz=0c(yYh(!2d$thj_Z~tUOH?x!fgM)y=JRC55%zmdKaTF}shAgsH@iBi>V-oc>l9e>t84NL3JY=`!ltXe%A8;7Vi63PpH3-aD?*eUwU)C z)ja22oK!st>1-WkTlzVbE6`Aq>=KCtP+l?-nvmd6#d%{>Yr;ABr{cUxLgGIZ=V$S; z6e?llQD%qs2V<@eiH0#x9LAwln(29@wO?L5+;&oPFW|LM7Nxghq! zgNHocpi=2jpKg$j^h?-advq-O>G|O9JgyNQlm>Zhz~W5%6q>w=k`pj*H-aoitgXE5 zo4C@m|MjY^LXCmpfEc1l(3`m;8UR;y&4@~#Ul-DBMn9o?7

f=0_}dV6*43%qtWU$2$Kx<8M{N!Mtg*;CYIlb!b80h54~fG* z!-TKjyGAw{@2MlIC2`Qf9BqB`GEOk)4fzFoK`~+^Q8pBG{Hk>Rzz-Do5Y?s?*E!ej z*?5UQkTx?5+g2(y^$_iY(@!VbhQ0;PDutS))B$E{@7jOO$1eedT2n24G$p>k>xlD{ z4;C%&r9A%&G}Y@Dk&XUomiZh0f9uTsHwQpD8{@yXjMb|S+u)j@e|YUy586@44zECR z&{%n(`4Ik5wR zfmGuf(*J2+w2C4cq)TXU4*ug7r-sS#^J~dfOy9d@!iaL1L!-@{tNLxANK|9VJwp#y zG#DnW^i9BGb%slYQJP#66)QuJHdFR6tY1g4z#%^;qv5Q^(Xuu=v*C=z9yk$WKcGXf zb7be+p!wA-Z9h!7_@NG!hlzuYKM6Z456?m{lSIg1aAZFvnQrp7`fSJnG@Iqd@7v-X z@HRb#KG~Vx%X7OHc1b|E}kAO(JF!RSks;DU1A&seT!TKt#d?Hc!ew*VFuVoTG$?9pd>WCWgxJk3A6j@k2hfU(mM#=QXG>+J4 z|8kAda`ONQ-&ahx5qqh+I-vX7%4^{Yy@D%~4ImNxp&{}21vzU<_gmjw$35K;Yqc!< z@)3n>v2VyY#@C4)UPHG_9lA88$hnxlPccuG?jSq-(b7mxmMAF4DOQg&f{L*V8dgTf z@5Ym*U_1O)%~o6}@E2SUuPPy{*hs`sW!CcdvOPzS_Qe zz7rX+e{A0bi1s?|qdCu=vy1TO&%j%p&rT=PApJ|_6x52`i*KvUOGF-ZNZi_tEum$T z&Hv%-9fK?3x3uq$Z9D0pW81cE8y%}-?bx<$+qP{d9b28`&3(??^`3K{s+pSkwmM%6F)aSHguPRpn8v&637vnhM2mgWURyQkah&aFKg%nnk{3!A zOvZkEr83{MI@!a?K->m@I87M>CEF}D3y`dD8LwjxIOsSh01f~h1N z`kl7CUnW94KCi;NMbcfKYHYYkf&zr^CE(Rj5zY3@$az$)9}v8_+Gr2Q=0=`rbz-@Z za%E))zPt+y&i=Gh(@ilw6KOVYD_u;R?_qji;}qfcdyIgupzIq6D9{Zt>J19ZlNoj| z-3elMp4uPPdj5Cb62a^**O4llH9Oaxv&1Ob{;~Jhf8bWb{}g+1vK@0?8h36Xs;H1l z-ViGZdJzVICk@jjee8~beOY@?ahSHSc5#g{lD5v%Lv>ssuy{lH_nLgk3D)J;S54mg z1zG(+T{ZqqkWtZ6LXklI;1nhsnAIPkYUgY#iMPY*#i0#Jrf!>c3-Ep25n^ICaGJ|Z zOZEK#^NG}I>`78RZRag{3ut=0CqW1DHz~4g^O$N4oQ?9zY_XH(M**@tFK)ygg!8MrG+B!RRq%oSH&!UW!*=RAC0B2aYtS1AkRDBU6%+uZ5W_Qw zi#Hjqc;}9uBs3u@#PD$z-Gwm8b5}G@>S%`5WZ;;IUlxA2|N@K%!#~& z?;#g3dD`cwhdn2lL96@T#q{^9t>`%j7`lkEneY^<;UoivIQf>ueIfQGK@9I>XpJLE ziXJHslyPDYzQ&I$tq!T?L7Ad1!P|)D0=yEeMI(~GR2M@0+6?gt_w8Gn1;S z1?5yP!_75luv@J5@FmH-d#lN!_EJLkPuT2%pWwLZZxExUafgslIJiyOSIAfa`{@g* zZ4n)1<_7qy##5p|?p-QRe?$Z(W76X}Q&kJ7<*G`O`{FE9AQERB*!;Al?$c6wD|E+T zLy^LB*@-E2#W9TRExhC;i4fZyD^%z-n=WTI2iw}@sW*vL6T6#|I@I7KY2**uISmcr z?>M)9z#3&H!wX$KqADhTdctF6z-KC+DiBTCWK+wXZ>Cv^VH|OmFi=+0YBd+X*9U}) z0?JVY8rh9MdlskMU59>xG|D79-)YK>hyZp~gGB9ZW>*w#QPvOAkGx5;!;}LWyvUfn z6pFr9!EzIlK^n`fGRSbLU(@erdpHA0>e`BZw{$lhZe(>Zt`>st)g)&;fPYA= z#Wy@1LoD~)3R#IC1TW7dZu2vKB0N^)zE!KAqE?=&zo2luMa(-fjzX61v1J5hB_Hd@ z2eQ5aA}m*L{%oHVvDL!oGe0-o)a81z-o)_GPsD89tEaY%_2(qMsBZ zX0rysv0gIV{|-*hRQV#XeE|Rg zI&GVEBa;rbc_CmP0fmHYFyzbppq{?WvCTFboiaw$PWn5egBv{iT;zD+^`PQ z5Sp-gK6ReTvHfzyWoG&hZZbcv6{9EST`rhC)_zLN^$G-1JaUoOJx{-0{htS6LBT%U z0M|vQ^Le~Y19?_yrRL;%P1@pP%$^;4_y}#g2%@Icrl^Go6O+2Ov{8*B%ao{}>6)sW z%oEG6A8kooD~--xQe3hzUs~MQQ@{b(mIDkK#)!$4UYWU(q7N5;6eOEn83Xm_XBzOgsIao46xQ%9%*g>&q~^+M)egG*S) zlpm?Hg24u{AvB`MOmc~;ZrWWO5ME(oDLLMg_(N#84^nV*G? z54;HutFKQ>RnRMde`tt@ykejahtXsbPOX0+J`1F>Qp6{jP_k{0iFG5!cEk`&w^=Ce zfLA2STx4m_Axa!nUM#~<;uv0YEfaXMuugTeg z&x(6yD=E>>2;h#d8JSTDPVpzDrc&=M^CvfiMPY*!l&GWvvuOe!G!4<-4zL7Bx);U1 zYp+^x2UI458koDAq`XNL|E#PI{%yjD)Fm*xNttvF;EKJ<2Pi!DNksT%=R3hRHQ&AF zWCdrzJI(d3h;*_r&%!-_pPkl^r89pO)&u^DVLJChao;2774!sEj>EI?s9Se$?@8I> z8{R5NLvSZL)jLI$p(Ai!E_lC0_-j1Gbyn_+olN<1$MD5YP8P0v*+(1spcHQf|6(U! z&CUk`)$#P?NU1u4K??iy-NAcLalC?L!Tgh*ymU=K33^7`*4pcKMdZ({3xz{oZCrwT zNkas+0Dot9HA|hL0=5zMPOD+K2i9Roddnle04Id}Jthe0IY{9iiV|25SHPg7$2=!Q z+m!j7@m8rT7>TT_(`2ikws}uI&^qGEH2LtCGdLZgnq}W`XAs36gI6UrbkzwlCQSpS zW+`65HpizQm2&L&uw)3OmaEvCkaME@kN;?3BBa05;(YbV7hiqy|7GI!H!?u^pY8HL z@oWkIz_a=87dg*&5weVhgDDn%6Ks6#vd35+Toq|j3hf3iMe>K>_5A|jv_%@T2$ME- zFlF&L9@YI9o{jdAl6=2ZH|w-eCCKlX%FQnsoEpRigjMK0L#*?kM`P|EM05G7^A;nil_+cw5`zBow_gr#FfjIRJ{@=>}|R+qt*@wBWb8Y zj2+K1L<_xpn^2!(WA*6cOHvrJ?MZwesp~dhs-#uXxhVz*6fI62zIeNdT3C)KV2Wo& z8HIHjH}XVVUsBt7KTGk`Iz+R-4k+>{?yq3j3hJ!9exccB{Ytp13kga|5_+{_v&v9F zw8%JDSnXk0P|%cRDted|hNFOn2WZ=vAz+#VbL~4B!QVcmjO@@OM&)5a!CvUOTwWAz z7Jd*Rtid>?Vrw_t``T>KXTq}RSs7ZIov1thaCtnq3G8wSAalSP6cx$_ry)1mW4pU7WZl+kDC?_JMnX zDs0t_UGQLe^H-;p|KnE(+@))DdaQ1#MvcHY!D-@9$}^BJ%{v4>ioDnu+FqbCS{`x! z`XBt`4Sirex-WaP``^xG{?^g?VpDukUwJ@A(A%IJLmIuQRMcyG(LapNd1AP6)e_m59$Ho|A3Ru*{k+q+R8R`2iQ3DAeC`9x(==1BX4fAPv-NC8*h?u3BA#5M3uJ*S-Tp2>GKY|g5&GQR&eLm zF|2Rs{d+4R^4ZF^|8?#A{#AbbUxFR$-`gO6&j!D+UvP!;Ioi;0`VdekC2kUn$=~u6 zeS?JsxPN9;)|=F8ty&>=`#(dv@h9?s5roJGDxeg}36Z28C-AdZnV7iVF5Zr-zpb^X z^fS`FmF$ECm-9+a{ruH(w96?pC~LgbF+OuSXo^ibL?S6HVd_NEh*o+;`5QZPl{van z;&=ld>`I*Gg0|nK#?Fb|nA~+zoxb9}0Db!QRJ;I$S23{SQF>xArg*N>On>J=U zYw7z1WtNG5%v*RE8-e_7<6rwA=z*OeA8BG?XC%LPIT34}6S}0Co82XUj|;G4A}+nh zKij@!2XY+Ztr;b|+`N&=8QrM2^|5|r9pe2E-gGZ8GGQ!@FYc3_Sm{^Ali4WA57Wfs z{mEE?!EvZs7V_&wG9vrhdJaQb!((@eo;gZwWajk~87mKr1*@sS?N0vuPJ6ZUG#6PZ zm!^5{WLurizjdqFP%qYw+0BET)6tCqEz{1ADR-Y7Y!@-zNsf|P2VXsZH%)5UEL4}^ z$Hqi#v&M8N1#JOpAC^1e|u?sbF*w>fqgfB*~<<&gvAHuOx}}rDFKs zm8^f?OaIeOGS%TcRZOrxvoE%ETwI4(hwxw#<@F=DhCq>=wGRAq>uX7IgaD?=oBiy+ zT(3F^MoK37#uzWgg_FXz6Y}za9StRu5|RjFQxnrvmA$_{ndm+GY&l-Gx^ktj%RRPV zxlh0GUfub0Wj|f7d|vt>_87u>FBqt83EA?$kBb3SCGUb`{k-2N+n}!3GHy{ZcYV9Y zBj`HoxA8_bOwK-Q9zVh-xV+8>bw%HyJ%8B$xk2pl^jb3=&3OK_{|(%;MJ_9VcY`h+ z;_wiNpi9j+)lD7{Y>W1tjbztslL8Z zWgzRQR#9BUg?<)=$+8)$-Y^tF7WtL7OD#6m&?JH)-SAGEF>eB~!YxOxLW3q{$n-{A zC4>kK1}5bPHcVj?h0aJUH(Cfyh9ZY5J8MA|iVG}+ByKIGhJ+;Y*HM4(9o-3P39^(H zV3k_1qDTlHHK%UQ$}^%J_o4*bEVl=$){!x4zx_^%7js|1L}RSpibxwh#CD*-HMTwKeJAX95AvCUK1SmJ&^dEu&|eLruC`HC>I zB@P>MsdyYOQdKzlGKR}efdP#k)$?tzL2L5r2r<%;oaw{shd+J!xo^8)tw_b95R5V z3N!VD`DIm$fF+z+D=BZJP^J~jPwOyDozb+%F5P?{moB7AM=K%^xLtW$#nG!+7B~}P z5b=mOPm;t9dFgAnlRg&_Jw_7VQ^CUP7gO7{#5mI1t~rG@L<)d$=+^@JU}ZNTcO?${01roadsh&N1*3mk&7= z;JED@V|yqz)e)0q`P`E5i993O6wMlmHBQ`UODjWS!Y}8F@a?i(67IuIV<=7DvW$vy z4c$9ob!jF`%6z6bN*$t{1*1k7oAn}tGAljYLUFRxP=Go0+A@k1spdW31aob+-xO^p#4feqp9wcvC=T-O2%cfHhNd>MU(P9?B|-RX%g4{{vazuYw5s zdJ<IhqA#$|IEoUw<} zoxj1r`kX?E`(Lv$Tjc=4`w2zdV}4Y#*M zl&0K>7%?yA@9TXZ=nmTTF@COwRU27rwo8mEuT>iUyv~Y3+X-rLb0dt(@lqAgMf+{2 zb1ucjhC;3y4`r;~^&LId!A!)lYj!?e8K`G2A?o8?%GBNDPF(ElK$P8{oP{nd*UnAd zxglP>Zrp@lZQnrB8E2H`R8)(T1aH2Q^9DZ=E?}FoWHmvd4MYkCY@!YK)^Z|{ z^1$%%!uk~Qf!m4{rGX_?$syYW>nfa#4W}$Fo+VNhajHxB8Pa%l$czko&>7n_V#`q^ z5vpjD$sG)9Z>K_+bF@=3a57goyf*RYgYaTLd2hQp$;ME6q)kNYPc>NE);ytEdL!5` zIYrcZIx^&2fqpj~wCD$QsZ&)8rP`YEB#UnJw9rL>XXwh+7R}Nyj!ZLh_zS6eFz&*> zP>QbwI~v>{%s-Ibk&e%5v>HW66|=ub87s3Y7Jj<}-i>RIS{E(1`t;6Xo+L8r7aXj|>-p=dV|Y-j2T+~zHn^lPRfp__cmu1fmk8?>2v6^B*j4zn*?5_x9Z`m5sj+M@Te&v{ zFjhLkW--XD5&pRzESha$vGOEy_M!-$6~O{_bU5p&rtw^`KFZVt3aYA#VeP6hFsu?_?hXzvm!Hzw!7R z@HltxZ*6x*)z@7Fx3}HJM||Pc*PKAP#XcZuBn`)U;KJlMZC}9wB!1-j7(+~J6-L_T zXD&wkXv|U;mUiEJ4sMMgP`Sg~Ke$=ec@aR;!{}2TEi?APGq%nrZ{oISkv0d95}soY z;Vv=7q_5F)6I*2dzJ70jN+CI)@0X^))T$FpIqH&0;V^fG%wr{s1-HJNYVH=G`h|GyK6rKD#*lF#OKfvdsgdSm$+xo}m$& zCo(V%H<#Mf62U;ng9=DV$%CCm7eLdt)fF)jo4jHI-JCs8-$vJ6x77?$g+u<_rTa91sTpmMs5;M(4Cz_Zlr!y*CCjNLPr6$Yk$CLph2a6*xWTp$331Uo3v1~UgyJ$(!$SF-VDPtY-98y+A zhg2abt>{Gm0n;@=V0-AI8+;MRR*xEv8Nl)md2P=LwR?9C_#suz9rR|cdXs)S z!ZM#kbwO)YIBl_}w|nIP;T{l4?Ix8%vloc+DhA}q3q!y24P4t72xA8gUOyO4UAm`m z5QP?7rZu^)CJe8_5JR;VCVX4UWzzOI-6@=L_P6kC)S#UPtD!9V-fYE@&Jke}!**Bh z^o@O){s&t!>r=(p?gl!)b) z$F=~Co^Cu?=~>sZ0Nz9_>JyGzFJ|bYQHzQ4YCNPn8O3gqOIwsXysAzv_z9|9wCaRu z$8{@~vh=!U$)~RvU?){aYoVJy*$lMU?u4Fal>xJd3kHUYD-2|7QM?hZ*$QT)5n-2cBzkbe)q6#t2Vj;Cv` z$_LB=qS49a&ErK`cF`;cZbv&Dxh^>kk_b?TnM)kGb4*4O z>iFa|+cI=wjQC*+10!QSpx-$$YU_@1D+*8&5&5rQHOE^pLP=sH&f$O^PlJa7WAFP1 z%=J!{hctzGseEGgQDUV5wF$+0mR8+Tb}2rjhD-OZ;23-P*TlI(-O0JE8qJtC4^SkK zlY3TOxJXU5l3fHkBZL=Qq7@5!snCt$#g9a`ALz_7Do&XsEH?u7zlCHkvr;W^M~qC; z7dup5vfvI(2~G(aL+5r&rGJ>7>yLjeWAJqJNcCC9b_8>&6FGepPX-QoiY)(jBt=^L zq@BC)}X@+cYET(LUAqQ|s;dv>vz zP44REC19faeANHD)eh{5amkB&|+lcpElylHeSEp zAOBm$E<=l-#&mx%F$Ihb?7nnT9Z4AeJ|9umQkv&S{XmzT2ZR**bLuK6c=U(tfeD}@ zHLCMlAc^P+wkzcs1Xxf$D|ue4=*>c8%wj!EVwo*q(b2u?;Z6e}3)u^s;y2^t9jBfy zn$4c}ua<3roc6QA$bTtk^qtaA?Nl`UI<%t=!%9AQiwPUY zRGkf@a%d^rN%LnGs@X;@;_8{f4Bs|{gk1%js$nsL=2gu~-<6$8sU1O?TygJjGx@3r zpE7}5m#7(h1*BklGl|B@6WQJGrMI%?!<%#(T6C#b1=)he@eI^oBPgJMUEXjLP-EU5 zP&vCiJt|NHrwGRwEg@i@WnCm0&zbjin3HAq}hiMr(DKO>Kpf!;?e4>h8mgV(QbtXDnQF6 zL}3{~iMGDcoptGp%3zh8$=z)@rfOMf9csjw)MlrCK+`VF#Xh#F(Vnx@2Cy+#ikYPk zV*uO7{<%{GfNHQ<38sFCCD%&w&j3gu@>L?MkjXKeSIvUMzLjGTv4}@ki;jG6X4w!> z?QH;nURtgMbYe&CkXu~qdC6&8iVxLH8dobGB?E=qkqzT)L5%GbUd!`y*jjwU8%*r zx7E*Or#qj6xyQR_H?=(KyO3vogeyq3CNk}2wnoxBmy6x^1B5 zwVGhjC|QjsNA!5-CBEOvbEz__BISh;U5+9@sLs>?(6C7S6nU5I(@2~3{ZUujl!dl( z^xEsDkeptee|hFE3Nt?7=b8vx+9Yb~gbx|%cF0B?Y(%1LHODhw-ZGvD-m9X&{)cl5 z!}*LreK|Mc|K7P7>Hl8#{VyS?1X`VBEd^nu!=fYy4SvK1G%!$#r8r3cYAFvz^rZU9 zOY~iYQ>s_rA&C9-(C$8A8PAz+{fzp`##qIi(W!~4DNje9;%uMp&u{vu(JIXP{DXu5 zK}-N`A(DisN(pBCK~k8#bjggJR&T+967(f`%Q#|0df$B!mL>7K6|5fzS3g!-T+vSH zpDA!x)kwH-=G}r!)(Vz>hC>eptZP=8WFS~gLCDJq4ZxYh+{tJ|XTF&Ymz6!w+1i&Q z5C7%J01C#}-`-Kv#u2!u8(p=rm;xLdBlH8`#kh5%c`r_+Ncc!`E(c!YwT7y4VJ=Uh zzB8pp^y?(^TT1uNctC@KJA2bjI%ZkGr~!2@ciKruONOb*=<8r})Q;Vld|F;~xC%mx zz(TiLsk=k3x@dF6o0$VlLMpmCY6s`>-DNYo!W_gj1k48~p!>(U5>^M066$&fsfu}M z(%TJ>Gnw`1591mV5IodhXS^rF8%)}ZMtFC(iZT@tmuEuAz@C_;_q+TduubX94d7+4 z@eOtRf$=TW2Ri%%0Y9m~WcyqIcZqdhJxV#OklC6bAd2#kvEemVT1$>PIVqUv*DEIM z=8vg(S;43~8$g%1Pa{^<+Pb!UdAn>KQO`oXaa`^(v)zOLm3wK2$t+@F%N_?a$!~`O z&uM5)Mg)^qw)SjB7xSsv5ruFgIZI*=+OQc>u zgYyX(ROi6r3vvj*zjjZkgpPRU1-;)AJE3t)BK5V1avn)-o)DcWRvclKRW@T<6{u^` zOAZFYmpPHC56}*u3hN=6W$cZ^E}Zo2h?NAht5uHw{!|yPetTrIn?FXnf7{LzrhCS} zU*1&v^C|GTp4A8GS1*@VANOVk`JzB1?ExXDBX9jmVwejeBQ z(IJ+m#>$6vOPm_;(}pfe|3FBp8xU%mLb>$Gb5mn3;`;W*?n9+sL9eT5od=FqNt2= zWKjG?y+z+(RJc(ewtM;LD0mk>4%Is(z!#R0yi_8oWC67$kZnsQ1EYaVZm4KT`D4Vy zLKh81ko`GrUi;>$yN`EU&UbNw@$VJ(S;4w3?UxyNdw?Kc z-@u%n6O%! zyVzcBc}#7l*T218H4}Ujt*OXG0sssmgzXWY5?RUs5MSXU!YE@u7Qo596w?<70O#IK zQNB}(GQ(AZjfIlZ+#(TT=dBr&XSz556*5|jGpudtq}@Ps+$588T>Bb-mYr(;_Svbp zVXXiL!Mx|72;#Cy5Ar9RmghXP#&I7WUGE#gz_n1HL#bl6G1`pdFgny1lRlilyG45) zRth|TW*VkPuNJ3vYiO{Ui0>3;=#zmfV4KvLuaQY*leHxICVF_UOg+JQ*>pO2ZZ;TY z#u2wCm}Gp?{tYHTb&Sf6+pJ{MktW)Fs2shu$bUoGB(kj2p!g(Hh~NNav&sVFed^P! zJ^81ysh5&*=fYt*00m`+!@P2p9}${d zU3#p>I)yr8H(>|dk70&NVgOkb2B#_g_>JN))x>FvSbWs7xFhw6x-cO3EW=jLhEJ<@ z?fTa5e&Ss*AosI99i)$7 zLIt*qxY320Fg!+A{-xI~=4^HXh7c9ewQp_!J8I2PNjP;NX1NGXcuuB$c4K$pn_A*N1%Xb_Uv%Ks=N z@uXLZV^R85uAOFOU4Hy(^LTyAzT*3a+wUJ$N$-R^SW6zYAGjw=d6}>$dv-E})tI5O z?#MYsT-lT#)}E6OVT4Uf`Aed|1uza9t01NMfhpv{%`iN}u$utdpAPsI50#C-kH zxL6-mq1BU{eDW^SNe3oGq##^1RagV)2X@4QRX!}KLAnX_}(jo2G zVxe;|&F4s=;6@eU+obe}ya@(S{xP4Tl$x(@LtVN7rz;<0X%n3=qAcbp{*6AUBK0u1 zwD^Fh0KT9YUuVvhMLIs;=d+W*ti8Je(1nY~RkN4rcaEai*l7vXjf&VSiaku}rHNWk zIUFIX-i05=J>t0hK5Y;A#O`8*Aix?p$lwbCTN>%~z5kNTwKxonJjqCUa={~nsMQ-1 z;FmO5xGayfht#jnJzJ6EejF&`A>I2<97l4umSDK=^KI?RmD^bxU`&t@l0X`JM6v9X<;|=yEEsfJO zj|~+#Ju604O`#9rA`mHSsW+!Mq>^VN91UBYa{;rKj7VA)K(qXqDRn|ddkeS5=0stj zJj*#k>kp*MKP;8@Qcd2sOyVIFePHu#L(LH%nCd6pqr$hh&?~|4Ak2^a{uyoa)<4>Imx|UC_I-h8AUc^VSvBBbR)!n9g!{NJx-~r>qHZWI%=)%K(^Y8ij**6 zdFTqlGloE5fzK@sMjG0tqb}ts&mNwl1T*G&yl-OC3&LKrZ2PGuO4ycbb(2#WSscf2 zT^t^!yq{iAKs|`)%*=f=^dY(Av^#lqfJHlrev=40?cJ6#B7ZCFILt*m$YqY91ew@UCDV?Rq9k0^laOZn~GL}F3&6RxEO5% zQ!G(KlTi2Qq@_rUx?>8_meH>Jw3h{DYo((IyhzX8C+q?4co*zbGYuFTVi;{$$Zx0i02DOnp_$+D>QS+2RI#|#nf`0tmSSJ& z5^)bo$hM+d5rdjjE|8NtbI}me?$LmAaz+P6TR2R{wn={-Ry&pA^yNu5tj(Z#=m3qQ zF!2pS|B|79R=untIRH}7Iy|ujLrv#6wJqh3X{B;xChe1)!V5#?uG+e9VqO<aRZHuqDYQ77U^Fh5QPp?UgT!id_ z$}0XNX>tb52QCY^gdEBKD(wW3p-4+4+sa-6G@9&|os?C=i4x%@Fgh{!j zkhu8VjD^fz(-12<868PV9HOMA(%oDNKcpAeI-96)26tQr|EE0Pz0?|lX;G@hEe9Xv zJkKZ)f-Icd(NDE4n33YsOGt6$;ZIEnKezerVBeOl}*H0MYkEX9A+Dk4;vEiQXkwqA)QO4PBx@rHr ziT*5$SVro#FL8sFDybsX>J5%TZ67Yqeblpyze>B;3RbCbJ4GnJFp`h3x)nF&c>LuYb zGs~PUAx`TAyc~M-iuoPoy6J*q!|^9u0KO;T6_c8EVI6Uq_wM=0Isn?M!+MeQDV;WV z%+>w$?^#c ztle7$T9a*3YlO5UnZrUh7!SBIxKLz9yDXUnJReSj9kV}qO?q&D05otL{OD*PP!Wu< z_|=hqs6&`T)6Cqk#5~wNc0?hD9H#b##L4%kM)VO`ZhhvyID*_p;zdKUObTWaH$x;W ztQy`1FN+tXTjFsRjLb5W^TsEPNbijs!xi!>_pNQaSt7^n0|AMsqN1zwRLqt~n9%3$va*Day*#XP%&fbzUI zTFyZ{U#M3@ZU0xenLLI9oKK}a={#wPc?f+Ur1{|T2C>ALLwdmuB+4BoPoRg~oB%n^ zv1bI~8M%A=qM)wA?%8Y`qPRCENGAMeL47VsDnYBjd+?QUwUD34#dw6Go}PDT_md!= z%*GAZ4DQbbL5>iZo?ehgl)XUX@uwt;=VW!~=nmG<^XEUm(IfergD7vXXczZ@sEZ)$ z#U)n*e}mPV&wH`%r$bgr(gfsXZL^Q*s*S8t=bh_{eY>Fd1u!!Tm||~&?PmgkAB%G> z!_x~WFA}B|IR)!Jmi%nEXrGr0OG9~WmAF9z=E)rG>J37tef*u^y@7Fo;^&PY57a4u zzu2zT;3I1lV%#ra%J3R3__aphvL zCVI^s0>6Pg8!Gp5-V}nhvD;ta%Yo!-FE`*-@DhVGy35qXO1J08jacg&42&OY-ism7 zuqy?m2X=$02NMHE4L!mLiNevUPeB&oB(;p@C>b9vQaCb`$a0@&l2n&uAlsSB7%^cS z+32=Kf18FpjRD6~^&2#2T+{RS42=Zf=bGY7!X%f&Zc|;Ns$9TbgJKr9O1S1?nwS=Q(<2ktHzh#A{e$*kqiYoGl0W(gL?+kh1eT(dYJ^ zKe4|_OJm6KN}a^OwcF5JH@B_A@ZPwe)(p>pP(-THe}svAoGW;wvPQD}hL26l)P{L? zE}x%1T+_QO4~TtjtAr~FH+0c$fLOb0Y@=`NZFO>>+hx*r4n1YJ&7bPek}KXxlx1*_ znDR9C2+6+o@ZZ%nYN)c!^})8n{BdSjm1u4~4;9zI*Ut#!TFoT9=~!t=dH94uB zo#MqE>zy&R(aqu!(B;8(5}v$E<2EyeL*NC|e5Wd|MzHFESagHCNfQ&CTva)%;=OoK&SC5(}q2oweHuwl*MoulyV7#F@ zb;+R?@7dJi`iCbTWS}P(qIY1n4ML}=QXe1cZMP^rQV2W%cxzTC1j^5}Yj)Xu%P+w^ z>;s<8hBp!NBQyzYn2N+MT3(5~C44Cm6S+Bb*lO5&^r&HHm~)bKCP*gi7E9zF7vlyl z@l>ne8kp?{&)C!USjBFy;vliV{b2lj)gwfn*ZUQQ-k02-S?L8FDSs`apBZ3&^kWdpSfSJo7iK-emJnu*m?1;FZK}<$oL?3mZ6@{7b0)dxD&)r1h7SRJ2GOU4ynmnX=KaDPC!I|7WlQ|*D_YCwQH1{Lkk)|N^6pAw`p>AA|~whZi6Z9g!l zTnmt=-#m0;MLN=v8P{hSru`+3BO2{A~9bZ z3W`{<6j|UprN4TKe+oO*(BVHm^X^hj#xRC53DEbCuZ29IX!ap7qpX*P$msKkyf(@k zcpXg1qlWFON94X9e}j!bT0#4QPYu*pdG8Nef^S6d8V+=zi5RSlZYG586=lb+wyWOf z)Q|rqhDiy<+SYE2-1M0qClI0J&LP{szVJ?sel}Oc=eieuxtdWzk6+Hd*s46rWZ>d7 zJxs!l;p({{ZImg&c+p*rVb?HM;KCzrnZA1dbo@$VBb zA4}h16E(d~jKUNV>br`n;6mtz%!?2X$d7N{ceVcR*D5L<~3=1z>CZuATa17 zVQOTU!=X3phSo`>NXlLLj4J%+JfyvX?tUZg6YSJP7f`^tYteMjz*0wbtZw4cqQ6o` zN*&zXR;Qr13XUv(ueLIF?_AmJk%@zc(+3oJNw;3J-u%ls@n2>Yf+ycK@dfvL#sBt= z|9>adHWZsu7;Q6iMKGIB z=)XQE)ZA z;IR-)h<~?l@2NY4VeF|el#Ch(T8!9rKInbpDF`b^X+Esve=*P4^?kn_`2dZpXs&M|7rhgq{s?2~Y&M$5`X3kk9bn$bHuQRfj55Mzg z-B`&8>C!arHCU0@l%Fu6i0ifc3M+$Q8^24V<(PBn`Fp4^7D<(yu^_*`o?ol-ELPh@ zI-0oHGL{WaFDn9`ZRpyVFtDA3rY9zvu|w6};(0Nb^RbNDx4IpLn=@NAQFelAmDkmq z2%>E+Hj8YQ`|N2LP-Qi=XcF5X*1$=`1CW84;>52Do&6(lk`Z%+Uzx_P%LgcpbKy@@ zDe~j2h9_{>p|@rp@4q40IJ`C#gu{ng*vQJ@sEiN^OOeE3(HPOI_Ib^hhzy7*aUM#x z^o0I|gD@MA_CuCEm(wly0a=k!)YF@=i*6-7J_juPC#FL=j9o;+uCM`bVhmU-#o5>P z&upKz>l)GV0-RQJ?AbkYHWyD#5I7mZ@8YZ zD|avbIZ2&cYw(wK0%Ao6m(q=mr`V9IiYEe&vM0gx=(ArK!JbCe*x;mZ1VQODLss$) z3L4+wG)V-fG=6uF~e70yc>mdNz4{Z==3#t>bs2_K2y}bJFngqSl{G^-=!=v7BPpqTm9VJJQ}vL$ z((PcGmiriAzuL;tYEIbZQ62CQTDf@Na=n1f)5}U^nHc&1k@il}nMG^bXi^p1wrxB4 zV%xTDR`kWTZQDu3wr$%MP-$>@SxDtgwFv8l{l4i{s!C#N!VZT@^GiNw9gsJ=N^-<@^>x3nO;JnGoIaZ0K>d6WK9$rPsah$W9`lNBt!1^bJGgM+JZA3_`s$gTbt#Zj;mNmNU; z0X^`7xk)Gf3(Ghyv^miii%d{smYIspz}0=3#Nc!GP~Y^w-KXngUloMlAtLZl>GFu8TcEH0c%<2LJIIa-#{NU7cUKZ_KbyL8 z1gvRZgfR}J*YNyu5f||Ao`zv6uQ|>r4knDF`%FpRaauHbO>rN&GL?@0bg$N)KZDUVeSY zD=4Z%O}2JuK7rDIfxhVDJo{zq#ceu$2fT^% zNo`m-qUMfHdxEy@iEUYTJ|H;j$?TA<{XS~khT};2_&ASOT8fuJbYHk{Ia&s`Ijc)l ztY+S*X=dCGm3ZRfqn&(Aj*Ul^w8uy?Ql1QZf;pV(AOj(tg`J7gzCm6kqqEYQ`E}p- z2J>`Q9Dmt7lKT@B^o0p$=M7Sd`gqd5tuFaQT=R6@*d29BQq-xL7azcQEBButlswb< z>UVFBoR++(Bl%dVAP=cESMA;V=gR-|t!1kxb3?X^pH|7SVFmMKUI*Ic5bfk?rWl&JOQB8#78Zt21%x0+=z_`v}Ta+Iu z*uyw!j@O6qwZ;bGjBJM0M-A&ArJS4b-0n5(QBU!PeftDEcGzkhDOqA;fpIwG95 z*zV!&vD@wTVk5}xOPw?(eJDom>~LP6C$l5KPUQH04nPqcB&C`B$Z?q{)@#BOn@2S~Q=7WSE6y22a0%bHUO z@#Ne*#I8`h>ui$#)ye^LI>GpEbMvO#`K9D3BUJ#C8+J4U@i6w8{zK6a^Gw8?F5^&D zSkNsb4&k4VH{LViSmt0jI|hs|i|faIID$5E%T|#7#ENa%PAjY&d)%Q+tvM{eI< zNUSoKe5QKI$Kxq~&ppC$?N|vm*F>Mpy$Nd=Jk_2%S(27%ynsxg+@=)ifwG2Br^_A; z2~>j>ESz%u1LC0~J}piPl~P{AE;{zie3b_|`2Ky;4ISm^u=G?#39FI3L^Q|KrWNK& zQZeh-j*pQ|Sdcr_5bPyYg!!OFYvsep|I5P2{^`Husk@V`QB0#B@i{A96|frFb>Y3xv-^pR#`gCFPabR&L*}Fr(w$ zGyUe2%w{Yf7;ezhHHWP_jl``E*k46)jq-d@v}92y1r9AEuw3v*NTlrYCXnaP!UWJ| z-H;Fub%$gjPcg)5T{v7=-}{(XL`rw9(zi96PfR{=sfHE`#-7@=wELp@En^RT7ykY? z9W2)z@p0N0(DL}@au)gjH5LC8d8zs0zrOHofBVMqL^GXuY33Tydd=}~@JrS@J7`EW zDQPfJ95oweF3_-9dgdO%OM-iEn7{P?D36}Q&Be~VEn^2HA9ipugQ4n=q-SjTc-(T& zdd;}Z=57oA{q^ht0&qn2geQzL(uQL-Zl?q)ur(X050c$PO)9WY8R-uP0mb;{^7mQc zWi&AcBiBB3HESw0Rqnw7E^n@33P)2p@gHzGE~y%0NBoSpcd`O^TT>JBFHivE^_ebn z%_nZas#R;z2v-K@ZKizOaR>1(EH=X`*H)2mK1>sQ7B4sOXe+hD#vE^P+QPSY-;s7| zDxAKtOR)hp0jqWyu9tQ?%r_`!5acw+(yXu;IgYU zNvmyJ*SrEuDpu`$I$izjT>+Y3z`DzwYv#_xfmBFMi!rSC`b45}{g-o2`7HO)Sg8hf zGBu+FN%Pb?g8>!BN=Kh@Ew5{t-At3L#qyJ#lU{EHR1Vh9{Mk;1*D^d-D6Va62cqp< zVr7O#PAcOSG6r|xkYf_@ON>L<(1CnSyYQJyQ+$WQCA-m)25nP&uULbGXr~kO{%TdK zHdLhKvhvYrM9MrCo0e}CIjlH&johu4FJ&`7r(%NIeK;8D)RtCs+SrNdNbeSZuoHF= z*BF?Ebew{Z1HLSchuu2uFAS{+)@y-lTYIPgnmDUf=k6Z}rnzBR`trjj_yz~G_znd! z5|BG{2}9`k8uz8K^2M&Mhc@^Mh8OK2t7_Gk^+L(w@^wix5Hez%&9I4!nGQEsjt1bX z4T0StyQ)T)?Sav;U26*s@DdWB)ZQVu6{5g%h%L&V!Yo>wIyD2`#8E?^jP+sZn6I{J zo@}kreXqrgdO89yHHyK%Iq-lgv1jB5Ym&Ytj00@H;*$tI1&i@g+;d2Ykcxa>?@Kqp zy{ToXYL$g$y!Pm94ExsKo{kk5$KTuQPTx2HY_k<k@0O+N6c!ie&ZR&K3u|}Ns<}Q~hp$md+b<3ag)I)-57JPa z#r;QkLNp?P0r@=MKB0rXO%3wdLIw5g6MzT->9QMpW2~Wtl zb3`nbEv#Bn__35g0V`IZe<6BG6{t2e??qTMrKO)lvoTwlSpFw~48uS8r5>+CN>o7f zQRZw=TKOE8YbcZy#t!8I+RRKj7sERtN!30DgjRI{tC&%VLWA?3z>88cPp3ID(ExRa z(hc30s3mrf<7V!H0XPZf*NEbz9Hg*I%)kKm8#IQ&cs5^VVW{$WxB3CiB+1c^C+V6d zP#ImFI@(aRQCdy2B~44s#fWUvGb2i@38^vZpj7}s_e&RvNIByDvzIWRMo>6HpiZ%a zDh3wp3WZ)_;fw}U)zWoh@9Fr5IX0g&ohKThbaNaNF|0L;3R#mRi^#Foua^1kFzLnJ zf4$RK@1i> zJ|v1!=zrO1L+$>ReV>w7xckiNA1I0%@Z;~WXv~PihzsvrKU5H*w?VGY%wx9C&H4M& zr8_)&D`=qTYN<^rLS;%I8@MV4BYW;DFnh!ZT7^(`8JbAO#9 zFt+gU{#d(ZDmYQg9r~Q%SL%6fW+3THmm!O`iwFc$`72)>By24l}m8_3r2|`PhcA?&S+}0X63fo`E}wJ4WSDBxKaI| zyV(sIBDxi6uw91cJ>uK)uXBqv@HSbCw1q+#VN2E_1|g5#NLWukc~jh;Ngq2f^BWIV zzeO=}9~kS!Ao3D_E7aD0qFY78pY5G3V(%k4%!EO=W2vo5?}rDz^d&HQw^T-F(byZQ zhXw{kZVs5ffIX9O;r!qV@(YhIi(HjgErQE|M4e*t6%9(2rF{sN1OC2u!vcQ3b0j-w zNg%$$)KO;f7Jt1&NID48b5LSqbDkk*U}a_{|P&%!O8Xq!;^?>(&AWr zilcupSR$Lv;bwfQPyAeKf-ksO(XmeP8pgFs-MqBQflY_63q7IV17dq>pUCf-DJD5P9`K_A%8#q2 zSAmbsHts)v^78yanL=*SYyt8k(BSlA9)*~T#@rQq{8O$6Xy)Ky0C2+nY|R7DXKV=EEPP+-3{-Nyjj9 z-MBg?pJbVlRZjM*MCT`1k=^gf5pd&+AUNqsNVsj2(c8bWjn3bHi70uPw-idrd(1Fc zon)V2851&@+=vxX2qQce$!n$FL}zK&ls@i_U94ilS8XAMLF7@g?@t^5RaQ5n7+lcX9|>okh5B7;mkL-A6IySWp#);?6kfjY^*s4vqZzB(t_e#4RQ_O-NnizO6@U z-7kkCp0`d+n0a?Gr!r*W<&7x#ejO8eu#mJK@idXNKgOVG;!RU_)v2;T2|qvKr_|#u zgr(d7OMy$&d5oKEagl06=lNK;XSrN?1BD7p(|SmbUT0VaCleY|86Bs_RbJs}G*MpF z9#kdk!TPGE8(d+GysFk6SwthyUq&N<>YZ2h_Khl4= z=bMl!^~^?^8?%6WEjb|geX&EgDGh+?f{)QB`QACsBF*>ic!Emq>r_v3Ag3ckeStoR z=e&9WapdJny=$Z@J90F&f9K*3j7dgPS^?EF8&zr z2z7Vx56qA4ni;%*b8$0a1?# z{j&%n;fOqFBkp^*q~bt@dK}8lP&`Qw>)ut-2UM|ph_YYuLk>Y9`wN>w$Yem`p%;rM z;kBU9CqYgzPcd%<;rt6y4vK%Mb5J$IX9Z_N%5SW3%!lzmhz+&ip__4^C;om9^5NGY zo$d1X$o_Dbj(E87r`wB9`(y{c6^KR<4)=O_!*t?~8-qFdn1C~)PfotP(E+IFeL1`b zkzUBKidB@t=i|kK?w{8(W>hK14B|a)-?s*fxktWj1>9+f^5p!U26PuVrd>vb9syik zW{@_;p*iOP#;8%$C;c}u+oLC6Ur~6JI-tz(T9|Z+y~Ck!K{wQgbLkXIkW&_i<43n} ztDL^;myAU|gVo9eFsTL!B*G_=KZK$cc_=>)_nU4`Yj90Jf1(Mew`foe6 zrk7#TG4|h{>HCs#%4CrQD9Qey5=eUIja2LY!cgUSb)Iy2z=sm470M!5|9R=mHi1jl z%z-P-jC{9HiQ;{BR{5j*MK|LT_bon)*tP%cYl+nYQ2FBX?1TUIL*VsU;GEQ8*9-B- zc_j&I)ZER8vF(y$C@#lub@|%lV;U|0(~;$N3e;8OB%xKWJ0IP;0)YG{5hdqXqZZfJ zSzv4y+g9~H2B)}j5p3IpM--ioS;usY?G^)=$5&n_(J+ZAS`^SJ1X(3Z@EA^800t!qESaf1) zt71Lbd8aOM)6Oo+lb8uIz-U3J9UVSul2$6dWd<`Go0{bX&^A!~$QBx8H!oRDjYA@( zB#06aKPGIDZ+d>Q7+rc6q;HGD$OrNiIk2(ld+AHwP%fz0IE0BYEQc=&Yw@HSprco?#P%v62{`Db1_bo(7}Fc){G$#9%H0%}lSLS|eIJx8<{`llf& zn3JvW``yP9I?M}rfqCi3op!)nc~na+2MK)dGH9;pDlpSG5WP3t;N>3B)vh5dQw-Ec zg~Lez2Q|>i>W}gQ+-vDOv|7s+mNy7gGV%0~MxfMzgff3PBQ*&m3=L2ZBjpaqRD4oQ zP&CT#XMAR`9Odh%aj{9ypZrykFgF&3GiVx^`W#6J+_$0E67}SE!fLOm$UZ~GEh6Jy zvI!^8(?DS5fT;~fMtIAFgBibrL`T34A*w{@h;BL8{yNVAmNmo`#x~EPl5`Ui3fr#idz`Y1E_gGevPpau$cA_kC;S1_NArmNwVaUn%SIvnakBIBhn(M$IC zvCbu)EM8BUBbd#w zIJ61Kn^h^i)X^ZNfU5N?T+&|0wQ#7YIJYI^h*+~mI*A^jf@{cq1u)>^4O4#g-odwc zUyw&&kRUWzxq0>8p#Kez@ciwYk6U)6!Q~r@K?BDEc!NKH=|U&(jQEPp&&9}piqJAu z!qwA-4)2chy-=K?sftcxboK0H;8cw|MR++yPQzVV9f77iyK^B~Mk8aQhBhwytdmC) zesRfB&#VGjRAtaLrAFM^I=R+)$x;r#x{BF&X^btjl$PeN|#+JIjgv8P&K!d;?g>jM_1$BH7=7z;Fs|2{%XG( zo&?Fk%Y`Hv+PoU~OCut#Pq zfuF71_PE+)nnsOjm8MY~pg}>_Z zl4GdGNyH*!P628FCKIYuuwcF4xXcV0OzC>?joa*KBKur;!ohh zig#W(qZlqGi`O2Syeu&*P;ph3HP6aO-^$8rW7LJI?~{yF?<8N{VeTjL`}iYK+=R-P zpLO&&Zr0*=Nn%hgTbtRdV2ZnWYGBiFI76xtZ)}nKT?h%^%O{?xo~EBwcEPPFWE|B8JU9ro zX{4yvSi!XMakR|v8vC1k{0N!#BN1HKOa&@?MTUXuMG<&lD6Cf$OH-_2&=J(~s3@dt zSRt?nnv}+J**f&ot)usG3VWPLyDXidrOt^3c$t|A3cB;B&ja%9sc754smlbZwVGD6 zEzlZRg3yor)%%nD%l*S?rcZc>QDxAGgFViwDfuxgkyzup?aQ+PDBOu`{nOy|den7V z596bWYpj%<#fW)*A4-Iqq4ev!9hpP`PiI>?VfN6hW|Ysi9hQXUZ%&N4`JNQjFboH& zA&MZUuajJ%E;LqdY`{%63PJWKe0tFI(^*V{|39o+;emj<4JDkUX^%dE(-r3N0$W8y_(`HmVVch{J>y6DGMW1svu;s}M-V6+i zd(4ML8=8CENdC7wYvf^DPC8bfSu_gwBTo<%b1XvlP#$p^Yb7cbbr8n}l~zOcxy^Va zh3PO#qcODBd`PvXh&mmy49mnpSFGSK~$VJ z7GrBjXU@zDmWGCM*d#PRH>|3Yuf%1DjGb+%!U$}l(B12alRJKfF_Th_Pk|{MIXTXYfbS`bB+yjUYG2`Q@Y`hOsib4 zYi=}7-r$21w40y0lNb`e<5!R_$3`A=DvLgZQLlt*&WlvdSrgxrtwOI@HkDQ`v&n!I zb$Y2`C>j3PMetX~rUb^e1m>UokxHI$`h2mZ_h7v9Nw(e!$gfr>%dA&`*@o}@v%cP- zr%WE4%w6`QlT)V}lJ7L`hwR-^oOc2{LzJGd+iTOisSZ_2o)U5+U6mjX70TUZCkKA) zh=k?ZzUAuor)`08%RD!;17#PwpSr2m?NEc|g9Ti$yG8y?ub^=dPf)bnlpw9&GQm5sxX>W8shOO#O!>4`({Wn2&LSQeGr+ z6GdB64r$HQ4ieac=rWN!%ysw#{xlh{I&b_F8w5Sy)f#hl5ikW|Td#(gZ5@{vm@!)i zGyH51$dGSI*JgjrmfsVM3F3<%xI_`E1sRAbB9RMo_Hz( zA`CKa=Nd)xw9J2LX6(!lXPw~lC#aGC9S#>vdwfUdu>eist!-Q6k&Bd(#l~o1omrRU zMxLecm6)+OSl~JhJt7lu!9>HjN52rAUIA_I`f&1iJ(ky|{AIuH&OjXk5q~=xtZ-h?OrVYjEb&7FadPz#WStm{7ND8O{6$#GmSr zF5U1cl)dB6>~99vrlzjPKclOtAmm$|f1ldgJiqUgVr9bXJ-x z^%M2>%{y-in^nBu2UGltXw5kH#674&nWIH+o?`ePHXqnA;Ti^M02d8k1&DFEOhd54 z-+@D|Ph5kx)0kTX&%AuLyg5HUr7ZZ!-j(K~7-o;PDyOchzf28qS zAl*AYj&Zw}r;~39A^3fD0GCtp!`tA%@IrCqUK_SdrKm}JCC zl}{=hpL?vBz3*B8TqdE!Oyss~mttsNn=kK>kM7iIR8x?v;>2XCwOWB){n4gRD|=tG zBG9rI?n!uvAE0wKokjK&$>#eJ0LuHG`X0Up`8+I0nqb)tI9SI@3Sm`Qf=W`6MYdLv zMJ+8&C!Ufk+$D`*W7tD6x7kamyR`75vvNp(oA1v@)WvN=NAZfcTV^pbc;L3qGt z6|J6KNp(wdGEPxWQZGUaaMBX%SW@`UVfEiswiSx(PW4~tqRf{~M(BSWR{zVYb0HJ6 zceDF1Fa85nEK#>{LH%mio}rj-om{|ej>l*SjkLni6t?GR(YApdZcgD)?C@Ntkm;=7 zj>(ei2oH*c(fi;FpCrm}*Wsly;Y-d;8$WU%cXD63 zPrEGy|9lKyf^ZztL)$PB8!HF>h~Q}^9Vh%CyBbY~5)+}#-3$Isf*{QmGB`=JKW^p; zqY&jO9zs(9ii%R2Pzk`nNsGPv;(DgS=fv<*9N~bXP8RQjXbI@|bby|U8EYw;ik`+4Rb!Hg+I9Y>VH{oZ@se%lTSoMg(Qjy}xs%0y+sr z4fDj_D;aMe>nq&zdFjm)Yjt!oHXM#M1Lp0{ED~Px0?uef)`q6PyLMC3MYAyLG&F4q z&WD=L>EVFsoNE*3hYPc0rImK<#aZe&l1y>67P*NQHb8}ids0<;Bb%i{NfjViQsTva zq?1L%vZ9IMGd4Aw$WgxGjtN*SprHYI2C zWKw&6SFFtp#p$}RY><}R*btu*54{5;RyDFdD#$N(kP3%4&|isZaGN9oAlzZ9O%nu( zlw-iitCzZn{6z@OJ}`p~)?u;n2%=x4GScUbDlS_q_y^V>g$ycNW3d`RM`{q&-7dJ< z;11FpWjJ2aD?Q1kU~!|nPGwIq3WUqb2xgmJVdUs|UJITEjctXR4tgJc#8p=qRtpoG z)OMPuS@jjZ0d@z>X4R1Rk)_I)>oq6l<$uQ7VQszyb2U&B;sh=%BwP%KVDc=YX*)2Y z*@^df@{^u$qhfrFhv3;pnq6;!=9+peSoujdkL$#nt+vP(X5HawqTO_dc=`$VG|nvg zhkG-J-`rM0O_lyu*xHfkpE~Zu-!nm&UJckIJFq-`z7CGh^^O@cRXY-&rLwT-tD6uF zV73<=ETQa0pWK0QGU8`iN4OGJwl=7XcUHOGXh-g`Ow=yywngx*%5dge5fiw&DpQ90GRVF z;cg2&rB31aZA}F~Og>Pcfo?L;8aCFH*$v%Bb6!VV|gsMv^ey`a1vLGqK6@LyDR(MN_g%D~}YwQK0!bZ~PIEI@8+Zgq?+XwmKjGaxfcO;GhwVNY* z1bYd!86K=APXL|RHzNOz8z+Quj>0#zW?(fOc9)3QH>zjAgNw>H4tpPRD&eO2j&%k~ z@Syq*bq2O?Pe0NL%PoA7F~~k7UMSh0AE^O7jtCedI>CcCL_x(suOfPCK0zRiq9X}& zK$qYus0Eu%V>>ASGlf8iaX%($OZY{rgVTbfwii16H~akOuPQ@VHdH*QJ`oguK+hd7PN?7(icXJ^m}3r@c|C}H zX^qM*kEX4iKRkxd#=Rhu~?x@?^$BpnovQI6W>kmt8ti( zL>mg7t;A;Ezn%t!uGTV`U$+pf|9#3D>p!GqIjWb+{}!RxT2s7aDIPp`q&m^U|FX#L1??LnucFsMhFV$$1)sGFTAi+fbk8AEz-nMN* z!9IUTrXQov;Y9|Y5XO>*OhDqTucpE_^sR^jgkYuUF*ns96Q!dgbH2zf=Nv^xg?>Nq zB)DgXj`~&ejRz5CrYv8@+NQqNAIGpMoHIqGv z;#+RpMj*kRhM5B|l3>K^APM#;q2n=Enf4e}Rynl=px7>@*tHMw*~5?^Xj*VW;afs?CnRYO8gW;3Q;X|0LS(xX^Y z+#V39kW*nbu?8N;zZ5#I))WR&qc3{qlSGK4%eChhVza`St9_|&`hz0FJcs6#CplVb zaK*T!Z0&6>c|FvQ8p@5Ku`3M_>q7PmCgHA9BAfZn`InJc$gF8+ z=bU7Zf6rmDP@Wd(%H7v0=1di24Orb?I+gWmSnF_+GrE5WT7=^0qTHa~h>gy@Z6e_b zNU$TJ%Xv`XOT;q4e^%SsO}s;EmKw~VpX%rg&?y@z_us?FXA6E8tyI*N@l{#U{MB}N zn|f9T$s=5+@?9h%1W)9LdM3boXz+=>C{&&?ku5SlY>0LH!!RS)FNDPa=~Gk@D(%cb zA`%MmfMvWgdHfk&H`MocZ9z6|wuJzZc-NeS=vwZm&yoF_%c?r_ z{kBvEK0bjMEYG|cLmgqF^brIxXU|XNkon>dZa#9+3)cX^_9LTW;ylZR8IjqLq;zhL zEx@dN+=VR7$-j=GFQM{x=bs+~WKuN*PYXE0gpHQu)Z*GsjC*H{|N5T|QH*;0n`Q3i z>tB=kA8%d%H*XV}h=ZHGskoJyt?55#-GB5UXSF+B;$*fa+sLR;#kZqiID``wE4NTl z6)NkXQ#;`LIJIqDiMOgy1q@z)_Y9Bs-23;^lL|{BU9u3m*_qrNZVU6~kN3$@1&|xV zX#jW&wXETArp=13htuG&9E8MUu3@?j;R7iFO>L4Rr$UK*CY(Nn@_33bwK2qs(VYo1 zjM|M1{UanC=EdQ8j=V|U8Kz_y_9TIHIX|C*riw zsE#rf%Ds+ulq=w#4%PLg96v)p9V>|nnIdDpV5virUBgJ@f@=$THaXnci|i%#!7kOAx&;z>8TmmMP45HY1yl4p4WJHSr4Z=-~IeDZ4|k8&4z9J;f60 zBCg@hdWZRTkSURTCr9c2Q1Mkw!pzd7!OU8xQ9A~{gJVh>_8JdujO zSS!u4PzSG_@ff4K%p7U_>tdT)-&VZ(T5J;#|9kDsKVsc-RR1Hbrj*`R3lp~F2ab}x zwS!_LXa0|G-wM%DD@09v(_6ptYTU=&LEiztA|sOjO*$hu;c4C_WR((y$m?>V+j~2e z(RBLnCELXbcKv3>M=XUTAAaStU!^{gcOVfU`M1m7}cKdTj4Ta2ry!#_B|3<&s9TQs+_g zNXy(Mx$O*dNeSFLdH9$b7O<0Q5;K&Ei&D*(MJfY0j;W^F>3ag4_DORXEOE8 zL4sRNGY8zIz^s(vMLVU?C^(h9w&_+DQXwTqO;^Bm9K)D)MRAQWt*m6XF$m$59CfR+ zpOw-x*058cCGi2PyU z%IZ`W_#jQvE9_TBt{8Y6`;?(NfOi0g2WfsTf*V|cZOSCDpextRU4}EVaa;$}v%leL z+v7p1l#TA7B8VJ*7O5zb+$&{`ozKGXmR+>O>`cUNbWYvC2KcFBeM~-#Bq)fuJdMUH zk%1|ViZzp9S$Lb>uYD%7yz-#k~Cv0{(%I6kby4g^;LH>PX=M-#_3|ICe3? z)^cUMqf0t9d(;9DWu$w~T<%HFMnU%B37Dm)=@+)#n>qnJ7aF(U>ZC~hPz2|mUO=Xe zN`msI@`ErE2dtmZs`ivMNjrj8dO9atR&*Km$&Vzqo~4PTd_VwLBW{VR51m&Oc)$Of z-c|~>URmmk%#FtS|Dvt`XF8^`nUSfP^FMVq(4J_=*#4C3rW{$&fgxbwpc+E(&^SnQ zG-=RUhDJ^EWI_dyIbs4L2V9hNpFAwDwb_LokcKK>cP?<sDOiM`Y)KeB%r`w$M-?yiHf*>{Le+OWO2V&v z(4_Fm34Qm@h{68;AnU9lzK^F8 z!LG*rcSe6I+_<-Tw77^VnFmiTx*n2+x?lAWb?JBra z2?b(A4@VzGhUZFSQ-de1gl>M9qnDd5_-Ri3?HYyx$S~J-@dfZUY|r^b9~pxm;|Drg zFyTSj=_6ZTLN!yB*N2jLSGP6PTz)I!m1`(e)xO<1us)N?N*IaHNGwT2XyPm_`$z-^ zt#ePxj9hAu&=1Q@rDy1u{xrb6h?T(gIlSKqpI^(09K~6^Lk`DMB2Crjv*`IY8|jJ2 zo)$Khj(ij4jy*2lLu(wKcW=+%sIQRuaLvSj{wN0#aKY7LPG?7E;$7S@8U3s&&XWY( zFBN9DO@b*UTqXtYWhh#WW+zYj3RGG%V;-}4! zHy(RQsywgol>8R4_2Y$$jj{-M2LHvoH;t{Wj1Gfcq0IRk25G6`2^V^W>%v@-JA^1O zk`H>&(9U9Y+KYEVpEaeS(l$|nLS11r35LQ#P4LWdcvf^FI@8L9_R__7Cw^ueN>Mw4 zwwyp`<2pjttL&(uzSuv*EQHy0O^zoc@aWvgfh5CwLyf zGQt=3T%KT4PMX7J(t{E-{;ggok9O{_|631)MylO#9 zjtDc$clN&{FN>6PScwdYW%O`(8svxT*ndOxsonF!_etmuhB-w5qa2x0Us731iDLvU z--^ZppfGLTP}gMG9ryt_pV58gZ&kp)@mw&0^8MRz>$fo5YOGyroX?0$_TR8|HsRrW zeP+7>LpA3T*EaAD;co%d^3}1{ktC{tilN3f7nYdp$h}EHD1oNRKx=D(VP!A5`|xLX zSI27cS4dLiB8|BE`9)w9m#x~mIp&~4>2LK4pLC}ZNtMWZ9tqmEgshJ#sFHO=(6ZM* znT0g^Udi#7w-+)Wj7uv1U!58yl?S*gYHexkCCM#{Y*GtDy11FjKpA$kAhJR{4eJR} zQ8lx~QdO#yOct#QysuopzqE(r<+(F3*CFiqc1C}_?oHFylODpJ>kZ--*}v*6-zGW7i)?MN>dWI&MWFNx5Jk z%uH!mB|PfsXMDu0b^)y&JTT44T%?WSW z{XI^Kgivj!A#6S}I**w@BjqpKO*mb#p3E20uT7mS*0F%usY}W0Rhbn+YzY+6)&urd zIt{fcs~EYu)GlH9`gOJym9QtnehTds>_0W8cnH0G&5&x^i<F!ju)G({wLCP=&u#fJR2V9`>3}oz_~vZL4Y6cX zr*0i7f^0BKq>%6xIG_@}v`4c0@Lv4q-)#3BKtm;_#RWJM9{q2q_I$+u2v7m2$_a({ zM~FRd07`#)sI0NXnK`#juKnUlrUy?+%DG~m&eLOA@ARE3?dUxT*#`t+EgA8gsbL7Q5i9qUQ85V zNo(bZzHJbb0c9S_F$r(SBC8vZx{=ylpoYiZj6~nUlFbCL;T5;!+rx0W{7T=uDmemaJpd^| zH0C8J7^d_L@Xf^pR7{Jkm=M#GQ|tVE6`6RQZ>wSs>tbl8@ffPmMJFgrMNqftT4Zbe zjW7|n(kNtKhEPa%8riJAobK&)%ah&7v%a z^hw<~i?U~KF3!7R9_pl#r%W}QCtN)CvODsfO!UVSk$lp(ScFBe&hIDNQM7a6RgFA; zxlz84cL`28Gn1)@gVVlIvEX>?IGFU60C@E(f`K6Q2+%5;ZogP4 zo#?Ug(&yv6e5bEQv$yb^nUjWr^Jp+sPWcc{BbM{FroZ@1)+3}j?lRh`X$$BXTb!`o=9LMgkT<}u|*L36v;SJeWZYGtq(#37i zI+hf@fJ2ZO86-;`%krkMK9o9}f2yWxg63iu$2Pee*>8i=?SK;+$haGiK&5tSr#jhe z6Q%0t%(hn67u?u$hG*EC?zwlmLekc!p|?kQ^<||6gT}rIxKDgm=XQ?OjH#EA(DVJS z8?bQxbz<#qUb@b&UT^dF)i5iQ?(~mG=gg|(MIdpf%a0kv#dl<$ClJI1$fj)lOP-zu zH|>(e)e|m1dT#_TXb7!PG z2xH7PAXl4rfxiN<`*DZCRQ`%!LNp?`2JH=v!%XXj z{@1DYE%I9T{foFl|01sb=hUJ92Wk2rck>+e4-GUkEPvqUPbLx)V@rsMO4x8({lpMe zFlO7(Zy};GVcSmF*ygS4TA?>)n3HreU31F}*4kdhQQEmGWqCYheZ>a9Fe^{9v@qh) z86A5adT)F9Zryfr`ab_WbAmj-$qR#fqgM+VfGWgMuLXa8s~*w^|F~<9rbHV%Lp}Oq z%uDpuCI&}DQmcgB8AM{Rm%nBliWNdEA2!56#-Y;BMCa6qK6GEq#m#~Og8?mvDFq(p zB-#%pZpKGWr4V(Ey}#PTlB=S4{PEfyjcM9V1&XrdKDm&Cp&~=}6av;!(@|2^WD^%6 z#AS>aX55O;`m9K2q*IVP-@b#ld{BGSY=yk)E{;on1eF@nh`qquo{+a{stN4U67gbc zl5}Gf*1jrdFtT5(e~LZ2`*HJR`JIBA+=#a@qbJiO+$S>q5CO-v#UCQqXr5h$74RL1 z4)2D5w?KM>Ru>Baz9u9(?d%D8)X}QdXeIjvnwau?F;zfoj;ljL zQL?}^{>oJGDmHed%9*^n&OqWiPdl^9ce(vtGMoJ@*ZZ6o5;4Vz>xQ(nuRN_jdDv`^wH3TEUp6M?>A}psgZ3?%EP>8iS-Ai^Itu$3q|~~ zwN00*-LyjT`_0j>s@-vjs=icICR{ZKq`q{AsOWhItmt`%Ae4hhuM*jZ{j21=$Q94A#?aA+U;KIo+CBro9jFtx^(F5hwbQKNty+4nPg~ z;xQ}~Ztc<(y=XN*ch=;W41ehVRTjgZGXWm6V`l_w7Xk>K_|5x53eSUMOz9`AdWq7F zsulSR+6t+QMG#j`6O53X0k|hNN;uWI+;3!4863D)R16fV00;oKtVO0Q_>(qg!hkHFj(OMe^Y1=>fkzP`O>g!B&ex;ur`kJ*LdHE zjh*yjaBGHrt3HMPKb*aTmu1nK>|1HusTiyfA;x%WGK78 zaz#?GyDP)j4fpO1Iyq*fCDM(fFZe$&_3@lC;g=X`JHVM9blhTJBh5NRNJNDOQ9j2+7X&EU387#&r2K{F3D>g`m`>7n6>%0Jbl>nQ_Sjnu#KAGINH{#;xh!*h=PciDSlgt@1bkU z5iO29d48xV*b~ap516_;^b#1Z)IEY!!jVBZqHx02gmW;p!z^hCBqJd=4^wzX+AEi; zXxnxa1Qh+?qQq0>!Q$c|3UDO%66~fFt-_CcE2}!8Oq&TF1osZ}wuLl_&1vDV)#!tz z2=VfSIB`u#{Dui@-TYgwN{!q8I1RpQ*F%y^Xka(*(!sO4+%Cnd9&Sz8PGE`|^5~bz zFZ_SqOOE=Nz`efr5;fTWlL{0;CnrPC{}zx0Wh=u#0YnehJG@ri*7^f z4w{7CLEF69_r=1eXb(g{^9hba^9htU^(ozR)aLS__wRJ4 zTnnB?cH_y(4gNzbXF_PW9a%E+8;zXsf!{l$CWqCdn{KnFM^?U@x%->=pLIA|&{n4^ zDyQX~c_xFCMYC+9!zZ`bSOzcRbPae#Xwvt3Hq$+83ga zw!OadjcfNS=nf3d5lMtXkiQK<+zFL@Mr%;*OLRQq_<_i|ymX{S_XnN}IGpOo`sL%# z43%INwnu8j+p;(|tjioFKfUgp``SO)HhRO}@dAs17h?WG%IylCF{od?Q|}fM-xK?g zq?r_cJl8J;UH*aacj}4$`+3GoljeXy&9uYYTVL1N9UAMmV7SX${TSczJ5s*$bMN^R z=g$#}#>m|dAqgW&cq7g(4RW!1pd#2ew9s@Tt}x8&DolaQDu9ozS-xW~pdCgfP(d82 zpD*yNWU2|&sUNIP1ENmC;FFct&#rQL3!8ZGFUSDTV&D`Dz*1RX;Ot*Ud@B;d8t)Xu71s&IcA4Xrx=jK`W0V%w{ zf|Ko&A)!b(@Y!q_WjMPleU6#9YWh*xAsu7OM$)QRUFAS*n^gCd@~$^drKvvO!(sYc_J94B(-k4UKz&cU^u8e(9RKZTRoT(z{}V`R z`wb*T^!o>pR0)&XrTYeLMJ?PWT)wz6m@PCOT7o5WuPDn)Gt}H(68aKhK>cNqB>sD% zK{3R+tw3nOV6tw`f9ieh)BE@7<3asLl?7Kl47v9aA2+BhqnQ42TFfEHGV)_-bx$%m_^heNN4a$US$=uSw zc<&sA8?S_w1XR6btK(rRl!$|ci{Z)}*XLudSrLbN@}G~dKPytze4)u?KnGyye}e^z zH@|?fAZaTFXPBo0e@IdEDYi2og!pKH8<&5q0|89jWQOZs5I$j-=_?pB4ZR}cDAL;k z`|WY+wmFn|a7av^TG6&{E^k-2l5|9Ons(qbUar36#^**OJUQV3=f4G!BV*Qr`IX;G zxXEa!;=-tsxnfiwMNBq3Z;X&*V@xqzSum+QZ_j%lR~~kCIBgjjws?I%7-T+jSwcfl ze)bFiWXK_4AN*wrP05hgoj*qiV3)m&kAm(ipBn<1{$K+@S$8mHrJ!AQV%^ z)U!Ibb`%UFWv%P>59{a`F$zbg`Mt4>nF`e&IqH&5TEAX%*~K?od>fUfjVCxahYwrb@sFsSKp2awtOE5EJDgTd4^}I{IXEFgNlw)61!gvO6+tu7gR^K$poe zhp@F2`>U2EJ>aT2l~DpkN>g)sZOKNrTRlb3T$`Thm!Kx2tQ|d;R>PQNQEB5!Zf09` z_rS8xJd^6SOS`RAXy*KMcBY@^9t>xVKND&aFQJpY+gXHpxjRr&w+W`CW?R^UwWJEg31$|lX}wV z%XJiGMBPUX($i#`N)}XCeP$`tmNG%b#nY<^FS9Uny!&iUb6Qn#MG*(#*{n?EM#_#1 zu2f@k4tJvysQF{KDiib9Mmq4)kC%ZsDE7>j;tbYmq7L4ZnbwpfhO&IH8suwA2?M=B zUoaRAmHJ?{&})=HN{?T~4mxVLh>}oosIW$&g6wpZXQODL^UiRj!uCOhSX^5oF4DT1 zb#TbSkC%*?;PSkxZw%1cH%!sN#4&PAwpUI`oxBd2a7eYhvL%?IGeQ^)uK`VJOt4(y zK-75V?U=P+;N#uQI(2A8s1DVAxiM0;(M8*p+bzQ%F!Y z&XCs3fn_bqmg$o((S(9iB7wN(z#I$am;Qk&fJY$Ar&kkO#PHxFk{FwW?;CiIj{kyO zFpOaarSIqqo!ZF{=@G^8KD~EW<*0lI{Ze85lGARm8V z3OWI4_c5u59(~EXu@1pLC@@@vP8eKOY)pqegs8b{)IzJ^3s}}T{C53*QlJszvz^8E zP55S);S;OoN=DK%#TPZaAiPYp&y_FUf9W*qIbYQshEfB<+r1UFxOEZUvK*;l-huvg zEqz{tj0t`_V50x$ZZk%fe;086V=XPv>8f8-I3-kROqdD^&Jj(h4k$$v1do>FB!^tt zY}<8^WWHE`_vjELi1~qFGA~4c#I=vGKHMWF@q9);J~IhyG1fD4ap9m zyiT#Xuf*6!vHWr5w$#80HJQ5%4YH6u{3{dwk@NrEpu+2 zliha`$4u?DjZE(KOFm|%B$n>fxjEB_&d0SY#xzQR$>mH-WqM;8zZnbVZuoquZLmMX z0&LHlPe1a=XJP?}5XCrM(a>pyi~k6LMYRf-!h}iYy2@(D>xNKbdetID2-3bCqfRk^ zBH%8TFesa%Y=855F7J6v^FZ8odWgXAgM_Ye)N+M(UiH^e*exhHduz2bYL9ItVq>V_{;)AU4QEJFG zqJlyIkZP;;FmyQGGc(Liqzf#q$>x}X0qK?IKPAhFphc^3f?@kodUNBGPQ9aZIOp`E zA+FwWlSPZ3DR4k!JEIk=+p7Up$nSHqN3>C61jDSW1=FQD(aHBM`J@k}W1=-A#?BRf zzM~BYM_|XaDb|7kdpkf}^3fXWb}!^X*XvfDfyXGtY2lLUhP;wo(=t{?Wd{0^BeGwp9$fgI{967EX{PS8YD9r*Ln>zK;L=xwYMGv6%~+W!m! zvp|y!HBu>M!!e^Z#OG2en@+?ho3Ssz%EjOoBapmZ*A8asL4)PV`$-YjNd*84>{VjD2dzMlb;ox58MnSedlF2_}EP zW^YcmHoa#$`2BtPfgL~)klTYN9Uu3lvJ0!CiIHm=qZ^|e#%K;{P-v29lxY@en32s$ zr(mWgQq1K5Th!RD>yHRWnK!FC+O;9QS51l!!(Ov-f z!B^kIxqN4pS(lHwJ1fzyhEr{1RH)S?l~*C;4@?OoBx%X5p~ij&dqo{U6=kNrWv2H< z?3I=k;)@`18^;yfBwlJ44K+;_&9lae#S$B)jQ2zo z3^1a^3GXa?V=Yps8%4a;Zi&iv+jMCE)Hnhf<}3Sa`@sIj4v$_aTNnALOjbUCN$ewu zv-l_FiAR<^Gr86~6x7i9@6-7p!f3-lA7q$E4e$DB7N;Ysp9Mm-hfp$3Fs{KzaNkAr z_v#)o>__%@@HgXK4zUw)t(gXMLmuatMU*-@IS6%Y~k*cIOvB(N}s%3N!1a zDr;t#n*K%Oe5-`r#h^65Vns7&sUAdN>5gSLc@ozAObEp{771;l@;d;?gAL8HfI4WQ z@1hR0vApB<&D~0O*Bs#C`;{0H%fVDTQ_Wbfk@&r94cn`{s{x^&8E&#EZ=#5C*_NU$ z-NZcIKs~#>1~F+Kfnn6030mYBuz!?Qk+|CR7k< z)_1fN9VraqGu%pjapYIwvfQQ`4;78WPjR*$pa8KD-prJ>%HMw&sqy+ibYO|QN}0il z+GH!!CaOwH^=4VVmp7AGi8E2Etyq&Vh*{+k`bCl?m!}ZM6phfOtT-5zqOKA6q z+Zjvf8yd%v>1s=^q9HPJ&rgPP{_L^RxLeM2iPG~5`wIi2yeTbvrYvlhF52-0&!h+Y zp7Mn|Fq=iBk*+Oz)O-}|3ZeCliXxC4s-49v5U5ilnw56xkB#j>Pj> zj7+5%)?hHwL8}=p$c)S-2Bv2(3?Q~6?~15 z1~LaHuG)jl*zNY2#Gspt%Q4TTJZhF8^p2B?3-;r~7Kzu6o785k+0epBpOg_JG zxa=;e9L#{K2m%W?Uxe6O$Sm)In=nh z@Z`!MYBX1I*ou9IqwlG{8bWp%=d|$Vc@ZUj;U#^QFInC1y2Jb~?{G}8v@52S5uo)=ct>edQGqFq_M@4<$iEJ}oh0U0PWCHvBh=YN6dJohdw{=YGR%=8T&RvZQ-eI{$sdRjU{1bjc9uvQg1M4{A~4 zGTKOWj+&+ocOh+>S=KQw(Ih4b#rw!V^jf1uyQWQ`<99{HCb#dxmhQ;2*#Ap*KdKo+ zLhAN#WR%{$#s^jGovv;$HJ{U0f!R&xSHU-BuaX~%A8j+A%_>cMzfQ27uJ5qPnHNC! z*)YxN%w}e;pHMn|NA0sYO|K&=2SFz^ZYXAes|w*%-W!NrJJk*By2Od&D5vJU1)Q>i zQ;!uj7pto?uL~Dm2yuVajuUs(g2O}TJG9Bh*dOE%}hkZ4}y;M@Alk5U(V~v$%%78vseU5uE zVNR83=7hb(*~tr_ZHva6Qn7-t_ZUUdcHWWeWEZ@c4!iNlAjKx$lAn=w4{}+j}E*a zTS7KDYm)-khjRSzw|xP1oO+-Vf0RCh*Cu(PT$!KU9mF0zXH8o3tlw4kI)b)P@Q*2# zrVlO1l1mZP>6^qvN_N>M>?-Z}AL`wE9e3C%d z#`^3%&}ZY76K?3Fpr=jO4u#Jmo4H(A)4&#Q@-q?t%+V5?_ZxmrL>e>Fyf~s--(j{A z4FESp#k-v*yp7xR0VEg~gj3or3v1BaPsv1Y7LUk?`_@bM#E4kd4~o7p*kzxmrlFji z6SsH-XY)wd$f)T~K23(zj{oN7{D*YqP9(mWJQ5twswqeSJ?2S3f~*Dn}~# z4Qs5qhEQG8?G8nuNrAZsVTya20@E3oJ#*fIlvRnd99uqTq}bWTdSR||mO2lXFHId? zwz&SyFFhZ$=i~a)#0_>v2z#{sn&;aU5V1}ZErMMSR(uj zv3eU^pgP$m?P)FUP_{DhU4H)CHYgtmggxB4;s?=wE*=BCU?h4Fx1onE zuoJJ|cdDNh%tv0IbiDrdQnNKoAmR_;Gmf&q#GoVg73u?G?I7FQd74#D3S19rCm!as zLTyPWao=B+V-!PQm`?7?B#B4rp*hhvIc|2Idz$TrxLV8GgZK^#;t;J1K|c^@JI=I$ z$bFLsYxZ}{*`u7KE8?|V%MJ`aOLcTrdYVQW?gRiqoIY}N`)rcu6>y{+?If0>$4 z#g5Buz5!bAO0CYNQbK@8o!NR$3qw;HSCg}j9G;wwC%h*!+#C~ga^1SG_Qy7g8-P|; zs;%8=J>lxjeDGnj5M<=9yjj{K?44@5#Ix8?MW2gv#gXi4`51Df;|#Y=ycI-nnuQA; zpu74a34B7Lv-~<-50mjrCXR9=e2jPG%>e}1u?~dP;T+^ra<>B!vyNxcf7vb)4&}5GXuw3UnbVEFe9}{*z$)Tcd-LeAcmVlcd|`(7kY~& z%zYSDuRjxM_Xh7HsB2A)4c1*P%CqDaYp_g}!Ck!+n5U!zvBeyv0SscOK4tsfDlG56 z-~tr${1%yOa$}Vov;lbk$Y=n_DzUGPr3d1$f9@3oiaUL182mZSH#IC+jAa`6 zC+nK0aY{n4Fvo!^`35B?{z*x6gW`}wzX54o@g_`O_!xtLdva%%0Rd)zGXlGKuCKCt ztp8~_T<@)3|II~sB!oH)p_c0_AI!U*`*99i}D zfsyVuI{g6HC>dhK{26g)4{=;v3{h6>3GpwA;++#6mM0u3evYJ=zOeCJP8NL#+a0*hHL!t&09~WJr$XvPk)!B9o(jAg3-BNn#M+Vt1G^4PD;~hkK z!K`_<4Vrl^Oy?mB%Nci8XWeP)C7s*DzhHgpAL~RjuZ~Cf3{9@+C^tX;RdjREpg8hSFC~Z1!8lj>sZwD}$rWIxbd3k+hbU)mGcsv*NPOsI=qS zVq+E7U7b$u?CzT;SKeSdZ`>9pW(;iXNHq!%ne{Nk)7nrvmGBc~+lu`|#@37{yS4w%hKIa-B0qZnCPi>eu&}V%C zAA&`naaPIDXncA~`KDueoXte(fr;uQ&g_JGzwtHkvqxlctCyzM{VY}6P@HDcGHRq4jSY4@+d2c%{u5Ff ziuM>$F!s6Xe2^U2k2E7*Vd;og#-*KO8G*S#scbG1i6Ze5~J8Y*}u-p4PN;(>? zY#kh2SI0Jx4*RZwUfZ5X?NmuOoG_dK0wzeu@dnE#OLD-l&$RV;H=~al_1Kz9wf@Z7 zN^N`oR*4er7|Ir}Kv@J5^*Y>*$sDh?ta`o2`y(>rIaM{WWJv~;?GffBH56KT86!dR z7l3l$VHm_#J586_Qtn58qNNCdC2F}QFl|nONzzBjCLqUZ=fe;94cz!ROp+s3|M)f%8IsYyF+H-C1Z!IBRzIHWz zpWEFR2%T$hX1D+WlNN-I=c$Z`hFQMTo$=kT&pYy8v$wvm+hZb*V459MW5>Bm$41H5 zqqk^g#_53WP_T+mEkI(ZDO{Yt3^9<_oG-}4L^N6FQF@sJOkNYED zS}osrl_rZ6zzhbiZS$RSJh`k@ypu^QotLdL!O@#8xsu@C%n%~XDiR(mk~1LqTH;_> zFa^++=sMTgp!1r_MvX&a<>j|JyK- ze1rS~my=~bpt#*et5|D!2`$qCUgzc0lBZYNEr_GWv4U!0drEnTsMg;IW~Vo(P0;F~ z!9tyTyrv3g4ICj&Y6=CskFP5Yf9|54W^3tU#o&|PxbX8iSS#;mK)&+BCqyrPGA4Yq zlWfc!CyPj=e0HTI6<5{*L$46O8`e^DGDBUOOr0fU>XRDo>Q;5SsP!xrG>?SN(zJ7B z@5_l$|5i}Lxh=E7Vc6BY&>^8F%ZZD25=-!wamL&RjfM~chjdf*>iW91{Hk?Z6i+B z)hB59j@z2Dc2^0!j#!j_CxAc&JX1o<&6>}U9V7ZX`bccEO7T0UW%eFXhnxI{3^;m0 z3LK9h4)#;Mt98B-PrpE<4MQ4+?BqD;!5k)N8Smt`+anf`Wa?8$6hTx-oWe5!#iHKZ zMELvEBc(pdDJ1_Be?!W}dP(BK;+`E;c@*+%;TNhRB{H-SuSqiyVPxDL)b6B9XJgdc zxg9022lwCe5sHVgm-Em4pZmRZi#22&p(FZ)iBQABN`3*7b^#t|?iQnGW5I{}tKod& zEI;*pBY@6}bGcLgN{f`|NyOk2yA2-Meue>&ji2H@UC?neiYhEh5DUwqKPLc$r;M-= zZZTmhyKx1#iKq{cq@E0W6wkQGFcm2%r?DV!eRIDW-qLHb6#2+63dmMgajL)LKIPof zV#-?<~kioEmx>wzJ0BVN+~+Z^ZcZI1iz zX9EAlP4UkIgPOHEiaP2x2w@UzkWqfPVg*I2B&68yC?Zvg$U>kcP{igq!j6%FaTzXV z!TOu$zuU`sbF&82^}n@j`&?^2%WJ>4wnRuE7W`}8@AmATZw$~*((7{{|0n2NP#!7n zhz84Nt@DEX1qoE(Moc77LbfIq!HOKZDhMc)$6Cs;MF@ZL@Kk6loR35 z8>9CtJS0sdchY8oB!)0=AH`F(*uR)WGJL0^-IN6}7ZzcpgXsH^zkYZQF{HB=SG7*t z03F=!DOkOaH2;bf*_aw`D$Q8d_oNS zLUOX?$$DK6M(!u*s^OT^{o9qf=J$miT&C?)F5gbm=jF{R>@+8NzFLF~^etQl7MX#& z5c8S_A^T)?GFR226vcodnX2^R>`viqM^(b@3t2~|pb(sD+^m(@NQyGj4@>B2bQWIb z`{HCZ(neKSzNiW;pt59HnO5OCr#otsT>^ZeX94Kg(k_DL9x-N6T+hg!LY5_U`G$dVR+N_j4PZj5(DdjFG zS%Ga|>2EV@8=Pk(x28F}(}UDXCYX6xe$TcDTitIkBI_+&5enr>K)$XD`Q8-s(g2*b zk6UbsC!u#9U-m={PriV^*7J-NLxm~aGNnfK#(out)dvm;*Qj(h3yfMOob@{-yFEwt z=nFWOZg@m`nj=085xOZ)zcv$Bfy0F@7Lr|0I0{ptLixlo5qXP_p7}9AdekeyZ@Z{y zJ4432^5OotSEqKimD`+)bCO%7JYp$6+}*T0?Ag@k7lNn{$)T|i(Sb5n-o7)IJ^|UG zv=3a7zaWosQ%Yu8VG-hLLl9F7| z)VyT8&bdzVFPM62_G{HjPsf!fJbPBw8Xn_k4}@qN_ax;L-VyDsf*c=62OFXUM28p4 zJz(%-m+Jfrm#B`8o%qZYiDk0PQ+8nim&xuf>WZ#Z&%CdqtMp)_ph9qy_|S2qMV?My zGAY>=|50vpyopjjUD@}H%0Jr~5q#bo=T#85hWLHIOhP;^oKC~p#kV;H@CldBEiOyT zC^rOmNiE`Pg~C^sc}1qNt?&oLpRj-b9KhENdVvfub*da-#26Dd4j%c*asY~yE0nEv zM1&Z-$VG6ccAlVfC!vK;%z>8}ZjAOvy@=2g4vu;aO_$2>Mu;}1$D&{QF<@DJ&{m*_ zTz_vmvYYdoWtx@c=0a=WI?Uo7O|bC^Qd%)nsLDcXgWwH!oJ*brgybC!qq_uhFXCjy zGMg|_k39`|oMY;59mW`a^9UH#{O&$^>`94YqYo*yLi5ie(@yHv$R7WW9iX>CpV)L^ zi^2{p2#5HS!dkX)7CoZ4$s@-U9^@lNxu2_N+pg+|ghG}@Z66-%s#VELRH*Zw3oA3; zEosS~nV!}AYy5UxT4kvnBWuu4F|Mw41U#yA-4@Vu6WU>W*8EmUbENk3iWZnBE+-IqyQ_^+)+OS>G2o+r1zEPzJW&usg zgKQG;TxrS;w7)nIY7P#bI5d{T=*tGhE+=vAk-y$XEwc26ANuy^8oe7Q3>1mF4v=+9 z0&hK0@#yLWO7{Btzy9@mz6Jm6y7fKd9s0j;Ffsh|d#>^g{rU&vhZZgd2^zYve2eM{ zxR?T3OC%vMwSs{dvbXd~3)pZ`QhA8~i23bTEJEz;=Rf#9)hS#hCS=}nZnLj5SCgOb zf3CQHX;xRw#j7L?s(>!0CuGv4HA|H}t89&CM@oC-?-e9JK%=Ab7(vo!4!Wda2Ht(! zhAf8Z97A`yDPP2{>ictSiwx%F{CDWES7P_m?>Bd0JG{+OfMB)cAg`-6#9AgS#b+_D zgnMi@O`|T3D`{Pn+qaNHOE6><7uxt$UYy3u=k!?FvStvI0Wrt`pYGwN-wX2vy>f5X zjr($B3A^mEu-i-`nswxoKY)}OWL);9^J{-%cn-7LDyrV57hLohcdE+pE*Dw^T1GffUUSi_sLZU!!}R1dEt zrOVM`7xUg(s-n_%Sw-GcUth12f?>g>%@-Lc0#IluJu3IHQdxP# z<3iC)(5kI805D+mtkFbehKQ?}h31FW?Gf6rix>wu0Ea9htXdC68SPnHw(`OFOCE5* zT8A>pj5-IuLHIDr6uVI}1geT+m#BjW!5xh{H4VvdUUi`rM*TwRfe%vhZt(JKH&n-&K z|6D93s{aIHQOZ^b<~u2>s0h#mD0NfQstPJJ?}fk@9ljWE*0N$J%4HUI|FSRq9LAz# z<~js0R&gK^}fNS9`GHgb$vyH^=`j!D#x zE2?#!foT>WbD)K~di*Me+T@g{?5I549SIhC#>FlU-A#qr=}iB^C7-cHRdynyS5u0m zLRq^44V#nb#7=b}7NM@Q&wx9NcGaS?-a1(-ky6!~GVz6)^o=Xf2+cB0mj#Uvir%gt zQNtQ^c8dtSoWe@gsI5T@PC5lk;<(G!JvyOshxL5QFnsP%{I;sLT4)a5WkVhm1INNf z>1b@pputuxUAA&L`AL;3x`4VvJtz_xct@ogoW**WMHXHd9$%#mO2u6%R@NUeK7Q-~ z33qjY3^Q~i_%CsU^(C4^y-E8P%N2D%~B^Ok+oWTlrp-v-23-0#e zhXP4=-_v5)m{*u}ij^?Rlc0Y24!bA4*;PbI3H5@NJ>la0cGql2aKG*^&^I$Wb&R@| z64fBBbSL6q93Z^smJZFK)o|G!+ho#5q1E_AdtpW|Jp;QbHK&3vsgjn%7Vxg?TkM`s zs+)7i6qm66RZb%WxwumlXCH8mq78XIPD}B|Hi#dNKd7ihTnuN5IU2q~A{##HhxMgE5tHnSIp7oSMI#B{B){TaUqi@{YjmW)hH5N+eSV-p5+{=N7dyIRTk>d*b;B~m zV=O#?z#fhFU&0nIiH&^`EW9||vZ)B&QHinSHv^-Tw~q9y&bOJ_=aKWsSZKL-iu8l{ ze-`9F933AvbtWX=I*Az6|H*Ac<)6yPzZ4&(sM@OIh@$#|3$d-+z$_qF)Sy9IAuFLH z+JK1=*`mr6B%)&PvX8US*tjiDmxlBmAk5V@TRFvM7x_Kl`X`TaC$SU*f%s(fa68{P z=lx}SnC4G^2a%edM??8!+(s18~#iQW{^XRtsmMgjCsd;*Z1%FAGDJKj3LY1V$4IY?|kL^ z%sqH0pF>6pEwgrzh3!c?hxfD{p|cD4O*edcv?d(cjgM$Huw*zr0UJy@%J1y#zB{p! z&5tN1GFcXDp(Up>UHRry$o56zdcJh*(6CJjD5+?1u~Ki?<5|VR8}s0QCX}Utp)P<$ z`x)jq%DqZSjSEr4HtkzN-sT*r-#`6w(|8vfBnw8Hu|{V0Qv_|-RZ)GW=bpD%LpD2V zi`zmHyXFQoi(6MKyv$$hu#@V{Lse5;&!RtOz?96e+!S}muI{_bAGaSK?ATG4K%zXW z*2xB%HJjn;ej|5{+sU@C3HnMFvs|fce|sPcJ!{>Xhl}S{83Gk6_Z^`Y%_?l}4s%J9 zb8=plEPIu(5`OPmv`4sq&yn`Ied_ig;J}@*?=hDZeyHDy2qSUBrs)|M_b=5)@dg+& z!hY$mDok?$P@$yp*K!+n7mz7P2Zq%4EYgKF0e{0STVC*Os)E=5oGu;$dd>*IRiUet#d&ScfNj7R)m}Y)rG_gCS!UNUv zOO;^SLE!<^h-aJ!IVbddih zpr2!nBxodSWZ!~MTX)PkJs3%j@I5}qd{XJ%zTd@E^Tf&)db^}7E5$8sgMAFwMadCc z$j2mldpln)Kq~%&{y_^6N6s1fZO}mcXaeDVar+V4i?QGpt#*eBjI@wF$RVi(0KPfk zeT$8xB!CNeB0hgya5pOi|B|NQCzMe7g*W0SiZ3~Uy#yf+X?nv-GBfw%>>BrCYY;gdm7{>$rA|?9i7`d1w`V zr$I%I2BZR+{-6GI6VTvThU6OJcbFYigK9V$shN|KATXMVo6&Z1fcOdDmW&94dK>x=DrU&9{Ct8)4OEJJ9r0Zu?^4h~ zs8Y&7`8$L&>bD=U9{Yl$|L9iDWeGZFDq%_D-JHJm>+E}iJz*KP17yW@yjH$vH97Yw0nR<{AI0`L>Nfjz%*a?6w*&ibkUN6r% zfL(@CzCFKuV{$)XF6gj7aA$)6HLRKbDJdNUeprp+e>MgpmQ0L`&?zxGOwsL zHWFQ&z~j`&$hEA@x0xd!jG?R+>l;DQcyVe zj*E!}%^a<84us9d+shQ8I%eUpF++29N6ykU_^CDQ)xJalZFbvgdwv9a-mx%L8OArA zcg1J{?1(d?)RTEBjJPZ(Df5u6Q|2YB+ECFOZeN+=&s+NTEJ+2r%hijTotANHlb#13 z=Ym(*fk`9Lnw+{xe68Foby=E(IEF?zOO6^@%{*^?Tyb)KtVsw<<7_#(?j&bEP#WP4 zZy~1V_?~U@0*H&tW#JKu)NWB?GgGT@qYsq|(q_m#JoMjRmA;^Q!%qqw&XA6ZYJ*P& zjdhTX_T`5BbN%oF7{5!2fvAB_hr8ODQK>!{+R?(IuvJLmp(VYVQ4)m@ez( ztA5S*e58Wl#}9`8Hrn-{W+cx4er;{hgz~^yM*0-zTiLOJ7at*mQkNhoJ6xN=BPUpI zEF#z(NJPO!j<%t06-W)F0SQn7rlmaxD^Z|OxXyC2EO1;G;)H=C?a}sfMAeE-?IK6r z@a&ph&|>>+4k6nu^L&`i@;~XxaVP!D*Zn2U-gz9E###u(7&8w zgdgo)S~Md5ra}SivlklfCi%eUU3&n6Y7!yj9zSG_Z@U?h@(8){dq#tng04}l&=8rC zT9|x*NTpbw3?+d!MiRn;)CDh^sJB zWGEe?K!wJoAev*EQ7|WiMonXyDg;rXVM_@??Ghg8CC#Z)00_>mncJu0LFXt#>Cu}(NeRiC1lC4fq_sKnus*G5b?GGAqSm@T^k#6=(}uo)^f4#+lWwWqm_3l@ne_xs@bE;@*&T@F%P@uotm_EG}KR!lHTuM;45jlKD*KJO{4IV{-$T zPoBDfZI{slB|?J)mmO-d*gK7U4Gp&CuXdIwVuWcRsu#C#?>iG4aWg!e%L8uIk4%SY zCNwbi=9Y&&@~j0mSbyuW)l2KsvqsaXpB5;VXsloxJeOKqYb*P34qU@Ec(i)^Ov6?t zyiz!99vhlSBc`7I8=nq|{7F+?G{Olbv_CTny2**srNj<>$@WR=`Z}uSSNH7iKp`g| z3@{}-A2L8Q^89&vdd9=Ij3%yFTK~+=@7t58oObz#U$1DP*3ignj_n@6 zg!0g4HEKu(k?&dCKHi>IOs4e_;zkX516Im1*n|wU*#g*rxYq7~BYvJVOD#LKPG5}} zXj`Yz?^)lq+}kPeGn&^r5`VoIB?L%pZ757$*|ZYy?I_t0m&c71Rs7MxeZa6eL70m_ zI~F#!BEXK*(AK5c!ZSAM%y>C*V4`w?LN9$Q3JM-Jc8a) zLWhQ#u*~-;IQr&p9FCu9=JpH!p#XNc3#Cll>lK^eIQY5dtumpaqyK#A9f4Wx*kZ!W zOx;bHXq^dFTGU+&Ce%G*@cNdZE+cTDz-}@sTzj=x*py4;IQ(@5eg7$L4qas z^msF2qc6(aaEoPryRWp1l7v%%EdxvHO(d(>Ae_AZ+)GNN497nh_li2>KbfuFm6&7E zC0wRDcn%sSR~4e1#$47}0{?gQHeo;CKPD8$fe>Gc6JHBJf0rFvw{K+b(}GQhfy{tR-lQQ`%i)-9AH!rT+LwjywzI4SfHwSim~fs(rozCGA{x zy|IxOopp;w?00yy^&`6A$QQMf*QTEuBeA z!8DJ>yC+z-F4B{v@A(Ea89%9I0D7azI_ZEwr6&Gbv8uT1+e{qxU7CfZlr!)7?OZP2DySt^HV9G*Xxns2QR^TT0 z3H78k4)ed#{U>c+UJ&^G>Q*>>i|XT^jrA{wg*lfx#>23)<9L6d8;7I3GsvYTv68dCpD(T^WHSSf1eJ!tg&{ZBjX9-{9(zPu5FOb4eOu9N~9+c zhonA<5j12Q^m)<3wLz6a>t(@XUyAo`R$`h0^oUXsFf|zYzJG-)sz3Dm zRqkav{Wcp9uVyAnGYP#$Xf*us4f56ihjNQ(!jo~#6PC~oY+M>Tf_rPPOUW4`IRgy2 zp?#Me;E48Tgq}s0q;VV}>++XK@iKgxLBO7Y1{$LaT1`}nSojYyD|<8-3G!QOituF$ zsl7!xw3^-NeX?6@g}q<5<_7E*{wnrJO$FwEqG3V5*wkmVPHvTChRq4IhhnfQ7e{Ky$=Igl)d_Q7E)|OsOtyGd!&t_4m-+g z%Xd8nX#?fsoAPIpt^I~`hz+56M@oVSBb^}0k;wOjFbhj~gW@XBj6KgBcU4qU zlU1~Dz^zfmA*+(}G1vtdF14^yR?RyO?{;c#1fQY=a%VxevXf%+3)t_ZL#*S)91D$q zU(CLCbNiSJynDS8_Q0^<>KIz$3`s#AI~r(XFE}dqQw?!3IO#2+3}GU|M%i$EtH4LM z?jCZ=GD#q2vzH#vFtm(9;xn~OcXkfSBR7+dXQ-ls^XS!U9G%a0t}lL{ai#wy=*ZzE zs}T=|;H@IFtFUTbM>WElG{!?KvE_8v%ycI%iJSZoOe?>x)o41UwL%p(nyLNeYh3`F zuv9gZ3xdgP`9Qv;EbS0M{V}yfYk1&7eVa9IGxhyYvjn&ySxJkv(U6m-oP#$%EnN1Y zRD?|}S^ubhEtBP8C&@4(@Q8i+F6>A}K0a10E~9j*bZq@3sgvhHSYWm)-F>v?EugvM zSY(o(A+j=MrQ_v`a#^ftWhYx#f^4}&xe`tHsb|vxtolrps&j+!kV@CQ#wvs;P4=3- zj=5cl<>*`GO>!pwa8is$qtnI$b2K1Em&cy8Y#(XObwfPDL_-qS1%dL+*N5g+VbHoi z4e>PX{E$lABX++#Mm2TW2~r=SiZ|ZvAwQP5JB85Vq*|E?h?Fzn9Ce@+!xsH^`ne24blZNXPo>i5G{KJ5(Tt+#c$-)Hna&rkJf;o^4JrG7-;>P&nIi@ zimY7=S+4I*iDoksNu0lNFUSFiC%McAyn+RZ5`Mg&K0D!@EfxOGr~2`R5d8q5fMlPy zi;4U7i--pLdSTu3GhQ%<#WwL9*B{(?nW0F35z-!Z%)C*E+Z1y_?pjz6EG3(i!61rq5cYX+P)tX@kF*R(fu*WM z7>8}$-li>aaZS%3hpb8@yOa}Rl4}rw8??-L<*-?x!!Xp`dmzEx(Ss>38HC;^%5yLZ zsCu#Ct+T|x**C#?IOdvqu@Pk>yko_|)ZpL!w_^NEFt@-D+MsHITrvOI5%a(2P%;+I ze~zL>YUB2x4Jv;km%K58G%@`&xE%zUz0SNn3Ry%jNkkktowa({=0I9I!&U2wLS9ZE zb}dwR&_EFKPL9xqQ$jOJQgZ#x)0AJP%N0TF&yTkk#2yxnyAeYJdNTs_zpkdPOqECT z(?dq%)(`!;x7JY+?(Ha7nm4{U`Wdw;f2mTked-IR&)9Rnks09;HPX7N9rrLsWtoUt zSPeBQPqp-%i_Ac%8iU0d3Q}JNG-}L{H-$7)4mNDLO9pdXKOJyyBjI1w+|Q`K2C7DK zc7=f<453qtuiSZIz}{(*ie;0*jrvvWk6tOSm3BHS{@M)=8V-IoZj2pnjFKU`toEL$ zWIHrT{lg0;DnKYwR=EA59_T+!iR04Wd@di-a@3YE+!Z&r#c}cZlD>PKK1X)hduug6 z!TWw;@;CR8J6}>>4OG_*YDIQ}pqJ}|tPDyPNT_@gK9GJa3*-E5j|C5Ht;H56y7euF z6&iug%m~mLX$Bk&;L!)}Aw6rdLnl5R@0Ro1${Twk z#E+?=IX3AT>NHl`I8X!X`vNjXB1^Ffb2!?9d{!Tu8FlK_r(!i$!9YLYZzLY=vd5W~ z&vzxrbyV_3n-|B(wMlNMDQItK42e4!)%Z*_)9QD6vTBn`hrb5eg{i&)wI_DLwRy}e z&>A=XElY%aK3@qA)Eclst>Hg|F#q*yWFh-IwdWrk1!a^!Q*-e8*i@VjVH#y{c1CT~ zn#u=QQt@IiXZy|k$%B^+SN6&Q@ilQUWa&8BzBiHpi)5gh42@m=ab_0l{Um2f)}KH3 z@08zAD+h9ol2Vv4>2Zz^r7;u>Qk77L3L{{OwYaJhrVtn#l=&i!6>?p+YZIXQQ*^)n zKJe{bxi6xf$(ZCN?>gZUmpv1ouKQJf4hRhUY2rP)OO*{TB&6G9cgmmzJeF1zs;T3! zt8YM*olbMl!yT86iDB8Qw8{{eT|IG_X=a!WvnBNGvD6ktvueILoELrR#ZxoTeEIAu{#KNR50ozUU+Xj?bJW@-9VoP#3z1RO%TofbcF_|Ev%pVkx`u`u_UH_j!J^!+U z?9zPpzz|3I!_#4!uqn)hkER5Pm}(1d(}~Co2gZhjMb4~zlYW6T9y}_SnH93*_tkSd zcMp_mPj!%|sGKtm@$2(1{+!|aH_?R}AC7V002xm9tEjw(o4V%W@}hdz>xcIv#HS`t z-XJ(V!d^Z-<+0fx2{@>(U$i4I02 zfll&Q%Lt3=!u}q8Oa{stFl|zbBm=bPGqSoV_y^x$imk}lUoOT(vu0w8n$@>}ECM&n<1X<>D4t!s_q;eYv zWq5%(zvKefM3t%>?DQ9e-Yr8j+*HQt=M~H#DcC)5@uEGKS}vYs3Np^)$)DZ8x<;Mk zYGyfD0Eu&1-;2(_m)UWhdPZJrD|pZTs25x*hng1gF`U7X7fCX$Oy7&EiSzD7B4yB5>2(Gdc4( z)hM8AP^&4^16+0(UCn;Xvly8}Vm7n4xWD$J=hR*hqY}L6<63S}+q1ZLfXA;i=V6Sk zeUFyQKptQWGMCHl@R1_$N~G|#6Z^x-X<-*$wuO$GfeEX+z{|0(Hm7l1U~S(_n(<3F ztheZeIu9fM(9V=gPm{}2ia&(G7XBwQum+8R3ZB-2+94Ux$#ZZeNsSq)=7G_{qo`sRo7@2%2fXrqU`^kapp6st4 zJ;*4bvIxRifWheTX0tG72bZZ^V*JXalCC17th0=EkR+7zv)NSI2({PE6;OgCp|@X> zO&_P%)<23dwaR15C5=HRU(GiWP?$j#Z36nZZbZJaZPe_8@s;iq+s@w9#z@|j#tau; z?0bp~YuL`;6vmX?Gy*Td$C1V-=Wh|R7jHA!R6~!UVh9f5Sh|on=ZNhB4 zwyHvY$yPX2mKCq^syX*4W&_^&(&Wj2sbJ<~=~s4#bhq8YT;r|?>CXjM6$qx7Bqiah zlFt772`?UpgUT_FMB_zymbsthK@r<0YjEU?KT42>QwX@0d!C%}3iW1I#(>U;5aNfT zV(cq=9{5<_+0OuMWa2|;fR8)1n`tDafe)(6Roj3c)*6G{;~xIqC`Kwv9&1>jnpeU}VnN%m2d|4hOh(ud9=S=R@)uEE-)9VxU@8yv?nrc< zXar{=HT&Ryi!k$Z-bbOWRmG90;@CScM9MBcvd}4&;P#0fDap46Yi{+HQCSq1Z43UZ@<36e@`t+VXGeG{7=;ka<3-nTw#(Hu-|vn0`=7jm5T(PK z0+2KN{iyi#1Cb|~4Fbq7evW1k3a$jWH|g*>z8&d+#oXF(jMBNR6;WTTC&y*HvI-2 zGOi$X2(--4(WNv->M6w){AIUBix--}{evWT04ljaZfd%gMVf+*n5@h<$Trnw^?O4- zX$o~`>kg73PcCzux>np6azy^h(`4&289u(s(^dnA`bN)I`Gyy@NN9ZNA6rtCTrjpa5@gjUb&f;PNd5Sl zmA^;B(rej7OC(U~ZM3cF7=?Zkbi^N29a}UUA$^_Z;Ezr?iPveye6Pt1{h>@sV@TA2&a#uz zj>iy;koFf?i#`1WZ*7YJw>Qecn#ZIyLvwxyr{xY=Xq?%^LhThGHIrCClE<)>w%=WZ z^IG!mAPmQoHt*DJl87q(d~9kfS@ap5g@XC8*9%aSuRUZ_nxw?{fdQx~P#MCr{Jj$t z#p$Fxr0c0W)cA$9m297-+S5^eh`p24XdJC*G;`un1+vURrX^_v4LcZbDhkZsMb2#VZBkZ>a^)>%KhedH#XwPMQUti+tr+moZ_T7N0PMJW$N zh!aAJ3rf6@CG3x~ZnXRgVN7r6c6Na*ZoFiUQz05*Lth4aDhc7XfM~*OY%CJP~ z9!-&h_L+u!ejt@QYjwhaX8k^8T+hdCSe@TInyH)FDJ1MW;Am`T_ptPyymF@m_|(R= z(&kAdIH{egDD7C`Alg1E4Hi^rpRpQCqry%4&HCb7>(Fz8O2pV41lKP4bxt}PoPF;t z0UWoB4ChrJyDQ$6eKlVUR^9pzoyS(tqpoiNe8}Mxn{SigisO)N#<%Y#5Rzdg$m|i- z{rj0A^L5MYk@Kb_#?DcRl(-v*S2;JP)j}@cj~OCDukwSBlas4KG_SS{vgrDC&$E<` zt|sHyPfKQxV|vTGh;}jszH7v0xl;ld$Cb#NU+N(lYE^5-hRiU|r9bcNW3MK1O-)xM zYK5wvxohqN;^StIX!oZO^_L2EKpAV&bujnez#Sr1q6`_WOM_PvM)_^VJ z@7V&k*4TGXAfeq50b6c-Gx!s#yrsE-F4bw_LIeKAK$_h5(WWZ)5dRjJPNN%&(;;EW z@nR+1jPAg%VvhHEGMVgVQ)z6?2rR`7$R9a6~`$O;C*A*~~eY@~eOo%Qzq zm>K5~FI9-SPsa4wXA_tfHO22AlwAC#v))U)uZI2XG*Vqi(YU@f>7}wUmVP~e|U|Jpy;q4Q~Lz&?Gt0SRVo|8au)*8si$qfRL6gIK&6{PuH2 z@Md^;MEfp1o+mV^oCd;Dr8Fu^&nR+LiuLdliTd{Vldp1<^|bQF@{Wfi?ptTI&? zf^Wkb&nSJ#RkT&+n!oY=lJep(3@U$X>x(o88V}xdvFahDjt@lkg{w}vj1be})WrnK zaDTs?UwI?DS+GwwqpkGUTOVGRH1E8w(H}oU?fm5gOFDOFJnJ}~Y1J>+rGsDfCy3Fs zet~NjQlw0K;T^9dXEnIidv)u=(k*l~{y-FGwGg{IO7RE`JwA=35B8P*fYN)I_}C^+ zi1I~fd>uxSgruKX23P!z;&ROauGa(p)jYeEH40R#3_goTw9OBS4DMLKV89XIOaJj|=5`jiUd=B~$A%+&r=KI3 ztauzT{^0-m0nGGfE&oN#J^t_SO<4Y~I`t3poPusT8bnfl7|B?XwG}+rLGhOeJ&Z~w zQYc^fbraa&;J@xo3TsY8-FzK=U50+{NAU>c`pkX9OvU0!+?+Ije4R2#@aKJc0Q7vx z9ScZU8#-@+ytXpr@ z-$85MLyfDs&F?ms0jwoBU94YzA>~Y2@gC5Mg+f!pj2-F37?HV?H0;b2*tx}D9Aorf zhHottH&>L2OL8tOE{15!Jf2dBP6M0)2W?$++fJ_IbW*vm?V8P3O3Vf7Wy|7m{7#wL z4-*cUS-1xV9PyXd67eH_l(IOylBa(WcMm5hrg@UM{eLHFQbaT?*PM8%xJx>U z_bfDomWMNEE-@sG#pLVF42FWz*HUu?*dauJ+|!=)xB$(BU16JZ1PpUE0Kn3-Lf~^X+MIR@_FM zD4$82#)_iz7TNH6JJM2lYaxpDoP;^ng>&L#U#VoFl_}74VxFegl}<#cSSt)nGNvhM5s% z+ck4(xuN>u^MR$Ita5LAkj{MZZ{Tgg@QdwqM8hOr^U*&;)~jRkmi@3Oy+$W<129_Z zXTJVxE!hu6FVcYA?_r=s(*K+r{nwxA->Q?ay}g60k*k%1{r?hxC5%j59h|-XxsmA7 z_;6kqL;1tdOe&dt-)|35EVPL+x8g)1GGEvf9nS2uW~?%oI>YgXv#J~&L1#wR)`;9A zdV>`h$QB4V37EK1Lhwm2>4=xkR0zG*;<>!MYI(if+S)x$}$r$s1?uq?hI zq#>jrMo1J!MlFUi5DKo*S~yZ7h^E{(j9QsbXGkAJWe?YiIb?@w@+2lC-cy2*=r&(V zP@(Q2SFu3ALZ^0Su41p;9yxy*=DU7!z51- z{4lD_2b_6VXscG0tISKIRiwI!Z>!Kn2egC;AL~w}cD|#$8*H${dmGHf_7ttVjbsr-KL=$r7ET|BjS#QR-b(BA6Ss$nfWD!#J!8ikE zw}`$8yJA%2@oa?c-hKLJn(sPie6#OiacRKd%om2Ob;!VP{(k!Ec)w^}EhHep(FDxn zqK}-&KB!n7BR#AmIggl)yIvrSm#)5Z&2+oXU|hY2TS^^`)pN$m*vr`AlVz zPMdu%+`9Muqs9RLW-)03UVnp4S3{rP#`oM5+LrS^6ACs_E5#A%7-}Q_2Ec(+jewK( ztpkli`A3|HPSAuMVszQA+g%2O4JniXc8I>+IS@yFtzLH}b;G*W- zHee{Wg#y@vAn4AJ)oxlkvS4^cv+a{XCy;p7z&RWfj+1Yyc40N;N=L|f?zT|XxY0y1 zyq~V$Xt!li#+yRlAl*?KTk<&x8H|PQ*LT1HS^RV>6o3Poi{|B<$D4PE=Pgz|p zPglP(KcM>|5(`f&&p~bF$u4)`^s;T`)<`SjVc$^f#I$Nk2(Iz64g38O!V>oWI&ndY zBI!t!cMMZK{T_m{F8dLbw>q%_27KHw5+kFGhko0h|k; z0UPiWLn3D8lk{YavD77ARV3!g;2yC20zH|2#6J~>GBj3C06*ptbd&$Q0IUr?~n5}rxj0=Is-(7!-xRu9uo<~Yaa zaP8Jf-`F*|?^pluP?L}?IZN`~brh5Q=ik63{r9p45ip-Vb)o(D%h3Pf32DLlVjNFi)AlmqmVF_E6TEHfpeNU*FZ*Y7p&B$Ohi$HNtEFNIB?;w`86_%5={l~20!9JF+ z%1{+tM4aK69p7g44xFvY8bQ<+^*#esq8_lrt37nq2e8JlF94ciTvI=zV?FQo1UO3PS^gL9^<0h z4-4)b1X``gk{zf`=+O3RI)u2whR6fUKBMc~c~^?tM4}Y6j#@91*fgc~wn{#%5=iKQ zla)pnmkpnh>hM*glg}*JyFv9OW5%2WI&QE)0IklMRU;wS5LhuRPh-y9i0Ne-J-sI1 zbkH#8o8p3tFaf;#9Q1Bb$>^Ox&j+o`N(4d!+prV;cB{ln5F{-#`f7p0Ixx%}2r=nC z!PMWFUNLB_(-Q2`AXBz4o@~_Qc6Qkud|zK*<*E^`h*KO4Fk#XOnyYQok6is-ZI@ej+aSlmQB#_*+FSgr;O#;}U_6niB6?oUu>6K{I;!z84Wzzqxl<6r)?>m0ToI0C zC`d6>w{1J}3f%RWY1gwj>PQmDx-4Ke>E%NWdRS6)G{lzWB&WU4C?PUWF;}f7X=_T3 z^y>U;&0`CavFqcsLv!39(NTFu4s6MH7@qOIPtv>fzCf2>RKCZqw*G25HR`uRGSvvh zLQZgH(TAU{$fIlEMgB?n-VV5P$L7k{@P6#DDP9sMXrhS3p7y;?*h!)r3`5SeZ9H&d zL|C&$JJ)%9=`egikolStQk|d)+?+db}7UbZrhUl{8;=SaHWpaZYE;0c6_xnIQ zT}_Yu;iH)-;}M89q&2BL;1PveT< z1gXjvVl!HG%3PcCW?A2$Ulo~WV@0c^t4>dzJ)qjBt`RS*wr@#Q-e(D=^q?qm4XhdQ zs9cvSyFS^ClkbweShl0RF{VKC`%7+ga^se;kh;^UYg&ZQrptBt6B-|Hi6?H9aPfd8<*7fdy;%X2c>sf+!-AHOBS=kE--m>TH1fM=o zrA2T5ouZkT<|>%}s?XdBxjD?IPTh8x!-<(1jywe$<^M>_Hqh0T-)I8S9gSQQ2g$bJ=SOHglWSL&*XeBoYz6rOccr6a!(}6LFP_| zY{{QoyJAj=Z&XFNFJIW^HW1U;T2$Fwg2A@-n@s2NWR1Rk=&`{!`;Ho`&aj@ZE1_l^6-2owU z3C*H!qB!gnBcbt@#&70(u`Jo^lhT<{b%l?7{EwN(og4EVIX}C7LHj~-Ky=t>my}nm?4gZz% z)Ao1HPy288*y$q>!kt@mKb$%rL`XDA4OjExVX(U_mks_JhuBgAoL^t-F2+qy)6~@0 z<-B(ZnUr5Mw49L#_VRGy94rVYU$?cJ@t~dX-wZA3)6i(Mh9DZ5DrWr%Jjt7;X+0)W zHqXm_O;^s%1yMnhS}kQYSl0Q@6OIp{XsLN4aQiB}w-z>n1ipAbcE5<$tS3!_Tqzw|0!BbB4mBU7VW^Q z^f?Iksuq&*sm{cTLut+w?QjeHr>-wFEiK0!qUiShn0BOSww*qK&8; zGSHTilmq$_s-hZw&+NXz-?Ft(5r=OGNaRMQW4cLhB9v|*=afSl5dED4kkkBx&|kx_ zevj^hxbPqgT6=^IMoC6(jwv!fTj61<4VhmMJ=ORjy^zj^k1$J|0m{0 z?e8+eJJ%@hk-!j-=QN9w22<`KhJ%4Yk~)~I*>ooeah7dIx<$5%!o4N8d^7yJiqy&M zS97JWx%v5zy{2?u&mUW^KLKkC_xKWM?2W&G6MR>}OBk+=fZl*J5gS{lxiVB6IN(zDn&ID7-c_a{{T(29#Os#NF&7^WbePy^ZZ*4F)rK=a4cVDXIKp0M%?q)u* zPlE#8&BBB3W`|hdpcIk=U6-~N@0+t)TC*8fL^wmn35>M7hcLMPE(Zy7#sEI1v=32* zFr&K?F-CL-SXz#!i`CsyFX(r>3gwJlb{BZ^Mas!*Ph2QBfvNOd~Xhf02}QQP~jF7pxdV&L*{26tTf_jw#d&F}7Byf;b|%$O!cwj?m^rL`RgC0aaF; z0(Z?Rn%FD((8RJrg#mHYgxSu|=+M&+2d$*U@T8JkvD`WKo&cEb`Lzj9y~?Y1B_&Bu z1g>YGSOREQfWXFj>(MXfn8z<_KjUGe1SUU?^3!UM>fiqMI0T3~biVl=PP1OD1t?cE z6*LxZNh*Q0{&qKs^S3`HuJLZS`gwA^AeXL?AZ@b;zw%k-45f(m0PvMmqC~@42%bUY z&%EX6h%B@qxwd3|(+7+j5vpf6jFqsvl*PMdFjDMoKFr)RG|iR@?seFou28=`jB69w zOO~~;eYjKM1kKap&0o(;($G>vFNuPvF*G%~WU(j$BBu9W&p`0b@P}zaaY^cfR1%3~ zg_=SfKeo*SKe;6~aoC3^)9?OHd64P_gc?@zBf|pW^D*ZFQ!uyV2n%8Xcb{=%a@B1b zUIekSIQc#d2KZM)gCDE6ZE~Uv*>t@^{{0p`+Mkyh5@h$Z0ogq{{^LI7-?M7}XQPs( z{!fBavVn*RiddVf7CJQL6UNyWZ{ zGhYT)5r)hyamJ?0^OT4C^y>Tb>p15p)sZnvQMDmRV>Al#QkKrJ@xnB$zIB$Xo$6p8 z5$CTGpFlk+DK0L~^ri%1-f`}){JH4f4ns^XQJ*EI=ds`B+3Vc&UrD4bmgbt~(#`RV z^)bD(+zKW@iux*BTbI(@n3+PtX{Ehgx%fCua;pxVZn1SLQj2_5;Spj(?$l~?bK?5y zo(q&+Bt{;!uy{+`5z0k{W0nsPXqvTfIGNi96(F zvwS~o>@dNq562dRl$}8iyh37jA=54+PO#WH+{CME!~w;c<$ZftHE;GNDkgQTVyU_6 zo?O&)#joCg0*abuUR;$?+pM2X;CQNCU1=r;36>g)H8+8((az3UmfaYx}JdH8CW&Oaj6OAM95=pfC)!~f#tORuov-o$Fimk;PKTcg~sQD9AcX9 zX-ea`}p-BUV|Hf)u< z7KQg)z-(+6Vg2#P)u^A-|I_bPb&t6dj}VhqnF1ANA?#{ly-WTRa@yUu$U^^@X@!dd zGxFaM+4_*D$M3<-D;}PYyXzsbmxD;Vik<~sTcV&d9Qh|uYvWlvM+blYl=2&K@n~Qmeo>x@>k%>vN)iZBo!Cgd%&OCe{1j zH!1FaD(L?}Jb2N3TGMj()3x0Rex&nIhdVaT91%q$Hh)=2hkoSqkP(Auy4d zOZMOhsXgfqJAr`5e^C>Nnz$O!} z;x{CY{;lj&5D0r5wl@oN+)-bFcm6rwuQbK3!`7+mVhz-uhW~0$y%^+vuc{%8DN%5j zZK{ea!3T~71588?&aV7CJPXUx0kRw$qhxolL-BdKK&ta5eAwK641`2GPu5bKVR3_7 zIo(#cY!+94SGm}7ZA*Z!CN6i{(Mr7?amSfHioi{Yqa;xM7w=0B3&ZBO$vy!_@3e6X zBCfHE0$p=$9D~KYO7jdQT=S-t%)12JlVp9j2tFGbg$Ir)cbzr#tR=D8dVSTTZAXV` z2I>*Z)(Cs3NZf2A>0TE^#@fnV@^7x41_rMT*t<6O>2s+lOr=&g?!?T|K;h)He`y$bptR5X6Vj*-8pXovR*=$Aci zu>KczYV?uCl#A*eXCJe!@Rf6&Q)`(`w%<#uo(ebLdYDkAIqs$fryHwVB?NLdCIb}l zDhClZwQvvSr5RB}?K27ITodH3D1LtTBQJtr)**FH9GsDD*I*SQf+l99$w$?eK7J(Q zl`>Gw%HPKm`HDhLKcQfG`Su18pU7iK)OWCs`~xvJ1CeA1=y#KcEA)w>$>xD&;|sr> zbFjgl1qzcSi}yB1vftN4X%dks_${eZ{sqWAV`5yrJ$X<)O~ulJ-*6@l5Vl73+He4?ibtY9P)R zR-ft7RTux`*Q=i&@4q;|X)mZ{_OXM&Uz|aV%#3YOd{}C}A>vS9X`dv-F_!a3WV}TQ zxiR7FWunP3_gl%^Ko7q!H6$?|a97egO0|`SA;k4NFqB%RAZ(U8&~d858Hf%gdGq5) zBIMPqVK0G923+^6c#n6Fk{E&Ka32vEmmPp7J*JFPp^gj?{f7w6TU{c)zr46 znyh~FB=~(e&XE0sqMwwS$&#eIAZVbvNo~E080>U93AwT@si;^GJ}!8{$TI*qYw2ot ztbU}4A&6d+JKuKNQ4VfHPB}(R-uS%?1g+yEepqb4jW}P0al0a#fs>LCW0}u9P}f$x zDtY6!&v2fJYp*6OKhXP+$2YJp@j|2&!A5T;)aum;`)M5sPgc-8Y4lskQ9UX2`z2u{ zfq-Y_Kz2Dx&oDQrST?>PbehYpI8%wD6cQ#*54A+K>dnM8E>_z}*iik_1G1YAwqI4B@|Xka8XMy7z$|sf<+`JR;nZ)b>Z|>C??vs6--9!hW#2goSs$dipq}xH zLpfrqACSXY!&s>0?Y_SYPoPZA0OCd5(JjK4dElO4a)kV0En%f(aX*5XM8q0Y=@H(; zXB=>d877)f@C_7NP+&hITx#+ve@eLe;gK>og_w{DE(JA5BX1Ro(&Gn&pzC(TOwYC; zUT~N&Mti4y2fNgq$L1@^ow(8EB<4D zVl&Mr=XJs_?fH0H@B^GFoE}q?xn`%~(^bWZ2uT<*pHkhoP+>k16{(!aU3kn$EtOkx z6}UMXHac1@l*d$Ac+l`Ev(XTGBuezUY-DLef3ObI;}MEdHCc5s zxyCy9yomPiOSdtw9m%af90A%%XW5~*gH#U?{HW)T#+#h8JG4n1X2*oasBxCkchmPe z+D`5{Q#%pD{EeVW2j(3Y*}w_1 z5~NkblY2Brm%>=JsNO5wZn9B)Wkjf;*x&Zw;XMvZG+QC}BmX%HPtxx(J=L+Oq=Y9mIYHP)ym3 zI#!9A<1mc6q{no(&N&bCO3D6a&9+%1PkY~0g^y`(?c)}AV?(=CGu1xk#@5FXkPrQo zl2fRHzzH&@)KZ&_vq!R&!qxR=?K+crzlk;a&S6UNYobzPTW}F0M3XzM;rCyPA*b$09Vs_#`c(pYLgXU7;S9;{RUiEjR}+y`5zcs6e;Ws1JKjpmh?_Q-iEc&C*>(X1oshTu+kKb)PWPF@ES*3TpCwYuRhDV z9(^tphtf66)M*LUSS}hwYQxxkfDkdcJi%1kck5Ig?(z0PKzj%ijLYsvtPo`+ zHs+zTr{m7iUE_%YLhiX^}b-}^iK}j%StT2_cmkwF{Dvta4 z&%ZrNgrSeG5kSxQY|tMN=YJfJ6^*UUOkDq$CFcLk$Exd~`&<-$ybdQDJ#W}x-Uo?r z(U5RYQe`qV_wC>1)C;t;PZ`g*s8n`RDnTUQ%8dfH>&{e z{rhl=!zbL*j#|g{K>|81E!WzEzM=Z>n4diWV^v}lUKzdR&-&0l`oEz1*F3(<|aJU2Id*2(fo*LFMTNiOy7Ea7>Y)gR0VKg=J?LUtQo_8M5v+;K#+eIJ0eNs zL-Y>6_?*$Dk9xS<+wD1b{A#Lg#a5O~h0aI0vD_r`#=4dcWk=Dh3J%AnQo04V`T#F5 zT(5+rdyZ57p^zI8z5z&{j*}^P6OL$(3Zq{73gZxB)F6+esw++BB``sCAxi7Jv3hvz z8Rra$)wXW_$cR>sL8pFJ2X+(zwaGZp^!=M|1dv_T7qAu0lFEfi_OVH}mHm(tQ=Mzi zb_uN!8UmK5P%;}(+484nxI8|X=(27y@c72m-Fs?1X{-js>FzY&{49C$RPJN>!%rRa zD_oX1xx23483^;`SjTo|dXgHUC(&2_Sg$_EOp0vp(1Y{z;3R_{Os$NQ5`8$f^`INHkF?V~B=?2? z*e8-=y9M*5+E3H|5=jofQhfO^!F~KX#c2UbPa^vHiEc+4>%BE=kYIydiA`xNKgtS% zRoj%w#&GJJnPK+-L)kk9SHfmpps~}jZQJhHb_X5XcE`4Dt79h}+qP{R_q_AX+;3*S zs=0T5oT^jjPbyWH7h7kB3MvXg= z+Et51QKP#y`Q*4C$9BI0#IxT87*9uv#knfeQP}A?;BCh+u@khgi~aQF9_W~<*+yMY|dSP;=ER@;7IA#Ng4 zSrzalsLO`ID~>@-a33@jeIgiKYAp$YGv9;S`Eq!vlc#! z*@kl(#xI5o$g>%WLFCu8EKfd9x(?b8X{`0|y`2CXthlFGJxXDZZDYmIy-&7a{=CQ4k>{D!z+>N^JG45x0FG<_@bfnBYfjblVtO1!^* zJhP5Dv7z#AJ7cCDMb0Ss6HmDuChT_{;_Ybx%)$f4zaD9}xF;VF0AAky_l+F${}S|o zy@04bmt-U4V@=;-7M`VGo1md}N|!N&6vOBJiROg_6%u6~;H6VG#=E8$XXHO&zI=V6 ze0%|uB+pTQoX%M;27(6S%6%5a)EGUP{{hh>t<@ zLLQ0?$GntgrWq-LIaG1l^CNvCdy$C`p+2n5-9_e4Da_SV6pSNcH(o6kn3ztQtYj83 z$qLsyrb=z1glH$*sm3IWARX~nX0KH3V>{@gihN!x9s+`}-fRluvBb)zkjTdvovhY% z&MYUpFF#stGk@!CgqLPWa}oXNu86{dRv^Y~`+O*pt=-yN%D67qtm(mzcX0~aFF=mB z18|Dr8BR@uZZ+I9(g}WRF=v6x>Pfd~5+c!5IUZ&{FYh{UFV-oV3%ue*YkKLl!`ie7 zn^(}_;wGJFVTFsNc2^pe(|fyw-F-BQvC0w5^3+9V131j(dys|i(=1;LJxdIuER{wk zno}ruP8>kK5~(vDQEjGb{MAK2o3)Nk9GA0;W}_+JUL1|LEGX;cX){#Uu0d1kux;;V znNgH4sN|K+oL8XN>)iCD&R>6+9tY2t)MnL>CGR20MD%XCP{ZJxV|E*Z|1@)pGzO=^ z&el`y!=|@|2XmL!I7B8^w=G!oSz6S2D*(hW==Zw@>rn@vbd#xe=%)|+bDq2sPjt?#d{@n-OPVmD(o zPBh5}rEp7Va-BjwFj{N5!d;jydx<(j(VcSPFl}+gENJc|xQ&>VFOavr!|6Y1V5Y+3 z0(y(WjOGX%ER3}!7VTJ6=+<(>xRoqI%?W@8#=?(7e?1 zTe=QyU*5*2UJn@o1$)%9K{@jJkH-huSSYO+~{}S z%^%hSHQzPp_meyRF)MHTy&z5_uQ6iLh}{(`=mUnVIVRitzPi(2qzLUD^8SXPFB1X> zeTa*UDIAALMN-H)vLVLsVG_}7Z$jfXP&!l`s;J8Ya@bIItIDUYW#yhl@WvS8RD%5p zqwOi~oR$CdtSi(9^HhGjz^*fBZD$29|0)n&hFJ3F`@an;*ER32aR9g>oBuvBm-+8> z>OXSxlM{;*2^Cu1fzcGC^U!bnr6)?BK3Vj0b0o(q8*Pf<+0&5RQp{&~J&~xlNutd5DejLZ%+J_Fv80fF;kuD+? zPH4EkuZnlwvuZlg*bJ>$|hb)O`ZBsDx}tsS-2x#ZLDb}vf7?9Qc2Ew0%h^e2V>Nw`sn zNX~)GwLv={Oa~t=JIs9BwEaz=KkC)%$o!_nCL$$xn1^0%(SvS$e;TO@MgmKC=?ZjO zkn>Fe4sv3zWL4hTYfN>_WyVIEKy?=DG%OwR=N( z5a|YI-OBGzN>rL3zr``L~xpIUQ6eJM-;Pq#<&|_XH`UO}w zCF2b(@z8Y`!khY+MDdb2ZhsB-Qu3``+|!EYHZ+cmfP}huBpya=x(9XPXA)P;^%u?f z0?kA(U(;(?8DYTJKGP>I-u}Yx?0_ zp)!rkCFliS#pAresXP}Y$zTc&y=0O2S)6MzXa|3^E_H(43UG}5TXOX+f&x4y;2zTb z_xF&Aleb*F(@}b zC;wXk?o_Y_cOn%T%ZlUUdGk@z)@9BgfnUIweKcsYn2LFZ4SvP0MeOvA&}AFS_5=w^ z8A>-m2&&pbGCd86F{tB|ZsUlV>_I1!jPqg;YFMX-=d`9~a_RmhFg!TxnoR7pbq(Yf zk@{8G(NsrWwUZmHcW`>s$N=$ulKIvh5L%s9>w2GQeMDP*bo>8?R_ljXcHO$C4Al?P zuiSbY?lCzW*pZAeVo|N7xtg1c|0Mlj({Dk+k+8w?47R}{E@5borgGTN9YlreR6Q@& zXwS4|xmN-Cy}YK4sFt-gb*;11AgbGg65LHO#4&n~lRS~hxb82k8I|Nt#kG8Ln`mkzoO0oxumf96 zsvu2;Bu1Lu!ok3toJH}D?8E9A;5{No((Gtc5F3&bzpxg%{gqnfkzvo$2SF)Iv zGE~4`;a-(kiUu|tQXO`UJ{F;DeSsbM5&sb&UaE=x8oUb18ml|>%^aEYJBh5nKrU{4 zr2wtRmA_E*CUN(spy3sg0m1Yrv&bB+;%xy2o7XwOWZH;xoO=xHGzWi7Dz9TyMKVVB z8aC=92Q5HhYLq}J`qLy=3^K&0;0EeP(PKr4_YCIEHE5`Z1ETQeDr1y-2VUf) zw$H=A%kl(1Yi5yvmXHbH%=s_H5axeeG*vBI6m`VU$LG376Gs*%@ZPNNnXpXT+uG1z zL%@(j!Tn*-orO4_d$hH#eID?IMGdNRQr@L1WlA*j;UVSLx_RaP^HQo?)DPl~S@rC- zqQoe)?k|??Bl|gc`0!fW>RKj||Y+Oxjr|M2(JPA_VhdKI#Sjk&bAg%R_@jzTCE^-`v^NfeyLGUqWwn``N2cNu2!5LPAUN^;khe0RWe3;}F=A|iEV@^3`)jE)15FRyjIuBJSxj24d{&KEa)x!cK^A|mlkqQqrCU+eUV{^uR?FNbC`?rC0a)D^9okogY zu8I?w+y}Ix1Sa!r(ghx&8pVhRGEqEmOMKGlJZU8DctIGw`iYfGg}Pycxz?`y5SzZz z?alGht_zW(G>}i(?iWJY&8})=C*i8hVZPJRlx)rf8+0d3tJ>*gbu6cagFKauP0Fv& zFcy=g*&{fj*a7AXKbXu^9GE9_mHWft;9W&4M~4dtg~dzY0wUOKHUp>%prl142fcY? zZxFLURx84^Sr#${>8k&XheGON-1tQz+=LDh+v5|AxJAYQw%bwgLg))-7GSNo6Jr^+ z&~BgOM1dBmgm41CoqMyAU`pFGXZv1uUJ-5gTk-^u8_24vgFAt>ojMDTYN$F>uiY%Y zD0KI0^U`nc1EO4=9`ceX5AK|T=*qZc8J;k6n)>?KHiNkbdYsB_;C4?IN7d&bgMBlqE7WKS3Bg#yolOA&&_QeR5~zIf&*|PwhYQ zB7nJM8`;v}aV0r8K^VN3nt~{MY6dypk8lZX@o;#@Meky691e{bT*rIo584pE8AZ`0 zc$W{_khT{L+7Q1vMQy-g@R=(>L&u^QQh4)jpZWmrv|h{_mk1K_gxbs=)PZ_TLw=^^ zF_AF*pnV5JAno-zTLF1Pi~hMyHbKQpa^j%v5XsdmC%$|D)sClMd%pLHB|6)$k02?( ze0GO_Zzbpf@_WnE9EIwq@B;o?f1rHza{LyKiw*IbBzX|76(29Ul@Y85JRuN!?-F>))Gj31Wp!luUS;5L%ZJTCdeIVNx?}683~D!yYnZg`ZQ~ zFmZEpi`D$H-i;Qy_R%3|^|MH)dBq&7WHLH&rIsi2hU>T(41vFb1>;ice3jEMwY2}_ zcMYxc)BR_Vu$I|x4#U}sS_v`hFG=nCoF%0CE!j9;%ioA@PqR~Z|CWK0M5vIW45*^g z0aet0Il%Z2i<64=-}n*wz;&bcPlpLbFw%A4=Rl+VN{O7Y->a zRzIGRKDKkNSzi6PovpIe{>*>vKd(=Gn~0SIV)ne+S$E97bI5VrdVhKc_cdRypN=ty z{kc6x3)ln}SDkjy7KHOGwQCuc9|UJYyWU?JH1{mFo4j&FdPs&2Hp`Ozn6K%#x&GYt z-GZo;%I~wTWI@W&QaA|BwXeja6jw#(*9JV_-LHHZ(F|Q-AP^TxOEmgtn}WR3G+Oll zx)OXa=bu~;V!3$o;?(oiS5|Iqhbk`33)&MK#nntMjS__lt!#d0t>1>k`U~ie*bmwp z6!q;p-lx6Kxw|UPe}j4<^!9x}$I5})n=%+Z)2_&3q&9~~X$=s!(rzowkAF-Ad2!Q3e0N{PzVXJ7#sZQk9>mB&7;4F4q;=lx4ujWjz~ zvPCPe;P5B}dtJS4#=0oQNN7|!A$LDm9c*$t@^8D~a^{V62k$q+v7h41{)Wv}^CW(? z>uwzAD*oc5aAU)Y>|olh>h!SM{NJ?2DzeOqPToLfL&@+4rVxjo?$_|AuF{DTnBLS0 zYFJudT!=Fa4YI}>PpC8WulqX`m}J`@@&>Nle7GU+F$4Ulx{5v+e|f(T%XS3`C*ofA zn%zwi`V>tEuxQWK-g0doSv14hp&#jGE5t{r4Zcu$ynynjEsIat9)EyqN>SAgHC`QF zPyHe3Y<`Di7C_4;dW)|Hb?O941A9qDzNVn<&~ssMe+?JZo!hmA+sol}!>2l(orj;Z z#MJZ>`Gb$bDmg5H!6bAqov6Ida7QwiKq|d18}E=`gK+k_hFyhu2;cJ+B^=c-{!Nd} zPaw)NC9@p23IPOeycTv((wFKIf-1{&rR1^go-s?Wc`vfAAAK^ZFhk8J{~F`myJP8s zzp_t5o5J7?gg@p8uHJXTjy6+#h~04GJ4y`GWn94BcMj|X`ZzDDa}geLU? z0t8LSaj2lPV%DA4=iKqR@^5*6-5lWfqO0L8r@GeoisDGKC*x_PHrE>L6-Q~oEi|bx zUoonrZ=we@R=@f0Xsc7-IB_0_vF>*U#;#OHyVVUSn@@)1CS46j0>fPz7KyZFU(=!l zHnhdzKi4kW6TfrLjiyjzl9X_A<6OCoi6!3f7a zcvc*VHWfmZ)@d2?)ZYFM|AbO)@TF;+BI7^#tHfx3ufGE~XvgYQA3F@*yf=sEQPfpd zMgzSf9gdmfN?%!bNLTy68<)R`TS2f<#{Ueo)3t*4ZnbTCgohL2nG*s(xus@*oJ-7yM@kVe%fR!WB8%tv&34KRENoH&;t8Ygt=wc=0Y;I*_?C?K*be7tdt+Fca zSElWib@Oabs#B$5%T96hVin=G-dV7fKMtIPc73S4?y8~Z%0W|WCy4PtE}Q||tN(JC&V$+aKg6Knq^MYx;v~VSD^irS1IBlA>tE2g(Few3hjl^<6Fb1SQrQg!LX&Mi-yNo zA$1sk>M?ujbT@l_Ry-k%DnPePA9SSZOJ~JZz8I65m`Kkw zx0`~tbX#qhokcpXAUiK7g52x9xqKIrUUQT=7DHt*u#Y=rh*qGj+zU&dP zS(O~|E-sh8)7kV$l7y;SM(j=?iZq}NG^s=&%9n^BwzT^Rr6~GHa~nzwS)-fVd1^CW zXEaztuHBd9nIk{aVR?8CGzjjpJ|_dsx|tU7yiY=WL>((z$h zuf@{$VmzSbQRRz^B7K&Zs6B$G3-fjQiKUCDPUa^~=4EZ(ceo~Ak8UR2BbM|qP|bz7 z&xD6^QzJPWvgFu_+#?T-;P*#s(2{3U5qDQqhrXt&i7>W7ZNcS_vtG=bTZQ8*&el__ zBzvV}a7nk#o-lPCnVy+NvS`>hlE-%Ewk;PI$={?8&|cloahB#HJkaJ>|BNsTKS83) zXDC-V%SVb{`2C3MDsr|%no3Vx3KW2(gSYhH=Jc%qMj>OM2`zLC$W z{=hpU8!z+i=)@vJcMm;avlshEH@63*PD7|JwE;zEguVyCn>lpI2}ty`XsQ!5cv~dK z3229q`Zc$AIMyqi>9OPZ9EL_NL#>FqeOgzq_&pnco~>O{*8tn=x1|$oo9U+(Nr7$j z4@xi{4B%Hu)|sjNARi>06ZIL{KVkT7#7%Qoo1wfx+?hQ!9@Lzx?xcu@l6@d9rQ!jQ z+vEr$C->+v(kJ(-nZhv~-+6Jz_6C%GKcSW7VTcTkHm#34y3yvPjOjj6>r2z!p1hT5{(Q8x}0C`tYW{I3YeV000h z4?w<6z=!fbA)vC8gR#D~<3HZgph!WOUPeUGUw~)`aL+*EYIwc?$`(WnKEX&~D@hcI z{1C?-VBW;ke9t46uRHz2&dnGKUuUJ;(U$2S z-i2bT3tLL<)M8kcEu17WUk(g~Y-S zF)C_dEWNISk`i=%q{hMKx9+RF8#Q@J_5Wt}1F~f*ECLWX0RRH$`+xdBNyP!NDx`nS zj5v}i=sW0J8#@_0n0pu-{q>WiwVl;J;C{mqMHTgH!^>&T$&X#ZOuCG)u~?F*NN+)j zrU(@(7~PyoNnzP0*+?H?v*A#=M(MZpz8SeahGpR2jtqq3#Ji4&o53RRx*mWO7dM^1 zkyn`7uoB8Z5MfE^e9Cs5TG@KZa=hGF`=yfsSp$6qF%#SgBIbXs#~SMG7C-d}$rOA; z_)RY#-O?^rARA^EksQ3?Za}|l2Wsou331BqMzM<%Jur~!Qu%PK5Qr>P4EHDkHK*uB z7=Bv>hyrvPOa^uu922f_u(CRJ&(s7pxVRtsqycq~ln;$1X)m34jj4KNlrVMH%4ZHa zBUq3nDNW63&A^Obd!u|)Nk(;+9Cc0!{^PqBBdM@9=y_{~it_Qs~#Zz;YUrv=b^Ajr3UwWGPJModhVdDxDoAjzvLBi3D1h zT75rTagn?#r79+^I#u_1Tn-cDQFBp8*LumHfP{6X({Dp?x#T6;A~hpn3v ztSG_AGm$RClIf<;Kr5LcrQo>PM2%7A`_%G;D0=hSN1X<%qhvKtQByGUgIzs|9f*c} z)L*}he6QrG9&@csNv*x?rPM=suHxqj(=HfPgr!^RU*+OlqBp62V;`V)M$FYRwihT< z3>#Te)E;u2HyGSjCYE7=n2$&u-5tZbA~yrCVb;s4$}9RtDC`#*^{SM!jcHm>mHvo- zv!P!*E_X9B6dO!T%A%&I@&P`;X^jenGARv}YC*M!=>w5LLbpP~%0y?R+11QMvQz7K zbkptsQHf$Nu&9U;;RehQt}$iGuw#sLWS89!cQ$5DE8P%k?Izj{j>L0K{R=L_4gR+> zn;LYup^tEXhMRQ%nwxmP+&QuCD;BSgrMXbm;?tL9v;?&*>On73nV8l1iT8t57X+0l z%1ijNCF#N*H6FAI-vJXwL*kZDh$2qVUI#z+u!lwpTVFoZhK*JiHPPkbN_f+n&gGejg5)5R~ys)!!NJ>+r)iXLc@w5R@1CSEFwdr*E=xB zyRO|&RKD7$%E*;zTeua@C#cZ^`YkbkVGVBMN^g;H5X$|=pE21&&YWlmuH

xwAdQ~siZ>XN>8_xzaAf?|C=T6g}&h7=EVjvQ$Atrrc9SZ7iLXC+qj z8sfD2`~Bl9ws%|%(c~{*OadHlJ}z1=jZFH9sc=jEbN?8f*SCxqs7wr;ZSWU0x~2I45^oZ=;bKv=4Ww5m3kT zQ#V>oS`rX?p7lFIi7W+enIog z_vq6fstf^~tqcgd2R7*$#R^$Vla$mA2rQF@C5^L5Gg727)AO>`^kvfF%Ip4(=L(n; zj>eDlaPN3fSti@$7A^stJVGYhI6i9k{ae4i--F{g-_$y+Vn^zCn!~gX)V{HfuHJsV z3NrFB#bHW%7!fsi@l|8LYi)Z`7&GN2x~#cmMe33G?wz!Q-6WYVjd3mJ1O~K=Nb{5; zLmV}e!3Ku0BuBBbnqvtr%gS#xA@+XH{%Oro4g*B4Lm7=Z8kzV%$D`%rb85&KkQo=4 z?!Y0;#wIatG7+L~g{__uS?Iz-^$n5&y=s-}N;p)pODIXPu`;3zm>!|o~%S!}y(}v!u zLr;Sm*kFch-9;029x8RGX@uNdriVQBT4X8%QNEXI(W*7tlBne>(iBMNq&e)XtK4a?NK=1Ayx0d|D{+TV$O`QemuEdY+cI0>d<)=w?HftPiUw18qLX9=D_)@C2H z-&W6l-@D(mHQIHC{gqv?TPIUnm?EO%1Hxt9cXFE#ElSnJotnw^s$8Vc5-P+d*ao82 z*^UCuuQdO=vJmHQ5&w7A@o5#lQx`rAqx1rDyJD@RiI*2>AKDMx8nq}P(0nlM|h`2 znaEi+w36TSaz7D|XtS>=4xCr*ZR20Zhpo>u@jejg3h>(>hvZ4LfL(5!Roe0>C8=!? zTqrxu6kYP9SCrYlOA3_w(`P#VwoJrtrrIrsq&xw=X;AW0qsGjokYxYBAZ%~??!pEp zIadycI1CEr00=Th8s7N=HyS=NVLYpL4D>Zs$O~}|!k@)|b>R&WC%zH*r{2RC0LZO$ z8*vl>_T?Qgm`MMhYI0Q@M|~4xK`Sd;Lw!J`;ok=r)Bw?Rs;C>y&@z~_Ai!Ebz|<|J z6A(jD&oP+3Q|U?NHU^r7tA^|#2g{jgBuFkSVEkOz+SdB%Rp3l#H!^!rFEDzLElEiL z4dvcqdN|JYcHTbqF)Z-)d4u7rZ&ee!0(ql^9cFh{70eg|}pBZjLOEpaMtSySrrJ$fN6JZZN z1xAQCsgdkdEK{YOZ0vWKsE=jygAg(50Nh{su^iQG3_Dr7G*PWEVNOlPgIH5*X}seQ zbJKGI%V`PTpufINM+)7#-E7pT)=EpV&!NcB+{9so+S1ZtmNo5Sbu#sP1=*ho4P*6s zC*t)`6OM+IAG7n72D21w=ser*9d$&`DVnGEu5Ig1@N0mee9;0kbDII8ZaZq%Km0^G zkQt)~gR_QA(V6v^5);M_#MnG258+q0H(=bSsj#7Jeq)gD(b_B{6kLW9jtdpqqSyOY zj3X{pKV&Y?9E*ULJDirR5vn>VH>jw0xzV!VSSmn{9{R3`N$hUy&bqeNEq|(KN!&D) zJml-xJ8>C4Gl?5v-YWIB1S7OcjiOnW8YMpDStwwRJ;z_zFCAp>adjzOJ7aG7O43ZH zITe~GbWY7y%?7h~++`PqHbR5yhNW#vm&y8|3d(>nW1J5skM^{+1G8Lr3+lVB!&=?SI zx3^95JiE-Bmz{{K_#8#Ye9xILz}cB)%4zW*o6VYc)}+T-U?G1U=Sc;rq?#tE+Twtp zia-xme+ugs0ks*Uz~^!1p~K?)v;-B~U$g&Sz(>3>q<^i)Sefz&EBB-ufJL9bq~ZG(^f?Ru$|eek!OOO)SGV-o8@QXF-I-&@WHTw<6)Nk1E8*t# z4z7)z)nk_T@eyV<#5Q^UcLl;=&H{*I*xNC8()UV1T`OUJT>SwC5vbWeI9yLWAdWW@ zb~v&tz|j++1~{W$yvQ)0VaYPT}a(CG; zWBX`pFK?kmVs`N_SuW95G3`U_f7|!`0vWWBt=uhsck$khG1o5Y98`OFwIu1MR$bGn zuTp*cHyii>TO;iNAg&q@Aou-8sqcSi00jqQLt7go^S_c+|Gs5BNl8ZcP71+gbleq?L>4SNI>HoIsd|+U*$X&iXLf%B~g! zz-j}>!)!-}yXT`L2A~`Tr`R5Ch`Vpd=mOjln%cv9aYUVDjd0Ca@kO^t!lxBnNN|0s zWukNzY$6Ir@S;hz<_c7L0wcjpv3#dBm>fh@`@MR0kt2!K5AJ(@P zUJ{0kI^~8|gikE-#eh{0n@@2Vw5(D>HKIpemN!$nV}1yQu$r7KUy{GsLO{5TZ{wy@ zUiZ728=L5+Ic?APAw$(@z1Vmp-(X0ekI=H z&fa66r-0Q@QgSD@21eTDIzYNe3qZpu$_x#F?^7OfgY7F4jvHW-^w*^zKwW6&-Qoy8 zNxZiR-{v`>L@d*T3*|~o*@U%K-aFIip&AD6O;Mu+Ce(&d&87{?EbSjv%lSO6o)$`& zZs(acktma=!LVtaC5-IhnLuN04xJSB8aGHIO?ch=-Z%XT9FCHirg<%hRz0m z;ej*)RVJ56RB#ge<&~9Y+s*Uw$&atKUqFvF)&>5qER+Tly=_sV;R{JD^>{J*#T6G(;xEQEi|5J7HSG(8& z@gds|kQ}7}i4na2sXF<;?IJ)Mk_51Z|68kMsjSJND5B~dIe7#q)llc6i-4abA(2L{ z21`hU1~&0e-+NOIF*A;{vM7UuVgCl?H;#azM1~>oTkKLiqxtx?$!i4@^J~1?EoN_Y zF6mn4xO9EJzJqtu9=;;>t6=J{Ck{Db0+Sjg!V%+%1QYGI{IG5}VDlelrZlz`W)xAA zQC^k~KIH7xPo-O|#A~$CbQUgk{#*E05Fq^P$NYqK?ag;bcA6$cvMMGjtXsGpwoV%h zn>q5f_RdEP>WUXBwm;u_{rqiCFF^tr;wt02i;}wqPf-pIC);XhR@(&AG-k@p#Z>E^ zU)Ck5FN@_~-!NRG(6CEelPBy-FxYgmNKKyiV?PFGa^Fn%&zVn~gGjW4Uqq(Xk|XrV zR~qReFk$#u+?apRun*wZuFH{5*tBLtx?tWgd~uEa9A`?*@lMiOw936!M|pVOErGdkTcv!K5h~TlpPo%tFvpUvy67 zb>RBvSMjkT7d{I;n*(HKJJbz1#4|kv75zi6CmT$C6?a!TTcX*mt=e$u$#k##hxpFnVqfMBYCsK76=&uo&xpRs>ZQn!CI4*WDsH%R)^!~5&(CCc?> z!ukF6B*@1pL9%Vj=FbiNpVsIt7r>ttc=U`qU7c}WH`^h7g*HSD3i}=N3L1!k^!ji9 z%YA~O*F^wKQUU~1vH$K;{0n&g>-8v7+pt|zLH*KMi^7>|Fi&+8VtG0@ z;-e{;tJ2cwCM}$Y+Jc(jRKcq2s;os?sqe%NqSIt;z3RuHUNEs7;2>+I28}j}GkFPn%6THmxF-GZd=P4ep>BMRHEn~ju!5q;adqYyx&248`WLg zC*644pzpslU*9b?M<BtQuvuB*9H=|{7-`7OSa}GFXTS8dG2N4UJ>}q}`VYL1 zh@MC+%1T*$cPbRD;rn#&L%y&6M3IgoBA86uF==)0{Ooo!L#6GzL~n8-nAT3Ao-26R%oQRlW))5O=e zX9$b;bPe7Y^~LjkufwUy?h!KQT;PiD(0v?%T>Kj@?U$__%i5k;h_Xig$IX$I4eL;2 zchrtUDi(fcNtTneK&bR1nJq_bYY4in1n;tuY@5jeKlUTy9>tKYm4Sm8Kg$>x_`kaaw%|$Hu=@9#*s(tr##(5@A zKSz)avtSW+s@Ov&+6&2lc)s<&?CW1eR=f-&`Zl1*dIg}ze{^mO14?Zt2j{f;UbP`-y-F#<3$%q!JFlK)|8~%`)U@b@bDtB%0XGs z;G~7i2I{TYkw!x0QHjQcQS8|c!<^2zG@Q$ree+r?8YLjYOUelM1vPITg{8WXK0q+l zxO=W+{~YG+a(~N_|0ZgLXDmOMzD7&*Fd)Z>jl}+(@ND~%6X<`-eo-sj{_IIEO?)HL z)~oiFeV{`jvf*AyVyslQSJI20S{5=vzS^=Pf)_>ZwVwZem&r_{D$(ghRxF&Rq}e&^ zt#6h^8`x5n zjy|kccE_zD;2VAw#1D6*0#gB?#f(Hjo{;3B0>(EeA+XZj|YOrbmZT}y~zW(KLA(b|ES2lL~hg6-E_&2kE z@Rw}nGBiE3D$Z!@w1Pvfz4D|~Vg`s(QiC>WREu+b(%GVpdQ-r#mY>S^U4O{!Jj8lA ze{9Nl>ygd0l{8zIq58MGr6&TQQ@12R>?fAtZ9#Nu_PRoJ7PnAYv>25{tl6Hp3yd>r zYSQMH!ZAF$5=b9LemuM1rr&VuXkFLyPVQx=l3&M5hw&JF^Y9te zYvpL@Xo)FI9j#IdxV8qa(R1zl31#a+tqa z4W*Lc+@aJ=AU3MvQ0p?|in+wBN<7rOu&oF~?f@$k2ME%{gvJ6l6j{Kz2Jb`X3^%nD z8gmr*mAWWCg*vzStF&cm@H4DM6oPe1w@5*9iYwuaOvhKK{P9&SKa!}imGB`~Ms|NK z9zhD@ua2vfPU}ss71}%XFCt9X=3a!N==m*~;P~T!Ceg8w|3lR4mtX0J@VrSs&W^vW zP?}`3Jq7O7E`AiuM#EW)kPU{1a;Z(^pa^#=rBH00cu}Lgce)YNhoHR-#m(4}utm2(vElC;}juB2~~| z2*!=$y0^PLQ;pI8vj;RBC=6k{0CA5@BF|Su?Z?#fbL5m8@8{#kojMR5Z>b&{hc~Ky zMc^7g%%n|uZ)ZYBDf&~rogz7RIccUb_W&&*s9?WLS zk5$lM7sHcdz3y%22?@r^heGtJ`Vj?EZ+?})$|srr1z(EUiKE;jC1W7r2L;PGCp39w zK?zUI8xPBry5Ayy5QC${rg;u*-AY@c`!M>Hku=4*l4}pyr6qhCk?!9DoxeywwZ16y z1wC>eIdgU14HL-X+^9E3nm)4+Nhm}P-1Gm2UnKfNCMvyhXwK^u`H@m+{Ff|Nhg`;L z<+0%}KO(bloV@x=;5^5cg7aJ+L*XXA1W1Hi3Mu=d(QOGLP_n5!In$__kX9XNqCTS@ z>S`6+vi+|-(&}h;mBv9yubBtqGJ>SgRLz9!I}YG|JBn!NgzmA^kDrgTEn?vx zf9^%t4slqAr4t6mn;j>0ZC?4f*xbDQ_`JKr@P*N}l*la=?At?C;gy`ZEqfm?O;u$Y ziiLW#{-dGDG!?s!?B}|^4-DY=z@FIg=AK%oYP7FfLV^$4lKbGtT!Zu@d_8-eBHQTr zuP?Rcwrt%quhPW_fQzK=)9KFjqV%0jNPExm1L{s(xP*h}-3nZn4|T_^cu28+x8u#N zu<&VBzX^$60^+G@3fySbC{NcJpP$Wu2%t5SB}A{~{lb}rc@tS=CdL;L#$$?SV6BEY z*$8#2%(Z&qJn-FVwX0PvFI2QV7uaUAG0ixOYa(4QKsV#ka(JOj3C7t)%^|9X^u(8Y zyQN>0)Gq$`jZ7=aHXk`Z<7geyy8{1AesrqQ%HM10qN~)wKX2E;gFts8%{x=+iQt}f zt2V@{;4Zeyu&^&QRK1DU=kq@ixNTrYXTkNBn2E!E>Nj+nD~f@6NRp|e z3ZB*#GwZTIxu65>$wD>OCiqd7FDAMP#p4{tj_gMoML9paAd5LGJW@C=5|-H$iiv+Y zmsBUI8r^-@_#`|27QUw2>Ug@V&3SZq?$X|&w9 zSk2XDohy=eOY(R2<8gO#-t1EToU`t7vbyyr%;F51j3#uIz` z3}?(Vi!CC_(w(fqV;#KyV+YQKa0RT7=De%IC?~?erPtS(k9$c&ZEl&oG<>XrrDnXk zv9huH`6-u&lFTy6OH?54>A4xyeJ2iX>2RjQHc25Rj^9lLC3=XW`tZw@`~>B2JiS9aK~qrbP4|-&fWqntF7rDCZt=W zOOTRoY3c41knZl1kQSu7kw!p5x7Cn4e zCX`)BJ=O8WOv-4aEX(#$w6!#ME%j6rFF`1qC}%R$umfqd1hZ@0wm8jB7{yeU%l;Bs zwV}0mrD$ScevM(znf(NGSf4^Y*CY5$WamlTaI!~< zyDSSv54e@A-;tB_Jack%BT=6K(~(Vfe4Ss$;NWs;<~SaS#*jOiJONg~87I+ke|Ynm zDwP_6tbmUJsl26F1J%fwt^|+rJqVkf2=7gPr%Pzz$w{dCCtHAy9@^RcwZ{(=ApZiW6m)* z3d`_WeU_G&DmGGAPD3f4ZDO8^%TMNYf$OqO%#4Q6IL;o?5hhmB!OqC0jr}OJ)Kfg> z)26zPznk;691pRdzSQkC4d=1Y{aGC$b4k%hIJH(3GZ|dq?}SmcL^`BnGsJwKh-#4F zMuNqM>~`>nQN5kb=dqjQS`yb$llRJz9(}dAA66Asb82LpjIkXfB7zm>yU-qSFU0{2 z57q0H{eKN0-@%`+C7Qbsd^V;XF%v%^&opyen_B$H8G+^8Je7{G{QAEu9hQKBa2%Gl4i zCLu!4_T;&3VSM7#2b->%5!vv%AIu^L@JUF}s3c`&Fgysh(dSC@u}?3MZKr3HWRo>7;F`tMM8nF$;}Ofmfyf<&a>$UusZ$EDO68<1 z9+knV8uphO6Z{k*BR`cf>SQ)*8n08Ex;wPd=Ro#4KShUjHmH5_v45`uDh;mVWwt*8 z1=)K9s~YjVlF=tDypn5U4I+7X-igUjm-2Oj%b2MXBP*OdLMVb){=L$v#p%?Jyvc*Z zE~x`W4O)4g-Y-*}(qpeGrjU7rtm;{#!zlD~6F1%ItcOmyQwP^VIqPcr*M-SD>dDCz z6UALCzC&0D!ke7D`jj`SF+^vbF~8Y>0eR`QJK>6_Svbl}qH?cJU}GfLo(p<2hd0z) zAEwKJQ$%(nhWzk_z8yDhPgP9lh67d6D6#x;-=Tf#Tm&(H{qQz&)+A;emxF{n#ppZY zlU|Zl`b4t;EJ3+YBx<{Le5^$42S**Qc?0!djxenH<}&S4@uB&G6W;!S$di#>n?)># zMe=S_qbx(Hvl`cuJx~*xC)S}qU6ERT@VXU(Bi7VCE*nin=hJZaF1Ihy5F#FVN!bgv zG}sLX1MT=t5%eJ~44<$0F{=vR4!K!wWis}6zVRUzbr0)LuYCs!rR$(1#d{|dp>eh4V- zU(fVdKWL-A?d>oO+~>n9#Wk)B)G@O_rYG1$JShdXTMF}}p$bFDJ3U?11-eItTuY|j zbUi(v@q5zasiz1ggLewZ$7YpLgw0<&i*inp5v67G#8}HmI?ZT&7w><^$x+8Mg&`|C zU6elknzOoI(xX{mUX2^f$4H(zRZwcHTTq{@S+B`I(4qokxvJp=RwP?ut1-2g^riY& z#t^Y?(krK=LCsCmXjto1$t7TYt5I8tP2@iGs^>f668#z9YUR)R+?w960>dMA_&)}( z>xB?*qtcRw;+oJK)!Bv}50km<5|!F{iRm^zVDLHOFQZ=XY(b-fe{d9~2`&22C8a_K zg@eB^KE>N}gpH6`mA)3z&`>sFTr!Psfx$J+f%KE0q{SAQby&{hhvYQVrpUFXbg^>i zp?R!IP)7rqnCdd-7=>9#OXP)2%t{R}Tjs#c>GkqAm_Bl@+bMEL?ma*wSm^Y8(-ELZ zTiiGLT0cSsKTf5IPn)IE4lPaCB@FT2xtKLF0fp>31I9^2DiOQ*4j$hZZeg7$aJ?QT z1>g{lqXMHQR9oqaIO_*>%k(eXvfVSX7l0s3}>l8Y9iv^MGh4giUeYQ2zvi3|Z zJ%vFybv?Kbw zp^~5a5@0Dn5bd=hbhiGWX#L?ITMI1_96KtdVh~_k{ z#vfeGTf6NTNH$@;A|K}8$9_iMR%ER(9#MWSkz^GRb_qGq_3qny@Fty<@W;tl>bhA+ z9tFd@ZAe-NSS;#MdhiDUp}mB5J@)QJU0+?pQh5A~i^lCUOAb&uPQh#KAC9MG*(2JuE-13BqDt@N z!Qq{ol90@h+Hlr}=N=B5t|&4d4sVE>Ov%H&^rVH|ZJp4?b@UqmLlRp!sW={L@R|Og z@?QI!+Y5ija7H|$J@ey7N@M{h^Q3VmFsgI)VuBZ`Y0R?C6wZbdEzq#=&V0jK4WR<= z31CFL1X|CbjA7g0aCKm&*D;@U@C$WVFD6;}YtBHwwO;;`%031O^Bvh@leZ4%vhT?T zcpX;jmGFy%x!krx!lPk0&JRv6{3O>IkB66^i;KEK6D&_2vP_JY_dd7sIw$b5{DCCZ z23gSG;)FnQG3`<>Q?$5L-szXPahgEjr~26jp_1wYR%HBI!J%oMJbnx^?1A(`&tY`} z$A$wT0-*|VkSthXtICOQEN_p49zUdVc&!&E+=;3Wh` z1CruL||bbg1vdrd;^7 z?4yK_6(6cong==GAYjjTq3~4T6zChx6u<`T<|Qm{At0vh>K2b#s;6A8rC7psD{xtXby*;IF7T&rK?jOY{mkG6!_k*M&uh;8!VGv#63Z z(IfM;bm-%u@7p;=&!wi(eD$77)YpX2EulFu#*gNNeDbStU=7dRLPc-t)n7L{9xd9N ztartq?OR5xCx2)pE%Y%-XpkhXp+#}s*d4dAQ*ncqH`TM>c<3BIeV%y9y`6ZR{oU>% z#LV>fz+_RKQJHoh+Cx|?Rl$a$EK%j{)*^NJ{+#=d3Mcic3Z(P2d#fLdX-Jp!!BB~D zhHK?gFxXQHT7YT!3P`=Ca8ldv&QW-r%&vzSmf-&g8b4sZ`zn~ztRt;)^0Pih{w^PE z91~Z}w@tf!oiuToG=C-&wpilvl^J833fm7&vNGo@DpM0M*_T}VTq3eKGYiKd5(f~B zYnY5tI1AkvK86Ec{QW*TD$rkvOO&D+@|lS;U0=zWv`WaobUn|9o;>-ORfe#90NLX{ z_Drnk;p36z@>lBin5=jWsDq*pw83i4^8L0s#;A#F4c zU*1u;jZ+&&tG-5E);!tZwRV$!U-H=rZ=-2RQ0cXLH=dV0{d&gZ&HExi;qvO0VlYAv zKeI8odrS}H>5qpP-}Dh@??9WL4~b37l4~Z5PO*8hKzxL7{P57j358W6QI+tRLpkun z!3?2#x)-%O9a#8Y?LjR{a9J5R(xF#79%k_N_tUzR?=!($q*neK?O6 z`teM`tus3s5>*bMK7GI%!JHEipA(tI&nR@^(j44z0D7wv&hgJLBiFrIK18K>`^Gs- zPGaO+O6Eju^xO)IM~kL|4>K%_n+v}7$7ol2*=0%gmUE7e@%!9ODOd+sE^sd+$H?l69uqaL=xS6z`scpbZ@G+7QsyENY#(`X_XH~KAM!-N|% zvpXo8h%rB2H~FnsWChsqi^7 zQah;d&4z{{&Vt}W*yalH^Ted4;UmvC@{9s!WS=S$+co1DAwAZMd!X`nRLHlI0h|rrO-Ecd-~1tx zRde|Ye50$yw&ep_xlKC_J|lwY#}AQ`PfM0hI`cNzvK{c49JjnMg&AR$1FQsxEMZ6Y zTO-yn)mqU9HmlMh1SP7W#yrccUV_ceq0I7v&GN#|`k-g0_sqb|^1{#ZBG2-I&l37t zy$P^-b1603WVUgIw2%A zX9dYYdOmRaRS!5^WB8Sp^P^4s5+Lha|%oQ{T+RHLHPUrhb2Wx#=@Tw9O9dNl@ zaU+T$7?nXOhLp{Yic0fP%AoG&0Z0w&Zb~9>}?@LUO3w;XZr4<$CJ7p6aw#W#oBIV@;Tr1La~T4}%?&F~5U*>YZM} zRbBPj1$^(d4WtrPuqUd-XX5(uY6anw`m-;S>sB4;>?QU^nP`+wWvm-t*PF+_y_ADS zrG+{c{uJ`MCS-G;8*32BCC#{ckuz!deMoDf(Nv&4Zd&qQlZx$vz+k1%u5H~F;?0ex zp0rQseZZ#E7vPw@z@L|1|2>{~V@ves^ER5+K=TD2W}Wc}+D%UfNF4BGdMAK=wOsM$N)kt0iy@v^DeVlr}Yse=e<)eXJXnn5O@y$N> znc9;Su9Gyi)AKh^e?Z8!m*2~ke?2NEqXUg+tF&i|AHSbi;o2r>dj7n)0KQ4=p*Ip# zGTd7`<Y@cyI?U?-nGXSfR8Tg=lRTs6J;Zx9!40R~o5($WJ=cc?gYIy=7Uix<2JJ z@xXt#r3yY^1-@&fUtqSh2`e@CQG3;#cHA&oz-icUrGxW2>ZjD;_PAt?9HT-dV#L_) zSz{kQnqghBAm1jF`pj}m=Yr!QJDg{s#H+h_zAKIa7Gk&pVX;VkHq?mUhxltTV{3^O^mry7xA0)VrLH}8H2dk{ z{C#VGAy19XN@u2+Wa$!w-X>m?2zG3e$r-w~Y^B#FkpgVa{AvuZ>zv=eW#n(iA1>F1 zrH_vD;e^C)f}8zN`cAlH@>rHNwmrX$?kna ztRFv2Mo~CzXN+QoBWi0b2 z?NnX2m!l7ObZe7gEQg(ev;WbTRCF5jYWD?Lc$4vV51TANfmo;vD!lZ*ybonBY#}QX7C!5sd3BQU0tgAa;J?{>C zzZ&h!d&LBgGEHACyb2`LTY_Z_CE$mXiWUuQCYguj&9)V>`$oFt4zKD8kKm5mXP^p~ zxMzb7G?1Q&%5ufUJpeyfT#7R`B?*LTpwAF`$4>uEo# zVQqzmhUoyIk~PSSH?|wHq)j}XITNjwCaTD*-HKLx3)h@CcAG;-YLNX$5<2cR z2RwMwMx)&VuicKT{XsKrf24j19eP80fp@&Y2xw=zB4TWxC4%vmVe1fK7i(2?DP}@F zXC~$eQ#I)d+lnEL^zeM-+1K%p@;xo_8GFeIOVtd6<=uPu2hZ`Smo{rjiqC3u_#nQs zcV`RN3LBtTTrhqvWR@0x;es>&s3p3PiXm^Q_IK`&j=UmjsZN7_Q?gC5|s7!Nc zoFh<~l=DKV^#00ecU#KEwNl@p^AbAyMpQb$Zlg1>+xXicM!+IlKGjy< z_am;QhWJ|1|Id*LcF>WDjH&JVuAjFVb7|+k@pmm>v~c%?!#R>XvCxIlK*aM;Yz)?f zHtZs>2|!HT8{ezxY7CpS7h|4xIL{qr<NCHB z_7@=u@#`Q7pvOV`i=XnhI7dDYy${0TjI)V;VYRBSv>%m$HoQZ0#AFmwu!PZeBv~N1 zZ16_WUa^ZaOob?X9#`-aPJZFTYUjxQEGKK$l-g{IY0UoA*U+rC)G2(vQQ=~d$T4$f zEcOA1N{esd<;x8z2P5w94#(z=gm#yyP1=z54@Y+@*U>YP?u_z^nCB|}fLEb<$sgj; zHM2IvAo=wk4v9(|Yn0>T=xJ_D6U~&7F9xWS&3@4fmQy{}`y)>%-_R|vQP}J^+w7z5 zV)8J~3|OHb4^YmFTU?M-VZs%Lv`{PI*UokM$`vjW7e`dcupp6T3+zr>I4`^#K$;0A82r$}R;E)f;pX1y0B0M(_`T!f`)+2Hcx~{O` zX@QeIcmr$sZ{^4dmU099X=FkXEZo2sQ|aMnVytF&Mlc`EOGM`f(O-ahQZCnWW3L(M znU2ia%eZ;2rH$I}hQFC_f_%Fm3@<(-P3-Sx3apcnv%dKN$*r_6CLBqOgPihETV6L} zW+4j`1?NzcxTbkooxcS#z^r_YAh~L7lJ3b)3wrJ&fn9_?*5okurORp+29xuYuWA(E z;j%<3Xhqp|Q+3N3UcG$ZmcH%cF%Xdve)?mtrth+9%(18J^WlrQ>G$rUn~GT^%(`H0 zB8M*D;dj`bF}XMsGuFW3$mGy2AY<+Gpt#CnQjXbK==ux3At8nD zaPqb2L!XPOl;nRm^bH4@WLqa#Y)7U@t0{tPe*CdQ-3rnr;mhUjd-iJ&4Qq7^F3pGS z8(Ywh2~l9Qv_;{}K?i;av)<{0Z*j7!D|aXo;C;@vO3XT?N@KJTwYd;Yq>9vMHW{!! znb{Ua66|6%{yb$NF^)4%a`7tZ^%~;WOox}W5?RWff|)&p(?lq*nbZnmgztqoWIpH* zq(j_)#2Z!a!f%dug_4yd(t}gz;Fs@E^WH+GiddYn4$CGH`l+A-NBR{z`3XTUVt6WQ#i>z4@Wyag=Bx9eyQ(i z;1owD8<`fK^(kjez5{x7=a%J6hH^&q3ygR%rih2NUM#|5dUpBQ^KyC&T}dKcF5t4I z2MGU5y+Eef^e`+-1r4YSNC5^$^*htNRyE}B{qCY?ZaUEuj!(OyF2oOvFJeM12s^R$ zNO63TWL&zuz$vP96C!YN10(!tBFIFeT(eQ8LX2oiti+$eNUKT0&=6RrkVEFNu$b26 znnxLGJ{fn?s4vnKiO!ua%ayLLn*2KRb+oO_LTcivyJNE(&{KiibItbhNc-g?6B_L* zA%)}Ue9zvA%*e)Tk*ft#Y7faQYp(o=rmW$oW{0xK+gIh$+lQK=O?ku3?D+{llmlKy zN6$~J!w4&hT+y|eGhMtAQ4Q`Ee)?(sh@>F*iNR@P^jtPkpZAr+$jjlEeIC}Phfkf( zf=XX#WW6yvWTqG!#o%gu)ciDl5zFaJ`}<{1^y*N_m!T5>u6h}AqmMP|fkyA4ARBkG z$I1%JmDg=D6D*k?^rrXd#G@l8au`xZ$!ad^eNWA`4eHFnjqg#dMZ}OPHi#E#Jdh_7 ztVA3&v_bI2O&l}hZWFH_!ca@h->1nPnQn{x;q?@#OSvakYHvgNA=_CbtM#-l@M$D0 zc>>iF=zSdIimv4!Z8%gDm@j9ZVoT|5?dptgjD+pdPMaLrQ0hJwZ^K3VXmh1#kLl8QrEJp+1)TtcSzDHOqoj~7Aw>p^)p+BAW z*{0%6J|!dfgOI#uo8T{5Fp=7dN?{cH9A|axR>2h2#;XL1-k~t|CubtCw|`<_McC)h ztux;;m!>*b4(*^Bmzq&om1r0#$L&hV(6KY`9h`fd_$bGEQm$CfMw^e#t(0alnqxFM zQ$h#;PSm)zD!F32Y8->0I0vA_F zUgq-I$3D;{;>g)*%du$btsSmrn-jp5}V)G?=Y!C;yEIu+3+L?eMF{lls6 zXa7hYmKc06N@cp)Efg_Y%K1bXH%>dnI34we0qC!yT2z^;SQ7$;k#)vcce8c72ozNW z*S{4>XNDm68H%&@$IuYyhY1;tLaAeHZgrCLC-;_!4Sd$d3Whzmp_xL1L(UZ+m!8Fl zhDF#=m_e$-EAC^7wkh^mpZ$@c;rnVj>vH-sQa3huVc=+j_>`2j!EWd&3*CDN*k^1; zcqOvY;>9CNkNI{kLie7I)n$^fVeCsCKjX%S7bTmI&3x7EEtc~*W`s*Q2~Fg5l)sTf zaj~)mj1D350aH}m7!gV*iE3&FjM@OSPDK&ryb?0)8qf zg6h!sk_%Tmeh$Z}U#v9Pr--=kZ6S%Chz`?dC~lx+)^zw@nxi~Q(5?LVMDes*H+b9P zX^=_Med)Ty&Q6QZGS6WnHK-5dNS4X<@jfi|DG1__z9h?LcvDKb%BoGp82>7y;Jw!V zH%X&NBi9cy6v4=O@tRu$&qoamkIGv37)qNd;%4rnpaewg!hN0!DkQ{xnfKHSKHB72 zg$df`UWRaDY)6@%Hcnsy3Y4+61v??E6)XanWI67I{|Bu+m<{4otz1=yDUs?7+tl9a zbmFi2(D*KFh>T>&-?hX^K2S?Z=C$iw2)?6gZgiNEXe7}fI2?q!KPSUMIP8i%vBe#a z=Yab#=A>59B-k;n>zgBPXUh|tM~at~=lZEwd+xbv(bZj?ZZ-18^iRyTM{9$ymT)=K zZOaFOUEUAS&P2rbeEz5(iY!XPS$z=2Smv1N7jO}&bbpuq0W303P07H{yK!VeD%Yc; z4R#hk1fNUCADo7a+OzC#r<;2Fb)8O zZV=+Gl*&W-W|ulAOEl!-@BXfx?_|B`}@5Ov@b4iA}}z8@}bjULCTom9wmuU{^cb!a2_@STk3R2I1U z`jyqNDMh1d9xAxiB~yc#_ULz&-H{EbGx)lVkKfateYMeP*$y1RoTyFS+AmFlKTfRk z45qg>h|UQ`w~~D!gFrDA>NGe)Irv&(>@f84F-GWjg(8O}HOHphecYXAZV!XjWSp8K zA`m&$wiHucp}z#OAaNxcJ=CQ!P=}^DEnf7e-GBIE`9~=`9q|=x#9``&!MjkdcFwV7 zL*^o7KejyPB(bwB@NVX2+Z2CJtS{8APK+hnZ3hXsvSYoS4JGLUPg!CPK7V5Obi06K zu2cOolvl7vdU$Mbma*FFJa!B>_kv5oHrGc02l@qV_XOq_wW#IdkXKzX+no(2y&4re z`NsJI3@<`6Z8DjUynOX-1&znuitT8Y6ikXg!bVAJzFrq2{qho8tQBwRJ-;r)kDSuB z8d07GhyZ75`?S*4GFnvd5PQwE08tznxDTU~*rKa4_>a_3TuoAUxlI@yqh*9#+Qe7d zEjTg6?7d=lPR%;$mnT+h#o{O!AE!?f1SunU2Gd1W z4lW;Ql1_^u2PZ!W=JXBOP1h7MtHNVeDd!?q2InBXO0v-4r*#XHRQe24Tk$;Cy!?xu z93P{jSS}mRJEjdPy2!@CGa8OFnzXsW=x-z#D`lI#ddmE6(kdA&g-6->jY)`w@FQ-D zQr~PEXoK~olO83Z_&yp87=|x(YF=}t;^qIwJt%J*e*z)R#UGo=kV}@O1YbEAId+cE zA;R~}$!C-Q**IC;F|Xi?6gKszXFa3=FtJW}eqg&?f{oG3yAv6|xU%qxt zi4`(Asl3Dr6t}kma=bp8+$yHH!jA(c8I+ekY4)<5C_Yal*TwB)Pi+54Op7K(+IbME z%)b_+OH+^CS0P$d_Da{^il|C7zth;N4b_U#kBL9tImV1Oi)9(2Kc-)eLd+LMx;!RW zEry?lHXU!jLG1Woa;EZ^!DPX69K_FiUmABE*HG_iFsS7aTt8R|rs3J4y4DkF^*L1C@ACy+l-NXiI(q_0pZ z2xX@2IAw^GFjJ7U?lVBK=TSE>Q{vfl=^FMa=F)yuv1$0s5T2fL5y{2 zdi@l3*Bj|wOZ6ChSLH(9lEXk$9rt~wlNJ9-CK%u77AHWA9obftrV6izmJsRrlq13 z7e7#qw{e7Y`md??7q*~MJo@Dm1M));@=3r z^FYQqffH&~42;ZMoNe|J71cd8_DZ53%34=^Dl<4@S|{~VVsQCWyzLUy8Ky^U(<{s) z)-znqoRZPx!~2cG^ySG-87Z~#DGReQ%?LCY3jwhUY_PRq5eQ--x;vC|ZuCZ&dltF# zZ97m4+u*!kKTIWm5e%7sRaw0by>P@EBvuT?uEf-}EeIb8ht3Xt32Ax;!}m2NK0l}% zuRlr=kwGGccHmVTwVGN*0&juMdiqnoKx`>1wnQbIQtG&NFB2Y7T=uFjt6#nv*cLMR zcF>_9GWT!$2KqnaT1BUE6LH6Sdvwq8UQGPqv#EE|@zWM`g?&y*aV)j(Xq(EF{EBiC z!cGkqAu3bT;qArcLqHcy@WJ_NP1IF zaiZ3_Kwn`kO~RF~f5DX{e(ljBi;-F;t7VYN=zV0D z)etKDpo)m1Tr$MVL7!Fps0iY1;nQI%r#+>if^sEOX1uhqMh_JnQK2B#-20D%+(LwS z^dy}{1>T()wZDNXMWZJRolf6lN@}A9wnP=sOESqCMDib^nnBDiQ#}cyR_Jv|=>5na zcOezVM4%t@-Ja5(Fj48T{su%B$xQNLzR>Qm_~x-ovdG4&l{Wg)%oDra*$H>5mldZm z&cnW}z3*Ub)yifz_v?!I7VMIzH>*;~iZ<{kXRGARi1r`5ySOX3g%sE$nPG1=#k}wB zQtOy; zx6|;m{!BcA$j*zDjv*;o(ACl=Mn0W!8SisU*+LdxhkSh+ZpJqQK5zXn^@%`?bWK6D zSq;KUd9r%#tGIn5^*)Wa@zuk~O`%TToZ$C&SlYj4pnP-Nz@FzvIiTYlsNZ-nFTUoA z!qX4_!uxzf8F{4ImEI#>&>Z)LCdB zEyQe(KF6NnNPI=kan{bMJtQ@f@l)m6w#Co?8Z6crWkc{b_+;Uo&JT7u_g9>5@Qx>s z9gn$dctUy8QI};{uo_F3si?s7G?ltNKZ=aK!>sZYC}53hGde_QG%%#M6q*=9pbPX? zV$n4s7yrnc7Dg`qFrW%0yHXkM`LHp`c2v}*8ndSRC{40tWWkeTmPShA9Ek1C6_x6- z^$|4jM|fMDqiQprr^i)IDQX_ig#w*CkY!%Un?p z$_kWf*iuR2a+$9b&Z5keEnKR&^YB%`e+*KW=RROvj|P0%$YEw##(Ml>G1fY@ktQ}% zv`eGm7~xRDH}W!}Z$FiSbnya+-G=Kx)agqlo6W(Tav0BuA#w(Dfq(ZYeuMsx#k~U8Q|pl;{bSt$OB{O?B6;b#CnHyzZxy+o zm8Z+`2+P!_ln{w$AT9X6_y+9anRt%?Vo~?jtR=N0rJa%!dmH0rP|P4w9^@5`@@L=H}x_HRFR8T z=ZWD3AAj<~54q0p2Nl7)2=JWuJmfpW4KIXRi5buGL*57v1-(J|>PfsD5C7uc6&aK* zzqSf?Pl*s|bKE{2PKlV;J;#qMj&3YPhUG6*1blUk2>PWqv#N?Y;-trq_xq-lY18aO z9NYyouw&$&T4qc2_e|FL1uabyTPKWvRGJxI8+|bnM3JUG1k)9*LY`LkPDwpHuPhFS zh?X6PGcmpJ)+>W{p9@nE{=>d^P%12Mb5&vI?-XZc;_u z$;-U`oC%xHI>@rk!D0H-$i95A*5_JM0?PG~&{aK;kd_HosxyCR8lS1C5dt{H;V2CM zv-{&1v-sOH>@lKrTDcas4~_vTH26|N1CKoY z?oai3w_r@Wd$eYDa(HO<}P;or9t&7u64N>rF?`uatl@Msd9KvLg;S`sGJ?atg zaGS_4&~p{X5-z7=HI-hAiYIqii(++NdZD0=YMMRc-Omb@UssBjw6#`+yT_^0N?lw< zLOCe%gqva)b!lrwaOTq-f!|#B&|rd^r52HRo~u?}lw@Tjbos;RWvwy0zlkW>^CHM=iW7i(Y2mXw|v zVIZ6z~ak`9&!;b@>c86aM9@GqMGaYs&qm4Ratj6aPO-}fR@oK)Uz>3vriJi z+tEc!D5qI|xns4aeNKn9rnXl~+fvOot3a(3m9bO?`^3!{0*u}tG`i;A*2<614&V=q z!}3$oMhl1Rv@y(g=?~ImeH|m5YB9`tI~8*sp1c{cpv|(+*{|STo9#w2cTRrYyilUo z?EWyLWNFr>CP}z)jAj#k<4UdrA6vNL!-}x2+bawrW%>OIGkQ1k1OB$Pc$oR!%x`A> z^`aS{H)8W-6(hg&F0biS96sEoF%<8P(OO$c%Qn;*ipwTux^cS z+3IUi9qB_GW{s{tv|Ic;dlM^$)X>Z~KD3r|C51=5(f(thpnt#k#*U zhKux`iklj2At%~eeMS(WVZa#IxIgZWI?7O0zLQ5Jy0HPKzHW}UA2{5ne@eAR)H$&S zn`;BlY+)Sf6~LUZ*4@H^i5KgDd82`aXFaZ%Mo&?jyaqj3&ZtsfvOj1J~X%{8G?7+28`F++ZJBE7a)H?M> zTjbUHOj|AF+{`m{WN3v~?FKCKN7fE=Ev@A3b-coBUF%ChQzs~LA?vL352APk4zxCd zg9jEHD%61*(!M+8AHUeQAG&V0BCz{m)ka&DZd%z{H}t%43C3{?k9_IXcZ!O9-~vsw zh(xpK;r?Ox<@0wZt|s?t=Ip4Y?c5+1s}&Bdx!9&1k|<>d`jW9n@L zvvt_P9Oe6cJn!(BS{@bT-Ptp(mz{Q>+8ov7wLCO!lr;?hIq;sUGctfah5r8kvz7z< z-=Q~FQPUh9D5W-z#HCbU8@)}#T=c0@P^u_PqAJ?oOn+0g@x%pxB&rM6FRIsk>g)ZOF$h3oB z0^hI}9WO*QFGenL25E(%2yb&6s*)$we~dbFFXX|$KYsOZEeFh<_tN!#_2lL6UC2Fj z3ttW%q+w<5a*w@d%Ky}3zli)%%PW*KsYY28qmol##^~9AeQ%1=u)g{CeZE{JW#`o@ z1{N9BuA%Q&2iTc7KrM#~mvbSYmP2i7Pvm{{3<76REr$|y|0a$1C1UKjghWAF;DZ#I z6KRXw>y#2j$FSxOqEswu;Loxa@g!A^!{$(pFB&4N#kcS`W-jlIbF|KMrP#+c@!ofN zWq(+-<{1b@(>l1x1k`eHcHtYpD)i*vID+dXlIZ|yIjH9SRm&kJ@4s3Oom9noj1yUK z!apvq^(qBrYt$8DnBIWVECE}+^mpu~Nm*MND*~nVbuCO^=zbw3|#X+G@ z0+R6okEuD4zQ^=g0UlZfCjM3x6^6W=2pW}7AA0~}6gdMk?YinlLHYvBsr*uZMX&+} zOT?GeIs1W`FCV+swz#}FRR}^dQrdicA7I))>(xypuBWIBLBZ}#o`d{qr)o=3Q^X#_ zX_BH+g2MzX_AyAgDg+11oU8b$UZ}_$jWhGAPH@K@bBh@*x#2K+Ww;bn!iGNxC*e;_ zT1&3N!$zlEga#_D89NN!Z&x`8>Ka*>%*wv1(XwWEkjd{&I=eVPlP`an>nPIq{ytFE zNH5&6b`#b9MNIcXg%rhMM^Ht-il?dW^vHT|*OV%GW;{FAeq${)Niash*c)C?oZhMs zL)B+;{uyU$(@Yi@Xni)P(c)Jw&$f(BpJiE7t|W7H4_)bszBa<-C}WTvrdt`USgSU} z7>9HdNA!BXGz~W9Jl)$X)QCay zh-LNu1-C@SiAGBLh8(TFcR%Q)2{^<9NKiR#po;>a&%bW|`5&Mf)IS$0*bYDFR$5qz zpH^H(g#Lez!Gie!k3Gk5n>7W@U<)tFYnewOTiFnXp|2G_7) z|1yX%6ByWS;KUOa@O?Vje^_8(+1{Y8em`S@&PRfJdGH(P+5pV`9g6;EV}ChZ!iNhxaFscGnpa)s|zgM<*Bw&_5 zql%asS{TUaTAErJ|LqFz2Ces1SI+?0g)iVQJ%-ymiiDe&f0vPNAR#g7yB0zSe z0-VbF8SO7wvfPctOU~lZ2XONU(DzLAS&|yf|!O-}QxdT%56QTRy z`GBgofdSM0H&hUNn7p?^f00bw&98@Ei2E=ASqbn zwtvN+U&;aGPLX*E92)^^B?kQ5&Dmcee;ZrK&`8(O!a)eIu|K;1mmF*jAZxG&<^wQ0 z|GToi>(y=}|H9br@~j|B4(j2iG6WKr`+#=^9n$^x%Jy#5xDEbOxFS^q!hywKBlu;g z0TFR{;F7EXOyf8)FfiPIDFA=7y`6P#69LWUyXQs_iJ8+^;JF`wG{|q@zvID5M%?nRQ5*Q0B^4WtebPe!|OKI zwYl)m+r=+jm@gMLix~jfeajh!_}qs5%NhRD=KVT@AVmH-_1#C7JLWX&0Oc-cd4IwbcNsQbq9nv4JhSiY*Goi4GL1Sxa=Py zv##yPhyf6l1%cC(L^pq#F?WM0x>`Bty8MAh zWZ$5|3}Cz^l0VDRBknfrKbbXX^a_T$|MmU6E=!O>hA5MgQ~|t-0M-LU;s35|Z~cZ} zf=cUJ7+Kp{8XADm|G+hcWKaby5b?`yxoNYeUlIV}s@j?UGT;4rY!|2ua4ZI>?52cg z`hN@hwGZ3_IdJh*M;QpLbT$Au`A_@WJJ4!P^zy^RZ+{Ent^jl0t zeQTRvBxj`^zL~QCrYFGb&D_Uj{5Ixa)BP7|b2K=fKr1laQGnd>CU@bVZzF-!0t98? zjqR^&_l}nlkV(yvufjC|+@%2A-BeD@>}|~3KJFKu3G2M{1snid4g78d>|p8jl=dn1Ynne-^~}4oaNs`3%l4@+y6oepX`gLzyZYDQb1VwJt`3A_3r=$ zv8vx1qyTDSaXaS8uigf|Z4du6t-tQMK*D`YTH>P$m{`-Tn5VgZ8}_eB@C&3MnA*%y zV0yYj|NQc_yLB7sTFm>EA7N<)xb$TITJK@qVLLrX)eUnJ0P&X7#P zfJsULOwxz{d1z1q5`1_!-0!9*beoHiBcP7nThU4N`)#z_>iDOR#LwzDsD^q{129Ji zKm$SQzbo4t{ronpI8ZcM7qA#Xz?uBlBI#$yfoeSET>vicmYYMqxDEN2hVNhwWP(~o zJ0T;$cxM5nJpGR~kObL&+(!Cu`R3YZ5~QMrR=^vN{$F7qWCH)|t@<n zfMJ5F0RMYsdm93C>u2r%N9^uz-0n_uF=&Jbw1Dv>16Fa<7jEDC4T+x`Q~fIAe+sL2 zSqq?B0Q2EyPLKfe8}yq4`1@O@yV)-iQ`e>f2=LxwKNJ2p1b$}!7s;^DXQx$MK>k4h z`!`=$aFKq4e(k8mwOi6(_>8n&`KX7$5cYr}+$0i&`hO?#i|B0mVI+747|BDppQH1S z`@bRbcZmMQDvWtDeclW(sZIdgn~W1;{RZ=zNUq(I{z3(tX+H#+0V1IF>YGGlaehMt z5%f<*ce(F=;~P*{w~vW z_?AxqO0|#yJ%h?9|9fS79}@hA$Tb;VyCr4(g@0--*Wr)@C{zNgZJ@Hd|6af@0}$kY z=`ybSCsk7m1ASe)pZY#u_e~&~`Hf&p?E}N90<lE|1~QJ8dcRt$7!?0Tarf+o;r|W%H923qCFQt#3~{L@M7e;qx&rygO`)?3{)UL$ zzbnqan9mUpn0Ffh(IniO&tzi1f&E+Pw?DJJoA>!Z5)?;I6Rv>-3>G671egl6^EZ1&H8GjMl9&#v=J^`p819||~>;Jp5y_3{` zL*=%z|1Ab^x4J{5Na*kYP3!=gxT$VRt>2KjHiB!nzw#C{IuP3Q01=y8>Q2!44UwPK zeMf8n=|lLc_6g`M?-G#K%^_gu{|5aU-`8$Q+3uE8TwP;H0G{rhl3#{5;nl5r4t11ti1;5MlXOJiy;< zZ|@g>A^=L3K&$P4XD@fzCTIv-+0)i^0J7<@ zt^wd@+`@6Y6qIWuOpFs&;f7V11zZDbac;x|3pAq*XEj?{&E8aB&W;|vqCYtT@qsBBAj2X%S$%`Tuo5ni(heKr4vUfMRYM zu3*}qs9mE0Ozyj#6Z;VHN<1K}Z-CbmxG@^~%s=7(ZZyB5$K+tIQUEBZ46ucphDM(E zCwe!=!*quW2U$QcZAG;t0L}v}I*HvF5OKku2nbqRfDZEjyV}=C{bO&Wzg&j|nfE3w zO6Le5!en3_n*RpXk&-`Az0($c26)%{ z2Z%_%9II_9AW2DJ%JSV9)61qm5xE9$4-_hLw7m8o?lwds2Qx{~AtLNsK_;~Q|3r=X z7na^m-sKE(4Z8pl$s5Bt>iQFb-&(qWwWF26UkikHkL=^*tlTz0xEDz1Z<@Rw(7*Qg z%DN^tds3!f1RrsPQU!6q_(HIM_7QLT|3u*5@cH+8!`%Y_%6vZm4j2LkU{? zXDkoHX|~wJIZZa{bO;%q<2dCM5-hU3ov0~piaKDH;el}Itc5dH(dC$zIr7q(;&D!= ziMKhmoC<=MKWe6QA+Nz`v(TuG$)x(d;^F(A_sTcMcK&*P-*bQ7=Xo!Zo)wdm=Y^k- zt_BBw$cb8O7)@vg);dA5og31`d#4 ziTT{Jhh@jyipA*pDW;Yiep&a*YB*v!9FeMjhuZ|l`G{O#zdqhw$+iCFUDrKmhi37c zlTGwvp}nsVQOWK5GhhA4@@t0>J#J;25GV(VDlya)zWOYjy9V_XtrF97O#qCANAl0< z--~ZU)vjC{{+?d=DbnJ%Px4lMI?n`b!$6g&NF+06c5Um1=(+{bZJq51z^8B=F}(upUrp;_Lm9ybl1t?#ai0|#A#Dyo+{15nuOp<`{W zthXN$(s)bA8Gyo=x`qXZjsQTq08m)r2*9W4I*zGoee-k3--lpGt+lz*5rAI-uqioM z%TD`j0S7c>MBj4+Ac=XbRQu$mmDOy`pAS9LO#U*~IQlgE1})W8cIu7)t8@>@zXpe+ zGwaA24TRX;&skBbJd4AUYew;(HFXGk*YWQq;cxp#8lc$BT9NNuWxnVxsJI#`o3i~WSyr25voC5E~C^Nk6wX9I1h&`J0#tU(inrJmazPrtVQ8R+8y+?pO; z7`0IY!A+s$f$v=A(Q#}G-)NXDHP#Tj`1=qWZ-4q7f!Oswl8r!E literal 0 HcmV?d00001 diff --git a/java8/run/lambda-runtime-mock/src/main/java/lambdainternal/LambdaRuntime.java b/java8/run/lambda-runtime-mock/src/main/java/lambdainternal/LambdaRuntime.java index 156f70db..0e2f67b1 100644 --- a/java8/run/lambda-runtime-mock/src/main/java/lambdainternal/LambdaRuntime.java +++ b/java8/run/lambda-runtime-mock/src/main/java/lambdainternal/LambdaRuntime.java @@ -1,21 +1,34 @@ package lambdainternal; +import java.io.ByteArrayOutputStream; +import java.io.OutputStream; +import java.io.PrintStream; +import java.lang.ProcessBuilder.Redirect; import java.lang.reflect.Field; import java.math.BigInteger; +import java.net.ConnectException; +import java.net.HttpURLConnection; +import java.net.URL; import java.nio.charset.StandardCharsets; import java.text.SimpleDateFormat; -import java.util.Collections; +import java.util.Arrays; +import java.util.Base64; import java.util.Date; import java.util.Map; import java.util.Random; import java.util.Scanner; import java.util.UUID; +import com.google.gson.Gson; + import sun.misc.Unsafe; +@SuppressWarnings("restriction") public class LambdaRuntime { private static Unsafe unsafe; + private static final String API_BASE = "http://127.0.0.1:9001/2018-06-01"; + private static final boolean STAY_OPEN = !isNullOrEmpty(getEnv("DOCKER_LAMBDA_STAY_OPEN")); private static final String INVOKE_ID = UUID.randomUUID().toString(); private static final String AWS_ACCESS_KEY_ID; private static final String AWS_SECRET_ACCESS_KEY; @@ -23,22 +36,18 @@ public class LambdaRuntime { private static final String AWS_REGION; private static final String HANDLER; private static final String EVENT_BODY; - private static final int TIMEOUT; - private static final String X_AMZN_TRACE_ID; - private static final String CLIENT_CONTEXT = null; - private static final String COGNITO_IDENTITY_ID = ""; - private static final String COGNITO_IDENTITY_POOL_ID = ""; - private static final String FUNCTION_ARN; - private static final String ACCOUNT_ID; - private static boolean alreadyInvoked = false; - private static long invokeStart; + private static final PrintStream ORIG_STDERR = System.err; + private static final ByteArrayOutputStream LOGS = new ByteArrayOutputStream(); + private static long deadlineMs; + private static boolean invoked = false; + private static boolean errored = false; public static final int MEMORY_LIMIT; public static final String LOG_GROUP_NAME; public static final String LOG_STREAM_NAME; public static final String FUNCTION_NAME; public static final String FUNCTION_VERSION; - public static volatile boolean needsDebugLogs; + public static volatile boolean needsDebugLogs = false; static { try { @@ -49,7 +58,8 @@ public class LambdaRuntime { throw new RuntimeException(e); } - TIMEOUT = Integer.parseInt(getEnvOrDefault("AWS_LAMBDA_FUNCTION_TIMEOUT", "300")); + deadlineMs = System.currentTimeMillis() + + (1000 * Long.parseLong(getEnvOrDefault("AWS_LAMBDA_FUNCTION_TIMEOUT", "300"))); MEMORY_LIMIT = Integer.parseInt(getEnvOrDefault("AWS_LAMBDA_FUNCTION_MEMORY_SIZE", "1536")); FUNCTION_NAME = getEnvOrDefault("AWS_LAMBDA_FUNCTION_NAME", "test"); FUNCTION_VERSION = getEnvOrDefault("AWS_LAMBDA_FUNCTION_VERSION", "$LATEST"); @@ -59,17 +69,12 @@ public class LambdaRuntime { AWS_SECRET_ACCESS_KEY = getEnvOrDefault("AWS_SECRET_ACCESS_KEY", "SOME_SECRET_ACCESS_KEY"); AWS_SESSION_TOKEN = getEnv("AWS_SESSION_TOKEN"); AWS_REGION = getEnvOrDefault("AWS_REGION", getEnvOrDefault("AWS_DEFAULT_REGION", "us-east-1")); - ACCOUNT_ID = getEnvOrDefault("AWS_ACCOUNT_ID", "000000000000"); - FUNCTION_ARN = getEnvOrDefault("AWS_LAMBDA_FUNCTION_INVOKED_ARN", - "arn:aws:lambda:" + AWS_REGION + ":" + ACCOUNT_ID + ":function:" + FUNCTION_NAME); - X_AMZN_TRACE_ID = getEnvOrDefault("_X_AMZN_TRACE_ID", ""); String[] args = getCmdLineArgs(); - HANDLER = args.length > 1 ? args[1] : getEnvOrDefault("AWS_LAMBDA_FUNCTION_HANDLER", getEnvOrDefault("_HANDLER", "index.Handler")); + HANDLER = args.length > 1 ? args[1] + : getEnvOrDefault("AWS_LAMBDA_FUNCTION_HANDLER", getEnvOrDefault("_HANDLER", "index.Handler")); EVENT_BODY = args.length > 2 ? args[2] : getEventBody(); - LambdaRuntime.needsDebugLogs = false; - setenv("AWS_LAMBDA_FUNCTION_NAME", FUNCTION_NAME, 1); setenv("AWS_LAMBDA_FUNCTION_VERSION", FUNCTION_VERSION, 1); setenv("AWS_LAMBDA_FUNCTION_MEMORY_SIZE", Integer.toString(MEMORY_LIMIT), 1); @@ -78,69 +83,151 @@ public class LambdaRuntime { setenv("AWS_REGION", AWS_REGION, 1); setenv("AWS_DEFAULT_REGION", AWS_REGION, 1); setenv("_HANDLER", HANDLER, 1); + + try { + ProcessBuilder pb = new ProcessBuilder("/var/runtime/mockserver").redirectInput(Redirect.PIPE) + .redirectOutput(Redirect.INHERIT).redirectError(Redirect.INHERIT); + Map mockEnv = pb.environment(); + mockEnv.put("DOCKER_LAMBDA_NO_BOOTSTRAP", "1"); + mockEnv.put("DOCKER_LAMBDA_USE_STDIN", "1"); + Process mockServer = pb.start(); + mockServer.getOutputStream().write(EVENT_BODY.getBytes(StandardCharsets.UTF_8)); + mockServer.getOutputStream().close(); + } catch (Exception e) { + throw new RuntimeException(e); + } } - private static String getEventBody() { - String eventBody = getEnv("AWS_LAMBDA_EVENT_BODY"); - if (eventBody == null) { - eventBody = getEnv("DOCKER_LAMBDA_USE_STDIN") != null ? - new Scanner(System.in).useDelimiter("\\A").next() : "{}"; + public static void initRuntime() { + for (int i = 0; i < 20; i++) { + try { + HttpURLConnection conn = (HttpURLConnection) new URL(API_BASE + "/ping").openConnection(); + int responseCode = conn.getResponseCode(); + if (responseCode != 200) { + throw new RuntimeException("Unexpected status code from ping: " + responseCode); + } + break; + } catch (Exception e) { + if (i < 19) + continue; + throw new RuntimeException(e); + } } - return eventBody; } - private static String getEnvOrDefault(String key, String defaultVal) { - String envVal = getEnv(key); - return envVal != null ? envVal : defaultVal; + public static WaitForStartResult waitForStart() { + if (!STAY_OPEN) { + System.setOut(ORIG_STDERR); + System.setErr(ORIG_STDERR); + } + return new WaitForStartResult(INVOKE_ID, HANDLER, "event", AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, + AWS_SESSION_TOKEN, true); } - private static String randomLogStreamName(String functionVersion) { - byte[] randomBuf = new byte[16]; - new Random().nextBytes(randomBuf); - return String.format("%s/[%s]%016x", new SimpleDateFormat("yyyy/MM/dd").format(new Date()), functionVersion, - new BigInteger(1, randomBuf)); + public static InvokeRequest waitForInvoke() { + invoked = true; + try { + HttpURLConnection conn = (HttpURLConnection) new URL(API_BASE + "/runtime/invocation/next") + .openConnection(); + try { + int responseCode = conn.getResponseCode(); + if (responseCode != 200) { + throw new RuntimeException("Unexpected status code from invocation/next: " + responseCode); + } + } catch (ConnectException e) { + System.exit(errored ? 1 : 0); + } + String requestId = conn.getHeaderField("Lambda-Runtime-Aws-Request-Id"); + deadlineMs = Long.parseLong(conn.getHeaderField("Lambda-Runtime-Deadline-Ms")); + String functionArn = conn.getHeaderField("Lambda-Runtime-Invoked-Function-Arn"); + String xAmznTraceId = conn.getHeaderField("Lambda-Runtime-Trace-Id"); + String clientContext = conn.getHeaderField("Lambda-Runtime-Client-Context"); + String cognitoIdentity = conn.getHeaderField("Lambda-Runtime-Cognito-Identity"); + + CognitoIdentity cognitoIdentityObj = new CognitoIdentity(); + if (!isNullOrEmpty(cognitoIdentity)) { + cognitoIdentityObj = new Gson().fromJson(cognitoIdentity, CognitoIdentity.class); + } + + needsDebugLogs = "Tail".equals(conn.getHeaderField("Docker-Lambda-Log-Type")); + LOGS.reset(); + + String responseBody = ""; + try (Scanner scanner = new Scanner(conn.getInputStream())) { + responseBody = scanner.useDelimiter("\\A").next(); + } + long eventBodyAddress = 0; + byte[] eventBodyBytes = responseBody.getBytes(StandardCharsets.UTF_8); + eventBodyAddress = unsafe.allocateMemory(eventBodyBytes.length); + for (int i = 0; i < eventBodyBytes.length; i++) { + unsafe.putByte(eventBodyAddress + i, eventBodyBytes[i]); + } + + return new InvokeRequest(-1, requestId, xAmznTraceId, AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, + AWS_SESSION_TOKEN, clientContext, cognitoIdentityObj.identity_id, + cognitoIdentityObj.identity_pool_id, eventBodyAddress, eventBodyBytes.length, needsDebugLogs, + functionArn); + } catch (Exception e) { + throw new RuntimeException(e); + } } - private static void systemLog(String str) { - System.err.println("\033[32m" + str + "\033[0m"); + public static void reportDone(final String invokeid, final byte[] result, final int resultLength, + final int waitForExitFlag) { + if (!invoked) { + return; + } + String invokeType = errored ? "/error" : "/response"; + try { + HttpURLConnection conn = (HttpURLConnection) new URL( + API_BASE + "/runtime/invocation/" + invokeid + invokeType).openConnection(); + conn.setRequestMethod("POST"); + conn.setDoOutput(true); + + byte[] logs = LOGS.toByteArray(); + if (logs.length > 0) { + if (logs.length > 4096) { + logs = Arrays.copyOfRange(logs, logs.length - 4096, logs.length); + } + conn.setRequestProperty("Docker-Lambda-Log-Result", Base64.getEncoder().encodeToString(logs)); + } + + byte[] resultCopy = result == null ? new byte[0] + : new String(result, 0, resultLength).getBytes(StandardCharsets.UTF_8); + try (OutputStream os = conn.getOutputStream()) { + os.write(resultCopy); + } + int responseCode = conn.getResponseCode(); + if (responseCode != 202) { + throw new RuntimeException("Unexpected status code from invocation/response: " + responseCode); + } + } catch (Exception e) { + throw new RuntimeException(e); + } } - private static void systemErr(String str) { - System.err.println("\033[31m" + str + "\033[0m"); + public static void reportFault(final String invokeid, final String msg, final String exceptionClass, + final String stack) { + errored = true; + systemErr(stack); } - public static String getEnv(final String envVariableName) { - return System.getenv(envVariableName); + public static int getRemainingTime() { + return (int) (deadlineMs - System.currentTimeMillis()); } - public static void initRuntime() { + public static void sendContextLogs(final byte[] msg, final int length) { + (STAY_OPEN ? System.out : System.err).print(new String(msg, 0, length, StandardCharsets.UTF_8)); } - public static void reportRunning(final String p0) { + public static synchronized void streamLogsToSlicer(final byte[] msg, final int offset, final int length) { + LOGS.write(msg, offset, length); } - public static void reportDone(final String invokeid, final byte[] result, final int resultLength, final int p3) { - if (!alreadyInvoked) { - return; - } - double durationMs = (System.nanoTime() - invokeStart) / 1_000_000d; - long billedMs = Math.min(100 * ((long) Math.floor(durationMs / 100) + 1), TIMEOUT * 1000); - long maxMemory = Math.round((Runtime.getRuntime().totalMemory() - - Runtime.getRuntime().freeMemory()) / (1024 * 1024)); - systemLog("END RequestId: " + invokeid); - systemLog(String.join("\t", - "REPORT RequestId: " + invokeid, - "Duration: " + String.format("%.2f", durationMs) + " ms", - "Billed Duration: " + billedMs + " ms", - "Memory Size: " + MEMORY_LIMIT + " MB", - "Max Memory Used: " + maxMemory + " MB", - "")); - if (result != null) { - System.out.println("\n" + new String(result, 0, resultLength)); - } + public static void reportRunning(final String invokeId) { } - public static void reportException(final String p0) { + public static void reportException(final String xrayJsonException) { } public static void reportUserInitStart() { @@ -155,80 +242,66 @@ public static void reportUserInvokeStart() { public static void reportUserInvokeEnd() { } - public static void reportFault(final String invokeid, final String msg, final String exceptionClass, - final String stack) { - systemErr(stack); - } - - public static void setenv(final String key, final String val, final int p2) { - getMutableEnv().put(key, val); - } - - public static void unsetenv(final String key) { - getMutableEnv().remove(key); + public static void writeSandboxLog(String msg) { } - public static WaitForStartResult waitForStart() { - return new WaitForStartResult(INVOKE_ID, HANDLER, "event", AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, - AWS_SESSION_TOKEN, false); + public static String getEnv(final String key) { + return System.getenv(key); } - public static InvokeRequest waitForInvoke() { - if (alreadyInvoked) { - System.exit(0); - } - alreadyInvoked = true; - long address = 0; - byte[] eventBodyBytes = EVENT_BODY.getBytes(StandardCharsets.UTF_8); + @SuppressWarnings("unchecked") + public static void setenv(final String key, final String val, final int flag) { try { - address = unsafe.allocateMemory(eventBodyBytes.length); - for (int i = 0; i < eventBodyBytes.length; i++) { - unsafe.putByte(address + i, eventBodyBytes[i]); - } + Map env = System.getenv(); + Field field = env.getClass().getDeclaredField("m"); + field.setAccessible(true); + ((Map) field.get(env)).put(key, val); + field.setAccessible(false); } catch (Exception e) { - // Not sure, could happen if memory is exhausted? + // Should never happen on Lambda throw new RuntimeException(e); } - invokeStart = System.nanoTime(); - systemLog("START RequestId: " + INVOKE_ID + " Version: " + FUNCTION_VERSION); - return new InvokeRequest(-1, INVOKE_ID, X_AMZN_TRACE_ID, AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, - AWS_SESSION_TOKEN, CLIENT_CONTEXT, COGNITO_IDENTITY_ID, COGNITO_IDENTITY_POOL_ID, address, - eventBodyBytes.length, false, FUNCTION_ARN); } - public static int getRemainingTime() { - return (int) ((TIMEOUT * 1000) - Math.round((System.nanoTime() - invokeStart) / 1_000_000d)); + private static String getEventBody() { + String eventBody = getEnv("AWS_LAMBDA_EVENT_BODY"); + if (eventBody == null) { + eventBody = getEnv("DOCKER_LAMBDA_USE_STDIN") != null ? new Scanner(System.in).useDelimiter("\\A").next() + : "{}"; + } + return eventBody; } - public static void sendContextLogs(final byte[] msg, final int length) { - System.err.print(new String(msg, 0, length, StandardCharsets.UTF_8)); + private static String getEnvOrDefault(String key, String defaultVal) { + String envVal = getEnv(key); + return envVal != null ? envVal : defaultVal; + } + + private static String randomLogStreamName(String functionVersion) { + byte[] randomBuf = new byte[16]; + new Random().nextBytes(randomBuf); + return String.format("%s/[%s]%016x", new SimpleDateFormat("yyyy/MM/dd").format(new Date()), functionVersion, + new BigInteger(1, randomBuf)); } - public static synchronized void streamLogsToSlicer(final byte[] p0, final int p1, final int p2) { + private static void systemErr(String str) { + ORIG_STDERR.println("\033[31m" + str + "\033[0m"); } private static String[] getCmdLineArgs() { return System.getProperty("sun.java.command").split(" ", 3); } - private static Map getMutableEnv() { - Class[] classes = Collections.class.getDeclaredClasses(); - Map env = System.getenv(); - for (Class cl : classes) { - if ("java.util.Collections$UnmodifiableMap".equals(cl.getName())) { - try { - Field field = cl.getDeclaredField("m"); - field.setAccessible(true); - Object obj = field.get(env); - return (Map) obj; - } catch (Exception e) { - // Should never happen on Lambda - throw new RuntimeException(e); - } - } + private static boolean isNullOrEmpty(String str) { + return str == null || str.isEmpty(); + } + + private static class CognitoIdentity { + private final String identity_id = null; + private final String identity_pool_id = null; + + private CognitoIdentity() { } - // Should never happen on Lambda - throw new RuntimeException("Could not find java.util.Collections$UnmodifiableMap class"); } public static class AWSCredentials { diff --git a/java8/run/lambda-runtime-mock/src/main/java/lambdainternal/LambdaRuntime.orig.java b/java8/run/lambda-runtime-mock/src/main/java/lambdainternal/LambdaRuntime.orig.java deleted file mode 100644 index e1b39bd7..00000000 --- a/java8/run/lambda-runtime-mock/src/main/java/lambdainternal/LambdaRuntime.orig.java +++ /dev/null @@ -1,112 +0,0 @@ -package lambdainternal; - -public class LambdaRuntime -{ - public static final int MEMORY_LIMIT = Integer.parseInt(getEnv("AWS_LAMBDA_FUNCTION_MEMORY_SIZE")); - public static final String LOG_GROUP_NAME = getEnv("AWS_LAMBDA_LOG_GROUP_NAME"); - public static final String LOG_STREAM_NAME = getEnv("AWS_LAMBDA_LOG_STREAM_NAME"); - public static final String FUNCTION_NAME = getEnv("AWS_LAMBDA_FUNCTION_NAME"); - public static final String FUNCTION_VERSION = getEnv("AWS_LAMBDA_FUNCTION_VERSION"); - public static volatile boolean needsDebugLogs = false; - - public static String getEnv(String envVariableName) - { - return System.getenv(envVariableName); - } - - public static native void initRuntime(); - - public static native void reportRunning(String paramString); - - public static native void reportDone(String paramString, byte[] paramArrayOfByte, int paramInt1, int paramInt2); - - public static native void reportException(String paramString); - - public static native void reportUserInitStart(); - - public static native void reportUserInitEnd(); - - public static native void reportUserInvokeStart(); - - public static native void reportUserInvokeEnd(); - - public static native void reportFault(String paramString1, String paramString2, String paramString3, String paramString4); - - public static native void setenv(String paramString1, String paramString2, int paramInt); - - public static native void unsetenv(String paramString); - - public static native WaitForStartResult waitForStart(); - - public static native InvokeRequest waitForInvoke(); - - public static native int getRemainingTime(); - - public static native void sendContextLogs(byte[] paramArrayOfByte, int paramInt); - - public static synchronized native void streamLogsToSlicer(byte[] paramArrayOfByte, int paramInt1, int paramInt2); - - public static class AWSCredentials - { - public final String key; - public final String secret; - public final String session; - - public AWSCredentials(String key, String secret, String session) - { - this.key = key; - this.secret = secret; - this.session = session; - } - } - - public static class InvokeRequest - { - public final int sockfd; - public final String invokeid; - public final String xAmznTraceId; - public final LambdaRuntime.AWSCredentials credentials; - public final String clientContext; - public final String cognitoIdentityId; - public final String cognitoPoolId; - public final long eventBodyAddr; - public final int eventBodyLen; - public final boolean needsDebugLogs; - public final String invokedFunctionArn; - - public InvokeRequest(int sockfd, String invokeid, String xAmznTraceId, - String awskey, String awssecret, String awssession, String - clientcontext, String cognitoidentityid, String cognitopoolid, long - addr, int len, boolean needsDebugLogs, String invokedFunctionArn) { - this.sockfd = sockfd; - this.invokeid = invokeid; - this.xAmznTraceId = xAmznTraceId; - this.eventBodyAddr = addr; - this.eventBodyLen = len; - this.clientContext = clientcontext; - this.cognitoIdentityId = cognitoidentityid; - this.cognitoPoolId = cognitopoolid; - this.credentials = new LambdaRuntime.AWSCredentials(awskey, awssecret, awssession); - this.needsDebugLogs = needsDebugLogs; - this.invokedFunctionArn = invokedFunctionArn; - } - } - - public static class WaitForStartResult - { - public final String invokeid; - public final String handler; - public final String mode; - public final LambdaRuntime.AWSCredentials credentials; - public final boolean suppressInit; - - public WaitForStartResult(String invokeid, String handler, String mode, String awskey, String awssecret, String awssession, boolean suppressInit) - { - this.invokeid = invokeid; - this.handler = handler; - this.mode = mode; - this.credentials = new LambdaRuntime.AWSCredentials(awskey, awssecret, awssession); - this.suppressInit = suppressInit; - } - } -} From 035380a40a0d8bce58470af4adc61ebcc2ad84d3 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Sun, 10 Nov 2019 21:24:59 -0500 Subject: [PATCH 082/271] Add Lambda API support to dotnetcore2.0/2.1 --- dotnetcore2.0/run/Dockerfile | 5 + .../run/MockBootstraps/MockLambdaContext.cs | 61 +++++-- .../run/MockBootstraps/MockRuntime.cs | 171 +++++++++++++++--- dotnetcore2.0/run/MockBootstraps/Program.cs | 26 ++- dotnetcore2.1/run/Dockerfile | 5 + .../run/MockBootstraps/MockLambdaContext.cs | 61 +++++-- .../run/MockBootstraps/MockRuntime.cs | 171 +++++++++++++++--- dotnetcore2.1/run/MockBootstraps/Program.cs | 26 ++- examples/dotnetcore2.1/test.sln | 17 ++ 9 files changed, 453 insertions(+), 90 deletions(-) create mode 100644 examples/dotnetcore2.1/test.sln diff --git a/dotnetcore2.0/run/Dockerfile b/dotnetcore2.0/run/Dockerfile index fe348e1f..190e6767 100644 --- a/dotnetcore2.0/run/Dockerfile +++ b/dotnetcore2.0/run/Dockerfile @@ -10,6 +10,9 @@ COPY MockBootstraps/ . RUN dotnet publish --output /app/ --configuration Release +FROM lambci/lambda:provided + + FROM lambci/lambda-base ENV PATH=/var/lang/bin:$PATH \ @@ -21,6 +24,8 @@ RUN rm -rf /var/runtime /var/lang && \ COPY --from=0 /app/MockBootstraps.* /var/runtime/ +COPY --from=1 /var/runtime/init /var/runtime/mockserver + USER sbx_user1051 ENTRYPOINT ["/var/lang/bin/dotnet", "/var/runtime/MockBootstraps.dll"] diff --git a/dotnetcore2.0/run/MockBootstraps/MockLambdaContext.cs b/dotnetcore2.0/run/MockBootstraps/MockLambdaContext.cs index 901df2a2..1a3d6797 100644 --- a/dotnetcore2.0/run/MockBootstraps/MockLambdaContext.cs +++ b/dotnetcore2.0/run/MockBootstraps/MockLambdaContext.cs @@ -14,11 +14,17 @@ public MockLambdaContext(string handler, string eventBody) { RequestId = Guid.NewGuid().ToString(); StartTime = DateTime.Now; - InputStream = new MemoryStream(); - - var eventData = Encoding.UTF8.GetBytes(eventBody); - InputStream.Write(eventData, 0, eventData.Length); - InputStream.Position = 0; + Body = eventBody; + Timeout = Convert.ToInt32(EnvHelper.GetOrDefault("AWS_LAMBDA_FUNCTION_TIMEOUT", "300")); + MemorySize = Convert.ToInt32(EnvHelper.GetOrDefault("AWS_LAMBDA_FUNCTION_MEMORY_SIZE", "1536")); + FunctionName = EnvHelper.GetOrDefault("AWS_LAMBDA_FUNCTION_NAME", "test"); + FunctionVersion = EnvHelper.GetOrDefault("AWS_LAMBDA_FUNCTION_VERSION", "$LATEST"); + LogGroup = EnvHelper.GetOrDefault("AWS_LAMBDA_LOG_GROUP_NAME", $"/aws/lambda/{FunctionName}"); + LogStream = EnvHelper.GetOrDefault("AWS_LAMBDA_LOG_STREAM_NAME", RandomLogStreamName); + Region = EnvHelper.GetOrDefault("AWS_REGION", EnvHelper.GetOrDefault("AWS_DEFAULT_REGION", "us-east-1")); + AccountId = EnvHelper.GetOrDefault("AWS_ACCOUNT_ID", "000000000000"); + Arn = EnvHelper.GetOrDefault("AWS_LAMBDA_FUNCTION_INVOKED_ARN", $"arn:aws:lambda:{Region}:{AccountId}:function:{FunctionName}"); + StayOpen = !string.IsNullOrEmpty(Environment.GetEnvironmentVariable("DOCKER_LAMBDA_STAY_OPEN")); Environment.SetEnvironmentVariable("AWS_LAMBDA_FUNCTION_NAME", FunctionName); Environment.SetEnvironmentVariable("AWS_LAMBDA_FUNCTION_VERSION", FunctionVersion); @@ -39,30 +45,51 @@ public TimeSpan RemainingTime() public long Duration => (long)(DateTime.Now - StartTime).TotalMilliseconds; public long BilledDuration => (long)(Math.Ceiling((DateTime.Now - StartTime).TotalMilliseconds / 100)) * 100; + public long DeadlineMs + { + set + { + Timeout = (int)DateTimeOffset.FromUnixTimeMilliseconds(value).Subtract(DateTime.Now).TotalSeconds; + } + } + + public string Body + { + set + { + InputStream = new MemoryStream(); + var eventData = Encoding.UTF8.GetBytes(value); + InputStream.Write(eventData, 0, eventData.Length); + InputStream.Position = 0; + } + } + public long MemoryUsed => Process.GetCurrentProcess().WorkingSet64; - public Stream InputStream { get; } + public Stream InputStream { get; set; } + + public string RequestId { get; set; } + public DateTime StartTime { get; set; } - public string RequestId { get; } - public DateTime StartTime { get; } + public int Timeout { get; set; } - public int Timeout => Convert.ToInt32(EnvHelper.GetOrDefault("AWS_LAMBDA_FUNCTION_TIMEOUT", "300")); + public int MemorySize { get; set; } - public int MemorySize => Convert.ToInt32(EnvHelper.GetOrDefault("AWS_LAMBDA_FUNCTION_MEMORY_SIZE", "1536")); + public string FunctionName { get; set; } - public string FunctionName => EnvHelper.GetOrDefault("AWS_LAMBDA_FUNCTION_NAME", "test"); + public string FunctionVersion { get; set; } - public string FunctionVersion => EnvHelper.GetOrDefault("AWS_LAMBDA_FUNCTION_VERSION", "$LATEST"); + public string LogGroup { get; set; } - public string LogGroup => EnvHelper.GetOrDefault("AWS_LAMBDA_LOG_GROUP_NAME", $"/aws/lambda/{FunctionName}"); + public string LogStream { get; set; } - public string LogStream => EnvHelper.GetOrDefault("AWS_LAMBDA_LOG_STREAM_NAME", RandomLogStreamName); + public string Region { get; set; } - public string Region => EnvHelper.GetOrDefault("AWS_REGION", EnvHelper.GetOrDefault("AWS_DEFAULT_REGION", "us-east-1")); + public string AccountId { get; set; } - public string AccountId => EnvHelper.GetOrDefault("AWS_ACCOUNT_ID", "000000000000"); + public string Arn { get; set; } - public string Arn => EnvHelper.GetOrDefault("AWS_LAMBDA_FUNCTION_INVOKED_ARN", $"arn:aws:lambda:{Region}:{AccountId}:function:{FunctionName}"); + public bool StayOpen { get; } string RandomLogStreamName => $"{DateTime.Now.ToString("yyyy/MM/dd")}/[{FunctionVersion}]{random.Next().ToString("x") + random.Next().ToString("x")}"; } diff --git a/dotnetcore2.0/run/MockBootstraps/MockRuntime.cs b/dotnetcore2.0/run/MockBootstraps/MockRuntime.cs index 8a28b249..36a82d14 100644 --- a/dotnetcore2.0/run/MockBootstraps/MockRuntime.cs +++ b/dotnetcore2.0/run/MockBootstraps/MockRuntime.cs @@ -3,10 +3,18 @@ using MockLambdaRuntime; using System; using System.Collections; +using System.Collections.Generic; using System.IO; using System.Linq; +using System.Net; +using System.Net.Http; +using System.Net.Http.Headers; +using System.Net.Sockets; using System.Runtime.InteropServices; using System.Text; +using System.Text.RegularExpressions; +using System.Threading; +using System.Threading.Tasks; namespace AWSLambda.Internal.Bootstrap { @@ -16,6 +24,10 @@ internal class MockRuntime : ILambdaRuntime private bool invoked; + private bool logTail; + + private string logs; + private Exception invokeError; private readonly IntPtr sharedMem = Marshal.AllocHGlobal(SBSharedMem.UnmanagedStructSize); @@ -24,6 +36,8 @@ internal class MockRuntime : ILambdaRuntime private readonly MockLambdaContext context; + private static readonly HttpClient client = new HttpClient(); + public IEnvironment Environment { get; } = new SystemEnvironment(); public IXRayProfiler XRayProfiler { get; } = new MockXRayProfiler(); @@ -41,10 +55,11 @@ public MockRuntime(string handler, string body) { Handler = handler, InvokeId = context.RequestId, - SuppressUserCodeInit = false, + SuppressUserCodeInit = true, ErrorCode = null }; invoked = false; + client.Timeout = Timeout.InfiniteTimeSpan; } public bool KeepInvokeLoopRunning() @@ -54,14 +69,42 @@ public bool KeepInvokeLoopRunning() public void Init() { + var result = client.GetAsync("http://127.0.0.1:9001/2018-06-01/ping").Result; + if (result.StatusCode != HttpStatusCode.OK) + { + throw new Exception("Got a bad response from the bootstrap"); + } } - unsafe public InvokeData ReceiveInvoke(IDictionary initialEnvironmentVariables, RuntimeReceiveInvokeBuffers buffers) + unsafe InvokeData ILambdaRuntime.ReceiveInvoke(IDictionary initialEnvironmentVariables, RuntimeReceiveInvokeBuffers buffers) { - Console.Error.WriteLine($"START RequestId: {context.RequestId} Version: {context.FunctionVersion}"); + var result = client.GetAsync("http://127.0.0.1:9001/2018-06-01/runtime/invocation/next").Result; + if (result.StatusCode != HttpStatusCode.OK) + { + throw new Exception("Got a bad response from the bootstrap"); + } + if (invoked) + { + logs = ""; + } invoked = true; + var requestId = result.Headers.GetValues("Lambda-Runtime-Aws-Request-Id").First(); + var deadlineMs = result.Headers.GetValues("Lambda-Runtime-Deadline-Ms").First(); + var functionArn = result.Headers.GetValues("Lambda-Runtime-Invoked-Function-Arn").First(); + var xAmznTraceId = result.Headers.GetValues("Lambda-Runtime-Trace-Id").First(); + var clientContext = HeaderHelper.GetFirstOrDefault(result.Headers, "Lambda-Runtime-Client-Context"); + var cognitoIdentity = HeaderHelper.GetFirstOrDefault(result.Headers, "Lambda-Runtime-Cognito-Identity"); + + logTail = HeaderHelper.GetFirstOrDefault(result.Headers, "Docker-Lambda-Log-Type") == "Tail"; + + var body = result.Content.ReadAsStringAsync().Result; + + context.RequestId = requestId; + context.DeadlineMs = long.Parse(deadlineMs); + context.Body = body; + curSBSharedMem = new SBSharedMem(sharedMem); return new InvokeData(curSBSharedMem) { @@ -72,52 +115,80 @@ unsafe public InvokeData ReceiveInvoke(IDictionary initialEnvironmentVariables, SecretAccessKey = EnvHelper.GetOrDefault("AWS_SECRET_ACCESS_KEY", "SOME_SECRET_ACCESS_KEY"), SessionToken = System.Environment.GetEnvironmentVariable("AWS_SESSION_TOKEN") }, - XAmznTraceId = EnvHelper.GetOrDefault("_X_AMZN_TRACE_ID", ""), + XAmznTraceId = xAmznTraceId, InputStream = context.InputStream, OutputStream = new UnmanagedMemoryStream(curSBSharedMem.EventBody, 0, SBSharedMem.SizeOfEventBody, FileAccess.Write), LambdaContextInternal = new LambdaContextInternal( context.RemainingTime, SendCustomerLogMessage, - new Lazy(), + GetCognitoClientContextInternalLazy(clientContext), context.RequestId, new Lazy(context.Arn), - new Lazy(string.Empty), - new Lazy(string.Empty), + GetCognitoIdentityIdLazy(cognitoIdentity), + GetCognitoIdentityPoolIdLazy(cognitoIdentity), initialEnvironmentVariables ) }; } - /// Try to log everything to stderr except the function result - public void SendCustomerLogMessage(string message) - { - Console.Error.WriteLine(message); - } - public unsafe void ReportDone(string invokeId, string errorType, bool waitForExit) { if (!invoked && invokeError == null) return; - Console.Error.WriteLine($"END RequestId: {context.RequestId}"); + var output = Interop.InteropUtils.ReadUTF8String(curSBSharedMem.EventBody, curSBSharedMem.ResponseBodyLen); - Console.Error.WriteLine($"REPORT RequestId {context.RequestId}\t" + - $"Duration: {context.Duration} ms\t" + - $"Billed Duration: {context.BilledDuration} ms\t" + - $"Memory Size {context.MemorySize} MB\t" + - $"Max Memory Used: {context.MemoryUsed / (1024 * 1024)} MB"); + var suffix = errorType == null ? "response" : "error"; + Task task; + using (var requestMessage = new HttpRequestMessage(HttpMethod.Post, $"http://127.0.0.1:9001/2018-06-01/runtime/invocation/{context.RequestId}/{suffix}")) + { + if (logTail) + { + requestMessage.Headers.Add("Docker-Lambda-Log-Result", Convert.ToBase64String(LogsTail4k())); + } + requestMessage.Content = new StringContent(output); + task = client.SendAsync(requestMessage); + try + { + task.Wait(); + } + catch (AggregateException ae) + { + if (!context.StayOpen && ae.InnerException is HttpRequestException && ae.InnerException.InnerException != null && + (ae.InnerException.InnerException is SocketException || + // happens on dotnetcore2.0 + ae.InnerException.InnerException.GetType().ToString().Equals("System.Net.Http.CurlException"))) + { + System.Environment.Exit(string.IsNullOrEmpty(errorType) && invokeError == null ? 0 : 1); + } + else + { + throw ae; + } + } + var response = task.Result; + if (response.StatusCode != HttpStatusCode.Accepted) + { + throw new Exception($"Unknown response from invocation: {response.StatusCode}"); + } + } if (invokeError != null) { Console.Error.WriteLine(invokeError); - System.Environment.Exit(1); return; } + } - var output = Interop.InteropUtils.ReadUTF8String(curSBSharedMem.EventBody, curSBSharedMem.ResponseBodyLen); - - Console.WriteLine(output); - - System.Environment.Exit(string.IsNullOrEmpty(errorType) ? 0 : 1); + private byte[] LogsTail4k() + { + var logBuf = Encoding.UTF8.GetBytes(logs); + if (logBuf.Length <= 4096) + { + return logBuf; + } + var slicedLogBuf = new byte[4096]; + Array.Copy(logBuf, logBuf.Length - 4096, slicedLogBuf, 0, 4096); + return slicedLogBuf; } public void ReportError(string invokeId, ExceptionResponse exceptionResponse) @@ -138,6 +209,23 @@ public void ReportError(string invokeId, ExceptionResponse exceptionResponse) */ } + /// Try to log everything to stderr except the function result + public void SendCustomerLogMessage(string message) + { + if (context.StayOpen) + { + if (logTail) + { + logs += message + System.Environment.NewLine; + } + Console.WriteLine(message); + } + else + { + Console.Error.WriteLine(message); + } + } + private static void AppendStackTraceToStringBuilder(StringBuilder builder, ExceptionResponse ex) { if (!string.IsNullOrWhiteSpace(ex.StackTrace)) @@ -168,9 +256,27 @@ select s.Trim() into s } } + internal static Lazy GetCognitoIdentityIdLazy(string jsonStr) + { + return new Lazy(() => + { + var match = Regex.Match(jsonStr ?? "", "\"identity_id\":\"([^\"]+)\""); + return match.Success ? match.Groups[1].ToString() : string.Empty; + }); + } + + internal static Lazy GetCognitoIdentityPoolIdLazy(string jsonStr) + { + return new Lazy(() => + { + var match = Regex.Match(jsonStr ?? "", "\"identity_pool_id\":\"([^\"]+)\""); + return match.Success ? match.Groups[1].ToString() : string.Empty; + }); + } + internal static Lazy GetCognitoClientContextInternalLazy(string text) { - return new Lazy(delegate + return new Lazy(() => { CognitoClientContextInternal result = null; if (!string.IsNullOrEmpty(text)) @@ -212,4 +318,17 @@ public void ReportError(ExceptionResponse exceptionResponse) } } + class HeaderHelper + { + /// Gets the given environment variable with a fallback if it doesn't exist + public static string GetFirstOrDefault(HttpHeaders headers, string name) + { + if (headers.TryGetValues(name, out IEnumerable values)) + { + return values.FirstOrDefault(); + } + return null; + } + } + } diff --git a/dotnetcore2.0/run/MockBootstraps/Program.cs b/dotnetcore2.0/run/MockBootstraps/Program.cs index 69a15a43..df26073d 100644 --- a/dotnetcore2.0/run/MockBootstraps/Program.cs +++ b/dotnetcore2.0/run/MockBootstraps/Program.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.Diagnostics; using System.IO; using System.Linq; using System.Reflection; @@ -32,6 +33,12 @@ static void Main(string[] args) } AssemblyLoadContext.Default.Resolving += OnAssemblyResolving; + //Console.CancelKeyPress += delegate { + // // call methods to clean up + //}; + + Process mockServer = null; + try { var shouldWaitForDebugger = GetShouldWaitForDebuggerFlag(args, out var positionalArgs); @@ -39,6 +46,18 @@ static void Main(string[] args) var handler = GetFunctionHandler(positionalArgs); var body = GetEventBody(positionalArgs); + var lambdaRuntime = new MockRuntime(handler, body); + + mockServer = new Process(); + mockServer.StartInfo.FileName = "/var/runtime/mockserver"; + mockServer.StartInfo.CreateNoWindow = true; + mockServer.StartInfo.RedirectStandardInput = true; + mockServer.StartInfo.Environment["DOCKER_LAMBDA_NO_BOOTSTRAP"] = "1"; + mockServer.StartInfo.Environment["DOCKER_LAMBDA_USE_STDIN"] = "1"; + mockServer.Start(); + mockServer.StandardInput.Write(body); + mockServer.StandardInput.Close(); + if (shouldWaitForDebugger) { Console.Error.WriteLine("Waiting for the debugger to attach..."); @@ -51,8 +70,7 @@ static void Main(string[] args) } } - var lambdaRuntime = new MockRuntime(handler, body); - LambdaBootstrap lambdaBootstrap = new LambdaBootstrap(lambdaRuntime, InternalLogger.NO_OP_LOGGER); + var lambdaBootstrap = new LambdaBootstrap(lambdaRuntime, InternalLogger.NO_OP_LOGGER); UnhandledExceptionLogger.Register(); lambdaBootstrap.Initialize(); lambdaBootstrap.Invoke(); @@ -63,6 +81,10 @@ static void Main(string[] args) { Console.Error.WriteLine($"\nUnhandled exception occured in runner:\n{ex}"); } + finally + { + if (mockServer != null) mockServer.Dispose(); + } } /// Called when an assembly could not be resolved diff --git a/dotnetcore2.1/run/Dockerfile b/dotnetcore2.1/run/Dockerfile index 74004101..8ea4836f 100644 --- a/dotnetcore2.1/run/Dockerfile +++ b/dotnetcore2.1/run/Dockerfile @@ -10,6 +10,9 @@ COPY MockBootstraps/ . RUN dotnet publish --output /app/ --configuration Release +FROM lambci/lambda:provided + + FROM lambci/lambda-base ENV PATH=/var/lang/bin:$PATH \ @@ -21,6 +24,8 @@ RUN rm -rf /var/runtime /var/lang && \ COPY --from=0 /app/MockBootstraps.* /var/runtime/ +COPY --from=1 /var/runtime/init /var/runtime/mockserver + USER sbx_user1051 ENTRYPOINT ["/var/lang/bin/dotnet", "/var/runtime/MockBootstraps.dll"] diff --git a/dotnetcore2.1/run/MockBootstraps/MockLambdaContext.cs b/dotnetcore2.1/run/MockBootstraps/MockLambdaContext.cs index 901df2a2..1a3d6797 100644 --- a/dotnetcore2.1/run/MockBootstraps/MockLambdaContext.cs +++ b/dotnetcore2.1/run/MockBootstraps/MockLambdaContext.cs @@ -14,11 +14,17 @@ public MockLambdaContext(string handler, string eventBody) { RequestId = Guid.NewGuid().ToString(); StartTime = DateTime.Now; - InputStream = new MemoryStream(); - - var eventData = Encoding.UTF8.GetBytes(eventBody); - InputStream.Write(eventData, 0, eventData.Length); - InputStream.Position = 0; + Body = eventBody; + Timeout = Convert.ToInt32(EnvHelper.GetOrDefault("AWS_LAMBDA_FUNCTION_TIMEOUT", "300")); + MemorySize = Convert.ToInt32(EnvHelper.GetOrDefault("AWS_LAMBDA_FUNCTION_MEMORY_SIZE", "1536")); + FunctionName = EnvHelper.GetOrDefault("AWS_LAMBDA_FUNCTION_NAME", "test"); + FunctionVersion = EnvHelper.GetOrDefault("AWS_LAMBDA_FUNCTION_VERSION", "$LATEST"); + LogGroup = EnvHelper.GetOrDefault("AWS_LAMBDA_LOG_GROUP_NAME", $"/aws/lambda/{FunctionName}"); + LogStream = EnvHelper.GetOrDefault("AWS_LAMBDA_LOG_STREAM_NAME", RandomLogStreamName); + Region = EnvHelper.GetOrDefault("AWS_REGION", EnvHelper.GetOrDefault("AWS_DEFAULT_REGION", "us-east-1")); + AccountId = EnvHelper.GetOrDefault("AWS_ACCOUNT_ID", "000000000000"); + Arn = EnvHelper.GetOrDefault("AWS_LAMBDA_FUNCTION_INVOKED_ARN", $"arn:aws:lambda:{Region}:{AccountId}:function:{FunctionName}"); + StayOpen = !string.IsNullOrEmpty(Environment.GetEnvironmentVariable("DOCKER_LAMBDA_STAY_OPEN")); Environment.SetEnvironmentVariable("AWS_LAMBDA_FUNCTION_NAME", FunctionName); Environment.SetEnvironmentVariable("AWS_LAMBDA_FUNCTION_VERSION", FunctionVersion); @@ -39,30 +45,51 @@ public TimeSpan RemainingTime() public long Duration => (long)(DateTime.Now - StartTime).TotalMilliseconds; public long BilledDuration => (long)(Math.Ceiling((DateTime.Now - StartTime).TotalMilliseconds / 100)) * 100; + public long DeadlineMs + { + set + { + Timeout = (int)DateTimeOffset.FromUnixTimeMilliseconds(value).Subtract(DateTime.Now).TotalSeconds; + } + } + + public string Body + { + set + { + InputStream = new MemoryStream(); + var eventData = Encoding.UTF8.GetBytes(value); + InputStream.Write(eventData, 0, eventData.Length); + InputStream.Position = 0; + } + } + public long MemoryUsed => Process.GetCurrentProcess().WorkingSet64; - public Stream InputStream { get; } + public Stream InputStream { get; set; } + + public string RequestId { get; set; } + public DateTime StartTime { get; set; } - public string RequestId { get; } - public DateTime StartTime { get; } + public int Timeout { get; set; } - public int Timeout => Convert.ToInt32(EnvHelper.GetOrDefault("AWS_LAMBDA_FUNCTION_TIMEOUT", "300")); + public int MemorySize { get; set; } - public int MemorySize => Convert.ToInt32(EnvHelper.GetOrDefault("AWS_LAMBDA_FUNCTION_MEMORY_SIZE", "1536")); + public string FunctionName { get; set; } - public string FunctionName => EnvHelper.GetOrDefault("AWS_LAMBDA_FUNCTION_NAME", "test"); + public string FunctionVersion { get; set; } - public string FunctionVersion => EnvHelper.GetOrDefault("AWS_LAMBDA_FUNCTION_VERSION", "$LATEST"); + public string LogGroup { get; set; } - public string LogGroup => EnvHelper.GetOrDefault("AWS_LAMBDA_LOG_GROUP_NAME", $"/aws/lambda/{FunctionName}"); + public string LogStream { get; set; } - public string LogStream => EnvHelper.GetOrDefault("AWS_LAMBDA_LOG_STREAM_NAME", RandomLogStreamName); + public string Region { get; set; } - public string Region => EnvHelper.GetOrDefault("AWS_REGION", EnvHelper.GetOrDefault("AWS_DEFAULT_REGION", "us-east-1")); + public string AccountId { get; set; } - public string AccountId => EnvHelper.GetOrDefault("AWS_ACCOUNT_ID", "000000000000"); + public string Arn { get; set; } - public string Arn => EnvHelper.GetOrDefault("AWS_LAMBDA_FUNCTION_INVOKED_ARN", $"arn:aws:lambda:{Region}:{AccountId}:function:{FunctionName}"); + public bool StayOpen { get; } string RandomLogStreamName => $"{DateTime.Now.ToString("yyyy/MM/dd")}/[{FunctionVersion}]{random.Next().ToString("x") + random.Next().ToString("x")}"; } diff --git a/dotnetcore2.1/run/MockBootstraps/MockRuntime.cs b/dotnetcore2.1/run/MockBootstraps/MockRuntime.cs index 8a28b249..36a82d14 100644 --- a/dotnetcore2.1/run/MockBootstraps/MockRuntime.cs +++ b/dotnetcore2.1/run/MockBootstraps/MockRuntime.cs @@ -3,10 +3,18 @@ using MockLambdaRuntime; using System; using System.Collections; +using System.Collections.Generic; using System.IO; using System.Linq; +using System.Net; +using System.Net.Http; +using System.Net.Http.Headers; +using System.Net.Sockets; using System.Runtime.InteropServices; using System.Text; +using System.Text.RegularExpressions; +using System.Threading; +using System.Threading.Tasks; namespace AWSLambda.Internal.Bootstrap { @@ -16,6 +24,10 @@ internal class MockRuntime : ILambdaRuntime private bool invoked; + private bool logTail; + + private string logs; + private Exception invokeError; private readonly IntPtr sharedMem = Marshal.AllocHGlobal(SBSharedMem.UnmanagedStructSize); @@ -24,6 +36,8 @@ internal class MockRuntime : ILambdaRuntime private readonly MockLambdaContext context; + private static readonly HttpClient client = new HttpClient(); + public IEnvironment Environment { get; } = new SystemEnvironment(); public IXRayProfiler XRayProfiler { get; } = new MockXRayProfiler(); @@ -41,10 +55,11 @@ public MockRuntime(string handler, string body) { Handler = handler, InvokeId = context.RequestId, - SuppressUserCodeInit = false, + SuppressUserCodeInit = true, ErrorCode = null }; invoked = false; + client.Timeout = Timeout.InfiniteTimeSpan; } public bool KeepInvokeLoopRunning() @@ -54,14 +69,42 @@ public bool KeepInvokeLoopRunning() public void Init() { + var result = client.GetAsync("http://127.0.0.1:9001/2018-06-01/ping").Result; + if (result.StatusCode != HttpStatusCode.OK) + { + throw new Exception("Got a bad response from the bootstrap"); + } } - unsafe public InvokeData ReceiveInvoke(IDictionary initialEnvironmentVariables, RuntimeReceiveInvokeBuffers buffers) + unsafe InvokeData ILambdaRuntime.ReceiveInvoke(IDictionary initialEnvironmentVariables, RuntimeReceiveInvokeBuffers buffers) { - Console.Error.WriteLine($"START RequestId: {context.RequestId} Version: {context.FunctionVersion}"); + var result = client.GetAsync("http://127.0.0.1:9001/2018-06-01/runtime/invocation/next").Result; + if (result.StatusCode != HttpStatusCode.OK) + { + throw new Exception("Got a bad response from the bootstrap"); + } + if (invoked) + { + logs = ""; + } invoked = true; + var requestId = result.Headers.GetValues("Lambda-Runtime-Aws-Request-Id").First(); + var deadlineMs = result.Headers.GetValues("Lambda-Runtime-Deadline-Ms").First(); + var functionArn = result.Headers.GetValues("Lambda-Runtime-Invoked-Function-Arn").First(); + var xAmznTraceId = result.Headers.GetValues("Lambda-Runtime-Trace-Id").First(); + var clientContext = HeaderHelper.GetFirstOrDefault(result.Headers, "Lambda-Runtime-Client-Context"); + var cognitoIdentity = HeaderHelper.GetFirstOrDefault(result.Headers, "Lambda-Runtime-Cognito-Identity"); + + logTail = HeaderHelper.GetFirstOrDefault(result.Headers, "Docker-Lambda-Log-Type") == "Tail"; + + var body = result.Content.ReadAsStringAsync().Result; + + context.RequestId = requestId; + context.DeadlineMs = long.Parse(deadlineMs); + context.Body = body; + curSBSharedMem = new SBSharedMem(sharedMem); return new InvokeData(curSBSharedMem) { @@ -72,52 +115,80 @@ unsafe public InvokeData ReceiveInvoke(IDictionary initialEnvironmentVariables, SecretAccessKey = EnvHelper.GetOrDefault("AWS_SECRET_ACCESS_KEY", "SOME_SECRET_ACCESS_KEY"), SessionToken = System.Environment.GetEnvironmentVariable("AWS_SESSION_TOKEN") }, - XAmznTraceId = EnvHelper.GetOrDefault("_X_AMZN_TRACE_ID", ""), + XAmznTraceId = xAmznTraceId, InputStream = context.InputStream, OutputStream = new UnmanagedMemoryStream(curSBSharedMem.EventBody, 0, SBSharedMem.SizeOfEventBody, FileAccess.Write), LambdaContextInternal = new LambdaContextInternal( context.RemainingTime, SendCustomerLogMessage, - new Lazy(), + GetCognitoClientContextInternalLazy(clientContext), context.RequestId, new Lazy(context.Arn), - new Lazy(string.Empty), - new Lazy(string.Empty), + GetCognitoIdentityIdLazy(cognitoIdentity), + GetCognitoIdentityPoolIdLazy(cognitoIdentity), initialEnvironmentVariables ) }; } - /// Try to log everything to stderr except the function result - public void SendCustomerLogMessage(string message) - { - Console.Error.WriteLine(message); - } - public unsafe void ReportDone(string invokeId, string errorType, bool waitForExit) { if (!invoked && invokeError == null) return; - Console.Error.WriteLine($"END RequestId: {context.RequestId}"); + var output = Interop.InteropUtils.ReadUTF8String(curSBSharedMem.EventBody, curSBSharedMem.ResponseBodyLen); - Console.Error.WriteLine($"REPORT RequestId {context.RequestId}\t" + - $"Duration: {context.Duration} ms\t" + - $"Billed Duration: {context.BilledDuration} ms\t" + - $"Memory Size {context.MemorySize} MB\t" + - $"Max Memory Used: {context.MemoryUsed / (1024 * 1024)} MB"); + var suffix = errorType == null ? "response" : "error"; + Task task; + using (var requestMessage = new HttpRequestMessage(HttpMethod.Post, $"http://127.0.0.1:9001/2018-06-01/runtime/invocation/{context.RequestId}/{suffix}")) + { + if (logTail) + { + requestMessage.Headers.Add("Docker-Lambda-Log-Result", Convert.ToBase64String(LogsTail4k())); + } + requestMessage.Content = new StringContent(output); + task = client.SendAsync(requestMessage); + try + { + task.Wait(); + } + catch (AggregateException ae) + { + if (!context.StayOpen && ae.InnerException is HttpRequestException && ae.InnerException.InnerException != null && + (ae.InnerException.InnerException is SocketException || + // happens on dotnetcore2.0 + ae.InnerException.InnerException.GetType().ToString().Equals("System.Net.Http.CurlException"))) + { + System.Environment.Exit(string.IsNullOrEmpty(errorType) && invokeError == null ? 0 : 1); + } + else + { + throw ae; + } + } + var response = task.Result; + if (response.StatusCode != HttpStatusCode.Accepted) + { + throw new Exception($"Unknown response from invocation: {response.StatusCode}"); + } + } if (invokeError != null) { Console.Error.WriteLine(invokeError); - System.Environment.Exit(1); return; } + } - var output = Interop.InteropUtils.ReadUTF8String(curSBSharedMem.EventBody, curSBSharedMem.ResponseBodyLen); - - Console.WriteLine(output); - - System.Environment.Exit(string.IsNullOrEmpty(errorType) ? 0 : 1); + private byte[] LogsTail4k() + { + var logBuf = Encoding.UTF8.GetBytes(logs); + if (logBuf.Length <= 4096) + { + return logBuf; + } + var slicedLogBuf = new byte[4096]; + Array.Copy(logBuf, logBuf.Length - 4096, slicedLogBuf, 0, 4096); + return slicedLogBuf; } public void ReportError(string invokeId, ExceptionResponse exceptionResponse) @@ -138,6 +209,23 @@ public void ReportError(string invokeId, ExceptionResponse exceptionResponse) */ } + /// Try to log everything to stderr except the function result + public void SendCustomerLogMessage(string message) + { + if (context.StayOpen) + { + if (logTail) + { + logs += message + System.Environment.NewLine; + } + Console.WriteLine(message); + } + else + { + Console.Error.WriteLine(message); + } + } + private static void AppendStackTraceToStringBuilder(StringBuilder builder, ExceptionResponse ex) { if (!string.IsNullOrWhiteSpace(ex.StackTrace)) @@ -168,9 +256,27 @@ select s.Trim() into s } } + internal static Lazy GetCognitoIdentityIdLazy(string jsonStr) + { + return new Lazy(() => + { + var match = Regex.Match(jsonStr ?? "", "\"identity_id\":\"([^\"]+)\""); + return match.Success ? match.Groups[1].ToString() : string.Empty; + }); + } + + internal static Lazy GetCognitoIdentityPoolIdLazy(string jsonStr) + { + return new Lazy(() => + { + var match = Regex.Match(jsonStr ?? "", "\"identity_pool_id\":\"([^\"]+)\""); + return match.Success ? match.Groups[1].ToString() : string.Empty; + }); + } + internal static Lazy GetCognitoClientContextInternalLazy(string text) { - return new Lazy(delegate + return new Lazy(() => { CognitoClientContextInternal result = null; if (!string.IsNullOrEmpty(text)) @@ -212,4 +318,17 @@ public void ReportError(ExceptionResponse exceptionResponse) } } + class HeaderHelper + { + /// Gets the given environment variable with a fallback if it doesn't exist + public static string GetFirstOrDefault(HttpHeaders headers, string name) + { + if (headers.TryGetValues(name, out IEnumerable values)) + { + return values.FirstOrDefault(); + } + return null; + } + } + } diff --git a/dotnetcore2.1/run/MockBootstraps/Program.cs b/dotnetcore2.1/run/MockBootstraps/Program.cs index 69a15a43..df26073d 100644 --- a/dotnetcore2.1/run/MockBootstraps/Program.cs +++ b/dotnetcore2.1/run/MockBootstraps/Program.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.Diagnostics; using System.IO; using System.Linq; using System.Reflection; @@ -32,6 +33,12 @@ static void Main(string[] args) } AssemblyLoadContext.Default.Resolving += OnAssemblyResolving; + //Console.CancelKeyPress += delegate { + // // call methods to clean up + //}; + + Process mockServer = null; + try { var shouldWaitForDebugger = GetShouldWaitForDebuggerFlag(args, out var positionalArgs); @@ -39,6 +46,18 @@ static void Main(string[] args) var handler = GetFunctionHandler(positionalArgs); var body = GetEventBody(positionalArgs); + var lambdaRuntime = new MockRuntime(handler, body); + + mockServer = new Process(); + mockServer.StartInfo.FileName = "/var/runtime/mockserver"; + mockServer.StartInfo.CreateNoWindow = true; + mockServer.StartInfo.RedirectStandardInput = true; + mockServer.StartInfo.Environment["DOCKER_LAMBDA_NO_BOOTSTRAP"] = "1"; + mockServer.StartInfo.Environment["DOCKER_LAMBDA_USE_STDIN"] = "1"; + mockServer.Start(); + mockServer.StandardInput.Write(body); + mockServer.StandardInput.Close(); + if (shouldWaitForDebugger) { Console.Error.WriteLine("Waiting for the debugger to attach..."); @@ -51,8 +70,7 @@ static void Main(string[] args) } } - var lambdaRuntime = new MockRuntime(handler, body); - LambdaBootstrap lambdaBootstrap = new LambdaBootstrap(lambdaRuntime, InternalLogger.NO_OP_LOGGER); + var lambdaBootstrap = new LambdaBootstrap(lambdaRuntime, InternalLogger.NO_OP_LOGGER); UnhandledExceptionLogger.Register(); lambdaBootstrap.Initialize(); lambdaBootstrap.Invoke(); @@ -63,6 +81,10 @@ static void Main(string[] args) { Console.Error.WriteLine($"\nUnhandled exception occured in runner:\n{ex}"); } + finally + { + if (mockServer != null) mockServer.Dispose(); + } } /// Called when an assembly could not be resolved diff --git a/examples/dotnetcore2.1/test.sln b/examples/dotnetcore2.1/test.sln new file mode 100644 index 00000000..47c8aa8e --- /dev/null +++ b/examples/dotnetcore2.1/test.sln @@ -0,0 +1,17 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 15 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "test", "test.csproj", "{0A83D120-2336-4F30-86F1-DC045C3C9B90}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {0A83D120-2336-4F30-86F1-DC045C3C9B90}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {0A83D120-2336-4F30-86F1-DC045C3C9B90}.Debug|Any CPU.Build.0 = Debug|Any CPU + {0A83D120-2336-4F30-86F1-DC045C3C9B90}.Release|Any CPU.ActiveCfg = Release|Any CPU + {0A83D120-2336-4F30-86F1-DC045C3C9B90}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection +EndGlobal From 38ca7d5a586c090ec1e99b2a153f201bdf73631c Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Sat, 9 Nov 2019 21:57:33 -0500 Subject: [PATCH 083/271] Add Lambda API support to go1.x --- go1.x/run/Dockerfile | 5 + go1.x/run/aws-lambda-mock.go | 311 +++++++++++++++++++++++------------ 2 files changed, 211 insertions(+), 105 deletions(-) diff --git a/go1.x/run/Dockerfile b/go1.x/run/Dockerfile index 30e2f877..b804db69 100644 --- a/go1.x/run/Dockerfile +++ b/go1.x/run/Dockerfile @@ -6,6 +6,9 @@ COPY aws-lambda-mock.go ./ RUN GOARCH=amd64 GOOS=linux go build aws-lambda-mock.go +FROM lambci/lambda:provided + + FROM lambci/lambda-base ENV AWS_EXECUTION_ENV=AWS_Lambda_go1.x @@ -15,6 +18,8 @@ RUN rm -rf /var/runtime /var/lang && \ COPY --from=0 /app/aws-lambda-mock /var/runtime/aws-lambda-go +COPY --from=1 /var/runtime/init /var/runtime/mockserver + USER sbx_user1051 ENTRYPOINT ["/var/runtime/aws-lambda-go"] diff --git a/go1.x/run/aws-lambda-mock.go b/go1.x/run/aws-lambda-mock.go index 129c578a..d29b79f3 100644 --- a/go1.x/run/aws-lambda-mock.go +++ b/go1.x/run/aws-lambda-mock.go @@ -1,17 +1,20 @@ package main import ( - "bufio" "bytes" + "encoding/base64" "encoding/hex" "encoding/json" "flag" "fmt" + "io" "io/ioutil" - "math" + "log" "math/rand" "net" + "net/http" "net/rpc" + "net/url" "os" "os/exec" "reflect" @@ -23,6 +26,8 @@ import ( "github.com/aws/aws-lambda-go/lambda/messages" ) +var apiBase = "http://127.0.0.1:9001/2018-06-01" + func main() { rand.Seed(time.Now().UTC().UnixNano()) @@ -32,6 +37,7 @@ func main() { delveAPI := flag.String("delveAPI", "1", "delve api version") flag.Parse() positionalArgs := flag.Args() + var handler string if len(positionalArgs) > 0 { handler = positionalArgs[0] @@ -54,6 +60,8 @@ func main() { } } + stayOpen := os.Getenv("DOCKER_LAMBDA_STAY_OPEN") != "" + mockContext := &mockLambdaContext{ RequestID: fakeGUID(), EventBody: eventBody, @@ -64,7 +72,6 @@ func main() { Region: getEnv("AWS_REGION", getEnv("AWS_DEFAULT_REGION", "us-east-1")), AccountID: getEnv("AWS_ACCOUNT_ID", strconv.FormatInt(int64(rand.Int31()), 10)), Start: time.Now(), - Pid: 1, } mockContext.ParseTimeout() @@ -82,6 +89,54 @@ func main() { os.Setenv("AWS_DEFAULT_REGION", mockContext.Region) os.Setenv("_HANDLER", handler) + var err error + + var mockServerCmd = exec.Command("/var/runtime/mockserver") + mockServerCmd.Env = append(os.Environ(), + "DOCKER_LAMBDA_NO_BOOTSTRAP=1", + "DOCKER_LAMBDA_USE_STDIN=1", + ) + mockServerCmd.Stdout = os.Stdout + mockServerCmd.Stderr = os.Stderr + stdin, _ := mockServerCmd.StdinPipe() + if err = mockServerCmd.Start(); err != nil { + log.Fatalf("Error starting mock server: %s", err.Error()) + return + } + stdin.Write([]byte(eventBody)) + stdin.Close() + + defer mockServerCmd.Wait() + + maxRetries := 20 + + for i := 1; i <= maxRetries; i++ { + resp, err := http.Get(apiBase + "/ping") + if err != nil { + if uerr, ok := err.(*url.Error); ok { + if oerr, ok := uerr.Unwrap().(*net.OpError); ok { + // Connection refused, try again + if oerr.Op == "dial" && oerr.Net == "tcp" { + if i == maxRetries { + log.Fatal("Mock server did not start in time") + return + } + time.Sleep(5 * time.Millisecond) + continue + } + } + } + log.Fatal(err) + return + } + if resp.StatusCode != 200 { + log.Fatal("Non 200 status code from local server") + return + } + resp.Body.Close() + break + } + var cmd *exec.Cmd if *debugMode == true { delveArgs := []string{ @@ -110,26 +165,31 @@ func main() { "AWS_SECURITY_TOKEN="+awsSessionToken, ) } - cmd.Stdout = os.Stderr - cmd.Stderr = os.Stderr - cmd.SysProcAttr = &syscall.SysProcAttr{Setpgid: true} - var err error + var logsBuf bytes.Buffer + + if stayOpen { + cmd.Stdout = io.MultiWriter(os.Stdout, &logsBuf) + cmd.Stderr = io.MultiWriter(os.Stderr, &logsBuf) + } else { + cmd.Stdout = os.Stderr + cmd.Stderr = os.Stderr + } + + cmd.SysProcAttr = &syscall.SysProcAttr{Setpgid: true} if err = cmd.Start(); err != nil { - defer abortRequest(mockContext, err) + defer abortInit(mockContext, err) return } - mockContext.Pid = cmd.Process.Pid - - defer syscall.Kill(-mockContext.Pid, syscall.SIGKILL) + defer syscall.Kill(-cmd.Process.Pid, syscall.SIGKILL) var conn net.Conn for { conn, err = net.Dial("tcp", ":"+port) if mockContext.HasExpired() { - defer abortRequest(mockContext, mockContext.TimeoutErr()) + defer abortInit(mockContext, mockContext.TimeoutErr()) return } if err == nil { @@ -142,7 +202,7 @@ func main() { continue } } - defer abortRequest(mockContext, err) + defer abortInit(mockContext, err) return } @@ -151,7 +211,7 @@ func main() { for { err = client.Call("Function.Ping", messages.PingRequest{}, &messages.PingResponse{}) if mockContext.HasExpired() { - defer abortRequest(mockContext, mockContext.TimeoutErr()) + defer abortInit(mockContext, mockContext.TimeoutErr()) return } if err == nil { @@ -160,65 +220,137 @@ func main() { time.Sleep(5 * time.Millisecond) } - // XXX: The Go runtime seems to amortize the startup time, reset it here - mockContext.Start = time.Now() + for { + resp, err := http.Get(apiBase + "/runtime/invocation/next") + if err != nil { + if uerr, ok := err.(*url.Error); ok { + if uerr.Unwrap().Error() == "EOF" { + return + } + } + log.Fatal(err) + return + } + if resp.StatusCode != 200 { + log.Fatal("Non 200 status code from local server") + return + } + body, err := ioutil.ReadAll(resp.Body) + if err != nil { + log.Fatal(err) + return + } + resp.Body.Close() + + deadlineMs, _ := strconv.ParseInt(resp.Header.Get("Lambda-Runtime-Deadline-Ms"), 10, 64) + deadline := time.Unix(0, deadlineMs*int64(time.Millisecond)) + + var invokeRequest = &messages.InvokeRequest{ + Payload: body, + RequestId: resp.Header.Get("Lambda-Runtime-Aws-Request-Id"), + XAmznTraceId: resp.Header.Get("Lambda-Runtime-Trace-Id"), + InvokedFunctionArn: resp.Header.Get("Lambda-Runtime-Invoked-Function-Arn"), + Deadline: messages.InvokeRequest_Timestamp{ + Seconds: deadline.Unix(), + Nanos: int64(deadline.Nanosecond()), + }, + ClientContext: []byte(resp.Header.Get("Lambda-Runtime-Client-Context")), + } - logStartRequest(mockContext) + cognitoIdentityHeader := []byte(resp.Header.Get("Lambda-Runtime-Cognito-Identity")) + if len(cognitoIdentityHeader) > 0 { + var identityObj *cognitoIdentity + err := json.Unmarshal(cognitoIdentityHeader, &identityObj) + if err != nil { + log.Fatal(err) + return + } + invokeRequest.CognitoIdentityId = identityObj.IdentityID + invokeRequest.CognitoIdentityPoolId = identityObj.IdentityPoolID + } - err = client.Call("Function.Invoke", mockContext.Request(), &mockContext.Reply) + logTail := resp.Header.Get("Docker-Lambda-Log-Type") == "Tail" - // We want the process killed before this, so defer it - defer logEndRequest(mockContext, err) -} + logsBuf.Reset() -func abortRequest(mockContext *mockLambdaContext, err error) { - logStartRequest(mockContext) - logEndRequest(mockContext, err) -} + var reply *messages.InvokeResponse + err = client.Call("Function.Invoke", invokeRequest, &reply) -func logStartRequest(mockContext *mockLambdaContext) { - systemLog("START RequestId: " + mockContext.RequestID + " Version: " + mockContext.Version) -} + suffix := "/response" + payload := reply.Payload + if err != nil || reply.Error != nil { + suffix = "/error" + var lambdaErr lambdaError + if err != nil { + lambdaErr = toLambdaError(mockContext, err) + } else if reply.Error != nil { + lambdaErr = lambdaError{ + Message: reply.Error.Message, + Type: reply.Error.Type, + StackTrace: reply.Error.StackTrace, + } + } + payload, _ = json.Marshal(lambdaErr) + } + req, err := http.NewRequest("POST", apiBase+"/runtime/invocation/"+invokeRequest.RequestId+suffix, bytes.NewBuffer(payload)) + if err != nil { + log.Fatal(err) + return + } -func logEndRequest(mockContext *mockLambdaContext, err error) { - curMem, _ := calculateMemoryInMb(mockContext.Pid) - diffMs := math.Min(float64(time.Now().Sub(mockContext.Start).Nanoseconds()), - float64(mockContext.TimeoutDuration.Nanoseconds())) / 1e6 - - systemLog("END RequestId: " + mockContext.RequestID) - systemLog(fmt.Sprintf( - "REPORT RequestId: %s\t"+ - "Duration: %.2f ms\t"+ - "Billed Duration: %.f ms\t"+ - "Memory Size: %s MB\t"+ - "Max Memory Used: %d MB\t", - mockContext.RequestID, diffMs, math.Ceil(diffMs/100)*100, mockContext.MemSize, curMem)) - - if err == nil && mockContext.HasExpired() { - err = mockContext.TimeoutErr() - } + if logTail { + // This is very annoying but seems to be necessary to ensure we get all the stdout/stderr from the process + time.Sleep(1 * time.Millisecond) - if err != nil { - responseErr := messages.InvokeResponse_Error{ - Message: err.Error(), - Type: getErrorType(err), - } - if responseErr.Type == "errorString" { - responseErr.Type = "" - if responseErr.Message == "unexpected EOF" { - responseErr.Message = "RequestId: " + mockContext.RequestID + " Process exited before completing request" + logs := logsBuf.Bytes() + + if len(logs) > 0 { + if len(logs) > 4096 { + logs = logs[len(logs)-4096:] + } + req.Header.Add("Docker-Lambda-Log-Result", base64.StdEncoding.EncodeToString(logs)) } } - systemErr(&responseErr) - os.Exit(1) + + resp, err = http.DefaultClient.Do(req) + if err != nil { + log.Fatal(err) + return + } + if resp.StatusCode != 202 { + log.Fatal("Non 202 status code from local server") + return + } + resp.Body.Close() } +} - if mockContext.Reply.Error != nil { - systemErr(mockContext.Reply.Error) - os.Exit(1) +func abortInit(mockContext *mockLambdaContext, err error) { + lambdaErr := toLambdaError(mockContext, err) + jsonBytes, _ := json.Marshal(lambdaErr) + resp, err := http.Post(apiBase+"/runtime/init/error", "application/json", bytes.NewBuffer(jsonBytes)) + if err != nil { + log.Fatal(err) + return } + resp.Body.Close() +} - fmt.Println(string(mockContext.Reply.Payload)) +func toLambdaError(mockContext *mockLambdaContext, exitErr error) lambdaError { + err := &exitError{err: exitErr, context: mockContext} + responseErr := lambdaError{ + Message: err.Error(), + Type: getErrorType(err), + } + if responseErr.Type == "errorString" { + responseErr.Type = "" + if responseErr.Message == "unexpected EOF" { + responseErr.Message = "RequestId: " + mockContext.RequestID + " Process exited before completing request" + } + } else if responseErr.Type == "ExitError" { + responseErr.Type = "Runtime.ExitError" // XXX: Hack to add 'Runtime.' to error type + } + return responseErr } func getEnv(key, fallback string) string { @@ -265,35 +397,6 @@ func arn(region string, accountID string, fnName string) string { return "arn:aws:lambda:" + region + ":" + nonDigit.ReplaceAllString(accountID, "") + ":function:" + fnName } -// Thanks to https://stackoverflow.com/a/31881979 -func calculateMemoryInMb(pid int) (uint64, error) { - f, err := os.Open(fmt.Sprintf("/proc/%d/smaps", pid)) - if err != nil { - return 0, err - } - defer f.Close() - - res := uint64(0) - pfx := []byte("Pss:") - r := bufio.NewScanner(f) - for r.Scan() { - line := r.Bytes() - if bytes.HasPrefix(line, pfx) { - var size uint64 - _, err := fmt.Sscanf(string(line[4:]), "%d", &size) - if err != nil { - return 0, err - } - res += size - } - } - if err := r.Err(); err != nil { - return 0, err - } - - return res / 1024, nil -} - func getErrorType(err interface{}) string { errorType := reflect.TypeOf(err) if errorType.Kind() == reflect.Ptr { @@ -302,26 +405,21 @@ func getErrorType(err interface{}) string { return errorType.Name() } -func systemLog(msg string) { - fmt.Fprintln(os.Stderr, "\033[32m"+msg+"\033[0m") -} - -// Try to match the output of the Lambda web console -func systemErr(err *messages.InvokeResponse_Error) { - jsonBytes, _ := json.MarshalIndent(lambdaError{ - Message: err.Message, - Type: err.Type, - StackTrace: err.StackTrace, - }, "", " ") - fmt.Fprintln(os.Stderr, "\033[31m"+string(jsonBytes)+"\033[0m") -} - type lambdaError struct { Message string `json:"errorMessage"` Type string `json:"errorType,omitempty"` StackTrace []*messages.InvokeResponse_Error_StackFrame `json:"stackTrace,omitempty"` } +type exitError struct { + err error + context *mockLambdaContext +} + +func (e *exitError) Error() string { + return fmt.Sprintf("RequestId: %s Error: %s", e.context.RequestID, e.err.Error()) +} + type mockLambdaContext struct { RequestID string EventBody string @@ -333,8 +431,6 @@ type mockLambdaContext struct { AccountID string Start time.Time TimeoutDuration time.Duration - Pid int - Reply *messages.InvokeResponse } func (mc *mockLambdaContext) ParseTimeout() { @@ -370,3 +466,8 @@ func (mc *mockLambdaContext) TimeoutErr() error { return fmt.Errorf("%s %s Task timed out after %s.00 seconds", time.Now().Format("2006-01-02T15:04:05.999Z"), mc.RequestID, mc.Timeout) } + +type cognitoIdentity struct { + IdentityID string `json:"identity_id,omitempty"` + IdentityPoolID string `json:"identity_pool_id,omitempty"` +} From f802a10618ff1bc4f814bba5fd504a35d5ad0bad Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Sun, 17 Nov 2019 16:39:12 -0500 Subject: [PATCH 084/271] =?UTF-8?q?Add=20note=20to=20test-all.sh=20?= =?UTF-8?q?=E2=80=93=20will=20document=20on=20README=20later?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 ++ base/test-all.sh | 11 +++++++++++ 2 files changed, 13 insertions(+) diff --git a/README.md b/README.md index f6b9efb8..06044cc0 100644 --- a/README.md +++ b/README.md @@ -265,6 +265,8 @@ Administrative keys for lambci/lambda:provided - `AWS_SECRET_ACCESS_KEY` - `AWS_SESSION_TOKEN` - `DOCKER_LAMBDA_USE_STDIN` + - `DOCKER_LAMBDA_STAY_OPEN` + - `DOCKER_LAMBDA_API_PORT` ## Build environment diff --git a/base/test-all.sh b/base/test-all.sh index adabcded..d0ff7f10 100755 --- a/base/test-all.sh +++ b/base/test-all.sh @@ -45,3 +45,14 @@ docker run --rm -v "$PWD":/var/task lambci/lambda:go1.x handler '{"Records": []} cd ${EXAMPLES_DIR}/provided docker run --rm -v "$PWD":/var/task lambci/lambda:provided handler '{"some": "event"}' + +# To invoke and keep open: +# docker run --rm -v $PWD:/var/task -e DOCKER_LAMBDA_STAY_OPEN=1 -p 9001:9001 \ + # lambci/lambda:ruby2.5 lambda_function.lambda_handler + +# Contents of post.lua: +# wrk.method = "POST" +# wrk.body = "{}" +# wrk.headers["Content-Type"] = "application/json" + +# wrk -s post.lua 'http://localhost:9001/2015-03-31/functions/myfunction/invocations' From 78995b1c8581b6b187efadf3d10485cbc07c5958 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Sun, 17 Nov 2019 16:49:25 -0500 Subject: [PATCH 085/271] Fix formatting in README --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 06044cc0..7e417b91 100644 --- a/README.md +++ b/README.md @@ -265,8 +265,8 @@ Administrative keys for lambci/lambda:provided - `AWS_SECRET_ACCESS_KEY` - `AWS_SESSION_TOKEN` - `DOCKER_LAMBDA_USE_STDIN` - - `DOCKER_LAMBDA_STAY_OPEN` - - `DOCKER_LAMBDA_API_PORT` + - `DOCKER_LAMBDA_STAY_OPEN` + - `DOCKER_LAMBDA_API_PORT` ## Build environment From 9c9585e927eb4f89f5707e1fcdc09ab73e117b01 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Mon, 18 Nov 2019 16:02:58 -0500 Subject: [PATCH 086/271] Allow up to a second of pings for each runtime to reach the server --- .../run/MockBootstraps/MockRuntime.cs | 22 +++++++++++++++--- .../run/MockBootstraps/MockRuntime.cs | 22 +++++++++++++++--- go1.x/run/aws-lambda-mock.go | 23 ++++++------------- .../java/lambdainternal/LambdaRuntime.java | 5 ++-- nodejs4.3/run/awslambda-mock.js | 16 ++++++++----- nodejs6.10/run/awslambda-mock.js | 16 ++++++++----- nodejs8.10/run/awslambda-mock.js | 16 ++++++++----- python2.7/run/runtime_mock.py | 5 ++-- python3.6/run/runtime_mock.py | 5 ++-- 9 files changed, 84 insertions(+), 46 deletions(-) diff --git a/dotnetcore2.0/run/MockBootstraps/MockRuntime.cs b/dotnetcore2.0/run/MockBootstraps/MockRuntime.cs index 36a82d14..967c31f7 100644 --- a/dotnetcore2.0/run/MockBootstraps/MockRuntime.cs +++ b/dotnetcore2.0/run/MockBootstraps/MockRuntime.cs @@ -69,10 +69,26 @@ public bool KeepInvokeLoopRunning() public void Init() { - var result = client.GetAsync("http://127.0.0.1:9001/2018-06-01/ping").Result; - if (result.StatusCode != HttpStatusCode.OK) + var timeout = DateTimeOffset.Now.AddSeconds(1); + while (true) { - throw new Exception("Got a bad response from the bootstrap"); + try + { + var result = client.GetAsync("http://127.0.0.1:9001/2018-06-01/ping").Result; + if (result.StatusCode != HttpStatusCode.OK) + { + throw new Exception("Got a bad response from the bootstrap"); + } + break; + } + catch (Exception e) + { + if (DateTimeOffset.Now > timeout) + { + throw e; + } + } + Thread.Sleep(5); } } diff --git a/dotnetcore2.1/run/MockBootstraps/MockRuntime.cs b/dotnetcore2.1/run/MockBootstraps/MockRuntime.cs index 36a82d14..967c31f7 100644 --- a/dotnetcore2.1/run/MockBootstraps/MockRuntime.cs +++ b/dotnetcore2.1/run/MockBootstraps/MockRuntime.cs @@ -69,10 +69,26 @@ public bool KeepInvokeLoopRunning() public void Init() { - var result = client.GetAsync("http://127.0.0.1:9001/2018-06-01/ping").Result; - if (result.StatusCode != HttpStatusCode.OK) + var timeout = DateTimeOffset.Now.AddSeconds(1); + while (true) { - throw new Exception("Got a bad response from the bootstrap"); + try + { + var result = client.GetAsync("http://127.0.0.1:9001/2018-06-01/ping").Result; + if (result.StatusCode != HttpStatusCode.OK) + { + throw new Exception("Got a bad response from the bootstrap"); + } + break; + } + catch (Exception e) + { + if (DateTimeOffset.Now > timeout) + { + throw e; + } + } + Thread.Sleep(5); } } diff --git a/go1.x/run/aws-lambda-mock.go b/go1.x/run/aws-lambda-mock.go index d29b79f3..c42d0392 100644 --- a/go1.x/run/aws-lambda-mock.go +++ b/go1.x/run/aws-lambda-mock.go @@ -108,26 +108,17 @@ func main() { defer mockServerCmd.Wait() - maxRetries := 20 + pingTimeout := time.Now().Add(1 * time.Second) - for i := 1; i <= maxRetries; i++ { + for { resp, err := http.Get(apiBase + "/ping") if err != nil { - if uerr, ok := err.(*url.Error); ok { - if oerr, ok := uerr.Unwrap().(*net.OpError); ok { - // Connection refused, try again - if oerr.Op == "dial" && oerr.Net == "tcp" { - if i == maxRetries { - log.Fatal("Mock server did not start in time") - return - } - time.Sleep(5 * time.Millisecond) - continue - } - } + if time.Now().After(pingTimeout) { + log.Fatal("Mock server did not start in time") + return } - log.Fatal(err) - return + time.Sleep(5 * time.Millisecond) + continue } if resp.StatusCode != 200 { log.Fatal("Non 200 status code from local server") diff --git a/java8/run/lambda-runtime-mock/src/main/java/lambdainternal/LambdaRuntime.java b/java8/run/lambda-runtime-mock/src/main/java/lambdainternal/LambdaRuntime.java index 0e2f67b1..cf3883d7 100644 --- a/java8/run/lambda-runtime-mock/src/main/java/lambdainternal/LambdaRuntime.java +++ b/java8/run/lambda-runtime-mock/src/main/java/lambdainternal/LambdaRuntime.java @@ -99,7 +99,8 @@ public class LambdaRuntime { } public static void initRuntime() { - for (int i = 0; i < 20; i++) { + long pingTimeout = System.currentTimeMillis() + 1000; + while (true) { try { HttpURLConnection conn = (HttpURLConnection) new URL(API_BASE + "/ping").openConnection(); int responseCode = conn.getResponseCode(); @@ -108,7 +109,7 @@ public static void initRuntime() { } break; } catch (Exception e) { - if (i < 19) + if (System.currentTimeMillis() < pingTimeout) continue; throw new RuntimeException(e); } diff --git a/nodejs4.3/run/awslambda-mock.js b/nodejs4.3/run/awslambda-mock.js index f953acd9..9f7c89cb 100644 --- a/nodejs4.3/run/awslambda-mock.js +++ b/nodejs4.3/run/awslambda-mock.js @@ -82,11 +82,15 @@ OPTIONS.invokeid = OPTIONS.invokeId var invoked = false var errored = false -var pingPromise = new Promise(resolve => ping(PING_RETRIES, resolve)) -var reportDonePromise = new Promise(resolve => resolve()) +var pingPromise +var reportDonePromise module.exports = { - initRuntime: function () { return OPTIONS }, + initRuntime: function () { + pingPromise = new Promise(resolve => ping(Date.now() + 1000, resolve)) + reportDonePromise = new Promise(resolve => resolve()) + return OPTIONS + }, waitForInvoke: function (cb) { Promise.all([pingPromise, reportDonePromise]).then(() => { http.get({ @@ -169,13 +173,13 @@ module.exports = { maxLoggerErrorSize: 256 * 1024, } -function ping(retries, cb) { +function ping(timeout, cb) { http.get({ hostname: '127.0.0.1', port: 9001, path: '/2018-06-01/runtime/ping' }, cb).on('error', () => { - if (!retries) { + if (Date.now() > timeout) { console.error('Mock server did not respond to pings in time') process.exit(1) } - setTimeout(ping, 5, retries - 1, cb) + setTimeout(ping, 5, timeout, cb) }) } diff --git a/nodejs6.10/run/awslambda-mock.js b/nodejs6.10/run/awslambda-mock.js index f953acd9..9f7c89cb 100644 --- a/nodejs6.10/run/awslambda-mock.js +++ b/nodejs6.10/run/awslambda-mock.js @@ -82,11 +82,15 @@ OPTIONS.invokeid = OPTIONS.invokeId var invoked = false var errored = false -var pingPromise = new Promise(resolve => ping(PING_RETRIES, resolve)) -var reportDonePromise = new Promise(resolve => resolve()) +var pingPromise +var reportDonePromise module.exports = { - initRuntime: function () { return OPTIONS }, + initRuntime: function () { + pingPromise = new Promise(resolve => ping(Date.now() + 1000, resolve)) + reportDonePromise = new Promise(resolve => resolve()) + return OPTIONS + }, waitForInvoke: function (cb) { Promise.all([pingPromise, reportDonePromise]).then(() => { http.get({ @@ -169,13 +173,13 @@ module.exports = { maxLoggerErrorSize: 256 * 1024, } -function ping(retries, cb) { +function ping(timeout, cb) { http.get({ hostname: '127.0.0.1', port: 9001, path: '/2018-06-01/runtime/ping' }, cb).on('error', () => { - if (!retries) { + if (Date.now() > timeout) { console.error('Mock server did not respond to pings in time') process.exit(1) } - setTimeout(ping, 5, retries - 1, cb) + setTimeout(ping, 5, timeout, cb) }) } diff --git a/nodejs8.10/run/awslambda-mock.js b/nodejs8.10/run/awslambda-mock.js index f953acd9..9f7c89cb 100644 --- a/nodejs8.10/run/awslambda-mock.js +++ b/nodejs8.10/run/awslambda-mock.js @@ -82,11 +82,15 @@ OPTIONS.invokeid = OPTIONS.invokeId var invoked = false var errored = false -var pingPromise = new Promise(resolve => ping(PING_RETRIES, resolve)) -var reportDonePromise = new Promise(resolve => resolve()) +var pingPromise +var reportDonePromise module.exports = { - initRuntime: function () { return OPTIONS }, + initRuntime: function () { + pingPromise = new Promise(resolve => ping(Date.now() + 1000, resolve)) + reportDonePromise = new Promise(resolve => resolve()) + return OPTIONS + }, waitForInvoke: function (cb) { Promise.all([pingPromise, reportDonePromise]).then(() => { http.get({ @@ -169,13 +173,13 @@ module.exports = { maxLoggerErrorSize: 256 * 1024, } -function ping(retries, cb) { +function ping(timeout, cb) { http.get({ hostname: '127.0.0.1', port: 9001, path: '/2018-06-01/runtime/ping' }, cb).on('error', () => { - if (!retries) { + if (Date.now() > timeout) { console.error('Mock server did not respond to pings in time') process.exit(1) } - setTimeout(ping, 5, retries - 1, cb) + setTimeout(ping, 5, timeout, cb) }) } diff --git a/python2.7/run/runtime_mock.py b/python2.7/run/runtime_mock.py index 1a7a4742..a8e01e32 100644 --- a/python2.7/run/runtime_mock.py +++ b/python2.7/run/runtime_mock.py @@ -118,7 +118,8 @@ def report_user_invoke_end(): def receive_start(): global MOCKSERVER_CONN - for retry in range(20): + ping_timeout = time.time() + 1 + while True: try: MOCKSERVER_CONN = HTTPConnection("127.0.0.1", 9001) MOCKSERVER_CONN.request("GET", "/2018-06-01/ping") @@ -128,7 +129,7 @@ def receive_start(): resp.read() break except Exception: - if retry >= 19: + if time.time() > ping_timeout: raise else: time.sleep(.005) diff --git a/python3.6/run/runtime_mock.py b/python3.6/run/runtime_mock.py index 1a7a4742..a8e01e32 100644 --- a/python3.6/run/runtime_mock.py +++ b/python3.6/run/runtime_mock.py @@ -118,7 +118,8 @@ def report_user_invoke_end(): def receive_start(): global MOCKSERVER_CONN - for retry in range(20): + ping_timeout = time.time() + 1 + while True: try: MOCKSERVER_CONN = HTTPConnection("127.0.0.1", 9001) MOCKSERVER_CONN.request("GET", "/2018-06-01/ping") @@ -128,7 +129,7 @@ def receive_start(): resp.read() break except Exception: - if retry >= 19: + if time.time() > ping_timeout: raise else: time.sleep(.005) From ce1203ba9d49ded2b836ff54ff7afd8715cdb758 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Mon, 18 Nov 2019 16:45:13 -0500 Subject: [PATCH 087/271] Make init durations more accurate --- .../run/MockBootstraps/MockRuntime.cs | 47 +++++--- .../run/MockBootstraps/MockRuntime.cs | 47 +++++--- go1.x/run/aws-lambda-mock.go | 22 +++- .../java/lambdainternal/LambdaRuntime.java | 18 ++- nodejs4.3/run/awslambda-mock.js | 26 ++++- nodejs6.10/run/awslambda-mock.js | 26 ++++- nodejs8.10/run/awslambda-mock.js | 26 ++++- provided/run/init.go | 103 ++++++++++++------ python2.7/run/runtime_mock.py | 30 +++-- python3.6/run/runtime_mock.py | 30 +++-- 10 files changed, 275 insertions(+), 100 deletions(-) diff --git a/dotnetcore2.0/run/MockBootstraps/MockRuntime.cs b/dotnetcore2.0/run/MockBootstraps/MockRuntime.cs index 967c31f7..fd7165e0 100644 --- a/dotnetcore2.0/run/MockBootstraps/MockRuntime.cs +++ b/dotnetcore2.0/run/MockBootstraps/MockRuntime.cs @@ -26,6 +26,10 @@ internal class MockRuntime : ILambdaRuntime private bool logTail; + private bool initTimeSent; + + private DateTimeOffset receivedInvokeAt = DateTimeOffset.MinValue; + private string logs; private Exception invokeError; @@ -38,9 +42,11 @@ internal class MockRuntime : ILambdaRuntime private static readonly HttpClient client = new HttpClient(); + private readonly MockXRayProfiler xRayProfiler = new MockXRayProfiler(); + public IEnvironment Environment { get; } = new SystemEnvironment(); - public IXRayProfiler XRayProfiler { get; } = new MockXRayProfiler(); + public IXRayProfiler XRayProfiler { get { return xRayProfiler; } } public InitData InitData { @@ -94,17 +100,20 @@ public void Init() unsafe InvokeData ILambdaRuntime.ReceiveInvoke(IDictionary initialEnvironmentVariables, RuntimeReceiveInvokeBuffers buffers) { - var result = client.GetAsync("http://127.0.0.1:9001/2018-06-01/runtime/invocation/next").Result; - if (result.StatusCode != HttpStatusCode.OK) + if (!invoked) { - throw new Exception("Got a bad response from the bootstrap"); + receivedInvokeAt = DateTimeOffset.Now; + invoked = true; } - - if (invoked) + else { logs = ""; } - invoked = true; + var result = client.GetAsync("http://127.0.0.1:9001/2018-06-01/runtime/invocation/next").Result; + if (result.StatusCode != HttpStatusCode.OK) + { + throw new Exception("Got a bad response from the bootstrap"); + } var requestId = result.Headers.GetValues("Lambda-Runtime-Aws-Request-Id").First(); var deadlineMs = result.Headers.GetValues("Lambda-Runtime-Deadline-Ms").First(); @@ -162,6 +171,12 @@ public unsafe void ReportDone(string invokeId, string errorType, bool waitForExi { requestMessage.Headers.Add("Docker-Lambda-Log-Result", Convert.ToBase64String(LogsTail4k())); } + if (!initTimeSent) + { + requestMessage.Headers.Add("Docker-Lambda-Invoke-Wait", receivedInvokeAt.ToUnixTimeMilliseconds().ToString()); + requestMessage.Headers.Add("Docker-Lambda-Init-End", xRayProfiler.InitEnd.ToUnixTimeMilliseconds().ToString()); + initTimeSent = true; + } requestMessage.Content = new StringContent(output); task = client.SendAsync(requestMessage); try @@ -246,16 +261,13 @@ private static void AppendStackTraceToStringBuilder(StringBuilder builder, Excep { if (!string.IsNullOrWhiteSpace(ex.StackTrace)) { - string[] array = (from s in ex.StackTrace.Split(new string[] - { - System.Environment.NewLine - }, StringSplitOptions.None) - select s.Trim() into s - where !string.IsNullOrWhiteSpace(s) - select STACK_TRACE_INDENT + s).ToArray(); - foreach (string value in array) + foreach (var line in ex.StackTrace + .Split(new string[] { System.Environment.NewLine }, StringSplitOptions.None) + .Select(s => s.Trim()) + .Where(s => !string.IsNullOrWhiteSpace(s)) + .Select(s => STACK_TRACE_INDENT + s)) { - builder.AppendLine(value); + builder.AppendLine(line); } } if (ex.InnerException != null) @@ -313,12 +325,15 @@ internal static Lazy GetCognitoClientContextIntern internal class MockXRayProfiler : IXRayProfiler { + public DateTimeOffset InitEnd { get; private set; } + public void ReportUserInitStart() { } public void ReportUserInitEnd() { + InitEnd = DateTimeOffset.Now; } public void ReportUserInvokeStart() diff --git a/dotnetcore2.1/run/MockBootstraps/MockRuntime.cs b/dotnetcore2.1/run/MockBootstraps/MockRuntime.cs index 967c31f7..fd7165e0 100644 --- a/dotnetcore2.1/run/MockBootstraps/MockRuntime.cs +++ b/dotnetcore2.1/run/MockBootstraps/MockRuntime.cs @@ -26,6 +26,10 @@ internal class MockRuntime : ILambdaRuntime private bool logTail; + private bool initTimeSent; + + private DateTimeOffset receivedInvokeAt = DateTimeOffset.MinValue; + private string logs; private Exception invokeError; @@ -38,9 +42,11 @@ internal class MockRuntime : ILambdaRuntime private static readonly HttpClient client = new HttpClient(); + private readonly MockXRayProfiler xRayProfiler = new MockXRayProfiler(); + public IEnvironment Environment { get; } = new SystemEnvironment(); - public IXRayProfiler XRayProfiler { get; } = new MockXRayProfiler(); + public IXRayProfiler XRayProfiler { get { return xRayProfiler; } } public InitData InitData { @@ -94,17 +100,20 @@ public void Init() unsafe InvokeData ILambdaRuntime.ReceiveInvoke(IDictionary initialEnvironmentVariables, RuntimeReceiveInvokeBuffers buffers) { - var result = client.GetAsync("http://127.0.0.1:9001/2018-06-01/runtime/invocation/next").Result; - if (result.StatusCode != HttpStatusCode.OK) + if (!invoked) { - throw new Exception("Got a bad response from the bootstrap"); + receivedInvokeAt = DateTimeOffset.Now; + invoked = true; } - - if (invoked) + else { logs = ""; } - invoked = true; + var result = client.GetAsync("http://127.0.0.1:9001/2018-06-01/runtime/invocation/next").Result; + if (result.StatusCode != HttpStatusCode.OK) + { + throw new Exception("Got a bad response from the bootstrap"); + } var requestId = result.Headers.GetValues("Lambda-Runtime-Aws-Request-Id").First(); var deadlineMs = result.Headers.GetValues("Lambda-Runtime-Deadline-Ms").First(); @@ -162,6 +171,12 @@ public unsafe void ReportDone(string invokeId, string errorType, bool waitForExi { requestMessage.Headers.Add("Docker-Lambda-Log-Result", Convert.ToBase64String(LogsTail4k())); } + if (!initTimeSent) + { + requestMessage.Headers.Add("Docker-Lambda-Invoke-Wait", receivedInvokeAt.ToUnixTimeMilliseconds().ToString()); + requestMessage.Headers.Add("Docker-Lambda-Init-End", xRayProfiler.InitEnd.ToUnixTimeMilliseconds().ToString()); + initTimeSent = true; + } requestMessage.Content = new StringContent(output); task = client.SendAsync(requestMessage); try @@ -246,16 +261,13 @@ private static void AppendStackTraceToStringBuilder(StringBuilder builder, Excep { if (!string.IsNullOrWhiteSpace(ex.StackTrace)) { - string[] array = (from s in ex.StackTrace.Split(new string[] - { - System.Environment.NewLine - }, StringSplitOptions.None) - select s.Trim() into s - where !string.IsNullOrWhiteSpace(s) - select STACK_TRACE_INDENT + s).ToArray(); - foreach (string value in array) + foreach (var line in ex.StackTrace + .Split(new string[] { System.Environment.NewLine }, StringSplitOptions.None) + .Select(s => s.Trim()) + .Where(s => !string.IsNullOrWhiteSpace(s)) + .Select(s => STACK_TRACE_INDENT + s)) { - builder.AppendLine(value); + builder.AppendLine(line); } } if (ex.InnerException != null) @@ -313,12 +325,15 @@ internal static Lazy GetCognitoClientContextIntern internal class MockXRayProfiler : IXRayProfiler { + public DateTimeOffset InitEnd { get; private set; } + public void ReportUserInitStart() { } public void ReportUserInitEnd() { + InitEnd = DateTimeOffset.Now; } public void ReportUserInvokeStart() diff --git a/go1.x/run/aws-lambda-mock.go b/go1.x/run/aws-lambda-mock.go index c42d0392..91c81860 100644 --- a/go1.x/run/aws-lambda-mock.go +++ b/go1.x/run/aws-lambda-mock.go @@ -211,7 +211,18 @@ func main() { time.Sleep(5 * time.Millisecond) } + var initEndSent bool + var invoked bool + var receivedInvokeAt time.Time + for { + if !invoked { + receivedInvokeAt = time.Now() + invoked = true + } else { + logsBuf.Reset() + } + resp, err := http.Get(apiBase + "/runtime/invocation/next") if err != nil { if uerr, ok := err.(*url.Error); ok { @@ -262,7 +273,10 @@ func main() { logTail := resp.Header.Get("Docker-Lambda-Log-Type") == "Tail" - logsBuf.Reset() + var initEnd time.Time + if !initEndSent { + initEnd = time.Now() + } var reply *messages.InvokeResponse err = client.Call("Function.Invoke", invokeRequest, &reply) @@ -303,6 +317,12 @@ func main() { } } + if !initEndSent { + req.Header.Add("Docker-Lambda-Invoke-Wait", strconv.FormatInt(receivedInvokeAt.UnixNano()/int64(time.Millisecond), 10)) + req.Header.Add("Docker-Lambda-Init-End", strconv.FormatInt(initEnd.UnixNano()/int64(time.Millisecond), 10)) + initEndSent = true + } + resp, err = http.DefaultClient.Do(req) if err != nil { log.Fatal(err) diff --git a/java8/run/lambda-runtime-mock/src/main/java/lambdainternal/LambdaRuntime.java b/java8/run/lambda-runtime-mock/src/main/java/lambdainternal/LambdaRuntime.java index cf3883d7..5349d331 100644 --- a/java8/run/lambda-runtime-mock/src/main/java/lambdainternal/LambdaRuntime.java +++ b/java8/run/lambda-runtime-mock/src/main/java/lambdainternal/LambdaRuntime.java @@ -41,6 +41,9 @@ public class LambdaRuntime { private static long deadlineMs; private static boolean invoked = false; private static boolean errored = false; + private static boolean initEndSent = false; + private static long initEnd; + private static long receivedInvokeAt; public static final int MEMORY_LIMIT; public static final String LOG_GROUP_NAME; @@ -126,7 +129,12 @@ public static WaitForStartResult waitForStart() { } public static InvokeRequest waitForInvoke() { - invoked = true; + if (!invoked) { + receivedInvokeAt = System.currentTimeMillis(); + invoked = true; + } else { + LOGS.reset(); + } try { HttpURLConnection conn = (HttpURLConnection) new URL(API_BASE + "/runtime/invocation/next") .openConnection(); @@ -151,7 +159,6 @@ public static InvokeRequest waitForInvoke() { } needsDebugLogs = "Tail".equals(conn.getHeaderField("Docker-Lambda-Log-Type")); - LOGS.reset(); String responseBody = ""; try (Scanner scanner = new Scanner(conn.getInputStream())) { @@ -192,6 +199,12 @@ public static void reportDone(final String invokeid, final byte[] result, final } conn.setRequestProperty("Docker-Lambda-Log-Result", Base64.getEncoder().encodeToString(logs)); } + + if (!initEndSent) { + conn.setRequestProperty("Docker-Lambda-Invoke-Wait", Long.toString(receivedInvokeAt)); + conn.setRequestProperty("Docker-Lambda-Init-End", Long.toString(initEnd)); + initEndSent = true; + } byte[] resultCopy = result == null ? new byte[0] : new String(result, 0, resultLength).getBytes(StandardCharsets.UTF_8); @@ -235,6 +248,7 @@ public static void reportUserInitStart() { } public static void reportUserInitEnd() { + initEnd = System.currentTimeMillis(); } public static void reportUserInvokeStart() { diff --git a/nodejs4.3/run/awslambda-mock.js b/nodejs4.3/run/awslambda-mock.js index 9f7c89cb..025f3070 100644 --- a/nodejs4.3/run/awslambda-mock.js +++ b/nodejs4.3/run/awslambda-mock.js @@ -82,6 +82,9 @@ OPTIONS.invokeid = OPTIONS.invokeId var invoked = false var errored = false +var initEndSent = false +var receivedInvokeAt +var initEnd var pingPromise var reportDonePromise @@ -93,6 +96,12 @@ module.exports = { }, waitForInvoke: function (cb) { Promise.all([pingPromise, reportDonePromise]).then(() => { + if (!invoked) { + receivedInvokeAt = Date.now() + invoked = true + } else { + LOGS = '' + } http.get({ hostname: '127.0.0.1', port: 9001, @@ -102,10 +111,6 @@ module.exports = { console.error(`Mock server invocation/next returned a ${res.statusCode} response`) return process.exit(1) } - if (invoked) { - LOGS = '' - } - invoked = true OPTIONS.invokeId = OPTIONS.initInvokeId = OPTIONS.invokeid = res.headers['lambda-runtime-aws-request-id'] OPTIONS.invokedFunctionArn = res.headers['lambda-runtime-invoked-function-arn'] OPTIONS['x-amzn-trace-id'] = res.headers['lambda-runtime-trace-id'] @@ -140,12 +145,21 @@ module.exports = { if (!invoked) return if (errType) errored = true reportDonePromise = new Promise(resolve => { + var headers = {} + if (LOG_TAIL) { + headers['Docker-Lambda-Log-Result'] = newBuffer(LOGS).slice(-4096).toString('base64') + } + if (!initEndSent) { + headers['Docker-Lambda-Invoke-Wait'] = receivedInvokeAt + headers['Docker-Lambda-Init-End'] = initEnd + initEndSent = true + } http.request({ method: 'POST', hostname: '127.0.0.1', port: 9001, path: '/2018-06-01/runtime/invocation/' + invokeId + (errType == null ? '/response' : '/error'), - headers: LOG_TAIL ? { 'Docker-Lambda-Log-Result': newBuffer(LOGS).slice(-4096).toString('base64') } : {}, + headers, }, res => { if (res.statusCode !== 202) { console.error(err || 'Got status code: ' + res.statusCode) @@ -164,7 +178,7 @@ module.exports = { if (errStack) systemErr(errStack) }, reportUserInitStart: function () { }, - reportUserInitEnd: function () { }, + reportUserInitEnd: function () { initEnd = Date.now() }, reportUserInvokeStart: function () { }, reportUserInvokeEnd: function () { }, reportException: function () { }, diff --git a/nodejs6.10/run/awslambda-mock.js b/nodejs6.10/run/awslambda-mock.js index 9f7c89cb..025f3070 100644 --- a/nodejs6.10/run/awslambda-mock.js +++ b/nodejs6.10/run/awslambda-mock.js @@ -82,6 +82,9 @@ OPTIONS.invokeid = OPTIONS.invokeId var invoked = false var errored = false +var initEndSent = false +var receivedInvokeAt +var initEnd var pingPromise var reportDonePromise @@ -93,6 +96,12 @@ module.exports = { }, waitForInvoke: function (cb) { Promise.all([pingPromise, reportDonePromise]).then(() => { + if (!invoked) { + receivedInvokeAt = Date.now() + invoked = true + } else { + LOGS = '' + } http.get({ hostname: '127.0.0.1', port: 9001, @@ -102,10 +111,6 @@ module.exports = { console.error(`Mock server invocation/next returned a ${res.statusCode} response`) return process.exit(1) } - if (invoked) { - LOGS = '' - } - invoked = true OPTIONS.invokeId = OPTIONS.initInvokeId = OPTIONS.invokeid = res.headers['lambda-runtime-aws-request-id'] OPTIONS.invokedFunctionArn = res.headers['lambda-runtime-invoked-function-arn'] OPTIONS['x-amzn-trace-id'] = res.headers['lambda-runtime-trace-id'] @@ -140,12 +145,21 @@ module.exports = { if (!invoked) return if (errType) errored = true reportDonePromise = new Promise(resolve => { + var headers = {} + if (LOG_TAIL) { + headers['Docker-Lambda-Log-Result'] = newBuffer(LOGS).slice(-4096).toString('base64') + } + if (!initEndSent) { + headers['Docker-Lambda-Invoke-Wait'] = receivedInvokeAt + headers['Docker-Lambda-Init-End'] = initEnd + initEndSent = true + } http.request({ method: 'POST', hostname: '127.0.0.1', port: 9001, path: '/2018-06-01/runtime/invocation/' + invokeId + (errType == null ? '/response' : '/error'), - headers: LOG_TAIL ? { 'Docker-Lambda-Log-Result': newBuffer(LOGS).slice(-4096).toString('base64') } : {}, + headers, }, res => { if (res.statusCode !== 202) { console.error(err || 'Got status code: ' + res.statusCode) @@ -164,7 +178,7 @@ module.exports = { if (errStack) systemErr(errStack) }, reportUserInitStart: function () { }, - reportUserInitEnd: function () { }, + reportUserInitEnd: function () { initEnd = Date.now() }, reportUserInvokeStart: function () { }, reportUserInvokeEnd: function () { }, reportException: function () { }, diff --git a/nodejs8.10/run/awslambda-mock.js b/nodejs8.10/run/awslambda-mock.js index 9f7c89cb..025f3070 100644 --- a/nodejs8.10/run/awslambda-mock.js +++ b/nodejs8.10/run/awslambda-mock.js @@ -82,6 +82,9 @@ OPTIONS.invokeid = OPTIONS.invokeId var invoked = false var errored = false +var initEndSent = false +var receivedInvokeAt +var initEnd var pingPromise var reportDonePromise @@ -93,6 +96,12 @@ module.exports = { }, waitForInvoke: function (cb) { Promise.all([pingPromise, reportDonePromise]).then(() => { + if (!invoked) { + receivedInvokeAt = Date.now() + invoked = true + } else { + LOGS = '' + } http.get({ hostname: '127.0.0.1', port: 9001, @@ -102,10 +111,6 @@ module.exports = { console.error(`Mock server invocation/next returned a ${res.statusCode} response`) return process.exit(1) } - if (invoked) { - LOGS = '' - } - invoked = true OPTIONS.invokeId = OPTIONS.initInvokeId = OPTIONS.invokeid = res.headers['lambda-runtime-aws-request-id'] OPTIONS.invokedFunctionArn = res.headers['lambda-runtime-invoked-function-arn'] OPTIONS['x-amzn-trace-id'] = res.headers['lambda-runtime-trace-id'] @@ -140,12 +145,21 @@ module.exports = { if (!invoked) return if (errType) errored = true reportDonePromise = new Promise(resolve => { + var headers = {} + if (LOG_TAIL) { + headers['Docker-Lambda-Log-Result'] = newBuffer(LOGS).slice(-4096).toString('base64') + } + if (!initEndSent) { + headers['Docker-Lambda-Invoke-Wait'] = receivedInvokeAt + headers['Docker-Lambda-Init-End'] = initEnd + initEndSent = true + } http.request({ method: 'POST', hostname: '127.0.0.1', port: 9001, path: '/2018-06-01/runtime/invocation/' + invokeId + (errType == null ? '/response' : '/error'), - headers: LOG_TAIL ? { 'Docker-Lambda-Log-Result': newBuffer(LOGS).slice(-4096).toString('base64') } : {}, + headers, }, res => { if (res.statusCode !== 202) { console.error(err || 'Got status code: ' + res.statusCode) @@ -164,7 +178,7 @@ module.exports = { if (errStack) systemErr(errStack) }, reportUserInitStart: function () { }, - reportUserInitEnd: function () { }, + reportUserInitEnd: function () { initEnd = Date.now() }, reportUserInvokeStart: function () { }, reportUserInvokeEnd: function () { }, reportException: function () { }, diff --git a/provided/run/init.go b/provided/run/init.go index dd691446..bd0fd7e5 100644 --- a/provided/run/init.go +++ b/provided/run/init.go @@ -56,6 +56,7 @@ var bootstrapPath *string var bootstrapArgs []string var bootstrapMutex sync.Mutex var logsBuf bytes.Buffer +var serverInitEnd time.Time func newContext() *mockLambdaContext { context := &mockLambdaContext{ @@ -168,6 +169,8 @@ func main() { exitCode := 0 + serverInitEnd = time.Now() + if stayOpen { systemLog(fmt.Sprintf("Lambda API listening on port %s...", apiPort)) <-interrupt @@ -416,7 +419,7 @@ func createRuntimeRouter() *chi.Mux { w.Header().Set("Content-Type", "application/json") w.Header().Set("Lambda-Runtime-Aws-Request-Id", context.RequestID) - w.Header().Set("Lambda-Runtime-Deadline-Ms", strconv.FormatInt(context.Deadline().UnixNano()/1e6, 10)) + w.Header().Set("Lambda-Runtime-Deadline-Ms", strconv.FormatInt(context.Deadline().UnixNano()/int64(time.Millisecond), 10)) w.Header().Set("Lambda-Runtime-Invoked-Function-Arn", context.InvokedFunctionArn) w.Header().Set("Lambda-Runtime-Trace-Id", context.XAmznTraceID) @@ -454,7 +457,8 @@ func createRuntimeRouter() *chi.Mux { debug("Setting Reply in /response") curContext.Reply = &invokeResponse{Payload: body} - curContext.LogTail = extractLogTail(r, curContext) + curContext.SetLogTail(r) + curContext.SetInitEnd(r) render.Render(w, r, acceptedResponse) w.(http.Flusher).Flush() @@ -489,7 +493,8 @@ func handleErrorRequest(w http.ResponseWriter, r *http.Request) { curContext.Reply = &invokeResponse{Error: lambdaErr} - curContext.LogTail = extractLogTail(r, curContext) + curContext.SetLogTail(r) + curContext.SetInitEnd(r) render.Render(w, r, response) w.(http.Flusher).Flush() @@ -531,31 +536,6 @@ func awsRequestIDValidator(next http.Handler) http.Handler { }) } -func extractLogTail(r *http.Request, context *mockLambdaContext) string { - defer logsBuf.Reset() - - if context.LogType != "Tail" { - return "" - } - if noBootstrap { - return r.Header.Get("Docker-Lambda-Log-Result") - } - - // This is very annoying but seems to be necessary to ensure we get all the stdout/stderr from the subprocess - time.Sleep(1 * time.Millisecond) - - logs := logsBuf.Bytes() - - if len(logs) == 0 { - return "" - } - - if len(logs) > 4096 { - logs = logs[len(logs)-4096:] - } - return base64.StdEncoding.EncodeToString(logs) -} - type statusResponse struct { HTTPStatusCode int `json:"-"` Status string `json:"status"` @@ -731,6 +711,7 @@ type mockLambdaContext struct { ClientContext string CognitoIdentity string Start time.Time + InvokeWait time.Time InitEnd time.Time TimeoutDuration time.Duration Reply *invokeResponse @@ -768,6 +749,55 @@ func (mc *mockLambdaContext) TimeoutErr() error { mc.RequestID, mc.Timeout) } +func (mc *mockLambdaContext) SetLogTail(r *http.Request) { + defer logsBuf.Reset() + + mc.LogTail = "" + + if mc.LogType != "Tail" { + return + } + if noBootstrap { + mc.LogTail = r.Header.Get("Docker-Lambda-Log-Result") + return + } + + // This is very annoying but seems to be necessary to ensure we get all the stdout/stderr from the subprocess + time.Sleep(1 * time.Millisecond) + + logs := logsBuf.Bytes() + + if len(logs) == 0 { + return + } + + if len(logs) > 4096 { + logs = logs[len(logs)-4096:] + } + mc.LogTail = base64.StdEncoding.EncodeToString(logs) +} + +func (mc *mockLambdaContext) SetInitEnd(r *http.Request) { + invokeWaitHeader := r.Header.Get("Docker-Lambda-Invoke-Wait") + if invokeWaitHeader != "" { + invokeWaitMs, err := strconv.ParseInt(invokeWaitHeader, 10, 64) + if err != nil { + log.Fatal(fmt.Errorf("Could not parse Docker-Lambda-Invoke-Wait header as int. Error: %s", err)) + return + } + mc.InvokeWait = time.Unix(0, invokeWaitMs*int64(time.Millisecond)) + } + initEndHeader := r.Header.Get("Docker-Lambda-Init-End") + if initEndHeader != "" { + initEndMs, err := strconv.ParseInt(initEndHeader, 10, 64) + if err != nil { + log.Fatal(fmt.Errorf("Could not parse Docker-Lambda-Init-End header as int. Error: %s", err)) + return + } + mc.InitEnd = time.Unix(0, initEndMs*int64(time.Millisecond)) + } +} + func (mc *mockLambdaContext) SetError(exitErr error) { err := &exitError{err: exitErr, context: mc} responseErr := lambdaError{ @@ -829,16 +859,23 @@ func (mc *mockLambdaContext) LogEndRequest() { mc.MaxMem = maxMem } - initDiffMs := math.Min(float64(mc.InitEnd.Sub(mc.Start).Nanoseconds()), - float64(mc.TimeoutDuration.Nanoseconds())) / 1e6 - diffMs := math.Min(float64(time.Now().Sub(mc.InitEnd).Nanoseconds()), - float64(mc.TimeoutDuration.Nanoseconds())) / 1e6 + float64(mc.TimeoutDuration.Nanoseconds())) / float64(time.Millisecond) initStr := "" if !initPrinted { - initPrinted = true + proc1stat, _ := os.Stat("/proc/1") + processStartTime := proc1stat.ModTime() + if mc.InvokeWait.IsZero() { + mc.InvokeWait = serverInitEnd + } + if mc.InvokeWait.Before(processStartTime) { + mc.InvokeWait = processStartTime + } + initDiffNs := mc.InvokeWait.Sub(proc1stat.ModTime()).Nanoseconds() + mc.InitEnd.Sub(mc.Start).Nanoseconds() + initDiffMs := math.Min(float64(initDiffNs), float64(mc.TimeoutDuration.Nanoseconds())) / float64(time.Millisecond) initStr = fmt.Sprintf("Init Duration: %.2f ms\t", initDiffMs) + initPrinted = true } systemLog("END RequestId: " + mc.RequestID) diff --git a/python2.7/run/runtime_mock.py b/python2.7/run/runtime_mock.py index a8e01e32..0c2a8662 100644 --- a/python2.7/run/runtime_mock.py +++ b/python2.7/run/runtime_mock.py @@ -66,6 +66,9 @@ TRACE_ID = None INVOKED = False ERRORED = False +INIT_END_SENT = False +INIT_END = time.time() +RECEIVED_INVOKE_AT = time.time() TODAY = datetime.date.today() # export needed stuff os.environ['AWS_LAMBDA_LOG_GROUP_NAME'] = '/aws/lambda/%s' % FUNCTION_NAME @@ -104,7 +107,8 @@ def report_user_init_start(): def report_user_init_end(): - return + global INIT_END + INIT_END = time.time() def report_user_invoke_start(): @@ -157,6 +161,16 @@ def receive_invoke(): global CONTEXT_OBJS global LOGS global LOG_TAIL + global RECEIVED_INVOKE_AT + + ORIG_STDOUT.flush() + ORIG_STDERR.flush() + + if not INVOKED: + RECEIVED_INVOKE_AT = time.time() + INVOKED = True + else: + LOGS = "" try: MOCKSERVER_CONN.request("GET", "/2018-06-01/runtime/invocation/next") @@ -169,11 +183,6 @@ def receive_invoke(): return () raise - if INVOKED: - LOGS = "" - - INVOKED = True - INVOKEID = resp.getheader('Lambda-Runtime-Aws-Request-Id') DEADLINE_MS = resp.getheader('Lambda-Runtime-Deadline-Ms') INVOKED_FUNCTION_ARN = resp.getheader( @@ -214,6 +223,7 @@ def report_fault(invokeid, msg, except_value, trace): def report_done(invokeid, errortype, result, is_fatal): global ERRORED + global INIT_END_SENT if not INVOKED: return @@ -226,7 +236,13 @@ def report_done(invokeid, errortype, result, is_fatal): result_obj['stackTrace'] = traceback.format_list(stack_trace) result = json.dumps(result_obj) - headers = {"Docker-Lambda-Log-Result": base64.b64encode(LOGS.encode())} if LOG_TAIL else {} + headers = {} + if LOG_TAIL: + headers['Docker-Lambda-Log-Result'] = base64.b64encode(LOGS.encode()) + if not INIT_END_SENT: + headers['Docker-Lambda-Invoke-Wait'] = int(RECEIVED_INVOKE_AT * 1000) + headers['Docker-Lambda-Init-End'] = int(INIT_END * 1000) + INIT_END_SENT = True MOCKSERVER_CONN.request("POST", "/2018-06-01/runtime/invocation/%s/%s" % \ (invokeid, "response" if errortype is None else "error"), result, headers) diff --git a/python3.6/run/runtime_mock.py b/python3.6/run/runtime_mock.py index a8e01e32..0c2a8662 100644 --- a/python3.6/run/runtime_mock.py +++ b/python3.6/run/runtime_mock.py @@ -66,6 +66,9 @@ TRACE_ID = None INVOKED = False ERRORED = False +INIT_END_SENT = False +INIT_END = time.time() +RECEIVED_INVOKE_AT = time.time() TODAY = datetime.date.today() # export needed stuff os.environ['AWS_LAMBDA_LOG_GROUP_NAME'] = '/aws/lambda/%s' % FUNCTION_NAME @@ -104,7 +107,8 @@ def report_user_init_start(): def report_user_init_end(): - return + global INIT_END + INIT_END = time.time() def report_user_invoke_start(): @@ -157,6 +161,16 @@ def receive_invoke(): global CONTEXT_OBJS global LOGS global LOG_TAIL + global RECEIVED_INVOKE_AT + + ORIG_STDOUT.flush() + ORIG_STDERR.flush() + + if not INVOKED: + RECEIVED_INVOKE_AT = time.time() + INVOKED = True + else: + LOGS = "" try: MOCKSERVER_CONN.request("GET", "/2018-06-01/runtime/invocation/next") @@ -169,11 +183,6 @@ def receive_invoke(): return () raise - if INVOKED: - LOGS = "" - - INVOKED = True - INVOKEID = resp.getheader('Lambda-Runtime-Aws-Request-Id') DEADLINE_MS = resp.getheader('Lambda-Runtime-Deadline-Ms') INVOKED_FUNCTION_ARN = resp.getheader( @@ -214,6 +223,7 @@ def report_fault(invokeid, msg, except_value, trace): def report_done(invokeid, errortype, result, is_fatal): global ERRORED + global INIT_END_SENT if not INVOKED: return @@ -226,7 +236,13 @@ def report_done(invokeid, errortype, result, is_fatal): result_obj['stackTrace'] = traceback.format_list(stack_trace) result = json.dumps(result_obj) - headers = {"Docker-Lambda-Log-Result": base64.b64encode(LOGS.encode())} if LOG_TAIL else {} + headers = {} + if LOG_TAIL: + headers['Docker-Lambda-Log-Result'] = base64.b64encode(LOGS.encode()) + if not INIT_END_SENT: + headers['Docker-Lambda-Invoke-Wait'] = int(RECEIVED_INVOKE_AT * 1000) + headers['Docker-Lambda-Init-End'] = int(INIT_END * 1000) + INIT_END_SENT = True MOCKSERVER_CONN.request("POST", "/2018-06-01/runtime/invocation/%s/%s" % \ (invokeid, "response" if errortype is None else "error"), result, headers) From 8e042124c6fbd2fb868ece033ca4497c0e7254f0 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Mon, 18 Nov 2019 16:54:02 -0500 Subject: [PATCH 088/271] Remove deprecated `latest` tags from build script --- base/build-all.sh | 2 -- 1 file changed, 2 deletions(-) diff --git a/base/build-all.sh b/base/build-all.sh index 0a0d9ed4..f62b8794 100755 --- a/base/build-all.sh +++ b/base/build-all.sh @@ -13,7 +13,6 @@ for RUNTIME in $RUNTIMES; do docker build -t lambci/lambda:${RUNTIME} . done -docker tag lambci/lambda:nodejs4.3 lambci/lambda:latest for RUNTIME in $RUNTIMES; do echo build-${RUNTIME} @@ -22,4 +21,3 @@ for RUNTIME in $RUNTIMES; do docker build -t lambci/lambda:build-${RUNTIME} . done -docker tag lambci/lambda:build-nodejs4.3 lambci/lambda:build From 1e51df44a0ad0b624789c8fd6b95ef1cb228aaa0 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Thu, 7 Nov 2019 16:19:15 -0500 Subject: [PATCH 089/271] Add --enable-msg-logs to provided init --- provided/run/init.go | 1 + 1 file changed, 1 insertion(+) diff --git a/provided/run/init.go b/provided/run/init.go index bd0fd7e5..5723e2a8 100644 --- a/provided/run/init.go +++ b/provided/run/init.go @@ -101,6 +101,7 @@ func main() { bootstrapPath = flag.String("bootstrap", "/var/runtime/bootstrap", "path to bootstrap") bootstrapArgsString := flag.String("bootstrap-args", "[]", "additional arguments passed to bootstrap, as a stringified JSON Array") + flag.Bool("enable-msg-logs", false, "enable message logs") flag.Parse() positionalArgs := flag.Args() From e3584851892ab17bdf502bb5c39dbcbb2f409fce Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Thu, 7 Nov 2019 15:27:51 -0500 Subject: [PATCH 090/271] Add nodejs12.x runtime --- README.md | 10 ++++++---- base/build-all.sh | 2 +- base/diff-2.sh | 8 +++++++- base/dump-node12x.js | 38 +++++++++++++++++++++++++++++++++++++ base/publish-all.sh | 2 +- base/tag-all.sh | 2 +- base/test-all.sh | 1 + nodejs12.x/build/Dockerfile | 12 ++++++++++++ nodejs12.x/run/Dockerfile | 21 ++++++++++++++++++++ 9 files changed, 88 insertions(+), 8 deletions(-) create mode 100644 base/dump-node12x.js create mode 100644 nodejs12.x/build/Dockerfile create mode 100644 nodejs12.x/run/Dockerfile diff --git a/README.md b/README.md index 7e417b91..68dc38cc 100644 --- a/README.md +++ b/README.md @@ -60,11 +60,11 @@ You can also use [yumda](https://github.com/lambci/yumda) to install precompiled ## Run Examples ```sh -# Test an index.handler function from the current directory on Node.js v10.x -docker run --rm -v "$PWD":/var/task lambci/lambda:nodejs10.x index.handler +# Test an index.handler function from the current directory on Node.js v12.x +docker run --rm -v "$PWD":/var/task lambci/lambda:nodejs12.x index.handler # If using a function other than index.handler, with a custom event -docker run --rm -v "$PWD":/var/task lambci/lambda:nodejs10.x index.myHandler '{"some": "event"}' +docker run --rm -v "$PWD":/var/task lambci/lambda:nodejs12.x index.myHandler '{"some": "event"}' # Use the Node.js v8.10 runtime in a similar fashion docker run --rm -v "$PWD":/var/task lambci/lambda:nodejs8.10 index.myHandler '{}' @@ -123,7 +123,7 @@ To use the build images, for compilation, deployment, etc: ```sh # To compile native deps in node_modules -docker run --rm -v "$PWD":/var/task lambci/lambda:build-nodejs10.x npm rebuild +docker run --rm -v "$PWD":/var/task lambci/lambda:build-nodejs12.x npm rebuild # To resolve dependencies on go1.x (working directory is /go/src/handler) docker run --rm -v "$PWD":/go/src/handler lambci/lambda:build-go1.x go mod download @@ -200,6 +200,7 @@ These follow the Lambda runtime names: - `nodejs6.10` - `nodejs8.10` - `nodejs10.x` + - `nodejs12.x` - `python2.7` - `python3.6` - `python3.7` @@ -213,6 +214,7 @@ These follow the Lambda runtime names: - `build-nodejs6.10` - `build-nodejs8.10` - `build-nodejs10.x` + - `build-nodejs12.x` - `build-python2.7` - `build-python3.6` - `build-python3.7` diff --git a/base/build-all.sh b/base/build-all.sh index f62b8794..a5bf4aa9 100755 --- a/base/build-all.sh +++ b/base/build-all.sh @@ -1,6 +1,6 @@ #!/bin/bash -RUNTIMES="provided go1.x nodejs4.3 nodejs6.10 nodejs8.10 nodejs10.x python2.7 python3.6 python3.7 ruby2.5 java8 dotnetcore2.0 dotnetcore2.1" +RUNTIMES="provided go1.x nodejs4.3 nodejs6.10 nodejs8.10 nodejs10.x nodejs12.x python2.7 python3.6 python3.7 ruby2.5 java8 dotnetcore2.0 dotnetcore2.1" TOP_DIR="${PWD}/.." diff --git a/base/diff-2.sh b/base/diff-2.sh index 13fba545..3cf5966e 100755 --- a/base/diff-2.sh +++ b/base/diff-2.sh @@ -1,6 +1,6 @@ #!/bin/bash -RUNTIMES="nodejs10.x" +RUNTIMES="nodejs10.x nodejs12.x" rm -rf diff-2 mkdir -p diff-2 @@ -39,3 +39,9 @@ echo diff docker/var/runtime lambda/var/runtime echo diff -qr docker lambda + +cd ${DIFF_DIR}/nodejs12.x +pwd +diff docker/var/runtime lambda/var/runtime +diff -qr docker lambda +echo diff --git a/base/dump-node12x.js b/base/dump-node12x.js new file mode 100644 index 00000000..765af273 --- /dev/null +++ b/base/dump-node12x.js @@ -0,0 +1,38 @@ +const fs = require('fs') +const { execSync } = require('child_process') +const AWS = require('aws-sdk') +const s3 = new AWS.S3() + +// Depends on tar-find-layer for the tar/find/xargs binaries +exports.handler = async(event, context) => { + const execOpts = { stdio: 'inherit', maxBuffer: 16 * 1024 * 1024 } + + let filename = 'nodejs12.x.tgz' + let cmd = 'tar -cpzf /tmp/' + filename + + ' --numeric-owner --ignore-failed-read /var/runtime /var/lang /var/rapid' + + execSync(cmd, execOpts) + + console.log('Zipping done! Uploading...') + + let data = await s3.upload({ + Bucket: 'lambci', + Key: 'fs/' + filename, + Body: fs.createReadStream('/tmp/' + filename), + ACL: 'public-read', + }).promise() + + console.log('Uploading done!') + + console.log(process.execPath) + console.log(process.execArgv) + console.log(process.argv) + console.log(process.cwd()) + console.log(__filename) + console.log(process.env) + execSync('echo /proc/1/environ; xargs -n 1 -0 < /proc/1/environ', execOpts) + execSync("bash -O extglob -c 'for cmd in /proc/+([0-9])/cmdline; do echo $cmd; xargs -n 1 -0 < $cmd; done'", execOpts) + console.log(context) + + return data +} diff --git a/base/publish-all.sh b/base/publish-all.sh index 1541598b..70d1a05a 100755 --- a/base/publish-all.sh +++ b/base/publish-all.sh @@ -1,6 +1,6 @@ #!/bin/bash -RUNTIMES="provided go1.x nodejs4.3 nodejs6.10 nodejs8.10 nodejs10.x python2.7 python3.6 python3.7 ruby2.5 java8 dotnetcore2.0 dotnetcore2.1" +RUNTIMES="provided go1.x nodejs4.3 nodejs6.10 nodejs8.10 nodejs10.x nodejs12.x python2.7 python3.6 python3.7 ruby2.5 java8 dotnetcore2.0 dotnetcore2.1" echo -n "Enter repository passphrase: " read -s DOCKER_CONTENT_TRUST_REPOSITORY_PASSPHRASE diff --git a/base/tag-all.sh b/base/tag-all.sh index 82bd6ca4..de966001 100755 --- a/base/tag-all.sh +++ b/base/tag-all.sh @@ -1,6 +1,6 @@ #!/bin/bash -RUNTIMES="provided go1.x nodejs4.3 nodejs6.10 nodejs8.10 nodejs10.x python2.7 python3.6 python3.7 ruby2.5 java8 dotnetcore2.0 dotnetcore2.1" +RUNTIMES="provided go1.x nodejs4.3 nodejs6.10 nodejs8.10 nodejs10.x nodejs12.x python2.7 python3.6 python3.7 ruby2.5 java8 dotnetcore2.0 dotnetcore2.1" git tag -f latest diff --git a/base/test-all.sh b/base/test-all.sh index d0ff7f10..45655483 100755 --- a/base/test-all.sh +++ b/base/test-all.sh @@ -10,6 +10,7 @@ docker run --rm -v "$PWD":/var/task lambci/lambda:nodejs8.10 cd ${EXAMPLES_DIR}/nodejs8.10 docker run --rm -v "$PWD":/var/task lambci/lambda:nodejs8.10 docker run --rm -v "$PWD":/var/task lambci/lambda:nodejs10.x index.handler +docker run --rm -v "$PWD":/var/task lambci/lambda:nodejs12.x index.handler cd ${EXAMPLES_DIR}/nodejs-native-module npm run build diff --git a/nodejs12.x/build/Dockerfile b/nodejs12.x/build/Dockerfile new file mode 100644 index 00000000..4c613272 --- /dev/null +++ b/nodejs12.x/build/Dockerfile @@ -0,0 +1,12 @@ +FROM lambci/lambda-base-2:build + +ENV PATH=/var/lang/bin:$PATH \ + LD_LIBRARY_PATH=/var/lang/lib:$LD_LIBRARY_PATH \ + AWS_EXECUTION_ENV=AWS_Lambda_nodejs12.x \ + NODE_PATH=/opt/nodejs/node12/node_modules:/opt/nodejs/node_modules:/var/runtime/node_modules + +RUN rm -rf /var/runtime /var/lang /var/rapid && \ + curl https://lambci.s3.amazonaws.com/fs/nodejs12.x.tgz | tar -zx -C / + +# Add these as a separate layer as they get updated frequently +RUN pip install -U awscli boto3 aws-sam-cli==0.31.0 aws-lambda-builders==0.5.0 --no-cache-dir diff --git a/nodejs12.x/run/Dockerfile b/nodejs12.x/run/Dockerfile new file mode 100644 index 00000000..1c4467a5 --- /dev/null +++ b/nodejs12.x/run/Dockerfile @@ -0,0 +1,21 @@ +FROM lambci/lambda-base + +RUN curl https://lambci.s3.amazonaws.com/fs/nodejs12.x.tgz | tar -zx -C /opt + + +FROM lambci/lambda:provided + + +FROM lambci/lambda-base-2 + +ENV PATH=/var/lang/bin:$PATH \ + LD_LIBRARY_PATH=/var/lang/lib:$LD_LIBRARY_PATH \ + AWS_EXECUTION_ENV=AWS_Lambda_nodejs12.x + +COPY --from=0 /opt/* /var/ + +COPY --from=1 /var/runtime/init /var/rapid/init + +USER sbx_user1051 + +ENTRYPOINT ["/var/rapid/init", "--bootstrap", "/var/runtime/bootstrap"] From a94337ae2410a94a9ac878622eb82b26bc385a92 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Thu, 7 Nov 2019 16:05:11 -0500 Subject: [PATCH 091/271] Add python3.8 runtime --- README.md | 4 ++- base/build-all.sh | 2 +- base/diff-2.sh | 8 +++++- base/dump-python38.py | 43 ++++++++++++++++++++++++++++++ base/publish-all.sh | 2 +- base/tag-all.sh | 2 +- base/test-all.sh | 2 ++ examples/python/lambda_function.py | 1 - nodejs12.x/run/Dockerfile | 2 +- python3.8/build/Dockerfile | 15 +++++++++++ python3.8/run/Dockerfile | 22 +++++++++++++++ 11 files changed, 96 insertions(+), 7 deletions(-) create mode 100644 base/dump-python38.py create mode 100644 python3.8/build/Dockerfile create mode 100644 python3.8/run/Dockerfile diff --git a/README.md b/README.md index 68dc38cc..ddf32cca 100644 --- a/README.md +++ b/README.md @@ -78,7 +78,7 @@ docker run --rm -v "$PWD":/var/task lambci/lambda:python2.7 # Test on Python 3.6 with a custom file named my_module.py containing a my_handler function docker run --rm -v "$PWD":/var/task lambci/lambda:python3.6 my_module.my_handler -# Python 3.7 requires the handler be given explicitly +# Python 3.7/3.8 require the handler be given explicitly docker run --rm -v "$PWD":/var/task lambci/lambda:python3.7 lambda_function.lambda_handler # Similarly with Ruby 2.5 @@ -204,6 +204,7 @@ These follow the Lambda runtime names: - `python2.7` - `python3.6` - `python3.7` + - `python3.8` - `ruby2.5` - `java8` - `go1.x` @@ -218,6 +219,7 @@ These follow the Lambda runtime names: - `build-python2.7` - `build-python3.6` - `build-python3.7` + - `build-python3.8` - `build-ruby2.5` - `build-java8` - `build-go1.x` diff --git a/base/build-all.sh b/base/build-all.sh index a5bf4aa9..123ffc02 100755 --- a/base/build-all.sh +++ b/base/build-all.sh @@ -1,6 +1,6 @@ #!/bin/bash -RUNTIMES="provided go1.x nodejs4.3 nodejs6.10 nodejs8.10 nodejs10.x nodejs12.x python2.7 python3.6 python3.7 ruby2.5 java8 dotnetcore2.0 dotnetcore2.1" +RUNTIMES="provided go1.x nodejs4.3 nodejs6.10 nodejs8.10 nodejs10.x nodejs12.x python2.7 python3.6 python3.7 python3.8 ruby2.5 java8 dotnetcore2.0 dotnetcore2.1" TOP_DIR="${PWD}/.." diff --git a/base/diff-2.sh b/base/diff-2.sh index 3cf5966e..f0368f9a 100755 --- a/base/diff-2.sh +++ b/base/diff-2.sh @@ -1,6 +1,6 @@ #!/bin/bash -RUNTIMES="nodejs10.x nodejs12.x" +RUNTIMES="nodejs10.x nodejs12.x python3.8" rm -rf diff-2 mkdir -p diff-2 @@ -45,3 +45,9 @@ pwd diff docker/var/runtime lambda/var/runtime diff -qr docker lambda echo + +cd ${DIFF_DIR}/python3.8 +pwd +diff docker/var/runtime lambda/var/runtime +diff -qr docker lambda +echo diff --git a/base/dump-python38.py b/base/dump-python38.py new file mode 100644 index 00000000..319fe042 --- /dev/null +++ b/base/dump-python38.py @@ -0,0 +1,43 @@ +from __future__ import print_function + +import os +import sys +import subprocess +import json +import boto3 +from boto3.s3.transfer import S3Transfer + +TRANSFER = S3Transfer(boto3.client('s3')) + + +def lambda_handler(event, context): + if 'cmd' in event: + return print(subprocess.check_output(['sh', '-c', event['cmd']]).decode('utf-8')) + + filename = 'python3.8.tgz' + + subprocess.call(['sh', '-c', f'tar -cpzf /tmp/{filename} --numeric-owner --ignore-failed-read ' + + '/var/runtime /var/lang /var/rapid']) + + print('Zipping done! Uploading...') + + TRANSFER.upload_file(f'/tmp/{filename}', 'lambci', + f'fs/{filename}', extra_args={'ACL': 'public-read'}) + + print('Uploading done!') + + info = {'sys.executable': sys.executable, + 'sys.argv': sys.argv, + 'sys.path': sys.path, + 'os.getcwd': os.getcwd(), + '__file__': __file__, + 'os.environ': {k: str(v) for k, v in os.environ.items()}, + 'context': {k: str(v) for k, v in context.__dict__.items()}, + 'proc environ': subprocess.check_output( + ['sh', '-c', 'echo /proc/1/environ; xargs -n 1 -0 < /proc/1/environ']).decode('utf-8').splitlines(), + 'ps aux': subprocess.check_output( + ['bash', '-O', 'extglob', '-c', 'for cmd in /proc/+([0-9])/cmdline; do echo $cmd; xargs -n 1 -0 < $cmd; done']).decode('utf-8').splitlines()} + + print(json.dumps(info, indent=2)) + + return info diff --git a/base/publish-all.sh b/base/publish-all.sh index 70d1a05a..dc67d7cc 100755 --- a/base/publish-all.sh +++ b/base/publish-all.sh @@ -1,6 +1,6 @@ #!/bin/bash -RUNTIMES="provided go1.x nodejs4.3 nodejs6.10 nodejs8.10 nodejs10.x nodejs12.x python2.7 python3.6 python3.7 ruby2.5 java8 dotnetcore2.0 dotnetcore2.1" +RUNTIMES="provided go1.x nodejs4.3 nodejs6.10 nodejs8.10 nodejs10.x nodejs12.x python2.7 python3.6 python3.7 python3.8 ruby2.5 java8 dotnetcore2.0 dotnetcore2.1" echo -n "Enter repository passphrase: " read -s DOCKER_CONTENT_TRUST_REPOSITORY_PASSPHRASE diff --git a/base/tag-all.sh b/base/tag-all.sh index de966001..cd8f2e60 100755 --- a/base/tag-all.sh +++ b/base/tag-all.sh @@ -1,6 +1,6 @@ #!/bin/bash -RUNTIMES="provided go1.x nodejs4.3 nodejs6.10 nodejs8.10 nodejs10.x nodejs12.x python2.7 python3.6 python3.7 ruby2.5 java8 dotnetcore2.0 dotnetcore2.1" +RUNTIMES="provided go1.x nodejs4.3 nodejs6.10 nodejs8.10 nodejs10.x nodejs12.x python2.7 python3.6 python3.7 python3.8 ruby2.5 java8 dotnetcore2.0 dotnetcore2.1" git tag -f latest diff --git a/base/test-all.sh b/base/test-all.sh index 45655483..b3f3ec7c 100755 --- a/base/test-all.sh +++ b/base/test-all.sh @@ -20,10 +20,12 @@ cd ${EXAMPLES_DIR}/python docker run --rm -v "$PWD":/var/task lambci/lambda:python2.7 docker run --rm -v "$PWD":/var/task lambci/lambda:python3.6 docker run --rm -v "$PWD":/var/task lambci/lambda:python3.7 lambda_function.lambda_handler +docker run --rm -v "$PWD":/var/task lambci/lambda:python3.8 lambda_function.lambda_handler docker run --rm -it lambci/lambda:build-python2.7 pip install marisa-trie docker run --rm -it lambci/lambda:build-python3.6 pip install marisa-trie docker run --rm -it lambci/lambda:build-python3.7 pip install marisa-trie +docker run --rm -it lambci/lambda:build-python3.8 pip install marisa-trie cd ${EXAMPLES_DIR}/ruby docker run --rm -v "$PWD":/var/task lambci/lambda:ruby2.5 lambda_function.lambda_handler diff --git a/examples/python/lambda_function.py b/examples/python/lambda_function.py index 651e749c..ffe1d550 100644 --- a/examples/python/lambda_function.py +++ b/examples/python/lambda_function.py @@ -29,6 +29,5 @@ def lambda_handler(event, context): "__file__": str(__file__), "os.environ": str(os.environ), "context.__dict__": str(context.__dict__), - "ps aux": str(subprocess.check_output(['ps', 'aux'])), "event": event } diff --git a/nodejs12.x/run/Dockerfile b/nodejs12.x/run/Dockerfile index 1c4467a5..9864f768 100644 --- a/nodejs12.x/run/Dockerfile +++ b/nodejs12.x/run/Dockerfile @@ -18,4 +18,4 @@ COPY --from=1 /var/runtime/init /var/rapid/init USER sbx_user1051 -ENTRYPOINT ["/var/rapid/init", "--bootstrap", "/var/runtime/bootstrap"] +ENTRYPOINT ["/var/rapid/init", "--bootstrap", "/var/runtime/bootstrap", "--enable-msg-logs"] diff --git a/python3.8/build/Dockerfile b/python3.8/build/Dockerfile new file mode 100644 index 00000000..8d14bba9 --- /dev/null +++ b/python3.8/build/Dockerfile @@ -0,0 +1,15 @@ +FROM lambci/lambda-base-2:build + +ENV PATH=/var/lang/bin:$PATH \ + LD_LIBRARY_PATH=/var/lang/lib:$LD_LIBRARY_PATH \ + AWS_EXECUTION_ENV=AWS_Lambda_python3.8 \ + PYTHONPATH=/var/runtime \ + PKG_CONFIG_PATH=/var/lang/lib/pkgconfig:/usr/lib64/pkgconfig:/usr/share/pkgconfig + +RUN rm -rf /var/runtime /var/lang /var/rapid && \ + curl https://lambci.s3.amazonaws.com/fs/python3.8.tgz | tar -zx -C / + +# Add these as a separate layer as they get updated frequently +RUN pip install -U pip setuptools --no-cache-dir && \ + pip install -U virtualenv pipenv --no-cache-dir && \ + pip install -U awscli boto3 aws-sam-cli==0.31.0 aws-lambda-builders==0.5.0 --no-cache-dir diff --git a/python3.8/run/Dockerfile b/python3.8/run/Dockerfile new file mode 100644 index 00000000..ac587b3a --- /dev/null +++ b/python3.8/run/Dockerfile @@ -0,0 +1,22 @@ +FROM lambci/lambda-base + +RUN curl https://lambci.s3.amazonaws.com/fs/python3.8.tgz | tar -zx -C /opt + + +FROM lambci/lambda:provided + + +FROM lambci/lambda-base-2 + +ENV PATH=/var/lang/bin:$PATH \ + LD_LIBRARY_PATH=/var/lang/lib:$LD_LIBRARY_PATH \ + AWS_EXECUTION_ENV=AWS_Lambda_python3.8 + +COPY --from=0 /opt/* /var/ + +COPY --from=1 /var/runtime/init /var/rapid/init + +USER sbx_user1051 + +ENTRYPOINT ["/var/rapid/init", "--bootstrap", "/var/runtime/bootstrap", "--enable-msg-logs"] + From 3bf429aaad7f057cd57c9814618ddd515032d7a1 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Thu, 7 Nov 2019 17:08:41 -0500 Subject: [PATCH 092/271] Add java11 runtime --- .gitignore | 4 ++ README.md | 2 + base/build-all.sh | 2 +- base/diff-2.sh | 8 ++- base/dump-java11/build.gradle | 28 ++++++++ .../java/org/lambci/lambda/DumpJava11.java | 66 +++++++++++++++++++ base/publish-all.sh | 2 +- base/tag-all.sh | 2 +- base/test-all.sh | 1 + examples/java/README.md | 3 + .../org/lambci/lambda/ExampleHandler.java | 6 +- java11/build/Dockerfile | 17 +++++ java11/run/Dockerfile | 22 +++++++ 13 files changed, 157 insertions(+), 6 deletions(-) create mode 100644 base/dump-java11/build.gradle create mode 100644 base/dump-java11/src/main/java/org/lambci/lambda/DumpJava11.java create mode 100644 java11/build/Dockerfile create mode 100644 java11/run/Dockerfile diff --git a/.gitignore b/.gitignore index 6cdca017..14cb2c21 100644 --- a/.gitignore +++ b/.gitignore @@ -15,3 +15,7 @@ examples/go1.x/handler examples/dotnetcore2.0/pub examples/dotnetcore2.1/pub base/tar-find-layer/layer.zip +base/dump-java11/build +base/dump-java11/.settings +base/dump-java11/.project +base/dump-java11/.vscode diff --git a/README.md b/README.md index ddf32cca..3b21930d 100644 --- a/README.md +++ b/README.md @@ -207,6 +207,7 @@ These follow the Lambda runtime names: - `python3.8` - `ruby2.5` - `java8` + - `java11` - `go1.x` - `dotnetcore2.0` - `dotnetcore2.1` @@ -222,6 +223,7 @@ These follow the Lambda runtime names: - `build-python3.8` - `build-ruby2.5` - `build-java8` + - `build-java11` - `build-go1.x` - `build-dotnetcore2.0` - `build-dotnetcore2.1` diff --git a/base/build-all.sh b/base/build-all.sh index 123ffc02..d743840c 100755 --- a/base/build-all.sh +++ b/base/build-all.sh @@ -1,6 +1,6 @@ #!/bin/bash -RUNTIMES="provided go1.x nodejs4.3 nodejs6.10 nodejs8.10 nodejs10.x nodejs12.x python2.7 python3.6 python3.7 python3.8 ruby2.5 java8 dotnetcore2.0 dotnetcore2.1" +RUNTIMES="provided go1.x nodejs4.3 nodejs6.10 nodejs8.10 nodejs10.x nodejs12.x python2.7 python3.6 python3.7 python3.8 ruby2.5 java8 java11 dotnetcore2.0 dotnetcore2.1" TOP_DIR="${PWD}/.." diff --git a/base/diff-2.sh b/base/diff-2.sh index f0368f9a..8028371f 100755 --- a/base/diff-2.sh +++ b/base/diff-2.sh @@ -1,6 +1,6 @@ #!/bin/bash -RUNTIMES="nodejs10.x nodejs12.x python3.8" +RUNTIMES="nodejs10.x nodejs12.x python3.8 java11" rm -rf diff-2 mkdir -p diff-2 @@ -51,3 +51,9 @@ pwd diff docker/var/runtime lambda/var/runtime diff -qr docker lambda echo + +cd ${DIFF_DIR}/java11 +pwd +diff docker/var/runtime lambda/var/runtime +diff -qr docker lambda +echo diff --git a/base/dump-java11/build.gradle b/base/dump-java11/build.gradle new file mode 100644 index 00000000..f0e6e682 --- /dev/null +++ b/base/dump-java11/build.gradle @@ -0,0 +1,28 @@ +apply plugin: 'java' + +sourceCompatibility = '11' +targetCompatibility = '11' + +repositories { + mavenCentral() +} + +dependencies { + compile ( + 'com.amazonaws:aws-lambda-java-core:1.2.0', + 'com.amazonaws:aws-lambda-java-events:2.2.7', + 'com.amazonaws:aws-java-sdk-s3:1.11.667' + ) +} + +task buildZip(type: Zip) { + from compileJava + from processResources + into('lib') { + from configurations.runtime + } +} + +build.dependsOn buildZip + +// docker run --rm -v "$PWD":/app -w /app gradle:jdk11 gradle build diff --git a/base/dump-java11/src/main/java/org/lambci/lambda/DumpJava11.java b/base/dump-java11/src/main/java/org/lambci/lambda/DumpJava11.java new file mode 100644 index 00000000..f2f00f35 --- /dev/null +++ b/base/dump-java11/src/main/java/org/lambci/lambda/DumpJava11.java @@ -0,0 +1,66 @@ +package org.lambci.lambda; + +import java.io.File; +import java.lang.management.ManagementFactory; +import java.util.Map; +import java.util.Scanner; + +import com.amazonaws.services.lambda.runtime.Context; +import com.amazonaws.services.lambda.runtime.RequestHandler; +import com.amazonaws.services.s3.AmazonS3; +import com.amazonaws.services.s3.AmazonS3ClientBuilder; +import com.amazonaws.services.s3.model.CannedAccessControlList; +import com.amazonaws.services.s3.model.PutObjectRequest; +import com.amazonaws.services.s3.model.PutObjectResult; + +public class DumpJava11 implements RequestHandler { + + @Override + public PutObjectResult handleRequest(Object input, Context context) { + String filename = "java11.tgz"; + String cmd = "tar -cpzf /tmp/" + filename + " --numeric-owner --ignore-failed-read /var/runtime /var/lang"; + AmazonS3 s3client = AmazonS3ClientBuilder.standard().withRegion("us-east-1").build(); + + System.out.println(ManagementFactory.getRuntimeMXBean().getInputArguments().toString()); + System.out.println(System.getProperty("sun.java.command")); + System.out.println(System.getProperty("java.home")); + System.out.println(System.getProperty("java.library.path")); + System.out.println(System.getProperty("java.class.path")); + System.out.println(System.getProperty("user.dir")); + System.out.println(System.getProperty("user.home")); + System.out.println(System.getProperty("user.name")); + System.out.println(new File(".").getAbsolutePath()); + Map env = System.getenv(); + for (String envName : env.keySet()) { + System.out.println(envName + "=" + env.get(envName)); + } + + try { + Process process = Runtime.getRuntime().exec(new String[] { "sh", "-c", cmd }); + + try (Scanner stdoutScanner = new Scanner(process.getInputStream()); + Scanner stderrScanner = new Scanner(process.getErrorStream())) { + // Echo all stdout first + while (stdoutScanner.hasNextLine()) { + System.out.println(stdoutScanner.nextLine()); + } + // Then echo stderr + while (stderrScanner.hasNextLine()) { + System.err.println(stderrScanner.nextLine()); + } + } + + process.waitFor(); + if (process.exitValue() != 0) { + return null; + } + + System.out.println("Zipping done! Uploading..."); + + return s3client.putObject(new PutObjectRequest("lambci", "fs/" + filename, new File("/tmp/" + filename)) + .withCannedAcl(CannedAccessControlList.PublicRead)); + } catch (Exception e) { + throw new RuntimeException(e); + } + } +} diff --git a/base/publish-all.sh b/base/publish-all.sh index dc67d7cc..decd3730 100755 --- a/base/publish-all.sh +++ b/base/publish-all.sh @@ -1,6 +1,6 @@ #!/bin/bash -RUNTIMES="provided go1.x nodejs4.3 nodejs6.10 nodejs8.10 nodejs10.x nodejs12.x python2.7 python3.6 python3.7 python3.8 ruby2.5 java8 dotnetcore2.0 dotnetcore2.1" +RUNTIMES="provided go1.x nodejs4.3 nodejs6.10 nodejs8.10 nodejs10.x nodejs12.x python2.7 python3.6 python3.7 python3.8 ruby2.5 java8 java11 dotnetcore2.0 dotnetcore2.1" echo -n "Enter repository passphrase: " read -s DOCKER_CONTENT_TRUST_REPOSITORY_PASSPHRASE diff --git a/base/tag-all.sh b/base/tag-all.sh index cd8f2e60..6a738714 100755 --- a/base/tag-all.sh +++ b/base/tag-all.sh @@ -1,6 +1,6 @@ #!/bin/bash -RUNTIMES="provided go1.x nodejs4.3 nodejs6.10 nodejs8.10 nodejs10.x nodejs12.x python2.7 python3.6 python3.7 python3.8 ruby2.5 java8 dotnetcore2.0 dotnetcore2.1" +RUNTIMES="provided go1.x nodejs4.3 nodejs6.10 nodejs8.10 nodejs10.x nodejs12.x python2.7 python3.6 python3.7 python3.8 ruby2.5 java8 java11 dotnetcore2.0 dotnetcore2.1" git tag -f latest diff --git a/base/test-all.sh b/base/test-all.sh index b3f3ec7c..c034c2a6 100755 --- a/base/test-all.sh +++ b/base/test-all.sh @@ -33,6 +33,7 @@ docker run --rm -v "$PWD":/var/task lambci/lambda:ruby2.5 lambda_function.lambda cd ${EXAMPLES_DIR}/java docker run --rm -v "$PWD":/app -w /app gradle gradle build docker run --rm -v "$PWD/build/docker":/var/task lambci/lambda:java8 org.lambci.lambda.ExampleHandler '{"some": "event"}' +docker run --rm -v "$PWD/build/docker":/var/task lambci/lambda:java11 org.lambci.lambda.ExampleHandler '{"some": "event"}' cd ${EXAMPLES_DIR}/dotnetcore2.0 docker run --rm -v "$PWD":/var/task lambci/lambda:build-dotnetcore2.0 dotnet publish -c Release -o pub diff --git a/examples/java/README.md b/examples/java/README.md index d5811ddb..7ebb7a0e 100644 --- a/examples/java/README.md +++ b/examples/java/README.md @@ -8,4 +8,7 @@ docker run --rm -v "$PWD":/app -w /app gradle:6.0 gradle build # Then you can run using that directory as the task directory docker run --rm -v "$PWD/build/docker":/var/task lambci/lambda:java8 org.lambci.lambda.ExampleHandler '{"some": "event"}' + +# OR +docker run --rm -v "$PWD/build/docker":/var/task lambci/lambda:java11 org.lambci.lambda.ExampleHandler '{"some": "event"}' ``` diff --git a/examples/java/src/main/java/org/lambci/lambda/ExampleHandler.java b/examples/java/src/main/java/org/lambci/lambda/ExampleHandler.java index 42ab8ad9..98c2b01b 100644 --- a/examples/java/src/main/java/org/lambci/lambda/ExampleHandler.java +++ b/examples/java/src/main/java/org/lambci/lambda/ExampleHandler.java @@ -36,8 +36,10 @@ public String handleRequest(Object input, Context context) { logger.log(context.getInvokedFunctionArn() + "\n"); logger.log(context.getLogGroupName() + "\n"); logger.log(context.getLogStreamName() + "\n"); - logger.log(context.getIdentity().getIdentityId() + "\n"); - logger.log(context.getIdentity().getIdentityPoolId() + "\n"); + if (context.getIdentity() != null) { + logger.log(context.getIdentity().getIdentityId() + "\n"); + logger.log(context.getIdentity().getIdentityPoolId() + "\n"); + } logger.log(context.getClientContext() + "\n"); logger.log(context.getMemoryLimitInMB() + "\n"); logger.log(context.getRemainingTimeInMillis() + "\n"); diff --git a/java11/build/Dockerfile b/java11/build/Dockerfile new file mode 100644 index 00000000..e978ed37 --- /dev/null +++ b/java11/build/Dockerfile @@ -0,0 +1,17 @@ +FROM lambci/lambda-base-2:build + +ENV PATH=/var/lang/bin:$PATH \ + LD_LIBRARY_PATH=/var/lang/lib:$LD_LIBRARY_PATH \ + AWS_EXECUTION_ENV=AWS_Lambda_java11 + +RUN rm -rf /var/runtime /var/lang /var/rapid && \ + curl https://lambci.s3.amazonaws.com/fs/java11.tgz | tar -zx -C / && \ + mkdir /usr/local/gradle && curl -L -o gradle.zip https://services.gradle.org/distributions/gradle-5.6-bin.zip && \ + unzip -d /usr/local/gradle gradle.zip && rm gradle.zip && mkdir /usr/local/maven && \ + curl -L http://mirror.metrocast.net/apache/maven/maven-3/3.6.2/binaries/apache-maven-3.6.2-bin.tar.gz | \ + tar -zx -C /usr/local/maven + +ENV PATH="/usr/local/gradle/gradle-5.6/bin:/usr/local/maven/apache-maven-3.6.2/bin:${PATH}" + +# Add these as a separate layer as they get updated frequently +RUN pip install -U awscli boto3 aws-sam-cli==0.31.0 aws-lambda-builders==0.5.0 --no-cache-dir diff --git a/java11/run/Dockerfile b/java11/run/Dockerfile new file mode 100644 index 00000000..77148fc1 --- /dev/null +++ b/java11/run/Dockerfile @@ -0,0 +1,22 @@ +FROM lambci/lambda-base + +RUN curl https://lambci.s3.amazonaws.com/fs/java11.tgz | tar -zx -C /opt + + +FROM lambci/lambda:provided + + +FROM lambci/lambda-base-2 + +ENV PATH=/var/lang/bin:$PATH \ + LD_LIBRARY_PATH=/var/lang/lib:$LD_LIBRARY_PATH \ + AWS_EXECUTION_ENV=AWS_Lambda_java11 + +COPY --from=0 /opt/* /var/ + +COPY --from=1 /var/runtime/init /var/rapid/init + +USER sbx_user1051 + +ENTRYPOINT ["/var/rapid/init", "--bootstrap", "/var/runtime/bootstrap", "--enable-msg-logs"] + From 473d446ebd09e61d59b6fc32bfa8030cba422986 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Mon, 18 Nov 2019 17:30:40 -0500 Subject: [PATCH 093/271] Add new runtimes to dump.sh --- base/dump.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/base/dump.sh b/base/dump.sh index a33ceb1d..dd6e3896 100755 --- a/base/dump.sh +++ b/base/dump.sh @@ -1,6 +1,6 @@ #!/bin/bash -RUNTIMES="node43 node610 node810 node10x python27 python36 python37 ruby25 java8 go1x dotnetcore20 dotnetcore21 provided" +RUNTIMES="node43 node610 node810 node10x node12x python27 python36 python37 python38 ruby25 java8 java11 go1x dotnetcore20 dotnetcore21 provided" for RUNTIME in $RUNTIMES; do echo $RUNTIME From ade5bdb8e1ffac4770899660368b66327c6d76cc Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Mon, 18 Nov 2019 18:24:18 -0500 Subject: [PATCH 094/271] Update gradle to 6.0.x on java build images --- java11/build/Dockerfile | 4 ++-- java8/build/Dockerfile | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/java11/build/Dockerfile b/java11/build/Dockerfile index e978ed37..7e571674 100644 --- a/java11/build/Dockerfile +++ b/java11/build/Dockerfile @@ -6,12 +6,12 @@ ENV PATH=/var/lang/bin:$PATH \ RUN rm -rf /var/runtime /var/lang /var/rapid && \ curl https://lambci.s3.amazonaws.com/fs/java11.tgz | tar -zx -C / && \ - mkdir /usr/local/gradle && curl -L -o gradle.zip https://services.gradle.org/distributions/gradle-5.6-bin.zip && \ + mkdir /usr/local/gradle && curl -L -o gradle.zip https://services.gradle.org/distributions/gradle-6.0-bin.zip && \ unzip -d /usr/local/gradle gradle.zip && rm gradle.zip && mkdir /usr/local/maven && \ curl -L http://mirror.metrocast.net/apache/maven/maven-3/3.6.2/binaries/apache-maven-3.6.2-bin.tar.gz | \ tar -zx -C /usr/local/maven -ENV PATH="/usr/local/gradle/gradle-5.6/bin:/usr/local/maven/apache-maven-3.6.2/bin:${PATH}" +ENV PATH="/usr/local/gradle/gradle-6.0/bin:/usr/local/maven/apache-maven-3.6.2/bin:${PATH}" # Add these as a separate layer as they get updated frequently RUN pip install -U awscli boto3 aws-sam-cli==0.31.0 aws-lambda-builders==0.5.0 --no-cache-dir diff --git a/java8/build/Dockerfile b/java8/build/Dockerfile index 7261708d..1cb54d3b 100644 --- a/java8/build/Dockerfile +++ b/java8/build/Dockerfile @@ -7,12 +7,12 @@ WORKDIR / RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/java8.tgz | tar -zx -C / && \ yum install -y java-1.8.0-openjdk-devel && \ - mkdir /usr/local/gradle && curl -L -o gradle.zip https://services.gradle.org/distributions/gradle-5.6-bin.zip && \ + mkdir /usr/local/gradle && curl -L -o gradle.zip https://services.gradle.org/distributions/gradle-6.0-bin.zip && \ unzip -d /usr/local/gradle gradle.zip && rm gradle.zip && mkdir /usr/local/maven && \ curl -L http://mirror.metrocast.net/apache/maven/maven-3/3.6.2/binaries/apache-maven-3.6.2-bin.tar.gz | \ tar -zx -C /usr/local/maven -ENV PATH="/usr/local/gradle/gradle-5.6/bin:/usr/local/maven/apache-maven-3.6.2/bin:${PATH}" +ENV PATH="/usr/local/gradle/gradle-6.0/bin:/usr/local/maven/apache-maven-3.6.2/bin:${PATH}" # Add these as a separate layer as they get updated frequently RUN pip install -U awscli boto3 aws-sam-cli==0.31.1 aws-lambda-builders==0.5.0 --no-cache-dir From 79430814a59b2f17bfe5e1d0765d71163f155019 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Mon, 18 Nov 2019 22:48:06 -0500 Subject: [PATCH 095/271] Clean up java settings and ignores --- .gitignore | 32 +++++--- base/dump-java11/.classpath | 12 +++ base/dump-java11/.project | 23 ++++++ .../org.eclipse.buildship.core.prefs | 13 ++++ .../.settings/org.eclipse.jdt.core.prefs | 4 + base/dump-java11/build.gradle | 4 +- base/dump-java8/.classpath | 27 ++----- base/dump-java8/.project | 4 +- .../org.eclipse.buildship.core.prefs | 13 ++++ base/dump-java8/build.gradle | 28 +++++++ base/dump-java8/dependency-reduced-pom.xml | 66 ---------------- base/dump-java8/pom.xml | 75 ------------------- .../java/org/lambci/lambda/DumpJava8.java | 2 - examples/java/.classpath | 24 +----- examples/java/.project | 6 -- .../org.eclipse.buildship.core.prefs | 2 +- examples/java/pom.xml | 71 ------------------ 17 files changed, 127 insertions(+), 279 deletions(-) create mode 100644 base/dump-java11/.classpath create mode 100644 base/dump-java11/.project create mode 100644 base/dump-java11/.settings/org.eclipse.buildship.core.prefs create mode 100644 base/dump-java11/.settings/org.eclipse.jdt.core.prefs create mode 100644 base/dump-java8/.settings/org.eclipse.buildship.core.prefs create mode 100644 base/dump-java8/build.gradle delete mode 100644 base/dump-java8/dependency-reduced-pom.xml delete mode 100644 base/dump-java8/pom.xml delete mode 100644 examples/java/pom.xml diff --git a/.gitignore b/.gitignore index 14cb2c21..e19d1af5 100644 --- a/.gitignore +++ b/.gitignore @@ -5,17 +5,25 @@ base/diff-2 *.vs *.userprefs .gradle -target -vendor -bin -obj -examples/java/build -go1.x/run/aws-lambda-mock -examples/go1.x/handler -examples/dotnetcore2.0/pub -examples/dotnetcore2.1/pub base/tar-find-layer/layer.zip +base/dump-java8/bin +base/dump-java8/build +base/dump-java11/bin base/dump-java11/build -base/dump-java11/.settings -base/dump-java11/.project -base/dump-java11/.vscode +base/dump-dotnetcore20/bin +base/dump-dotnetcore20/obj +base/dump-dotnetcore21/bin +base/dump-dotnetcore21/obj +dotnetcore2.0/run/MockBootstraps/bin +dotnetcore2.0/run/MockBootstraps/obj +dotnetcore2.1/run/MockBootstraps/bin +dotnetcore2.1/run/MockBootstraps/obj +examples/dotnetcore2.0/bin +examples/dotnetcore2.0/obj +examples/dotnetcore2.0/pub +examples/dotnetcore2.1/bin +examples/dotnetcore2.1/obj +examples/dotnetcore2.1/pub +examples/java/bin +examples/java/build +java8/run/lambda-runtime-mock/target diff --git a/base/dump-java11/.classpath b/base/dump-java11/.classpath new file mode 100644 index 00000000..e16509f7 --- /dev/null +++ b/base/dump-java11/.classpath @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/base/dump-java11/.project b/base/dump-java11/.project new file mode 100644 index 00000000..47ed2d4d --- /dev/null +++ b/base/dump-java11/.project @@ -0,0 +1,23 @@ + + + dump-java11 + + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.buildship.core.gradleprojectbuilder + + + + + + org.eclipse.jdt.core.javanature + org.eclipse.buildship.core.gradleprojectnature + + diff --git a/base/dump-java11/.settings/org.eclipse.buildship.core.prefs b/base/dump-java11/.settings/org.eclipse.buildship.core.prefs new file mode 100644 index 00000000..39c6821c --- /dev/null +++ b/base/dump-java11/.settings/org.eclipse.buildship.core.prefs @@ -0,0 +1,13 @@ +arguments= +auto.sync=false +build.scans.enabled=false +connection.gradle.distribution=GRADLE_DISTRIBUTION(VERSION(6.0-20191016123526+0000)) +connection.project.dir= +eclipse.preferences.version=1 +gradle.user.home= +java.home= +jvm.arguments= +offline.mode=false +override.workspace.settings=true +show.console.view=true +show.executions.view=true diff --git a/base/dump-java11/.settings/org.eclipse.jdt.core.prefs b/base/dump-java11/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 00000000..18ad8952 --- /dev/null +++ b/base/dump-java11/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,4 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.targetPlatform=11 +org.eclipse.jdt.core.compiler.compliance=11 +org.eclipse.jdt.core.compiler.source=11 diff --git a/base/dump-java11/build.gradle b/base/dump-java11/build.gradle index f0e6e682..2e356d91 100644 --- a/base/dump-java11/build.gradle +++ b/base/dump-java11/build.gradle @@ -8,7 +8,7 @@ repositories { } dependencies { - compile ( + implementation ( 'com.amazonaws:aws-lambda-java-core:1.2.0', 'com.amazonaws:aws-lambda-java-events:2.2.7', 'com.amazonaws:aws-java-sdk-s3:1.11.667' @@ -19,7 +19,7 @@ task buildZip(type: Zip) { from compileJava from processResources into('lib') { - from configurations.runtime + from configurations.runtimeClasspath } } diff --git a/base/dump-java8/.classpath b/base/dump-java8/.classpath index 95f634dc..4857be40 100644 --- a/base/dump-java8/.classpath +++ b/base/dump-java8/.classpath @@ -1,27 +1,12 @@ - + - - + + - - - - - - - - - - - - - - - - - - + + + diff --git a/base/dump-java8/.project b/base/dump-java8/.project index a2a50935..0e30deb7 100644 --- a/base/dump-java8/.project +++ b/base/dump-java8/.project @@ -11,13 +11,13 @@ - org.eclipse.m2e.core.maven2Builder + org.eclipse.buildship.core.gradleprojectbuilder org.eclipse.jdt.core.javanature - org.eclipse.m2e.core.maven2Nature + org.eclipse.buildship.core.gradleprojectnature diff --git a/base/dump-java8/.settings/org.eclipse.buildship.core.prefs b/base/dump-java8/.settings/org.eclipse.buildship.core.prefs new file mode 100644 index 00000000..39c6821c --- /dev/null +++ b/base/dump-java8/.settings/org.eclipse.buildship.core.prefs @@ -0,0 +1,13 @@ +arguments= +auto.sync=false +build.scans.enabled=false +connection.gradle.distribution=GRADLE_DISTRIBUTION(VERSION(6.0-20191016123526+0000)) +connection.project.dir= +eclipse.preferences.version=1 +gradle.user.home= +java.home= +jvm.arguments= +offline.mode=false +override.workspace.settings=true +show.console.view=true +show.executions.view=true diff --git a/base/dump-java8/build.gradle b/base/dump-java8/build.gradle new file mode 100644 index 00000000..a2ec1bc8 --- /dev/null +++ b/base/dump-java8/build.gradle @@ -0,0 +1,28 @@ +apply plugin: 'java' + +sourceCompatibility = '1.8' +targetCompatibility = '1.8' + +repositories { + mavenCentral() +} + +dependencies { + implementation ( + 'com.amazonaws:aws-lambda-java-core:1.2.0', + 'com.amazonaws:aws-lambda-java-events:2.2.7', + 'com.amazonaws:aws-java-sdk-s3:1.11.667' + ) +} + +task buildZip(type: Zip) { + from compileJava + from processResources + into('lib') { + from configurations.runtimeClasspath + } +} + +build.dependsOn buildZip + +// docker run --rm -v "$PWD":/app -w /app gradle:jdk8 gradle build diff --git a/base/dump-java8/dependency-reduced-pom.xml b/base/dump-java8/dependency-reduced-pom.xml deleted file mode 100644 index 3f463e17..00000000 --- a/base/dump-java8/dependency-reduced-pom.xml +++ /dev/null @@ -1,66 +0,0 @@ - - - 4.0.0 - org.lambci.lambda - dump-java8 - 1.0.0 - - - - maven-compiler-plugin - 3.8.0 - - 1.8 - 1.8 - UTF-8 - true - - - - maven-shade-plugin - 3.2.0 - - - package - - shade - - - - - com.amazonaws:aws-lambda-java-events - com.amazonaws:aws-lambda-java-core - - - - - - - - - - - com.amazonaws - aws-lambda-java-events - 2.2.4 - compile - - - com.amazonaws - aws-lambda-java-core - 1.2.0 - compile - - - - - - com.amazonaws - aws-java-sdk-bom - 1.11.452 - pom - import - - - - diff --git a/base/dump-java8/pom.xml b/base/dump-java8/pom.xml deleted file mode 100644 index 56d4fa00..00000000 --- a/base/dump-java8/pom.xml +++ /dev/null @@ -1,75 +0,0 @@ - - 4.0.0 - - org.lambci.lambda - dump-java8 - 1.0.0 - jar - - - - - org.apache.maven.plugins - maven-compiler-plugin - 3.8.0 - - 1.8 - 1.8 - UTF-8 - true - - - - org.apache.maven.plugins - maven-shade-plugin - 3.2.0 - - - package - - shade - - - - - com.amazonaws:aws-lambda-java-events - com.amazonaws:aws-lambda-java-core - - - - - - - - - - - - - com.amazonaws - aws-java-sdk-bom - 1.11.452 - pom - import - - - - - - - com.amazonaws - aws-java-sdk-s3 - - - com.amazonaws - aws-lambda-java-events - 2.2.4 - - - com.amazonaws - aws-lambda-java-core - 1.2.0 - - - diff --git a/base/dump-java8/src/main/java/org/lambci/lambda/DumpJava8.java b/base/dump-java8/src/main/java/org/lambci/lambda/DumpJava8.java index 46456a8c..c573ab05 100644 --- a/base/dump-java8/src/main/java/org/lambci/lambda/DumpJava8.java +++ b/base/dump-java8/src/main/java/org/lambci/lambda/DumpJava8.java @@ -19,8 +19,6 @@ public class DumpJava8 implements RequestHandler { public PutObjectResult handleRequest(Object input, Context context) { String filename = "java8.tgz"; String cmd = "tar -cpzf /tmp/" + filename + " --numeric-owner --ignore-failed-read /var/runtime /var/lang"; -// String filename = "java8.fs.txt"; -// String cmd = "find / -ls | grep -v /proc | grep -v /var/runtime | grep -v /var/task | grep -v /var/lang | sort -k11 > /tmp/" + filename; AmazonS3 s3client = AmazonS3ClientBuilder.standard().withRegion("us-east-1").build(); System.out.println(ManagementFactory.getRuntimeMXBean().getInputArguments().toString()); diff --git a/examples/java/.classpath b/examples/java/.classpath index 194b56bf..4857be40 100644 --- a/examples/java/.classpath +++ b/examples/java/.classpath @@ -1,30 +1,12 @@ - + - - - - - - - + - - - - - - - - - - - - - + diff --git a/examples/java/.project b/examples/java/.project index d932d68d..b4c37dd9 100644 --- a/examples/java/.project +++ b/examples/java/.project @@ -15,15 +15,9 @@ - - org.eclipse.m2e.core.maven2Builder - - - org.eclipse.jdt.core.javanature - org.eclipse.m2e.core.maven2Nature org.eclipse.buildship.core.gradleprojectnature diff --git a/examples/java/.settings/org.eclipse.buildship.core.prefs b/examples/java/.settings/org.eclipse.buildship.core.prefs index 72b2d90d..39c6821c 100644 --- a/examples/java/.settings/org.eclipse.buildship.core.prefs +++ b/examples/java/.settings/org.eclipse.buildship.core.prefs @@ -1,7 +1,7 @@ arguments= auto.sync=false build.scans.enabled=false -connection.gradle.distribution=GRADLE_DISTRIBUTION(VERSION(6.0)) +connection.gradle.distribution=GRADLE_DISTRIBUTION(VERSION(6.0-20191016123526+0000)) connection.project.dir= eclipse.preferences.version=1 gradle.user.home= diff --git a/examples/java/pom.xml b/examples/java/pom.xml deleted file mode 100644 index ece4ba18..00000000 --- a/examples/java/pom.xml +++ /dev/null @@ -1,71 +0,0 @@ - - 4.0.0 - - org.lambci.lambda - example-handler - 1.0.0 - jar - - - - - org.apache.maven.plugins - maven-compiler-plugin - 3.6.0 - - 1.8 - 1.8 - UTF-8 - true - - - - org.apache.maven.plugins - maven-shade-plugin - 3.0.0 - - - package - - shade - - - - - com.amazonaws:aws-lambda-java-events - com.amazonaws:aws-lambda-java-core - - - - - - - - - - - - - com.amazonaws - aws-java-sdk-bom - 1.11.124 - pom - import - - - - - - - com.amazonaws - aws-lambda-java-events - 1.3.0 - - - com.amazonaws - aws-lambda-java-core - 1.1.0 - - - From 19c978aec06f1a92c9d4df4eb6b9d68acd4e9afa Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Tue, 19 Nov 2019 09:21:57 -0500 Subject: [PATCH 096/271] Add VSCode workspace --- project.code-workspace | 52 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 project.code-workspace diff --git a/project.code-workspace b/project.code-workspace new file mode 100644 index 00000000..00529d7f --- /dev/null +++ b/project.code-workspace @@ -0,0 +1,52 @@ +{ + "folders": [ + { + "path": "." + }, + { + "path": "go1.x/run" + }, + { + "path": "provided/run" + }, + { + "path": "examples/go1.x" + }, + { + "path": "base/dump-go1x" + }, + { + "path": "base/dump-java11" + }, + { + "path": "base/dump-java8" + }, + { + "path": "examples/java" + }, + { + "path": "java8/run/lambda-runtime-mock" + }, + { + "path": "base/dump-dotnetcore20" + }, + { + "path": "base/dump-dotnetcore21" + }, + { + "path": "examples/dotnetcore2.0" + }, + { + "path": "examples/dotnetcore2.1" + }, + { + "path": "dotnetcore2.0/run/MockBootstraps" + }, + { + "path": "dotnetcore2.1/run/MockBootstraps" + } + ], + "settings": { + "java.configuration.updateBuildConfiguration": "automatic" + } +} From aabdba167bc77d9108091ff6bbb31ae97c30017f Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Tue, 19 Nov 2019 10:33:26 -0500 Subject: [PATCH 097/271] Update aws-lambda-builders to 0.6.0 --- dotnetcore2.0/build/Dockerfile | 2 +- dotnetcore2.1/build/Dockerfile | 2 +- go1.x/build/Dockerfile | 2 +- java11/build/Dockerfile | 2 +- java8/build/Dockerfile | 2 +- nodejs10.x/build/Dockerfile | 2 +- nodejs12.x/build/Dockerfile | 2 +- nodejs4.3/build/Dockerfile | 2 +- nodejs6.10/build/Dockerfile | 2 +- nodejs8.10/build/Dockerfile | 2 +- provided/build/Dockerfile | 2 +- python2.7/build/Dockerfile | 2 +- python3.6/build/Dockerfile | 2 +- python3.7/build/Dockerfile | 2 +- python3.8/build/Dockerfile | 2 +- ruby2.5/build/Dockerfile | 2 +- 16 files changed, 16 insertions(+), 16 deletions(-) diff --git a/dotnetcore2.0/build/Dockerfile b/dotnetcore2.0/build/Dockerfile index 0e735fea..a1fa5b54 100644 --- a/dotnetcore2.0/build/Dockerfile +++ b/dotnetcore2.0/build/Dockerfile @@ -20,6 +20,6 @@ RUN rm -rf /var/runtime /var/lang && \ rm -rf /tmp/warmup /tmp/NuGetScratch # Add these as a separate layer as they get updated frequently -RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.31.1 aws-lambda-builders==0.5.0 --no-cache-dir +RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.31.1 aws-lambda-builders==0.6.0 --no-cache-dir CMD ["dotnet", "build"] diff --git a/dotnetcore2.1/build/Dockerfile b/dotnetcore2.1/build/Dockerfile index 77515648..61b6dcfe 100644 --- a/dotnetcore2.1/build/Dockerfile +++ b/dotnetcore2.1/build/Dockerfile @@ -21,7 +21,7 @@ RUN rm -rf /var/runtime /var/lang && \ rm -rf /tmp/warmup /tmp/NuGetScratch /tmp/.dotnet # Add these as a separate layer as they get updated frequently -RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.31.1 aws-lambda-builders==0.5.0 --no-cache-dir && \ +RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.31.1 aws-lambda-builders==0.6.0 --no-cache-dir && \ dotnet tool install --global Amazon.Lambda.Tools --version 3.3.1 CMD ["dotnet", "build"] diff --git a/go1.x/build/Dockerfile b/go1.x/build/Dockerfile index bf7c147f..3a41c746 100644 --- a/go1.x/build/Dockerfile +++ b/go1.x/build/Dockerfile @@ -16,6 +16,6 @@ RUN rm -rf /var/runtime /var/lang && \ go get golang.org/x/vgo # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.31.1 aws-lambda-builders==0.5.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.31.1 aws-lambda-builders==0.6.0 --no-cache-dir CMD ["dep", "ensure"] diff --git a/java11/build/Dockerfile b/java11/build/Dockerfile index 7e571674..f5778d9e 100644 --- a/java11/build/Dockerfile +++ b/java11/build/Dockerfile @@ -14,4 +14,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ ENV PATH="/usr/local/gradle/gradle-6.0/bin:/usr/local/maven/apache-maven-3.6.2/bin:${PATH}" # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.31.0 aws-lambda-builders==0.5.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.31.0 aws-lambda-builders==0.6.0 --no-cache-dir diff --git a/java8/build/Dockerfile b/java8/build/Dockerfile index 1cb54d3b..94b1120c 100644 --- a/java8/build/Dockerfile +++ b/java8/build/Dockerfile @@ -15,4 +15,4 @@ RUN rm -rf /var/runtime /var/lang && \ ENV PATH="/usr/local/gradle/gradle-6.0/bin:/usr/local/maven/apache-maven-3.6.2/bin:${PATH}" # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.31.1 aws-lambda-builders==0.5.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.31.1 aws-lambda-builders==0.6.0 --no-cache-dir diff --git a/nodejs10.x/build/Dockerfile b/nodejs10.x/build/Dockerfile index 447594fe..0e953ae5 100644 --- a/nodejs10.x/build/Dockerfile +++ b/nodejs10.x/build/Dockerfile @@ -9,4 +9,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ curl https://lambci.s3.amazonaws.com/fs/nodejs10.x.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.31.1 aws-lambda-builders==0.5.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.31.1 aws-lambda-builders==0.6.0 --no-cache-dir diff --git a/nodejs12.x/build/Dockerfile b/nodejs12.x/build/Dockerfile index 4c613272..eea916f9 100644 --- a/nodejs12.x/build/Dockerfile +++ b/nodejs12.x/build/Dockerfile @@ -9,4 +9,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ curl https://lambci.s3.amazonaws.com/fs/nodejs12.x.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.31.0 aws-lambda-builders==0.5.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.31.0 aws-lambda-builders==0.6.0 --no-cache-dir diff --git a/nodejs4.3/build/Dockerfile b/nodejs4.3/build/Dockerfile index 09348b97..d23ca599 100644 --- a/nodejs4.3/build/Dockerfile +++ b/nodejs4.3/build/Dockerfile @@ -10,6 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs4.3.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.31.1 aws-lambda-builders==0.5.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.31.1 aws-lambda-builders==0.6.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/nodejs6.10/build/Dockerfile b/nodejs6.10/build/Dockerfile index 2631f428..650d677c 100644 --- a/nodejs6.10/build/Dockerfile +++ b/nodejs6.10/build/Dockerfile @@ -10,6 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs6.10.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.31.1 aws-lambda-builders==0.5.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.31.1 aws-lambda-builders==0.6.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/nodejs8.10/build/Dockerfile b/nodejs8.10/build/Dockerfile index 123ef00a..5e5f04cd 100644 --- a/nodejs8.10/build/Dockerfile +++ b/nodejs8.10/build/Dockerfile @@ -10,6 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs8.10.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.31.1 aws-lambda-builders==0.5.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.31.1 aws-lambda-builders==0.6.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/provided/build/Dockerfile b/provided/build/Dockerfile index b6ab5d5d..672342ce 100644 --- a/provided/build/Dockerfile +++ b/provided/build/Dockerfile @@ -1,4 +1,4 @@ FROM lambci/lambda-base:build # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.31.1 aws-lambda-builders==0.5.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.31.1 aws-lambda-builders==0.6.0 --no-cache-dir diff --git a/python2.7/build/Dockerfile b/python2.7/build/Dockerfile index aa9c5f62..cc284b1d 100644 --- a/python2.7/build/Dockerfile +++ b/python2.7/build/Dockerfile @@ -9,4 +9,4 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ pip install -U virtualenv pipenv --no-cache-dir && \ - pip install -U awscli boto3 aws-sam-cli==0.22.0 aws-lambda-builders==0.5.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.22.0 aws-lambda-builders==0.6.0 --no-cache-dir diff --git a/python3.6/build/Dockerfile b/python3.6/build/Dockerfile index aee7ebcb..38eba9c9 100644 --- a/python3.6/build/Dockerfile +++ b/python3.6/build/Dockerfile @@ -19,4 +19,4 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ - pip install -U awscli boto3 aws-sam-cli==0.31.1 aws-lambda-builders==0.5.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.31.1 aws-lambda-builders==0.6.0 --no-cache-dir diff --git a/python3.7/build/Dockerfile b/python3.7/build/Dockerfile index fdc99f9c..760cbd0f 100644 --- a/python3.7/build/Dockerfile +++ b/python3.7/build/Dockerfile @@ -12,4 +12,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ - pip install -U awscli boto3 aws-sam-cli==0.31.1 aws-lambda-builders==0.5.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.31.1 aws-lambda-builders==0.6.0 --no-cache-dir diff --git a/python3.8/build/Dockerfile b/python3.8/build/Dockerfile index 8d14bba9..eeb1403f 100644 --- a/python3.8/build/Dockerfile +++ b/python3.8/build/Dockerfile @@ -12,4 +12,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ - pip install -U awscli boto3 aws-sam-cli==0.31.0 aws-lambda-builders==0.5.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.31.0 aws-lambda-builders==0.6.0 --no-cache-dir diff --git a/ruby2.5/build/Dockerfile b/ruby2.5/build/Dockerfile index 1787aef6..0a230952 100644 --- a/ruby2.5/build/Dockerfile +++ b/ruby2.5/build/Dockerfile @@ -13,4 +13,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN gem update --system --no-document && \ gem install --no-document bundler && \ - pip install -U awscli boto3 aws-sam-cli==0.31.1 aws-lambda-builders==0.5.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.31.1 aws-lambda-builders==0.6.0 --no-cache-dir From 11780d00d2d5082a76a1608734219bb4f833a5e2 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Tue, 19 Nov 2019 13:31:33 -0500 Subject: [PATCH 098/271] Update amazonlinux2 packages --- base/base-2/amazonlinux2.txt | 2 +- base/base-2/dump-packages.sh | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/base/base-2/amazonlinux2.txt b/base/base-2/amazonlinux2.txt index b338bb3e..60183af6 100644 --- a/base/base-2/amazonlinux2.txt +++ b/base/base-2/amazonlinux2.txt @@ -68,7 +68,7 @@ nss-sysinit-3.44.0-4.amzn2.0.2.x86_64 nss-tools-3.44.0-4.amzn2.0.2.x86_64 nss-util-3.44.0-3.amzn2.0.2.x86_64 openldap-2.4.44-15.amzn2.x86_64 -openssl-libs-1.0.2k-16.amzn2.1.1.x86_64 +openssl-libs-1.0.2k-19.amzn2.0.1.x86_64 p11-kit-0.23.5-3.amzn2.0.2.x86_64 p11-kit-trust-0.23.5-3.amzn2.0.2.x86_64 pcre-8.32-17.amzn2.0.2.x86_64 diff --git a/base/base-2/dump-packages.sh b/base/base-2/dump-packages.sh index 954f6701..fae87fa4 100755 --- a/base/base-2/dump-packages.sh +++ b/base/base-2/dump-packages.sh @@ -9,6 +9,7 @@ docker run --rm amazonlinux:2 bash -c 'yum upgrade -y > /dev/null && rpm -qa' | if diff -w -d amazonlinux2.txt packages.txt | grep -q '>'; then echo 'Mismatching packages on images' + diff -w -d amazonlinux2.txt packages.txt else diff -w -d amazonlinux2.txt packages.txt | grep '<' | awk '{print $2}' > diff.txt fi From 805a3716480ff43c295b2207626670b53fd8fc24 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Tue, 19 Nov 2019 15:27:03 -0500 Subject: [PATCH 099/271] Use full _X_AMZN_TRACE_ID in base images instead of just Parent Fixes #222 --- base/Dockerfile | 2 +- base/base-2/Dockerfile | 2 +- nodejs4.3/run/awslambda-mock.js | 2 +- nodejs6.10/run/awslambda-mock.js | 2 +- nodejs8.10/run/awslambda-mock.js | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/base/Dockerfile b/base/Dockerfile index 8cdf775a..ab3ea957 100644 --- a/base/Dockerfile +++ b/base/Dockerfile @@ -21,7 +21,7 @@ ENV PATH=/usr/local/bin:/usr/bin/:/bin:/opt/bin \ _AWS_XRAY_DAEMON_PORT=2000 \ AWS_XRAY_DAEMON_ADDRESS=169.254.79.2:2000 \ AWS_XRAY_CONTEXT_MISSING=LOG_ERROR \ - _X_AMZN_TRACE_ID='Parent=11560be54abce8ed' + _X_AMZN_TRACE_ID='Root=1-dc99d00f-c079a84d433534434534ef0d;Parent=91ed514f1e5c03b2;Sampled=1' RUN yum reinstall -y filesystem; \ yum clean all && \ diff --git a/base/base-2/Dockerfile b/base/base-2/Dockerfile index 7c2ae2fa..12b79b22 100644 --- a/base/base-2/Dockerfile +++ b/base/base-2/Dockerfile @@ -21,7 +21,7 @@ ENV PATH=/usr/local/bin:/usr/bin/:/bin:/opt/bin \ _AWS_XRAY_DAEMON_PORT=2000 \ AWS_XRAY_DAEMON_ADDRESS=169.254.79.2:2000 \ AWS_XRAY_CONTEXT_MISSING=LOG_ERROR \ - _X_AMZN_TRACE_ID='Parent=11560be54abce8ed' + _X_AMZN_TRACE_ID='Root=1-dc99d00f-c079a84d433534434534ef0d;Parent=91ed514f1e5c03b2;Sampled=1' RUN rm -rf /var/cache/yum /var/lib/rpm/__db.* && \ > /var/log/yum.log && \ diff --git a/nodejs4.3/run/awslambda-mock.js b/nodejs4.3/run/awslambda-mock.js index 025f3070..901e1f94 100644 --- a/nodejs4.3/run/awslambda-mock.js +++ b/nodejs4.3/run/awslambda-mock.js @@ -25,7 +25,7 @@ var ACCESS_KEY_ID = process.env.AWS_ACCESS_KEY_ID || 'SOME_ACCESS_KEY_ID' var SECRET_ACCESS_KEY = process.env.AWS_SECRET_ACCESS_KEY || 'SOME_SECRET_ACCESS_KEY' var SESSION_TOKEN = process.env.AWS_SESSION_TOKEN var INVOKED_ARN = process.env.AWS_LAMBDA_FUNCTION_INVOKED_ARN || arn(REGION, ACCOUNT_ID, FN_NAME) -var TRACE_ID = process.env._X_AMZN_TRACE_ID || 'root=1-5d9639c7-ac2df104a29f3070f507bdb4;sampled=0' +var TRACE_ID = process.env._X_AMZN_TRACE_ID var CLIENT_CONTEXT = process.env.AWS_LAMBDA_CLIENT_CONTEXT var COGNITO_IDENTITY = process.env.AWS_LAMBDA_COGNITO_IDENTITY var COGNITO_IDENTITY_ID = (tryParse(COGNITO_IDENTITY) || {}).identity_id diff --git a/nodejs6.10/run/awslambda-mock.js b/nodejs6.10/run/awslambda-mock.js index 025f3070..901e1f94 100644 --- a/nodejs6.10/run/awslambda-mock.js +++ b/nodejs6.10/run/awslambda-mock.js @@ -25,7 +25,7 @@ var ACCESS_KEY_ID = process.env.AWS_ACCESS_KEY_ID || 'SOME_ACCESS_KEY_ID' var SECRET_ACCESS_KEY = process.env.AWS_SECRET_ACCESS_KEY || 'SOME_SECRET_ACCESS_KEY' var SESSION_TOKEN = process.env.AWS_SESSION_TOKEN var INVOKED_ARN = process.env.AWS_LAMBDA_FUNCTION_INVOKED_ARN || arn(REGION, ACCOUNT_ID, FN_NAME) -var TRACE_ID = process.env._X_AMZN_TRACE_ID || 'root=1-5d9639c7-ac2df104a29f3070f507bdb4;sampled=0' +var TRACE_ID = process.env._X_AMZN_TRACE_ID var CLIENT_CONTEXT = process.env.AWS_LAMBDA_CLIENT_CONTEXT var COGNITO_IDENTITY = process.env.AWS_LAMBDA_COGNITO_IDENTITY var COGNITO_IDENTITY_ID = (tryParse(COGNITO_IDENTITY) || {}).identity_id diff --git a/nodejs8.10/run/awslambda-mock.js b/nodejs8.10/run/awslambda-mock.js index 025f3070..901e1f94 100644 --- a/nodejs8.10/run/awslambda-mock.js +++ b/nodejs8.10/run/awslambda-mock.js @@ -25,7 +25,7 @@ var ACCESS_KEY_ID = process.env.AWS_ACCESS_KEY_ID || 'SOME_ACCESS_KEY_ID' var SECRET_ACCESS_KEY = process.env.AWS_SECRET_ACCESS_KEY || 'SOME_SECRET_ACCESS_KEY' var SESSION_TOKEN = process.env.AWS_SESSION_TOKEN var INVOKED_ARN = process.env.AWS_LAMBDA_FUNCTION_INVOKED_ARN || arn(REGION, ACCOUNT_ID, FN_NAME) -var TRACE_ID = process.env._X_AMZN_TRACE_ID || 'root=1-5d9639c7-ac2df104a29f3070f507bdb4;sampled=0' +var TRACE_ID = process.env._X_AMZN_TRACE_ID var CLIENT_CONTEXT = process.env.AWS_LAMBDA_CLIENT_CONTEXT var COGNITO_IDENTITY = process.env.AWS_LAMBDA_COGNITO_IDENTITY var COGNITO_IDENTITY_ID = (tryParse(COGNITO_IDENTITY) || {}).identity_id From f81f800c02a355ed2bce0a355a6638b4438d80bc Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Wed, 20 Nov 2019 16:23:44 -0500 Subject: [PATCH 100/271] Cast DEADLINE_MS as int in python runtimes Fixes #225 (thanks to @jhaenchen) --- python2.7/run/runtime_mock.py | 2 +- python3.6/run/runtime_mock.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/python2.7/run/runtime_mock.py b/python2.7/run/runtime_mock.py index 0c2a8662..539ec980 100644 --- a/python2.7/run/runtime_mock.py +++ b/python2.7/run/runtime_mock.py @@ -184,7 +184,7 @@ def receive_invoke(): raise INVOKEID = resp.getheader('Lambda-Runtime-Aws-Request-Id') - DEADLINE_MS = resp.getheader('Lambda-Runtime-Deadline-Ms') + DEADLINE_MS = int(resp.getheader('Lambda-Runtime-Deadline-Ms')) INVOKED_FUNCTION_ARN = resp.getheader( 'Lambda-Runtime-Invoked-Function-Arn') XRAY_TRACE_ID = resp.getheader('Lambda-Runtime-Trace-Id') diff --git a/python3.6/run/runtime_mock.py b/python3.6/run/runtime_mock.py index 0c2a8662..539ec980 100644 --- a/python3.6/run/runtime_mock.py +++ b/python3.6/run/runtime_mock.py @@ -184,7 +184,7 @@ def receive_invoke(): raise INVOKEID = resp.getheader('Lambda-Runtime-Aws-Request-Id') - DEADLINE_MS = resp.getheader('Lambda-Runtime-Deadline-Ms') + DEADLINE_MS = int(resp.getheader('Lambda-Runtime-Deadline-Ms')) INVOKED_FUNCTION_ARN = resp.getheader( 'Lambda-Runtime-Invoked-Function-Arn') XRAY_TRACE_ID = resp.getheader('Lambda-Runtime-Trace-Id') From a86ac3b3a6f761ea17366b82eb30f6607dad3572 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Thu, 21 Nov 2019 14:21:47 -0500 Subject: [PATCH 101/271] Move post.lua into examples And add note about Lambda-Runtime-Function-XRay-Error-Cause --- base/test-all.sh | 7 ------- examples/post.lua | 5 +++++ provided/run/init.go | 2 ++ 3 files changed, 7 insertions(+), 7 deletions(-) create mode 100644 examples/post.lua diff --git a/base/test-all.sh b/base/test-all.sh index c034c2a6..1b299cc2 100755 --- a/base/test-all.sh +++ b/base/test-all.sh @@ -53,10 +53,3 @@ docker run --rm -v "$PWD":/var/task lambci/lambda:provided handler '{"some": "ev # To invoke and keep open: # docker run --rm -v $PWD:/var/task -e DOCKER_LAMBDA_STAY_OPEN=1 -p 9001:9001 \ # lambci/lambda:ruby2.5 lambda_function.lambda_handler - -# Contents of post.lua: -# wrk.method = "POST" -# wrk.body = "{}" -# wrk.headers["Content-Type"] = "application/json" - -# wrk -s post.lua 'http://localhost:9001/2015-03-31/functions/myfunction/invocations' diff --git a/examples/post.lua b/examples/post.lua new file mode 100644 index 00000000..9066aac1 --- /dev/null +++ b/examples/post.lua @@ -0,0 +1,5 @@ +-- Run with: +-- wrk -s post.lua 'http://localhost:9001/2015-03-31/functions/myfunction/invocations' +wrk.method = "POST" +wrk.body = "{}" +wrk.headers["Content-Type"] = "application/json" diff --git a/provided/run/init.go b/provided/run/init.go index 5723e2a8..cae7b108 100644 --- a/provided/run/init.go +++ b/provided/run/init.go @@ -489,6 +489,8 @@ func handleErrorRequest(w http.ResponseWriter, r *http.Request) { curContext.ErrorType = errorType } + // TODO: Figure out whether we want to handle Lambda-Runtime-Function-XRay-Error-Cause + debug("Setting Reply in handleErrorRequest") debug(lambdaErr) From f3df1cce19d1a2f586632443551a2b09fc708d88 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Thu, 21 Nov 2019 16:54:36 -0500 Subject: [PATCH 102/271] Convert stack traces correctly in go1.x Fixes #226 --- go1.x/run/aws-lambda-mock.go | 35 +++++++++++++++++++++++++---------- 1 file changed, 25 insertions(+), 10 deletions(-) diff --git a/go1.x/run/aws-lambda-mock.go b/go1.x/run/aws-lambda-mock.go index 91c81860..fde4d947 100644 --- a/go1.x/run/aws-lambda-mock.go +++ b/go1.x/run/aws-lambda-mock.go @@ -289,11 +289,7 @@ func main() { if err != nil { lambdaErr = toLambdaError(mockContext, err) } else if reply.Error != nil { - lambdaErr = lambdaError{ - Message: reply.Error.Message, - Type: reply.Error.Type, - StackTrace: reply.Error.StackTrace, - } + lambdaErr = convertInvokeResponseError(reply.Error) } payload, _ = json.Marshal(lambdaErr) } @@ -329,8 +325,15 @@ func main() { return } if resp.StatusCode != 202 { - log.Fatal("Non 202 status code from local server") - return + log.Printf("Non 202 status code from local server: %d\n", resp.StatusCode) + body, _ = ioutil.ReadAll(resp.Body) + log.Println(string(body)) + log.Println("When trying to send payload:") + log.Println(string(payload)) + if resp.StatusCode >= 300 { + os.Exit(1) + return + } } resp.Body.Close() } @@ -364,6 +367,18 @@ func toLambdaError(mockContext *mockLambdaContext, exitErr error) lambdaError { return responseErr } +func convertInvokeResponseError(err *messages.InvokeResponse_Error) lambdaError { + var stackTrace []string + for _, v := range err.StackTrace { + stackTrace = append(stackTrace, fmt.Sprintf("%s:%d %s", v.Path, v.Line, v.Label)) + } + return lambdaError{ + Message: err.Message, + Type: err.Type, + StackTrace: stackTrace, + } +} + func getEnv(key, fallback string) string { value := os.Getenv(key) if value != "" { @@ -417,9 +432,9 @@ func getErrorType(err interface{}) string { } type lambdaError struct { - Message string `json:"errorMessage"` - Type string `json:"errorType,omitempty"` - StackTrace []*messages.InvokeResponse_Error_StackFrame `json:"stackTrace,omitempty"` + Message string `json:"errorMessage"` + Type string `json:"errorType,omitempty"` + StackTrace []string `json:"stackTrace,omitempty"` } type exitError struct { From ceb292c658099edf377b31dd17327c751163aa59 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Thu, 21 Nov 2019 17:10:14 -0500 Subject: [PATCH 103/271] Enable debugging with DOCKER_LAMBDA_DEBUG --- provided/run/init.go | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/provided/run/init.go b/provided/run/init.go index cae7b108..d5749f44 100644 --- a/provided/run/init.go +++ b/provided/run/init.go @@ -30,7 +30,7 @@ import ( "github.com/go-chi/render" ) -var logDebug = false +var logDebug = os.Getenv("DOCKER_LAMBDA_DEBUG") != "" var curState = "STATE_INIT" @@ -480,7 +480,10 @@ func handleErrorRequest(w http.ResponseWriter, r *http.Request) { body, err := ioutil.ReadAll(r.Body) if err != nil || json.Unmarshal(body, lambdaErr) != nil { + debug("Could not parse error body as JSON") + debug(body) response = &statusResponse{Status: "InvalidErrorShape", HTTPStatusCode: 299} + lambdaErr = &lambdaError{Message: "InvalidErrorShape"} } r.Body.Close() From 3f0431e76bb56660c63ee9e63f22e326ec9c8eac Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Thu, 21 Nov 2019 17:46:52 -0500 Subject: [PATCH 104/271] Update aws-sam-cli to 0.32.0 on all build images --- dotnetcore2.0/build/Dockerfile | 2 +- dotnetcore2.1/build/Dockerfile | 2 +- go1.x/build/Dockerfile | 2 +- java11/build/Dockerfile | 2 +- java8/build/Dockerfile | 2 +- nodejs10.x/build/Dockerfile | 2 +- nodejs12.x/build/Dockerfile | 2 +- nodejs4.3/build/Dockerfile | 2 +- nodejs6.10/build/Dockerfile | 2 +- nodejs8.10/build/Dockerfile | 2 +- provided/build/Dockerfile | 2 +- python3.6/build/Dockerfile | 2 +- python3.7/build/Dockerfile | 2 +- python3.8/build/Dockerfile | 2 +- ruby2.5/build/Dockerfile | 2 +- 15 files changed, 15 insertions(+), 15 deletions(-) diff --git a/dotnetcore2.0/build/Dockerfile b/dotnetcore2.0/build/Dockerfile index a1fa5b54..9f2a67d7 100644 --- a/dotnetcore2.0/build/Dockerfile +++ b/dotnetcore2.0/build/Dockerfile @@ -20,6 +20,6 @@ RUN rm -rf /var/runtime /var/lang && \ rm -rf /tmp/warmup /tmp/NuGetScratch # Add these as a separate layer as they get updated frequently -RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.31.1 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.32.0 aws-lambda-builders==0.6.0 --no-cache-dir CMD ["dotnet", "build"] diff --git a/dotnetcore2.1/build/Dockerfile b/dotnetcore2.1/build/Dockerfile index 61b6dcfe..25645db1 100644 --- a/dotnetcore2.1/build/Dockerfile +++ b/dotnetcore2.1/build/Dockerfile @@ -21,7 +21,7 @@ RUN rm -rf /var/runtime /var/lang && \ rm -rf /tmp/warmup /tmp/NuGetScratch /tmp/.dotnet # Add these as a separate layer as they get updated frequently -RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.31.1 aws-lambda-builders==0.6.0 --no-cache-dir && \ +RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.32.0 aws-lambda-builders==0.6.0 --no-cache-dir && \ dotnet tool install --global Amazon.Lambda.Tools --version 3.3.1 CMD ["dotnet", "build"] diff --git a/go1.x/build/Dockerfile b/go1.x/build/Dockerfile index 3a41c746..d3bcdcd3 100644 --- a/go1.x/build/Dockerfile +++ b/go1.x/build/Dockerfile @@ -16,6 +16,6 @@ RUN rm -rf /var/runtime /var/lang && \ go get golang.org/x/vgo # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.31.1 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.32.0 aws-lambda-builders==0.6.0 --no-cache-dir CMD ["dep", "ensure"] diff --git a/java11/build/Dockerfile b/java11/build/Dockerfile index f5778d9e..042f7f6c 100644 --- a/java11/build/Dockerfile +++ b/java11/build/Dockerfile @@ -14,4 +14,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ ENV PATH="/usr/local/gradle/gradle-6.0/bin:/usr/local/maven/apache-maven-3.6.2/bin:${PATH}" # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.31.0 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.32.0 aws-lambda-builders==0.6.0 --no-cache-dir diff --git a/java8/build/Dockerfile b/java8/build/Dockerfile index 94b1120c..78dc5fb4 100644 --- a/java8/build/Dockerfile +++ b/java8/build/Dockerfile @@ -15,4 +15,4 @@ RUN rm -rf /var/runtime /var/lang && \ ENV PATH="/usr/local/gradle/gradle-6.0/bin:/usr/local/maven/apache-maven-3.6.2/bin:${PATH}" # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.31.1 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.32.0 aws-lambda-builders==0.6.0 --no-cache-dir diff --git a/nodejs10.x/build/Dockerfile b/nodejs10.x/build/Dockerfile index 0e953ae5..822f1d2c 100644 --- a/nodejs10.x/build/Dockerfile +++ b/nodejs10.x/build/Dockerfile @@ -9,4 +9,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ curl https://lambci.s3.amazonaws.com/fs/nodejs10.x.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.31.1 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.32.0 aws-lambda-builders==0.6.0 --no-cache-dir diff --git a/nodejs12.x/build/Dockerfile b/nodejs12.x/build/Dockerfile index eea916f9..443a2465 100644 --- a/nodejs12.x/build/Dockerfile +++ b/nodejs12.x/build/Dockerfile @@ -9,4 +9,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ curl https://lambci.s3.amazonaws.com/fs/nodejs12.x.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.31.0 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.32.0 aws-lambda-builders==0.6.0 --no-cache-dir diff --git a/nodejs4.3/build/Dockerfile b/nodejs4.3/build/Dockerfile index d23ca599..6f169309 100644 --- a/nodejs4.3/build/Dockerfile +++ b/nodejs4.3/build/Dockerfile @@ -10,6 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs4.3.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.31.1 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.32.0 aws-lambda-builders==0.6.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/nodejs6.10/build/Dockerfile b/nodejs6.10/build/Dockerfile index 650d677c..e4af05c9 100644 --- a/nodejs6.10/build/Dockerfile +++ b/nodejs6.10/build/Dockerfile @@ -10,6 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs6.10.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.31.1 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.32.0 aws-lambda-builders==0.6.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/nodejs8.10/build/Dockerfile b/nodejs8.10/build/Dockerfile index 5e5f04cd..652bfdf3 100644 --- a/nodejs8.10/build/Dockerfile +++ b/nodejs8.10/build/Dockerfile @@ -10,6 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs8.10.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.31.1 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.32.0 aws-lambda-builders==0.6.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/provided/build/Dockerfile b/provided/build/Dockerfile index 672342ce..fd272b08 100644 --- a/provided/build/Dockerfile +++ b/provided/build/Dockerfile @@ -1,4 +1,4 @@ FROM lambci/lambda-base:build # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.31.1 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.32.0 aws-lambda-builders==0.6.0 --no-cache-dir diff --git a/python3.6/build/Dockerfile b/python3.6/build/Dockerfile index 38eba9c9..0555a2f0 100644 --- a/python3.6/build/Dockerfile +++ b/python3.6/build/Dockerfile @@ -19,4 +19,4 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ - pip install -U awscli boto3 aws-sam-cli==0.31.1 aws-lambda-builders==0.6.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.32.0 aws-lambda-builders==0.6.0 --no-cache-dir diff --git a/python3.7/build/Dockerfile b/python3.7/build/Dockerfile index 760cbd0f..c795ff6e 100644 --- a/python3.7/build/Dockerfile +++ b/python3.7/build/Dockerfile @@ -12,4 +12,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ - pip install -U awscli boto3 aws-sam-cli==0.31.1 aws-lambda-builders==0.6.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.32.0 aws-lambda-builders==0.6.0 --no-cache-dir diff --git a/python3.8/build/Dockerfile b/python3.8/build/Dockerfile index eeb1403f..e309560c 100644 --- a/python3.8/build/Dockerfile +++ b/python3.8/build/Dockerfile @@ -12,4 +12,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ - pip install -U awscli boto3 aws-sam-cli==0.31.0 aws-lambda-builders==0.6.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.32.0 aws-lambda-builders==0.6.0 --no-cache-dir diff --git a/ruby2.5/build/Dockerfile b/ruby2.5/build/Dockerfile index 0a230952..0eb43d96 100644 --- a/ruby2.5/build/Dockerfile +++ b/ruby2.5/build/Dockerfile @@ -13,4 +13,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN gem update --system --no-document && \ gem install --no-document bundler && \ - pip install -U awscli boto3 aws-sam-cli==0.31.1 aws-lambda-builders==0.6.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.32.0 aws-lambda-builders==0.6.0 --no-cache-dir From 9715fa94beef940e3f4bc926cf16c58984c6ebe9 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Fri, 22 Nov 2019 14:33:39 -0500 Subject: [PATCH 105/271] Add documentation for DOCKER_LAMBDA_STAY_OPEN Fixes #14 Fixes #30 Fixes #160 Fixes #221 --- README.md | 135 ++++++++++++++++++++++++++--------------- examples/terminal.png | Bin 72948 -> 0 bytes examples/terminal2.png | Bin 0 -> 629156 bytes 3 files changed, 87 insertions(+), 48 deletions(-) delete mode 100644 examples/terminal.png create mode 100644 examples/terminal2.png diff --git a/README.md b/README.md index 3b21930d..80d1c44f 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ environment almost identically – including installed software and libraries, file structure and permissions, environment variables, context objects and behaviors – even the user and running process are the same. -![Terminal Example](https://raw.githubusercontent.com/lambci/docker-lambda/master/examples/terminal.png "Example usage when index.js in current dir") +Example usage with java11 runtime You can use it for [running your functions](#run-examples) in the same strict Lambda environment, knowing that they'll exhibit the same behavior when deployed live. You can @@ -34,84 +34,125 @@ the [AWS CLI](https://aws.amazon.com/cli/). ### Running Lambda functions You can run your Lambdas from local directories using the `-v` arg with -`docker run` – logging goes to stderr and the callback result goes to stdout. +`docker run`. You can run them in two modes: as a single execution, or as an API server that listens for invoke events. +The default is single execution mode, which outputs all logging to stderr and the result of the handler to stdout. You mount your (unzipped) lambda code at `/var/task` and any (unzipped) layer code at `/opt`, and most runtimes take two arguments – the first for the handler and the second for the event, ie: ```sh -docker run [--rm] -v :/var/task [-v :/opt] lambci/lambda: [] [] +docker run --rm \ + -v :/var/task:ro,delegated \ + [-v :/opt:ro,delegated] \ + lambci/lambda: \ + [] [] ``` -(the `--rm` flag will remove the docker container once it has run, which is usually what you want) +(the `--rm` flag will remove the docker container once it has run, which is usually what you want, +and the `ro,delegated` options ensure the directories are mounted read-only and have the highest performance) You can pass environment variables (eg `-e AWS_ACCESS_KEY_ID=abcd`) to talk to live AWS services, or modify aspects of the runtime. See [below](#environment-variables) for a list. -### Building Lambda functions +#### Running in "stay-open" API mode + +If you pass the environment variable `DOCKER_LAMBDA_STAY_OPEN=1` to the container, then instead of +executing the event and shutting down, it will start an API server (on port 9001 by default), which +you can then call with HTTP following the [Lambda Invoke API](https://docs.aws.amazon.com/lambda/latest/dg/API_Invoke.html). +This allows you to make fast subsequent calls to your handler without paying the "cold start" penalty each time. ```sh -docker run [--rm] -v :/var/task [-v :/opt] lambci/lambda:build- +docker run --rm [-d] \ + -e DOCKER_LAMBDA_STAY_OPEN=1 \ + -p 9001:9001 \ + -v :/var/task:ro,delegated \ + [-v :/opt:ro,delegated] \ + lambci/lambda: \ + [] ``` -You can also use [yumda](https://github.com/lambci/yumda) to install precompiled native dependencies using `yum install`. +(the `-d` flag will start the container in detached mode, in the background) -## Run Examples +You should then see: + +```sh +Lambda API listening on port 9001... +``` + +Then, in another terminal shell/window you can invoke your function using the [AWS CLI](https://aws.amazon.com/cli/) +(or any http client, like `curl`): ```sh -# Test an index.handler function from the current directory on Node.js v12.x -docker run --rm -v "$PWD":/var/task lambci/lambda:nodejs12.x index.handler +aws lambda invoke --endpoint http://localhost:9001 --no-sign-request \ + --function-name myfunction --payload '{}' output.json +``` + +Or just: + +```sh +curl -d '{}' http://localhost:9001/2015-03-31/functions/myfunction/invocations +``` -# If using a function other than index.handler, with a custom event -docker run --rm -v "$PWD":/var/task lambci/lambda:nodejs12.x index.myHandler '{"some": "event"}' +It also supports the [documented Lambda API headers](https://docs.aws.amazon.com/lambda/latest/dg/API_Invoke.html) +`X-Amz-Invocation-Type`, `X-Amz-Log-Type` and `X-Amz-Client-Context`. -# Use the Node.js v8.10 runtime in a similar fashion -docker run --rm -v "$PWD":/var/task lambci/lambda:nodejs8.10 index.myHandler '{}' +If you want to change the exposed port, eg run on port 3000 on the host, use `-p 3000:9001` (then query `http://localhost:3000`). -# Use the Node.js v6.10 runtime with the default handler (index.handler) -docker run --rm -v "$PWD":/var/task lambci/lambda:nodejs6.10 +You can change the internal API port from `9001` by passing `-e DOCKER_LAMBDA_API_PORT=` (it's unlikely that you'll need to do this). -# Test a default function (lambda_function.lambda_handler) from the current directory on Python 2.7 -docker run --rm -v "$PWD":/var/task lambci/lambda:python2.7 +### Building Lambda functions + +The build images have a [number of extra system packages installed](#build-environment) +intended for building and packaging your Lambda functions. You can run your build commands (eg, `gradle` on the java image), and then package up your function using `zip` or the +[AWS SAM CLI](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-sam-cli-install.html), +all from within the image. + +```sh +docker run [--rm] -v :/var/task [-v :/opt] lambci/lambda:build- +``` + +You can also use [yumda](https://github.com/lambci/yumda) to install precompiled native dependencies using `yum install`. + +## Run Examples -# Test on Python 3.6 with a custom file named my_module.py containing a my_handler function -docker run --rm -v "$PWD":/var/task lambci/lambda:python3.6 my_module.my_handler +```sh +# Test a `handler` function from an `index.js` file in the current directory on Node.js v12.x +docker run --rm -v "$PWD":/var/task:ro,delegated lambci/lambda:nodejs12.x index.handler -# Python 3.7/3.8 require the handler be given explicitly -docker run --rm -v "$PWD":/var/task lambci/lambda:python3.7 lambda_function.lambda_handler +# Using a different file and handler, with a custom event +docker run --rm -v "$PWD":/var/task:ro,delegated lambci/lambda:nodejs12.x app.myHandler '{"some": "event"}' + +# Test a `lambda_handler` function in `lambda_function.py` with an empty event on Python 3.8 +docker run --rm -v "$PWD":/var/task:ro,delegated lambci/lambda:python3.8 lambda_function.lambda_handler # Similarly with Ruby 2.5 -docker run --rm -v "$PWD":/var/task lambci/lambda:ruby2.5 lambda_function.lambda_handler +docker run --rm -v "$PWD":/var/task:ro,delegated lambci/lambda:ruby2.5 lambda_function.lambda_handler # Test on Go 1.x with a compiled handler named my_handler and a custom event -docker run --rm -v "$PWD":/var/task lambci/lambda:go1.x my_handler '{"some": "event"}' +docker run --rm -v "$PWD":/var/task:ro,delegated lambci/lambda:go1.x my_handler '{"some": "event"}' -# Test a function from the current directory on Java 8 +# Test a function from the current directory on Java 11 # The directory must be laid out in the same way the Lambda zip file is, # with top-level package source directories and a `lib` directory for third-party jars # http://docs.aws.amazon.com/lambda/latest/dg/create-deployment-pkg-zip-java.html -# The default handler is "index.Handler", but you'll likely have your own package and class -docker run --rm -v "$PWD":/var/task lambci/lambda:java8 org.myorg.MyHandler +docker run --rm -v "$PWD":/var/task:ro,delegated lambci/lambda:java11 org.myorg.MyHandler -# Test on .NET Core 2.0 given a test.dll assembly in the current directory, +# Test on .NET Core 2.1 given a test.dll assembly in the current directory, # a class named Function with a FunctionHandler method, and a custom event -docker run --rm -v "$PWD":/var/task lambci/lambda:dotnetcore2.0 test::test.Function::FunctionHandler '{"some": "event"}' - -# Test on .NET Core 2.1 in the same way -docker run --rm -v "$PWD":/var/task lambci/lambda:dotnetcore2.1 test::test.Function::FunctionHandler '{"some": "event"}' +docker run --rm -v "$PWD":/var/task:ro,delegated lambci/lambda:dotnetcore2.1 test::test.Function::FunctionHandler '{"some": "event"}' -# Test with a provided runtime (assumes you have a bootstrap file in the current directory) -docker run --rm -v "$PWD":/var/task lambci/lambda:provided handler '{"some": "event"}' +# Test with a provided runtime (assumes you have a `bootstrap` executable in the current directory) +docker run --rm -v "$PWD":/var/task:ro,delegated lambci/lambda:provided handler '{"some": "event"}' -# Test with layers (assumes all layers have been unzipped to ../opt) -docker run --rm -v "$PWD":/var/task -v "$PWD"/../opt:/opt lambci/lambda:nodejs8.10 +# Test with layers (assumes your function code is in `./fn` and your layers in `./layer`) +docker run --rm -v "$PWD"/fn:/var/task:ro,delegated -v "$PWD"/layer:/opt:ro,delegated lambci/lambda:nodejs12.x # Run custom commands -docker run --rm --entrypoint node lambci/lambda:nodejs8.10 -v +docker run --rm --entrypoint node lambci/lambda:nodejs12.x -v -# For large events you can pipe them into stdin if you set DOCKER_LAMBDA_USE_STDIN (on any runtime) -echo '{"some": "event"}' | docker run --rm -v "$PWD":/var/task -i -e DOCKER_LAMBDA_USE_STDIN=1 lambci/lambda:nodejs8.10 +# For large events you can pipe them into stdin if you set DOCKER_LAMBDA_USE_STDIN +echo '{"some": "event"}' | docker run --rm -v "$PWD":/var/task:ro,delegated -i -e DOCKER_LAMBDA_USE_STDIN=1 lambci/lambda:nodejs12.x ``` You can see more examples of how to build docker images and run different @@ -130,13 +171,13 @@ docker run --rm -v "$PWD":/go/src/handler lambci/lambda:build-go1.x go mod downl # For .NET Core 2.0, this will publish the compiled code to `./pub`, # which you can then use to run with `-v "$PWD"/pub:/var/task` -docker run --rm -v "$PWD":/var/task lambci/lambda:build-dotnetcore2.0 dotnet publish -c Release -o pub +docker run --rm -v "$PWD":/var/task lambci/lambda:build-dotnetcore2.1 dotnet publish -c Release -o pub # Run custom commands on a build container -docker run --rm lambci/lambda:build-python2.7 aws --version +docker run --rm lambci/lambda:build-python3.8 aws --version # To run an interactive session on a build container -docker run -it lambci/lambda:build-python3.6 bash +docker run -it lambci/lambda:build-python3.8 bash ``` ## Using a Dockerfile to build @@ -144,7 +185,7 @@ docker run -it lambci/lambda:build-python3.6 bash Create your own Docker image to build and deploy: ```dockerfile -FROM lambci/lambda:build-nodejs8.10 +FROM lambci/lambda:build-nodejs12.x ENV AWS_DEFAULT_REGION us-east-1 @@ -172,13 +213,10 @@ Using the Node.js module (`npm install docker-lambda`) – for example in tests: var dockerLambda = require('docker-lambda') // Spawns synchronously, uses current dir – will throw if it fails -var lambdaCallbackResult = dockerLambda({event: {some: 'event'}}) +var lambdaCallbackResult = dockerLambda({event: {some: 'event'}, dockerImage: 'lambci/lambda:nodejs12.x'}) // Manually specify directory and custom args -lambdaCallbackResult = dockerLambda({taskDir: __dirname, dockerArgs: ['-m', '1.5G']}) - -// Use a different image from the default Node.js v4.3 -lambdaCallbackResult = dockerLambda({dockerImage: 'lambci/lambda:nodejs6.10'}) +lambdaCallbackResult = dockerLambda({taskDir: __dirname, dockerArgs: ['-m', '1.5G'], dockerImage: 'lambci/lambda:nodejs12.x'}) ``` Options to pass to `dockerLambda()`: @@ -273,6 +311,7 @@ Administrative keys for lambci/lambda:provided - `DOCKER_LAMBDA_USE_STDIN` - `DOCKER_LAMBDA_STAY_OPEN` - `DOCKER_LAMBDA_API_PORT` + - `DOCKER_LAMBDA_DEBUG` ## Build environment diff --git a/examples/terminal.png b/examples/terminal.png deleted file mode 100644 index 57a19a481d429444eb1af88e3bb0fadf60769eae..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 72948 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 Vv=U26>|O diff --git a/examples/terminal2.png b/examples/terminal2.png new file mode 100644 index 0000000000000000000000000000000000000000..055b0913b96023db1c23759c747b7c2986653137 GIT binary patch literal 629156 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 z≥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Ⓢ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 z≥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Ⓢ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

* ze%+WkuLkE&PL!9E$To@L5Q&Hiz_`io-|}&+h+BWTnKbVUhq1+saxZ znd7ZQ|G(1t#{vLT9{r%fY9vhQc#NiZH9eV?NhJc_@Odt74pUM*OT(@<&pS5!(wzSW zLCSgXBacWQg*{d5cYZn-6clKJ(Fqo+Vq8a#{B#b?AliNbQE|ccx5`2kqsy~ca0+>X zcqyu*|BLNYFkrF&laQ=zqF)^U%o1vJeXCci=2x*|MHkj5Gd@1v1)>ZzzhJ!g@0WDs z$0N9}^B9$1Y2buXi z9%b8Ajd#quFvB3uuK(molOx(fqViNiVt&UC9pu~@929JP^vOriR^(%VIIZp{E>eHy zD8Y6de#(cZG~*B1Nii=M{~G@P+WI$W(BP1V2M-dnX^k2;It48{=wb@Vc$nBvxVWDn zwq#8s!A*5o8~==6<$76HT$L(b?~1~Cr9AiZApUW3zDBBl`B_q)qtw?>#oN*ijMPv-CcLRdiDG`|J)DT$`%0=D&m(!!R&_Y=kM=lOrA3347Ax{-K>eV4EGwSNbjD#xo*muB;yE#dzgv>6Wus!>ay2A z7H{g5DdDZ4HvH6yllh%GchdJ1Uh{8V*z|=~8rlDKhmGXFVOk8BcH&&#E0uEp$@zB; zR9nL|mHYi&A7qaO^Q+`;m7;#V`hN2lED#2_fv}PM-S^*V1_D;WZvQJ;|FExvwgeKA zw`YxmsXgRkzu25U1_mAnd?b*X|F_+LT5Z89Ue@}9_<}gS{;E&G zlhnUj9oR_z_Sbvh{}=vv7Sl93=M&zxV>2;~OB(-3f8!jXX?6@_96GB(gm_EZ8OIBs zIuE9$V?OkA=E;0?dWP{`I}Jm_XTBOf{j}3*7*1F^PlofIY3MX;KKZ9#?j@aKmQoVnV&Nb{hjIYX_uAp7_Q+vJAlqZ zcNU$F{>)E5HGG|yE~AF2^Wl?!bV2yLuG-C2R{ab@vNfo6e1==&7AG}KSho*-GOT*1 z?m_g-gDsdmTwn*smUU5zi>gsMzoqvVO+EAbuI<9jc|Q0J9(_FYhAusW3$n8cS9Wdbbr@iwK;ZKuF_G{sLb7z` z+lD?KQoU1;;DX$o!j)Zc_|OiCq@cj}Z9|_3tqwcO`B|BTtGcxY5!N&#VgI

$nI3 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

&V(?D~S5BU$G4AE!cDmWcEGC8H?> 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

%me?uSs{=hv92;U&SDRjA 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%0D80VAH zfy^K1A=l07xoSEU38gyOa&Vvc%XU{q5pTLz@S<(Y^m7LA0GftNpK63o5WDU)s4_N< zruZ}FZQ+X69DW%LMxvTyp;e6g;ssGY2RZGTeNj#zRFtLa)$(tHhaSwqtvcF=4iJ?b z8Wb^i*s>sDy`OLAgbVGBOMEdqAGQD^xWD?4V8YK=x=aVr@UP|2NpglPV=K&n;Zj5n z^fpyo_C`HB5}2LnH8=3{@NO1qzfQ&>NjKi$C~7UqI5U|nKQl?5o(Riwi`djXJf?Va z>Kj{w;_2mCRnXaV$n2!})T@>ne`$)Mj1(#LXX|~^%bjOj{sh7x2;^y>=C0h@P4!FT zvV28?%GS3e+xhF*NmzWBCSMR6ch_K%_GinxS6GV|XU6`EU(QZ#X}gE2hs3L%CHrvc zhrM38;pCNm?#{Lug^BV5)5Gnblhm_xY#%Z44vlXlT8jn8I$E+2I)TGfWegMQwJ>Jq z&BGuDKAA^$RyH&FoN$kLwnI{+zJZi&q7vkOvo%EzbEn~>waL_SPz^}D#|ydmx3WN4 z9TZ5D#PD>V(lelHfeSWhVY4<1cp6FGry5c8)t9Mt`cE9l*#810bRMdu6GKkTm49rT zm|qapMr2%iKF)cNBGyWF9^D?xEJD!D;lt!B&$1o$y=z+a%N9Ah_SsY3{+i-Pa}Rm@ zhYEr;8Yg@aN%sRUA8=D1FK@@@ue@@sNu|U_eL$-iF9j(cbuR_lRtJ3 z|IFIIqzUTTXk0_)cx~YDxEaQ_si~GJxd!nz?X|>Zcs6n}{xlMbw)oorR^r4ETzh~; z^zHe8cia~5V1tGEn(&!#N`Ia)^zu{u!liUK_HkIW^x;i(1(RPK9*$xILZNI7dpZZa zvQj&V)~i5<)vJ*=3~Qmq4h(ii9pl5%tykBz9wh`xsP+2t2Ltadh_>0iC=ge!o}q)} zE9R;@0NAIKx1jLBHwsS|YnuZskFPOMd(dJs6^L4YuM*A0^7{%rqr(kdyrbM2q%0An<&e4b3XF8@&ZSEu$7f;vMDte+s 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%0A5Z_C;z(=5N)RXJ53Lz2fTv2>`!x5Qr25@APQM|- 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 z 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

! zN%Big0Ks_x$(Sc&y?8(0SDB$uD~(ITYku0;WD{(goD?1^x1` zh}uv=>Js6mLe40Mr+>R0Wg;9kS67Uf*%-|NhzGr;zgw~M!ftC6rH*bMLkrwQcv&Lk z8vrE_ubTE(`TcGuCCu8svwxh4iLJJ?RSYTp%kdT}2Zb?xky6eS%b61vY_abU7qVNP zd0e+yE6Z$A;TOopcS2~@&)684**)xaXnfzMRZ+7i*5ryE^%gAeY4Rgx&ezr@K#d@qM2T8{d*MS(=1v(0htX-bJr;_c_k@JoMB z&YCE%603BQ?+ZFx=Izzl;rn~y8@)LeO3;%Ig3+gqtUEN0*Wm2?ig z@PY5IPtBz^>#4h9+rJXfoqQ3B)4}wVuWaKrmRkbn|)g1ea>*gJ4b~ar1Ss&@EFyu_e=d1v0>a7pg!nWZ`xMn-( zj~NRw@{ypJ2h-R|C)y2Za5cbDL&acs7DDimW<~3Tt;Yf46~Dr>fWp6h6~eA9;Ik>F zN2n{?mJ{!KQWYh=Cu53}SOK^>DHQzl>FW4as;Hr_vkJeZAsXli82gF(jYDF%!89oI z8XOdh>B^xli3X@2!!jY{+Qew{U7*`xwl8>8x-z&~F~&z0I+V_kUwk!-Wj&Y0jQ}#! z^gFJ9p$??{)j{G+$CAz}lAvWJQEfrz5ivb>l7}REDCebVTD4+(#l*51J7LFWp8Y#q z1QdH)Y#zUVq3lY1c%V8*8>28(W09GB)OHjtYRk034+zSPz1&u0^xZA}d<+lSeq91K zk|@RCvO3#t_&v3={_$f^VK#s?ttYQ@49B$YVRS^DyY>;{lj-Qu;G|=sB}IExMDadd zOxElIftobPK%3W{UPSo_J+}qi+`c7szHTW2a`((Fcb9qqjhY%am=Wctan70thu*+` z*?E6QSW6S@J}+|w{*EB!>)HjMU!B%dVt#a z_FuD-37-O@mVX5N<|T>asDOrW9TPv;-mKOrZ37g+F(~xEjk5US{yxk!Na>- z^p2QvCNLipB(g;7$2XdyPtMSmBg�Jc#|IaK;#4&wKX=ZmEI9^b;%PGnM#398?5S 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

;mvHaIf5)o^GeU%A&K)&*L-i7z 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

;*k1p7k#4lTyM*+po)YSILc2HCr?V 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 Date: Mon, 25 Nov 2019 15:27:45 -0500 Subject: [PATCH 112/271] Add base packages list --- base/amazonlinux1.txt | 102 +++++++++++++++++++ base/dump-packages.sh | 11 +++ base/packages.txt | 223 ++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 336 insertions(+) create mode 100644 base/amazonlinux1.txt create mode 100755 base/dump-packages.sh create mode 100644 base/packages.txt diff --git a/base/amazonlinux1.txt b/base/amazonlinux1.txt new file mode 100644 index 00000000..f44f6cad --- /dev/null +++ b/base/amazonlinux1.txt @@ -0,0 +1,102 @@ +basesystem-10.0-4.9.amzn1.noarch +bash-4.2.46-28.37.amzn1.x86_64 +bzip2-libs-1.0.6-8.12.amzn1.x86_64 +ca-certificates-2018.2.22-65.1.20.amzn1.noarch +chkconfig-1.3.49.3-2.14.amzn1.x86_64 +coreutils-8.22-15.52.amzn1.x86_64 +curl-7.61.1-12.93.amzn1.x86_64 +cyrus-sasl-lib-2.1.23-13.16.amzn1.x86_64 +db4-4.7.25-18.11.amzn1.x86_64 +db4-utils-4.7.25-18.11.amzn1.x86_64 +elfutils-libelf-0.168-8.19.amzn1.x86_64 +expat-2.1.0-10.21.amzn1.x86_64 +file-libs-5.34-3.37.amzn1.x86_64 +filesystem-2.4.30-3.8.amzn1.x86_64 +gawk-3.1.7-10.10.amzn1.x86_64 +gdbm-1.8.0-36.6.amzn1.x86_64 +glib2-2.36.3-5.21.amzn1.x86_64 +glibc-2.17-292.178.amzn1.x86_64 +glibc-common-2.17-292.178.amzn1.x86_64 +gmp-6.0.0-11.16.amzn1.x86_64 +gnupg2-2.0.28-2.33.amzn1.x86_64 +gpgme-1.4.3-5.15.amzn1.x86_64 +grep-2.20-3.18.amzn1.x86_64 +gzip-1.5-9.19.amzn1.x86_64 +info-5.1-4.10.amzn1.x86_64 +keyutils-libs-1.5.8-3.12.amzn1.x86_64 +krb5-libs-1.15.1-34.44.amzn1.x86_64 +libacl-2.2.49-6.11.amzn1.x86_64 +libassuan-2.0.3-3.3.amzn1.x86_64 +libattr-2.4.46-12.10.amzn1.x86_64 +libcap-2.16-5.5.8.amzn1.x86_64 +libcom_err-1.43.5-2.43.amzn1.x86_64 +libcurl-7.61.1-12.93.amzn1.x86_64 +libffi-3.0.13-16.5.amzn1.x86_64 +libgcc72-7.2.1-2.59.amzn1.x86_64 +libgcrypt-1.5.3-12.19.amzn1.x86_64 +libgpg-error-1.11-1.12.amzn1.x86_64 +libicu-50.1.2-11.12.amzn1.x86_64 +libidn2-0.16-1.2.amzn1.x86_64 +libnghttp2-1.31.1-2.5.amzn1.x86_64 +libpsl-0.6.2-1.2.amzn1.x86_64 +libselinux-2.1.10-3.22.amzn1.x86_64 +libsepol-2.1.7-3.12.amzn1.x86_64 +libssh2-1.4.2-3.12.amzn1.x86_64 +libstdc++72-7.2.1-2.59.amzn1.x86_64 +libtasn1-2.3-6.6.amzn1.x86_64 +libunistring-0.9.3-6.1.amzn1.x86_64 +libverto-0.2.5-4.9.amzn1.x86_64 +libxml2-2.9.1-6.3.52.amzn1.x86_64 +libxml2-python27-2.9.1-6.3.52.amzn1.x86_64 +lua-5.1.4-4.1.9.amzn1.x86_64 +make-3.82-21.10.amzn1.x86_64 +ncurses-5.7-4.20090207.14.amzn1.x86_64 +ncurses-base-5.7-4.20090207.14.amzn1.x86_64 +ncurses-libs-5.7-4.20090207.14.amzn1.x86_64 +nspr-4.19.0-1.43.amzn1.x86_64 +nss-3.36.0-5.82.amzn1.x86_64 +nss-pem-1.0.3-4.3.amzn1.x86_64 +nss-softokn-3.36.0-5.42.amzn1.x86_64 +nss-softokn-freebl-3.36.0-5.42.amzn1.x86_64 +nss-sysinit-3.36.0-5.82.amzn1.x86_64 +nss-tools-3.36.0-5.82.amzn1.x86_64 +nss-util-3.36.0-1.54.amzn1.x86_64 +openldap-2.4.40-16.31.amzn1.x86_64 +openssl-1.0.2k-16.150.amzn1.x86_64 +p11-kit-0.18.5-2.3.amzn1.x86_64 +p11-kit-trust-0.18.5-2.3.amzn1.x86_64 +pcre-8.21-7.8.amzn1.x86_64 +pinentry-0.7.6-6.11.amzn1.x86_64 +pkgconfig-0.27.1-2.7.amzn1.x86_64 +popt-1.13-7.7.amzn1.x86_64 +pth-2.0.7-9.3.7.amzn1.x86_64 +python27-2.7.16-1.130.amzn1.x86_64 +python27-chardet-2.0.1-7.7.amzn1.noarch +python27-iniparse-0.3.1-2.1.9.amzn1.noarch +python27-kitchen-1.1.1-5.6.amzn1.noarch +python27-libs-2.7.16-1.130.amzn1.x86_64 +python27-pycurl-7.19.0-17.12.amzn1.x86_64 +python27-pygpgme-0.3-9.12.amzn1.x86_64 +python27-pyliblzma-0.5.3-11.6.amzn1.x86_64 +python27-pyxattr-0.5.0-1.6.amzn1.x86_64 +python27-urlgrabber-3.10-8.16.amzn1.noarch +readline-6.2-9.14.amzn1.x86_64 +rpm-4.11.3-40.76.amzn1.x86_64 +rpm-build-libs-4.11.3-40.76.amzn1.x86_64 +rpm-libs-4.11.3-40.76.amzn1.x86_64 +rpm-python27-4.11.3-40.76.amzn1.x86_64 +sed-4.2.1-10.10.amzn1.x86_64 +setup-2.8.14-20.12.amzn1.noarch +shared-mime-info-1.1-9.8.amzn1.x86_64 +sqlite-3.7.17-8.14.amzn1.x86_64 +sysctl-defaults-1.0-1.1.amzn1.noarch +system-release-2018.03-0.0.noarch +tar-1.26-31.22.amzn1.x86_64 +tzdata-2019c-1.73.amzn1.noarch +xz-libs-5.1.2-12alpha.12.amzn1.x86_64 +yum-3.4.3-150.70.amzn1.noarch +yum-metadata-parser-1.1.4-10.20.amzn1.x86_64 +yum-plugin-ovl-1.1.31-46.30.amzn1.noarch +yum-plugin-priorities-1.1.31-46.30.amzn1.noarch +yum-utils-1.1.31-46.30.amzn1.noarch +zlib-1.2.8-7.18.amzn1.x86_64 diff --git a/base/dump-packages.sh b/base/dump-packages.sh new file mode 100755 index 00000000..7e0f0cc1 --- /dev/null +++ b/base/dump-packages.sh @@ -0,0 +1,11 @@ +#!/bin/sh + +curl https://lambci.s3.amazonaws.com/fs/base.tgz | tar -xz --strip-components=2 -- var/lib/rpm + +docker pull amazonlinux:1 +docker run -v "$PWD/rpm":/rpm --rm amazonlinux:1 rpm -qa --dbpath /rpm | grep -v ^gpg-pubkey- | sort > packages.txt +rm -rf rpm + +docker run --rm amazonlinux:1 bash -c 'yum upgrade -y > /dev/null && rpm -qa' | grep -v ^gpg-pubkey- | sort > amazonlinux1.txt + +diff -w -d amazonlinux1.txt packages.txt diff --git a/base/packages.txt b/base/packages.txt new file mode 100644 index 00000000..0123bbe9 --- /dev/null +++ b/base/packages.txt @@ -0,0 +1,223 @@ +ImageMagick-6.7.8.9-15.21.amzn1.x86_64 +alsa-lib-1.0.22-3.9.amzn1.x86_64 +audit-libs-2.6.5-3.28.amzn1.x86_64 +avahi-libs-0.6.25-12.17.amzn1.x86_64 +basesystem-10.0-4.9.amzn1.noarch +bash-4.2.46-28.37.amzn1.x86_64 +binutils-2.25.1-31.base.66.amzn1.x86_64 +bzip2-1.0.6-8.12.amzn1.x86_64 +bzip2-libs-1.0.6-8.12.amzn1.x86_64 +ca-certificates-2018.2.22-65.1.20.amzn1.noarch +cairo-1.12.14-6.8.amzn1.x86_64 +chkconfig-1.3.49.3-2.14.amzn1.x86_64 +compat-gmp4-4.3.2-1.14.amzn1.x86_64 +copy-jdk-configs-3.3-10.3.amzn1.noarch +coreutils-8.22-15.52.amzn1.x86_64 +cpio-2.10-12.12.amzn1.x86_64 +cracklib-2.8.16-4.14.amzn1.x86_64 +cracklib-dicts-2.8.16-4.14.amzn1.x86_64 +cups-libs-1.4.2-67.21.amzn1.x86_64 +curl-7.61.1-12.93.amzn1.x86_64 +cyrus-sasl-lib-2.1.23-13.16.amzn1.x86_64 +db4-4.7.25-18.11.amzn1.x86_64 +db4-utils-4.7.25-18.11.amzn1.x86_64 +dbus-libs-1.6.12-14.29.amzn1.x86_64 +dejavu-fonts-common-2.33-6.6.amzn1.noarch +dejavu-sans-fonts-2.33-6.6.amzn1.noarch +dejavu-serif-fonts-2.33-6.6.amzn1.noarch +diffutils-3.3-4.15.amzn1.x86_64 +elfutils-libelf-0.168-8.19.amzn1.x86_64 +expat-2.1.0-10.21.amzn1.x86_64 +file-5.34-3.37.amzn1.x86_64 +file-libs-5.34-3.37.amzn1.x86_64 +filesystem-2.4.30-3.8.amzn1.x86_64 +findutils-4.4.2-6.9.amzn1.x86_64 +fontconfig-2.8.0-5.8.amzn1.x86_64 +fontpackages-filesystem-1.41-1.1.2.amzn1.noarch +freetype-2.3.11-15.14.amzn1.x86_64 +gawk-3.1.7-10.10.amzn1.x86_64 +gdbm-1.8.0-36.6.amzn1.x86_64 +ghostscript-fonts-5.50-23.2.7.amzn1.noarch +giflib-4.1.6-3.1.6.amzn1.x86_64 +glib2-2.36.3-5.21.amzn1.x86_64 +glibc-2.17-260.175.amzn1.x86_64 +glibc-common-2.17-260.175.amzn1.x86_64 +gmp-6.0.0-11.16.amzn1.x86_64 +gnupg2-2.0.28-2.33.amzn1.x86_64 +gnutls-2.12.23-21.18.amzn1.x86_64 +gpgme-1.4.3-5.15.amzn1.x86_64 +grep-2.20-3.18.amzn1.x86_64 +groff-base-1.22.2-8.11.amzn1.x86_64 +gzip-1.5-9.19.amzn1.x86_64 +hwdata-0.233-14.1.19.amzn1.noarch +info-5.1-4.10.amzn1.x86_64 +jasper-libs-1.900.1-21.9.amzn1.x86_64 +java-1.8.0-openjdk-1.8.0.201.b09-0.43.amzn1.x86_64 +java-1.8.0-openjdk-headless-1.8.0.201.b09-0.43.amzn1.x86_64 +javapackages-tools-0.9.1-1.5.amzn1.noarch +jbigkit-libs-2.0-11.4.amzn1.x86_64 +jpackage-utils-1.7.5-27.17.amzn1.noarch +keyutils-libs-1.5.8-3.12.amzn1.x86_64 +kmod-14-10.10.amzn1.x86_64 +kmod-libs-14-10.10.amzn1.x86_64 +krb5-libs-1.15.1-34.44.amzn1.x86_64 +lcms2-2.6-2.5.amzn1.x86_64 +libICE-1.0.6-1.4.amzn1.x86_64 +libSM-1.2.1-2.6.amzn1.x86_64 +libX11-1.6.0-2.2.12.amzn1.x86_64 +libX11-common-1.6.0-2.2.12.amzn1.x86_64 +libXau-1.0.6-4.9.amzn1.x86_64 +libXcomposite-0.4.3-4.6.amzn1.x86_64 +libXdamage-1.1.3-4.7.amzn1.x86_64 +libXext-1.3.2-2.1.10.amzn1.x86_64 +libXfixes-5.0.1-2.1.8.amzn1.x86_64 +libXfont-1.4.5-5.12.amzn1.x86_64 +libXi-1.7.2-2.2.9.amzn1.x86_64 +libXrender-0.9.8-2.1.9.amzn1.x86_64 +libXt-1.1.4-6.1.9.amzn1.x86_64 +libXtst-1.2.2-2.1.9.amzn1.x86_64 +libXxf86vm-1.1.3-2.1.9.amzn1.x86_64 +libacl-2.2.49-6.11.amzn1.x86_64 +libassuan-2.0.3-3.3.amzn1.x86_64 +libattr-2.4.46-12.10.amzn1.x86_64 +libblkid-2.23.2-59.29.amzn1.x86_64 +libcap-2.16-5.5.8.amzn1.x86_64 +libcap-ng-0.7.5-4.15.amzn1.x86_64 +libcom_err-1.43.5-2.43.amzn1.x86_64 +libcurl-7.61.1-12.93.amzn1.x86_64 +libdrm-2.4.82-1.14.amzn1.x86_64 +libffi-3.0.13-16.5.amzn1.x86_64 +libfontenc-1.0.5-2.6.amzn1.x86_64 +libgcc72-7.2.1-2.59.amzn1.x86_64 +libgcrypt-1.5.3-12.19.amzn1.x86_64 +libglvnd-0.2.999-14.20170308git8e6e102.3.amzn1.x86_64 +libglvnd-glx-0.2.999-14.20170308git8e6e102.3.amzn1.x86_64 +libgomp-6.4.1-1.45.amzn1.x86_64 +libgpg-error-1.11-1.12.amzn1.x86_64 +libicu-50.1.2-11.12.amzn1.x86_64 +libidn2-0.16-1.2.amzn1.x86_64 +libjpeg-turbo-1.2.90-8.16.amzn1.x86_64 +libmount-2.23.2-59.29.amzn1.x86_64 +libnghttp2-1.31.1-2.5.amzn1.x86_64 +libpciaccess-0.13.1-4.1.11.amzn1.x86_64 +libpng-1.2.49-2.14.amzn1.x86_64 +libpsl-0.6.2-1.2.amzn1.x86_64 +libpwquality-1.2.3-4.8.amzn1.x86_64 +libselinux-2.1.10-3.22.amzn1.x86_64 +libsepol-2.1.7-3.12.amzn1.x86_64 +libsmartcols-2.23.2-59.29.amzn1.x86_64 +libssh2-1.4.2-3.12.amzn1.x86_64 +libstdc++72-7.2.1-2.59.amzn1.x86_64 +libtasn1-2.3-6.6.amzn1.x86_64 +libtiff-4.0.3-32.34.amzn1.x86_64 +libtool-ltdl-2.4.2-20.4.8.5.32.amzn1.x86_64 +libudev-173-4.13.amzn1.x86_64 +libunistring-0.9.3-6.1.amzn1.x86_64 +libuser-0.60-7.23.amzn1.x86_64 +libutempter-1.1.5-4.1.6.amzn1.x86_64 +libuuid-2.23.2-59.29.amzn1.x86_64 +libverto-0.2.5-4.9.amzn1.x86_64 +libwmf-lite-0.2.8.4-41.13.amzn1.x86_64 +libxcb-1.11-2.21.amzn1.x86_64 +libxml2-2.9.1-6.3.52.amzn1.x86_64 +libxshmfence-1.2-1.4.amzn1.x86_64 +libxslt-1.1.28-5.13.amzn1.x86_64 +lksctp-tools-1.0.10-7.7.amzn1.x86_64 +lua-5.1.4-4.1.9.amzn1.x86_64 +make-3.82-21.10.amzn1.x86_64 +mesa-dri-drivers-17.1.5-2.41.amzn1.x86_64 +mesa-filesystem-17.1.5-2.41.amzn1.x86_64 +mesa-libGL-17.1.5-2.41.amzn1.x86_64 +mesa-libglapi-17.1.5-2.41.amzn1.x86_64 +ncurses-5.7-4.20090207.14.amzn1.x86_64 +ncurses-base-5.7-4.20090207.14.amzn1.x86_64 +ncurses-libs-5.7-4.20090207.14.amzn1.x86_64 +nspr-4.19.0-1.43.amzn1.x86_64 +nss-3.36.0-5.82.amzn1.x86_64 +nss-pem-1.0.3-4.3.amzn1.x86_64 +nss-softokn-3.36.0-5.42.amzn1.x86_64 +nss-softokn-freebl-3.36.0-5.42.amzn1.x86_64 +nss-sysinit-3.36.0-5.82.amzn1.x86_64 +nss-tools-3.36.0-5.82.amzn1.x86_64 +nss-util-3.36.0-1.54.amzn1.x86_64 +openldap-2.4.40-16.31.amzn1.x86_64 +openssl-1.0.2k-16.150.amzn1.x86_64 +p11-kit-0.18.5-2.3.amzn1.x86_64 +p11-kit-trust-0.18.5-2.3.amzn1.x86_64 +pam-1.1.8-12.33.amzn1.x86_64 +patch-2.7.1-12.14.amzn1.x86_64 +pcre-8.21-7.8.amzn1.x86_64 +perl-5.16.3-294.43.amzn1.x86_64 +perl-Carp-1.26-244.5.amzn1.noarch +perl-Encode-2.51-7.5.amzn1.x86_64 +perl-Exporter-5.68-3.5.amzn1.noarch +perl-File-Path-2.09-2.5.amzn1.noarch +perl-File-Temp-0.23.01-3.5.amzn1.noarch +perl-Filter-1.49-3.5.amzn1.x86_64 +perl-Getopt-Long-2.40-3.6.amzn1.noarch +perl-HTTP-Tiny-0.033-3.6.amzn1.noarch +perl-PathTools-3.40-5.5.amzn1.x86_64 +perl-Pod-Escapes-1.04-294.43.amzn1.noarch +perl-Pod-Perldoc-3.20-4.7.amzn1.noarch +perl-Pod-Simple-3.28-4.6.amzn1.noarch +perl-Pod-Usage-1.63-3.5.amzn1.noarch +perl-Scalar-List-Utils-1.27-248.5.amzn1.x86_64 +perl-Socket-2.010-3.5.amzn1.x86_64 +perl-Storable-2.45-3.5.amzn1.x86_64 +perl-Text-ParseWords-3.29-4.5.amzn1.noarch +perl-Time-HiRes-1.9725-272.5.amzn1.x86_64 +perl-Time-Local-1.2300-2.5.amzn1.noarch +perl-constant-1.27-2.5.amzn1.noarch +perl-libs-5.16.3-294.43.amzn1.x86_64 +perl-macros-5.16.3-294.43.amzn1.x86_64 +perl-parent-0.225-244.5.amzn1.noarch +perl-podlators-2.5.1-3.8.amzn1.noarch +perl-threads-1.87-4.5.amzn1.x86_64 +perl-threads-shared-1.43-6.5.amzn1.x86_64 +pinentry-0.7.6-6.11.amzn1.x86_64 +pixman-0.32.4-4.11.amzn1.x86_64 +pkgconfig-0.27.1-2.7.amzn1.x86_64 +popt-1.13-7.7.amzn1.x86_64 +procps-3.2.8-45.16.amzn1.x86_64 +psmisc-22.20-8.12.amzn1.x86_64 +pth-2.0.7-9.3.7.amzn1.x86_64 +python27-2.7.16-1.129.amzn1.x86_64 +python27-iniparse-0.3.1-2.1.9.amzn1.noarch +python27-libs-2.7.16-1.129.amzn1.x86_64 +python27-pycurl-7.19.0-17.12.amzn1.x86_64 +python27-pygpgme-0.3-9.12.amzn1.x86_64 +python27-pyliblzma-0.5.3-11.6.amzn1.x86_64 +python27-pyxattr-0.5.0-1.6.amzn1.x86_64 +python27-urlgrabber-3.10-8.16.amzn1.noarch +python36-3.6.8-1.14.amzn1.x86_64 +python36-libs-3.6.8-1.14.amzn1.x86_64 +python36-pip-9.0.3-1.26.amzn1.noarch +python36-setuptools-36.2.7-1.33.amzn1.noarch +readline-6.2-9.14.amzn1.x86_64 +rpm-4.11.3-21.75.amzn1.x86_64 +rpm-build-libs-4.11.3-21.75.amzn1.x86_64 +rpm-libs-4.11.3-21.75.amzn1.x86_64 +rpm-python27-4.11.3-21.75.amzn1.x86_64 +sed-4.2.1-10.10.amzn1.x86_64 +setup-2.8.14-20.12.amzn1.noarch +shadow-utils-4.1.4.2-13.10.amzn1.x86_64 +shared-mime-info-1.1-9.8.amzn1.x86_64 +sqlite-3.7.17-8.14.amzn1.x86_64 +sysctl-defaults-1.0-1.1.amzn1.noarch +system-release-2018.03-0.0.noarch +tar-1.26-31.22.amzn1.x86_64 +ttmkfdir-3.0.9-32.1.5.amzn1.x86_64 +tzdata-2019b-1.72.amzn1.noarch +tzdata-java-2019b-1.72.amzn1.noarch +unzip-6.0-4.10.amzn1.x86_64 +urw-fonts-2.4-10.7.amzn1.noarch +util-linux-2.23.2-59.29.amzn1.x86_64 +which-2.19-6.10.amzn1.x86_64 +xorg-x11-font-utils-7.2-11.5.amzn1.x86_64 +xorg-x11-fonts-Type1-7.2-9.1.5.amzn1.noarch +xz-5.1.2-12alpha.12.amzn1.x86_64 +xz-libs-5.1.2-12alpha.12.amzn1.x86_64 +yum-3.4.3-150.70.amzn1.noarch +yum-metadata-parser-1.1.4-10.20.amzn1.x86_64 +yum-plugin-priorities-1.1.31-46.30.amzn1.noarch +zlib-1.2.8-7.18.amzn1.x86_64 From c7f0e37da3244cc6433d2838e7a0e3def3b8026c Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Mon, 25 Nov 2019 15:28:01 -0500 Subject: [PATCH 113/271] Update base-2 amazonlinux packages --- base/base-2/amazonlinux2.txt | 16 ++++++++-------- base/base-2/dump-packages.sh | 1 + 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/base/base-2/amazonlinux2.txt b/base/base-2/amazonlinux2.txt index 60183af6..e1d58cc0 100644 --- a/base/base-2/amazonlinux2.txt +++ b/base/base-2/amazonlinux2.txt @@ -11,7 +11,7 @@ cyrus-sasl-lib-2.1.26-23.amzn2.x86_64 diffutils-3.3-4.amzn2.0.2.x86_64 elfutils-libelf-0.176-2.amzn2.x86_64 expat-2.1.0-10.amzn2.0.2.x86_64 -file-libs-5.11-33.amzn2.0.2.x86_64 +file-libs-5.11-35.amzn2.0.1.x86_64 filesystem-3.2-25.amzn2.0.4.x86_64 findutils-4.5.11-5.amzn2.0.2.x86_64 gawk-4.0.2-4.amzn2.1.2.x86_64 @@ -77,17 +77,17 @@ popt-1.13-16.amzn2.0.2.x86_64 pth-2.0.7-23.amzn2.0.2.x86_64 pygpgme-0.3-9.amzn2.0.2.x86_64 pyliblzma-0.5.3-11.amzn2.0.2.x86_64 -python-2.7.16-3.amzn2.0.1.x86_64 +python-2.7.16-4.amzn2.x86_64 python-iniparse-0.4-9.amzn2.noarch -python-libs-2.7.16-3.amzn2.0.1.x86_64 +python-libs-2.7.16-4.amzn2.x86_64 python-pycurl-7.19.0-19.amzn2.0.2.x86_64 python-urlgrabber-3.10-8.amzn2.noarch +python2-rpm-4.11.3-40.amzn2.0.3.x86_64 pyxattr-0.5.1-5.amzn2.0.2.x86_64 readline-6.2-10.amzn2.0.2.x86_64 -rpm-4.11.3-25.amzn2.0.3.x86_64 -rpm-build-libs-4.11.3-25.amzn2.0.3.x86_64 -rpm-libs-4.11.3-25.amzn2.0.3.x86_64 -rpm-python-4.11.3-25.amzn2.0.3.x86_64 +rpm-4.11.3-40.amzn2.0.3.x86_64 +rpm-build-libs-4.11.3-40.amzn2.0.3.x86_64 +rpm-libs-4.11.3-40.amzn2.0.3.x86_64 sed-4.2.2-5.amzn2.0.2.x86_64 setup-2.8.71-10.amzn2.noarch shared-mime-info-1.8-4.amzn2.x86_64 @@ -96,7 +96,7 @@ system-release-2-11.amzn2.x86_64 tzdata-2019c-1.amzn2.noarch vim-minimal-8.1.1602-1.amzn2.x86_64 xz-libs-5.2.2-1.amzn2.0.2.x86_64 -yum-3.4.3-158.amzn2.0.2.noarch +yum-3.4.3-158.amzn2.0.3.noarch yum-metadata-parser-1.1.4-10.amzn2.0.2.x86_64 yum-plugin-ovl-1.1.31-46.amzn2.0.1.noarch yum-plugin-priorities-1.1.31-46.amzn2.0.1.noarch diff --git a/base/base-2/dump-packages.sh b/base/base-2/dump-packages.sh index fae87fa4..908bb05a 100755 --- a/base/base-2/dump-packages.sh +++ b/base/base-2/dump-packages.sh @@ -2,6 +2,7 @@ curl https://lambci.s3.amazonaws.com/fs/base-2.tgz | tar -xz --strip-components=2 -- var/lib/rpm +docker pull amazonlinux:2 docker run -v "$PWD/rpm":/rpm --rm amazonlinux:2 rpm -qa --dbpath /rpm | grep -v ^gpg-pubkey- | sort > packages.txt rm -rf rpm From 6700ccbc01e8d51cc3637e04280aeb6d10e43434 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Mon, 25 Nov 2019 15:53:15 -0500 Subject: [PATCH 114/271] Update dotnetcore2.1 to add the Throttled flag --- .../run/MockBootstraps/MockRuntime.cs | 3 ++- .../run/MockBootstraps/lib/Bootstrap.dll | Bin 146432 -> 147456 bytes .../run/MockBootstraps/lib/Bootstrap.pdb | Bin 44780 -> 44980 bytes 3 files changed, 2 insertions(+), 1 deletion(-) diff --git a/dotnetcore2.1/run/MockBootstraps/MockRuntime.cs b/dotnetcore2.1/run/MockBootstraps/MockRuntime.cs index fd7165e0..248b628c 100644 --- a/dotnetcore2.1/run/MockBootstraps/MockRuntime.cs +++ b/dotnetcore2.1/run/MockBootstraps/MockRuntime.cs @@ -62,7 +62,8 @@ public MockRuntime(string handler, string body) Handler = handler, InvokeId = context.RequestId, SuppressUserCodeInit = true, - ErrorCode = null + ErrorCode = null, + Throttled = false }; invoked = false; client.Timeout = Timeout.InfiniteTimeSpan; diff --git a/dotnetcore2.1/run/MockBootstraps/lib/Bootstrap.dll b/dotnetcore2.1/run/MockBootstraps/lib/Bootstrap.dll index 33616baf65fe13e2fe10cb942fb7b2e2773bb597..4880d8fd9ec88680c4407c7cbd7228fbbb51f489 100644 GIT binary patch delta 45479 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 delta 44655 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%0D30L2Mjs$Ee4Kw~lngMRg=bl3Prhfj?AHMR3 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

dZqX&vC&HsZ&4re(h0rzY4MF0 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 diff --git a/dotnetcore2.1/run/MockBootstraps/lib/Bootstrap.pdb b/dotnetcore2.1/run/MockBootstraps/lib/Bootstrap.pdb index 620532bed8cbbbc8fd5fad74ea36aaedd05be8dd..3f913c8b3c16410e70ff8393a9e04193f32497a7 100644 GIT binary patch delta 14616 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 delta 14476 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 From 595a497e18d0f6a70c99499759a7db2cc2bda272 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Mon, 25 Nov 2019 15:58:49 -0500 Subject: [PATCH 115/271] Update java8 to add the throttled flag --- .../LambdaSandboxJava-1.0.jar | Bin 127784 -> 0 bytes .../java/lambdainternal/LambdaRuntime.java | 8 +++++--- 2 files changed, 5 insertions(+), 3 deletions(-) delete mode 100644 java8/run/lambda-runtime-mock/LambdaSandboxJava-1.0.jar diff --git a/java8/run/lambda-runtime-mock/LambdaSandboxJava-1.0.jar b/java8/run/lambda-runtime-mock/LambdaSandboxJava-1.0.jar deleted file mode 100644 index 5576d3f8cc8953ad94267ae636dcd99d4fa6bd2e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 127784 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�KL*&N;NkGtzJ_{m<+;>|_ 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

#kn_V!M5~#VrHx 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

  • mUw1jHi6%DgEO=nGTKwHty(XxxAr(Q=vTz^fNm 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

    jd5-T7M$P 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

  • Sc9 zh`>3CXuw{iiNw&{;gaO@t3ZZ|_T-BX6cD`(#nFS2Du^CFh%gWG@iSFQOF^0e==6Nv zqXlbH=(wd3uDUg-_@vht-;703;9`VQY4<+Dgj&i9=u{-*in~_e!rE&fwo^J42KCir zv2_Xr%yd!XNHk-KK%KQ$OQqV)@1Y$*u@)tXm{apb?(Id)W-7~kwNXe5gPm27*$Qba z&yfp9i^&3{!a7JOku)Gs7vA$b)-$}FH$E9LprON@RP6$Qs0 zClAI;_p=+VCRPnM+FQqU2?tZkhty9HlZMU@RDP2B@2RejC%%D|h~9r4AKC0-;`oG+ zG@7f}1Boq9m*cg!`*a4ppk3q)w=Egw;waZKWFuRdMS-Y-<49lN=;lOk2J}zd^~(!N zM!PUIf-{G`w5uZm2*NvrqzJe*DUln~tUS<0Ros8c#@W2}m8`BL^+}xMWe)2%bPuHj zM7Ik^M3_SUky2N73BO%R;EmVH?kB305|m8!3}54wg>yBa-h&xcm9UzcAB}VVE;n46 zQBf!oph?K!aHv~wAInR7WjqKDjw~+iqF_muI^wkYw3aAWzdaW4PTt(BITETNH`X$H zCAedlg00Ep;@KtJE24GP?MEkTP01uqfvT^(#{!}v-4T^8I6tb!k2(&ho}p>TM->+5 zliZHlqdHrD>YJ0j*wA`>!Xhf53DH}i@}}FoNv6y>M|a8YNtPLENMM(>r(M2nkoFN8 zmG=}?8Nyi3GcL@RLG}AQu_-zdn*Vr5VipoYxsK#TGZJiLRwy8HGSH+8!XP2q_)$o?||HKs%4B!eD3$>DVfMjO;QN`V?`qBtpF! zTI@xaWeR@Lcx3W2RlOM?+O^n1d4QqxCy7no(V^02L+^ zD{5EeF?;_6rpt5!t*RG#@9t`X0uy{o5iKW?j$6FZSb@_(8jD~yWhG-xbKJFJKvQ&= zeyIHMt(K?Y*m=ULa+SWXMLH3zQe9+qsv=sF+i#AY9cgs6Mo?irO<6*Zk9 zU&;hH{f)1OkrdDn#!rShh-{{vT85YuX?o=Jvw@mHCcKQl^BmpNa`u8zZ{nCw{Yu?8 zEau!Wm3c+IpL_F0nb)Ymf4Igq=b`bh6W>y4@h{$RNs6yp^~Y-FOGo~e!uhDFrH!PV z*0NF8PSBz^!3OTC3K(i|u+Q7Q7VA1>)?88piSG=%`V1@e8Cr#d2vL|~6?231>0=~6 zRoF|KkRm#1^EG}M6)bM8ADv>(dDWJc(nG*Nv;M6q~`mfiXS!8j%? z;B#F!{p-sB9u^d3gw$KkZTi?t+vB|SWsdm)W=j7d>J}-mIlY~y@;3Y8z~O9W||u*S{tf_naO=FFI8qYRezqB7QN4~ zyC1Bzm(Z>CIKZvm*2ICpT<@FIvO`=NE%=Z*q7b?OyJAPzxJTF8N7uYZ_K8ldt6aPU zp%_sJEu5hk+@V_81F}cfN!DTKDa+m2b`YLU40SpXLT5EnwR*L_`x zL8XGBW<@%VPs|!^lG_`ThwstGN6k>F{xGvW> zG@Dp!gt3*u2(IJo#ozI;US-|_)N#?gp2HMZwrSDQajx3DzJnQ5rgF}1-O@24P^{XZ zwP{P@x^C6tAj6@=|o4uFRov5~eIxrWDp{+O0+@}G=X01Lj1@Bn! z_;!T#fte@+mme`ZIab%f?al4z_$EiScdo1hEWb>NtaHuY%0B*ySVt<^ckB63**sp-lSdE zksMWX+_lLkNpK6%VRWC*h7Io-*`ynCp-Q`5>}=mS3eO%|*XtLt^Q9hwob$SNjFBU`F#z9u&c=;1B>EhoyvD4<*^+eQ^^`t!w&_ds;>-F zNO_4G)zrweKipb{36UuzjWD~Y~yy>8zz?0;QN#s7ctZ2m2bjq8&d_$GUd()(uE%4VPEEklgF9eVd*HaIg^M{&D+p#OciB?66}f zg1L2|fnOIdG^WNL^clTmU7bV;O%EBEG-3MuX`B&mwo8+*)B}K)EtTR0;0G;`;m{@N zRo)#DQ#p~eU2`xcuJ!P4-GhTNB$T5c^fT_#MKR#iu4@cSVnz9}Ar3n*+SWu~IR+I$ zG4raWT#igo*t+bbew7AkrI?R(QR<}yQ7EqJ5ZKT;tNM^?zc(TEA5&!5Z_cU1`_Blv zaO(tsET48s_5E?Nt9q(>I9vYF@mNjFv(z5*^iNKw`>@n>@NbKw{ZIT28qqrckYW3O zKjhy>|3Q<@#o5A|LCnS0$l1cq)`?V+@n4qpk&&_L{~qRMce5f^eC~Aa*N6IA$M|}h{1S;(c$N6;K1DWX~lbzEwcVNA^fry)kJ^^aAia`d< ztGLgD<%T*X>+gincT!=l^$XV4bdbKxFQXfD8m5swTZ?`-?rN*;h*ss=-963ijP-L< zjZGo$)xGZt!BI#vojRJPc&h~PbbNV=EoV4%xEuA?Np zy-sUx6@k6wI50QvLy&UtMvdv1U4*ay6bapLo9~?Z{`>6TM*8<5`F~)beXIBVP*UiI@M zYGnGwlALOlvid@h+1ny`!6@sZBc^)(!&g~Ga5k)Ps&=Das#vziHiI5!(Ny? zwd#kKRlF}1fH@v%Ew%?TyG4e+k3ApL5z>THRjrb`ujzD{SNUsJe8BMc9=X8gL(M-X zu50@`^4zzT4E}Ge^lxNfJ~Dll|FBXa6H~dSU*1e0L>DV2FDi);C1kJ=(ILce>*%;^ zu!SMbLYZPG z61jHo3OT+F6nr$l^GDhyq+nAtRk4ceE87IIAlXgu8qLT(Q3s8P1jf%?QTNu9zsQv+ zr^KN%!A2g__3+vgz7z-_1ouphn0cR2jP@UP|F9Tc54O$Lx5c9VZ!O01uZb5OGyRVx zZMdhLiOHhs0SFWUe=RaUy0io}Kwch{XbR@nK60~lOPsZLEB@;bA4-S9oxYGc|MbsJcwQYPrh{jvWU-5KpxUz~MT?vsR z$a^4t9t!v%OErTVV`*N?y(LJ6ieWl2D@C6wTFOL3v0gVtTX?ue$d@E7BJg@4@X8r0 zPr4gV9`?6SC|_EdxCG}=a}J;X+!YT+9jkl*l-wW3hW^!yWcy2UJa_hs{E(24sF0v; zkalj6{9=$vd;J-BVgM|J?27(6k++Qg4j12#f{I^zDAqS3Y|Oz}*qq;4=YFF|ONA?8 zV~czd!b7MO#*6&6g!MzV;)`(LH!CZfzzU{2ZX6?2wq6R02-#`y@Em-0N+*cJWDN4+ zHq!%;_2EOcv}B#Q)NJ(%D5cTK?y2FNnD~_Rgt(Mc^*F7B>DMD=16liuNO za1syR-#1F(8O|u-;mYCI*x=LWMkX->)+o57VAEufNCqZ`CI)5(pf{QUycCe^M2Njc z=35|h8Sou~Y2ly+A>jcbk*Gk4K|!xN#r9nQCAjl%CHUnp306k^mpNr-u3gaMgC^i@ zz!YBHGZKLg4kUuM)HA?Mt}|U1s=Ma%!AIo(hNzlBb!&hr&+y9g;{VFZlimJ+2m%8D zl>>u^)+2AANSWCc>j=|;tB=Z7!_{0q`#JoGgxp)Gg=@H~g~A|a%0DvdGn!V5qLvmp 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 diff --git a/java8/run/lambda-runtime-mock/src/main/java/lambdainternal/LambdaRuntime.java b/java8/run/lambda-runtime-mock/src/main/java/lambdainternal/LambdaRuntime.java index 5349d331..b37c4510 100644 --- a/java8/run/lambda-runtime-mock/src/main/java/lambdainternal/LambdaRuntime.java +++ b/java8/run/lambda-runtime-mock/src/main/java/lambdainternal/LambdaRuntime.java @@ -125,7 +125,7 @@ public static WaitForStartResult waitForStart() { System.setErr(ORIG_STDERR); } return new WaitForStartResult(INVOKE_ID, HANDLER, "event", AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, - AWS_SESSION_TOKEN, true); + AWS_SESSION_TOKEN, true, false); } public static InvokeRequest waitForInvoke() { @@ -199,7 +199,7 @@ public static void reportDone(final String invokeid, final byte[] result, final } conn.setRequestProperty("Docker-Lambda-Log-Result", Base64.getEncoder().encodeToString(logs)); } - + if (!initEndSent) { conn.setRequestProperty("Docker-Lambda-Invoke-Wait", Long.toString(receivedInvokeAt)); conn.setRequestProperty("Docker-Lambda-Init-End", Long.toString(initEnd)); @@ -368,14 +368,16 @@ public static class WaitForStartResult { public final String mode; public final AWSCredentials credentials; public final boolean suppressInit; + public final boolean throttled; public WaitForStartResult(final String invokeid, final String handler, final String mode, final String awskey, - final String awssecret, final String awssession, final boolean suppressInit) { + final String awssecret, final String awssession, final boolean suppressInit, boolean throttled) { this.invokeid = invokeid; this.handler = handler; this.mode = mode; this.credentials = new AWSCredentials(awskey, awssecret, awssession); this.suppressInit = suppressInit; + this.throttled = throttled; } } } From ff1c6bb244e30aed07e9896b0faa16567c88777d Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Mon, 25 Nov 2019 16:03:45 -0500 Subject: [PATCH 116/271] Update python2.7/python3.6 to add the throttled flag --- python2.7/run/runtime_mock.py | 2 ++ python3.6/run/runtime_mock.py | 2 ++ 2 files changed, 4 insertions(+) diff --git a/python2.7/run/runtime_mock.py b/python2.7/run/runtime_mock.py index b2aeccf3..21e65420 100644 --- a/python2.7/run/runtime_mock.py +++ b/python2.7/run/runtime_mock.py @@ -48,6 +48,7 @@ INVOKEID = str(uuid.uuid4()) INVOKE_MODE = 'event' # Either 'http' or 'event' SUPPRESS_INIT = True # Forces calling _get_handlers_delayed() +THROTTLED = False DATA_SOCK = -1 CONTEXT_OBJS = { 'clientcontext': None, @@ -144,6 +145,7 @@ def receive_start(): INVOKE_MODE, HANDLER, SUPPRESS_INIT, + THROTTLED, CREDENTIALS ) diff --git a/python3.6/run/runtime_mock.py b/python3.6/run/runtime_mock.py index b2aeccf3..21e65420 100644 --- a/python3.6/run/runtime_mock.py +++ b/python3.6/run/runtime_mock.py @@ -48,6 +48,7 @@ INVOKEID = str(uuid.uuid4()) INVOKE_MODE = 'event' # Either 'http' or 'event' SUPPRESS_INIT = True # Forces calling _get_handlers_delayed() +THROTTLED = False DATA_SOCK = -1 CONTEXT_OBJS = { 'clientcontext': None, @@ -144,6 +145,7 @@ def receive_start(): INVOKE_MODE, HANDLER, SUPPRESS_INIT, + THROTTLED, CREDENTIALS ) From 8c764d103066695f95f8541ef5c08abcd4683397 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Mon, 25 Nov 2019 16:05:43 -0500 Subject: [PATCH 117/271] Update nodejs8.10 to add the throttled flag --- nodejs8.10/run/awslambda-mock.js | 1 + 1 file changed, 1 insertion(+) diff --git a/nodejs8.10/run/awslambda-mock.js b/nodejs8.10/run/awslambda-mock.js index c77a6096..ba211303 100644 --- a/nodejs8.10/run/awslambda-mock.js +++ b/nodejs8.10/run/awslambda-mock.js @@ -63,6 +63,7 @@ var OPTIONS = { invokeId: uuid(), handler: HANDLER, suppressInit: true, + throttled: false, credentials: { key: ACCESS_KEY_ID, secret: SECRET_ACCESS_KEY, From 44b5f8c55212fbb6cfaec9acc1144b208d495e55 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Mon, 25 Nov 2019 16:13:39 -0500 Subject: [PATCH 118/271] Update dotnet deps --- base/dump-dotnetcore20/dump-dotnetcore20.csproj | 6 +++--- base/dump-dotnetcore21/dump-dotnetcore21.csproj | 6 +++--- examples/dotnetcore2.0/test.csproj | 2 +- examples/dotnetcore2.1/test.csproj | 2 +- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/base/dump-dotnetcore20/dump-dotnetcore20.csproj b/base/dump-dotnetcore20/dump-dotnetcore20.csproj index b1b485c0..6d97431e 100644 --- a/base/dump-dotnetcore20/dump-dotnetcore20.csproj +++ b/base/dump-dotnetcore20/dump-dotnetcore20.csproj @@ -7,9 +7,9 @@ - - - + + + diff --git a/base/dump-dotnetcore21/dump-dotnetcore21.csproj b/base/dump-dotnetcore21/dump-dotnetcore21.csproj index a592a6c3..300ceb9b 100644 --- a/base/dump-dotnetcore21/dump-dotnetcore21.csproj +++ b/base/dump-dotnetcore21/dump-dotnetcore21.csproj @@ -7,9 +7,9 @@ - - - + + + diff --git a/examples/dotnetcore2.0/test.csproj b/examples/dotnetcore2.0/test.csproj index 77adb3e7..bf608d81 100644 --- a/examples/dotnetcore2.0/test.csproj +++ b/examples/dotnetcore2.0/test.csproj @@ -7,7 +7,7 @@ - + diff --git a/examples/dotnetcore2.1/test.csproj b/examples/dotnetcore2.1/test.csproj index d6a026b0..62b530d4 100644 --- a/examples/dotnetcore2.1/test.csproj +++ b/examples/dotnetcore2.1/test.csproj @@ -7,7 +7,7 @@ - + From cc7ec1f73bf9d29ccfa1b22c0a3f2bfa286d95f2 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Mon, 25 Nov 2019 16:17:15 -0500 Subject: [PATCH 119/271] Update go deps --- base/dump-go1x/go.mod | 2 +- base/dump-go1x/go.sum | 2 ++ examples/go1.x/go.mod | 2 +- examples/go1.x/go.sum | 4 ++-- go1.x/run/go.mod | 2 +- go1.x/run/go.sum | 2 ++ 6 files changed, 9 insertions(+), 5 deletions(-) diff --git a/base/dump-go1x/go.mod b/base/dump-go1x/go.mod index 32a59771..6e9e6186 100644 --- a/base/dump-go1x/go.mod +++ b/base/dump-go1x/go.mod @@ -2,7 +2,7 @@ module dump-go1x require ( github.com/aws/aws-lambda-go v1.13.3 - github.com/aws/aws-sdk-go-v2 v0.16.0 + github.com/aws/aws-sdk-go-v2 v0.17.0 ) go 1.13 diff --git a/base/dump-go1x/go.sum b/base/dump-go1x/go.sum index b3119fb9..f6f122bc 100644 --- a/base/dump-go1x/go.sum +++ b/base/dump-go1x/go.sum @@ -5,6 +5,8 @@ github.com/aws/aws-lambda-go v1.13.3 h1:SuCy7H3NLyp+1Mrfp+m80jcbi9KYWAs9/BXwppwR github.com/aws/aws-lambda-go v1.13.3/go.mod h1:4UKl9IzQMoD+QF79YdCuzCwp8VbmG4VAQwij/eHl5CU= github.com/aws/aws-sdk-go-v2 v0.16.0 h1:X5pkFnjRNdDEX18NwDGWMaWL5ocNQX0qIYEhEcsTy64= github.com/aws/aws-sdk-go-v2 v0.16.0/go.mod h1:pFLIN9LDjOEwHfruGweAXEq0XaD6uRkY8FsRkxhuBIg= +github.com/aws/aws-sdk-go-v2 v0.17.0 h1:b/9gp0SD6doAWv72f3ZwzFJSsWmUw9dM8wMNmf6OBws= +github.com/aws/aws-sdk-go-v2 v0.17.0/go.mod h1:JWVYvqSMppoMJC0x5wdwiImzgXTI9FuZwxzkQq9wy+g= github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= diff --git a/examples/go1.x/go.mod b/examples/go1.x/go.mod index f263af82..6130d509 100644 --- a/examples/go1.x/go.mod +++ b/examples/go1.x/go.mod @@ -1,5 +1,5 @@ module handler -require github.com/aws/aws-lambda-go v1.13.2 +require github.com/aws/aws-lambda-go v1.13.3 go 1.13 diff --git a/examples/go1.x/go.sum b/examples/go1.x/go.sum index d1f9fee8..01282a39 100644 --- a/examples/go1.x/go.sum +++ b/examples/go1.x/go.sum @@ -1,6 +1,6 @@ github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= -github.com/aws/aws-lambda-go v1.13.2 h1:8lYuRVn6rESoUNZXdbCmtGB4bBk4vcVYojiHjE4mMrM= -github.com/aws/aws-lambda-go v1.13.2/go.mod h1:4UKl9IzQMoD+QF79YdCuzCwp8VbmG4VAQwij/eHl5CU= +github.com/aws/aws-lambda-go v1.13.3 h1:SuCy7H3NLyp+1Mrfp+m80jcbi9KYWAs9/BXwppwRDzY= +github.com/aws/aws-lambda-go v1.13.3/go.mod h1:4UKl9IzQMoD+QF79YdCuzCwp8VbmG4VAQwij/eHl5CU= github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= diff --git a/go1.x/run/go.mod b/go1.x/run/go.mod index 5a5837c4..d5a93364 100644 --- a/go1.x/run/go.mod +++ b/go1.x/run/go.mod @@ -1,5 +1,5 @@ module aws-lambda-mock -require github.com/aws/aws-lambda-go v1.13.2 +require github.com/aws/aws-lambda-go v1.13.3 go 1.13 diff --git a/go1.x/run/go.sum b/go1.x/run/go.sum index d1f9fee8..f0a554a8 100644 --- a/go1.x/run/go.sum +++ b/go1.x/run/go.sum @@ -1,6 +1,8 @@ github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/aws/aws-lambda-go v1.13.2 h1:8lYuRVn6rESoUNZXdbCmtGB4bBk4vcVYojiHjE4mMrM= github.com/aws/aws-lambda-go v1.13.2/go.mod h1:4UKl9IzQMoD+QF79YdCuzCwp8VbmG4VAQwij/eHl5CU= +github.com/aws/aws-lambda-go v1.13.3 h1:SuCy7H3NLyp+1Mrfp+m80jcbi9KYWAs9/BXwppwRDzY= +github.com/aws/aws-lambda-go v1.13.3/go.mod h1:4UKl9IzQMoD+QF79YdCuzCwp8VbmG4VAQwij/eHl5CU= github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= From 0140b90e2695eaa4beaf9219938de62ed7593a8a Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Mon, 25 Nov 2019 16:24:41 -0500 Subject: [PATCH 120/271] Update java deps --- base/dump-java11/build.gradle | 2 +- base/dump-java8/build.gradle | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/base/dump-java11/build.gradle b/base/dump-java11/build.gradle index 2e356d91..54e4b202 100644 --- a/base/dump-java11/build.gradle +++ b/base/dump-java11/build.gradle @@ -11,7 +11,7 @@ dependencies { implementation ( 'com.amazonaws:aws-lambda-java-core:1.2.0', 'com.amazonaws:aws-lambda-java-events:2.2.7', - 'com.amazonaws:aws-java-sdk-s3:1.11.667' + 'com.amazonaws:aws-java-sdk-s3:1.11.681' ) } diff --git a/base/dump-java8/build.gradle b/base/dump-java8/build.gradle index a2ec1bc8..77e5fb16 100644 --- a/base/dump-java8/build.gradle +++ b/base/dump-java8/build.gradle @@ -11,7 +11,7 @@ dependencies { implementation ( 'com.amazonaws:aws-lambda-java-core:1.2.0', 'com.amazonaws:aws-lambda-java-events:2.2.7', - 'com.amazonaws:aws-java-sdk-s3:1.11.667' + 'com.amazonaws:aws-java-sdk-s3:1.11.681' ) } From bf3b1a4952774d5e4fa04987b677fa01270880a9 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Mon, 25 Nov 2019 16:36:02 -0500 Subject: [PATCH 121/271] Ignore examples/go1.x/handler --- .gitignore | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index e19d1af5..69e3ff9d 100644 --- a/.gitignore +++ b/.gitignore @@ -18,6 +18,7 @@ dotnetcore2.0/run/MockBootstraps/bin dotnetcore2.0/run/MockBootstraps/obj dotnetcore2.1/run/MockBootstraps/bin dotnetcore2.1/run/MockBootstraps/obj +java8/run/lambda-runtime-mock/target examples/dotnetcore2.0/bin examples/dotnetcore2.0/obj examples/dotnetcore2.0/pub @@ -26,4 +27,4 @@ examples/dotnetcore2.1/obj examples/dotnetcore2.1/pub examples/java/bin examples/java/build -java8/run/lambda-runtime-mock/target +examples/go1.x/handler From 477424479cef3d257fdd166a94787820e43dfd3d Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Mon, 25 Nov 2019 21:20:17 -0500 Subject: [PATCH 122/271] Update aws-sam-cli to 0.33.1 --- dotnetcore2.0/build/Dockerfile | 2 +- dotnetcore2.1/build/Dockerfile | 2 +- go1.x/build/Dockerfile | 2 +- java11/build/Dockerfile | 2 +- java8/build/Dockerfile | 2 +- nodejs10.x/build/Dockerfile | 2 +- nodejs12.x/build/Dockerfile | 2 +- nodejs4.3/build/Dockerfile | 2 +- nodejs6.10/build/Dockerfile | 2 +- nodejs8.10/build/Dockerfile | 2 +- provided/build/Dockerfile | 2 +- python3.6/build/Dockerfile | 2 +- python3.7/build/Dockerfile | 2 +- python3.8/build/Dockerfile | 2 +- ruby2.5/build/Dockerfile | 2 +- 15 files changed, 15 insertions(+), 15 deletions(-) diff --git a/dotnetcore2.0/build/Dockerfile b/dotnetcore2.0/build/Dockerfile index 9f2a67d7..bbc86ab0 100644 --- a/dotnetcore2.0/build/Dockerfile +++ b/dotnetcore2.0/build/Dockerfile @@ -20,6 +20,6 @@ RUN rm -rf /var/runtime /var/lang && \ rm -rf /tmp/warmup /tmp/NuGetScratch # Add these as a separate layer as they get updated frequently -RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.32.0 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.33.1 aws-lambda-builders==0.6.0 --no-cache-dir CMD ["dotnet", "build"] diff --git a/dotnetcore2.1/build/Dockerfile b/dotnetcore2.1/build/Dockerfile index 25645db1..39b059ca 100644 --- a/dotnetcore2.1/build/Dockerfile +++ b/dotnetcore2.1/build/Dockerfile @@ -21,7 +21,7 @@ RUN rm -rf /var/runtime /var/lang && \ rm -rf /tmp/warmup /tmp/NuGetScratch /tmp/.dotnet # Add these as a separate layer as they get updated frequently -RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.32.0 aws-lambda-builders==0.6.0 --no-cache-dir && \ +RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.33.1 aws-lambda-builders==0.6.0 --no-cache-dir && \ dotnet tool install --global Amazon.Lambda.Tools --version 3.3.1 CMD ["dotnet", "build"] diff --git a/go1.x/build/Dockerfile b/go1.x/build/Dockerfile index d3bcdcd3..cbc33886 100644 --- a/go1.x/build/Dockerfile +++ b/go1.x/build/Dockerfile @@ -16,6 +16,6 @@ RUN rm -rf /var/runtime /var/lang && \ go get golang.org/x/vgo # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.32.0 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.33.1 aws-lambda-builders==0.6.0 --no-cache-dir CMD ["dep", "ensure"] diff --git a/java11/build/Dockerfile b/java11/build/Dockerfile index 042f7f6c..eaa98035 100644 --- a/java11/build/Dockerfile +++ b/java11/build/Dockerfile @@ -14,4 +14,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ ENV PATH="/usr/local/gradle/gradle-6.0/bin:/usr/local/maven/apache-maven-3.6.2/bin:${PATH}" # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.32.0 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.33.1 aws-lambda-builders==0.6.0 --no-cache-dir diff --git a/java8/build/Dockerfile b/java8/build/Dockerfile index 78dc5fb4..3f060122 100644 --- a/java8/build/Dockerfile +++ b/java8/build/Dockerfile @@ -15,4 +15,4 @@ RUN rm -rf /var/runtime /var/lang && \ ENV PATH="/usr/local/gradle/gradle-6.0/bin:/usr/local/maven/apache-maven-3.6.2/bin:${PATH}" # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.32.0 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.33.1 aws-lambda-builders==0.6.0 --no-cache-dir diff --git a/nodejs10.x/build/Dockerfile b/nodejs10.x/build/Dockerfile index 822f1d2c..eb1af488 100644 --- a/nodejs10.x/build/Dockerfile +++ b/nodejs10.x/build/Dockerfile @@ -9,4 +9,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ curl https://lambci.s3.amazonaws.com/fs/nodejs10.x.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.32.0 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.33.1 aws-lambda-builders==0.6.0 --no-cache-dir diff --git a/nodejs12.x/build/Dockerfile b/nodejs12.x/build/Dockerfile index 443a2465..dd9abe74 100644 --- a/nodejs12.x/build/Dockerfile +++ b/nodejs12.x/build/Dockerfile @@ -9,4 +9,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ curl https://lambci.s3.amazonaws.com/fs/nodejs12.x.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.32.0 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.33.1 aws-lambda-builders==0.6.0 --no-cache-dir diff --git a/nodejs4.3/build/Dockerfile b/nodejs4.3/build/Dockerfile index 6f169309..1b87b1df 100644 --- a/nodejs4.3/build/Dockerfile +++ b/nodejs4.3/build/Dockerfile @@ -10,6 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs4.3.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.32.0 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.33.1 aws-lambda-builders==0.6.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/nodejs6.10/build/Dockerfile b/nodejs6.10/build/Dockerfile index e4af05c9..6a50ddd4 100644 --- a/nodejs6.10/build/Dockerfile +++ b/nodejs6.10/build/Dockerfile @@ -10,6 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs6.10.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.32.0 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.33.1 aws-lambda-builders==0.6.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/nodejs8.10/build/Dockerfile b/nodejs8.10/build/Dockerfile index 652bfdf3..d056582c 100644 --- a/nodejs8.10/build/Dockerfile +++ b/nodejs8.10/build/Dockerfile @@ -10,6 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs8.10.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.32.0 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.33.1 aws-lambda-builders==0.6.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/provided/build/Dockerfile b/provided/build/Dockerfile index fd272b08..a63968af 100644 --- a/provided/build/Dockerfile +++ b/provided/build/Dockerfile @@ -1,4 +1,4 @@ FROM lambci/lambda-base:build # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.32.0 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.33.1 aws-lambda-builders==0.6.0 --no-cache-dir diff --git a/python3.6/build/Dockerfile b/python3.6/build/Dockerfile index 0555a2f0..369a0edb 100644 --- a/python3.6/build/Dockerfile +++ b/python3.6/build/Dockerfile @@ -19,4 +19,4 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ - pip install -U awscli boto3 aws-sam-cli==0.32.0 aws-lambda-builders==0.6.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.33.1 aws-lambda-builders==0.6.0 --no-cache-dir diff --git a/python3.7/build/Dockerfile b/python3.7/build/Dockerfile index c795ff6e..aa53596c 100644 --- a/python3.7/build/Dockerfile +++ b/python3.7/build/Dockerfile @@ -12,4 +12,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ - pip install -U awscli boto3 aws-sam-cli==0.32.0 aws-lambda-builders==0.6.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.33.1 aws-lambda-builders==0.6.0 --no-cache-dir diff --git a/python3.8/build/Dockerfile b/python3.8/build/Dockerfile index e309560c..cfca1710 100644 --- a/python3.8/build/Dockerfile +++ b/python3.8/build/Dockerfile @@ -12,4 +12,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ - pip install -U awscli boto3 aws-sam-cli==0.32.0 aws-lambda-builders==0.6.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.33.1 aws-lambda-builders==0.6.0 --no-cache-dir diff --git a/ruby2.5/build/Dockerfile b/ruby2.5/build/Dockerfile index 0eb43d96..678e527c 100644 --- a/ruby2.5/build/Dockerfile +++ b/ruby2.5/build/Dockerfile @@ -13,4 +13,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN gem update --system --no-document && \ gem install --no-document bundler && \ - pip install -U awscli boto3 aws-sam-cli==0.32.0 aws-lambda-builders==0.6.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.33.1 aws-lambda-builders==0.6.0 --no-cache-dir From 90eb13bd9f5f543ab746f16308c5fe49e59c5ac9 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Thu, 28 Nov 2019 15:22:42 -0500 Subject: [PATCH 123/271] Update aws-sam-cli to 0.34.0 --- .npmignore | 2 ++ dotnetcore2.0/build/Dockerfile | 2 +- dotnetcore2.1/build/Dockerfile | 2 +- go1.x/build/Dockerfile | 2 +- java11/build/Dockerfile | 2 +- java8/build/Dockerfile | 2 +- nodejs10.x/build/Dockerfile | 2 +- nodejs12.x/build/Dockerfile | 2 +- nodejs4.3/build/Dockerfile | 2 +- nodejs6.10/build/Dockerfile | 2 +- nodejs8.10/build/Dockerfile | 2 +- provided/build/Dockerfile | 2 +- python3.6/build/Dockerfile | 2 +- python3.7/build/Dockerfile | 2 +- python3.8/build/Dockerfile | 2 +- ruby2.5/build/Dockerfile | 2 +- 16 files changed, 17 insertions(+), 15 deletions(-) diff --git a/.npmignore b/.npmignore index af0f539c..a802736e 100644 --- a/.npmignore +++ b/.npmignore @@ -5,3 +5,5 @@ python* java* go1* dotnetcore* +ruby* +provided diff --git a/dotnetcore2.0/build/Dockerfile b/dotnetcore2.0/build/Dockerfile index bbc86ab0..83305d36 100644 --- a/dotnetcore2.0/build/Dockerfile +++ b/dotnetcore2.0/build/Dockerfile @@ -20,6 +20,6 @@ RUN rm -rf /var/runtime /var/lang && \ rm -rf /tmp/warmup /tmp/NuGetScratch # Add these as a separate layer as they get updated frequently -RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.33.1 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.34.0 aws-lambda-builders==0.6.0 --no-cache-dir CMD ["dotnet", "build"] diff --git a/dotnetcore2.1/build/Dockerfile b/dotnetcore2.1/build/Dockerfile index 39b059ca..ff70ac96 100644 --- a/dotnetcore2.1/build/Dockerfile +++ b/dotnetcore2.1/build/Dockerfile @@ -21,7 +21,7 @@ RUN rm -rf /var/runtime /var/lang && \ rm -rf /tmp/warmup /tmp/NuGetScratch /tmp/.dotnet # Add these as a separate layer as they get updated frequently -RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.33.1 aws-lambda-builders==0.6.0 --no-cache-dir && \ +RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.34.0 aws-lambda-builders==0.6.0 --no-cache-dir && \ dotnet tool install --global Amazon.Lambda.Tools --version 3.3.1 CMD ["dotnet", "build"] diff --git a/go1.x/build/Dockerfile b/go1.x/build/Dockerfile index cbc33886..c35c43f7 100644 --- a/go1.x/build/Dockerfile +++ b/go1.x/build/Dockerfile @@ -16,6 +16,6 @@ RUN rm -rf /var/runtime /var/lang && \ go get golang.org/x/vgo # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.33.1 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.34.0 aws-lambda-builders==0.6.0 --no-cache-dir CMD ["dep", "ensure"] diff --git a/java11/build/Dockerfile b/java11/build/Dockerfile index eaa98035..76921ccb 100644 --- a/java11/build/Dockerfile +++ b/java11/build/Dockerfile @@ -14,4 +14,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ ENV PATH="/usr/local/gradle/gradle-6.0/bin:/usr/local/maven/apache-maven-3.6.2/bin:${PATH}" # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.33.1 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.34.0 aws-lambda-builders==0.6.0 --no-cache-dir diff --git a/java8/build/Dockerfile b/java8/build/Dockerfile index 3f060122..c2fdaec5 100644 --- a/java8/build/Dockerfile +++ b/java8/build/Dockerfile @@ -15,4 +15,4 @@ RUN rm -rf /var/runtime /var/lang && \ ENV PATH="/usr/local/gradle/gradle-6.0/bin:/usr/local/maven/apache-maven-3.6.2/bin:${PATH}" # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.33.1 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.34.0 aws-lambda-builders==0.6.0 --no-cache-dir diff --git a/nodejs10.x/build/Dockerfile b/nodejs10.x/build/Dockerfile index eb1af488..3bc4ef93 100644 --- a/nodejs10.x/build/Dockerfile +++ b/nodejs10.x/build/Dockerfile @@ -9,4 +9,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ curl https://lambci.s3.amazonaws.com/fs/nodejs10.x.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.33.1 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.34.0 aws-lambda-builders==0.6.0 --no-cache-dir diff --git a/nodejs12.x/build/Dockerfile b/nodejs12.x/build/Dockerfile index dd9abe74..6ab31d31 100644 --- a/nodejs12.x/build/Dockerfile +++ b/nodejs12.x/build/Dockerfile @@ -9,4 +9,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ curl https://lambci.s3.amazonaws.com/fs/nodejs12.x.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.33.1 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.34.0 aws-lambda-builders==0.6.0 --no-cache-dir diff --git a/nodejs4.3/build/Dockerfile b/nodejs4.3/build/Dockerfile index 1b87b1df..272a41fe 100644 --- a/nodejs4.3/build/Dockerfile +++ b/nodejs4.3/build/Dockerfile @@ -10,6 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs4.3.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.33.1 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.34.0 aws-lambda-builders==0.6.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/nodejs6.10/build/Dockerfile b/nodejs6.10/build/Dockerfile index 6a50ddd4..2b6b0342 100644 --- a/nodejs6.10/build/Dockerfile +++ b/nodejs6.10/build/Dockerfile @@ -10,6 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs6.10.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.33.1 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.34.0 aws-lambda-builders==0.6.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/nodejs8.10/build/Dockerfile b/nodejs8.10/build/Dockerfile index d056582c..c15050d7 100644 --- a/nodejs8.10/build/Dockerfile +++ b/nodejs8.10/build/Dockerfile @@ -10,6 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs8.10.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.33.1 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.34.0 aws-lambda-builders==0.6.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/provided/build/Dockerfile b/provided/build/Dockerfile index a63968af..1f99142d 100644 --- a/provided/build/Dockerfile +++ b/provided/build/Dockerfile @@ -1,4 +1,4 @@ FROM lambci/lambda-base:build # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.33.1 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.34.0 aws-lambda-builders==0.6.0 --no-cache-dir diff --git a/python3.6/build/Dockerfile b/python3.6/build/Dockerfile index 369a0edb..a2e8f77e 100644 --- a/python3.6/build/Dockerfile +++ b/python3.6/build/Dockerfile @@ -19,4 +19,4 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ - pip install -U awscli boto3 aws-sam-cli==0.33.1 aws-lambda-builders==0.6.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.34.0 aws-lambda-builders==0.6.0 --no-cache-dir diff --git a/python3.7/build/Dockerfile b/python3.7/build/Dockerfile index aa53596c..84b5038a 100644 --- a/python3.7/build/Dockerfile +++ b/python3.7/build/Dockerfile @@ -12,4 +12,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ - pip install -U awscli boto3 aws-sam-cli==0.33.1 aws-lambda-builders==0.6.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.34.0 aws-lambda-builders==0.6.0 --no-cache-dir diff --git a/python3.8/build/Dockerfile b/python3.8/build/Dockerfile index cfca1710..5f8d24d5 100644 --- a/python3.8/build/Dockerfile +++ b/python3.8/build/Dockerfile @@ -12,4 +12,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ - pip install -U awscli boto3 aws-sam-cli==0.33.1 aws-lambda-builders==0.6.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.34.0 aws-lambda-builders==0.6.0 --no-cache-dir diff --git a/ruby2.5/build/Dockerfile b/ruby2.5/build/Dockerfile index 678e527c..3d0a6fcd 100644 --- a/ruby2.5/build/Dockerfile +++ b/ruby2.5/build/Dockerfile @@ -13,4 +13,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN gem update --system --no-document && \ gem install --no-document bundler && \ - pip install -U awscli boto3 aws-sam-cli==0.33.1 aws-lambda-builders==0.6.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.34.0 aws-lambda-builders==0.6.0 --no-cache-dir From 2f584c4b0615c1e0a28b007380c800cb7d1a7e58 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Sat, 30 Nov 2019 22:05:13 -0500 Subject: [PATCH 124/271] Add file watching (#231) * Add SIGHUP handler to kill/restart bootstrap in provided runtime Fixes #229 * Add file watching to provided runtime Will kill/restart bootstrap if DOCKER_LAMBDA_WATCH env is set and files in /var/task or /opt change * If provided runtime is running bootstrap, just exit instead * Exit java8 runtime with error code 2 on SIGHUP or ConnectException * Exit nodejs4.3/6.10/8.10 runtimes with error code 2 on SIGHUP or ECONNRESET * Squash with java * Exit python2.7/3.6 runtimes with error code 2 on SIGHUP or connection error * Exit dotnetcore2.0/2.1 runtimes with error code 2 on SocketException --- .../run/MockBootstraps/MockRuntime.cs | 25 +++++- .../run/MockBootstraps/MockRuntime.cs | 25 +++++- .../java/lambdainternal/LambdaRuntime.java | 10 ++- nodejs4.3/run/awslambda-mock.js | 6 +- nodejs6.10/run/awslambda-mock.js | 6 +- nodejs8.10/run/awslambda-mock.js | 6 +- provided/run/go.mod | 1 + provided/run/go.sum | 4 + provided/run/init.go | 82 +++++++++++++++++-- python2.7/run/runtime_mock.py | 18 ++-- python3.6/run/runtime_mock.py | 18 ++-- 11 files changed, 168 insertions(+), 33 deletions(-) diff --git a/dotnetcore2.0/run/MockBootstraps/MockRuntime.cs b/dotnetcore2.0/run/MockBootstraps/MockRuntime.cs index fd7165e0..ca930389 100644 --- a/dotnetcore2.0/run/MockBootstraps/MockRuntime.cs +++ b/dotnetcore2.0/run/MockBootstraps/MockRuntime.cs @@ -109,7 +109,26 @@ unsafe InvokeData ILambdaRuntime.ReceiveInvoke(IDictionary initialEnvironmentVar { logs = ""; } - var result = client.GetAsync("http://127.0.0.1:9001/2018-06-01/runtime/invocation/next").Result; + HttpResponseMessage result = null; + try + { + result = client.GetAsync("http://127.0.0.1:9001/2018-06-01/runtime/invocation/next").Result; + } + catch (AggregateException ae) + { + if (ae.InnerException is HttpRequestException && ae.InnerException.InnerException != null && + (ae.InnerException.InnerException is SocketException || + // happens on dotnetcore2.0 + ae.InnerException.InnerException.GetType().ToString().Equals("System.Net.Http.CurlException"))) + { + System.Environment.Exit(context.StayOpen ? 2 : (invokeError == null ? 0 : 1)); + } + else + { + throw ae; + } + } + if (result.StatusCode != HttpStatusCode.OK) { throw new Exception("Got a bad response from the bootstrap"); @@ -185,12 +204,12 @@ public unsafe void ReportDone(string invokeId, string errorType, bool waitForExi } catch (AggregateException ae) { - if (!context.StayOpen && ae.InnerException is HttpRequestException && ae.InnerException.InnerException != null && + if (ae.InnerException is HttpRequestException && ae.InnerException.InnerException != null && (ae.InnerException.InnerException is SocketException || // happens on dotnetcore2.0 ae.InnerException.InnerException.GetType().ToString().Equals("System.Net.Http.CurlException"))) { - System.Environment.Exit(string.IsNullOrEmpty(errorType) && invokeError == null ? 0 : 1); + System.Environment.Exit(context.StayOpen ? 2 : (string.IsNullOrEmpty(errorType) && invokeError == null ? 0 : 1)); } else { diff --git a/dotnetcore2.1/run/MockBootstraps/MockRuntime.cs b/dotnetcore2.1/run/MockBootstraps/MockRuntime.cs index 248b628c..95635487 100644 --- a/dotnetcore2.1/run/MockBootstraps/MockRuntime.cs +++ b/dotnetcore2.1/run/MockBootstraps/MockRuntime.cs @@ -110,7 +110,26 @@ unsafe InvokeData ILambdaRuntime.ReceiveInvoke(IDictionary initialEnvironmentVar { logs = ""; } - var result = client.GetAsync("http://127.0.0.1:9001/2018-06-01/runtime/invocation/next").Result; + HttpResponseMessage result = null; + try + { + result = client.GetAsync("http://127.0.0.1:9001/2018-06-01/runtime/invocation/next").Result; + } + catch (AggregateException ae) + { + if (ae.InnerException is HttpRequestException && ae.InnerException.InnerException != null && + (ae.InnerException.InnerException is SocketException || + // happens on dotnetcore2.0 + ae.InnerException.InnerException.GetType().ToString().Equals("System.Net.Http.CurlException"))) + { + System.Environment.Exit(context.StayOpen ? 2 : (invokeError == null ? 0 : 1)); + } + else + { + throw ae; + } + } + if (result.StatusCode != HttpStatusCode.OK) { throw new Exception("Got a bad response from the bootstrap"); @@ -186,12 +205,12 @@ public unsafe void ReportDone(string invokeId, string errorType, bool waitForExi } catch (AggregateException ae) { - if (!context.StayOpen && ae.InnerException is HttpRequestException && ae.InnerException.InnerException != null && + if (ae.InnerException is HttpRequestException && ae.InnerException.InnerException != null && (ae.InnerException.InnerException is SocketException || // happens on dotnetcore2.0 ae.InnerException.InnerException.GetType().ToString().Equals("System.Net.Http.CurlException"))) { - System.Environment.Exit(string.IsNullOrEmpty(errorType) && invokeError == null ? 0 : 1); + System.Environment.Exit(context.StayOpen ? 2 : (string.IsNullOrEmpty(errorType) && invokeError == null ? 0 : 1)); } else { diff --git a/java8/run/lambda-runtime-mock/src/main/java/lambdainternal/LambdaRuntime.java b/java8/run/lambda-runtime-mock/src/main/java/lambdainternal/LambdaRuntime.java index b37c4510..d2b9df1a 100644 --- a/java8/run/lambda-runtime-mock/src/main/java/lambdainternal/LambdaRuntime.java +++ b/java8/run/lambda-runtime-mock/src/main/java/lambdainternal/LambdaRuntime.java @@ -22,6 +22,7 @@ import com.google.gson.Gson; import sun.misc.Unsafe; +import sun.misc.Signal; @SuppressWarnings("restriction") public class LambdaRuntime { @@ -99,6 +100,13 @@ public class LambdaRuntime { } catch (Exception e) { throw new RuntimeException(e); } + + Signal.handle(new Signal("HUP"), (Signal signal) -> { + if (STAY_OPEN) { + systemErr("SIGHUP received, exiting runtime..."); + System.exit(2); + } + }); } public static void initRuntime() { @@ -144,7 +152,7 @@ public static InvokeRequest waitForInvoke() { throw new RuntimeException("Unexpected status code from invocation/next: " + responseCode); } } catch (ConnectException e) { - System.exit(errored ? 1 : 0); + System.exit(STAY_OPEN ? 2 : (errored ? 1 : 0)); } String requestId = conn.getHeaderField("Lambda-Runtime-Aws-Request-Id"); deadlineMs = Long.parseLong(conn.getHeaderField("Lambda-Runtime-Deadline-Ms")); diff --git a/nodejs4.3/run/awslambda-mock.js b/nodejs4.3/run/awslambda-mock.js index c77a6096..dec5ee15 100644 --- a/nodejs4.3/run/awslambda-mock.js +++ b/nodejs4.3/run/awslambda-mock.js @@ -34,6 +34,10 @@ var DEADLINE_MS = Date.now() + (TIMEOUT * 1000) process.on('SIGINT', () => process.exit(0)) process.on('SIGTERM', () => process.exit(0)) +process.on('SIGHUP', () => { + systemErr("SIGHUP received, exiting runtime...") + process.exit(2) +}) // Don't think this can be done in the Docker image process.umask(2) @@ -134,7 +138,7 @@ module.exports = { }) }).on('error', err => { if (err.code === 'ECONNRESET') { - return process.exit(errored ? 1 : 0) + return process.exit(STAY_OPEN ? 2 : (errored ? 1 : 0)) } console.error(err) process.exit(1) diff --git a/nodejs6.10/run/awslambda-mock.js b/nodejs6.10/run/awslambda-mock.js index c77a6096..dec5ee15 100644 --- a/nodejs6.10/run/awslambda-mock.js +++ b/nodejs6.10/run/awslambda-mock.js @@ -34,6 +34,10 @@ var DEADLINE_MS = Date.now() + (TIMEOUT * 1000) process.on('SIGINT', () => process.exit(0)) process.on('SIGTERM', () => process.exit(0)) +process.on('SIGHUP', () => { + systemErr("SIGHUP received, exiting runtime...") + process.exit(2) +}) // Don't think this can be done in the Docker image process.umask(2) @@ -134,7 +138,7 @@ module.exports = { }) }).on('error', err => { if (err.code === 'ECONNRESET') { - return process.exit(errored ? 1 : 0) + return process.exit(STAY_OPEN ? 2 : (errored ? 1 : 0)) } console.error(err) process.exit(1) diff --git a/nodejs8.10/run/awslambda-mock.js b/nodejs8.10/run/awslambda-mock.js index ba211303..aaeab76f 100644 --- a/nodejs8.10/run/awslambda-mock.js +++ b/nodejs8.10/run/awslambda-mock.js @@ -34,6 +34,10 @@ var DEADLINE_MS = Date.now() + (TIMEOUT * 1000) process.on('SIGINT', () => process.exit(0)) process.on('SIGTERM', () => process.exit(0)) +process.on('SIGHUP', () => { + systemErr("SIGHUP received, exiting runtime...") + process.exit(2) +}) // Don't think this can be done in the Docker image process.umask(2) @@ -135,7 +139,7 @@ module.exports = { }) }).on('error', err => { if (err.code === 'ECONNRESET') { - return process.exit(errored ? 1 : 0) + return process.exit(STAY_OPEN ? 2 : (errored ? 1 : 0)) } console.error(err) process.exit(1) diff --git a/provided/run/go.mod b/provided/run/go.mod index 23a90256..e2aded75 100644 --- a/provided/run/go.mod +++ b/provided/run/go.mod @@ -3,6 +3,7 @@ module init require ( github.com/go-chi/chi v4.0.2+incompatible github.com/go-chi/render v1.0.1 + github.com/rjeczalik/notify v0.9.2 ) go 1.13 diff --git a/provided/run/go.sum b/provided/run/go.sum index 9efc7108..beef513a 100644 --- a/provided/run/go.sum +++ b/provided/run/go.sum @@ -2,3 +2,7 @@ github.com/go-chi/chi v4.0.2+incompatible h1:maB6vn6FqCxrpz4FqWdh4+lwpyZIQS7YEAU github.com/go-chi/chi v4.0.2+incompatible/go.mod h1:eB3wogJHnLi3x/kFX2A+IbTBlXxmMeXJVKy9tTv1XzQ= github.com/go-chi/render v1.0.1 h1:4/5tis2cKaNdnv9zFLfXzcquC9HbeZgCnxGnKrltBS8= github.com/go-chi/render v1.0.1/go.mod h1:pq4Rr7HbnsdaeHagklXub+p6Wd16Af5l9koip1OvJns= +github.com/rjeczalik/notify v0.9.2 h1:MiTWrPj55mNDHEiIX5YUSKefw/+lCQVoAFmD6oQm5w8= +github.com/rjeczalik/notify v0.9.2/go.mod h1:aErll2f0sUX9PXZnVNyeiObbmTlk5jnMoCa4QEjJeqM= +golang.org/x/sys v0.0.0-20180926160741-c2ed4eda69e7 h1:bit1t3mgdR35yN0cX0G8orgLtOuyL9Wqxa1mccLB0ig= +golang.org/x/sys v0.0.0-20180926160741-c2ed4eda69e7/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= diff --git a/provided/run/init.go b/provided/run/init.go index 4526d235..cd0dcd66 100644 --- a/provided/run/init.go +++ b/provided/run/init.go @@ -28,6 +28,7 @@ import ( "github.com/go-chi/chi" "github.com/go-chi/render" + "github.com/rjeczalik/notify" ) var logDebug = os.Getenv("DOCKER_LAMBDA_DEBUG") != "" @@ -36,6 +37,7 @@ var noBootstrap = os.Getenv("DOCKER_LAMBDA_NO_BOOTSTRAP") != "" var apiPort = getEnv("DOCKER_LAMBDA_API_PORT", "9001") var useStdin = os.Getenv("DOCKER_LAMBDA_USE_STDIN") != "" var noModifyLogs = os.Getenv("DOCKER_LAMBDA_NO_MODIFY_LOGS") != "" +var watchMode = os.Getenv("DOCKER_LAMBDA_WATCH") != "" var curState = "STATE_INIT" @@ -52,7 +54,7 @@ var curContext *mockLambdaContext var bootstrapCmd *exec.Cmd var initPrinted bool var eventChan chan *mockLambdaContext -var exited bool +var bootstrapExitedGracefully bool var bootstrapIsRunning bool var bootstrapPath *string var bootstrapArgs []string @@ -171,6 +173,10 @@ func main() { serverInitEnd = time.Now() if stayOpen { + if watchMode { + setupFileWatchers() + } + setupSighupHandler() systemLog(fmt.Sprintf("Lambda API listening on port %s...", apiPort)) <-interrupt } else { @@ -202,6 +208,36 @@ func main() { exit(exitCode) } +func setupSighupHandler() { + sighupReceiver := make(chan os.Signal, 1) + signal.Notify(sighupReceiver, syscall.SIGHUP) + go func() { + for { + <-sighupReceiver + systemLog(fmt.Sprintf("SIGHUP received, restarting bootstrap...")) + reboot() + } + }() +} + +func setupFileWatchers() { + fileWatcher := make(chan notify.EventInfo, 1) + if err := notify.Watch("/var/task/...", fileWatcher, notify.All); err != nil { + log.Fatal(err) + } + if err := notify.Watch("/opt/...", fileWatcher, notify.All); err != nil { + log.Fatal(err) + } + go func() { + for { + ei := <-fileWatcher + debug("Received notify event: ", ei) + systemLog(fmt.Sprintf("Handler/layer file changed, restarting bootstrap...")) + reboot() + } + }() +} + func formatOneLineJSON(body []byte) string { payloadObj := &json.RawMessage{} if json.Unmarshal(body, payloadObj) == nil { @@ -263,6 +299,7 @@ func ensureBootstrapIsRunning(context *mockLambdaContext) error { } bootstrapIsRunning = true + bootstrapExitedGracefully = false // Get an initial read of memory, and update when we finish context.MaxMem, _ = allProcsMemoryInMb() @@ -271,7 +308,7 @@ func ensureBootstrapIsRunning(context *mockLambdaContext) error { bootstrapCmd.Wait() bootstrapIsRunning = false curState = "STATE_INIT" - if !exited { + if !bootstrapExitedGracefully { // context may have changed, use curContext instead curContext.SetError(fmt.Errorf("Runtime exited without providing a reason")) } @@ -281,11 +318,23 @@ func ensureBootstrapIsRunning(context *mockLambdaContext) error { } func exit(exitCode int) { - exited = true + killBootstrap() + os.Exit(exitCode) +} + +func reboot() { + if noBootstrap { + os.Exit(2) + } else { + killBootstrap() + } +} + +func killBootstrap() { + bootstrapExitedGracefully = true if bootstrapCmd != nil && bootstrapCmd.Process != nil { syscall.Kill(-bootstrapCmd.Process.Pid, syscall.SIGKILL) } - os.Exit(exitCode) } func waitForContext(context *mockLambdaContext) { @@ -402,7 +451,7 @@ func createRuntimeRouter() *chi.Mux { r. With(updateState("STATE_INIT_ERROR")). Post("/init/error", func(w http.ResponseWriter, r *http.Request) { - debug("In /init/error...") + debug("In /init/error") curContext = <-eventChan handleErrorRequest(w, r) curContext.EndInvoke(nil) @@ -411,14 +460,28 @@ func createRuntimeRouter() *chi.Mux { r. With(updateState("STATE_INVOKE_NEXT")). Get("/invocation/next", func(w http.ResponseWriter, r *http.Request) { - debug("In /invocation/next...") + debug("In /invocation/next") + if curContext.Reply != nil { - debug("Reply is not nil...") + debug("Reply is not nil") curContext.EndInvoke(nil) } + + closeNotify := w.(http.CloseNotifier).CloseNotify() + go func() { + <-closeNotify + debug("Connection closed, sending ignore event") + eventChan <- &mockLambdaContext{Ignore: true} + }() + debug("Waiting for next event...") - curContext = <-eventChan - context := curContext + context := <-eventChan + if context.Ignore { + debug("Ignore event received, returning") + w.Write([]byte{}) + return + } + curContext = context context.LogStartRequest() w.Header().Set("Content-Type", "application/json") @@ -732,6 +795,7 @@ type mockLambdaContext struct { LogTail string // base64 encoded tail, no greater than 4096 bytes ErrorType string // Unhandled vs Handled Ended bool + Ignore bool } func (mc *mockLambdaContext) ParseTimeout() { diff --git a/python2.7/run/runtime_mock.py b/python2.7/run/runtime_mock.py index 21e65420..59f428cf 100644 --- a/python2.7/run/runtime_mock.py +++ b/python2.7/run/runtime_mock.py @@ -20,9 +20,6 @@ from httplib import HTTPConnection -signal.signal(signal.SIGINT, lambda x, y: sys.exit(0)) -signal.signal(signal.SIGTERM, lambda x, y: sys.exit(0)) - ORIG_STDOUT = sys.stdout ORIG_STDERR = sys.stderr @@ -100,6 +97,15 @@ MOCKSERVER_CONN = HTTPConnection("127.0.0.1", 9001) +def sighup_handler(signum, frame): + eprint("SIGHUP received, exiting runtime...") + sys.exit(2) + +signal.signal(signal.SIGINT, lambda x, y: sys.exit(0)) +signal.signal(signal.SIGTERM, lambda x, y: sys.exit(0)) +signal.signal(signal.SIGHUP, sighup_handler) + + def eprint(*args, **kwargs): print(*args, file=ORIG_STDERR, **kwargs) @@ -181,10 +187,8 @@ def receive_invoke(): if resp.status != 200: raise Exception("/invocation/next return status %d" % resp.status) except Exception: - if INVOKED and not STAY_OPEN: - sys.exit(1 if ERRORED else 0) - return () - raise + sys.exit(2 if STAY_OPEN else (1 if ERRORED else 0)) + return () INVOKEID = resp.getheader('Lambda-Runtime-Aws-Request-Id') DEADLINE_MS = int(resp.getheader('Lambda-Runtime-Deadline-Ms')) diff --git a/python3.6/run/runtime_mock.py b/python3.6/run/runtime_mock.py index 21e65420..59f428cf 100644 --- a/python3.6/run/runtime_mock.py +++ b/python3.6/run/runtime_mock.py @@ -20,9 +20,6 @@ from httplib import HTTPConnection -signal.signal(signal.SIGINT, lambda x, y: sys.exit(0)) -signal.signal(signal.SIGTERM, lambda x, y: sys.exit(0)) - ORIG_STDOUT = sys.stdout ORIG_STDERR = sys.stderr @@ -100,6 +97,15 @@ MOCKSERVER_CONN = HTTPConnection("127.0.0.1", 9001) +def sighup_handler(signum, frame): + eprint("SIGHUP received, exiting runtime...") + sys.exit(2) + +signal.signal(signal.SIGINT, lambda x, y: sys.exit(0)) +signal.signal(signal.SIGTERM, lambda x, y: sys.exit(0)) +signal.signal(signal.SIGHUP, sighup_handler) + + def eprint(*args, **kwargs): print(*args, file=ORIG_STDERR, **kwargs) @@ -181,10 +187,8 @@ def receive_invoke(): if resp.status != 200: raise Exception("/invocation/next return status %d" % resp.status) except Exception: - if INVOKED and not STAY_OPEN: - sys.exit(1 if ERRORED else 0) - return () - raise + sys.exit(2 if STAY_OPEN else (1 if ERRORED else 0)) + return () INVOKEID = resp.getheader('Lambda-Runtime-Aws-Request-Id') DEADLINE_MS = int(resp.getheader('Lambda-Runtime-Deadline-Ms')) From 9120f60814877a116e7fd679fc90ebc8e7f8205c Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Sat, 30 Nov 2019 22:43:42 -0500 Subject: [PATCH 125/271] Add documentation for watch mode to README --- README.md | 57 +++++++++++++++++++++++++++++++++++++++---------------- 1 file changed, 41 insertions(+), 16 deletions(-) diff --git a/README.md b/README.md index 40516d57..ef4f8266 100644 --- a/README.md +++ b/README.md @@ -104,18 +104,51 @@ You can change the internal API port from `9001` by passing `-e DOCKER_LAMBDA_AP #### Developing in "stay-open" mode -While you're developing, you'll want the server to restart every time you make a change to your Lambda. -You can automate this with a file-watching utility like [entr](https://github.com/eradman/entr) or [nodemon](https://nodemon.io/): +docker-lambda can watch for changes to your handler (and layer) code and restart the internal bootstrap process +so you can always invoke the latest version of your code without needing to shutdown the container. -```sh -# you can `brew install entr` on macOS -find . | entr -r docker run --rm \ - -e DOCKER_LAMBDA_STAY_OPEN=1 -p 9001:9001 \ +To enable this, pass `-e DOCKER_LAMBDA_WATCH=1` to `docker run`: + +``` +docker run --rm \ + -e DOCKER_LAMBDA_WATCH=1 -e DOCKER_LAMBDA_STAY_OPEN=1 -p 9001:9001 \ -v "$PWD":/var/task:ro,delegated \ - lambci/lambda:go1.x handler + lambci/lambda:java11 handler ``` -Or +Then when you make changes to any file in the mounted directory, you'll see: + +``` +Handler/layer file changed, restarting bootstrap... +``` + +And the next invoke will reload your handler with the latest version of your code. + +NOTE: This doesn't work in exactly the same way with some of the older runtimes due to the way they're loaded. Specifically: `nodejs8.10` and earlier, `python3.6` and earlier, `dotnetcore2.1` and earlier, `java8` and `go1.x`. These runtimes will instead exit with error code 2 +when they are in watch mode and files in the handler or layer are changed. + +That way you can use the `--restart on-failure` capabilities of `docker run` to have the container automatically restart instead. + +So, for `nodejs8.10`, `nodejs6.10`, `nodejs4.3`, `python3.6`, `python2.7`, `dotnetcore2.1`, `dotnetcore2.0`, `java8` and `go1.x`, you'll +need to run watch mode like this instead: + +``` +docker run --restart on-failure \ + -e DOCKER_LAMBDA_WATCH=1 -e DOCKER_LAMBDA_STAY_OPEN=1 -p 9001:9001 \ + -v "$PWD":/var/task:ro,delegated \ + lambci/lambda:java8 handler +``` + +When you make changes to any file in the mounted directory, you'll see: + +``` +Handler/layer file changed, restarting bootstrap... +``` + +And then the docker container will restart. See the [Docker documentation](https://docs.docker.com/engine/reference/commandline/run/#restart-policies---restart) for more details. Your terminal may get detached, but the container should still be running and the +API should have restarted. You can do `docker ps` to find the container ID and then `docker attach ` to reattach if you wish. + +If none of the above strategies work for you, you can use a file-watching utility like [nodemon](https://nodemon.io/): ```sh # npm install -g nodemon @@ -125,14 +158,6 @@ nodemon -w ./ -e '' -s SIGINT -x docker -- run --rm \ lambci/lambda:go1.x handler ``` -Both commands above assume your handler is in the current directory, and the container -will restart whenever there are changes to any files in it or its subdirectories. - -Some other file-watching utilities include -[fswatch](https://github.com/emcrisostomo/fswatch), -[watchman](https://facebook.github.io/watchman/) and -[watchdog](https://github.com/gorakhargosh/watchdog#shell-utilities) (Python) - ### Building Lambda functions The build images have a [number of extra system packages installed](#build-environment) From 972e3e1fb117bd8c7ef2c43143e45db09e1824fb Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Sat, 30 Nov 2019 22:45:21 -0500 Subject: [PATCH 126/271] Exit go1.x runtime with error code 2 on SIGHUP or EOF --- go1.x/run/aws-lambda-mock.go | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/go1.x/run/aws-lambda-mock.go b/go1.x/run/aws-lambda-mock.go index fde4d947..103a52d9 100644 --- a/go1.x/run/aws-lambda-mock.go +++ b/go1.x/run/aws-lambda-mock.go @@ -17,6 +17,7 @@ import ( "net/url" "os" "os/exec" + "os/signal" "reflect" "regexp" "strconv" @@ -90,6 +91,7 @@ func main() { os.Setenv("_HANDLER", handler) var err error + var errored bool var mockServerCmd = exec.Command("/var/runtime/mockserver") mockServerCmd.Env = append(os.Environ(), @@ -211,6 +213,14 @@ func main() { time.Sleep(5 * time.Millisecond) } + sighupReceiver := make(chan os.Signal, 1) + signal.Notify(sighupReceiver, syscall.SIGHUP) + go func() { + <-sighupReceiver + fmt.Fprintln(os.Stderr, ("SIGHUP received, exiting runtime...")) + os.Exit(2) + }() + var initEndSent bool var invoked bool var receivedInvokeAt time.Time @@ -227,6 +237,13 @@ func main() { if err != nil { if uerr, ok := err.(*url.Error); ok { if uerr.Unwrap().Error() == "EOF" { + if stayOpen { + os.Exit(2) + } else if errored { + os.Exit(1) + } else { + os.Exit(0) + } return } } @@ -278,12 +295,15 @@ func main() { initEnd = time.Now() } + errored = false + var reply *messages.InvokeResponse err = client.Call("Function.Invoke", invokeRequest, &reply) suffix := "/response" payload := reply.Payload if err != nil || reply.Error != nil { + errored = true suffix = "/error" var lambdaErr lambdaError if err != nil { From f84d18031b3ac8111dbdf243c029948446f3ee35 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Mon, 2 Dec 2019 18:37:51 -0500 Subject: [PATCH 127/271] Update aws-sam-cli to 0.35.0 --- dotnetcore2.0/build/Dockerfile | 2 +- dotnetcore2.1/build/Dockerfile | 2 +- go1.x/build/Dockerfile | 2 +- java11/build/Dockerfile | 2 +- java8/build/Dockerfile | 2 +- nodejs10.x/build/Dockerfile | 2 +- nodejs12.x/build/Dockerfile | 2 +- nodejs4.3/build/Dockerfile | 2 +- nodejs6.10/build/Dockerfile | 2 +- nodejs8.10/build/Dockerfile | 2 +- provided/build/Dockerfile | 2 +- python3.6/build/Dockerfile | 2 +- python3.7/build/Dockerfile | 2 +- python3.8/build/Dockerfile | 2 +- ruby2.5/build/Dockerfile | 2 +- 15 files changed, 15 insertions(+), 15 deletions(-) diff --git a/dotnetcore2.0/build/Dockerfile b/dotnetcore2.0/build/Dockerfile index 83305d36..4188e4a7 100644 --- a/dotnetcore2.0/build/Dockerfile +++ b/dotnetcore2.0/build/Dockerfile @@ -20,6 +20,6 @@ RUN rm -rf /var/runtime /var/lang && \ rm -rf /tmp/warmup /tmp/NuGetScratch # Add these as a separate layer as they get updated frequently -RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.34.0 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.35.0 aws-lambda-builders==0.6.0 --no-cache-dir CMD ["dotnet", "build"] diff --git a/dotnetcore2.1/build/Dockerfile b/dotnetcore2.1/build/Dockerfile index ff70ac96..3175d1cd 100644 --- a/dotnetcore2.1/build/Dockerfile +++ b/dotnetcore2.1/build/Dockerfile @@ -21,7 +21,7 @@ RUN rm -rf /var/runtime /var/lang && \ rm -rf /tmp/warmup /tmp/NuGetScratch /tmp/.dotnet # Add these as a separate layer as they get updated frequently -RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.34.0 aws-lambda-builders==0.6.0 --no-cache-dir && \ +RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.35.0 aws-lambda-builders==0.6.0 --no-cache-dir && \ dotnet tool install --global Amazon.Lambda.Tools --version 3.3.1 CMD ["dotnet", "build"] diff --git a/go1.x/build/Dockerfile b/go1.x/build/Dockerfile index c35c43f7..91c5030e 100644 --- a/go1.x/build/Dockerfile +++ b/go1.x/build/Dockerfile @@ -16,6 +16,6 @@ RUN rm -rf /var/runtime /var/lang && \ go get golang.org/x/vgo # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.34.0 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.35.0 aws-lambda-builders==0.6.0 --no-cache-dir CMD ["dep", "ensure"] diff --git a/java11/build/Dockerfile b/java11/build/Dockerfile index 76921ccb..0e83a777 100644 --- a/java11/build/Dockerfile +++ b/java11/build/Dockerfile @@ -14,4 +14,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ ENV PATH="/usr/local/gradle/gradle-6.0/bin:/usr/local/maven/apache-maven-3.6.2/bin:${PATH}" # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.34.0 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.35.0 aws-lambda-builders==0.6.0 --no-cache-dir diff --git a/java8/build/Dockerfile b/java8/build/Dockerfile index c2fdaec5..4e0cc761 100644 --- a/java8/build/Dockerfile +++ b/java8/build/Dockerfile @@ -15,4 +15,4 @@ RUN rm -rf /var/runtime /var/lang && \ ENV PATH="/usr/local/gradle/gradle-6.0/bin:/usr/local/maven/apache-maven-3.6.2/bin:${PATH}" # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.34.0 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.35.0 aws-lambda-builders==0.6.0 --no-cache-dir diff --git a/nodejs10.x/build/Dockerfile b/nodejs10.x/build/Dockerfile index 3bc4ef93..35d3115a 100644 --- a/nodejs10.x/build/Dockerfile +++ b/nodejs10.x/build/Dockerfile @@ -9,4 +9,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ curl https://lambci.s3.amazonaws.com/fs/nodejs10.x.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.34.0 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.35.0 aws-lambda-builders==0.6.0 --no-cache-dir diff --git a/nodejs12.x/build/Dockerfile b/nodejs12.x/build/Dockerfile index 6ab31d31..ec438a78 100644 --- a/nodejs12.x/build/Dockerfile +++ b/nodejs12.x/build/Dockerfile @@ -9,4 +9,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ curl https://lambci.s3.amazonaws.com/fs/nodejs12.x.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.34.0 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.35.0 aws-lambda-builders==0.6.0 --no-cache-dir diff --git a/nodejs4.3/build/Dockerfile b/nodejs4.3/build/Dockerfile index 272a41fe..f0092af4 100644 --- a/nodejs4.3/build/Dockerfile +++ b/nodejs4.3/build/Dockerfile @@ -10,6 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs4.3.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.34.0 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.35.0 aws-lambda-builders==0.6.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/nodejs6.10/build/Dockerfile b/nodejs6.10/build/Dockerfile index 2b6b0342..38219ce0 100644 --- a/nodejs6.10/build/Dockerfile +++ b/nodejs6.10/build/Dockerfile @@ -10,6 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs6.10.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.34.0 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.35.0 aws-lambda-builders==0.6.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/nodejs8.10/build/Dockerfile b/nodejs8.10/build/Dockerfile index c15050d7..930d7c24 100644 --- a/nodejs8.10/build/Dockerfile +++ b/nodejs8.10/build/Dockerfile @@ -10,6 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs8.10.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.34.0 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.35.0 aws-lambda-builders==0.6.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/provided/build/Dockerfile b/provided/build/Dockerfile index 1f99142d..d7c11be2 100644 --- a/provided/build/Dockerfile +++ b/provided/build/Dockerfile @@ -1,4 +1,4 @@ FROM lambci/lambda-base:build # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.34.0 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.35.0 aws-lambda-builders==0.6.0 --no-cache-dir diff --git a/python3.6/build/Dockerfile b/python3.6/build/Dockerfile index a2e8f77e..7462f471 100644 --- a/python3.6/build/Dockerfile +++ b/python3.6/build/Dockerfile @@ -19,4 +19,4 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ - pip install -U awscli boto3 aws-sam-cli==0.34.0 aws-lambda-builders==0.6.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.35.0 aws-lambda-builders==0.6.0 --no-cache-dir diff --git a/python3.7/build/Dockerfile b/python3.7/build/Dockerfile index 84b5038a..73a379f1 100644 --- a/python3.7/build/Dockerfile +++ b/python3.7/build/Dockerfile @@ -12,4 +12,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ - pip install -U awscli boto3 aws-sam-cli==0.34.0 aws-lambda-builders==0.6.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.35.0 aws-lambda-builders==0.6.0 --no-cache-dir diff --git a/python3.8/build/Dockerfile b/python3.8/build/Dockerfile index 5f8d24d5..ccd18729 100644 --- a/python3.8/build/Dockerfile +++ b/python3.8/build/Dockerfile @@ -12,4 +12,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ - pip install -U awscli boto3 aws-sam-cli==0.34.0 aws-lambda-builders==0.6.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.35.0 aws-lambda-builders==0.6.0 --no-cache-dir diff --git a/ruby2.5/build/Dockerfile b/ruby2.5/build/Dockerfile index 3d0a6fcd..5982cfa0 100644 --- a/ruby2.5/build/Dockerfile +++ b/ruby2.5/build/Dockerfile @@ -13,4 +13,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN gem update --system --no-document && \ gem install --no-document bundler && \ - pip install -U awscli boto3 aws-sam-cli==0.34.0 aws-lambda-builders==0.6.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.35.0 aws-lambda-builders==0.6.0 --no-cache-dir From bd19d5f3b91831be87e4c3cad5dad1f7f3da3979 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Tue, 3 Dec 2019 19:35:14 -0500 Subject: [PATCH 128/271] Update aws-sam-cli to 0.36.0 --- dotnetcore2.0/build/Dockerfile | 2 +- dotnetcore2.1/build/Dockerfile | 2 +- go1.x/build/Dockerfile | 2 +- java11/build/Dockerfile | 2 +- java8/build/Dockerfile | 2 +- nodejs10.x/build/Dockerfile | 2 +- nodejs12.x/build/Dockerfile | 2 +- nodejs4.3/build/Dockerfile | 2 +- nodejs6.10/build/Dockerfile | 2 +- nodejs8.10/build/Dockerfile | 2 +- provided/build/Dockerfile | 2 +- python3.6/build/Dockerfile | 2 +- python3.7/build/Dockerfile | 2 +- python3.8/build/Dockerfile | 2 +- ruby2.5/build/Dockerfile | 2 +- 15 files changed, 15 insertions(+), 15 deletions(-) diff --git a/dotnetcore2.0/build/Dockerfile b/dotnetcore2.0/build/Dockerfile index 4188e4a7..585d0528 100644 --- a/dotnetcore2.0/build/Dockerfile +++ b/dotnetcore2.0/build/Dockerfile @@ -20,6 +20,6 @@ RUN rm -rf /var/runtime /var/lang && \ rm -rf /tmp/warmup /tmp/NuGetScratch # Add these as a separate layer as they get updated frequently -RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.35.0 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.36.0 aws-lambda-builders==0.6.0 --no-cache-dir CMD ["dotnet", "build"] diff --git a/dotnetcore2.1/build/Dockerfile b/dotnetcore2.1/build/Dockerfile index 3175d1cd..e92a01d7 100644 --- a/dotnetcore2.1/build/Dockerfile +++ b/dotnetcore2.1/build/Dockerfile @@ -21,7 +21,7 @@ RUN rm -rf /var/runtime /var/lang && \ rm -rf /tmp/warmup /tmp/NuGetScratch /tmp/.dotnet # Add these as a separate layer as they get updated frequently -RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.35.0 aws-lambda-builders==0.6.0 --no-cache-dir && \ +RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.36.0 aws-lambda-builders==0.6.0 --no-cache-dir && \ dotnet tool install --global Amazon.Lambda.Tools --version 3.3.1 CMD ["dotnet", "build"] diff --git a/go1.x/build/Dockerfile b/go1.x/build/Dockerfile index 91c5030e..5624f400 100644 --- a/go1.x/build/Dockerfile +++ b/go1.x/build/Dockerfile @@ -16,6 +16,6 @@ RUN rm -rf /var/runtime /var/lang && \ go get golang.org/x/vgo # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.35.0 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.36.0 aws-lambda-builders==0.6.0 --no-cache-dir CMD ["dep", "ensure"] diff --git a/java11/build/Dockerfile b/java11/build/Dockerfile index 0e83a777..f06f3550 100644 --- a/java11/build/Dockerfile +++ b/java11/build/Dockerfile @@ -14,4 +14,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ ENV PATH="/usr/local/gradle/gradle-6.0/bin:/usr/local/maven/apache-maven-3.6.2/bin:${PATH}" # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.35.0 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.36.0 aws-lambda-builders==0.6.0 --no-cache-dir diff --git a/java8/build/Dockerfile b/java8/build/Dockerfile index 4e0cc761..aeffe33a 100644 --- a/java8/build/Dockerfile +++ b/java8/build/Dockerfile @@ -15,4 +15,4 @@ RUN rm -rf /var/runtime /var/lang && \ ENV PATH="/usr/local/gradle/gradle-6.0/bin:/usr/local/maven/apache-maven-3.6.2/bin:${PATH}" # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.35.0 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.36.0 aws-lambda-builders==0.6.0 --no-cache-dir diff --git a/nodejs10.x/build/Dockerfile b/nodejs10.x/build/Dockerfile index 35d3115a..0756a384 100644 --- a/nodejs10.x/build/Dockerfile +++ b/nodejs10.x/build/Dockerfile @@ -9,4 +9,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ curl https://lambci.s3.amazonaws.com/fs/nodejs10.x.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.35.0 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.36.0 aws-lambda-builders==0.6.0 --no-cache-dir diff --git a/nodejs12.x/build/Dockerfile b/nodejs12.x/build/Dockerfile index ec438a78..59870301 100644 --- a/nodejs12.x/build/Dockerfile +++ b/nodejs12.x/build/Dockerfile @@ -9,4 +9,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ curl https://lambci.s3.amazonaws.com/fs/nodejs12.x.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.35.0 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.36.0 aws-lambda-builders==0.6.0 --no-cache-dir diff --git a/nodejs4.3/build/Dockerfile b/nodejs4.3/build/Dockerfile index f0092af4..3779cb9c 100644 --- a/nodejs4.3/build/Dockerfile +++ b/nodejs4.3/build/Dockerfile @@ -10,6 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs4.3.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.35.0 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.36.0 aws-lambda-builders==0.6.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/nodejs6.10/build/Dockerfile b/nodejs6.10/build/Dockerfile index 38219ce0..3188ec55 100644 --- a/nodejs6.10/build/Dockerfile +++ b/nodejs6.10/build/Dockerfile @@ -10,6 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs6.10.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.35.0 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.36.0 aws-lambda-builders==0.6.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/nodejs8.10/build/Dockerfile b/nodejs8.10/build/Dockerfile index 930d7c24..d6d4ad90 100644 --- a/nodejs8.10/build/Dockerfile +++ b/nodejs8.10/build/Dockerfile @@ -10,6 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs8.10.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.35.0 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.36.0 aws-lambda-builders==0.6.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/provided/build/Dockerfile b/provided/build/Dockerfile index d7c11be2..98c98973 100644 --- a/provided/build/Dockerfile +++ b/provided/build/Dockerfile @@ -1,4 +1,4 @@ FROM lambci/lambda-base:build # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.35.0 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.36.0 aws-lambda-builders==0.6.0 --no-cache-dir diff --git a/python3.6/build/Dockerfile b/python3.6/build/Dockerfile index 7462f471..d1242f22 100644 --- a/python3.6/build/Dockerfile +++ b/python3.6/build/Dockerfile @@ -19,4 +19,4 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ - pip install -U awscli boto3 aws-sam-cli==0.35.0 aws-lambda-builders==0.6.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.36.0 aws-lambda-builders==0.6.0 --no-cache-dir diff --git a/python3.7/build/Dockerfile b/python3.7/build/Dockerfile index 73a379f1..6cc3ab8b 100644 --- a/python3.7/build/Dockerfile +++ b/python3.7/build/Dockerfile @@ -12,4 +12,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ - pip install -U awscli boto3 aws-sam-cli==0.35.0 aws-lambda-builders==0.6.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.36.0 aws-lambda-builders==0.6.0 --no-cache-dir diff --git a/python3.8/build/Dockerfile b/python3.8/build/Dockerfile index ccd18729..ad8b8cd3 100644 --- a/python3.8/build/Dockerfile +++ b/python3.8/build/Dockerfile @@ -12,4 +12,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ - pip install -U awscli boto3 aws-sam-cli==0.35.0 aws-lambda-builders==0.6.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.36.0 aws-lambda-builders==0.6.0 --no-cache-dir diff --git a/ruby2.5/build/Dockerfile b/ruby2.5/build/Dockerfile index 5982cfa0..a908039f 100644 --- a/ruby2.5/build/Dockerfile +++ b/ruby2.5/build/Dockerfile @@ -13,4 +13,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN gem update --system --no-document && \ gem install --no-document bundler && \ - pip install -U awscli boto3 aws-sam-cli==0.35.0 aws-lambda-builders==0.6.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.36.0 aws-lambda-builders==0.6.0 --no-cache-dir From 691726ac698909717cdaee1c7d72c6aaf18d0578 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Wed, 4 Dec 2019 16:41:19 -0500 Subject: [PATCH 129/271] Update aws-sam-cli to 0.37.0 --- dotnetcore2.0/build/Dockerfile | 2 +- dotnetcore2.1/build/Dockerfile | 2 +- go1.x/build/Dockerfile | 2 +- java11/build/Dockerfile | 2 +- java8/build/Dockerfile | 2 +- nodejs10.x/build/Dockerfile | 2 +- nodejs12.x/build/Dockerfile | 2 +- nodejs4.3/build/Dockerfile | 2 +- nodejs6.10/build/Dockerfile | 2 +- nodejs8.10/build/Dockerfile | 2 +- provided/build/Dockerfile | 2 +- python3.6/build/Dockerfile | 2 +- python3.7/build/Dockerfile | 2 +- python3.8/build/Dockerfile | 2 +- ruby2.5/build/Dockerfile | 2 +- 15 files changed, 15 insertions(+), 15 deletions(-) diff --git a/dotnetcore2.0/build/Dockerfile b/dotnetcore2.0/build/Dockerfile index 585d0528..79b7dafc 100644 --- a/dotnetcore2.0/build/Dockerfile +++ b/dotnetcore2.0/build/Dockerfile @@ -20,6 +20,6 @@ RUN rm -rf /var/runtime /var/lang && \ rm -rf /tmp/warmup /tmp/NuGetScratch # Add these as a separate layer as they get updated frequently -RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.36.0 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.37.0 aws-lambda-builders==0.6.0 --no-cache-dir CMD ["dotnet", "build"] diff --git a/dotnetcore2.1/build/Dockerfile b/dotnetcore2.1/build/Dockerfile index e92a01d7..47c51392 100644 --- a/dotnetcore2.1/build/Dockerfile +++ b/dotnetcore2.1/build/Dockerfile @@ -21,7 +21,7 @@ RUN rm -rf /var/runtime /var/lang && \ rm -rf /tmp/warmup /tmp/NuGetScratch /tmp/.dotnet # Add these as a separate layer as they get updated frequently -RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.36.0 aws-lambda-builders==0.6.0 --no-cache-dir && \ +RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.37.0 aws-lambda-builders==0.6.0 --no-cache-dir && \ dotnet tool install --global Amazon.Lambda.Tools --version 3.3.1 CMD ["dotnet", "build"] diff --git a/go1.x/build/Dockerfile b/go1.x/build/Dockerfile index 5624f400..52946f19 100644 --- a/go1.x/build/Dockerfile +++ b/go1.x/build/Dockerfile @@ -16,6 +16,6 @@ RUN rm -rf /var/runtime /var/lang && \ go get golang.org/x/vgo # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.36.0 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.37.0 aws-lambda-builders==0.6.0 --no-cache-dir CMD ["dep", "ensure"] diff --git a/java11/build/Dockerfile b/java11/build/Dockerfile index f06f3550..3d39b7e9 100644 --- a/java11/build/Dockerfile +++ b/java11/build/Dockerfile @@ -14,4 +14,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ ENV PATH="/usr/local/gradle/gradle-6.0/bin:/usr/local/maven/apache-maven-3.6.2/bin:${PATH}" # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.36.0 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.37.0 aws-lambda-builders==0.6.0 --no-cache-dir diff --git a/java8/build/Dockerfile b/java8/build/Dockerfile index aeffe33a..4924b255 100644 --- a/java8/build/Dockerfile +++ b/java8/build/Dockerfile @@ -15,4 +15,4 @@ RUN rm -rf /var/runtime /var/lang && \ ENV PATH="/usr/local/gradle/gradle-6.0/bin:/usr/local/maven/apache-maven-3.6.2/bin:${PATH}" # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.36.0 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.37.0 aws-lambda-builders==0.6.0 --no-cache-dir diff --git a/nodejs10.x/build/Dockerfile b/nodejs10.x/build/Dockerfile index 0756a384..b09d8e02 100644 --- a/nodejs10.x/build/Dockerfile +++ b/nodejs10.x/build/Dockerfile @@ -9,4 +9,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ curl https://lambci.s3.amazonaws.com/fs/nodejs10.x.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.36.0 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.37.0 aws-lambda-builders==0.6.0 --no-cache-dir diff --git a/nodejs12.x/build/Dockerfile b/nodejs12.x/build/Dockerfile index 59870301..a201770e 100644 --- a/nodejs12.x/build/Dockerfile +++ b/nodejs12.x/build/Dockerfile @@ -9,4 +9,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ curl https://lambci.s3.amazonaws.com/fs/nodejs12.x.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.36.0 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.37.0 aws-lambda-builders==0.6.0 --no-cache-dir diff --git a/nodejs4.3/build/Dockerfile b/nodejs4.3/build/Dockerfile index 3779cb9c..21ed9226 100644 --- a/nodejs4.3/build/Dockerfile +++ b/nodejs4.3/build/Dockerfile @@ -10,6 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs4.3.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.36.0 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.37.0 aws-lambda-builders==0.6.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/nodejs6.10/build/Dockerfile b/nodejs6.10/build/Dockerfile index 3188ec55..206b01c2 100644 --- a/nodejs6.10/build/Dockerfile +++ b/nodejs6.10/build/Dockerfile @@ -10,6 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs6.10.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.36.0 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.37.0 aws-lambda-builders==0.6.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/nodejs8.10/build/Dockerfile b/nodejs8.10/build/Dockerfile index d6d4ad90..fbae7dec 100644 --- a/nodejs8.10/build/Dockerfile +++ b/nodejs8.10/build/Dockerfile @@ -10,6 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs8.10.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.36.0 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.37.0 aws-lambda-builders==0.6.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/provided/build/Dockerfile b/provided/build/Dockerfile index 98c98973..550086c0 100644 --- a/provided/build/Dockerfile +++ b/provided/build/Dockerfile @@ -1,4 +1,4 @@ FROM lambci/lambda-base:build # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.36.0 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.37.0 aws-lambda-builders==0.6.0 --no-cache-dir diff --git a/python3.6/build/Dockerfile b/python3.6/build/Dockerfile index d1242f22..5c1d4850 100644 --- a/python3.6/build/Dockerfile +++ b/python3.6/build/Dockerfile @@ -19,4 +19,4 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ - pip install -U awscli boto3 aws-sam-cli==0.36.0 aws-lambda-builders==0.6.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.37.0 aws-lambda-builders==0.6.0 --no-cache-dir diff --git a/python3.7/build/Dockerfile b/python3.7/build/Dockerfile index 6cc3ab8b..1a0226b6 100644 --- a/python3.7/build/Dockerfile +++ b/python3.7/build/Dockerfile @@ -12,4 +12,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ - pip install -U awscli boto3 aws-sam-cli==0.36.0 aws-lambda-builders==0.6.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.37.0 aws-lambda-builders==0.6.0 --no-cache-dir diff --git a/python3.8/build/Dockerfile b/python3.8/build/Dockerfile index ad8b8cd3..d3664528 100644 --- a/python3.8/build/Dockerfile +++ b/python3.8/build/Dockerfile @@ -12,4 +12,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ - pip install -U awscli boto3 aws-sam-cli==0.36.0 aws-lambda-builders==0.6.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.37.0 aws-lambda-builders==0.6.0 --no-cache-dir diff --git a/ruby2.5/build/Dockerfile b/ruby2.5/build/Dockerfile index a908039f..eebfe38f 100644 --- a/ruby2.5/build/Dockerfile +++ b/ruby2.5/build/Dockerfile @@ -13,4 +13,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN gem update --system --no-document && \ gem install --no-document bundler && \ - pip install -U awscli boto3 aws-sam-cli==0.36.0 aws-lambda-builders==0.6.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.37.0 aws-lambda-builders==0.6.0 --no-cache-dir From cd1ab148615c8bba2bffd1c748004206a3a41289 Mon Sep 17 00:00:00 2001 From: Walter Mesquita Date: Fri, 13 Dec 2019 08:21:57 -0300 Subject: [PATCH 130/271] Changing lambda API and server to listen in the same port --- provided/run/init.go | 23 ++++++----------------- 1 file changed, 6 insertions(+), 17 deletions(-) diff --git a/provided/run/init.go b/provided/run/init.go index cd0dcd66..95e7541c 100644 --- a/provided/run/init.go +++ b/provided/run/init.go @@ -144,27 +144,16 @@ func main() { os.Setenv("AWS_DEFAULT_REGION", curContext.Region) os.Setenv("_X_AMZN_TRACE_ID", curContext.XAmznTraceID) - runtimeRouter := createRuntimeRouter() - - runtimeListener, err := net.Listen("tcp", ":9001") + runtimeListener, err := net.Listen("tcp", ":"+apiPort) if err != nil { log.Fatal(err) return } var runtimeServer *http.Server - if apiPort == "9001" { - runtimeServer = &http.Server{Handler: addAPIRoutes(runtimeRouter)} - } else { - runtimeServer = &http.Server{Handler: runtimeRouter} - apiListener, err := net.Listen("tcp", ":"+apiPort) - if err != nil { - log.Fatal(err) - return - } - apiServer := &http.Server{Handler: addAPIRoutes(chi.NewRouter())} - go apiServer.Serve(apiListener) - } + + runtimeRouter := createRuntimeRouter() + runtimeServer = &http.Server{Handler: addAPIRoutes(runtimeRouter)} go runtimeServer.Serve(runtimeListener) @@ -181,7 +170,7 @@ func main() { <-interrupt } else { res, err := http.Post( - "http://127.0.0.1:9001/2015-03-31/functions/"+curContext.FnName+"/invocations", + "http://127.0.0.1:"+apiPort+"/2015-03-31/functions/"+curContext.FnName+"/invocations", "application/json", bytes.NewBuffer(eventBody), ) @@ -272,7 +261,7 @@ func ensureBootstrapIsRunning(context *mockLambdaContext) error { awsSessionToken := getEnv("AWS_SESSION_TOKEN", os.Getenv("AWS_SECURITY_TOKEN")) bootstrapCmd.Env = append(os.Environ(), - "AWS_LAMBDA_RUNTIME_API=127.0.0.1:9001", + "AWS_LAMBDA_RUNTIME_API=127.0.0.1:"+apiPort, "AWS_ACCESS_KEY_ID="+awsAccessKey, "AWS_SECRET_ACCESS_KEY="+awsSecretKey, ) From b8c8759ddb90688d4aabc37800c2c7221fe4c478 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Fri, 13 Dec 2019 11:18:25 -0500 Subject: [PATCH 131/271] Add DOCKER_LAMBDA_RUNTIME_PORT env var Also restrict runtime address to 127.0.0.1 if port different from Lambda API --- README.md | 5 ++++- provided/run/init.go | 12 +++++++++--- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index ef4f8266..f26612a5 100644 --- a/README.md +++ b/README.md @@ -100,7 +100,9 @@ It also supports the [documented Lambda API headers](https://docs.aws.amazon.com If you want to change the exposed port, eg run on port 3000 on the host, use `-p 3000:9001` (then query `http://localhost:3000`). -You can change the internal API port from `9001` by passing `-e DOCKER_LAMBDA_API_PORT=` (it's unlikely that you'll need to do this). +You can change the internal Lambda API port from `9001` by passing `-e DOCKER_LAMBDA_API_PORT=`. +You can also change the [custom runtime](https://docs.aws.amazon.com/lambda/latest/dg/runtimes-custom.html#runtimes-custom-build) +port from `9001` by passing `-e DOCKER_LAMBDA_RUNTIME_PORT=`. #### Developing in "stay-open" mode @@ -368,6 +370,7 @@ Administrative keys for lambci/lambda:provided - `DOCKER_LAMBDA_USE_STDIN` - `DOCKER_LAMBDA_STAY_OPEN` - `DOCKER_LAMBDA_API_PORT` + - `DOCKER_LAMBDA_RUNTIME_PORT` - `DOCKER_LAMBDA_DEBUG` - `DOCKER_LAMBDA_NO_MODIFY_LOGS` diff --git a/provided/run/init.go b/provided/run/init.go index 95e7541c..d2f33d37 100644 --- a/provided/run/init.go +++ b/provided/run/init.go @@ -35,6 +35,7 @@ var logDebug = os.Getenv("DOCKER_LAMBDA_DEBUG") != "" var stayOpen = os.Getenv("DOCKER_LAMBDA_STAY_OPEN") != "" var noBootstrap = os.Getenv("DOCKER_LAMBDA_NO_BOOTSTRAP") != "" var apiPort = getEnv("DOCKER_LAMBDA_API_PORT", "9001") +var runtimePort = getEnv("DOCKER_LAMBDA_RUNTIME_PORT", "9001") var useStdin = os.Getenv("DOCKER_LAMBDA_USE_STDIN") != "" var noModifyLogs = os.Getenv("DOCKER_LAMBDA_NO_MODIFY_LOGS") != "" var watchMode = os.Getenv("DOCKER_LAMBDA_WATCH") != "" @@ -144,7 +145,12 @@ func main() { os.Setenv("AWS_DEFAULT_REGION", curContext.Region) os.Setenv("_X_AMZN_TRACE_ID", curContext.XAmznTraceID) - runtimeListener, err := net.Listen("tcp", ":"+apiPort) + runtimeAddress := ":" + runtimePort + if apiPort != runtimePort { + // We can restrict runtime to 127.0.0.1 if we don't need the port for the Lambda API + runtimeAddress = "127.0.0.1" + runtimeAddress + } + runtimeListener, err := net.Listen("tcp", runtimeAddress) if err != nil { log.Fatal(err) return @@ -170,7 +176,7 @@ func main() { <-interrupt } else { res, err := http.Post( - "http://127.0.0.1:"+apiPort+"/2015-03-31/functions/"+curContext.FnName+"/invocations", + "http://127.0.0.1:"+runtimePort+"/2015-03-31/functions/"+curContext.FnName+"/invocations", "application/json", bytes.NewBuffer(eventBody), ) @@ -261,7 +267,7 @@ func ensureBootstrapIsRunning(context *mockLambdaContext) error { awsSessionToken := getEnv("AWS_SESSION_TOKEN", os.Getenv("AWS_SECURITY_TOKEN")) bootstrapCmd.Env = append(os.Environ(), - "AWS_LAMBDA_RUNTIME_API=127.0.0.1:"+apiPort, + "AWS_LAMBDA_RUNTIME_API=127.0.0.1:"+runtimePort, "AWS_ACCESS_KEY_ID="+awsAccessKey, "AWS_SECRET_ACCESS_KEY="+awsSecretKey, ) From 185b76697d7133afaf11c7b6723d6f069d7dd5d4 Mon Sep 17 00:00:00 2001 From: shades of clay Date: Wed, 18 Dec 2019 00:36:25 +1100 Subject: [PATCH 132/271] updated DOTNET_SDK_VERSION to 2.1.701 (#237) --- dotnetcore2.1/build/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dotnetcore2.1/build/Dockerfile b/dotnetcore2.1/build/Dockerfile index 47c51392..27ab895a 100644 --- a/dotnetcore2.1/build/Dockerfile +++ b/dotnetcore2.1/build/Dockerfile @@ -6,7 +6,7 @@ ENV DOTNET_ROOT=/var/lang/bin ENV PATH=/root/.dotnet/tools:$DOTNET_ROOT:$PATH \ LD_LIBRARY_PATH=/var/lang/lib:$LD_LIBRARY_PATH \ AWS_EXECUTION_ENV=AWS_Lambda_dotnetcore2.1 \ - DOTNET_SDK_VERSION=2.1.700 \ + DOTNET_SDK_VERSION=2.1.701 \ DOTNET_CLI_TELEMETRY_OPTOUT=1 \ NUGET_XMLDOC_MODE=skip From 94a2257aa0c824ae223d0ad1b8091a5b4a0bf2c3 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Tue, 17 Dec 2019 20:57:02 -0500 Subject: [PATCH 133/271] Update aws-sam-cli to 0.38.0 --- dotnetcore2.0/build/Dockerfile | 2 +- dotnetcore2.1/build/Dockerfile | 2 +- go1.x/build/Dockerfile | 2 +- java11/build/Dockerfile | 2 +- java8/build/Dockerfile | 2 +- nodejs10.x/build/Dockerfile | 2 +- nodejs12.x/build/Dockerfile | 2 +- nodejs4.3/build/Dockerfile | 2 +- nodejs6.10/build/Dockerfile | 2 +- nodejs8.10/build/Dockerfile | 2 +- provided/build/Dockerfile | 2 +- python3.6/build/Dockerfile | 2 +- python3.7/build/Dockerfile | 2 +- python3.8/build/Dockerfile | 2 +- ruby2.5/build/Dockerfile | 2 +- 15 files changed, 15 insertions(+), 15 deletions(-) diff --git a/dotnetcore2.0/build/Dockerfile b/dotnetcore2.0/build/Dockerfile index 79b7dafc..d4121622 100644 --- a/dotnetcore2.0/build/Dockerfile +++ b/dotnetcore2.0/build/Dockerfile @@ -20,6 +20,6 @@ RUN rm -rf /var/runtime /var/lang && \ rm -rf /tmp/warmup /tmp/NuGetScratch # Add these as a separate layer as they get updated frequently -RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.37.0 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.38.0 aws-lambda-builders==0.6.0 --no-cache-dir CMD ["dotnet", "build"] diff --git a/dotnetcore2.1/build/Dockerfile b/dotnetcore2.1/build/Dockerfile index 27ab895a..43e4816f 100644 --- a/dotnetcore2.1/build/Dockerfile +++ b/dotnetcore2.1/build/Dockerfile @@ -21,7 +21,7 @@ RUN rm -rf /var/runtime /var/lang && \ rm -rf /tmp/warmup /tmp/NuGetScratch /tmp/.dotnet # Add these as a separate layer as they get updated frequently -RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.37.0 aws-lambda-builders==0.6.0 --no-cache-dir && \ +RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.38.0 aws-lambda-builders==0.6.0 --no-cache-dir && \ dotnet tool install --global Amazon.Lambda.Tools --version 3.3.1 CMD ["dotnet", "build"] diff --git a/go1.x/build/Dockerfile b/go1.x/build/Dockerfile index 52946f19..a9aa7813 100644 --- a/go1.x/build/Dockerfile +++ b/go1.x/build/Dockerfile @@ -16,6 +16,6 @@ RUN rm -rf /var/runtime /var/lang && \ go get golang.org/x/vgo # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.37.0 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.38.0 aws-lambda-builders==0.6.0 --no-cache-dir CMD ["dep", "ensure"] diff --git a/java11/build/Dockerfile b/java11/build/Dockerfile index 3d39b7e9..06e6df2d 100644 --- a/java11/build/Dockerfile +++ b/java11/build/Dockerfile @@ -14,4 +14,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ ENV PATH="/usr/local/gradle/gradle-6.0/bin:/usr/local/maven/apache-maven-3.6.2/bin:${PATH}" # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.37.0 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.38.0 aws-lambda-builders==0.6.0 --no-cache-dir diff --git a/java8/build/Dockerfile b/java8/build/Dockerfile index 4924b255..83ba604d 100644 --- a/java8/build/Dockerfile +++ b/java8/build/Dockerfile @@ -15,4 +15,4 @@ RUN rm -rf /var/runtime /var/lang && \ ENV PATH="/usr/local/gradle/gradle-6.0/bin:/usr/local/maven/apache-maven-3.6.2/bin:${PATH}" # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.37.0 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.38.0 aws-lambda-builders==0.6.0 --no-cache-dir diff --git a/nodejs10.x/build/Dockerfile b/nodejs10.x/build/Dockerfile index b09d8e02..75946730 100644 --- a/nodejs10.x/build/Dockerfile +++ b/nodejs10.x/build/Dockerfile @@ -9,4 +9,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ curl https://lambci.s3.amazonaws.com/fs/nodejs10.x.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.37.0 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.38.0 aws-lambda-builders==0.6.0 --no-cache-dir diff --git a/nodejs12.x/build/Dockerfile b/nodejs12.x/build/Dockerfile index a201770e..ac817cf3 100644 --- a/nodejs12.x/build/Dockerfile +++ b/nodejs12.x/build/Dockerfile @@ -9,4 +9,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ curl https://lambci.s3.amazonaws.com/fs/nodejs12.x.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.37.0 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.38.0 aws-lambda-builders==0.6.0 --no-cache-dir diff --git a/nodejs4.3/build/Dockerfile b/nodejs4.3/build/Dockerfile index 21ed9226..435e4136 100644 --- a/nodejs4.3/build/Dockerfile +++ b/nodejs4.3/build/Dockerfile @@ -10,6 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs4.3.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.37.0 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.38.0 aws-lambda-builders==0.6.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/nodejs6.10/build/Dockerfile b/nodejs6.10/build/Dockerfile index 206b01c2..97d6bff3 100644 --- a/nodejs6.10/build/Dockerfile +++ b/nodejs6.10/build/Dockerfile @@ -10,6 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs6.10.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.37.0 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.38.0 aws-lambda-builders==0.6.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/nodejs8.10/build/Dockerfile b/nodejs8.10/build/Dockerfile index fbae7dec..a6c86718 100644 --- a/nodejs8.10/build/Dockerfile +++ b/nodejs8.10/build/Dockerfile @@ -10,6 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs8.10.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.37.0 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.38.0 aws-lambda-builders==0.6.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/provided/build/Dockerfile b/provided/build/Dockerfile index 550086c0..da2a3b44 100644 --- a/provided/build/Dockerfile +++ b/provided/build/Dockerfile @@ -1,4 +1,4 @@ FROM lambci/lambda-base:build # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.37.0 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.38.0 aws-lambda-builders==0.6.0 --no-cache-dir diff --git a/python3.6/build/Dockerfile b/python3.6/build/Dockerfile index 5c1d4850..baea9f91 100644 --- a/python3.6/build/Dockerfile +++ b/python3.6/build/Dockerfile @@ -19,4 +19,4 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ - pip install -U awscli boto3 aws-sam-cli==0.37.0 aws-lambda-builders==0.6.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.38.0 aws-lambda-builders==0.6.0 --no-cache-dir diff --git a/python3.7/build/Dockerfile b/python3.7/build/Dockerfile index 1a0226b6..b79bfb61 100644 --- a/python3.7/build/Dockerfile +++ b/python3.7/build/Dockerfile @@ -12,4 +12,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ - pip install -U awscli boto3 aws-sam-cli==0.37.0 aws-lambda-builders==0.6.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.38.0 aws-lambda-builders==0.6.0 --no-cache-dir diff --git a/python3.8/build/Dockerfile b/python3.8/build/Dockerfile index d3664528..dc572318 100644 --- a/python3.8/build/Dockerfile +++ b/python3.8/build/Dockerfile @@ -12,4 +12,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ - pip install -U awscli boto3 aws-sam-cli==0.37.0 aws-lambda-builders==0.6.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.38.0 aws-lambda-builders==0.6.0 --no-cache-dir diff --git a/ruby2.5/build/Dockerfile b/ruby2.5/build/Dockerfile index eebfe38f..83d365f4 100644 --- a/ruby2.5/build/Dockerfile +++ b/ruby2.5/build/Dockerfile @@ -13,4 +13,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN gem update --system --no-document && \ gem install --no-document bundler && \ - pip install -U awscli boto3 aws-sam-cli==0.37.0 aws-lambda-builders==0.6.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.38.0 aws-lambda-builders==0.6.0 --no-cache-dir From 8bffe2035b76301d66a41b4b906121666a4273b2 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Sun, 22 Dec 2019 15:06:10 -0500 Subject: [PATCH 134/271] Add poetry to all python build images Fixes #240 --- README.md | 5 ++++- python2.7/build/Dockerfile | 3 +++ python3.6/build/Dockerfile | 3 +++ python3.7/build/Dockerfile | 3 +++ python3.8/build/Dockerfile | 3 +++ 5 files changed, 16 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index f26612a5..12b52cfd 100644 --- a/README.md +++ b/README.md @@ -225,10 +225,13 @@ To use the build images, for compilation, deployment, etc: # To compile native deps in node_modules docker run --rm -v "$PWD":/var/task lambci/lambda:build-nodejs12.x npm rebuild +# To install defined poetry dependencies +docker run --rm -v "$PWD":/var/task lambci/lambda:build-python3.8 poetry install + # To resolve dependencies on go1.x (working directory is /go/src/handler) docker run --rm -v "$PWD":/go/src/handler lambci/lambda:build-go1.x go mod download -# For .NET Core 2.0, this will publish the compiled code to `./pub`, +# For .NET Core, this will publish the compiled code to `./pub`, # which you can then use to run with `-v "$PWD"/pub:/var/task` docker run --rm -v "$PWD":/var/task lambci/lambda:build-dotnetcore2.1 dotnet publish -c Release -o pub diff --git a/python2.7/build/Dockerfile b/python2.7/build/Dockerfile index cc284b1d..c4494dd8 100644 --- a/python2.7/build/Dockerfile +++ b/python2.7/build/Dockerfile @@ -9,4 +9,7 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ pip install -U virtualenv pipenv --no-cache-dir && \ + curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.0/get-poetry.py | POETRY_VERSION=1.0.0 python && \ pip install -U awscli boto3 aws-sam-cli==0.22.0 aws-lambda-builders==0.6.0 --no-cache-dir + +ENV PATH=/root/.poetry/bin:$PATH diff --git a/python3.6/build/Dockerfile b/python3.6/build/Dockerfile index baea9f91..c2a36a9c 100644 --- a/python3.6/build/Dockerfile +++ b/python3.6/build/Dockerfile @@ -19,4 +19,7 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ + curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.0/get-poetry.py | POETRY_VERSION=1.0.0 python3 && \ pip install -U awscli boto3 aws-sam-cli==0.38.0 aws-lambda-builders==0.6.0 --no-cache-dir + +ENV PATH=/root/.poetry/bin:$PATH diff --git a/python3.7/build/Dockerfile b/python3.7/build/Dockerfile index b79bfb61..c1059b39 100644 --- a/python3.7/build/Dockerfile +++ b/python3.7/build/Dockerfile @@ -12,4 +12,7 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ + curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.0/get-poetry.py | POETRY_VERSION=1.0.0 python3 && \ pip install -U awscli boto3 aws-sam-cli==0.38.0 aws-lambda-builders==0.6.0 --no-cache-dir + +ENV PATH=/root/.poetry/bin:$PATH diff --git a/python3.8/build/Dockerfile b/python3.8/build/Dockerfile index dc572318..5671f0d9 100644 --- a/python3.8/build/Dockerfile +++ b/python3.8/build/Dockerfile @@ -12,4 +12,7 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ + curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.0/get-poetry.py | POETRY_VERSION=1.0.0 python3 && \ pip install -U awscli boto3 aws-sam-cli==0.38.0 aws-lambda-builders==0.6.0 --no-cache-dir + +ENV PATH=/root/.poetry/bin:$PATH From 843e679399f8807ac20e2b14805bd46906aec220 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Mon, 23 Dec 2019 19:25:55 -0500 Subject: [PATCH 135/271] Update aws-sam-cli to 0.39.0 --- dotnetcore2.0/build/Dockerfile | 2 +- dotnetcore2.1/build/Dockerfile | 2 +- go1.x/build/Dockerfile | 2 +- java11/build/Dockerfile | 2 +- java8/build/Dockerfile | 2 +- nodejs10.x/build/Dockerfile | 2 +- nodejs12.x/build/Dockerfile | 2 +- nodejs4.3/build/Dockerfile | 2 +- nodejs6.10/build/Dockerfile | 2 +- nodejs8.10/build/Dockerfile | 2 +- provided/build/Dockerfile | 2 +- python3.6/build/Dockerfile | 2 +- python3.7/build/Dockerfile | 2 +- python3.8/build/Dockerfile | 2 +- ruby2.5/build/Dockerfile | 2 +- 15 files changed, 15 insertions(+), 15 deletions(-) diff --git a/dotnetcore2.0/build/Dockerfile b/dotnetcore2.0/build/Dockerfile index d4121622..421bc264 100644 --- a/dotnetcore2.0/build/Dockerfile +++ b/dotnetcore2.0/build/Dockerfile @@ -20,6 +20,6 @@ RUN rm -rf /var/runtime /var/lang && \ rm -rf /tmp/warmup /tmp/NuGetScratch # Add these as a separate layer as they get updated frequently -RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.38.0 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.39.0 aws-lambda-builders==0.6.0 --no-cache-dir CMD ["dotnet", "build"] diff --git a/dotnetcore2.1/build/Dockerfile b/dotnetcore2.1/build/Dockerfile index 43e4816f..c902cbd2 100644 --- a/dotnetcore2.1/build/Dockerfile +++ b/dotnetcore2.1/build/Dockerfile @@ -21,7 +21,7 @@ RUN rm -rf /var/runtime /var/lang && \ rm -rf /tmp/warmup /tmp/NuGetScratch /tmp/.dotnet # Add these as a separate layer as they get updated frequently -RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.38.0 aws-lambda-builders==0.6.0 --no-cache-dir && \ +RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.39.0 aws-lambda-builders==0.6.0 --no-cache-dir && \ dotnet tool install --global Amazon.Lambda.Tools --version 3.3.1 CMD ["dotnet", "build"] diff --git a/go1.x/build/Dockerfile b/go1.x/build/Dockerfile index a9aa7813..492e2b8b 100644 --- a/go1.x/build/Dockerfile +++ b/go1.x/build/Dockerfile @@ -16,6 +16,6 @@ RUN rm -rf /var/runtime /var/lang && \ go get golang.org/x/vgo # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.38.0 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.39.0 aws-lambda-builders==0.6.0 --no-cache-dir CMD ["dep", "ensure"] diff --git a/java11/build/Dockerfile b/java11/build/Dockerfile index 06e6df2d..ec783df0 100644 --- a/java11/build/Dockerfile +++ b/java11/build/Dockerfile @@ -14,4 +14,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ ENV PATH="/usr/local/gradle/gradle-6.0/bin:/usr/local/maven/apache-maven-3.6.2/bin:${PATH}" # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.38.0 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.39.0 aws-lambda-builders==0.6.0 --no-cache-dir diff --git a/java8/build/Dockerfile b/java8/build/Dockerfile index 83ba604d..21082c6b 100644 --- a/java8/build/Dockerfile +++ b/java8/build/Dockerfile @@ -15,4 +15,4 @@ RUN rm -rf /var/runtime /var/lang && \ ENV PATH="/usr/local/gradle/gradle-6.0/bin:/usr/local/maven/apache-maven-3.6.2/bin:${PATH}" # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.38.0 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.39.0 aws-lambda-builders==0.6.0 --no-cache-dir diff --git a/nodejs10.x/build/Dockerfile b/nodejs10.x/build/Dockerfile index 75946730..a05ae8aa 100644 --- a/nodejs10.x/build/Dockerfile +++ b/nodejs10.x/build/Dockerfile @@ -9,4 +9,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ curl https://lambci.s3.amazonaws.com/fs/nodejs10.x.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.38.0 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.39.0 aws-lambda-builders==0.6.0 --no-cache-dir diff --git a/nodejs12.x/build/Dockerfile b/nodejs12.x/build/Dockerfile index ac817cf3..12d113a7 100644 --- a/nodejs12.x/build/Dockerfile +++ b/nodejs12.x/build/Dockerfile @@ -9,4 +9,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ curl https://lambci.s3.amazonaws.com/fs/nodejs12.x.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.38.0 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.39.0 aws-lambda-builders==0.6.0 --no-cache-dir diff --git a/nodejs4.3/build/Dockerfile b/nodejs4.3/build/Dockerfile index 435e4136..734bb816 100644 --- a/nodejs4.3/build/Dockerfile +++ b/nodejs4.3/build/Dockerfile @@ -10,6 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs4.3.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.38.0 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.39.0 aws-lambda-builders==0.6.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/nodejs6.10/build/Dockerfile b/nodejs6.10/build/Dockerfile index 97d6bff3..cf56a380 100644 --- a/nodejs6.10/build/Dockerfile +++ b/nodejs6.10/build/Dockerfile @@ -10,6 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs6.10.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.38.0 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.39.0 aws-lambda-builders==0.6.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/nodejs8.10/build/Dockerfile b/nodejs8.10/build/Dockerfile index a6c86718..491018f6 100644 --- a/nodejs8.10/build/Dockerfile +++ b/nodejs8.10/build/Dockerfile @@ -10,6 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs8.10.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.38.0 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.39.0 aws-lambda-builders==0.6.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/provided/build/Dockerfile b/provided/build/Dockerfile index da2a3b44..94e323ff 100644 --- a/provided/build/Dockerfile +++ b/provided/build/Dockerfile @@ -1,4 +1,4 @@ FROM lambci/lambda-base:build # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.38.0 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.39.0 aws-lambda-builders==0.6.0 --no-cache-dir diff --git a/python3.6/build/Dockerfile b/python3.6/build/Dockerfile index c2a36a9c..5909de7e 100644 --- a/python3.6/build/Dockerfile +++ b/python3.6/build/Dockerfile @@ -20,6 +20,6 @@ RUN rm -rf /var/runtime /var/lang && \ RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.0/get-poetry.py | POETRY_VERSION=1.0.0 python3 && \ - pip install -U awscli boto3 aws-sam-cli==0.38.0 aws-lambda-builders==0.6.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.39.0 aws-lambda-builders==0.6.0 --no-cache-dir ENV PATH=/root/.poetry/bin:$PATH diff --git a/python3.7/build/Dockerfile b/python3.7/build/Dockerfile index c1059b39..f797616c 100644 --- a/python3.7/build/Dockerfile +++ b/python3.7/build/Dockerfile @@ -13,6 +13,6 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.0/get-poetry.py | POETRY_VERSION=1.0.0 python3 && \ - pip install -U awscli boto3 aws-sam-cli==0.38.0 aws-lambda-builders==0.6.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.39.0 aws-lambda-builders==0.6.0 --no-cache-dir ENV PATH=/root/.poetry/bin:$PATH diff --git a/python3.8/build/Dockerfile b/python3.8/build/Dockerfile index 5671f0d9..66380d9b 100644 --- a/python3.8/build/Dockerfile +++ b/python3.8/build/Dockerfile @@ -13,6 +13,6 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.0/get-poetry.py | POETRY_VERSION=1.0.0 python3 && \ - pip install -U awscli boto3 aws-sam-cli==0.38.0 aws-lambda-builders==0.6.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.39.0 aws-lambda-builders==0.6.0 --no-cache-dir ENV PATH=/root/.poetry/bin:$PATH diff --git a/ruby2.5/build/Dockerfile b/ruby2.5/build/Dockerfile index 83d365f4..3461ce72 100644 --- a/ruby2.5/build/Dockerfile +++ b/ruby2.5/build/Dockerfile @@ -13,4 +13,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN gem update --system --no-document && \ gem install --no-document bundler && \ - pip install -U awscli boto3 aws-sam-cli==0.38.0 aws-lambda-builders==0.6.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.39.0 aws-lambda-builders==0.6.0 --no-cache-dir From 5b48a7c009141f6080835fdb06902c746a5d7eb8 Mon Sep 17 00:00:00 2001 From: eric brody Date: Tue, 7 Jan 2020 23:32:18 -0500 Subject: [PATCH 136/271] Set bundler to a specific version that matches what is in AWS (#243) * Set bundler to a specific version that matches what is in AWS * Switch to a fuzzy match on the bundler version --- ruby2.5/build/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ruby2.5/build/Dockerfile b/ruby2.5/build/Dockerfile index 3461ce72..97a1d502 100644 --- a/ruby2.5/build/Dockerfile +++ b/ruby2.5/build/Dockerfile @@ -12,5 +12,5 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN gem update --system --no-document && \ - gem install --no-document bundler && \ + gem install --no-document bundler -v '~> 2.1' && \ pip install -U awscli boto3 aws-sam-cli==0.39.0 aws-lambda-builders==0.6.0 --no-cache-dir From 12c9ebacea53b3931ddc2036cc307d4388031fb4 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Wed, 8 Jan 2020 17:23:20 -0800 Subject: [PATCH 137/271] Update aws-sam-cli to 0.40.0 --- dotnetcore2.0/build/Dockerfile | 2 +- dotnetcore2.1/build/Dockerfile | 2 +- go1.x/build/Dockerfile | 2 +- java11/build/Dockerfile | 2 +- java8/build/Dockerfile | 2 +- nodejs10.x/build/Dockerfile | 2 +- nodejs12.x/build/Dockerfile | 2 +- nodejs4.3/build/Dockerfile | 2 +- nodejs6.10/build/Dockerfile | 2 +- nodejs8.10/build/Dockerfile | 2 +- provided/build/Dockerfile | 2 +- python3.6/build/Dockerfile | 2 +- python3.7/build/Dockerfile | 2 +- python3.8/build/Dockerfile | 2 +- ruby2.5/build/Dockerfile | 2 +- 15 files changed, 15 insertions(+), 15 deletions(-) diff --git a/dotnetcore2.0/build/Dockerfile b/dotnetcore2.0/build/Dockerfile index 421bc264..06458ea2 100644 --- a/dotnetcore2.0/build/Dockerfile +++ b/dotnetcore2.0/build/Dockerfile @@ -20,6 +20,6 @@ RUN rm -rf /var/runtime /var/lang && \ rm -rf /tmp/warmup /tmp/NuGetScratch # Add these as a separate layer as they get updated frequently -RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.39.0 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.40.0 aws-lambda-builders==0.6.0 --no-cache-dir CMD ["dotnet", "build"] diff --git a/dotnetcore2.1/build/Dockerfile b/dotnetcore2.1/build/Dockerfile index c902cbd2..8999e53a 100644 --- a/dotnetcore2.1/build/Dockerfile +++ b/dotnetcore2.1/build/Dockerfile @@ -21,7 +21,7 @@ RUN rm -rf /var/runtime /var/lang && \ rm -rf /tmp/warmup /tmp/NuGetScratch /tmp/.dotnet # Add these as a separate layer as they get updated frequently -RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.39.0 aws-lambda-builders==0.6.0 --no-cache-dir && \ +RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.40.0 aws-lambda-builders==0.6.0 --no-cache-dir && \ dotnet tool install --global Amazon.Lambda.Tools --version 3.3.1 CMD ["dotnet", "build"] diff --git a/go1.x/build/Dockerfile b/go1.x/build/Dockerfile index 492e2b8b..c164c68c 100644 --- a/go1.x/build/Dockerfile +++ b/go1.x/build/Dockerfile @@ -16,6 +16,6 @@ RUN rm -rf /var/runtime /var/lang && \ go get golang.org/x/vgo # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.39.0 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.40.0 aws-lambda-builders==0.6.0 --no-cache-dir CMD ["dep", "ensure"] diff --git a/java11/build/Dockerfile b/java11/build/Dockerfile index ec783df0..dd1b78b6 100644 --- a/java11/build/Dockerfile +++ b/java11/build/Dockerfile @@ -14,4 +14,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ ENV PATH="/usr/local/gradle/gradle-6.0/bin:/usr/local/maven/apache-maven-3.6.2/bin:${PATH}" # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.39.0 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.40.0 aws-lambda-builders==0.6.0 --no-cache-dir diff --git a/java8/build/Dockerfile b/java8/build/Dockerfile index 21082c6b..b77ec48a 100644 --- a/java8/build/Dockerfile +++ b/java8/build/Dockerfile @@ -15,4 +15,4 @@ RUN rm -rf /var/runtime /var/lang && \ ENV PATH="/usr/local/gradle/gradle-6.0/bin:/usr/local/maven/apache-maven-3.6.2/bin:${PATH}" # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.39.0 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.40.0 aws-lambda-builders==0.6.0 --no-cache-dir diff --git a/nodejs10.x/build/Dockerfile b/nodejs10.x/build/Dockerfile index a05ae8aa..b051d837 100644 --- a/nodejs10.x/build/Dockerfile +++ b/nodejs10.x/build/Dockerfile @@ -9,4 +9,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ curl https://lambci.s3.amazonaws.com/fs/nodejs10.x.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.39.0 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.40.0 aws-lambda-builders==0.6.0 --no-cache-dir diff --git a/nodejs12.x/build/Dockerfile b/nodejs12.x/build/Dockerfile index 12d113a7..88a7dbdb 100644 --- a/nodejs12.x/build/Dockerfile +++ b/nodejs12.x/build/Dockerfile @@ -9,4 +9,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ curl https://lambci.s3.amazonaws.com/fs/nodejs12.x.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.39.0 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.40.0 aws-lambda-builders==0.6.0 --no-cache-dir diff --git a/nodejs4.3/build/Dockerfile b/nodejs4.3/build/Dockerfile index 734bb816..faf8b6eb 100644 --- a/nodejs4.3/build/Dockerfile +++ b/nodejs4.3/build/Dockerfile @@ -10,6 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs4.3.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.39.0 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.40.0 aws-lambda-builders==0.6.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/nodejs6.10/build/Dockerfile b/nodejs6.10/build/Dockerfile index cf56a380..8e01e76c 100644 --- a/nodejs6.10/build/Dockerfile +++ b/nodejs6.10/build/Dockerfile @@ -10,6 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs6.10.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.39.0 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.40.0 aws-lambda-builders==0.6.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/nodejs8.10/build/Dockerfile b/nodejs8.10/build/Dockerfile index 491018f6..8e9b7cfa 100644 --- a/nodejs8.10/build/Dockerfile +++ b/nodejs8.10/build/Dockerfile @@ -10,6 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs8.10.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.39.0 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.40.0 aws-lambda-builders==0.6.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/provided/build/Dockerfile b/provided/build/Dockerfile index 94e323ff..e227de9d 100644 --- a/provided/build/Dockerfile +++ b/provided/build/Dockerfile @@ -1,4 +1,4 @@ FROM lambci/lambda-base:build # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.39.0 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.40.0 aws-lambda-builders==0.6.0 --no-cache-dir diff --git a/python3.6/build/Dockerfile b/python3.6/build/Dockerfile index 5909de7e..c08d1400 100644 --- a/python3.6/build/Dockerfile +++ b/python3.6/build/Dockerfile @@ -20,6 +20,6 @@ RUN rm -rf /var/runtime /var/lang && \ RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.0/get-poetry.py | POETRY_VERSION=1.0.0 python3 && \ - pip install -U awscli boto3 aws-sam-cli==0.39.0 aws-lambda-builders==0.6.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.40.0 aws-lambda-builders==0.6.0 --no-cache-dir ENV PATH=/root/.poetry/bin:$PATH diff --git a/python3.7/build/Dockerfile b/python3.7/build/Dockerfile index f797616c..b41c4c1d 100644 --- a/python3.7/build/Dockerfile +++ b/python3.7/build/Dockerfile @@ -13,6 +13,6 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.0/get-poetry.py | POETRY_VERSION=1.0.0 python3 && \ - pip install -U awscli boto3 aws-sam-cli==0.39.0 aws-lambda-builders==0.6.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.40.0 aws-lambda-builders==0.6.0 --no-cache-dir ENV PATH=/root/.poetry/bin:$PATH diff --git a/python3.8/build/Dockerfile b/python3.8/build/Dockerfile index 66380d9b..15c6519a 100644 --- a/python3.8/build/Dockerfile +++ b/python3.8/build/Dockerfile @@ -13,6 +13,6 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.0/get-poetry.py | POETRY_VERSION=1.0.0 python3 && \ - pip install -U awscli boto3 aws-sam-cli==0.39.0 aws-lambda-builders==0.6.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.40.0 aws-lambda-builders==0.6.0 --no-cache-dir ENV PATH=/root/.poetry/bin:$PATH diff --git a/ruby2.5/build/Dockerfile b/ruby2.5/build/Dockerfile index 97a1d502..bab32ac5 100644 --- a/ruby2.5/build/Dockerfile +++ b/ruby2.5/build/Dockerfile @@ -13,4 +13,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN gem update --system --no-document && \ gem install --no-document bundler -v '~> 2.1' && \ - pip install -U awscli boto3 aws-sam-cli==0.39.0 aws-lambda-builders==0.6.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.40.0 aws-lambda-builders==0.6.0 --no-cache-dir From 674ec90eb2e063463988e20eee652c5468f7a59f Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Fri, 10 Jan 2020 08:06:30 -0800 Subject: [PATCH 138/271] Update Python build images to Poetry 1.0.2 --- python2.7/build/Dockerfile | 2 +- python3.6/build/Dockerfile | 2 +- python3.7/build/Dockerfile | 2 +- python3.8/build/Dockerfile | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/python2.7/build/Dockerfile b/python2.7/build/Dockerfile index c4494dd8..6d5f4726 100644 --- a/python2.7/build/Dockerfile +++ b/python2.7/build/Dockerfile @@ -9,7 +9,7 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ pip install -U virtualenv pipenv --no-cache-dir && \ - curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.0/get-poetry.py | POETRY_VERSION=1.0.0 python && \ + curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.2/get-poetry.py | POETRY_VERSION=1.0.2 python && \ pip install -U awscli boto3 aws-sam-cli==0.22.0 aws-lambda-builders==0.6.0 --no-cache-dir ENV PATH=/root/.poetry/bin:$PATH diff --git a/python3.6/build/Dockerfile b/python3.6/build/Dockerfile index c08d1400..995655db 100644 --- a/python3.6/build/Dockerfile +++ b/python3.6/build/Dockerfile @@ -19,7 +19,7 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ - curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.0/get-poetry.py | POETRY_VERSION=1.0.0 python3 && \ + curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.2/get-poetry.py | POETRY_VERSION=1.0.2 python3 && \ pip install -U awscli boto3 aws-sam-cli==0.40.0 aws-lambda-builders==0.6.0 --no-cache-dir ENV PATH=/root/.poetry/bin:$PATH diff --git a/python3.7/build/Dockerfile b/python3.7/build/Dockerfile index b41c4c1d..6bbd1f2a 100644 --- a/python3.7/build/Dockerfile +++ b/python3.7/build/Dockerfile @@ -12,7 +12,7 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ - curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.0/get-poetry.py | POETRY_VERSION=1.0.0 python3 && \ + curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.2/get-poetry.py | POETRY_VERSION=1.0.2 python3 && \ pip install -U awscli boto3 aws-sam-cli==0.40.0 aws-lambda-builders==0.6.0 --no-cache-dir ENV PATH=/root/.poetry/bin:$PATH diff --git a/python3.8/build/Dockerfile b/python3.8/build/Dockerfile index 15c6519a..5104210a 100644 --- a/python3.8/build/Dockerfile +++ b/python3.8/build/Dockerfile @@ -12,7 +12,7 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ - curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.0/get-poetry.py | POETRY_VERSION=1.0.0 python3 && \ + curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.2/get-poetry.py | POETRY_VERSION=1.0.2 python3 && \ pip install -U awscli boto3 aws-sam-cli==0.40.0 aws-lambda-builders==0.6.0 --no-cache-dir ENV PATH=/root/.poetry/bin:$PATH From 30b35d3c9982d900bc6dcdd75f26c8321e767acb Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Fri, 31 Jan 2020 14:16:48 -0500 Subject: [PATCH 139/271] Update poetry to 1.0.3 on python build images --- python2.7/build/Dockerfile | 2 +- python3.6/build/Dockerfile | 2 +- python3.7/build/Dockerfile | 2 +- python3.8/build/Dockerfile | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/python2.7/build/Dockerfile b/python2.7/build/Dockerfile index 6d5f4726..a5b793c4 100644 --- a/python2.7/build/Dockerfile +++ b/python2.7/build/Dockerfile @@ -9,7 +9,7 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ pip install -U virtualenv pipenv --no-cache-dir && \ - curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.2/get-poetry.py | POETRY_VERSION=1.0.2 python && \ + curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.3/get-poetry.py | POETRY_VERSION=1.0.3 python && \ pip install -U awscli boto3 aws-sam-cli==0.22.0 aws-lambda-builders==0.6.0 --no-cache-dir ENV PATH=/root/.poetry/bin:$PATH diff --git a/python3.6/build/Dockerfile b/python3.6/build/Dockerfile index 995655db..6b3f0af9 100644 --- a/python3.6/build/Dockerfile +++ b/python3.6/build/Dockerfile @@ -19,7 +19,7 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ - curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.2/get-poetry.py | POETRY_VERSION=1.0.2 python3 && \ + curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.3/get-poetry.py | POETRY_VERSION=1.0.3 python3 && \ pip install -U awscli boto3 aws-sam-cli==0.40.0 aws-lambda-builders==0.6.0 --no-cache-dir ENV PATH=/root/.poetry/bin:$PATH diff --git a/python3.7/build/Dockerfile b/python3.7/build/Dockerfile index 6bbd1f2a..19dbf44f 100644 --- a/python3.7/build/Dockerfile +++ b/python3.7/build/Dockerfile @@ -12,7 +12,7 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ - curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.2/get-poetry.py | POETRY_VERSION=1.0.2 python3 && \ + curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.3/get-poetry.py | POETRY_VERSION=1.0.3 python3 && \ pip install -U awscli boto3 aws-sam-cli==0.40.0 aws-lambda-builders==0.6.0 --no-cache-dir ENV PATH=/root/.poetry/bin:$PATH diff --git a/python3.8/build/Dockerfile b/python3.8/build/Dockerfile index 5104210a..946a72e9 100644 --- a/python3.8/build/Dockerfile +++ b/python3.8/build/Dockerfile @@ -12,7 +12,7 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ - curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.2/get-poetry.py | POETRY_VERSION=1.0.2 python3 && \ + curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.3/get-poetry.py | POETRY_VERSION=1.0.3 python3 && \ pip install -U awscli boto3 aws-sam-cli==0.40.0 aws-lambda-builders==0.6.0 --no-cache-dir ENV PATH=/root/.poetry/bin:$PATH From 590963934f5731733770e3325cf5326da4e9c82b Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Tue, 4 Feb 2020 12:33:43 -0500 Subject: [PATCH 140/271] Update aws-lambda-builders to 0.7.0 --- dotnetcore2.0/build/Dockerfile | 2 +- dotnetcore2.1/build/Dockerfile | 2 +- go1.x/build/Dockerfile | 2 +- java11/build/Dockerfile | 2 +- java8/build/Dockerfile | 2 +- nodejs10.x/build/Dockerfile | 2 +- nodejs12.x/build/Dockerfile | 2 +- nodejs4.3/build/Dockerfile | 2 +- nodejs6.10/build/Dockerfile | 2 +- nodejs8.10/build/Dockerfile | 2 +- provided/build/Dockerfile | 2 +- python2.7/build/Dockerfile | 2 +- python3.6/build/Dockerfile | 2 +- python3.7/build/Dockerfile | 2 +- python3.8/build/Dockerfile | 2 +- ruby2.5/build/Dockerfile | 2 +- 16 files changed, 16 insertions(+), 16 deletions(-) diff --git a/dotnetcore2.0/build/Dockerfile b/dotnetcore2.0/build/Dockerfile index 06458ea2..d0941803 100644 --- a/dotnetcore2.0/build/Dockerfile +++ b/dotnetcore2.0/build/Dockerfile @@ -20,6 +20,6 @@ RUN rm -rf /var/runtime /var/lang && \ rm -rf /tmp/warmup /tmp/NuGetScratch # Add these as a separate layer as they get updated frequently -RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.40.0 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.40.0 aws-lambda-builders==0.7.0 --no-cache-dir CMD ["dotnet", "build"] diff --git a/dotnetcore2.1/build/Dockerfile b/dotnetcore2.1/build/Dockerfile index 8999e53a..85d5d88f 100644 --- a/dotnetcore2.1/build/Dockerfile +++ b/dotnetcore2.1/build/Dockerfile @@ -21,7 +21,7 @@ RUN rm -rf /var/runtime /var/lang && \ rm -rf /tmp/warmup /tmp/NuGetScratch /tmp/.dotnet # Add these as a separate layer as they get updated frequently -RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.40.0 aws-lambda-builders==0.6.0 --no-cache-dir && \ +RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.40.0 aws-lambda-builders==0.7.0 --no-cache-dir && \ dotnet tool install --global Amazon.Lambda.Tools --version 3.3.1 CMD ["dotnet", "build"] diff --git a/go1.x/build/Dockerfile b/go1.x/build/Dockerfile index c164c68c..9ba6611d 100644 --- a/go1.x/build/Dockerfile +++ b/go1.x/build/Dockerfile @@ -16,6 +16,6 @@ RUN rm -rf /var/runtime /var/lang && \ go get golang.org/x/vgo # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.40.0 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.40.0 aws-lambda-builders==0.7.0 --no-cache-dir CMD ["dep", "ensure"] diff --git a/java11/build/Dockerfile b/java11/build/Dockerfile index dd1b78b6..1249c612 100644 --- a/java11/build/Dockerfile +++ b/java11/build/Dockerfile @@ -14,4 +14,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ ENV PATH="/usr/local/gradle/gradle-6.0/bin:/usr/local/maven/apache-maven-3.6.2/bin:${PATH}" # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.40.0 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.40.0 aws-lambda-builders==0.7.0 --no-cache-dir diff --git a/java8/build/Dockerfile b/java8/build/Dockerfile index b77ec48a..a150cf02 100644 --- a/java8/build/Dockerfile +++ b/java8/build/Dockerfile @@ -15,4 +15,4 @@ RUN rm -rf /var/runtime /var/lang && \ ENV PATH="/usr/local/gradle/gradle-6.0/bin:/usr/local/maven/apache-maven-3.6.2/bin:${PATH}" # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.40.0 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.40.0 aws-lambda-builders==0.7.0 --no-cache-dir diff --git a/nodejs10.x/build/Dockerfile b/nodejs10.x/build/Dockerfile index b051d837..a247e641 100644 --- a/nodejs10.x/build/Dockerfile +++ b/nodejs10.x/build/Dockerfile @@ -9,4 +9,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ curl https://lambci.s3.amazonaws.com/fs/nodejs10.x.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.40.0 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.40.0 aws-lambda-builders==0.7.0 --no-cache-dir diff --git a/nodejs12.x/build/Dockerfile b/nodejs12.x/build/Dockerfile index 88a7dbdb..05270fcc 100644 --- a/nodejs12.x/build/Dockerfile +++ b/nodejs12.x/build/Dockerfile @@ -9,4 +9,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ curl https://lambci.s3.amazonaws.com/fs/nodejs12.x.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.40.0 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.40.0 aws-lambda-builders==0.7.0 --no-cache-dir diff --git a/nodejs4.3/build/Dockerfile b/nodejs4.3/build/Dockerfile index faf8b6eb..8277260a 100644 --- a/nodejs4.3/build/Dockerfile +++ b/nodejs4.3/build/Dockerfile @@ -10,6 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs4.3.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.40.0 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.40.0 aws-lambda-builders==0.7.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/nodejs6.10/build/Dockerfile b/nodejs6.10/build/Dockerfile index 8e01e76c..7578278e 100644 --- a/nodejs6.10/build/Dockerfile +++ b/nodejs6.10/build/Dockerfile @@ -10,6 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs6.10.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.40.0 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.40.0 aws-lambda-builders==0.7.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/nodejs8.10/build/Dockerfile b/nodejs8.10/build/Dockerfile index 8e9b7cfa..75ea5de1 100644 --- a/nodejs8.10/build/Dockerfile +++ b/nodejs8.10/build/Dockerfile @@ -10,6 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs8.10.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.40.0 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.40.0 aws-lambda-builders==0.7.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/provided/build/Dockerfile b/provided/build/Dockerfile index e227de9d..f071aa57 100644 --- a/provided/build/Dockerfile +++ b/provided/build/Dockerfile @@ -1,4 +1,4 @@ FROM lambci/lambda-base:build # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.40.0 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.40.0 aws-lambda-builders==0.7.0 --no-cache-dir diff --git a/python2.7/build/Dockerfile b/python2.7/build/Dockerfile index a5b793c4..e419c140 100644 --- a/python2.7/build/Dockerfile +++ b/python2.7/build/Dockerfile @@ -10,6 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ pip install -U virtualenv pipenv --no-cache-dir && \ curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.3/get-poetry.py | POETRY_VERSION=1.0.3 python && \ - pip install -U awscli boto3 aws-sam-cli==0.22.0 aws-lambda-builders==0.6.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.22.0 aws-lambda-builders==0.7.0 --no-cache-dir ENV PATH=/root/.poetry/bin:$PATH diff --git a/python3.6/build/Dockerfile b/python3.6/build/Dockerfile index 6b3f0af9..c3a2fe5e 100644 --- a/python3.6/build/Dockerfile +++ b/python3.6/build/Dockerfile @@ -20,6 +20,6 @@ RUN rm -rf /var/runtime /var/lang && \ RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.3/get-poetry.py | POETRY_VERSION=1.0.3 python3 && \ - pip install -U awscli boto3 aws-sam-cli==0.40.0 aws-lambda-builders==0.6.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.40.0 aws-lambda-builders==0.7.0 --no-cache-dir ENV PATH=/root/.poetry/bin:$PATH diff --git a/python3.7/build/Dockerfile b/python3.7/build/Dockerfile index 19dbf44f..521c0120 100644 --- a/python3.7/build/Dockerfile +++ b/python3.7/build/Dockerfile @@ -13,6 +13,6 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.3/get-poetry.py | POETRY_VERSION=1.0.3 python3 && \ - pip install -U awscli boto3 aws-sam-cli==0.40.0 aws-lambda-builders==0.6.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.40.0 aws-lambda-builders==0.7.0 --no-cache-dir ENV PATH=/root/.poetry/bin:$PATH diff --git a/python3.8/build/Dockerfile b/python3.8/build/Dockerfile index 946a72e9..e437e52f 100644 --- a/python3.8/build/Dockerfile +++ b/python3.8/build/Dockerfile @@ -13,6 +13,6 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.3/get-poetry.py | POETRY_VERSION=1.0.3 python3 && \ - pip install -U awscli boto3 aws-sam-cli==0.40.0 aws-lambda-builders==0.6.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.40.0 aws-lambda-builders==0.7.0 --no-cache-dir ENV PATH=/root/.poetry/bin:$PATH diff --git a/ruby2.5/build/Dockerfile b/ruby2.5/build/Dockerfile index bab32ac5..7acb1464 100644 --- a/ruby2.5/build/Dockerfile +++ b/ruby2.5/build/Dockerfile @@ -13,4 +13,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN gem update --system --no-document && \ gem install --no-document bundler -v '~> 2.1' && \ - pip install -U awscli boto3 aws-sam-cli==0.40.0 aws-lambda-builders==0.6.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.40.0 aws-lambda-builders==0.7.0 --no-cache-dir From b4babc8be7ead3e98d526b5f6e28c64b02d575a1 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Tue, 4 Feb 2020 13:05:27 -0500 Subject: [PATCH 141/271] Update maven to 3.6.3 and gradle to 6.1.1 in Java images --- java11/build/Dockerfile | 6 +++--- java8/build/Dockerfile | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/java11/build/Dockerfile b/java11/build/Dockerfile index 1249c612..7b491c80 100644 --- a/java11/build/Dockerfile +++ b/java11/build/Dockerfile @@ -6,12 +6,12 @@ ENV PATH=/var/lang/bin:$PATH \ RUN rm -rf /var/runtime /var/lang /var/rapid && \ curl https://lambci.s3.amazonaws.com/fs/java11.tgz | tar -zx -C / && \ - mkdir /usr/local/gradle && curl -L -o gradle.zip https://services.gradle.org/distributions/gradle-6.0-bin.zip && \ + mkdir /usr/local/gradle && curl -L -o gradle.zip https://downloads.gradle-dn.com/distributions/gradle-6.1.1-bin.zip && \ unzip -d /usr/local/gradle gradle.zip && rm gradle.zip && mkdir /usr/local/maven && \ - curl -L http://mirror.metrocast.net/apache/maven/maven-3/3.6.2/binaries/apache-maven-3.6.2-bin.tar.gz | \ + curl -L http://mirror.cc.columbia.edu/pub/software/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz | \ tar -zx -C /usr/local/maven -ENV PATH="/usr/local/gradle/gradle-6.0/bin:/usr/local/maven/apache-maven-3.6.2/bin:${PATH}" +ENV PATH="/usr/local/gradle/gradle-6.1.1/bin:/usr/local/maven/apache-maven-3.6.3/bin:${PATH}" # Add these as a separate layer as they get updated frequently RUN pip install -U awscli boto3 aws-sam-cli==0.40.0 aws-lambda-builders==0.7.0 --no-cache-dir diff --git a/java8/build/Dockerfile b/java8/build/Dockerfile index a150cf02..9e71f062 100644 --- a/java8/build/Dockerfile +++ b/java8/build/Dockerfile @@ -7,12 +7,12 @@ WORKDIR / RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/java8.tgz | tar -zx -C / && \ yum install -y java-1.8.0-openjdk-devel && \ - mkdir /usr/local/gradle && curl -L -o gradle.zip https://services.gradle.org/distributions/gradle-6.0-bin.zip && \ + mkdir /usr/local/gradle && curl -L -o gradle.zip https://downloads.gradle-dn.com/distributions/gradle-6.1.1-bin.zip && \ unzip -d /usr/local/gradle gradle.zip && rm gradle.zip && mkdir /usr/local/maven && \ - curl -L http://mirror.metrocast.net/apache/maven/maven-3/3.6.2/binaries/apache-maven-3.6.2-bin.tar.gz | \ + curl -L http://mirror.cc.columbia.edu/pub/software/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz | \ tar -zx -C /usr/local/maven -ENV PATH="/usr/local/gradle/gradle-6.0/bin:/usr/local/maven/apache-maven-3.6.2/bin:${PATH}" +ENV PATH="/usr/local/gradle/gradle-6.1.1/bin:/usr/local/maven/apache-maven-3.6.3/bin:${PATH}" # Add these as a separate layer as they get updated frequently RUN pip install -U awscli boto3 aws-sam-cli==0.40.0 aws-lambda-builders==0.7.0 --no-cache-dir From 003484917c2b95a29aaea891770289a5fd06846c Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Wed, 5 Feb 2020 19:36:08 -0500 Subject: [PATCH 142/271] Update aws-sam-cli to 0.41.0 --- dotnetcore2.0/build/Dockerfile | 2 +- dotnetcore2.1/build/Dockerfile | 2 +- go1.x/build/Dockerfile | 2 +- java11/build/Dockerfile | 2 +- java8/build/Dockerfile | 2 +- nodejs10.x/build/Dockerfile | 2 +- nodejs12.x/build/Dockerfile | 2 +- nodejs4.3/build/Dockerfile | 2 +- nodejs6.10/build/Dockerfile | 2 +- nodejs8.10/build/Dockerfile | 2 +- provided/build/Dockerfile | 2 +- python3.6/build/Dockerfile | 2 +- python3.7/build/Dockerfile | 2 +- python3.8/build/Dockerfile | 2 +- ruby2.5/build/Dockerfile | 2 +- 15 files changed, 15 insertions(+), 15 deletions(-) diff --git a/dotnetcore2.0/build/Dockerfile b/dotnetcore2.0/build/Dockerfile index d0941803..8530d7ac 100644 --- a/dotnetcore2.0/build/Dockerfile +++ b/dotnetcore2.0/build/Dockerfile @@ -20,6 +20,6 @@ RUN rm -rf /var/runtime /var/lang && \ rm -rf /tmp/warmup /tmp/NuGetScratch # Add these as a separate layer as they get updated frequently -RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.40.0 aws-lambda-builders==0.7.0 --no-cache-dir +RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.41.0 aws-lambda-builders==0.7.0 --no-cache-dir CMD ["dotnet", "build"] diff --git a/dotnetcore2.1/build/Dockerfile b/dotnetcore2.1/build/Dockerfile index 85d5d88f..00208798 100644 --- a/dotnetcore2.1/build/Dockerfile +++ b/dotnetcore2.1/build/Dockerfile @@ -21,7 +21,7 @@ RUN rm -rf /var/runtime /var/lang && \ rm -rf /tmp/warmup /tmp/NuGetScratch /tmp/.dotnet # Add these as a separate layer as they get updated frequently -RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.40.0 aws-lambda-builders==0.7.0 --no-cache-dir && \ +RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.41.0 aws-lambda-builders==0.7.0 --no-cache-dir && \ dotnet tool install --global Amazon.Lambda.Tools --version 3.3.1 CMD ["dotnet", "build"] diff --git a/go1.x/build/Dockerfile b/go1.x/build/Dockerfile index 9ba6611d..ea5bc185 100644 --- a/go1.x/build/Dockerfile +++ b/go1.x/build/Dockerfile @@ -16,6 +16,6 @@ RUN rm -rf /var/runtime /var/lang && \ go get golang.org/x/vgo # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.40.0 aws-lambda-builders==0.7.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.41.0 aws-lambda-builders==0.7.0 --no-cache-dir CMD ["dep", "ensure"] diff --git a/java11/build/Dockerfile b/java11/build/Dockerfile index 7b491c80..00aa14ee 100644 --- a/java11/build/Dockerfile +++ b/java11/build/Dockerfile @@ -14,4 +14,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ ENV PATH="/usr/local/gradle/gradle-6.1.1/bin:/usr/local/maven/apache-maven-3.6.3/bin:${PATH}" # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.40.0 aws-lambda-builders==0.7.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.41.0 aws-lambda-builders==0.7.0 --no-cache-dir diff --git a/java8/build/Dockerfile b/java8/build/Dockerfile index 9e71f062..39a0e0f9 100644 --- a/java8/build/Dockerfile +++ b/java8/build/Dockerfile @@ -15,4 +15,4 @@ RUN rm -rf /var/runtime /var/lang && \ ENV PATH="/usr/local/gradle/gradle-6.1.1/bin:/usr/local/maven/apache-maven-3.6.3/bin:${PATH}" # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.40.0 aws-lambda-builders==0.7.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.41.0 aws-lambda-builders==0.7.0 --no-cache-dir diff --git a/nodejs10.x/build/Dockerfile b/nodejs10.x/build/Dockerfile index a247e641..2589de67 100644 --- a/nodejs10.x/build/Dockerfile +++ b/nodejs10.x/build/Dockerfile @@ -9,4 +9,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ curl https://lambci.s3.amazonaws.com/fs/nodejs10.x.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.40.0 aws-lambda-builders==0.7.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.41.0 aws-lambda-builders==0.7.0 --no-cache-dir diff --git a/nodejs12.x/build/Dockerfile b/nodejs12.x/build/Dockerfile index 05270fcc..1dfa732e 100644 --- a/nodejs12.x/build/Dockerfile +++ b/nodejs12.x/build/Dockerfile @@ -9,4 +9,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ curl https://lambci.s3.amazonaws.com/fs/nodejs12.x.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.40.0 aws-lambda-builders==0.7.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.41.0 aws-lambda-builders==0.7.0 --no-cache-dir diff --git a/nodejs4.3/build/Dockerfile b/nodejs4.3/build/Dockerfile index 8277260a..aaf38c52 100644 --- a/nodejs4.3/build/Dockerfile +++ b/nodejs4.3/build/Dockerfile @@ -10,6 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs4.3.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.40.0 aws-lambda-builders==0.7.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.41.0 aws-lambda-builders==0.7.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/nodejs6.10/build/Dockerfile b/nodejs6.10/build/Dockerfile index 7578278e..a5718e61 100644 --- a/nodejs6.10/build/Dockerfile +++ b/nodejs6.10/build/Dockerfile @@ -10,6 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs6.10.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.40.0 aws-lambda-builders==0.7.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.41.0 aws-lambda-builders==0.7.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/nodejs8.10/build/Dockerfile b/nodejs8.10/build/Dockerfile index 75ea5de1..17282d32 100644 --- a/nodejs8.10/build/Dockerfile +++ b/nodejs8.10/build/Dockerfile @@ -10,6 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs8.10.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.40.0 aws-lambda-builders==0.7.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.41.0 aws-lambda-builders==0.7.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/provided/build/Dockerfile b/provided/build/Dockerfile index f071aa57..1d449885 100644 --- a/provided/build/Dockerfile +++ b/provided/build/Dockerfile @@ -1,4 +1,4 @@ FROM lambci/lambda-base:build # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.40.0 aws-lambda-builders==0.7.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.41.0 aws-lambda-builders==0.7.0 --no-cache-dir diff --git a/python3.6/build/Dockerfile b/python3.6/build/Dockerfile index c3a2fe5e..30065f56 100644 --- a/python3.6/build/Dockerfile +++ b/python3.6/build/Dockerfile @@ -20,6 +20,6 @@ RUN rm -rf /var/runtime /var/lang && \ RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.3/get-poetry.py | POETRY_VERSION=1.0.3 python3 && \ - pip install -U awscli boto3 aws-sam-cli==0.40.0 aws-lambda-builders==0.7.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.41.0 aws-lambda-builders==0.7.0 --no-cache-dir ENV PATH=/root/.poetry/bin:$PATH diff --git a/python3.7/build/Dockerfile b/python3.7/build/Dockerfile index 521c0120..06e65f5b 100644 --- a/python3.7/build/Dockerfile +++ b/python3.7/build/Dockerfile @@ -13,6 +13,6 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.3/get-poetry.py | POETRY_VERSION=1.0.3 python3 && \ - pip install -U awscli boto3 aws-sam-cli==0.40.0 aws-lambda-builders==0.7.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.41.0 aws-lambda-builders==0.7.0 --no-cache-dir ENV PATH=/root/.poetry/bin:$PATH diff --git a/python3.8/build/Dockerfile b/python3.8/build/Dockerfile index e437e52f..697d6716 100644 --- a/python3.8/build/Dockerfile +++ b/python3.8/build/Dockerfile @@ -13,6 +13,6 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.3/get-poetry.py | POETRY_VERSION=1.0.3 python3 && \ - pip install -U awscli boto3 aws-sam-cli==0.40.0 aws-lambda-builders==0.7.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.41.0 aws-lambda-builders==0.7.0 --no-cache-dir ENV PATH=/root/.poetry/bin:$PATH diff --git a/ruby2.5/build/Dockerfile b/ruby2.5/build/Dockerfile index 7acb1464..12a791ce 100644 --- a/ruby2.5/build/Dockerfile +++ b/ruby2.5/build/Dockerfile @@ -13,4 +13,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN gem update --system --no-document && \ gem install --no-document bundler -v '~> 2.1' && \ - pip install -U awscli boto3 aws-sam-cli==0.40.0 aws-lambda-builders==0.7.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.41.0 aws-lambda-builders==0.7.0 --no-cache-dir From b0011914b17bb97af58d0889e65094bbc69ae532 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Wed, 15 Jan 2020 14:12:57 -0800 Subject: [PATCH 143/271] Update build-dotnetcore2.1 SDK to 2.1.803 --- dotnetcore2.1/build/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dotnetcore2.1/build/Dockerfile b/dotnetcore2.1/build/Dockerfile index 00208798..1e8fcf66 100644 --- a/dotnetcore2.1/build/Dockerfile +++ b/dotnetcore2.1/build/Dockerfile @@ -6,7 +6,7 @@ ENV DOTNET_ROOT=/var/lang/bin ENV PATH=/root/.dotnet/tools:$DOTNET_ROOT:$PATH \ LD_LIBRARY_PATH=/var/lang/lib:$LD_LIBRARY_PATH \ AWS_EXECUTION_ENV=AWS_Lambda_dotnetcore2.1 \ - DOTNET_SDK_VERSION=2.1.701 \ + DOTNET_SDK_VERSION=2.1.803 \ DOTNET_CLI_TELEMETRY_OPTOUT=1 \ NUGET_XMLDOC_MODE=skip From 9edd2e959757c89ad46bcc4c6a6aa0f8f6148799 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Wed, 19 Feb 2020 14:55:05 -0500 Subject: [PATCH 144/271] Update base package list --- base/amazonlinux1.txt | 12 +++++------ base/base-2/amazonlinux2.txt | 42 ++++++++++++++++++------------------ base/base-2/packages.txt | 23 ++++++++++---------- base/packages.txt | 36 +++++++++++++++---------------- 4 files changed, 57 insertions(+), 56 deletions(-) diff --git a/base/amazonlinux1.txt b/base/amazonlinux1.txt index f44f6cad..773aa0bc 100644 --- a/base/amazonlinux1.txt +++ b/base/amazonlinux1.txt @@ -1,7 +1,7 @@ basesystem-10.0-4.9.amzn1.noarch bash-4.2.46-28.37.amzn1.x86_64 bzip2-libs-1.0.6-8.12.amzn1.x86_64 -ca-certificates-2018.2.22-65.1.20.amzn1.noarch +ca-certificates-2018.2.22-65.1.21.amzn1.noarch chkconfig-1.3.49.3-2.14.amzn1.x86_64 coreutils-8.22-15.52.amzn1.x86_64 curl-7.61.1-12.93.amzn1.x86_64 @@ -10,7 +10,7 @@ db4-4.7.25-18.11.amzn1.x86_64 db4-utils-4.7.25-18.11.amzn1.x86_64 elfutils-libelf-0.168-8.19.amzn1.x86_64 expat-2.1.0-10.21.amzn1.x86_64 -file-libs-5.34-3.37.amzn1.x86_64 +file-libs-5.37-8.48.amzn1.x86_64 filesystem-2.4.30-3.8.amzn1.x86_64 gawk-3.1.7-10.10.amzn1.x86_64 gdbm-1.8.0-36.6.amzn1.x86_64 @@ -36,7 +36,7 @@ libgcc72-7.2.1-2.59.amzn1.x86_64 libgcrypt-1.5.3-12.19.amzn1.x86_64 libgpg-error-1.11-1.12.amzn1.x86_64 libicu-50.1.2-11.12.amzn1.x86_64 -libidn2-0.16-1.2.amzn1.x86_64 +libidn2-2.3.0-1.4.amzn1.x86_64 libnghttp2-1.31.1-2.5.amzn1.x86_64 libpsl-0.6.2-1.2.amzn1.x86_64 libselinux-2.1.10-3.22.amzn1.x86_64 @@ -70,11 +70,11 @@ pinentry-0.7.6-6.11.amzn1.x86_64 pkgconfig-0.27.1-2.7.amzn1.x86_64 popt-1.13-7.7.amzn1.x86_64 pth-2.0.7-9.3.7.amzn1.x86_64 -python27-2.7.16-1.130.amzn1.x86_64 +python27-2.7.16-1.131.amzn1.x86_64 python27-chardet-2.0.1-7.7.amzn1.noarch python27-iniparse-0.3.1-2.1.9.amzn1.noarch python27-kitchen-1.1.1-5.6.amzn1.noarch -python27-libs-2.7.16-1.130.amzn1.x86_64 +python27-libs-2.7.16-1.131.amzn1.x86_64 python27-pycurl-7.19.0-17.12.amzn1.x86_64 python27-pygpgme-0.3-9.12.amzn1.x86_64 python27-pyliblzma-0.5.3-11.6.amzn1.x86_64 @@ -93,7 +93,7 @@ sysctl-defaults-1.0-1.1.amzn1.noarch system-release-2018.03-0.0.noarch tar-1.26-31.22.amzn1.x86_64 tzdata-2019c-1.73.amzn1.noarch -xz-libs-5.1.2-12alpha.12.amzn1.x86_64 +xz-libs-5.2.2-1.13.amzn1.x86_64 yum-3.4.3-150.70.amzn1.noarch yum-metadata-parser-1.1.4-10.20.amzn1.x86_64 yum-plugin-ovl-1.1.31-46.30.amzn1.noarch diff --git a/base/base-2/amazonlinux2.txt b/base/base-2/amazonlinux2.txt index e1d58cc0..9519274b 100644 --- a/base/base-2/amazonlinux2.txt +++ b/base/base-2/amazonlinux2.txt @@ -1,40 +1,40 @@ amazon-linux-extras-1.6.9-2.amzn2.noarch basesystem-10.0-7.amzn2.0.1.noarch -bash-4.2.46-30.amzn2.x86_64 +bash-4.2.46-33.amzn2.x86_64 bzip2-libs-1.0.6-13.amzn2.0.2.x86_64 -ca-certificates-2018.2.22-70.0.amzn2.noarch +ca-certificates-2019.2.32-76.amzn2.0.1.noarch chkconfig-1.7.4-1.amzn2.0.2.x86_64 -coreutils-8.22-21.amzn2.x86_64 +coreutils-8.22-24.amzn2.x86_64 cpio-2.11-27.amzn2.x86_64 curl-7.61.1-12.amzn2.0.1.x86_64 cyrus-sasl-lib-2.1.26-23.amzn2.x86_64 -diffutils-3.3-4.amzn2.0.2.x86_64 +diffutils-3.3-5.amzn2.x86_64 elfutils-libelf-0.176-2.amzn2.x86_64 expat-2.1.0-10.amzn2.0.2.x86_64 -file-libs-5.11-35.amzn2.0.1.x86_64 +file-libs-5.11-35.amzn2.0.2.x86_64 filesystem-3.2-25.amzn2.0.4.x86_64 findutils-4.5.11-5.amzn2.0.2.x86_64 gawk-4.0.2-4.amzn2.1.2.x86_64 gdbm-1.13-6.amzn2.0.2.x86_64 glib2-2.56.1-4.amzn2.x86_64 -glibc-2.26-32.amzn2.0.2.x86_64 -glibc-common-2.26-32.amzn2.0.2.x86_64 -glibc-langpack-en-2.26-32.amzn2.0.2.x86_64 -glibc-minimal-langpack-2.26-32.amzn2.0.2.x86_64 +glibc-2.26-34.amzn2.x86_64 +glibc-common-2.26-34.amzn2.x86_64 +glibc-langpack-en-2.26-34.amzn2.x86_64 +glibc-minimal-langpack-2.26-34.amzn2.x86_64 gmp-6.0.0-15.amzn2.0.2.x86_64 gnupg2-2.0.22-5.amzn2.0.3.x86_64 gpgme-1.3.2-5.amzn2.0.2.x86_64 grep-2.20-3.amzn2.0.2.x86_64 info-5.1-5.amzn2.x86_64 keyutils-libs-1.5.8-3.amzn2.0.2.x86_64 -krb5-libs-1.15.1-20.amzn2.0.1.x86_64 +krb5-libs-1.15.1-37.amzn2.2.2.x86_64 libacl-2.2.51-14.amzn2.x86_64 libassuan-2.1.0-3.amzn2.0.2.x86_64 libattr-2.4.46-12.amzn2.0.2.x86_64 libblkid-2.30.2-2.amzn2.0.4.x86_64 libcap-2.22-9.amzn2.0.2.x86_64 libcom_err-1.42.9-12.amzn2.0.2.x86_64 -libcrypt-2.26-32.amzn2.0.2.x86_64 +libcrypt-2.26-34.amzn2.x86_64 libcurl-7.61.1-12.amzn2.0.1.x86_64 libdb-5.3.21-24.amzn2.0.3.x86_64 libdb-utils-5.3.21-24.amzn2.0.3.x86_64 @@ -42,7 +42,7 @@ libffi-3.0.13-18.amzn2.0.2.x86_64 libgcc-7.3.1-6.amzn2.0.4.x86_64 libgcrypt-1.5.3-14.amzn2.0.2.x86_64 libgpg-error-1.12-3.amzn2.0.3.x86_64 -libidn2-2.0.4-1.amzn2.0.2.x86_64 +libidn2-2.3.0-1.amzn2.x86_64 libmetalink-0.1.2-7.amzn2.0.2.x86_64 libmount-2.30.2-2.amzn2.0.4.x86_64 libnghttp2-1.39.2-1.amzn2.x86_64 @@ -60,13 +60,13 @@ ncurses-6.0-8.20170212.amzn2.1.3.x86_64 ncurses-base-6.0-8.20170212.amzn2.1.3.noarch ncurses-libs-6.0-8.20170212.amzn2.1.3.x86_64 nspr-4.21.0-1.amzn2.0.2.x86_64 -nss-3.44.0-4.amzn2.0.2.x86_64 +nss-3.44.0-7.amzn2.x86_64 nss-pem-1.0.3-5.amzn2.x86_64 -nss-softokn-3.44.0-5.amzn2.0.2.x86_64 -nss-softokn-freebl-3.44.0-5.amzn2.0.2.x86_64 -nss-sysinit-3.44.0-4.amzn2.0.2.x86_64 -nss-tools-3.44.0-4.amzn2.0.2.x86_64 -nss-util-3.44.0-3.amzn2.0.2.x86_64 +nss-softokn-3.44.0-8.amzn2.x86_64 +nss-softokn-freebl-3.44.0-8.amzn2.x86_64 +nss-sysinit-3.44.0-7.amzn2.x86_64 +nss-tools-3.44.0-7.amzn2.x86_64 +nss-util-3.44.0-4.amzn2.x86_64 openldap-2.4.44-15.amzn2.x86_64 openssl-libs-1.0.2k-19.amzn2.0.1.x86_64 p11-kit-0.23.5-3.amzn2.0.2.x86_64 @@ -77,11 +77,11 @@ popt-1.13-16.amzn2.0.2.x86_64 pth-2.0.7-23.amzn2.0.2.x86_64 pygpgme-0.3-9.amzn2.0.2.x86_64 pyliblzma-0.5.3-11.amzn2.0.2.x86_64 -python-2.7.16-4.amzn2.x86_64 +python-2.7.16-5.amzn2.x86_64 python-iniparse-0.4-9.amzn2.noarch -python-libs-2.7.16-4.amzn2.x86_64 +python-libs-2.7.16-5.amzn2.x86_64 python-pycurl-7.19.0-19.amzn2.0.2.x86_64 -python-urlgrabber-3.10-8.amzn2.noarch +python-urlgrabber-3.10-9.amzn2.0.1.noarch python2-rpm-4.11.3-40.amzn2.0.3.x86_64 pyxattr-0.5.1-5.amzn2.0.2.x86_64 readline-6.2-10.amzn2.0.2.x86_64 diff --git a/base/base-2/packages.txt b/base/base-2/packages.txt index 06d01f50..81a1640c 100644 --- a/base/base-2/packages.txt +++ b/base/base-2/packages.txt @@ -1,25 +1,26 @@ basesystem-10.0-7.amzn2.0.1.noarch bash-4.2.46-30.amzn2.x86_64 -ca-certificates-2018.2.22-70.0.amzn2.noarch +ca-certificates-2019.2.32-76.amzn2.0.1.noarch chkconfig-1.7.4-1.amzn2.0.2.x86_64 coreutils-8.22-21.amzn2.x86_64 filesystem-3.2-25.amzn2.0.4.x86_64 gawk-4.0.2-4.amzn2.1.2.x86_64 -glibc-2.26-32.amzn2.0.2.x86_64 -glibc-all-langpacks-2.26-32.amzn2.0.2.x86_64 -glibc-common-2.26-32.amzn2.0.2.x86_64 -glibc-minimal-langpack-2.26-32.amzn2.0.2.x86_64 +glibc-2.26-34.amzn2.x86_64 +glibc-all-langpacks-2.26-34.amzn2.x86_64 +glibc-common-2.26-34.amzn2.x86_64 +glibc-minimal-langpack-2.26-34.amzn2.x86_64 gmp-6.0.0-15.amzn2.0.2.x86_64 grep-2.20-3.amzn2.0.2.x86_64 info-5.1-5.amzn2.x86_64 keyutils-libs-1.5.8-3.amzn2.0.2.x86_64 -krb5-libs-1.15.1-20.amzn2.0.1.x86_64 +krb5-libs-1.15.1-37.amzn2.2.1.x86_64 libacl-2.2.51-14.amzn2.x86_64 libattr-2.4.46-12.amzn2.0.2.x86_64 libcap-2.22-9.amzn2.0.2.x86_64 libcom_err-1.42.9-12.amzn2.0.2.x86_64 libffi-3.0.13-18.amzn2.0.2.x86_64 libgcc-7.3.1-6.amzn2.0.4.x86_64 +libicu-50.1.2-17.amzn2.x86_64 libselinux-2.5-12.amzn2.0.2.x86_64 libsepol-2.5-8.1.amzn2.0.2.x86_64 libstdc++-7.3.1-6.amzn2.0.4.x86_64 @@ -29,15 +30,15 @@ ncurses-6.0-8.20170212.amzn2.1.3.x86_64 ncurses-base-6.0-8.20170212.amzn2.1.3.noarch ncurses-libs-6.0-8.20170212.amzn2.1.3.x86_64 nspr-4.21.0-1.amzn2.0.2.x86_64 -nss-softokn-freebl-3.44.0-5.amzn2.0.2.x86_64 -nss-util-3.44.0-3.amzn2.0.2.x86_64 -openssl-libs-1.0.2k-16.amzn2.1.1.x86_64 +nss-softokn-freebl-3.44.0-8.amzn2.x86_64 +nss-util-3.44.0-4.amzn2.x86_64 +openssl-libs-1.0.2k-19.amzn2.0.1.x86_64 p11-kit-0.23.5-3.amzn2.0.2.x86_64 p11-kit-trust-0.23.5-3.amzn2.0.2.x86_64 pcre-8.32-17.amzn2.0.2.x86_64 popt-1.13-16.amzn2.0.2.x86_64 sed-4.2.2-5.amzn2.0.2.x86_64 setup-2.8.71-10.amzn2.noarch -system-release-2-10.amzn2.x86_64 -tzdata-2019b-1.amzn2.noarch +system-release-2-11.amzn2.x86_64 +tzdata-2019c-1.amzn2.noarch zlib-1.2.7-17.amzn2.0.2.x86_64 diff --git a/base/packages.txt b/base/packages.txt index 0123bbe9..e29e8ab5 100644 --- a/base/packages.txt +++ b/base/packages.txt @@ -7,7 +7,7 @@ bash-4.2.46-28.37.amzn1.x86_64 binutils-2.25.1-31.base.66.amzn1.x86_64 bzip2-1.0.6-8.12.amzn1.x86_64 bzip2-libs-1.0.6-8.12.amzn1.x86_64 -ca-certificates-2018.2.22-65.1.20.amzn1.noarch +ca-certificates-2018.2.22-65.1.21.amzn1.noarch cairo-1.12.14-6.8.amzn1.x86_64 chkconfig-1.3.49.3-2.14.amzn1.x86_64 compat-gmp4-4.3.2-1.14.amzn1.x86_64 @@ -28,8 +28,8 @@ dejavu-serif-fonts-2.33-6.6.amzn1.noarch diffutils-3.3-4.15.amzn1.x86_64 elfutils-libelf-0.168-8.19.amzn1.x86_64 expat-2.1.0-10.21.amzn1.x86_64 -file-5.34-3.37.amzn1.x86_64 -file-libs-5.34-3.37.amzn1.x86_64 +file-5.37-8.48.amzn1.x86_64 +file-libs-5.37-8.48.amzn1.x86_64 filesystem-2.4.30-3.8.amzn1.x86_64 findutils-4.4.2-6.9.amzn1.x86_64 fontconfig-2.8.0-5.8.amzn1.x86_64 @@ -40,8 +40,8 @@ gdbm-1.8.0-36.6.amzn1.x86_64 ghostscript-fonts-5.50-23.2.7.amzn1.noarch giflib-4.1.6-3.1.6.amzn1.x86_64 glib2-2.36.3-5.21.amzn1.x86_64 -glibc-2.17-260.175.amzn1.x86_64 -glibc-common-2.17-260.175.amzn1.x86_64 +glibc-2.17-292.178.amzn1.x86_64 +glibc-common-2.17-292.178.amzn1.x86_64 gmp-6.0.0-11.16.amzn1.x86_64 gnupg2-2.0.28-2.33.amzn1.x86_64 gnutls-2.12.23-21.18.amzn1.x86_64 @@ -95,7 +95,7 @@ libglvnd-glx-0.2.999-14.20170308git8e6e102.3.amzn1.x86_64 libgomp-6.4.1-1.45.amzn1.x86_64 libgpg-error-1.11-1.12.amzn1.x86_64 libicu-50.1.2-11.12.amzn1.x86_64 -libidn2-0.16-1.2.amzn1.x86_64 +libidn2-2.3.0-1.4.amzn1.x86_64 libjpeg-turbo-1.2.90-8.16.amzn1.x86_64 libmount-2.23.2-59.29.amzn1.x86_64 libnghttp2-1.31.1-2.5.amzn1.x86_64 @@ -181,23 +181,23 @@ popt-1.13-7.7.amzn1.x86_64 procps-3.2.8-45.16.amzn1.x86_64 psmisc-22.20-8.12.amzn1.x86_64 pth-2.0.7-9.3.7.amzn1.x86_64 -python27-2.7.16-1.129.amzn1.x86_64 +python27-2.7.16-1.130.amzn1.x86_64 python27-iniparse-0.3.1-2.1.9.amzn1.noarch -python27-libs-2.7.16-1.129.amzn1.x86_64 +python27-libs-2.7.16-1.130.amzn1.x86_64 python27-pycurl-7.19.0-17.12.amzn1.x86_64 python27-pygpgme-0.3-9.12.amzn1.x86_64 python27-pyliblzma-0.5.3-11.6.amzn1.x86_64 python27-pyxattr-0.5.0-1.6.amzn1.x86_64 python27-urlgrabber-3.10-8.16.amzn1.noarch -python36-3.6.8-1.14.amzn1.x86_64 -python36-libs-3.6.8-1.14.amzn1.x86_64 +python36-3.6.8-1.15.amzn1.x86_64 +python36-libs-3.6.8-1.15.amzn1.x86_64 python36-pip-9.0.3-1.26.amzn1.noarch python36-setuptools-36.2.7-1.33.amzn1.noarch readline-6.2-9.14.amzn1.x86_64 -rpm-4.11.3-21.75.amzn1.x86_64 -rpm-build-libs-4.11.3-21.75.amzn1.x86_64 -rpm-libs-4.11.3-21.75.amzn1.x86_64 -rpm-python27-4.11.3-21.75.amzn1.x86_64 +rpm-4.11.3-40.76.amzn1.x86_64 +rpm-build-libs-4.11.3-40.76.amzn1.x86_64 +rpm-libs-4.11.3-40.76.amzn1.x86_64 +rpm-python27-4.11.3-40.76.amzn1.x86_64 sed-4.2.1-10.10.amzn1.x86_64 setup-2.8.14-20.12.amzn1.noarch shadow-utils-4.1.4.2-13.10.amzn1.x86_64 @@ -207,16 +207,16 @@ sysctl-defaults-1.0-1.1.amzn1.noarch system-release-2018.03-0.0.noarch tar-1.26-31.22.amzn1.x86_64 ttmkfdir-3.0.9-32.1.5.amzn1.x86_64 -tzdata-2019b-1.72.amzn1.noarch -tzdata-java-2019b-1.72.amzn1.noarch +tzdata-2019c-1.73.amzn1.noarch +tzdata-java-2019c-1.73.amzn1.noarch unzip-6.0-4.10.amzn1.x86_64 urw-fonts-2.4-10.7.amzn1.noarch util-linux-2.23.2-59.29.amzn1.x86_64 which-2.19-6.10.amzn1.x86_64 xorg-x11-font-utils-7.2-11.5.amzn1.x86_64 xorg-x11-fonts-Type1-7.2-9.1.5.amzn1.noarch -xz-5.1.2-12alpha.12.amzn1.x86_64 -xz-libs-5.1.2-12alpha.12.amzn1.x86_64 +xz-5.2.2-1.13.amzn1.x86_64 +xz-libs-5.2.2-1.13.amzn1.x86_64 yum-3.4.3-150.70.amzn1.noarch yum-metadata-parser-1.1.4-10.20.amzn1.x86_64 yum-plugin-priorities-1.1.31-46.30.amzn1.noarch From f589da4398649456e1dd44262a6d476da06d0378 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Wed, 19 Feb 2020 14:58:20 -0500 Subject: [PATCH 145/271] Add ruby2.7 runtime --- README.md | 6 ++++-- base/build-all.sh | 2 +- base/dump-ruby27.rb | 30 ++++++++++++++++++++++++++++++ base/dump.sh | 2 +- base/publish-all.sh | 2 +- base/tag-all.sh | 2 +- base/test-all.sh | 1 + examples/ruby/lambda_function.rb | 3 ++- ruby2.7/build/Dockerfile | 16 ++++++++++++++++ ruby2.7/run/Dockerfile | 21 +++++++++++++++++++++ 10 files changed, 78 insertions(+), 7 deletions(-) create mode 100644 base/dump-ruby27.rb create mode 100644 ruby2.7/build/Dockerfile create mode 100644 ruby2.7/run/Dockerfile diff --git a/README.md b/README.md index 12b52cfd..08b1dcde 100644 --- a/README.md +++ b/README.md @@ -185,8 +185,8 @@ docker run --rm -v "$PWD":/var/task:ro,delegated lambci/lambda:nodejs12.x app.my # Test a `lambda_handler` function in `lambda_function.py` with an empty event on Python 3.8 docker run --rm -v "$PWD":/var/task:ro,delegated lambci/lambda:python3.8 lambda_function.lambda_handler -# Similarly with Ruby 2.5 -docker run --rm -v "$PWD":/var/task:ro,delegated lambci/lambda:ruby2.5 lambda_function.lambda_handler +# Similarly with Ruby 2.7 +docker run --rm -v "$PWD":/var/task:ro,delegated lambci/lambda:ruby2.7 lambda_function.lambda_handler # Test on Go 1.x with a compiled handler named my_handler and a custom event docker run --rm -v "$PWD":/var/task:ro,delegated lambci/lambda:go1.x my_handler '{"some": "event"}' @@ -306,6 +306,7 @@ These follow the Lambda runtime names: - `python3.7` - `python3.8` - `ruby2.5` + - `ruby2.7` - `java8` - `java11` - `go1.x` @@ -322,6 +323,7 @@ These follow the Lambda runtime names: - `build-python3.7` - `build-python3.8` - `build-ruby2.5` + - `build-ruby2.7` - `build-java8` - `build-java11` - `build-go1.x` diff --git a/base/build-all.sh b/base/build-all.sh index d743840c..6b6b2b5e 100755 --- a/base/build-all.sh +++ b/base/build-all.sh @@ -1,6 +1,6 @@ #!/bin/bash -RUNTIMES="provided go1.x nodejs4.3 nodejs6.10 nodejs8.10 nodejs10.x nodejs12.x python2.7 python3.6 python3.7 python3.8 ruby2.5 java8 java11 dotnetcore2.0 dotnetcore2.1" +RUNTIMES="provided go1.x nodejs4.3 nodejs6.10 nodejs8.10 nodejs10.x nodejs12.x python2.7 python3.6 python3.7 python3.8 ruby2.5 ruby2.7 java8 java11 dotnetcore2.0 dotnetcore2.1" TOP_DIR="${PWD}/.." diff --git a/base/dump-ruby27.rb b/base/dump-ruby27.rb new file mode 100644 index 00000000..035f7988 --- /dev/null +++ b/base/dump-ruby27.rb @@ -0,0 +1,30 @@ +require 'json' +require 'aws-sdk-s3' + +S3_CLIENT = Aws::S3::Client.new({region: "us-east-1"}) + +def lambda_handler(event:, context:) + filename = 'ruby2.7.tgz' + + puts `tar -cpzf /tmp/#{filename} --numeric-owner --ignore-failed-read /var/runtime /var/lang /var/rapid` + + File.open("/tmp/#{filename}", 'rb') do |file| + S3_CLIENT.put_object({ + body: file, + bucket: 'lambci', + key: "fs/#{filename}", + acl: 'public-read', + }) + end + + info = { + 'ENV' => ENV.to_hash, + 'context' => context.instance_variables.each_with_object({}) { |k, h| h[k] = context.instance_variable_get k }, + 'ps aux' => `bash -O extglob -c 'for cmd in /proc/+([0-9])/cmdline; do echo $cmd; xargs -n 1 -0 < $cmd; done'`, + 'proc environ' => `xargs -n 1 -0 < /proc/1/environ`, + } + + print JSON.pretty_generate(info) + + return info +end diff --git a/base/dump.sh b/base/dump.sh index dd6e3896..32628a1f 100755 --- a/base/dump.sh +++ b/base/dump.sh @@ -1,6 +1,6 @@ #!/bin/bash -RUNTIMES="node43 node610 node810 node10x node12x python27 python36 python37 python38 ruby25 java8 java11 go1x dotnetcore20 dotnetcore21 provided" +RUNTIMES="node43 node610 node810 node10x node12x python27 python36 python37 python38 ruby25 ruby27 java8 java11 go1x dotnetcore20 dotnetcore21 provided" for RUNTIME in $RUNTIMES; do echo $RUNTIME diff --git a/base/publish-all.sh b/base/publish-all.sh index decd3730..9c49e46a 100755 --- a/base/publish-all.sh +++ b/base/publish-all.sh @@ -1,6 +1,6 @@ #!/bin/bash -RUNTIMES="provided go1.x nodejs4.3 nodejs6.10 nodejs8.10 nodejs10.x nodejs12.x python2.7 python3.6 python3.7 python3.8 ruby2.5 java8 java11 dotnetcore2.0 dotnetcore2.1" +RUNTIMES="provided go1.x nodejs4.3 nodejs6.10 nodejs8.10 nodejs10.x nodejs12.x python2.7 python3.6 python3.7 python3.8 ruby2.5 ruby2.7 java8 java11 dotnetcore2.0 dotnetcore2.1" echo -n "Enter repository passphrase: " read -s DOCKER_CONTENT_TRUST_REPOSITORY_PASSPHRASE diff --git a/base/tag-all.sh b/base/tag-all.sh index 6a738714..3aa38820 100755 --- a/base/tag-all.sh +++ b/base/tag-all.sh @@ -1,6 +1,6 @@ #!/bin/bash -RUNTIMES="provided go1.x nodejs4.3 nodejs6.10 nodejs8.10 nodejs10.x nodejs12.x python2.7 python3.6 python3.7 python3.8 ruby2.5 java8 java11 dotnetcore2.0 dotnetcore2.1" +RUNTIMES="provided go1.x nodejs4.3 nodejs6.10 nodejs8.10 nodejs10.x nodejs12.x python2.7 python3.6 python3.7 python3.8 ruby2.5 ruby2.7 java8 java11 dotnetcore2.0 dotnetcore2.1" git tag -f latest diff --git a/base/test-all.sh b/base/test-all.sh index 1b299cc2..b00d7617 100755 --- a/base/test-all.sh +++ b/base/test-all.sh @@ -29,6 +29,7 @@ docker run --rm -it lambci/lambda:build-python3.8 pip install marisa-trie cd ${EXAMPLES_DIR}/ruby docker run --rm -v "$PWD":/var/task lambci/lambda:ruby2.5 lambda_function.lambda_handler +docker run --rm -v "$PWD":/var/task lambci/lambda:ruby2.7 lambda_function.lambda_handler cd ${EXAMPLES_DIR}/java docker run --rm -v "$PWD":/app -w /app gradle gradle build diff --git a/examples/ruby/lambda_function.rb b/examples/ruby/lambda_function.rb index e8287485..9e09a34f 100644 --- a/examples/ruby/lambda_function.rb +++ b/examples/ruby/lambda_function.rb @@ -1,13 +1,14 @@ require 'pp' # docker run --rm -v "$PWD":/var/task lambci/lambda:ruby2.5 lambda_function.lambda_handler +# docker run --rm -v "$PWD":/var/task lambci/lambda:ruby2.7 lambda_function.lambda_handler def lambda_handler(event:, context:) info = { 'event' => event, 'ENV' => ENV.to_hash, 'context' => context.instance_variables.each_with_object({}) { |k, h| h[k] = context.instance_variable_get k }, - 'ps aux' => `ps aux`, + 'ps aux' => `bash -O extglob -c 'for cmd in /proc/+([0-9])/cmdline; do echo $cmd; xargs -n 1 -0 < $cmd; done'`, 'proc environ' => `xargs -n 1 -0 < /proc/1/environ`, } diff --git a/ruby2.7/build/Dockerfile b/ruby2.7/build/Dockerfile new file mode 100644 index 00000000..832065c8 --- /dev/null +++ b/ruby2.7/build/Dockerfile @@ -0,0 +1,16 @@ +FROM lambci/lambda-base-2:build + +ENV PATH=/var/lang/bin:$PATH \ + LD_LIBRARY_PATH=/var/lang/lib:$LD_LIBRARY_PATH \ + AWS_EXECUTION_ENV=AWS_Lambda_ruby2.7 \ + GEM_HOME=/var/runtime \ + GEM_PATH=/var/task/vendor/bundle/ruby/2.7.0:/opt/ruby/gems/2.7.0 \ + RUBYLIB=/var/task:/var/runtime/lib:/opt/ruby/lib + +RUN rm -rf /var/runtime /var/lang /var/rapid && \ + curl https://lambci.s3.amazonaws.com/fs/ruby2.7.tgz | tar -zx -C / + +# Add these as a separate layer as they get updated frequently +RUN gem update --system --no-document && \ + gem install --no-document bundler -v '~> 2.1' && \ + pip install -U awscli boto3 aws-sam-cli==0.41.0 aws-lambda-builders==0.7.0 --no-cache-dir diff --git a/ruby2.7/run/Dockerfile b/ruby2.7/run/Dockerfile new file mode 100644 index 00000000..f42a59e5 --- /dev/null +++ b/ruby2.7/run/Dockerfile @@ -0,0 +1,21 @@ +FROM lambci/lambda-base + +RUN curl https://lambci.s3.amazonaws.com/fs/ruby2.7.tgz | tar -zx -C /opt + + +FROM lambci/lambda:provided + + +FROM lambci/lambda-base-2 + +ENV PATH=/var/lang/bin:$PATH \ + LD_LIBRARY_PATH=/var/lang/lib:$LD_LIBRARY_PATH \ + AWS_EXECUTION_ENV=AWS_Lambda_ruby2.7 + +COPY --from=0 /opt/* /var/ + +COPY --from=1 /var/runtime/init /var/rapid/init + +USER sbx_user1051 + +ENTRYPOINT ["/var/rapid/init", "--bootstrap", "/var/runtime/bootstrap", "--enable-msg-logs"] From 8c70a0789f967b4e5841357b353f71ecc8fd0d94 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Thu, 20 Feb 2020 16:28:13 -0500 Subject: [PATCH 146/271] Update build images to aws-sam-cli 0.42.0 --- dotnetcore2.0/build/Dockerfile | 2 +- dotnetcore2.1/build/Dockerfile | 2 +- go1.x/build/Dockerfile | 2 +- java11/build/Dockerfile | 2 +- java8/build/Dockerfile | 2 +- nodejs10.x/build/Dockerfile | 2 +- nodejs12.x/build/Dockerfile | 2 +- nodejs4.3/build/Dockerfile | 2 +- nodejs6.10/build/Dockerfile | 2 +- nodejs8.10/build/Dockerfile | 2 +- provided/build/Dockerfile | 2 +- python3.6/build/Dockerfile | 2 +- python3.7/build/Dockerfile | 2 +- python3.8/build/Dockerfile | 2 +- ruby2.5/build/Dockerfile | 2 +- ruby2.7/build/Dockerfile | 2 +- 16 files changed, 16 insertions(+), 16 deletions(-) diff --git a/dotnetcore2.0/build/Dockerfile b/dotnetcore2.0/build/Dockerfile index 8530d7ac..54bdf496 100644 --- a/dotnetcore2.0/build/Dockerfile +++ b/dotnetcore2.0/build/Dockerfile @@ -20,6 +20,6 @@ RUN rm -rf /var/runtime /var/lang && \ rm -rf /tmp/warmup /tmp/NuGetScratch # Add these as a separate layer as they get updated frequently -RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.41.0 aws-lambda-builders==0.7.0 --no-cache-dir +RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.42.0 aws-lambda-builders==0.7.0 --no-cache-dir CMD ["dotnet", "build"] diff --git a/dotnetcore2.1/build/Dockerfile b/dotnetcore2.1/build/Dockerfile index 1e8fcf66..837f65ec 100644 --- a/dotnetcore2.1/build/Dockerfile +++ b/dotnetcore2.1/build/Dockerfile @@ -21,7 +21,7 @@ RUN rm -rf /var/runtime /var/lang && \ rm -rf /tmp/warmup /tmp/NuGetScratch /tmp/.dotnet # Add these as a separate layer as they get updated frequently -RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.41.0 aws-lambda-builders==0.7.0 --no-cache-dir && \ +RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.42.0 aws-lambda-builders==0.7.0 --no-cache-dir && \ dotnet tool install --global Amazon.Lambda.Tools --version 3.3.1 CMD ["dotnet", "build"] diff --git a/go1.x/build/Dockerfile b/go1.x/build/Dockerfile index ea5bc185..3e14ef29 100644 --- a/go1.x/build/Dockerfile +++ b/go1.x/build/Dockerfile @@ -16,6 +16,6 @@ RUN rm -rf /var/runtime /var/lang && \ go get golang.org/x/vgo # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.41.0 aws-lambda-builders==0.7.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.42.0 aws-lambda-builders==0.7.0 --no-cache-dir CMD ["dep", "ensure"] diff --git a/java11/build/Dockerfile b/java11/build/Dockerfile index 00aa14ee..f9ac6786 100644 --- a/java11/build/Dockerfile +++ b/java11/build/Dockerfile @@ -14,4 +14,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ ENV PATH="/usr/local/gradle/gradle-6.1.1/bin:/usr/local/maven/apache-maven-3.6.3/bin:${PATH}" # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.41.0 aws-lambda-builders==0.7.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.42.0 aws-lambda-builders==0.7.0 --no-cache-dir diff --git a/java8/build/Dockerfile b/java8/build/Dockerfile index 39a0e0f9..fd7e2887 100644 --- a/java8/build/Dockerfile +++ b/java8/build/Dockerfile @@ -15,4 +15,4 @@ RUN rm -rf /var/runtime /var/lang && \ ENV PATH="/usr/local/gradle/gradle-6.1.1/bin:/usr/local/maven/apache-maven-3.6.3/bin:${PATH}" # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.41.0 aws-lambda-builders==0.7.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.42.0 aws-lambda-builders==0.7.0 --no-cache-dir diff --git a/nodejs10.x/build/Dockerfile b/nodejs10.x/build/Dockerfile index 2589de67..d389405e 100644 --- a/nodejs10.x/build/Dockerfile +++ b/nodejs10.x/build/Dockerfile @@ -9,4 +9,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ curl https://lambci.s3.amazonaws.com/fs/nodejs10.x.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.41.0 aws-lambda-builders==0.7.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.42.0 aws-lambda-builders==0.7.0 --no-cache-dir diff --git a/nodejs12.x/build/Dockerfile b/nodejs12.x/build/Dockerfile index 1dfa732e..01e20522 100644 --- a/nodejs12.x/build/Dockerfile +++ b/nodejs12.x/build/Dockerfile @@ -9,4 +9,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ curl https://lambci.s3.amazonaws.com/fs/nodejs12.x.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.41.0 aws-lambda-builders==0.7.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.42.0 aws-lambda-builders==0.7.0 --no-cache-dir diff --git a/nodejs4.3/build/Dockerfile b/nodejs4.3/build/Dockerfile index aaf38c52..fcc1155c 100644 --- a/nodejs4.3/build/Dockerfile +++ b/nodejs4.3/build/Dockerfile @@ -10,6 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs4.3.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.41.0 aws-lambda-builders==0.7.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.42.0 aws-lambda-builders==0.7.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/nodejs6.10/build/Dockerfile b/nodejs6.10/build/Dockerfile index a5718e61..81f0a713 100644 --- a/nodejs6.10/build/Dockerfile +++ b/nodejs6.10/build/Dockerfile @@ -10,6 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs6.10.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.41.0 aws-lambda-builders==0.7.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.42.0 aws-lambda-builders==0.7.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/nodejs8.10/build/Dockerfile b/nodejs8.10/build/Dockerfile index 17282d32..ca5f8913 100644 --- a/nodejs8.10/build/Dockerfile +++ b/nodejs8.10/build/Dockerfile @@ -10,6 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs8.10.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.41.0 aws-lambda-builders==0.7.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.42.0 aws-lambda-builders==0.7.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/provided/build/Dockerfile b/provided/build/Dockerfile index 1d449885..80d2bdc8 100644 --- a/provided/build/Dockerfile +++ b/provided/build/Dockerfile @@ -1,4 +1,4 @@ FROM lambci/lambda-base:build # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.41.0 aws-lambda-builders==0.7.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.42.0 aws-lambda-builders==0.7.0 --no-cache-dir diff --git a/python3.6/build/Dockerfile b/python3.6/build/Dockerfile index 30065f56..7e666295 100644 --- a/python3.6/build/Dockerfile +++ b/python3.6/build/Dockerfile @@ -20,6 +20,6 @@ RUN rm -rf /var/runtime /var/lang && \ RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.3/get-poetry.py | POETRY_VERSION=1.0.3 python3 && \ - pip install -U awscli boto3 aws-sam-cli==0.41.0 aws-lambda-builders==0.7.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.42.0 aws-lambda-builders==0.7.0 --no-cache-dir ENV PATH=/root/.poetry/bin:$PATH diff --git a/python3.7/build/Dockerfile b/python3.7/build/Dockerfile index 06e65f5b..021cb12c 100644 --- a/python3.7/build/Dockerfile +++ b/python3.7/build/Dockerfile @@ -13,6 +13,6 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.3/get-poetry.py | POETRY_VERSION=1.0.3 python3 && \ - pip install -U awscli boto3 aws-sam-cli==0.41.0 aws-lambda-builders==0.7.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.42.0 aws-lambda-builders==0.7.0 --no-cache-dir ENV PATH=/root/.poetry/bin:$PATH diff --git a/python3.8/build/Dockerfile b/python3.8/build/Dockerfile index 697d6716..2434722e 100644 --- a/python3.8/build/Dockerfile +++ b/python3.8/build/Dockerfile @@ -13,6 +13,6 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.3/get-poetry.py | POETRY_VERSION=1.0.3 python3 && \ - pip install -U awscli boto3 aws-sam-cli==0.41.0 aws-lambda-builders==0.7.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.42.0 aws-lambda-builders==0.7.0 --no-cache-dir ENV PATH=/root/.poetry/bin:$PATH diff --git a/ruby2.5/build/Dockerfile b/ruby2.5/build/Dockerfile index 12a791ce..55cc3420 100644 --- a/ruby2.5/build/Dockerfile +++ b/ruby2.5/build/Dockerfile @@ -13,4 +13,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN gem update --system --no-document && \ gem install --no-document bundler -v '~> 2.1' && \ - pip install -U awscli boto3 aws-sam-cli==0.41.0 aws-lambda-builders==0.7.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.42.0 aws-lambda-builders==0.7.0 --no-cache-dir diff --git a/ruby2.7/build/Dockerfile b/ruby2.7/build/Dockerfile index 832065c8..f41b892f 100644 --- a/ruby2.7/build/Dockerfile +++ b/ruby2.7/build/Dockerfile @@ -13,4 +13,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN gem update --system --no-document && \ gem install --no-document bundler -v '~> 2.1' && \ - pip install -U awscli boto3 aws-sam-cli==0.41.0 aws-lambda-builders==0.7.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.42.0 aws-lambda-builders==0.7.0 --no-cache-dir From 7b2b5f9bd344c3ebe5cad9d773d6449cb6e0c4d0 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Fri, 21 Feb 2020 15:20:43 -0500 Subject: [PATCH 147/271] Update build images to aws-sam-cli 0.43.0 --- dotnetcore2.0/build/Dockerfile | 2 +- dotnetcore2.1/build/Dockerfile | 2 +- go1.x/build/Dockerfile | 2 +- java11/build/Dockerfile | 2 +- java8/build/Dockerfile | 2 +- nodejs10.x/build/Dockerfile | 2 +- nodejs12.x/build/Dockerfile | 2 +- nodejs4.3/build/Dockerfile | 2 +- nodejs6.10/build/Dockerfile | 2 +- nodejs8.10/build/Dockerfile | 2 +- provided/build/Dockerfile | 2 +- python3.6/build/Dockerfile | 2 +- python3.7/build/Dockerfile | 2 +- python3.8/build/Dockerfile | 2 +- ruby2.5/build/Dockerfile | 2 +- ruby2.7/build/Dockerfile | 2 +- 16 files changed, 16 insertions(+), 16 deletions(-) diff --git a/dotnetcore2.0/build/Dockerfile b/dotnetcore2.0/build/Dockerfile index 54bdf496..c806546a 100644 --- a/dotnetcore2.0/build/Dockerfile +++ b/dotnetcore2.0/build/Dockerfile @@ -20,6 +20,6 @@ RUN rm -rf /var/runtime /var/lang && \ rm -rf /tmp/warmup /tmp/NuGetScratch # Add these as a separate layer as they get updated frequently -RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.42.0 aws-lambda-builders==0.7.0 --no-cache-dir +RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.43.0 aws-lambda-builders==0.7.0 --no-cache-dir CMD ["dotnet", "build"] diff --git a/dotnetcore2.1/build/Dockerfile b/dotnetcore2.1/build/Dockerfile index 837f65ec..6417ce20 100644 --- a/dotnetcore2.1/build/Dockerfile +++ b/dotnetcore2.1/build/Dockerfile @@ -21,7 +21,7 @@ RUN rm -rf /var/runtime /var/lang && \ rm -rf /tmp/warmup /tmp/NuGetScratch /tmp/.dotnet # Add these as a separate layer as they get updated frequently -RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.42.0 aws-lambda-builders==0.7.0 --no-cache-dir && \ +RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.43.0 aws-lambda-builders==0.7.0 --no-cache-dir && \ dotnet tool install --global Amazon.Lambda.Tools --version 3.3.1 CMD ["dotnet", "build"] diff --git a/go1.x/build/Dockerfile b/go1.x/build/Dockerfile index 3e14ef29..39c753fd 100644 --- a/go1.x/build/Dockerfile +++ b/go1.x/build/Dockerfile @@ -16,6 +16,6 @@ RUN rm -rf /var/runtime /var/lang && \ go get golang.org/x/vgo # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.42.0 aws-lambda-builders==0.7.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.43.0 aws-lambda-builders==0.7.0 --no-cache-dir CMD ["dep", "ensure"] diff --git a/java11/build/Dockerfile b/java11/build/Dockerfile index f9ac6786..a90cca9e 100644 --- a/java11/build/Dockerfile +++ b/java11/build/Dockerfile @@ -14,4 +14,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ ENV PATH="/usr/local/gradle/gradle-6.1.1/bin:/usr/local/maven/apache-maven-3.6.3/bin:${PATH}" # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.42.0 aws-lambda-builders==0.7.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.43.0 aws-lambda-builders==0.7.0 --no-cache-dir diff --git a/java8/build/Dockerfile b/java8/build/Dockerfile index fd7e2887..83602dc7 100644 --- a/java8/build/Dockerfile +++ b/java8/build/Dockerfile @@ -15,4 +15,4 @@ RUN rm -rf /var/runtime /var/lang && \ ENV PATH="/usr/local/gradle/gradle-6.1.1/bin:/usr/local/maven/apache-maven-3.6.3/bin:${PATH}" # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.42.0 aws-lambda-builders==0.7.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.43.0 aws-lambda-builders==0.7.0 --no-cache-dir diff --git a/nodejs10.x/build/Dockerfile b/nodejs10.x/build/Dockerfile index d389405e..d0bc3cc3 100644 --- a/nodejs10.x/build/Dockerfile +++ b/nodejs10.x/build/Dockerfile @@ -9,4 +9,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ curl https://lambci.s3.amazonaws.com/fs/nodejs10.x.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.42.0 aws-lambda-builders==0.7.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.43.0 aws-lambda-builders==0.7.0 --no-cache-dir diff --git a/nodejs12.x/build/Dockerfile b/nodejs12.x/build/Dockerfile index 01e20522..29c8c9b3 100644 --- a/nodejs12.x/build/Dockerfile +++ b/nodejs12.x/build/Dockerfile @@ -9,4 +9,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ curl https://lambci.s3.amazonaws.com/fs/nodejs12.x.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.42.0 aws-lambda-builders==0.7.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.43.0 aws-lambda-builders==0.7.0 --no-cache-dir diff --git a/nodejs4.3/build/Dockerfile b/nodejs4.3/build/Dockerfile index fcc1155c..c1d6a14a 100644 --- a/nodejs4.3/build/Dockerfile +++ b/nodejs4.3/build/Dockerfile @@ -10,6 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs4.3.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.42.0 aws-lambda-builders==0.7.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.43.0 aws-lambda-builders==0.7.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/nodejs6.10/build/Dockerfile b/nodejs6.10/build/Dockerfile index 81f0a713..9efa92de 100644 --- a/nodejs6.10/build/Dockerfile +++ b/nodejs6.10/build/Dockerfile @@ -10,6 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs6.10.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.42.0 aws-lambda-builders==0.7.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.43.0 aws-lambda-builders==0.7.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/nodejs8.10/build/Dockerfile b/nodejs8.10/build/Dockerfile index ca5f8913..315cae3c 100644 --- a/nodejs8.10/build/Dockerfile +++ b/nodejs8.10/build/Dockerfile @@ -10,6 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs8.10.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.42.0 aws-lambda-builders==0.7.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.43.0 aws-lambda-builders==0.7.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/provided/build/Dockerfile b/provided/build/Dockerfile index 80d2bdc8..fe612b1c 100644 --- a/provided/build/Dockerfile +++ b/provided/build/Dockerfile @@ -1,4 +1,4 @@ FROM lambci/lambda-base:build # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.42.0 aws-lambda-builders==0.7.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.43.0 aws-lambda-builders==0.7.0 --no-cache-dir diff --git a/python3.6/build/Dockerfile b/python3.6/build/Dockerfile index 7e666295..55ed5fd9 100644 --- a/python3.6/build/Dockerfile +++ b/python3.6/build/Dockerfile @@ -20,6 +20,6 @@ RUN rm -rf /var/runtime /var/lang && \ RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.3/get-poetry.py | POETRY_VERSION=1.0.3 python3 && \ - pip install -U awscli boto3 aws-sam-cli==0.42.0 aws-lambda-builders==0.7.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.43.0 aws-lambda-builders==0.7.0 --no-cache-dir ENV PATH=/root/.poetry/bin:$PATH diff --git a/python3.7/build/Dockerfile b/python3.7/build/Dockerfile index 021cb12c..4ed70144 100644 --- a/python3.7/build/Dockerfile +++ b/python3.7/build/Dockerfile @@ -13,6 +13,6 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.3/get-poetry.py | POETRY_VERSION=1.0.3 python3 && \ - pip install -U awscli boto3 aws-sam-cli==0.42.0 aws-lambda-builders==0.7.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.43.0 aws-lambda-builders==0.7.0 --no-cache-dir ENV PATH=/root/.poetry/bin:$PATH diff --git a/python3.8/build/Dockerfile b/python3.8/build/Dockerfile index 2434722e..52064715 100644 --- a/python3.8/build/Dockerfile +++ b/python3.8/build/Dockerfile @@ -13,6 +13,6 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.3/get-poetry.py | POETRY_VERSION=1.0.3 python3 && \ - pip install -U awscli boto3 aws-sam-cli==0.42.0 aws-lambda-builders==0.7.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.43.0 aws-lambda-builders==0.7.0 --no-cache-dir ENV PATH=/root/.poetry/bin:$PATH diff --git a/ruby2.5/build/Dockerfile b/ruby2.5/build/Dockerfile index 55cc3420..10efa8b6 100644 --- a/ruby2.5/build/Dockerfile +++ b/ruby2.5/build/Dockerfile @@ -13,4 +13,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN gem update --system --no-document && \ gem install --no-document bundler -v '~> 2.1' && \ - pip install -U awscli boto3 aws-sam-cli==0.42.0 aws-lambda-builders==0.7.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.43.0 aws-lambda-builders==0.7.0 --no-cache-dir diff --git a/ruby2.7/build/Dockerfile b/ruby2.7/build/Dockerfile index f41b892f..45843ca4 100644 --- a/ruby2.7/build/Dockerfile +++ b/ruby2.7/build/Dockerfile @@ -13,4 +13,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN gem update --system --no-document && \ gem install --no-document bundler -v '~> 2.1' && \ - pip install -U awscli boto3 aws-sam-cli==0.42.0 aws-lambda-builders==0.7.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.43.0 aws-lambda-builders==0.7.0 --no-cache-dir From 6499a8151c5d23971c13e2cc0b3a667639196381 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Wed, 19 Feb 2020 15:41:34 -0500 Subject: [PATCH 148/271] Get rid of diff scripts, they're out of date and confusing --- base/diff-2.sh | 59 ------------------------------ base/diff.sh | 99 -------------------------------------------------- 2 files changed, 158 deletions(-) delete mode 100755 base/diff-2.sh delete mode 100755 base/diff.sh diff --git a/base/diff-2.sh b/base/diff-2.sh deleted file mode 100755 index 8028371f..00000000 --- a/base/diff-2.sh +++ /dev/null @@ -1,59 +0,0 @@ -#!/bin/bash - -RUNTIMES="nodejs10.x nodejs12.x python3.8 java11" - -rm -rf diff-2 -mkdir -p diff-2 - -for RUNTIME in $RUNTIMES; do - docker pull lambci/lambda:${RUNTIME} - - mkdir -p ./diff-2/${RUNTIME}/docker/var - CONTAINER=$(docker create lambci/lambda:${RUNTIME}) - docker cp ${CONTAINER}:/var/runtime ./diff-2/${RUNTIME}/docker/var - docker cp ${CONTAINER}:/var/lang ./diff-2/${RUNTIME}/docker/var - - curl https://lambci.s3.amazonaws.com/fs/${RUNTIME}.tgz > ./diff-2/${RUNTIME}.tgz - - mkdir -p ./diff-2/${RUNTIME}/lambda - tar -zxf ./diff-2/${RUNTIME}.tgz -C ./diff-2/${RUNTIME}/lambda -- var/runtime var/lang - - tar -ztf ./diff-2/${RUNTIME}.tgz | sed 's/\/$//' | sort > ./diff-2/${RUNTIME}/fs.lambda.txt -done - -curl https://lambci.s3.amazonaws.com/fs/base-2.tgz > ./diff-2/base-2.tgz - -{ tar -ztf ./diff-2/nodejs10.x.tgz; tar -ztf ./diff-2/base-2.tgz; } | grep -v '/$' \ - | grep -v '^dev/' | grep -v '^proc/' | grep -v '^sys/' | sort > ./diff-2/nodejs10.x/fs.lambda.txt - -docker run --rm --entrypoint bash lambci/lambda:nodejs10.x -c \ - 'find() { local d; for d in "$@"; do ls -1A "$d" | while read f; do i="$d/$f"; [ -d "$i" ] && [ ! -L "$i" ] && find "$i" || echo $i; done; done; }; find /' \ - | sed -E 's/^\/+//' | grep -v '^dev/' | grep -v '^proc/' | grep -v '^sys/' | sort > ./diff-2/nodejs10.x/fs.docker.txt - -DIFF_DIR="${PWD}/diff-2" - -cd ${DIFF_DIR}/nodejs10.x -pwd -diff fs.docker.txt fs.lambda.txt | grep -v 'var/runtime/' | grep -v 'var/lang' -echo -diff docker/var/runtime lambda/var/runtime -echo -diff -qr docker lambda - -cd ${DIFF_DIR}/nodejs12.x -pwd -diff docker/var/runtime lambda/var/runtime -diff -qr docker lambda -echo - -cd ${DIFF_DIR}/python3.8 -pwd -diff docker/var/runtime lambda/var/runtime -diff -qr docker lambda -echo - -cd ${DIFF_DIR}/java11 -pwd -diff docker/var/runtime lambda/var/runtime -diff -qr docker lambda -echo diff --git a/base/diff.sh b/base/diff.sh deleted file mode 100755 index c0370c9f..00000000 --- a/base/diff.sh +++ /dev/null @@ -1,99 +0,0 @@ -#!/bin/bash - -RUNTIMES="provided nodejs4.3 nodejs6.10 nodejs8.10 python2.7 python3.6 python3.7 ruby2.5 java8 go1.x dotnetcore2.0 dotnetcore2.1" - -rm -rf diff -mkdir -p diff - -for RUNTIME in $RUNTIMES; do - docker pull lambci/lambda:${RUNTIME} - - mkdir -p ./diff/${RUNTIME}/docker/var - CONTAINER=$(docker create lambci/lambda:${RUNTIME}) - docker cp ${CONTAINER}:/var/runtime ./diff/${RUNTIME}/docker/var - docker cp ${CONTAINER}:/var/lang ./diff/${RUNTIME}/docker/var - - curl https://lambci.s3.amazonaws.com/fs/${RUNTIME}.tgz > ./diff/${RUNTIME}.tgz - - mkdir -p ./diff/${RUNTIME}/lambda - tar -zxf ./diff/${RUNTIME}.tgz -C ./diff/${RUNTIME}/lambda -- var/runtime var/lang - - tar -ztf ./diff/${RUNTIME}.tgz | sed 's/\/$//' | sort > ./diff/${RUNTIME}/fs.lambda.txt - - curl https://lambci.s3.amazonaws.com/fs/${RUNTIME}.fs.txt > ./diff/${RUNTIME}/fs.full.lambda.txt -done - -curl https://lambci.s3.amazonaws.com/fs/base.tgz > ./diff/base.tgz - -{ tar -ztf ./diff/python2.7.tgz; tar -ztf ./diff/base.tgz; } | sed 's/\/$//' | sort > ./diff/python2.7/fs.lambda.txt - -docker run --rm --entrypoint find lambci/lambda:python2.7 / | sed 's/^\///' | sort > ./diff/python2.7/fs.docker.txt - -DIFF_DIR="${PWD}/diff" - -cd ${DIFF_DIR}/python2.7 -pwd -diff fs.docker.txt fs.lambda.txt | grep -v '^< dev/' | grep -v '^< proc/' | grep -v '^< sys/' | grep -v 'var/runtime/' -echo -diff docker/var/runtime/awslambda/bootstrap.py lambda/var/runtime/awslambda/bootstrap.py -diff -qr docker lambda -echo - -cd ${DIFF_DIR}/nodejs4.3 -pwd -diff docker/var/runtime/node_modules/awslambda/index.js lambda/var/runtime/node_modules/awslambda/index.js -diff -qr docker lambda -echo - -cd ${DIFF_DIR}/nodejs6.10 -pwd -diff docker/var/runtime/node_modules/awslambda/index.js lambda/var/runtime/node_modules/awslambda/index.js -diff -qr docker lambda -echo - -cd ${DIFF_DIR}/nodejs8.10 -pwd -diff docker/var/runtime/node_modules/awslambda/index.js lambda/var/runtime/node_modules/awslambda/index.js -diff -qr docker lambda -echo - -cd ${DIFF_DIR}/python3.6 -pwd -diff docker/var/runtime/awslambda/bootstrap.py lambda/var/runtime/awslambda/bootstrap.py -diff -qr docker lambda | grep -v __pycache__ -echo - -cd ${DIFF_DIR}/python3.7 -pwd -diff docker/var/runtime/bootstrap lambda/var/runtime/bootstrap -diff docker/var/runtime/bootstrap.py lambda/var/runtime/bootstrap.py -diff docker/var/runtime/lambda_runtime_client.py lambda/var/runtime/lambda_runtime_client.py -diff -qr docker lambda | grep -v __pycache__ -echo - -cd ${DIFF_DIR}/ruby2.5 -pwd -diff docker/var/runtime/bootstrap lambda/var/runtime/bootstrap -diff docker/var/runtime/lib lambda/var/runtime/lib -diff -qr docker lambda -echo - -cd ${DIFF_DIR}/java8 -pwd -diff -qr docker lambda -echo - -cd ${DIFF_DIR}/go1.x -pwd -diff -qr docker lambda -echo - -cd ${DIFF_DIR}/dotnetcore2.0 -pwd -diff -qr docker lambda -echo - -cd ${DIFF_DIR}/dotnetcore2.1 -pwd -diff -qr docker lambda -echo From e4e6effe5ada88d61d1a5258a89113adee28756d Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Sun, 23 Feb 2020 14:36:07 -0500 Subject: [PATCH 149/271] Drop aws-lambda-builders back to 0.4.0 on build-python2.7 image --- python2.7/build/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/python2.7/build/Dockerfile b/python2.7/build/Dockerfile index e419c140..d14a60e1 100644 --- a/python2.7/build/Dockerfile +++ b/python2.7/build/Dockerfile @@ -10,6 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ pip install -U virtualenv pipenv --no-cache-dir && \ curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.3/get-poetry.py | POETRY_VERSION=1.0.3 python && \ - pip install -U awscli boto3 aws-sam-cli==0.22.0 aws-lambda-builders==0.7.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.22.0 aws-lambda-builders==0.4.0 --no-cache-dir ENV PATH=/root/.poetry/bin:$PATH From 4fa75bbbae85813a82c8951726708e3b29760efc Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Sun, 23 Feb 2020 14:48:47 -0500 Subject: [PATCH 150/271] Lock virtualenv in build-python2.7 image --- python2.7/build/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/python2.7/build/Dockerfile b/python2.7/build/Dockerfile index d14a60e1..cdf9be6f 100644 --- a/python2.7/build/Dockerfile +++ b/python2.7/build/Dockerfile @@ -8,7 +8,7 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ - pip install -U virtualenv pipenv --no-cache-dir && \ + pip install -U 'virtualenv>=16.0.0,<20.0.0' pipenv --no-cache-dir && \ curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.3/get-poetry.py | POETRY_VERSION=1.0.3 python && \ pip install -U awscli boto3 aws-sam-cli==0.22.0 aws-lambda-builders==0.4.0 --no-cache-dir From 9dc4f4020183954b483ed4911d8cf743b2667da3 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Sun, 23 Feb 2020 14:53:41 -0500 Subject: [PATCH 151/271] Update build-python3.6 to Python 3.6.10 --- python3.6/build/Dockerfile | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/python3.6/build/Dockerfile b/python3.6/build/Dockerfile index 55ed5fd9..1632b33e 100644 --- a/python3.6/build/Dockerfile +++ b/python3.6/build/Dockerfile @@ -7,14 +7,15 @@ ENV PATH=/var/lang/bin:$PATH \ PKG_CONFIG_PATH=/var/lang/lib/pkgconfig:/usr/lib64/pkgconfig:/usr/share/pkgconfig RUN rm -rf /var/runtime /var/lang && \ + export PYTHON_VERSION=3.6.10 && \ curl https://lambci.s3.amazonaws.com/fs/python3.6.tgz | tar -xz -C / && \ sed -i '/^prefix=/c\prefix=/var/lang' /var/lang/lib/pkgconfig/python-3.6.pc && \ - curl https://www.python.org/ftp/python/3.6.9/Python-3.6.9.tar.xz | tar -xJ && \ - cd Python-3.6.9 && \ + curl https://www.python.org/ftp/python/${PYTHON_VERSION}/Python-${PYTHON_VERSION}.tar.xz | tar -xJ && \ + cd Python-${PYTHON_VERSION} && \ LIBS="$LIBS -lutil -lrt" ./configure --prefix=/var/lang && \ make -j$(getconf _NPROCESSORS_ONLN) libinstall libainstall inclinstall && \ cd .. && \ - rm -rf Python-3.6.9 + rm -rf Python-${PYTHON_VERSION} # Add these as a separate layer as they get updated frequently RUN pip install -U pip setuptools --no-cache-dir && \ From 28b32fed2d8445ce091e7347904c76b300d66acc Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Tue, 25 Feb 2020 16:50:19 -0500 Subject: [PATCH 152/271] Update to Go 1.14 for build-go1.x image --- base/dump-go1x/go.mod | 2 +- examples/go1.x/go.mod | 2 +- go1.x/build/Dockerfile | 2 +- go1.x/run/go.mod | 2 +- provided/run/go.mod | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/base/dump-go1x/go.mod b/base/dump-go1x/go.mod index 6e9e6186..54262d7d 100644 --- a/base/dump-go1x/go.mod +++ b/base/dump-go1x/go.mod @@ -5,4 +5,4 @@ require ( github.com/aws/aws-sdk-go-v2 v0.17.0 ) -go 1.13 +go 1.14 diff --git a/examples/go1.x/go.mod b/examples/go1.x/go.mod index 6130d509..258e8af4 100644 --- a/examples/go1.x/go.mod +++ b/examples/go1.x/go.mod @@ -2,4 +2,4 @@ module handler require github.com/aws/aws-lambda-go v1.13.3 -go 1.13 +go 1.14 diff --git a/go1.x/build/Dockerfile b/go1.x/build/Dockerfile index 39c753fd..2ea015d9 100644 --- a/go1.x/build/Dockerfile +++ b/go1.x/build/Dockerfile @@ -1,7 +1,7 @@ FROM lambci/lambda-base:build # https://golang.org/doc/devel/release.html -ENV GOLANG_VERSION=1.13.4 \ +ENV GOLANG_VERSION=1.14 \ GOPATH=/go \ PATH=/go/bin:/usr/local/go/bin:$PATH \ AWS_EXECUTION_ENV=AWS_Lambda_go1.x diff --git a/go1.x/run/go.mod b/go1.x/run/go.mod index d5a93364..21bd0b6d 100644 --- a/go1.x/run/go.mod +++ b/go1.x/run/go.mod @@ -2,4 +2,4 @@ module aws-lambda-mock require github.com/aws/aws-lambda-go v1.13.3 -go 1.13 +go 1.14 diff --git a/provided/run/go.mod b/provided/run/go.mod index e2aded75..d5e3372d 100644 --- a/provided/run/go.mod +++ b/provided/run/go.mod @@ -6,4 +6,4 @@ require ( github.com/rjeczalik/notify v0.9.2 ) -go 1.13 +go 1.14 From 238109c838206e67dd1691bfb5fb94babaf48c1f Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Thu, 5 Mar 2020 13:49:59 -0500 Subject: [PATCH 153/271] Update aws-lambda-builders to 0.8.0 - update gradle to 6.2.2 for java build images - update poetry to 1.0.5 for python build images --- dotnetcore2.0/build/Dockerfile | 2 +- dotnetcore2.1/build/Dockerfile | 2 +- go1.x/build/Dockerfile | 2 +- java11/build/Dockerfile | 6 +++--- java8/build/Dockerfile | 6 +++--- nodejs10.x/build/Dockerfile | 2 +- nodejs12.x/build/Dockerfile | 2 +- nodejs4.3/build/Dockerfile | 2 +- nodejs6.10/build/Dockerfile | 2 +- nodejs8.10/build/Dockerfile | 2 +- provided/build/Dockerfile | 2 +- python2.7/build/Dockerfile | 2 +- python3.6/build/Dockerfile | 4 ++-- python3.7/build/Dockerfile | 4 ++-- python3.8/build/Dockerfile | 4 ++-- ruby2.5/build/Dockerfile | 2 +- ruby2.7/build/Dockerfile | 2 +- 17 files changed, 24 insertions(+), 24 deletions(-) diff --git a/dotnetcore2.0/build/Dockerfile b/dotnetcore2.0/build/Dockerfile index c806546a..56300a39 100644 --- a/dotnetcore2.0/build/Dockerfile +++ b/dotnetcore2.0/build/Dockerfile @@ -20,6 +20,6 @@ RUN rm -rf /var/runtime /var/lang && \ rm -rf /tmp/warmup /tmp/NuGetScratch # Add these as a separate layer as they get updated frequently -RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.43.0 aws-lambda-builders==0.7.0 --no-cache-dir +RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.43.0 aws-lambda-builders==0.8.0 --no-cache-dir CMD ["dotnet", "build"] diff --git a/dotnetcore2.1/build/Dockerfile b/dotnetcore2.1/build/Dockerfile index 6417ce20..128fa38c 100644 --- a/dotnetcore2.1/build/Dockerfile +++ b/dotnetcore2.1/build/Dockerfile @@ -21,7 +21,7 @@ RUN rm -rf /var/runtime /var/lang && \ rm -rf /tmp/warmup /tmp/NuGetScratch /tmp/.dotnet # Add these as a separate layer as they get updated frequently -RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.43.0 aws-lambda-builders==0.7.0 --no-cache-dir && \ +RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.43.0 aws-lambda-builders==0.8.0 --no-cache-dir && \ dotnet tool install --global Amazon.Lambda.Tools --version 3.3.1 CMD ["dotnet", "build"] diff --git a/go1.x/build/Dockerfile b/go1.x/build/Dockerfile index 2ea015d9..a489f848 100644 --- a/go1.x/build/Dockerfile +++ b/go1.x/build/Dockerfile @@ -16,6 +16,6 @@ RUN rm -rf /var/runtime /var/lang && \ go get golang.org/x/vgo # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.43.0 aws-lambda-builders==0.7.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.43.0 aws-lambda-builders==0.8.0 --no-cache-dir CMD ["dep", "ensure"] diff --git a/java11/build/Dockerfile b/java11/build/Dockerfile index a90cca9e..1dc9ceef 100644 --- a/java11/build/Dockerfile +++ b/java11/build/Dockerfile @@ -6,12 +6,12 @@ ENV PATH=/var/lang/bin:$PATH \ RUN rm -rf /var/runtime /var/lang /var/rapid && \ curl https://lambci.s3.amazonaws.com/fs/java11.tgz | tar -zx -C / && \ - mkdir /usr/local/gradle && curl -L -o gradle.zip https://downloads.gradle-dn.com/distributions/gradle-6.1.1-bin.zip && \ + mkdir /usr/local/gradle && curl -L -o gradle.zip https://downloads.gradle-dn.com/distributions/gradle-6.2.2-bin.zip && \ unzip -d /usr/local/gradle gradle.zip && rm gradle.zip && mkdir /usr/local/maven && \ curl -L http://mirror.cc.columbia.edu/pub/software/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz | \ tar -zx -C /usr/local/maven -ENV PATH="/usr/local/gradle/gradle-6.1.1/bin:/usr/local/maven/apache-maven-3.6.3/bin:${PATH}" +ENV PATH="/usr/local/gradle/gradle-6.2.2/bin:/usr/local/maven/apache-maven-3.6.3/bin:${PATH}" # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.43.0 aws-lambda-builders==0.7.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.43.0 aws-lambda-builders==0.8.0 --no-cache-dir diff --git a/java8/build/Dockerfile b/java8/build/Dockerfile index 83602dc7..0af152d3 100644 --- a/java8/build/Dockerfile +++ b/java8/build/Dockerfile @@ -7,12 +7,12 @@ WORKDIR / RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/java8.tgz | tar -zx -C / && \ yum install -y java-1.8.0-openjdk-devel && \ - mkdir /usr/local/gradle && curl -L -o gradle.zip https://downloads.gradle-dn.com/distributions/gradle-6.1.1-bin.zip && \ + mkdir /usr/local/gradle && curl -L -o gradle.zip https://downloads.gradle-dn.com/distributions/gradle-6.2.2-bin.zip && \ unzip -d /usr/local/gradle gradle.zip && rm gradle.zip && mkdir /usr/local/maven && \ curl -L http://mirror.cc.columbia.edu/pub/software/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz | \ tar -zx -C /usr/local/maven -ENV PATH="/usr/local/gradle/gradle-6.1.1/bin:/usr/local/maven/apache-maven-3.6.3/bin:${PATH}" +ENV PATH="/usr/local/gradle/gradle-6.2.2/bin:/usr/local/maven/apache-maven-3.6.3/bin:${PATH}" # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.43.0 aws-lambda-builders==0.7.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.43.0 aws-lambda-builders==0.8.0 --no-cache-dir diff --git a/nodejs10.x/build/Dockerfile b/nodejs10.x/build/Dockerfile index d0bc3cc3..af82ae5b 100644 --- a/nodejs10.x/build/Dockerfile +++ b/nodejs10.x/build/Dockerfile @@ -9,4 +9,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ curl https://lambci.s3.amazonaws.com/fs/nodejs10.x.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.43.0 aws-lambda-builders==0.7.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.43.0 aws-lambda-builders==0.8.0 --no-cache-dir diff --git a/nodejs12.x/build/Dockerfile b/nodejs12.x/build/Dockerfile index 29c8c9b3..4ae5068b 100644 --- a/nodejs12.x/build/Dockerfile +++ b/nodejs12.x/build/Dockerfile @@ -9,4 +9,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ curl https://lambci.s3.amazonaws.com/fs/nodejs12.x.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.43.0 aws-lambda-builders==0.7.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.43.0 aws-lambda-builders==0.8.0 --no-cache-dir diff --git a/nodejs4.3/build/Dockerfile b/nodejs4.3/build/Dockerfile index c1d6a14a..1ac6c54f 100644 --- a/nodejs4.3/build/Dockerfile +++ b/nodejs4.3/build/Dockerfile @@ -10,6 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs4.3.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.43.0 aws-lambda-builders==0.7.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.43.0 aws-lambda-builders==0.8.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/nodejs6.10/build/Dockerfile b/nodejs6.10/build/Dockerfile index 9efa92de..1def5379 100644 --- a/nodejs6.10/build/Dockerfile +++ b/nodejs6.10/build/Dockerfile @@ -10,6 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs6.10.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.43.0 aws-lambda-builders==0.7.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.43.0 aws-lambda-builders==0.8.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/nodejs8.10/build/Dockerfile b/nodejs8.10/build/Dockerfile index 315cae3c..e9cdccdd 100644 --- a/nodejs8.10/build/Dockerfile +++ b/nodejs8.10/build/Dockerfile @@ -10,6 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs8.10.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.43.0 aws-lambda-builders==0.7.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.43.0 aws-lambda-builders==0.8.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/provided/build/Dockerfile b/provided/build/Dockerfile index fe612b1c..d3e29468 100644 --- a/provided/build/Dockerfile +++ b/provided/build/Dockerfile @@ -1,4 +1,4 @@ FROM lambci/lambda-base:build # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.43.0 aws-lambda-builders==0.7.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.43.0 aws-lambda-builders==0.8.0 --no-cache-dir diff --git a/python2.7/build/Dockerfile b/python2.7/build/Dockerfile index cdf9be6f..0a1980fd 100644 --- a/python2.7/build/Dockerfile +++ b/python2.7/build/Dockerfile @@ -9,7 +9,7 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ pip install -U 'virtualenv>=16.0.0,<20.0.0' pipenv --no-cache-dir && \ - curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.3/get-poetry.py | POETRY_VERSION=1.0.3 python && \ + curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.5/get-poetry.py | POETRY_VERSION=1.0.5 python && \ pip install -U awscli boto3 aws-sam-cli==0.22.0 aws-lambda-builders==0.4.0 --no-cache-dir ENV PATH=/root/.poetry/bin:$PATH diff --git a/python3.6/build/Dockerfile b/python3.6/build/Dockerfile index 1632b33e..0aa12a29 100644 --- a/python3.6/build/Dockerfile +++ b/python3.6/build/Dockerfile @@ -20,7 +20,7 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ - curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.3/get-poetry.py | POETRY_VERSION=1.0.3 python3 && \ - pip install -U awscli boto3 aws-sam-cli==0.43.0 aws-lambda-builders==0.7.0 --no-cache-dir + curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.5/get-poetry.py | POETRY_VERSION=1.0.5 python3 && \ + pip install -U awscli boto3 aws-sam-cli==0.43.0 aws-lambda-builders==0.8.0 --no-cache-dir ENV PATH=/root/.poetry/bin:$PATH diff --git a/python3.7/build/Dockerfile b/python3.7/build/Dockerfile index 4ed70144..feb94d15 100644 --- a/python3.7/build/Dockerfile +++ b/python3.7/build/Dockerfile @@ -12,7 +12,7 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ - curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.3/get-poetry.py | POETRY_VERSION=1.0.3 python3 && \ - pip install -U awscli boto3 aws-sam-cli==0.43.0 aws-lambda-builders==0.7.0 --no-cache-dir + curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.5/get-poetry.py | POETRY_VERSION=1.0.5 python3 && \ + pip install -U awscli boto3 aws-sam-cli==0.43.0 aws-lambda-builders==0.8.0 --no-cache-dir ENV PATH=/root/.poetry/bin:$PATH diff --git a/python3.8/build/Dockerfile b/python3.8/build/Dockerfile index 52064715..de7940c4 100644 --- a/python3.8/build/Dockerfile +++ b/python3.8/build/Dockerfile @@ -12,7 +12,7 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ - curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.3/get-poetry.py | POETRY_VERSION=1.0.3 python3 && \ - pip install -U awscli boto3 aws-sam-cli==0.43.0 aws-lambda-builders==0.7.0 --no-cache-dir + curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.5/get-poetry.py | POETRY_VERSION=1.0.5 python3 && \ + pip install -U awscli boto3 aws-sam-cli==0.43.0 aws-lambda-builders==0.8.0 --no-cache-dir ENV PATH=/root/.poetry/bin:$PATH diff --git a/ruby2.5/build/Dockerfile b/ruby2.5/build/Dockerfile index 10efa8b6..6f5d79f8 100644 --- a/ruby2.5/build/Dockerfile +++ b/ruby2.5/build/Dockerfile @@ -13,4 +13,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN gem update --system --no-document && \ gem install --no-document bundler -v '~> 2.1' && \ - pip install -U awscli boto3 aws-sam-cli==0.43.0 aws-lambda-builders==0.7.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.43.0 aws-lambda-builders==0.8.0 --no-cache-dir diff --git a/ruby2.7/build/Dockerfile b/ruby2.7/build/Dockerfile index 45843ca4..987b398a 100644 --- a/ruby2.7/build/Dockerfile +++ b/ruby2.7/build/Dockerfile @@ -13,4 +13,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN gem update --system --no-document && \ gem install --no-document bundler -v '~> 2.1' && \ - pip install -U awscli boto3 aws-sam-cli==0.43.0 aws-lambda-builders==0.7.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.43.0 aws-lambda-builders==0.8.0 --no-cache-dir From 46030e15d30d5a536d564bec5fd54644994bebec Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Tue, 10 Mar 2020 13:02:03 -0400 Subject: [PATCH 154/271] Update aws-sam-cli to 0.44.0 --- dotnetcore2.0/build/Dockerfile | 2 +- dotnetcore2.1/build/Dockerfile | 2 +- go1.x/build/Dockerfile | 2 +- java11/build/Dockerfile | 2 +- java8/build/Dockerfile | 2 +- nodejs10.x/build/Dockerfile | 2 +- nodejs12.x/build/Dockerfile | 2 +- nodejs4.3/build/Dockerfile | 2 +- nodejs6.10/build/Dockerfile | 2 +- nodejs8.10/build/Dockerfile | 2 +- provided/build/Dockerfile | 2 +- python3.6/build/Dockerfile | 2 +- python3.7/build/Dockerfile | 2 +- python3.8/build/Dockerfile | 2 +- ruby2.5/build/Dockerfile | 2 +- ruby2.7/build/Dockerfile | 2 +- 16 files changed, 16 insertions(+), 16 deletions(-) diff --git a/dotnetcore2.0/build/Dockerfile b/dotnetcore2.0/build/Dockerfile index 56300a39..854745e2 100644 --- a/dotnetcore2.0/build/Dockerfile +++ b/dotnetcore2.0/build/Dockerfile @@ -20,6 +20,6 @@ RUN rm -rf /var/runtime /var/lang && \ rm -rf /tmp/warmup /tmp/NuGetScratch # Add these as a separate layer as they get updated frequently -RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.43.0 aws-lambda-builders==0.8.0 --no-cache-dir +RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.44.0 aws-lambda-builders==0.8.0 --no-cache-dir CMD ["dotnet", "build"] diff --git a/dotnetcore2.1/build/Dockerfile b/dotnetcore2.1/build/Dockerfile index 128fa38c..a8c07c1d 100644 --- a/dotnetcore2.1/build/Dockerfile +++ b/dotnetcore2.1/build/Dockerfile @@ -21,7 +21,7 @@ RUN rm -rf /var/runtime /var/lang && \ rm -rf /tmp/warmup /tmp/NuGetScratch /tmp/.dotnet # Add these as a separate layer as they get updated frequently -RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.43.0 aws-lambda-builders==0.8.0 --no-cache-dir && \ +RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.44.0 aws-lambda-builders==0.8.0 --no-cache-dir && \ dotnet tool install --global Amazon.Lambda.Tools --version 3.3.1 CMD ["dotnet", "build"] diff --git a/go1.x/build/Dockerfile b/go1.x/build/Dockerfile index a489f848..c1c51bbf 100644 --- a/go1.x/build/Dockerfile +++ b/go1.x/build/Dockerfile @@ -16,6 +16,6 @@ RUN rm -rf /var/runtime /var/lang && \ go get golang.org/x/vgo # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.43.0 aws-lambda-builders==0.8.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.44.0 aws-lambda-builders==0.8.0 --no-cache-dir CMD ["dep", "ensure"] diff --git a/java11/build/Dockerfile b/java11/build/Dockerfile index 1dc9ceef..bd63bd8e 100644 --- a/java11/build/Dockerfile +++ b/java11/build/Dockerfile @@ -14,4 +14,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ ENV PATH="/usr/local/gradle/gradle-6.2.2/bin:/usr/local/maven/apache-maven-3.6.3/bin:${PATH}" # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.43.0 aws-lambda-builders==0.8.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.44.0 aws-lambda-builders==0.8.0 --no-cache-dir diff --git a/java8/build/Dockerfile b/java8/build/Dockerfile index 0af152d3..c9d23864 100644 --- a/java8/build/Dockerfile +++ b/java8/build/Dockerfile @@ -15,4 +15,4 @@ RUN rm -rf /var/runtime /var/lang && \ ENV PATH="/usr/local/gradle/gradle-6.2.2/bin:/usr/local/maven/apache-maven-3.6.3/bin:${PATH}" # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.43.0 aws-lambda-builders==0.8.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.44.0 aws-lambda-builders==0.8.0 --no-cache-dir diff --git a/nodejs10.x/build/Dockerfile b/nodejs10.x/build/Dockerfile index af82ae5b..b8f26751 100644 --- a/nodejs10.x/build/Dockerfile +++ b/nodejs10.x/build/Dockerfile @@ -9,4 +9,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ curl https://lambci.s3.amazonaws.com/fs/nodejs10.x.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.43.0 aws-lambda-builders==0.8.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.44.0 aws-lambda-builders==0.8.0 --no-cache-dir diff --git a/nodejs12.x/build/Dockerfile b/nodejs12.x/build/Dockerfile index 4ae5068b..108a1933 100644 --- a/nodejs12.x/build/Dockerfile +++ b/nodejs12.x/build/Dockerfile @@ -9,4 +9,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ curl https://lambci.s3.amazonaws.com/fs/nodejs12.x.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.43.0 aws-lambda-builders==0.8.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.44.0 aws-lambda-builders==0.8.0 --no-cache-dir diff --git a/nodejs4.3/build/Dockerfile b/nodejs4.3/build/Dockerfile index 1ac6c54f..0251db72 100644 --- a/nodejs4.3/build/Dockerfile +++ b/nodejs4.3/build/Dockerfile @@ -10,6 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs4.3.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.43.0 aws-lambda-builders==0.8.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.44.0 aws-lambda-builders==0.8.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/nodejs6.10/build/Dockerfile b/nodejs6.10/build/Dockerfile index 1def5379..0dabd4b4 100644 --- a/nodejs6.10/build/Dockerfile +++ b/nodejs6.10/build/Dockerfile @@ -10,6 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs6.10.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.43.0 aws-lambda-builders==0.8.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.44.0 aws-lambda-builders==0.8.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/nodejs8.10/build/Dockerfile b/nodejs8.10/build/Dockerfile index e9cdccdd..54046c81 100644 --- a/nodejs8.10/build/Dockerfile +++ b/nodejs8.10/build/Dockerfile @@ -10,6 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs8.10.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.43.0 aws-lambda-builders==0.8.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.44.0 aws-lambda-builders==0.8.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/provided/build/Dockerfile b/provided/build/Dockerfile index d3e29468..d0c3e177 100644 --- a/provided/build/Dockerfile +++ b/provided/build/Dockerfile @@ -1,4 +1,4 @@ FROM lambci/lambda-base:build # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.43.0 aws-lambda-builders==0.8.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.44.0 aws-lambda-builders==0.8.0 --no-cache-dir diff --git a/python3.6/build/Dockerfile b/python3.6/build/Dockerfile index 0aa12a29..36167458 100644 --- a/python3.6/build/Dockerfile +++ b/python3.6/build/Dockerfile @@ -21,6 +21,6 @@ RUN rm -rf /var/runtime /var/lang && \ RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.5/get-poetry.py | POETRY_VERSION=1.0.5 python3 && \ - pip install -U awscli boto3 aws-sam-cli==0.43.0 aws-lambda-builders==0.8.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.44.0 aws-lambda-builders==0.8.0 --no-cache-dir ENV PATH=/root/.poetry/bin:$PATH diff --git a/python3.7/build/Dockerfile b/python3.7/build/Dockerfile index feb94d15..b3a98dc0 100644 --- a/python3.7/build/Dockerfile +++ b/python3.7/build/Dockerfile @@ -13,6 +13,6 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.5/get-poetry.py | POETRY_VERSION=1.0.5 python3 && \ - pip install -U awscli boto3 aws-sam-cli==0.43.0 aws-lambda-builders==0.8.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.44.0 aws-lambda-builders==0.8.0 --no-cache-dir ENV PATH=/root/.poetry/bin:$PATH diff --git a/python3.8/build/Dockerfile b/python3.8/build/Dockerfile index de7940c4..bf63fd4a 100644 --- a/python3.8/build/Dockerfile +++ b/python3.8/build/Dockerfile @@ -13,6 +13,6 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.5/get-poetry.py | POETRY_VERSION=1.0.5 python3 && \ - pip install -U awscli boto3 aws-sam-cli==0.43.0 aws-lambda-builders==0.8.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.44.0 aws-lambda-builders==0.8.0 --no-cache-dir ENV PATH=/root/.poetry/bin:$PATH diff --git a/ruby2.5/build/Dockerfile b/ruby2.5/build/Dockerfile index 6f5d79f8..6225e25f 100644 --- a/ruby2.5/build/Dockerfile +++ b/ruby2.5/build/Dockerfile @@ -13,4 +13,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN gem update --system --no-document && \ gem install --no-document bundler -v '~> 2.1' && \ - pip install -U awscli boto3 aws-sam-cli==0.43.0 aws-lambda-builders==0.8.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.44.0 aws-lambda-builders==0.8.0 --no-cache-dir diff --git a/ruby2.7/build/Dockerfile b/ruby2.7/build/Dockerfile index 987b398a..50c12f7a 100644 --- a/ruby2.7/build/Dockerfile +++ b/ruby2.7/build/Dockerfile @@ -13,4 +13,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN gem update --system --no-document && \ gem install --no-document bundler -v '~> 2.1' && \ - pip install -U awscli boto3 aws-sam-cli==0.43.0 aws-lambda-builders==0.8.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.44.0 aws-lambda-builders==0.8.0 --no-cache-dir From ec4828c9c8b9e280bc1cb301d49084069021043e Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Thu, 26 Mar 2020 22:25:31 -0400 Subject: [PATCH 155/271] Update aws-sam-cli in build images to 0.46.2 --- dotnetcore2.0/build/Dockerfile | 2 +- dotnetcore2.1/build/Dockerfile | 2 +- go1.x/build/Dockerfile | 2 +- java11/build/Dockerfile | 2 +- java8/build/Dockerfile | 2 +- nodejs10.x/build/Dockerfile | 2 +- nodejs12.x/build/Dockerfile | 2 +- nodejs4.3/build/Dockerfile | 2 +- nodejs6.10/build/Dockerfile | 2 +- nodejs8.10/build/Dockerfile | 2 +- provided/build/Dockerfile | 2 +- python3.6/build/Dockerfile | 2 +- python3.7/build/Dockerfile | 2 +- python3.8/build/Dockerfile | 2 +- ruby2.5/build/Dockerfile | 2 +- ruby2.7/build/Dockerfile | 2 +- 16 files changed, 16 insertions(+), 16 deletions(-) diff --git a/dotnetcore2.0/build/Dockerfile b/dotnetcore2.0/build/Dockerfile index 854745e2..20f1ef4a 100644 --- a/dotnetcore2.0/build/Dockerfile +++ b/dotnetcore2.0/build/Dockerfile @@ -20,6 +20,6 @@ RUN rm -rf /var/runtime /var/lang && \ rm -rf /tmp/warmup /tmp/NuGetScratch # Add these as a separate layer as they get updated frequently -RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.44.0 aws-lambda-builders==0.8.0 --no-cache-dir +RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.46.2 aws-lambda-builders==0.8.0 --no-cache-dir CMD ["dotnet", "build"] diff --git a/dotnetcore2.1/build/Dockerfile b/dotnetcore2.1/build/Dockerfile index a8c07c1d..0113e36c 100644 --- a/dotnetcore2.1/build/Dockerfile +++ b/dotnetcore2.1/build/Dockerfile @@ -21,7 +21,7 @@ RUN rm -rf /var/runtime /var/lang && \ rm -rf /tmp/warmup /tmp/NuGetScratch /tmp/.dotnet # Add these as a separate layer as they get updated frequently -RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.44.0 aws-lambda-builders==0.8.0 --no-cache-dir && \ +RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.46.2 aws-lambda-builders==0.8.0 --no-cache-dir && \ dotnet tool install --global Amazon.Lambda.Tools --version 3.3.1 CMD ["dotnet", "build"] diff --git a/go1.x/build/Dockerfile b/go1.x/build/Dockerfile index c1c51bbf..62eb348c 100644 --- a/go1.x/build/Dockerfile +++ b/go1.x/build/Dockerfile @@ -16,6 +16,6 @@ RUN rm -rf /var/runtime /var/lang && \ go get golang.org/x/vgo # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.44.0 aws-lambda-builders==0.8.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.46.2 aws-lambda-builders==0.8.0 --no-cache-dir CMD ["dep", "ensure"] diff --git a/java11/build/Dockerfile b/java11/build/Dockerfile index bd63bd8e..b2d2a3d7 100644 --- a/java11/build/Dockerfile +++ b/java11/build/Dockerfile @@ -14,4 +14,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ ENV PATH="/usr/local/gradle/gradle-6.2.2/bin:/usr/local/maven/apache-maven-3.6.3/bin:${PATH}" # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.44.0 aws-lambda-builders==0.8.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.46.2 aws-lambda-builders==0.8.0 --no-cache-dir diff --git a/java8/build/Dockerfile b/java8/build/Dockerfile index c9d23864..cf02f804 100644 --- a/java8/build/Dockerfile +++ b/java8/build/Dockerfile @@ -15,4 +15,4 @@ RUN rm -rf /var/runtime /var/lang && \ ENV PATH="/usr/local/gradle/gradle-6.2.2/bin:/usr/local/maven/apache-maven-3.6.3/bin:${PATH}" # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.44.0 aws-lambda-builders==0.8.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.46.2 aws-lambda-builders==0.8.0 --no-cache-dir diff --git a/nodejs10.x/build/Dockerfile b/nodejs10.x/build/Dockerfile index b8f26751..155d0209 100644 --- a/nodejs10.x/build/Dockerfile +++ b/nodejs10.x/build/Dockerfile @@ -9,4 +9,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ curl https://lambci.s3.amazonaws.com/fs/nodejs10.x.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.44.0 aws-lambda-builders==0.8.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.46.2 aws-lambda-builders==0.8.0 --no-cache-dir diff --git a/nodejs12.x/build/Dockerfile b/nodejs12.x/build/Dockerfile index 108a1933..7c5a5745 100644 --- a/nodejs12.x/build/Dockerfile +++ b/nodejs12.x/build/Dockerfile @@ -9,4 +9,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ curl https://lambci.s3.amazonaws.com/fs/nodejs12.x.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.44.0 aws-lambda-builders==0.8.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.46.2 aws-lambda-builders==0.8.0 --no-cache-dir diff --git a/nodejs4.3/build/Dockerfile b/nodejs4.3/build/Dockerfile index 0251db72..0533b0ba 100644 --- a/nodejs4.3/build/Dockerfile +++ b/nodejs4.3/build/Dockerfile @@ -10,6 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs4.3.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.44.0 aws-lambda-builders==0.8.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.46.2 aws-lambda-builders==0.8.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/nodejs6.10/build/Dockerfile b/nodejs6.10/build/Dockerfile index 0dabd4b4..4d786f0f 100644 --- a/nodejs6.10/build/Dockerfile +++ b/nodejs6.10/build/Dockerfile @@ -10,6 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs6.10.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.44.0 aws-lambda-builders==0.8.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.46.2 aws-lambda-builders==0.8.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/nodejs8.10/build/Dockerfile b/nodejs8.10/build/Dockerfile index 54046c81..4aa6ff11 100644 --- a/nodejs8.10/build/Dockerfile +++ b/nodejs8.10/build/Dockerfile @@ -10,6 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs8.10.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.44.0 aws-lambda-builders==0.8.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.46.2 aws-lambda-builders==0.8.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/provided/build/Dockerfile b/provided/build/Dockerfile index d0c3e177..e252cd69 100644 --- a/provided/build/Dockerfile +++ b/provided/build/Dockerfile @@ -1,4 +1,4 @@ FROM lambci/lambda-base:build # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.44.0 aws-lambda-builders==0.8.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.46.2 aws-lambda-builders==0.8.0 --no-cache-dir diff --git a/python3.6/build/Dockerfile b/python3.6/build/Dockerfile index 36167458..9dd9e2ba 100644 --- a/python3.6/build/Dockerfile +++ b/python3.6/build/Dockerfile @@ -21,6 +21,6 @@ RUN rm -rf /var/runtime /var/lang && \ RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.5/get-poetry.py | POETRY_VERSION=1.0.5 python3 && \ - pip install -U awscli boto3 aws-sam-cli==0.44.0 aws-lambda-builders==0.8.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.46.2 aws-lambda-builders==0.8.0 --no-cache-dir ENV PATH=/root/.poetry/bin:$PATH diff --git a/python3.7/build/Dockerfile b/python3.7/build/Dockerfile index b3a98dc0..de86449f 100644 --- a/python3.7/build/Dockerfile +++ b/python3.7/build/Dockerfile @@ -13,6 +13,6 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.5/get-poetry.py | POETRY_VERSION=1.0.5 python3 && \ - pip install -U awscli boto3 aws-sam-cli==0.44.0 aws-lambda-builders==0.8.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.46.2 aws-lambda-builders==0.8.0 --no-cache-dir ENV PATH=/root/.poetry/bin:$PATH diff --git a/python3.8/build/Dockerfile b/python3.8/build/Dockerfile index bf63fd4a..026ce47b 100644 --- a/python3.8/build/Dockerfile +++ b/python3.8/build/Dockerfile @@ -13,6 +13,6 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.5/get-poetry.py | POETRY_VERSION=1.0.5 python3 && \ - pip install -U awscli boto3 aws-sam-cli==0.44.0 aws-lambda-builders==0.8.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.46.2 aws-lambda-builders==0.8.0 --no-cache-dir ENV PATH=/root/.poetry/bin:$PATH diff --git a/ruby2.5/build/Dockerfile b/ruby2.5/build/Dockerfile index 6225e25f..fbce4a60 100644 --- a/ruby2.5/build/Dockerfile +++ b/ruby2.5/build/Dockerfile @@ -13,4 +13,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN gem update --system --no-document && \ gem install --no-document bundler -v '~> 2.1' && \ - pip install -U awscli boto3 aws-sam-cli==0.44.0 aws-lambda-builders==0.8.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.46.2 aws-lambda-builders==0.8.0 --no-cache-dir diff --git a/ruby2.7/build/Dockerfile b/ruby2.7/build/Dockerfile index 50c12f7a..76c179f7 100644 --- a/ruby2.7/build/Dockerfile +++ b/ruby2.7/build/Dockerfile @@ -13,4 +13,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN gem update --system --no-document && \ gem install --no-document bundler -v '~> 2.1' && \ - pip install -U awscli boto3 aws-sam-cli==0.44.0 aws-lambda-builders==0.8.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.46.2 aws-lambda-builders==0.8.0 --no-cache-dir From ab9d48d0bc2f3edfe95bde2ea7bb56fb91e031ad Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Fri, 27 Mar 2020 16:04:57 -0400 Subject: [PATCH 156/271] Add dotnetcore3.1 runtime --- .gitignore | 5 + README.md | 8 +- base/build-all.sh | 2 +- base/dump-dotnetcore31/Function.cs | 78 +++++++++++++++ .../aws-lambda-tools-defaults.json | 8 ++ .../dump-dotnetcore31.csproj | 20 ++++ base/dump.sh | 2 +- base/publish-all.sh | 2 +- base/tag-all.sh | 2 +- base/test-all.sh | 4 + dotnetcore3.1/build/Dockerfile | 26 +++++ dotnetcore3.1/run/Dockerfile | 21 ++++ examples/dotnetcore3.1/Function.cs | 30 ++++++ examples/dotnetcore3.1/README.md | 9 ++ examples/dotnetcore3.1/test.csproj | 13 +++ examples/dotnetcore3.1/test.sln | 17 ++++ project.code-workspace | 98 ++++++++++--------- 17 files changed, 292 insertions(+), 53 deletions(-) create mode 100644 base/dump-dotnetcore31/Function.cs create mode 100644 base/dump-dotnetcore31/aws-lambda-tools-defaults.json create mode 100644 base/dump-dotnetcore31/dump-dotnetcore31.csproj create mode 100644 dotnetcore3.1/build/Dockerfile create mode 100644 dotnetcore3.1/run/Dockerfile create mode 100644 examples/dotnetcore3.1/Function.cs create mode 100644 examples/dotnetcore3.1/README.md create mode 100644 examples/dotnetcore3.1/test.csproj create mode 100644 examples/dotnetcore3.1/test.sln diff --git a/.gitignore b/.gitignore index 69e3ff9d..4525d854 100644 --- a/.gitignore +++ b/.gitignore @@ -14,6 +14,8 @@ base/dump-dotnetcore20/bin base/dump-dotnetcore20/obj base/dump-dotnetcore21/bin base/dump-dotnetcore21/obj +base/dump-dotnetcore31/bin +base/dump-dotnetcore31/obj dotnetcore2.0/run/MockBootstraps/bin dotnetcore2.0/run/MockBootstraps/obj dotnetcore2.1/run/MockBootstraps/bin @@ -25,6 +27,9 @@ examples/dotnetcore2.0/pub examples/dotnetcore2.1/bin examples/dotnetcore2.1/obj examples/dotnetcore2.1/pub +examples/dotnetcore3.1/bin +examples/dotnetcore3.1/obj +examples/dotnetcore3.1/pub examples/java/bin examples/java/build examples/go1.x/handler diff --git a/README.md b/README.md index 08b1dcde..907bfaf2 100644 --- a/README.md +++ b/README.md @@ -197,9 +197,9 @@ docker run --rm -v "$PWD":/var/task:ro,delegated lambci/lambda:go1.x my_handler # http://docs.aws.amazon.com/lambda/latest/dg/create-deployment-pkg-zip-java.html docker run --rm -v "$PWD":/var/task:ro,delegated lambci/lambda:java11 org.myorg.MyHandler -# Test on .NET Core 2.1 given a test.dll assembly in the current directory, +# Test on .NET Core 3.1 given a test.dll assembly in the current directory, # a class named Function with a FunctionHandler method, and a custom event -docker run --rm -v "$PWD":/var/task:ro,delegated lambci/lambda:dotnetcore2.1 test::test.Function::FunctionHandler '{"some": "event"}' +docker run --rm -v "$PWD":/var/task:ro,delegated lambci/lambda:dotnetcore3.1 test::test.Function::FunctionHandler '{"some": "event"}' # Test with a provided runtime (assumes you have a `bootstrap` executable in the current directory) docker run --rm -v "$PWD":/var/task:ro,delegated lambci/lambda:provided handler '{"some": "event"}' @@ -233,7 +233,7 @@ docker run --rm -v "$PWD":/go/src/handler lambci/lambda:build-go1.x go mod downl # For .NET Core, this will publish the compiled code to `./pub`, # which you can then use to run with `-v "$PWD"/pub:/var/task` -docker run --rm -v "$PWD":/var/task lambci/lambda:build-dotnetcore2.1 dotnet publish -c Release -o pub +docker run --rm -v "$PWD":/var/task lambci/lambda:build-dotnetcore3.1 dotnet publish -c Release -o pub # Run custom commands on a build container docker run --rm lambci/lambda:build-python3.8 aws --version @@ -312,6 +312,7 @@ These follow the Lambda runtime names: - `go1.x` - `dotnetcore2.0` - `dotnetcore2.1` + - `dotnetcore3.1` - `provided` - `build-nodejs4.3` - `build-nodejs6.10` @@ -329,6 +330,7 @@ These follow the Lambda runtime names: - `build-go1.x` - `build-dotnetcore2.0` - `build-dotnetcore2.1` + - `build-dotnetcore3.1` - `build-provided` ## Verifying images diff --git a/base/build-all.sh b/base/build-all.sh index 6b6b2b5e..92556d58 100755 --- a/base/build-all.sh +++ b/base/build-all.sh @@ -1,6 +1,6 @@ #!/bin/bash -RUNTIMES="provided go1.x nodejs4.3 nodejs6.10 nodejs8.10 nodejs10.x nodejs12.x python2.7 python3.6 python3.7 python3.8 ruby2.5 ruby2.7 java8 java11 dotnetcore2.0 dotnetcore2.1" +RUNTIMES="provided go1.x nodejs4.3 nodejs6.10 nodejs8.10 nodejs10.x nodejs12.x python2.7 python3.6 python3.7 python3.8 ruby2.5 ruby2.7 java8 java11 dotnetcore2.0 dotnetcore2.1 dotnetcore3.1" TOP_DIR="${PWD}/.." diff --git a/base/dump-dotnetcore31/Function.cs b/base/dump-dotnetcore31/Function.cs new file mode 100644 index 00000000..6cf55546 --- /dev/null +++ b/base/dump-dotnetcore31/Function.cs @@ -0,0 +1,78 @@ +using System; +using System.Diagnostics; +using System.IO; +using System.Threading.Tasks; + +using Amazon.Lambda.Core; +using Amazon.S3; + +[assembly: LambdaSerializer(typeof(Amazon.Lambda.Serialization.Json.JsonSerializer))] + +namespace dump_dotnetcore31 +{ + public class Function + { + /// + /// Lambda function to dump the container directories /var/lang + /// and /var/runtime and upload the resulting archive to S3 + /// + /// + public async Task FunctionHandler(object invokeEvent, ILambdaContext context) + { + string filename = "dotnetcore3.1.tgz"; + string cmd = $"tar -cpzf /tmp/{filename} --numeric-owner --ignore-failed-read /var/runtime /var/lang"; + + Console.WriteLine($"invokeEvent: {invokeEvent}"); + Console.WriteLine($"context.RemainingTime: {context.RemainingTime}"); + + Console.WriteLine("Parent cmdline:"); + Console.WriteLine(File.ReadAllText("/proc/1/cmdline").Replace("\0", " ")); + + Console.WriteLine("Parent env:"); + RunShell("xargs --null --max-args=1 < /proc/1/environ"); + + Console.WriteLine("This cmdline:"); + Console.WriteLine(File.ReadAllText($"/proc/{Process.GetCurrentProcess().Id}/cmdline").Replace("\0", " ")); + + Console.WriteLine("This env:"); + RunShell($"xargs --null --max-args=1 < /proc/{Process.GetCurrentProcess().Id}/environ"); + + Console.WriteLine($"Current working directory: {Directory.GetCurrentDirectory()}"); + + RunShell(cmd); + + Console.WriteLine("Zipping done! Uploading..."); + + var s3Client = new AmazonS3Client(); + var response = await s3Client.PutObjectAsync(new Amazon.S3.Model.PutObjectRequest + { + BucketName = "lambci", + Key = $"fs/{filename}", + FilePath = $"/tmp/{filename}", + CannedACL = S3CannedACL.PublicRead, + }); + + Console.WriteLine("Uploading done!"); + + return response.HttpStatusCode.ToString(); + } + + private static Process RunShell(string cmd) + { + var escapedArgs = cmd.Replace("\"", "\\\""); + var process = new Process + { + StartInfo = new ProcessStartInfo + { + FileName = "/bin/sh", + Arguments = $"-c \"{escapedArgs}\"", + UseShellExecute = false, + CreateNoWindow = true, + } + }; + process.Start(); + process.WaitForExit(); + return process; + } + } +} diff --git a/base/dump-dotnetcore31/aws-lambda-tools-defaults.json b/base/dump-dotnetcore31/aws-lambda-tools-defaults.json new file mode 100644 index 00000000..426ac9cb --- /dev/null +++ b/base/dump-dotnetcore31/aws-lambda-tools-defaults.json @@ -0,0 +1,8 @@ +{ + "configuration": "Release", + "framework": "netcoreapp3.1", + "function-runtime": "dotnetcore3.1", + "function-memory-size": 3008, + "function-timeout": 60, + "function-handler": "dump_dotnetcore31::dump_dotnetcore31.Function::FunctionHandler" +} diff --git a/base/dump-dotnetcore31/dump-dotnetcore31.csproj b/base/dump-dotnetcore31/dump-dotnetcore31.csproj new file mode 100644 index 00000000..8785cb12 --- /dev/null +++ b/base/dump-dotnetcore31/dump-dotnetcore31.csproj @@ -0,0 +1,20 @@ + + + + netcoreapp3.1 + dump_dotnetcore31 + true + dump_dotnetcore31 + + + + + + + + + + + + + diff --git a/base/dump.sh b/base/dump.sh index 32628a1f..608e2bae 100755 --- a/base/dump.sh +++ b/base/dump.sh @@ -1,6 +1,6 @@ #!/bin/bash -RUNTIMES="node43 node610 node810 node10x node12x python27 python36 python37 python38 ruby25 ruby27 java8 java11 go1x dotnetcore20 dotnetcore21 provided" +RUNTIMES="node43 node610 node810 node10x node12x python27 python36 python37 python38 ruby25 ruby27 java8 java11 go1x dotnetcore20 dotnetcore21 dotnetcore31 provided" for RUNTIME in $RUNTIMES; do echo $RUNTIME diff --git a/base/publish-all.sh b/base/publish-all.sh index 9c49e46a..f2bc7842 100755 --- a/base/publish-all.sh +++ b/base/publish-all.sh @@ -1,6 +1,6 @@ #!/bin/bash -RUNTIMES="provided go1.x nodejs4.3 nodejs6.10 nodejs8.10 nodejs10.x nodejs12.x python2.7 python3.6 python3.7 python3.8 ruby2.5 ruby2.7 java8 java11 dotnetcore2.0 dotnetcore2.1" +RUNTIMES="provided go1.x nodejs4.3 nodejs6.10 nodejs8.10 nodejs10.x nodejs12.x python2.7 python3.6 python3.7 python3.8 ruby2.5 ruby2.7 java8 java11 dotnetcore2.0 dotnetcore2.1 dotnetcore3.1" echo -n "Enter repository passphrase: " read -s DOCKER_CONTENT_TRUST_REPOSITORY_PASSPHRASE diff --git a/base/tag-all.sh b/base/tag-all.sh index 3aa38820..2e36b3e0 100755 --- a/base/tag-all.sh +++ b/base/tag-all.sh @@ -1,6 +1,6 @@ #!/bin/bash -RUNTIMES="provided go1.x nodejs4.3 nodejs6.10 nodejs8.10 nodejs10.x nodejs12.x python2.7 python3.6 python3.7 python3.8 ruby2.5 ruby2.7 java8 java11 dotnetcore2.0 dotnetcore2.1" +RUNTIMES="provided go1.x nodejs4.3 nodejs6.10 nodejs8.10 nodejs10.x nodejs12.x python2.7 python3.6 python3.7 python3.8 ruby2.5 ruby2.7 java8 java11 dotnetcore2.0 dotnetcore2.1 dotnetcore3.1" git tag -f latest diff --git a/base/test-all.sh b/base/test-all.sh index b00d7617..13656d00 100755 --- a/base/test-all.sh +++ b/base/test-all.sh @@ -44,6 +44,10 @@ cd ${EXAMPLES_DIR}/dotnetcore2.1 docker run --rm -v "$PWD":/var/task lambci/lambda:build-dotnetcore2.1 dotnet publish -c Release -o pub docker run --rm -v "$PWD"/pub:/var/task lambci/lambda:dotnetcore2.1 test::test.Function::FunctionHandler '{"some": "event"}' +cd ${EXAMPLES_DIR}/dotnetcore3.1 +docker run --rm -v "$PWD":/var/task lambci/lambda:build-dotnetcore3.1 dotnet publish -c Release -o pub +docker run --rm -v "$PWD"/pub:/var/task lambci/lambda:dotnetcore3.1 test::test.Function::FunctionHandler '{"some": "event"}' + cd ${EXAMPLES_DIR}/go1.x docker run --rm -v "$PWD":/go/src/handler lambci/lambda:build-go1.x sh -c 'go mod download && go build handler.go' docker run --rm -v "$PWD":/var/task lambci/lambda:go1.x handler '{"Records": []}' diff --git a/dotnetcore3.1/build/Dockerfile b/dotnetcore3.1/build/Dockerfile new file mode 100644 index 00000000..fce33dd9 --- /dev/null +++ b/dotnetcore3.1/build/Dockerfile @@ -0,0 +1,26 @@ +FROM lambci/lambda-base-2:build + +# Run: docker run --rm --entrypoint dotnet lambci/lambda:dotnetcore3.1 --info +# Check https://dotnet.microsoft.com/download/dotnet-core/3.1 for versions +ENV DOTNET_ROOT=/var/lang/bin +ENV PATH=/root/.dotnet/tools:$DOTNET_ROOT:$PATH \ + LD_LIBRARY_PATH=/var/lang/lib:$LD_LIBRARY_PATH \ + AWS_EXECUTION_ENV=AWS_Lambda_dotnetcore3.1 \ + DOTNET_SDK_VERSION=3.1.201 \ + DOTNET_CLI_TELEMETRY_OPTOUT=1 \ + NUGET_XMLDOC_MODE=skip + +RUN rm -rf /var/runtime /var/lang && \ + curl https://lambci.s3.amazonaws.com/fs/dotnetcore3.1.tgz | tar -zx -C / && \ + curl -L https://dot.net/v1/dotnet-install.sh | bash -s -- -v $DOTNET_SDK_VERSION -i $DOTNET_ROOT && \ + mkdir /tmp/warmup && \ + cd /tmp/warmup && \ + dotnet new && \ + cd / && \ + rm -rf /tmp/warmup /tmp/NuGetScratch /tmp/.dotnet + +# Add these as a separate layer as they get updated frequently +RUN pip install -U awscli boto3 aws-sam-cli==0.46.2 aws-lambda-builders==0.8.0 --no-cache-dir && \ + dotnet tool install --global Amazon.Lambda.Tools --version 3.3.1 + +CMD ["dotnet", "build"] diff --git a/dotnetcore3.1/run/Dockerfile b/dotnetcore3.1/run/Dockerfile new file mode 100644 index 00000000..8209ebd4 --- /dev/null +++ b/dotnetcore3.1/run/Dockerfile @@ -0,0 +1,21 @@ +FROM lambci/lambda-base + +RUN curl https://lambci.s3.amazonaws.com/fs/dotnetcore3.1.tgz | tar -zx -C /opt + + +FROM lambci/lambda:provided + + +FROM lambci/lambda-base-2 + +ENV PATH=/var/lang/bin:$PATH \ + LD_LIBRARY_PATH=/var/lang/lib:$LD_LIBRARY_PATH \ + AWS_EXECUTION_ENV=AWS_Lambda_dotnetcore3.1 + +COPY --from=0 /opt/* /var/ + +COPY --from=1 /var/runtime/init /var/rapid/init + +USER sbx_user1051 + +ENTRYPOINT ["/var/rapid/init", "--bootstrap", "/var/runtime/bootstrap", "--enable-msg-logs"] diff --git a/examples/dotnetcore3.1/Function.cs b/examples/dotnetcore3.1/Function.cs new file mode 100644 index 00000000..4a4ea534 --- /dev/null +++ b/examples/dotnetcore3.1/Function.cs @@ -0,0 +1,30 @@ +// Compile with: +// docker run --rm -v "$PWD":/var/task lambci/lambda:build-dotnetcore3.1 dotnet publish -c Release -o pub + +// Run with: +// docker run --rm -v "$PWD"/pub:/var/task lambci/lambda:dotnetcore3.1 test::test.Function::FunctionHandler '{"some": "event"}' + +using System; +using System.Collections; +using Amazon.Lambda.Core; + +[assembly: LambdaSerializer(typeof(Amazon.Lambda.Serialization.Json.JsonSerializer))] + +namespace test +{ + public class Function + { + public string FunctionHandler(object inputEvent, ILambdaContext context) + { + Console.WriteLine($"inputEvent: {inputEvent}"); + Console.WriteLine($"RemainingTime: {context.RemainingTime}"); + + foreach (DictionaryEntry kv in Environment.GetEnvironmentVariables()) + { + Console.WriteLine($"{kv.Key}={kv.Value}"); + } + + return "Hello World!"; + } + } +} diff --git a/examples/dotnetcore3.1/README.md b/examples/dotnetcore3.1/README.md new file mode 100644 index 00000000..cdc506a2 --- /dev/null +++ b/examples/dotnetcore3.1/README.md @@ -0,0 +1,9 @@ +# .NET Core 3.1 docker-lambda example + +```sh +# Will place the compiled code in `./pub` +docker run --rm -v "$PWD":/var/task lambci/lambda:build-dotnetcore3.1 dotnet publish -c Release -o pub + +# Then you can run using that as the task directory +docker run --rm -v "$PWD"/pub:/var/task lambci/lambda:dotnetcore3.1 test::test.Function::FunctionHandler '{"some": "event"}' +``` diff --git a/examples/dotnetcore3.1/test.csproj b/examples/dotnetcore3.1/test.csproj new file mode 100644 index 00000000..ade4bc4c --- /dev/null +++ b/examples/dotnetcore3.1/test.csproj @@ -0,0 +1,13 @@ + + + + netcoreapp3.1 + true + + + + + + + + diff --git a/examples/dotnetcore3.1/test.sln b/examples/dotnetcore3.1/test.sln new file mode 100644 index 00000000..2de30541 --- /dev/null +++ b/examples/dotnetcore3.1/test.sln @@ -0,0 +1,17 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 15 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "test", "test.csproj", "{0A83D120-2336-4F30-86F1-DC045C3C9B90}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {0A83D120-2336-4F30-86F1-DC045C3C9B90}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {0A83D120-2336-4F30-86F1-DC045C3C9B90}.Debug|Any CPU.Build.0 = Debug|Any CPU + {0A83D120-2336-4F30-86F1-DC045C3C9B90}.Release|Any CPU.ActiveCfg = Release|Any CPU + {0A83D120-2336-4F30-86F1-DC045C3C9B90}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection +EndGlobal diff --git a/project.code-workspace b/project.code-workspace index 00529d7f..32ca28b3 100644 --- a/project.code-workspace +++ b/project.code-workspace @@ -1,51 +1,57 @@ { "folders": [ - { - "path": "." - }, - { - "path": "go1.x/run" - }, - { - "path": "provided/run" - }, - { - "path": "examples/go1.x" - }, - { - "path": "base/dump-go1x" - }, - { - "path": "base/dump-java11" - }, - { - "path": "base/dump-java8" - }, - { - "path": "examples/java" - }, - { - "path": "java8/run/lambda-runtime-mock" - }, - { - "path": "base/dump-dotnetcore20" - }, - { - "path": "base/dump-dotnetcore21" - }, - { - "path": "examples/dotnetcore2.0" - }, - { - "path": "examples/dotnetcore2.1" - }, - { - "path": "dotnetcore2.0/run/MockBootstraps" - }, - { - "path": "dotnetcore2.1/run/MockBootstraps" - } - ], + { + "path": "." + }, + { + "path": "go1.x/run" + }, + { + "path": "provided/run" + }, + { + "path": "examples/go1.x" + }, + { + "path": "base/dump-go1x" + }, + { + "path": "base/dump-java11" + }, + { + "path": "base/dump-java8" + }, + { + "path": "examples/java" + }, + { + "path": "java8/run/lambda-runtime-mock" + }, + { + "path": "base/dump-dotnetcore20" + }, + { + "path": "base/dump-dotnetcore21" + }, + { + "path": "base/dump-dotnetcore31" + }, + { + "path": "examples/dotnetcore2.0" + }, + { + "path": "examples/dotnetcore2.1" + }, + { + "path": "examples/dotnetcore3.1" + }, + { + "path": "dotnetcore2.0/run/MockBootstraps" + }, + { + "path": "dotnetcore2.1/run/MockBootstraps" + } + ], "settings": { "java.configuration.updateBuildConfiguration": "automatic" } From dfff6bc24ce342aaa197034fa4dedcb9b29ceb5f Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Wed, 1 Apr 2020 10:13:11 -0400 Subject: [PATCH 157/271] Update aws-sam-cli to 0.47.0 --- dotnetcore2.0/build/Dockerfile | 2 +- dotnetcore2.1/build/Dockerfile | 2 +- dotnetcore3.1/build/Dockerfile | 2 +- go1.x/build/Dockerfile | 2 +- java11/build/Dockerfile | 2 +- java8/build/Dockerfile | 2 +- nodejs10.x/build/Dockerfile | 2 +- nodejs12.x/build/Dockerfile | 2 +- nodejs4.3/build/Dockerfile | 2 +- nodejs6.10/build/Dockerfile | 2 +- nodejs8.10/build/Dockerfile | 2 +- provided/build/Dockerfile | 2 +- python3.6/build/Dockerfile | 2 +- python3.7/build/Dockerfile | 2 +- python3.8/build/Dockerfile | 2 +- ruby2.5/build/Dockerfile | 2 +- ruby2.7/build/Dockerfile | 2 +- 17 files changed, 17 insertions(+), 17 deletions(-) diff --git a/dotnetcore2.0/build/Dockerfile b/dotnetcore2.0/build/Dockerfile index 20f1ef4a..c63c947e 100644 --- a/dotnetcore2.0/build/Dockerfile +++ b/dotnetcore2.0/build/Dockerfile @@ -20,6 +20,6 @@ RUN rm -rf /var/runtime /var/lang && \ rm -rf /tmp/warmup /tmp/NuGetScratch # Add these as a separate layer as they get updated frequently -RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.46.2 aws-lambda-builders==0.8.0 --no-cache-dir +RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.47.0 aws-lambda-builders==0.8.0 --no-cache-dir CMD ["dotnet", "build"] diff --git a/dotnetcore2.1/build/Dockerfile b/dotnetcore2.1/build/Dockerfile index 0113e36c..e6ab925d 100644 --- a/dotnetcore2.1/build/Dockerfile +++ b/dotnetcore2.1/build/Dockerfile @@ -21,7 +21,7 @@ RUN rm -rf /var/runtime /var/lang && \ rm -rf /tmp/warmup /tmp/NuGetScratch /tmp/.dotnet # Add these as a separate layer as they get updated frequently -RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.46.2 aws-lambda-builders==0.8.0 --no-cache-dir && \ +RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.47.0 aws-lambda-builders==0.8.0 --no-cache-dir && \ dotnet tool install --global Amazon.Lambda.Tools --version 3.3.1 CMD ["dotnet", "build"] diff --git a/dotnetcore3.1/build/Dockerfile b/dotnetcore3.1/build/Dockerfile index fce33dd9..df7611e9 100644 --- a/dotnetcore3.1/build/Dockerfile +++ b/dotnetcore3.1/build/Dockerfile @@ -20,7 +20,7 @@ RUN rm -rf /var/runtime /var/lang && \ rm -rf /tmp/warmup /tmp/NuGetScratch /tmp/.dotnet # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.46.2 aws-lambda-builders==0.8.0 --no-cache-dir && \ +RUN pip install -U awscli boto3 aws-sam-cli==0.47.0 aws-lambda-builders==0.8.0 --no-cache-dir && \ dotnet tool install --global Amazon.Lambda.Tools --version 3.3.1 CMD ["dotnet", "build"] diff --git a/go1.x/build/Dockerfile b/go1.x/build/Dockerfile index 62eb348c..217751d1 100644 --- a/go1.x/build/Dockerfile +++ b/go1.x/build/Dockerfile @@ -16,6 +16,6 @@ RUN rm -rf /var/runtime /var/lang && \ go get golang.org/x/vgo # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.46.2 aws-lambda-builders==0.8.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.47.0 aws-lambda-builders==0.8.0 --no-cache-dir CMD ["dep", "ensure"] diff --git a/java11/build/Dockerfile b/java11/build/Dockerfile index b2d2a3d7..5e81fc19 100644 --- a/java11/build/Dockerfile +++ b/java11/build/Dockerfile @@ -14,4 +14,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ ENV PATH="/usr/local/gradle/gradle-6.2.2/bin:/usr/local/maven/apache-maven-3.6.3/bin:${PATH}" # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.46.2 aws-lambda-builders==0.8.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.47.0 aws-lambda-builders==0.8.0 --no-cache-dir diff --git a/java8/build/Dockerfile b/java8/build/Dockerfile index cf02f804..1c71f507 100644 --- a/java8/build/Dockerfile +++ b/java8/build/Dockerfile @@ -15,4 +15,4 @@ RUN rm -rf /var/runtime /var/lang && \ ENV PATH="/usr/local/gradle/gradle-6.2.2/bin:/usr/local/maven/apache-maven-3.6.3/bin:${PATH}" # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.46.2 aws-lambda-builders==0.8.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.47.0 aws-lambda-builders==0.8.0 --no-cache-dir diff --git a/nodejs10.x/build/Dockerfile b/nodejs10.x/build/Dockerfile index 155d0209..9abd8136 100644 --- a/nodejs10.x/build/Dockerfile +++ b/nodejs10.x/build/Dockerfile @@ -9,4 +9,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ curl https://lambci.s3.amazonaws.com/fs/nodejs10.x.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.46.2 aws-lambda-builders==0.8.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.47.0 aws-lambda-builders==0.8.0 --no-cache-dir diff --git a/nodejs12.x/build/Dockerfile b/nodejs12.x/build/Dockerfile index 7c5a5745..f6906a83 100644 --- a/nodejs12.x/build/Dockerfile +++ b/nodejs12.x/build/Dockerfile @@ -9,4 +9,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ curl https://lambci.s3.amazonaws.com/fs/nodejs12.x.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.46.2 aws-lambda-builders==0.8.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.47.0 aws-lambda-builders==0.8.0 --no-cache-dir diff --git a/nodejs4.3/build/Dockerfile b/nodejs4.3/build/Dockerfile index 0533b0ba..529f29ff 100644 --- a/nodejs4.3/build/Dockerfile +++ b/nodejs4.3/build/Dockerfile @@ -10,6 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs4.3.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.46.2 aws-lambda-builders==0.8.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.47.0 aws-lambda-builders==0.8.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/nodejs6.10/build/Dockerfile b/nodejs6.10/build/Dockerfile index 4d786f0f..e65d50f5 100644 --- a/nodejs6.10/build/Dockerfile +++ b/nodejs6.10/build/Dockerfile @@ -10,6 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs6.10.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.46.2 aws-lambda-builders==0.8.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.47.0 aws-lambda-builders==0.8.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/nodejs8.10/build/Dockerfile b/nodejs8.10/build/Dockerfile index 4aa6ff11..428577fa 100644 --- a/nodejs8.10/build/Dockerfile +++ b/nodejs8.10/build/Dockerfile @@ -10,6 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs8.10.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.46.2 aws-lambda-builders==0.8.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.47.0 aws-lambda-builders==0.8.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/provided/build/Dockerfile b/provided/build/Dockerfile index e252cd69..1e04e95b 100644 --- a/provided/build/Dockerfile +++ b/provided/build/Dockerfile @@ -1,4 +1,4 @@ FROM lambci/lambda-base:build # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.46.2 aws-lambda-builders==0.8.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.47.0 aws-lambda-builders==0.8.0 --no-cache-dir diff --git a/python3.6/build/Dockerfile b/python3.6/build/Dockerfile index 9dd9e2ba..b4d3f860 100644 --- a/python3.6/build/Dockerfile +++ b/python3.6/build/Dockerfile @@ -21,6 +21,6 @@ RUN rm -rf /var/runtime /var/lang && \ RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.5/get-poetry.py | POETRY_VERSION=1.0.5 python3 && \ - pip install -U awscli boto3 aws-sam-cli==0.46.2 aws-lambda-builders==0.8.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.47.0 aws-lambda-builders==0.8.0 --no-cache-dir ENV PATH=/root/.poetry/bin:$PATH diff --git a/python3.7/build/Dockerfile b/python3.7/build/Dockerfile index de86449f..e5d1caad 100644 --- a/python3.7/build/Dockerfile +++ b/python3.7/build/Dockerfile @@ -13,6 +13,6 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.5/get-poetry.py | POETRY_VERSION=1.0.5 python3 && \ - pip install -U awscli boto3 aws-sam-cli==0.46.2 aws-lambda-builders==0.8.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.47.0 aws-lambda-builders==0.8.0 --no-cache-dir ENV PATH=/root/.poetry/bin:$PATH diff --git a/python3.8/build/Dockerfile b/python3.8/build/Dockerfile index 026ce47b..7802847a 100644 --- a/python3.8/build/Dockerfile +++ b/python3.8/build/Dockerfile @@ -13,6 +13,6 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.5/get-poetry.py | POETRY_VERSION=1.0.5 python3 && \ - pip install -U awscli boto3 aws-sam-cli==0.46.2 aws-lambda-builders==0.8.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.47.0 aws-lambda-builders==0.8.0 --no-cache-dir ENV PATH=/root/.poetry/bin:$PATH diff --git a/ruby2.5/build/Dockerfile b/ruby2.5/build/Dockerfile index fbce4a60..d35ccbd3 100644 --- a/ruby2.5/build/Dockerfile +++ b/ruby2.5/build/Dockerfile @@ -13,4 +13,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN gem update --system --no-document && \ gem install --no-document bundler -v '~> 2.1' && \ - pip install -U awscli boto3 aws-sam-cli==0.46.2 aws-lambda-builders==0.8.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.47.0 aws-lambda-builders==0.8.0 --no-cache-dir diff --git a/ruby2.7/build/Dockerfile b/ruby2.7/build/Dockerfile index 76c179f7..4c7d0dea 100644 --- a/ruby2.7/build/Dockerfile +++ b/ruby2.7/build/Dockerfile @@ -13,4 +13,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN gem update --system --no-document && \ gem install --no-document bundler -v '~> 2.1' && \ - pip install -U awscli boto3 aws-sam-cli==0.46.2 aws-lambda-builders==0.8.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.47.0 aws-lambda-builders==0.8.0 --no-cache-dir From 33ddef3a536d356520f8f27747d20b0671c2ab28 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Wed, 1 Apr 2020 17:46:41 -0400 Subject: [PATCH 158/271] Update nodejs-native-module to nodejs12.x --- README.md | 2 +- base/test-all.sh | 1 + .../nodejs-native-module/package-lock.json | 493 ++++++++++++++++++ examples/nodejs-native-module/package.json | 4 +- examples/nodejs-native-module/test.js | 4 +- 5 files changed, 499 insertions(+), 5 deletions(-) create mode 100644 examples/nodejs-native-module/package-lock.json diff --git a/README.md b/README.md index 907bfaf2..324dc5c0 100644 --- a/README.md +++ b/README.md @@ -223,7 +223,7 @@ To use the build images, for compilation, deployment, etc: ```sh # To compile native deps in node_modules -docker run --rm -v "$PWD":/var/task lambci/lambda:build-nodejs12.x npm rebuild +docker run --rm -v "$PWD":/var/task lambci/lambda:build-nodejs12.x npm rebuild --build-from-source # To install defined poetry dependencies docker run --rm -v "$PWD":/var/task lambci/lambda:build-python3.8 poetry install diff --git a/base/test-all.sh b/base/test-all.sh index 13656d00..4d8f75e7 100755 --- a/base/test-all.sh +++ b/base/test-all.sh @@ -13,6 +13,7 @@ docker run --rm -v "$PWD":/var/task lambci/lambda:nodejs10.x index.handler docker run --rm -v "$PWD":/var/task lambci/lambda:nodejs12.x index.handler cd ${EXAMPLES_DIR}/nodejs-native-module +npm install npm run build npm test diff --git a/examples/nodejs-native-module/package-lock.json b/examples/nodejs-native-module/package-lock.json new file mode 100644 index 00000000..4efd95c6 --- /dev/null +++ b/examples/nodejs-native-module/package-lock.json @@ -0,0 +1,493 @@ +{ + "name": "module-native", + "version": "1.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" + }, + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + }, + "aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" + }, + "are-we-there-yet": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz", + "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + }, + "bcrypt": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/bcrypt/-/bcrypt-4.0.1.tgz", + "integrity": "sha512-hSIZHkUxIDS5zA2o00Kf2O5RfVbQ888n54xQoF/eIaquU4uaLxK8vhhBdktd0B3n2MjkcAWzv4mnhogykBKOUQ==", + "requires": { + "node-addon-api": "^2.0.0", + "node-pre-gyp": "0.14.0" + } + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=" + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + }, + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "requires": { + "ms": "^2.1.1" + } + }, + "deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==" + }, + "delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=" + }, + "detect-libc": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", + "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=" + }, + "fs-minipass": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz", + "integrity": "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==", + "requires": { + "minipass": "^2.6.0" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + }, + "gauge": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + } + }, + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=" + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ignore-walk": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.3.tgz", + "integrity": "sha512-m7o6xuOaT1aqheYHKf8W6J5pYH85ZI9w077erOzLje3JsB1gkafkAhHHY19dqjulgIZHFm32Cp5uNZgcQqdJKw==", + "requires": { + "minimatch": "^3.0.4" + } + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "ini": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==" + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" + }, + "minipass": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz", + "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==", + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + }, + "minizlib": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz", + "integrity": "sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==", + "requires": { + "minipass": "^2.9.0" + } + }, + "mkdirp": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.4.tgz", + "integrity": "sha512-iG9AK/dJLtJ0XNgTuDbSyNS3zECqDlAhnQW4CsNxBG3LQJBbHmRX1egw39DmtOdCAqY+dKXV+sgPgilNWUKMVw==", + "requires": { + "minimist": "^1.2.5" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "needle": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/needle/-/needle-2.3.3.tgz", + "integrity": "sha512-EkY0GeSq87rWp1hoq/sH/wnTWgFVhYlnIkbJ0YJFfRgEFlz2RraCjBpFQ+vrEgEdp0ThfyHADmkChEhcb7PKyw==", + "requires": { + "debug": "^3.2.6", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + } + }, + "node-addon-api": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-2.0.0.tgz", + "integrity": "sha512-ASCL5U13as7HhOExbT6OlWJJUV/lLzL2voOSP1UVehpRD8FbSrSDjfScK/KwAvVTI5AS6r4VwbOMlIqtvRidnA==" + }, + "node-pre-gyp": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.14.0.tgz", + "integrity": "sha512-+CvDC7ZttU/sSt9rFjix/P05iS43qHCOOGzcr3Ry99bXG7VX953+vFyEuph/tfqoYu8dttBkE86JSKBO2OzcxA==", + "requires": { + "detect-libc": "^1.0.2", + "mkdirp": "^0.5.1", + "needle": "^2.2.1", + "nopt": "^4.0.1", + "npm-packlist": "^1.1.6", + "npmlog": "^4.0.2", + "rc": "^1.2.7", + "rimraf": "^2.6.1", + "semver": "^5.3.0", + "tar": "^4.4.2" + } + }, + "nopt": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.3.tgz", + "integrity": "sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg==", + "requires": { + "abbrev": "1", + "osenv": "^0.1.4" + } + }, + "npm-bundled": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.1.tgz", + "integrity": "sha512-gqkfgGePhTpAEgUsGEgcq1rqPXA+tv/aVBlgEzfXwA1yiUJF7xtEt3CtVwOjNYQOVknDk0F20w58Fnm3EtG0fA==", + "requires": { + "npm-normalize-package-bin": "^1.0.1" + } + }, + "npm-normalize-package-bin": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz", + "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==" + }, + "npm-packlist": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-1.4.8.tgz", + "integrity": "sha512-5+AZgwru5IevF5ZdnFglB5wNlHG1AOOuw28WhUq8/8emhBmLv6jX5by4WJCh7lW0uSYZYS6DXqIsyZVIXRZU9A==", + "requires": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1", + "npm-normalize-package-bin": "^1.0.1" + } + }, + "npmlog": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", + "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "requires": { + "wrappy": "1" + } + }, + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=" + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" + }, + "osenv": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", + "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" + }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + }, + "rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "requires": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + } + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "requires": { + "glob": "^7.1.3" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" + }, + "signal-exit": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", + "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==" + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" + }, + "tar": { + "version": "4.4.13", + "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.13.tgz", + "integrity": "sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA==", + "requires": { + "chownr": "^1.1.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.8.6", + "minizlib": "^1.2.1", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.2", + "yallist": "^3.0.3" + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, + "wide-align": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", + "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", + "requires": { + "string-width": "^1.0.2 || 2" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" + } + } +} diff --git a/examples/nodejs-native-module/package.json b/examples/nodejs-native-module/package.json index c6fbc20c..7a043bda 100644 --- a/examples/nodejs-native-module/package.json +++ b/examples/nodejs-native-module/package.json @@ -3,10 +3,10 @@ "version": "1.0.0", "main": "index.js", "scripts": { - "build": "docker run --rm -v \"$PWD\":/var/task lambci/lambda:build-nodejs6.10 npm rebuild", + "build": "docker run --rm -v \"$PWD\":/var/task lambci/lambda:build-nodejs12.x npm rebuild --build-from-source", "test": "node test.js" }, "dependencies": { - "bcrypt": "^0.8.6" + "bcrypt": "^4.0.1" } } diff --git a/examples/nodejs-native-module/test.js b/examples/nodejs-native-module/test.js index 3fc5775d..539cbcf7 100644 --- a/examples/nodejs-native-module/test.js +++ b/examples/nodejs-native-module/test.js @@ -1,9 +1,9 @@ var dockerLambda = require('../..') -var match = dockerLambda({ event: { password: 'lambda-docker' }, dockerImage: 'lambci/lambda:nodejs6.10' }) +var match = dockerLambda({ event: { password: 'lambda-docker' }, dockerImage: 'lambci/lambda:nodejs12.x' }) console.log(match === 'Matches!' ? 'Match Passed' : 'Match Failed: ' + match) -var nonMatch = dockerLambda({ event: { password: 'lambda-mocker' }, dockerImage: 'lambci/lambda:nodejs6.10' }) +var nonMatch = dockerLambda({ event: { password: 'lambda-mocker' }, dockerImage: 'lambci/lambda:nodejs12.x' }) console.log(nonMatch === 'NopeNopeNope' ? 'Non-Match Passed' : 'Non-Match Failed: ' + nonMatch) From 20bcae1af655c22796ccf7dd11772a4b5defff66 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Thu, 9 Apr 2020 09:55:40 -0400 Subject: [PATCH 159/271] Update build-go1.x image to Go 1.14.2 --- go1.x/build/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/go1.x/build/Dockerfile b/go1.x/build/Dockerfile index 217751d1..0de6bff6 100644 --- a/go1.x/build/Dockerfile +++ b/go1.x/build/Dockerfile @@ -1,7 +1,7 @@ FROM lambci/lambda-base:build # https://golang.org/doc/devel/release.html -ENV GOLANG_VERSION=1.14 \ +ENV GOLANG_VERSION=1.14.2 \ GOPATH=/go \ PATH=/go/bin:/usr/local/go/bin:$PATH \ AWS_EXECUTION_ENV=AWS_Lambda_go1.x From 3399da3b483ae5f1c3cd127036ccdb180e91e81a Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Wed, 22 Apr 2020 13:03:37 -0400 Subject: [PATCH 160/271] Rename VSCode workspace --- project.code-workspace => docker-lambda.code-workspace | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename project.code-workspace => docker-lambda.code-workspace (100%) diff --git a/project.code-workspace b/docker-lambda.code-workspace similarity index 100% rename from project.code-workspace rename to docker-lambda.code-workspace From fab2c2563b19eb3788b6c681fe123f526bd8f753 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Wed, 29 Apr 2020 11:43:48 -0400 Subject: [PATCH 161/271] Ensure we reinstall glibc in build images --- base/build-2/Dockerfile | 3 ++- base/build-all.sh | 4 ++-- base/build/Dockerfile | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/base/build-2/Dockerfile b/base/build-2/Dockerfile index fb4d2a1d..3c303ea7 100644 --- a/base/build-2/Dockerfile +++ b/base/build-2/Dockerfile @@ -11,7 +11,8 @@ ENV PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/bin COPY --from=0 /installroot/etc /etc/ COPY --from=0 /installroot/usr /usr/ -RUN yum install -y glibc-langpack-en && \ +RUN yum reinstall -y filesystem setup glibc-common glibc; \ + yum install -y glibc-langpack-en && \ yum groupinstall -y development && \ yum install -y which clang cmake python-devel python3-devel amazon-linux-extras && \ amazon-linux-extras install -y docker && \ diff --git a/base/build-all.sh b/base/build-all.sh index 92556d58..9b23660d 100755 --- a/base/build-all.sh +++ b/base/build-all.sh @@ -11,7 +11,7 @@ for RUNTIME in $RUNTIMES; do [ -x ./update_libs.sh ] && ./update_libs.sh - docker build -t lambci/lambda:${RUNTIME} . + docker build --no-cache -t lambci/lambda:${RUNTIME} . done for RUNTIME in $RUNTIMES; do @@ -19,5 +19,5 @@ for RUNTIME in $RUNTIMES; do cd ${TOP_DIR}/${RUNTIME}/build - docker build -t lambci/lambda:build-${RUNTIME} . + docker build --no-cache -t lambci/lambda:build-${RUNTIME} . done diff --git a/base/build/Dockerfile b/base/build/Dockerfile index 9f0e95dd..89e47e59 100644 --- a/base/build/Dockerfile +++ b/base/build/Dockerfile @@ -14,7 +14,7 @@ yum_conf.write(f); \ f.close();" && \ rpm --rebuilddb && \ yum install -y yum-plugin-ovl && \ - yum reinstall -y setup pam shadow-utils audit-libs && \ + yum reinstall -y setup pam shadow-utils audit-libs openssl glibc-common glibc && \ yum groupinstall -y development && \ yum install -y clang cmake docker python27-devel python36-devel \ ImageMagick-devel cairo-devel libssh2-devel libxslt-devel libmpc-devel readline-devel db4-devel \ From 3a329c9195848e1508d661e877d7435be875c6da Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Thu, 30 Apr 2020 15:42:41 -0400 Subject: [PATCH 162/271] Update aws-sam-cli to 0.48.0 --- dotnetcore2.0/build/Dockerfile | 2 +- dotnetcore2.1/build/Dockerfile | 2 +- dotnetcore3.1/build/Dockerfile | 2 +- go1.x/build/Dockerfile | 2 +- java11/build/Dockerfile | 2 +- java8/build/Dockerfile | 2 +- nodejs10.x/build/Dockerfile | 2 +- nodejs12.x/build/Dockerfile | 2 +- nodejs4.3/build/Dockerfile | 2 +- nodejs6.10/build/Dockerfile | 2 +- nodejs8.10/build/Dockerfile | 2 +- provided/build/Dockerfile | 2 +- python3.6/build/Dockerfile | 2 +- python3.7/build/Dockerfile | 2 +- python3.8/build/Dockerfile | 2 +- ruby2.5/build/Dockerfile | 2 +- ruby2.7/build/Dockerfile | 2 +- 17 files changed, 17 insertions(+), 17 deletions(-) diff --git a/dotnetcore2.0/build/Dockerfile b/dotnetcore2.0/build/Dockerfile index c63c947e..7494b250 100644 --- a/dotnetcore2.0/build/Dockerfile +++ b/dotnetcore2.0/build/Dockerfile @@ -20,6 +20,6 @@ RUN rm -rf /var/runtime /var/lang && \ rm -rf /tmp/warmup /tmp/NuGetScratch # Add these as a separate layer as they get updated frequently -RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.47.0 aws-lambda-builders==0.8.0 --no-cache-dir +RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.48.0 aws-lambda-builders==0.8.0 --no-cache-dir CMD ["dotnet", "build"] diff --git a/dotnetcore2.1/build/Dockerfile b/dotnetcore2.1/build/Dockerfile index e6ab925d..153188a4 100644 --- a/dotnetcore2.1/build/Dockerfile +++ b/dotnetcore2.1/build/Dockerfile @@ -21,7 +21,7 @@ RUN rm -rf /var/runtime /var/lang && \ rm -rf /tmp/warmup /tmp/NuGetScratch /tmp/.dotnet # Add these as a separate layer as they get updated frequently -RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.47.0 aws-lambda-builders==0.8.0 --no-cache-dir && \ +RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.48.0 aws-lambda-builders==0.8.0 --no-cache-dir && \ dotnet tool install --global Amazon.Lambda.Tools --version 3.3.1 CMD ["dotnet", "build"] diff --git a/dotnetcore3.1/build/Dockerfile b/dotnetcore3.1/build/Dockerfile index df7611e9..bf6431b0 100644 --- a/dotnetcore3.1/build/Dockerfile +++ b/dotnetcore3.1/build/Dockerfile @@ -20,7 +20,7 @@ RUN rm -rf /var/runtime /var/lang && \ rm -rf /tmp/warmup /tmp/NuGetScratch /tmp/.dotnet # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.47.0 aws-lambda-builders==0.8.0 --no-cache-dir && \ +RUN pip install -U awscli boto3 aws-sam-cli==0.48.0 aws-lambda-builders==0.8.0 --no-cache-dir && \ dotnet tool install --global Amazon.Lambda.Tools --version 3.3.1 CMD ["dotnet", "build"] diff --git a/go1.x/build/Dockerfile b/go1.x/build/Dockerfile index 0de6bff6..67b9e6e2 100644 --- a/go1.x/build/Dockerfile +++ b/go1.x/build/Dockerfile @@ -16,6 +16,6 @@ RUN rm -rf /var/runtime /var/lang && \ go get golang.org/x/vgo # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.47.0 aws-lambda-builders==0.8.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.48.0 aws-lambda-builders==0.8.0 --no-cache-dir CMD ["dep", "ensure"] diff --git a/java11/build/Dockerfile b/java11/build/Dockerfile index 5e81fc19..cd471b8c 100644 --- a/java11/build/Dockerfile +++ b/java11/build/Dockerfile @@ -14,4 +14,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ ENV PATH="/usr/local/gradle/gradle-6.2.2/bin:/usr/local/maven/apache-maven-3.6.3/bin:${PATH}" # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.47.0 aws-lambda-builders==0.8.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.48.0 aws-lambda-builders==0.8.0 --no-cache-dir diff --git a/java8/build/Dockerfile b/java8/build/Dockerfile index 1c71f507..af9cfc54 100644 --- a/java8/build/Dockerfile +++ b/java8/build/Dockerfile @@ -15,4 +15,4 @@ RUN rm -rf /var/runtime /var/lang && \ ENV PATH="/usr/local/gradle/gradle-6.2.2/bin:/usr/local/maven/apache-maven-3.6.3/bin:${PATH}" # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.47.0 aws-lambda-builders==0.8.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.48.0 aws-lambda-builders==0.8.0 --no-cache-dir diff --git a/nodejs10.x/build/Dockerfile b/nodejs10.x/build/Dockerfile index 9abd8136..f892cb15 100644 --- a/nodejs10.x/build/Dockerfile +++ b/nodejs10.x/build/Dockerfile @@ -9,4 +9,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ curl https://lambci.s3.amazonaws.com/fs/nodejs10.x.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.47.0 aws-lambda-builders==0.8.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.48.0 aws-lambda-builders==0.8.0 --no-cache-dir diff --git a/nodejs12.x/build/Dockerfile b/nodejs12.x/build/Dockerfile index f6906a83..9b7f9d69 100644 --- a/nodejs12.x/build/Dockerfile +++ b/nodejs12.x/build/Dockerfile @@ -9,4 +9,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ curl https://lambci.s3.amazonaws.com/fs/nodejs12.x.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.47.0 aws-lambda-builders==0.8.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.48.0 aws-lambda-builders==0.8.0 --no-cache-dir diff --git a/nodejs4.3/build/Dockerfile b/nodejs4.3/build/Dockerfile index 529f29ff..c4727d3a 100644 --- a/nodejs4.3/build/Dockerfile +++ b/nodejs4.3/build/Dockerfile @@ -10,6 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs4.3.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.47.0 aws-lambda-builders==0.8.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.48.0 aws-lambda-builders==0.8.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/nodejs6.10/build/Dockerfile b/nodejs6.10/build/Dockerfile index e65d50f5..c7383946 100644 --- a/nodejs6.10/build/Dockerfile +++ b/nodejs6.10/build/Dockerfile @@ -10,6 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs6.10.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.47.0 aws-lambda-builders==0.8.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.48.0 aws-lambda-builders==0.8.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/nodejs8.10/build/Dockerfile b/nodejs8.10/build/Dockerfile index 428577fa..cfaa3291 100644 --- a/nodejs8.10/build/Dockerfile +++ b/nodejs8.10/build/Dockerfile @@ -10,6 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs8.10.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.47.0 aws-lambda-builders==0.8.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.48.0 aws-lambda-builders==0.8.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/provided/build/Dockerfile b/provided/build/Dockerfile index 1e04e95b..5df95270 100644 --- a/provided/build/Dockerfile +++ b/provided/build/Dockerfile @@ -1,4 +1,4 @@ FROM lambci/lambda-base:build # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.47.0 aws-lambda-builders==0.8.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.48.0 aws-lambda-builders==0.8.0 --no-cache-dir diff --git a/python3.6/build/Dockerfile b/python3.6/build/Dockerfile index b4d3f860..16cd8837 100644 --- a/python3.6/build/Dockerfile +++ b/python3.6/build/Dockerfile @@ -21,6 +21,6 @@ RUN rm -rf /var/runtime /var/lang && \ RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.5/get-poetry.py | POETRY_VERSION=1.0.5 python3 && \ - pip install -U awscli boto3 aws-sam-cli==0.47.0 aws-lambda-builders==0.8.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.48.0 aws-lambda-builders==0.8.0 --no-cache-dir ENV PATH=/root/.poetry/bin:$PATH diff --git a/python3.7/build/Dockerfile b/python3.7/build/Dockerfile index e5d1caad..a5326e98 100644 --- a/python3.7/build/Dockerfile +++ b/python3.7/build/Dockerfile @@ -13,6 +13,6 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.5/get-poetry.py | POETRY_VERSION=1.0.5 python3 && \ - pip install -U awscli boto3 aws-sam-cli==0.47.0 aws-lambda-builders==0.8.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.48.0 aws-lambda-builders==0.8.0 --no-cache-dir ENV PATH=/root/.poetry/bin:$PATH diff --git a/python3.8/build/Dockerfile b/python3.8/build/Dockerfile index 7802847a..edbf910b 100644 --- a/python3.8/build/Dockerfile +++ b/python3.8/build/Dockerfile @@ -13,6 +13,6 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.5/get-poetry.py | POETRY_VERSION=1.0.5 python3 && \ - pip install -U awscli boto3 aws-sam-cli==0.47.0 aws-lambda-builders==0.8.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.48.0 aws-lambda-builders==0.8.0 --no-cache-dir ENV PATH=/root/.poetry/bin:$PATH diff --git a/ruby2.5/build/Dockerfile b/ruby2.5/build/Dockerfile index d35ccbd3..93240147 100644 --- a/ruby2.5/build/Dockerfile +++ b/ruby2.5/build/Dockerfile @@ -13,4 +13,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN gem update --system --no-document && \ gem install --no-document bundler -v '~> 2.1' && \ - pip install -U awscli boto3 aws-sam-cli==0.47.0 aws-lambda-builders==0.8.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.48.0 aws-lambda-builders==0.8.0 --no-cache-dir diff --git a/ruby2.7/build/Dockerfile b/ruby2.7/build/Dockerfile index 4c7d0dea..c6c505cd 100644 --- a/ruby2.7/build/Dockerfile +++ b/ruby2.7/build/Dockerfile @@ -13,4 +13,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN gem update --system --no-document && \ gem install --no-document bundler -v '~> 2.1' && \ - pip install -U awscli boto3 aws-sam-cli==0.47.0 aws-lambda-builders==0.8.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.48.0 aws-lambda-builders==0.8.0 --no-cache-dir From 50af6ebe3788dd1251ad1d6f885112e40f93d944 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Fri, 8 May 2020 08:50:50 -0400 Subject: [PATCH 163/271] Explicitly add wheel back to python build images --- base/build-2/Dockerfile | 2 +- python3.6/build/Dockerfile | 2 +- python3.7/build/Dockerfile | 2 +- python3.8/build/Dockerfile | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/base/build-2/Dockerfile b/base/build-2/Dockerfile index 3c303ea7..a0d07fbd 100644 --- a/base/build-2/Dockerfile +++ b/base/build-2/Dockerfile @@ -16,6 +16,6 @@ RUN yum reinstall -y filesystem setup glibc-common glibc; \ yum groupinstall -y development && \ yum install -y which clang cmake python-devel python3-devel amazon-linux-extras && \ amazon-linux-extras install -y docker && \ - pip3 install -U pip setuptools --no-cache-dir && \ + pip3 install -U pip setuptools wheel --no-cache-dir && \ yum clean all && \ rm -rf /var/cache/yum diff --git a/python3.6/build/Dockerfile b/python3.6/build/Dockerfile index 16cd8837..c801b216 100644 --- a/python3.6/build/Dockerfile +++ b/python3.6/build/Dockerfile @@ -18,7 +18,7 @@ RUN rm -rf /var/runtime /var/lang && \ rm -rf Python-${PYTHON_VERSION} # Add these as a separate layer as they get updated frequently -RUN pip install -U pip setuptools --no-cache-dir && \ +RUN pip install -U pip setuptools wheel --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.5/get-poetry.py | POETRY_VERSION=1.0.5 python3 && \ pip install -U awscli boto3 aws-sam-cli==0.48.0 aws-lambda-builders==0.8.0 --no-cache-dir diff --git a/python3.7/build/Dockerfile b/python3.7/build/Dockerfile index a5326e98..51e6385b 100644 --- a/python3.7/build/Dockerfile +++ b/python3.7/build/Dockerfile @@ -10,7 +10,7 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ curl https://lambci.s3.amazonaws.com/fs/python3.7.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U pip setuptools --no-cache-dir && \ +RUN pip install -U pip setuptools wheel --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.5/get-poetry.py | POETRY_VERSION=1.0.5 python3 && \ pip install -U awscli boto3 aws-sam-cli==0.48.0 aws-lambda-builders==0.8.0 --no-cache-dir diff --git a/python3.8/build/Dockerfile b/python3.8/build/Dockerfile index edbf910b..d44812dd 100644 --- a/python3.8/build/Dockerfile +++ b/python3.8/build/Dockerfile @@ -10,7 +10,7 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ curl https://lambci.s3.amazonaws.com/fs/python3.8.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U pip setuptools --no-cache-dir && \ +RUN pip install -U pip setuptools wheel --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.5/get-poetry.py | POETRY_VERSION=1.0.5 python3 && \ pip install -U awscli boto3 aws-sam-cli==0.48.0 aws-lambda-builders==0.8.0 --no-cache-dir From b6d847dc0f40ea87f1f06f39b700a5afaa718a42 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Fri, 8 May 2020 09:21:20 -0400 Subject: [PATCH 164/271] Also add wheel and setuptools to base build image --- base/build/Dockerfile | 1 + 1 file changed, 1 insertion(+) diff --git a/base/build/Dockerfile b/base/build/Dockerfile index 89e47e59..6ddad545 100644 --- a/base/build/Dockerfile +++ b/base/build/Dockerfile @@ -23,5 +23,6 @@ f.close();" && \ alternatives --set g++ /usr/bin/g++48 && \ alternatives --set cpp /usr/bin/cpp48 && \ curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python3 && \ + pip install -U setuptools wheel --no-cache-dir && \ yum clean all && \ rm -rf /var/cache/yum From 10669019540cec7171b2057239aa8359ef40f9b8 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Fri, 8 May 2020 09:30:47 -0400 Subject: [PATCH 165/271] Add wheel to python2.7 build image, just in case --- base/test-all.sh | 3 ++- python2.7/build/Dockerfile | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/base/test-all.sh b/base/test-all.sh index 4d8f75e7..0bded02f 100755 --- a/base/test-all.sh +++ b/base/test-all.sh @@ -23,6 +23,7 @@ docker run --rm -v "$PWD":/var/task lambci/lambda:python3.6 docker run --rm -v "$PWD":/var/task lambci/lambda:python3.7 lambda_function.lambda_handler docker run --rm -v "$PWD":/var/task lambci/lambda:python3.8 lambda_function.lambda_handler +cd ${EXAMPLES_DIR}/python docker run --rm -it lambci/lambda:build-python2.7 pip install marisa-trie docker run --rm -it lambci/lambda:build-python3.6 pip install marisa-trie docker run --rm -it lambci/lambda:build-python3.7 pip install marisa-trie @@ -58,4 +59,4 @@ docker run --rm -v "$PWD":/var/task lambci/lambda:provided handler '{"some": "ev # To invoke and keep open: # docker run --rm -v $PWD:/var/task -e DOCKER_LAMBDA_STAY_OPEN=1 -p 9001:9001 \ - # lambci/lambda:ruby2.5 lambda_function.lambda_handler +# lambci/lambda:ruby2.5 lambda_function.lambda_handler diff --git a/python2.7/build/Dockerfile b/python2.7/build/Dockerfile index 0a1980fd..9c0a2a15 100644 --- a/python2.7/build/Dockerfile +++ b/python2.7/build/Dockerfile @@ -8,7 +8,7 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ - pip install -U 'virtualenv>=16.0.0,<20.0.0' pipenv --no-cache-dir && \ + pip install -U 'virtualenv>=16.0.0,<20.0.0' pipenv wheel --no-cache-dir && \ curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.5/get-poetry.py | POETRY_VERSION=1.0.5 python && \ pip install -U awscli boto3 aws-sam-cli==0.22.0 aws-lambda-builders==0.4.0 --no-cache-dir From efbb6a296f9cd7c5a84bf01b254d12b0f727d684 Mon Sep 17 00:00:00 2001 From: Dave Lahn Date: Wed, 29 Apr 2020 16:51:57 -0400 Subject: [PATCH 166/271] Fix GEM_PATH to use correct Ruby installation --- ruby2.5/build/Dockerfile | 2 +- ruby2.7/build/Dockerfile | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/ruby2.5/build/Dockerfile b/ruby2.5/build/Dockerfile index 93240147..cc1b3aab 100644 --- a/ruby2.5/build/Dockerfile +++ b/ruby2.5/build/Dockerfile @@ -4,7 +4,7 @@ ENV PATH=/var/lang/bin:$PATH \ LD_LIBRARY_PATH=/var/lang/lib:$LD_LIBRARY_PATH \ AWS_EXECUTION_ENV=AWS_Lambda_ruby2.5 \ GEM_HOME=/var/runtime \ - GEM_PATH=/var/task/vendor/bundle/ruby/2.5.0:/opt/ruby/gems/2.5.0 \ + GEM_PATH=/var/task/vendor/bundle/ruby/2.5.0:/var/lang/lib/ruby/gems/2.5.0 \ RUBYLIB=/var/task:/var/runtime/lib:/opt/ruby/lib RUN rm -rf /var/runtime /var/lang /var/rapid && \ diff --git a/ruby2.7/build/Dockerfile b/ruby2.7/build/Dockerfile index c6c505cd..2566d9c3 100644 --- a/ruby2.7/build/Dockerfile +++ b/ruby2.7/build/Dockerfile @@ -4,7 +4,7 @@ ENV PATH=/var/lang/bin:$PATH \ LD_LIBRARY_PATH=/var/lang/lib:$LD_LIBRARY_PATH \ AWS_EXECUTION_ENV=AWS_Lambda_ruby2.7 \ GEM_HOME=/var/runtime \ - GEM_PATH=/var/task/vendor/bundle/ruby/2.7.0:/opt/ruby/gems/2.7.0 \ + GEM_PATH=/var/task/vendor/bundle/ruby/2.7.0:/var/lang/lib/ruby/gems/2.7.0 \ RUBYLIB=/var/task:/var/runtime/lib:/opt/ruby/lib RUN rm -rf /var/runtime /var/lang /var/rapid && \ From 84b8574e84b22fafb944b7328a1941320f7e2221 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Mon, 11 May 2020 14:36:19 -0400 Subject: [PATCH 167/271] Add /opt gem path back in to ruby gem images --- ruby2.5/build/Dockerfile | 2 +- ruby2.7/build/Dockerfile | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/ruby2.5/build/Dockerfile b/ruby2.5/build/Dockerfile index cc1b3aab..941036b5 100644 --- a/ruby2.5/build/Dockerfile +++ b/ruby2.5/build/Dockerfile @@ -4,7 +4,7 @@ ENV PATH=/var/lang/bin:$PATH \ LD_LIBRARY_PATH=/var/lang/lib:$LD_LIBRARY_PATH \ AWS_EXECUTION_ENV=AWS_Lambda_ruby2.5 \ GEM_HOME=/var/runtime \ - GEM_PATH=/var/task/vendor/bundle/ruby/2.5.0:/var/lang/lib/ruby/gems/2.5.0 \ + GEM_PATH=/var/task/vendor/bundle/ruby/2.5.0:/opt/ruby/gems/2.5.0:/var/lang/lib/ruby/gems/2.5.0 \ RUBYLIB=/var/task:/var/runtime/lib:/opt/ruby/lib RUN rm -rf /var/runtime /var/lang /var/rapid && \ diff --git a/ruby2.7/build/Dockerfile b/ruby2.7/build/Dockerfile index 2566d9c3..5bbada9f 100644 --- a/ruby2.7/build/Dockerfile +++ b/ruby2.7/build/Dockerfile @@ -4,7 +4,7 @@ ENV PATH=/var/lang/bin:$PATH \ LD_LIBRARY_PATH=/var/lang/lib:$LD_LIBRARY_PATH \ AWS_EXECUTION_ENV=AWS_Lambda_ruby2.7 \ GEM_HOME=/var/runtime \ - GEM_PATH=/var/task/vendor/bundle/ruby/2.7.0:/var/lang/lib/ruby/gems/2.7.0 \ + GEM_PATH=/var/task/vendor/bundle/ruby/2.7.0:/opt/ruby/gems/2.7.0:/var/lang/lib/ruby/gems/2.7.0 \ RUBYLIB=/var/task:/var/runtime/lib:/opt/ruby/lib RUN rm -rf /var/runtime /var/lang /var/rapid && \ From 4b7e20ab4d9bae5806428dda288bd6ad26db396d Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Tue, 12 May 2020 12:50:44 -0400 Subject: [PATCH 168/271] Update aws-lambda-builders to 0.9.0 --- dotnetcore2.0/build/Dockerfile | 2 +- dotnetcore2.1/build/Dockerfile | 2 +- dotnetcore3.1/build/Dockerfile | 2 +- go1.x/build/Dockerfile | 2 +- java11/build/Dockerfile | 2 +- java8/build/Dockerfile | 2 +- nodejs10.x/build/Dockerfile | 2 +- nodejs12.x/build/Dockerfile | 2 +- nodejs4.3/build/Dockerfile | 2 +- nodejs6.10/build/Dockerfile | 2 +- nodejs8.10/build/Dockerfile | 2 +- provided/build/Dockerfile | 2 +- python3.6/build/Dockerfile | 2 +- python3.7/build/Dockerfile | 2 +- python3.8/build/Dockerfile | 2 +- ruby2.5/build/Dockerfile | 2 +- ruby2.7/build/Dockerfile | 2 +- 17 files changed, 17 insertions(+), 17 deletions(-) diff --git a/dotnetcore2.0/build/Dockerfile b/dotnetcore2.0/build/Dockerfile index 7494b250..076d6f80 100644 --- a/dotnetcore2.0/build/Dockerfile +++ b/dotnetcore2.0/build/Dockerfile @@ -20,6 +20,6 @@ RUN rm -rf /var/runtime /var/lang && \ rm -rf /tmp/warmup /tmp/NuGetScratch # Add these as a separate layer as they get updated frequently -RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.48.0 aws-lambda-builders==0.8.0 --no-cache-dir +RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.48.0 aws-lambda-builders==0.9.0 --no-cache-dir CMD ["dotnet", "build"] diff --git a/dotnetcore2.1/build/Dockerfile b/dotnetcore2.1/build/Dockerfile index 153188a4..4b12926f 100644 --- a/dotnetcore2.1/build/Dockerfile +++ b/dotnetcore2.1/build/Dockerfile @@ -21,7 +21,7 @@ RUN rm -rf /var/runtime /var/lang && \ rm -rf /tmp/warmup /tmp/NuGetScratch /tmp/.dotnet # Add these as a separate layer as they get updated frequently -RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.48.0 aws-lambda-builders==0.8.0 --no-cache-dir && \ +RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.48.0 aws-lambda-builders==0.9.0 --no-cache-dir && \ dotnet tool install --global Amazon.Lambda.Tools --version 3.3.1 CMD ["dotnet", "build"] diff --git a/dotnetcore3.1/build/Dockerfile b/dotnetcore3.1/build/Dockerfile index bf6431b0..f1a0690f 100644 --- a/dotnetcore3.1/build/Dockerfile +++ b/dotnetcore3.1/build/Dockerfile @@ -20,7 +20,7 @@ RUN rm -rf /var/runtime /var/lang && \ rm -rf /tmp/warmup /tmp/NuGetScratch /tmp/.dotnet # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.48.0 aws-lambda-builders==0.8.0 --no-cache-dir && \ +RUN pip install -U awscli boto3 aws-sam-cli==0.48.0 aws-lambda-builders==0.9.0 --no-cache-dir && \ dotnet tool install --global Amazon.Lambda.Tools --version 3.3.1 CMD ["dotnet", "build"] diff --git a/go1.x/build/Dockerfile b/go1.x/build/Dockerfile index 67b9e6e2..431c1b37 100644 --- a/go1.x/build/Dockerfile +++ b/go1.x/build/Dockerfile @@ -16,6 +16,6 @@ RUN rm -rf /var/runtime /var/lang && \ go get golang.org/x/vgo # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.48.0 aws-lambda-builders==0.8.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.48.0 aws-lambda-builders==0.9.0 --no-cache-dir CMD ["dep", "ensure"] diff --git a/java11/build/Dockerfile b/java11/build/Dockerfile index cd471b8c..d2457726 100644 --- a/java11/build/Dockerfile +++ b/java11/build/Dockerfile @@ -14,4 +14,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ ENV PATH="/usr/local/gradle/gradle-6.2.2/bin:/usr/local/maven/apache-maven-3.6.3/bin:${PATH}" # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.48.0 aws-lambda-builders==0.8.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.48.0 aws-lambda-builders==0.9.0 --no-cache-dir diff --git a/java8/build/Dockerfile b/java8/build/Dockerfile index af9cfc54..767f1298 100644 --- a/java8/build/Dockerfile +++ b/java8/build/Dockerfile @@ -15,4 +15,4 @@ RUN rm -rf /var/runtime /var/lang && \ ENV PATH="/usr/local/gradle/gradle-6.2.2/bin:/usr/local/maven/apache-maven-3.6.3/bin:${PATH}" # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.48.0 aws-lambda-builders==0.8.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.48.0 aws-lambda-builders==0.9.0 --no-cache-dir diff --git a/nodejs10.x/build/Dockerfile b/nodejs10.x/build/Dockerfile index f892cb15..930962a5 100644 --- a/nodejs10.x/build/Dockerfile +++ b/nodejs10.x/build/Dockerfile @@ -9,4 +9,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ curl https://lambci.s3.amazonaws.com/fs/nodejs10.x.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.48.0 aws-lambda-builders==0.8.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.48.0 aws-lambda-builders==0.9.0 --no-cache-dir diff --git a/nodejs12.x/build/Dockerfile b/nodejs12.x/build/Dockerfile index 9b7f9d69..bb180070 100644 --- a/nodejs12.x/build/Dockerfile +++ b/nodejs12.x/build/Dockerfile @@ -9,4 +9,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ curl https://lambci.s3.amazonaws.com/fs/nodejs12.x.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.48.0 aws-lambda-builders==0.8.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.48.0 aws-lambda-builders==0.9.0 --no-cache-dir diff --git a/nodejs4.3/build/Dockerfile b/nodejs4.3/build/Dockerfile index c4727d3a..f483e18f 100644 --- a/nodejs4.3/build/Dockerfile +++ b/nodejs4.3/build/Dockerfile @@ -10,6 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs4.3.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.48.0 aws-lambda-builders==0.8.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.48.0 aws-lambda-builders==0.9.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/nodejs6.10/build/Dockerfile b/nodejs6.10/build/Dockerfile index c7383946..879db7d8 100644 --- a/nodejs6.10/build/Dockerfile +++ b/nodejs6.10/build/Dockerfile @@ -10,6 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs6.10.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.48.0 aws-lambda-builders==0.8.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.48.0 aws-lambda-builders==0.9.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/nodejs8.10/build/Dockerfile b/nodejs8.10/build/Dockerfile index cfaa3291..7ff6f7c6 100644 --- a/nodejs8.10/build/Dockerfile +++ b/nodejs8.10/build/Dockerfile @@ -10,6 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs8.10.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.48.0 aws-lambda-builders==0.8.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.48.0 aws-lambda-builders==0.9.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/provided/build/Dockerfile b/provided/build/Dockerfile index 5df95270..820d4389 100644 --- a/provided/build/Dockerfile +++ b/provided/build/Dockerfile @@ -1,4 +1,4 @@ FROM lambci/lambda-base:build # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.48.0 aws-lambda-builders==0.8.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.48.0 aws-lambda-builders==0.9.0 --no-cache-dir diff --git a/python3.6/build/Dockerfile b/python3.6/build/Dockerfile index c801b216..7557bf7a 100644 --- a/python3.6/build/Dockerfile +++ b/python3.6/build/Dockerfile @@ -21,6 +21,6 @@ RUN rm -rf /var/runtime /var/lang && \ RUN pip install -U pip setuptools wheel --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.5/get-poetry.py | POETRY_VERSION=1.0.5 python3 && \ - pip install -U awscli boto3 aws-sam-cli==0.48.0 aws-lambda-builders==0.8.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.48.0 aws-lambda-builders==0.9.0 --no-cache-dir ENV PATH=/root/.poetry/bin:$PATH diff --git a/python3.7/build/Dockerfile b/python3.7/build/Dockerfile index 51e6385b..862bcc79 100644 --- a/python3.7/build/Dockerfile +++ b/python3.7/build/Dockerfile @@ -13,6 +13,6 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ RUN pip install -U pip setuptools wheel --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.5/get-poetry.py | POETRY_VERSION=1.0.5 python3 && \ - pip install -U awscli boto3 aws-sam-cli==0.48.0 aws-lambda-builders==0.8.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.48.0 aws-lambda-builders==0.9.0 --no-cache-dir ENV PATH=/root/.poetry/bin:$PATH diff --git a/python3.8/build/Dockerfile b/python3.8/build/Dockerfile index d44812dd..5c7a423f 100644 --- a/python3.8/build/Dockerfile +++ b/python3.8/build/Dockerfile @@ -13,6 +13,6 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ RUN pip install -U pip setuptools wheel --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.5/get-poetry.py | POETRY_VERSION=1.0.5 python3 && \ - pip install -U awscli boto3 aws-sam-cli==0.48.0 aws-lambda-builders==0.8.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.48.0 aws-lambda-builders==0.9.0 --no-cache-dir ENV PATH=/root/.poetry/bin:$PATH diff --git a/ruby2.5/build/Dockerfile b/ruby2.5/build/Dockerfile index 941036b5..271d0be0 100644 --- a/ruby2.5/build/Dockerfile +++ b/ruby2.5/build/Dockerfile @@ -13,4 +13,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN gem update --system --no-document && \ gem install --no-document bundler -v '~> 2.1' && \ - pip install -U awscli boto3 aws-sam-cli==0.48.0 aws-lambda-builders==0.8.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.48.0 aws-lambda-builders==0.9.0 --no-cache-dir diff --git a/ruby2.7/build/Dockerfile b/ruby2.7/build/Dockerfile index 5bbada9f..89ad80f8 100644 --- a/ruby2.7/build/Dockerfile +++ b/ruby2.7/build/Dockerfile @@ -13,4 +13,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN gem update --system --no-document && \ gem install --no-document bundler -v '~> 2.1' && \ - pip install -U awscli boto3 aws-sam-cli==0.48.0 aws-lambda-builders==0.8.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.48.0 aws-lambda-builders==0.9.0 --no-cache-dir From e69aa8b1f5ed85938e2be61db0ed9f574e17dd58 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Thu, 14 May 2020 20:56:57 -0400 Subject: [PATCH 169/271] Remove PYTHONPATH from python build images This seems to interfere with virtualenv/pipenv and prevents it from installing packages if they already exist in /var/runtime * Fixes 271 * Fixes 272 --- python2.7/build/Dockerfile | 3 +-- python3.6/build/Dockerfile | 1 - python3.7/build/Dockerfile | 1 - python3.8/build/Dockerfile | 1 - 4 files changed, 1 insertion(+), 5 deletions(-) diff --git a/python2.7/build/Dockerfile b/python2.7/build/Dockerfile index 9c0a2a15..07b2c7a7 100644 --- a/python2.7/build/Dockerfile +++ b/python2.7/build/Dockerfile @@ -1,7 +1,6 @@ FROM lambci/lambda-base:build -ENV AWS_EXECUTION_ENV=AWS_Lambda_python2.7 \ - PYTHONPATH=/var/runtime +ENV AWS_EXECUTION_ENV=AWS_Lambda_python2.7 RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/python2.7.tgz | tar -zx -C / diff --git a/python3.6/build/Dockerfile b/python3.6/build/Dockerfile index 7557bf7a..f956f917 100644 --- a/python3.6/build/Dockerfile +++ b/python3.6/build/Dockerfile @@ -3,7 +3,6 @@ FROM lambci/lambda-base:build ENV PATH=/var/lang/bin:$PATH \ LD_LIBRARY_PATH=/var/lang/lib:$LD_LIBRARY_PATH \ AWS_EXECUTION_ENV=AWS_Lambda_python3.6 \ - PYTHONPATH=/var/runtime \ PKG_CONFIG_PATH=/var/lang/lib/pkgconfig:/usr/lib64/pkgconfig:/usr/share/pkgconfig RUN rm -rf /var/runtime /var/lang && \ diff --git a/python3.7/build/Dockerfile b/python3.7/build/Dockerfile index 862bcc79..c9612896 100644 --- a/python3.7/build/Dockerfile +++ b/python3.7/build/Dockerfile @@ -3,7 +3,6 @@ FROM lambci/lambda-base:build ENV PATH=/var/lang/bin:$PATH \ LD_LIBRARY_PATH=/var/lang/lib:$LD_LIBRARY_PATH \ AWS_EXECUTION_ENV=AWS_Lambda_python3.7 \ - PYTHONPATH=/var/runtime \ PKG_CONFIG_PATH=/var/lang/lib/pkgconfig:/usr/lib64/pkgconfig:/usr/share/pkgconfig RUN rm -rf /var/runtime /var/lang /var/rapid && \ diff --git a/python3.8/build/Dockerfile b/python3.8/build/Dockerfile index 5c7a423f..e7facf49 100644 --- a/python3.8/build/Dockerfile +++ b/python3.8/build/Dockerfile @@ -3,7 +3,6 @@ FROM lambci/lambda-base-2:build ENV PATH=/var/lang/bin:$PATH \ LD_LIBRARY_PATH=/var/lang/lib:$LD_LIBRARY_PATH \ AWS_EXECUTION_ENV=AWS_Lambda_python3.8 \ - PYTHONPATH=/var/runtime \ PKG_CONFIG_PATH=/var/lang/lib/pkgconfig:/usr/lib64/pkgconfig:/usr/share/pkgconfig RUN rm -rf /var/runtime /var/lang /var/rapid && \ From 1016f89556130b3e095a10ed8300d2cd650daafd Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Fri, 15 May 2020 17:05:20 -0400 Subject: [PATCH 170/271] Update aws-sam-cli to 0.49.0 --- dotnetcore2.0/build/Dockerfile | 2 +- dotnetcore2.1/build/Dockerfile | 2 +- dotnetcore3.1/build/Dockerfile | 2 +- go1.x/build/Dockerfile | 2 +- java11/build/Dockerfile | 2 +- java8/build/Dockerfile | 2 +- nodejs10.x/build/Dockerfile | 2 +- nodejs12.x/build/Dockerfile | 2 +- nodejs4.3/build/Dockerfile | 2 +- nodejs6.10/build/Dockerfile | 2 +- nodejs8.10/build/Dockerfile | 2 +- provided/build/Dockerfile | 2 +- python3.6/build/Dockerfile | 2 +- python3.7/build/Dockerfile | 2 +- python3.8/build/Dockerfile | 2 +- ruby2.5/build/Dockerfile | 2 +- ruby2.7/build/Dockerfile | 2 +- 17 files changed, 17 insertions(+), 17 deletions(-) diff --git a/dotnetcore2.0/build/Dockerfile b/dotnetcore2.0/build/Dockerfile index 076d6f80..ec783934 100644 --- a/dotnetcore2.0/build/Dockerfile +++ b/dotnetcore2.0/build/Dockerfile @@ -20,6 +20,6 @@ RUN rm -rf /var/runtime /var/lang && \ rm -rf /tmp/warmup /tmp/NuGetScratch # Add these as a separate layer as they get updated frequently -RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.48.0 aws-lambda-builders==0.9.0 --no-cache-dir +RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.49.0 aws-lambda-builders==0.9.0 --no-cache-dir CMD ["dotnet", "build"] diff --git a/dotnetcore2.1/build/Dockerfile b/dotnetcore2.1/build/Dockerfile index 4b12926f..14d6f02a 100644 --- a/dotnetcore2.1/build/Dockerfile +++ b/dotnetcore2.1/build/Dockerfile @@ -21,7 +21,7 @@ RUN rm -rf /var/runtime /var/lang && \ rm -rf /tmp/warmup /tmp/NuGetScratch /tmp/.dotnet # Add these as a separate layer as they get updated frequently -RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.48.0 aws-lambda-builders==0.9.0 --no-cache-dir && \ +RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.49.0 aws-lambda-builders==0.9.0 --no-cache-dir && \ dotnet tool install --global Amazon.Lambda.Tools --version 3.3.1 CMD ["dotnet", "build"] diff --git a/dotnetcore3.1/build/Dockerfile b/dotnetcore3.1/build/Dockerfile index f1a0690f..89277385 100644 --- a/dotnetcore3.1/build/Dockerfile +++ b/dotnetcore3.1/build/Dockerfile @@ -20,7 +20,7 @@ RUN rm -rf /var/runtime /var/lang && \ rm -rf /tmp/warmup /tmp/NuGetScratch /tmp/.dotnet # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.48.0 aws-lambda-builders==0.9.0 --no-cache-dir && \ +RUN pip install -U awscli boto3 aws-sam-cli==0.49.0 aws-lambda-builders==0.9.0 --no-cache-dir && \ dotnet tool install --global Amazon.Lambda.Tools --version 3.3.1 CMD ["dotnet", "build"] diff --git a/go1.x/build/Dockerfile b/go1.x/build/Dockerfile index 431c1b37..909345fa 100644 --- a/go1.x/build/Dockerfile +++ b/go1.x/build/Dockerfile @@ -16,6 +16,6 @@ RUN rm -rf /var/runtime /var/lang && \ go get golang.org/x/vgo # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.48.0 aws-lambda-builders==0.9.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.49.0 aws-lambda-builders==0.9.0 --no-cache-dir CMD ["dep", "ensure"] diff --git a/java11/build/Dockerfile b/java11/build/Dockerfile index d2457726..ecc0b2e5 100644 --- a/java11/build/Dockerfile +++ b/java11/build/Dockerfile @@ -14,4 +14,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ ENV PATH="/usr/local/gradle/gradle-6.2.2/bin:/usr/local/maven/apache-maven-3.6.3/bin:${PATH}" # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.48.0 aws-lambda-builders==0.9.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.49.0 aws-lambda-builders==0.9.0 --no-cache-dir diff --git a/java8/build/Dockerfile b/java8/build/Dockerfile index 767f1298..5643ad27 100644 --- a/java8/build/Dockerfile +++ b/java8/build/Dockerfile @@ -15,4 +15,4 @@ RUN rm -rf /var/runtime /var/lang && \ ENV PATH="/usr/local/gradle/gradle-6.2.2/bin:/usr/local/maven/apache-maven-3.6.3/bin:${PATH}" # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.48.0 aws-lambda-builders==0.9.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.49.0 aws-lambda-builders==0.9.0 --no-cache-dir diff --git a/nodejs10.x/build/Dockerfile b/nodejs10.x/build/Dockerfile index 930962a5..f77f596d 100644 --- a/nodejs10.x/build/Dockerfile +++ b/nodejs10.x/build/Dockerfile @@ -9,4 +9,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ curl https://lambci.s3.amazonaws.com/fs/nodejs10.x.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.48.0 aws-lambda-builders==0.9.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.49.0 aws-lambda-builders==0.9.0 --no-cache-dir diff --git a/nodejs12.x/build/Dockerfile b/nodejs12.x/build/Dockerfile index bb180070..7e774355 100644 --- a/nodejs12.x/build/Dockerfile +++ b/nodejs12.x/build/Dockerfile @@ -9,4 +9,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ curl https://lambci.s3.amazonaws.com/fs/nodejs12.x.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.48.0 aws-lambda-builders==0.9.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.49.0 aws-lambda-builders==0.9.0 --no-cache-dir diff --git a/nodejs4.3/build/Dockerfile b/nodejs4.3/build/Dockerfile index f483e18f..8d424fe7 100644 --- a/nodejs4.3/build/Dockerfile +++ b/nodejs4.3/build/Dockerfile @@ -10,6 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs4.3.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.48.0 aws-lambda-builders==0.9.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.49.0 aws-lambda-builders==0.9.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/nodejs6.10/build/Dockerfile b/nodejs6.10/build/Dockerfile index 879db7d8..0233f899 100644 --- a/nodejs6.10/build/Dockerfile +++ b/nodejs6.10/build/Dockerfile @@ -10,6 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs6.10.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.48.0 aws-lambda-builders==0.9.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.49.0 aws-lambda-builders==0.9.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/nodejs8.10/build/Dockerfile b/nodejs8.10/build/Dockerfile index 7ff6f7c6..e6ce174f 100644 --- a/nodejs8.10/build/Dockerfile +++ b/nodejs8.10/build/Dockerfile @@ -10,6 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs8.10.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.48.0 aws-lambda-builders==0.9.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.49.0 aws-lambda-builders==0.9.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/provided/build/Dockerfile b/provided/build/Dockerfile index 820d4389..e621b590 100644 --- a/provided/build/Dockerfile +++ b/provided/build/Dockerfile @@ -1,4 +1,4 @@ FROM lambci/lambda-base:build # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.48.0 aws-lambda-builders==0.9.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.49.0 aws-lambda-builders==0.9.0 --no-cache-dir diff --git a/python3.6/build/Dockerfile b/python3.6/build/Dockerfile index f956f917..28d13c78 100644 --- a/python3.6/build/Dockerfile +++ b/python3.6/build/Dockerfile @@ -20,6 +20,6 @@ RUN rm -rf /var/runtime /var/lang && \ RUN pip install -U pip setuptools wheel --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.5/get-poetry.py | POETRY_VERSION=1.0.5 python3 && \ - pip install -U awscli boto3 aws-sam-cli==0.48.0 aws-lambda-builders==0.9.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.49.0 aws-lambda-builders==0.9.0 --no-cache-dir ENV PATH=/root/.poetry/bin:$PATH diff --git a/python3.7/build/Dockerfile b/python3.7/build/Dockerfile index c9612896..9e76a0ad 100644 --- a/python3.7/build/Dockerfile +++ b/python3.7/build/Dockerfile @@ -12,6 +12,6 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ RUN pip install -U pip setuptools wheel --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.5/get-poetry.py | POETRY_VERSION=1.0.5 python3 && \ - pip install -U awscli boto3 aws-sam-cli==0.48.0 aws-lambda-builders==0.9.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.49.0 aws-lambda-builders==0.9.0 --no-cache-dir ENV PATH=/root/.poetry/bin:$PATH diff --git a/python3.8/build/Dockerfile b/python3.8/build/Dockerfile index e7facf49..aafd0ecc 100644 --- a/python3.8/build/Dockerfile +++ b/python3.8/build/Dockerfile @@ -12,6 +12,6 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ RUN pip install -U pip setuptools wheel --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.5/get-poetry.py | POETRY_VERSION=1.0.5 python3 && \ - pip install -U awscli boto3 aws-sam-cli==0.48.0 aws-lambda-builders==0.9.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.49.0 aws-lambda-builders==0.9.0 --no-cache-dir ENV PATH=/root/.poetry/bin:$PATH diff --git a/ruby2.5/build/Dockerfile b/ruby2.5/build/Dockerfile index 271d0be0..2cff6fce 100644 --- a/ruby2.5/build/Dockerfile +++ b/ruby2.5/build/Dockerfile @@ -13,4 +13,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN gem update --system --no-document && \ gem install --no-document bundler -v '~> 2.1' && \ - pip install -U awscli boto3 aws-sam-cli==0.48.0 aws-lambda-builders==0.9.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.49.0 aws-lambda-builders==0.9.0 --no-cache-dir diff --git a/ruby2.7/build/Dockerfile b/ruby2.7/build/Dockerfile index 89ad80f8..016d3027 100644 --- a/ruby2.7/build/Dockerfile +++ b/ruby2.7/build/Dockerfile @@ -13,4 +13,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN gem update --system --no-document && \ gem install --no-document bundler -v '~> 2.1' && \ - pip install -U awscli boto3 aws-sam-cli==0.48.0 aws-lambda-builders==0.9.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.49.0 aws-lambda-builders==0.9.0 --no-cache-dir From 33e48ce90b08a03fcfdd0b967dc2ba3e0f2d8549 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Fri, 15 May 2020 17:40:53 -0400 Subject: [PATCH 171/271] Rearrange order of pip installs to try and reduce conflicts --- dotnetcore2.0/build/Dockerfile | 2 +- dotnetcore2.1/build/Dockerfile | 2 +- dotnetcore3.1/build/Dockerfile | 2 +- go1.x/build/Dockerfile | 2 +- java11/build/Dockerfile | 2 +- java8/build/Dockerfile | 2 +- nodejs10.x/build/Dockerfile | 2 +- nodejs12.x/build/Dockerfile | 2 +- nodejs4.3/build/Dockerfile | 2 +- nodejs6.10/build/Dockerfile | 2 +- nodejs8.10/build/Dockerfile | 2 +- provided/build/Dockerfile | 2 +- python3.6/build/Dockerfile | 2 +- python3.7/build/Dockerfile | 2 +- python3.8/build/Dockerfile | 2 +- ruby2.5/build/Dockerfile | 2 +- ruby2.7/build/Dockerfile | 2 +- 17 files changed, 17 insertions(+), 17 deletions(-) diff --git a/dotnetcore2.0/build/Dockerfile b/dotnetcore2.0/build/Dockerfile index ec783934..2242ec73 100644 --- a/dotnetcore2.0/build/Dockerfile +++ b/dotnetcore2.0/build/Dockerfile @@ -20,6 +20,6 @@ RUN rm -rf /var/runtime /var/lang && \ rm -rf /tmp/warmup /tmp/NuGetScratch # Add these as a separate layer as they get updated frequently -RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.49.0 aws-lambda-builders==0.9.0 --no-cache-dir +RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.49.0 awscli boto3 virtualenv pipenv --no-cache-dir CMD ["dotnet", "build"] diff --git a/dotnetcore2.1/build/Dockerfile b/dotnetcore2.1/build/Dockerfile index 14d6f02a..6cf1b50f 100644 --- a/dotnetcore2.1/build/Dockerfile +++ b/dotnetcore2.1/build/Dockerfile @@ -21,7 +21,7 @@ RUN rm -rf /var/runtime /var/lang && \ rm -rf /tmp/warmup /tmp/NuGetScratch /tmp/.dotnet # Add these as a separate layer as they get updated frequently -RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.49.0 aws-lambda-builders==0.9.0 --no-cache-dir && \ +RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.49.0 awscli boto3 virtualenv pipenv --no-cache-dir && \ dotnet tool install --global Amazon.Lambda.Tools --version 3.3.1 CMD ["dotnet", "build"] diff --git a/dotnetcore3.1/build/Dockerfile b/dotnetcore3.1/build/Dockerfile index 89277385..a258efa7 100644 --- a/dotnetcore3.1/build/Dockerfile +++ b/dotnetcore3.1/build/Dockerfile @@ -20,7 +20,7 @@ RUN rm -rf /var/runtime /var/lang && \ rm -rf /tmp/warmup /tmp/NuGetScratch /tmp/.dotnet # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.49.0 aws-lambda-builders==0.9.0 --no-cache-dir && \ +RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.49.0 awscli boto3 --no-cache-dir && \ dotnet tool install --global Amazon.Lambda.Tools --version 3.3.1 CMD ["dotnet", "build"] diff --git a/go1.x/build/Dockerfile b/go1.x/build/Dockerfile index 909345fa..8a08b14f 100644 --- a/go1.x/build/Dockerfile +++ b/go1.x/build/Dockerfile @@ -16,6 +16,6 @@ RUN rm -rf /var/runtime /var/lang && \ go get golang.org/x/vgo # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.49.0 aws-lambda-builders==0.9.0 --no-cache-dir +RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.49.0 awscli boto3 --no-cache-dir CMD ["dep", "ensure"] diff --git a/java11/build/Dockerfile b/java11/build/Dockerfile index ecc0b2e5..54b9ab8c 100644 --- a/java11/build/Dockerfile +++ b/java11/build/Dockerfile @@ -14,4 +14,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ ENV PATH="/usr/local/gradle/gradle-6.2.2/bin:/usr/local/maven/apache-maven-3.6.3/bin:${PATH}" # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.49.0 aws-lambda-builders==0.9.0 --no-cache-dir +RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.49.0 awscli boto3 --no-cache-dir diff --git a/java8/build/Dockerfile b/java8/build/Dockerfile index 5643ad27..c91db2a6 100644 --- a/java8/build/Dockerfile +++ b/java8/build/Dockerfile @@ -15,4 +15,4 @@ RUN rm -rf /var/runtime /var/lang && \ ENV PATH="/usr/local/gradle/gradle-6.2.2/bin:/usr/local/maven/apache-maven-3.6.3/bin:${PATH}" # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.49.0 aws-lambda-builders==0.9.0 --no-cache-dir +RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.49.0 awscli boto3 --no-cache-dir diff --git a/nodejs10.x/build/Dockerfile b/nodejs10.x/build/Dockerfile index f77f596d..d77a3946 100644 --- a/nodejs10.x/build/Dockerfile +++ b/nodejs10.x/build/Dockerfile @@ -9,4 +9,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ curl https://lambci.s3.amazonaws.com/fs/nodejs10.x.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.49.0 aws-lambda-builders==0.9.0 --no-cache-dir +RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.49.0 awscli boto3 --no-cache-dir diff --git a/nodejs12.x/build/Dockerfile b/nodejs12.x/build/Dockerfile index 7e774355..2c00b689 100644 --- a/nodejs12.x/build/Dockerfile +++ b/nodejs12.x/build/Dockerfile @@ -9,4 +9,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ curl https://lambci.s3.amazonaws.com/fs/nodejs12.x.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.49.0 aws-lambda-builders==0.9.0 --no-cache-dir +RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.49.0 awscli boto3 --no-cache-dir diff --git a/nodejs4.3/build/Dockerfile b/nodejs4.3/build/Dockerfile index 8d424fe7..2a2548a1 100644 --- a/nodejs4.3/build/Dockerfile +++ b/nodejs4.3/build/Dockerfile @@ -10,6 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs4.3.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.49.0 aws-lambda-builders==0.9.0 --no-cache-dir +RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.49.0 awscli boto3 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/nodejs6.10/build/Dockerfile b/nodejs6.10/build/Dockerfile index 0233f899..0b51f10c 100644 --- a/nodejs6.10/build/Dockerfile +++ b/nodejs6.10/build/Dockerfile @@ -10,6 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs6.10.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.49.0 aws-lambda-builders==0.9.0 --no-cache-dir +RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.49.0 awscli boto3 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/nodejs8.10/build/Dockerfile b/nodejs8.10/build/Dockerfile index e6ce174f..7fdefe8b 100644 --- a/nodejs8.10/build/Dockerfile +++ b/nodejs8.10/build/Dockerfile @@ -10,6 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs8.10.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.49.0 aws-lambda-builders==0.9.0 --no-cache-dir +RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.49.0 awscli boto3 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/provided/build/Dockerfile b/provided/build/Dockerfile index e621b590..74513e59 100644 --- a/provided/build/Dockerfile +++ b/provided/build/Dockerfile @@ -1,4 +1,4 @@ FROM lambci/lambda-base:build # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.49.0 aws-lambda-builders==0.9.0 --no-cache-dir +RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.49.0 awscli boto3 --no-cache-dir diff --git a/python3.6/build/Dockerfile b/python3.6/build/Dockerfile index 28d13c78..ca08cdad 100644 --- a/python3.6/build/Dockerfile +++ b/python3.6/build/Dockerfile @@ -20,6 +20,6 @@ RUN rm -rf /var/runtime /var/lang && \ RUN pip install -U pip setuptools wheel --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.5/get-poetry.py | POETRY_VERSION=1.0.5 python3 && \ - pip install -U awscli boto3 aws-sam-cli==0.49.0 aws-lambda-builders==0.9.0 --no-cache-dir + pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.49.0 awscli boto3 --no-cache-dir ENV PATH=/root/.poetry/bin:$PATH diff --git a/python3.7/build/Dockerfile b/python3.7/build/Dockerfile index 9e76a0ad..f6b0886a 100644 --- a/python3.7/build/Dockerfile +++ b/python3.7/build/Dockerfile @@ -12,6 +12,6 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ RUN pip install -U pip setuptools wheel --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.5/get-poetry.py | POETRY_VERSION=1.0.5 python3 && \ - pip install -U awscli boto3 aws-sam-cli==0.49.0 aws-lambda-builders==0.9.0 --no-cache-dir + pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.49.0 awscli boto3 --no-cache-dir ENV PATH=/root/.poetry/bin:$PATH diff --git a/python3.8/build/Dockerfile b/python3.8/build/Dockerfile index aafd0ecc..5cc5a030 100644 --- a/python3.8/build/Dockerfile +++ b/python3.8/build/Dockerfile @@ -12,6 +12,6 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ RUN pip install -U pip setuptools wheel --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.5/get-poetry.py | POETRY_VERSION=1.0.5 python3 && \ - pip install -U awscli boto3 aws-sam-cli==0.49.0 aws-lambda-builders==0.9.0 --no-cache-dir + pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.49.0 awscli boto3 --no-cache-dir ENV PATH=/root/.poetry/bin:$PATH diff --git a/ruby2.5/build/Dockerfile b/ruby2.5/build/Dockerfile index 2cff6fce..a6520203 100644 --- a/ruby2.5/build/Dockerfile +++ b/ruby2.5/build/Dockerfile @@ -13,4 +13,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN gem update --system --no-document && \ gem install --no-document bundler -v '~> 2.1' && \ - pip install -U awscli boto3 aws-sam-cli==0.49.0 aws-lambda-builders==0.9.0 --no-cache-dir + pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.49.0 awscli boto3 --no-cache-dir diff --git a/ruby2.7/build/Dockerfile b/ruby2.7/build/Dockerfile index 016d3027..2af196f9 100644 --- a/ruby2.7/build/Dockerfile +++ b/ruby2.7/build/Dockerfile @@ -13,4 +13,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN gem update --system --no-document && \ gem install --no-document bundler -v '~> 2.1' && \ - pip install -U awscli boto3 aws-sam-cli==0.49.0 aws-lambda-builders==0.9.0 --no-cache-dir + pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.49.0 awscli boto3 --no-cache-dir From 32315e5a08112da752af218655874a4ac4253cf0 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Tue, 19 May 2020 18:54:10 -0400 Subject: [PATCH 172/271] Update aws-sam-cli to 0.50.0 --- dotnetcore2.0/build/Dockerfile | 2 +- dotnetcore2.1/build/Dockerfile | 2 +- dotnetcore3.1/build/Dockerfile | 2 +- go1.x/build/Dockerfile | 2 +- java11/build/Dockerfile | 2 +- java8/build/Dockerfile | 2 +- nodejs10.x/build/Dockerfile | 2 +- nodejs12.x/build/Dockerfile | 2 +- nodejs4.3/build/Dockerfile | 2 +- nodejs6.10/build/Dockerfile | 2 +- nodejs8.10/build/Dockerfile | 2 +- provided/build/Dockerfile | 2 +- python3.6/build/Dockerfile | 2 +- python3.7/build/Dockerfile | 2 +- python3.8/build/Dockerfile | 2 +- ruby2.5/build/Dockerfile | 2 +- ruby2.7/build/Dockerfile | 2 +- 17 files changed, 17 insertions(+), 17 deletions(-) diff --git a/dotnetcore2.0/build/Dockerfile b/dotnetcore2.0/build/Dockerfile index 2242ec73..f60771f0 100644 --- a/dotnetcore2.0/build/Dockerfile +++ b/dotnetcore2.0/build/Dockerfile @@ -20,6 +20,6 @@ RUN rm -rf /var/runtime /var/lang && \ rm -rf /tmp/warmup /tmp/NuGetScratch # Add these as a separate layer as they get updated frequently -RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.49.0 awscli boto3 virtualenv pipenv --no-cache-dir +RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.50.0 awscli boto3 virtualenv pipenv --no-cache-dir CMD ["dotnet", "build"] diff --git a/dotnetcore2.1/build/Dockerfile b/dotnetcore2.1/build/Dockerfile index 6cf1b50f..d79ed49c 100644 --- a/dotnetcore2.1/build/Dockerfile +++ b/dotnetcore2.1/build/Dockerfile @@ -21,7 +21,7 @@ RUN rm -rf /var/runtime /var/lang && \ rm -rf /tmp/warmup /tmp/NuGetScratch /tmp/.dotnet # Add these as a separate layer as they get updated frequently -RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.49.0 awscli boto3 virtualenv pipenv --no-cache-dir && \ +RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.50.0 awscli boto3 virtualenv pipenv --no-cache-dir && \ dotnet tool install --global Amazon.Lambda.Tools --version 3.3.1 CMD ["dotnet", "build"] diff --git a/dotnetcore3.1/build/Dockerfile b/dotnetcore3.1/build/Dockerfile index a258efa7..ec42cf91 100644 --- a/dotnetcore3.1/build/Dockerfile +++ b/dotnetcore3.1/build/Dockerfile @@ -20,7 +20,7 @@ RUN rm -rf /var/runtime /var/lang && \ rm -rf /tmp/warmup /tmp/NuGetScratch /tmp/.dotnet # Add these as a separate layer as they get updated frequently -RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.49.0 awscli boto3 --no-cache-dir && \ +RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.50.0 awscli boto3 --no-cache-dir && \ dotnet tool install --global Amazon.Lambda.Tools --version 3.3.1 CMD ["dotnet", "build"] diff --git a/go1.x/build/Dockerfile b/go1.x/build/Dockerfile index 8a08b14f..d175f90b 100644 --- a/go1.x/build/Dockerfile +++ b/go1.x/build/Dockerfile @@ -16,6 +16,6 @@ RUN rm -rf /var/runtime /var/lang && \ go get golang.org/x/vgo # Add these as a separate layer as they get updated frequently -RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.49.0 awscli boto3 --no-cache-dir +RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.50.0 awscli boto3 --no-cache-dir CMD ["dep", "ensure"] diff --git a/java11/build/Dockerfile b/java11/build/Dockerfile index 54b9ab8c..bc90ac39 100644 --- a/java11/build/Dockerfile +++ b/java11/build/Dockerfile @@ -14,4 +14,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ ENV PATH="/usr/local/gradle/gradle-6.2.2/bin:/usr/local/maven/apache-maven-3.6.3/bin:${PATH}" # Add these as a separate layer as they get updated frequently -RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.49.0 awscli boto3 --no-cache-dir +RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.50.0 awscli boto3 --no-cache-dir diff --git a/java8/build/Dockerfile b/java8/build/Dockerfile index c91db2a6..4128e26d 100644 --- a/java8/build/Dockerfile +++ b/java8/build/Dockerfile @@ -15,4 +15,4 @@ RUN rm -rf /var/runtime /var/lang && \ ENV PATH="/usr/local/gradle/gradle-6.2.2/bin:/usr/local/maven/apache-maven-3.6.3/bin:${PATH}" # Add these as a separate layer as they get updated frequently -RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.49.0 awscli boto3 --no-cache-dir +RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.50.0 awscli boto3 --no-cache-dir diff --git a/nodejs10.x/build/Dockerfile b/nodejs10.x/build/Dockerfile index d77a3946..9c565e04 100644 --- a/nodejs10.x/build/Dockerfile +++ b/nodejs10.x/build/Dockerfile @@ -9,4 +9,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ curl https://lambci.s3.amazonaws.com/fs/nodejs10.x.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.49.0 awscli boto3 --no-cache-dir +RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.50.0 awscli boto3 --no-cache-dir diff --git a/nodejs12.x/build/Dockerfile b/nodejs12.x/build/Dockerfile index 2c00b689..8b117301 100644 --- a/nodejs12.x/build/Dockerfile +++ b/nodejs12.x/build/Dockerfile @@ -9,4 +9,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ curl https://lambci.s3.amazonaws.com/fs/nodejs12.x.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.49.0 awscli boto3 --no-cache-dir +RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.50.0 awscli boto3 --no-cache-dir diff --git a/nodejs4.3/build/Dockerfile b/nodejs4.3/build/Dockerfile index 2a2548a1..fa635afc 100644 --- a/nodejs4.3/build/Dockerfile +++ b/nodejs4.3/build/Dockerfile @@ -10,6 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs4.3.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.49.0 awscli boto3 --no-cache-dir +RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.50.0 awscli boto3 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/nodejs6.10/build/Dockerfile b/nodejs6.10/build/Dockerfile index 0b51f10c..c7e96b41 100644 --- a/nodejs6.10/build/Dockerfile +++ b/nodejs6.10/build/Dockerfile @@ -10,6 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs6.10.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.49.0 awscli boto3 --no-cache-dir +RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.50.0 awscli boto3 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/nodejs8.10/build/Dockerfile b/nodejs8.10/build/Dockerfile index 7fdefe8b..2d974c8d 100644 --- a/nodejs8.10/build/Dockerfile +++ b/nodejs8.10/build/Dockerfile @@ -10,6 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs8.10.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.49.0 awscli boto3 --no-cache-dir +RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.50.0 awscli boto3 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/provided/build/Dockerfile b/provided/build/Dockerfile index 74513e59..505a58bc 100644 --- a/provided/build/Dockerfile +++ b/provided/build/Dockerfile @@ -1,4 +1,4 @@ FROM lambci/lambda-base:build # Add these as a separate layer as they get updated frequently -RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.49.0 awscli boto3 --no-cache-dir +RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.50.0 awscli boto3 --no-cache-dir diff --git a/python3.6/build/Dockerfile b/python3.6/build/Dockerfile index ca08cdad..413e5d9a 100644 --- a/python3.6/build/Dockerfile +++ b/python3.6/build/Dockerfile @@ -20,6 +20,6 @@ RUN rm -rf /var/runtime /var/lang && \ RUN pip install -U pip setuptools wheel --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.5/get-poetry.py | POETRY_VERSION=1.0.5 python3 && \ - pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.49.0 awscli boto3 --no-cache-dir + pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.50.0 awscli boto3 --no-cache-dir ENV PATH=/root/.poetry/bin:$PATH diff --git a/python3.7/build/Dockerfile b/python3.7/build/Dockerfile index f6b0886a..6b75d423 100644 --- a/python3.7/build/Dockerfile +++ b/python3.7/build/Dockerfile @@ -12,6 +12,6 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ RUN pip install -U pip setuptools wheel --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.5/get-poetry.py | POETRY_VERSION=1.0.5 python3 && \ - pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.49.0 awscli boto3 --no-cache-dir + pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.50.0 awscli boto3 --no-cache-dir ENV PATH=/root/.poetry/bin:$PATH diff --git a/python3.8/build/Dockerfile b/python3.8/build/Dockerfile index 5cc5a030..6d602516 100644 --- a/python3.8/build/Dockerfile +++ b/python3.8/build/Dockerfile @@ -12,6 +12,6 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ RUN pip install -U pip setuptools wheel --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.5/get-poetry.py | POETRY_VERSION=1.0.5 python3 && \ - pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.49.0 awscli boto3 --no-cache-dir + pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.50.0 awscli boto3 --no-cache-dir ENV PATH=/root/.poetry/bin:$PATH diff --git a/ruby2.5/build/Dockerfile b/ruby2.5/build/Dockerfile index a6520203..6c683641 100644 --- a/ruby2.5/build/Dockerfile +++ b/ruby2.5/build/Dockerfile @@ -13,4 +13,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN gem update --system --no-document && \ gem install --no-document bundler -v '~> 2.1' && \ - pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.49.0 awscli boto3 --no-cache-dir + pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.50.0 awscli boto3 --no-cache-dir diff --git a/ruby2.7/build/Dockerfile b/ruby2.7/build/Dockerfile index 2af196f9..05657c17 100644 --- a/ruby2.7/build/Dockerfile +++ b/ruby2.7/build/Dockerfile @@ -13,4 +13,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN gem update --system --no-document && \ gem install --no-document bundler -v '~> 2.1' && \ - pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.49.0 awscli boto3 --no-cache-dir + pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.50.0 awscli boto3 --no-cache-dir From 1fcfb22c3ef3705b5f40f993be2544813967df7f Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Wed, 20 May 2020 16:05:53 -0400 Subject: [PATCH 173/271] Update .NET 3.1 SDK to 3.1.300 https://github.com/dotnet/core/blob/master/release-notes/3.1/3.1.4/3.1.300-sdk.md --- dotnetcore3.1/build/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dotnetcore3.1/build/Dockerfile b/dotnetcore3.1/build/Dockerfile index ec42cf91..0aafcdda 100644 --- a/dotnetcore3.1/build/Dockerfile +++ b/dotnetcore3.1/build/Dockerfile @@ -6,7 +6,7 @@ ENV DOTNET_ROOT=/var/lang/bin ENV PATH=/root/.dotnet/tools:$DOTNET_ROOT:$PATH \ LD_LIBRARY_PATH=/var/lang/lib:$LD_LIBRARY_PATH \ AWS_EXECUTION_ENV=AWS_Lambda_dotnetcore3.1 \ - DOTNET_SDK_VERSION=3.1.201 \ + DOTNET_SDK_VERSION=3.1.300 \ DOTNET_CLI_TELEMETRY_OPTOUT=1 \ NUGET_XMLDOC_MODE=skip From 2fa7765f3f41bb4683eb1969a728914f3555d90f Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Wed, 20 May 2020 16:11:55 -0400 Subject: [PATCH 174/271] Update Amazon.Lambda.Tools to 4.0.0 on dotnetcore3.1 runtime --- dotnetcore3.1/build/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dotnetcore3.1/build/Dockerfile b/dotnetcore3.1/build/Dockerfile index 0aafcdda..7a9654e9 100644 --- a/dotnetcore3.1/build/Dockerfile +++ b/dotnetcore3.1/build/Dockerfile @@ -21,6 +21,6 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.50.0 awscli boto3 --no-cache-dir && \ - dotnet tool install --global Amazon.Lambda.Tools --version 3.3.1 + dotnet tool install --global Amazon.Lambda.Tools --version 4.0.0 CMD ["dotnet", "build"] From c1487e9aa1f38ded7414f6a243fc898f598a9632 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Thu, 21 May 2020 15:44:21 -0400 Subject: [PATCH 175/271] Update aws-sam-cli to 0.51.0 --- dotnetcore2.0/build/Dockerfile | 2 +- dotnetcore2.1/build/Dockerfile | 2 +- dotnetcore3.1/build/Dockerfile | 2 +- go1.x/build/Dockerfile | 2 +- java11/build/Dockerfile | 2 +- java8/build/Dockerfile | 2 +- nodejs10.x/build/Dockerfile | 2 +- nodejs12.x/build/Dockerfile | 2 +- nodejs4.3/build/Dockerfile | 2 +- nodejs6.10/build/Dockerfile | 2 +- nodejs8.10/build/Dockerfile | 2 +- provided/build/Dockerfile | 2 +- python3.6/build/Dockerfile | 2 +- python3.7/build/Dockerfile | 2 +- python3.8/build/Dockerfile | 2 +- ruby2.5/build/Dockerfile | 2 +- ruby2.7/build/Dockerfile | 2 +- 17 files changed, 17 insertions(+), 17 deletions(-) diff --git a/dotnetcore2.0/build/Dockerfile b/dotnetcore2.0/build/Dockerfile index f60771f0..9a1c9825 100644 --- a/dotnetcore2.0/build/Dockerfile +++ b/dotnetcore2.0/build/Dockerfile @@ -20,6 +20,6 @@ RUN rm -rf /var/runtime /var/lang && \ rm -rf /tmp/warmup /tmp/NuGetScratch # Add these as a separate layer as they get updated frequently -RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.50.0 awscli boto3 virtualenv pipenv --no-cache-dir +RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.51.0 awscli boto3 virtualenv pipenv --no-cache-dir CMD ["dotnet", "build"] diff --git a/dotnetcore2.1/build/Dockerfile b/dotnetcore2.1/build/Dockerfile index d79ed49c..5301a1b0 100644 --- a/dotnetcore2.1/build/Dockerfile +++ b/dotnetcore2.1/build/Dockerfile @@ -21,7 +21,7 @@ RUN rm -rf /var/runtime /var/lang && \ rm -rf /tmp/warmup /tmp/NuGetScratch /tmp/.dotnet # Add these as a separate layer as they get updated frequently -RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.50.0 awscli boto3 virtualenv pipenv --no-cache-dir && \ +RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.51.0 awscli boto3 virtualenv pipenv --no-cache-dir && \ dotnet tool install --global Amazon.Lambda.Tools --version 3.3.1 CMD ["dotnet", "build"] diff --git a/dotnetcore3.1/build/Dockerfile b/dotnetcore3.1/build/Dockerfile index 7a9654e9..cbd1aa7d 100644 --- a/dotnetcore3.1/build/Dockerfile +++ b/dotnetcore3.1/build/Dockerfile @@ -20,7 +20,7 @@ RUN rm -rf /var/runtime /var/lang && \ rm -rf /tmp/warmup /tmp/NuGetScratch /tmp/.dotnet # Add these as a separate layer as they get updated frequently -RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.50.0 awscli boto3 --no-cache-dir && \ +RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.51.0 awscli boto3 --no-cache-dir && \ dotnet tool install --global Amazon.Lambda.Tools --version 4.0.0 CMD ["dotnet", "build"] diff --git a/go1.x/build/Dockerfile b/go1.x/build/Dockerfile index d175f90b..3ad1ae13 100644 --- a/go1.x/build/Dockerfile +++ b/go1.x/build/Dockerfile @@ -16,6 +16,6 @@ RUN rm -rf /var/runtime /var/lang && \ go get golang.org/x/vgo # Add these as a separate layer as they get updated frequently -RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.50.0 awscli boto3 --no-cache-dir +RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.51.0 awscli boto3 --no-cache-dir CMD ["dep", "ensure"] diff --git a/java11/build/Dockerfile b/java11/build/Dockerfile index bc90ac39..2386109a 100644 --- a/java11/build/Dockerfile +++ b/java11/build/Dockerfile @@ -14,4 +14,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ ENV PATH="/usr/local/gradle/gradle-6.2.2/bin:/usr/local/maven/apache-maven-3.6.3/bin:${PATH}" # Add these as a separate layer as they get updated frequently -RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.50.0 awscli boto3 --no-cache-dir +RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.51.0 awscli boto3 --no-cache-dir diff --git a/java8/build/Dockerfile b/java8/build/Dockerfile index 4128e26d..3e0b4a01 100644 --- a/java8/build/Dockerfile +++ b/java8/build/Dockerfile @@ -15,4 +15,4 @@ RUN rm -rf /var/runtime /var/lang && \ ENV PATH="/usr/local/gradle/gradle-6.2.2/bin:/usr/local/maven/apache-maven-3.6.3/bin:${PATH}" # Add these as a separate layer as they get updated frequently -RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.50.0 awscli boto3 --no-cache-dir +RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.51.0 awscli boto3 --no-cache-dir diff --git a/nodejs10.x/build/Dockerfile b/nodejs10.x/build/Dockerfile index 9c565e04..ce2c8314 100644 --- a/nodejs10.x/build/Dockerfile +++ b/nodejs10.x/build/Dockerfile @@ -9,4 +9,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ curl https://lambci.s3.amazonaws.com/fs/nodejs10.x.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.50.0 awscli boto3 --no-cache-dir +RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.51.0 awscli boto3 --no-cache-dir diff --git a/nodejs12.x/build/Dockerfile b/nodejs12.x/build/Dockerfile index 8b117301..463ee7ea 100644 --- a/nodejs12.x/build/Dockerfile +++ b/nodejs12.x/build/Dockerfile @@ -9,4 +9,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ curl https://lambci.s3.amazonaws.com/fs/nodejs12.x.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.50.0 awscli boto3 --no-cache-dir +RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.51.0 awscli boto3 --no-cache-dir diff --git a/nodejs4.3/build/Dockerfile b/nodejs4.3/build/Dockerfile index fa635afc..79e811b6 100644 --- a/nodejs4.3/build/Dockerfile +++ b/nodejs4.3/build/Dockerfile @@ -10,6 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs4.3.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.50.0 awscli boto3 --no-cache-dir +RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.51.0 awscli boto3 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/nodejs6.10/build/Dockerfile b/nodejs6.10/build/Dockerfile index c7e96b41..6d460917 100644 --- a/nodejs6.10/build/Dockerfile +++ b/nodejs6.10/build/Dockerfile @@ -10,6 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs6.10.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.50.0 awscli boto3 --no-cache-dir +RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.51.0 awscli boto3 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/nodejs8.10/build/Dockerfile b/nodejs8.10/build/Dockerfile index 2d974c8d..3492801d 100644 --- a/nodejs8.10/build/Dockerfile +++ b/nodejs8.10/build/Dockerfile @@ -10,6 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs8.10.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.50.0 awscli boto3 --no-cache-dir +RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.51.0 awscli boto3 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/provided/build/Dockerfile b/provided/build/Dockerfile index 505a58bc..1f6be2f7 100644 --- a/provided/build/Dockerfile +++ b/provided/build/Dockerfile @@ -1,4 +1,4 @@ FROM lambci/lambda-base:build # Add these as a separate layer as they get updated frequently -RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.50.0 awscli boto3 --no-cache-dir +RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.51.0 awscli boto3 --no-cache-dir diff --git a/python3.6/build/Dockerfile b/python3.6/build/Dockerfile index 413e5d9a..c6a1e12a 100644 --- a/python3.6/build/Dockerfile +++ b/python3.6/build/Dockerfile @@ -20,6 +20,6 @@ RUN rm -rf /var/runtime /var/lang && \ RUN pip install -U pip setuptools wheel --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.5/get-poetry.py | POETRY_VERSION=1.0.5 python3 && \ - pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.50.0 awscli boto3 --no-cache-dir + pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.51.0 awscli boto3 --no-cache-dir ENV PATH=/root/.poetry/bin:$PATH diff --git a/python3.7/build/Dockerfile b/python3.7/build/Dockerfile index 6b75d423..206ca81a 100644 --- a/python3.7/build/Dockerfile +++ b/python3.7/build/Dockerfile @@ -12,6 +12,6 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ RUN pip install -U pip setuptools wheel --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.5/get-poetry.py | POETRY_VERSION=1.0.5 python3 && \ - pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.50.0 awscli boto3 --no-cache-dir + pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.51.0 awscli boto3 --no-cache-dir ENV PATH=/root/.poetry/bin:$PATH diff --git a/python3.8/build/Dockerfile b/python3.8/build/Dockerfile index 6d602516..e1c9eefe 100644 --- a/python3.8/build/Dockerfile +++ b/python3.8/build/Dockerfile @@ -12,6 +12,6 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ RUN pip install -U pip setuptools wheel --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.5/get-poetry.py | POETRY_VERSION=1.0.5 python3 && \ - pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.50.0 awscli boto3 --no-cache-dir + pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.51.0 awscli boto3 --no-cache-dir ENV PATH=/root/.poetry/bin:$PATH diff --git a/ruby2.5/build/Dockerfile b/ruby2.5/build/Dockerfile index 6c683641..afc1b594 100644 --- a/ruby2.5/build/Dockerfile +++ b/ruby2.5/build/Dockerfile @@ -13,4 +13,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN gem update --system --no-document && \ gem install --no-document bundler -v '~> 2.1' && \ - pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.50.0 awscli boto3 --no-cache-dir + pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.51.0 awscli boto3 --no-cache-dir diff --git a/ruby2.7/build/Dockerfile b/ruby2.7/build/Dockerfile index 05657c17..c637481d 100644 --- a/ruby2.7/build/Dockerfile +++ b/ruby2.7/build/Dockerfile @@ -13,4 +13,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN gem update --system --no-document && \ gem install --no-document bundler -v '~> 2.1' && \ - pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.50.0 awscli boto3 --no-cache-dir + pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.51.0 awscli boto3 --no-cache-dir From 7c50177e29ca8e1b6f549d0d15292849cf2b2857 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Wed, 27 May 2020 16:46:48 -0400 Subject: [PATCH 176/271] Update aws-sam-cli to 0.52.0 --- dotnetcore2.0/build/Dockerfile | 2 +- dotnetcore2.1/build/Dockerfile | 2 +- dotnetcore3.1/build/Dockerfile | 2 +- go1.x/build/Dockerfile | 2 +- java11/build/Dockerfile | 2 +- java8/build/Dockerfile | 2 +- nodejs10.x/build/Dockerfile | 2 +- nodejs12.x/build/Dockerfile | 2 +- nodejs4.3/build/Dockerfile | 2 +- nodejs6.10/build/Dockerfile | 2 +- nodejs8.10/build/Dockerfile | 2 +- provided/build/Dockerfile | 2 +- python3.6/build/Dockerfile | 2 +- python3.7/build/Dockerfile | 2 +- python3.8/build/Dockerfile | 2 +- ruby2.5/build/Dockerfile | 2 +- ruby2.7/build/Dockerfile | 2 +- 17 files changed, 17 insertions(+), 17 deletions(-) diff --git a/dotnetcore2.0/build/Dockerfile b/dotnetcore2.0/build/Dockerfile index 9a1c9825..f9636093 100644 --- a/dotnetcore2.0/build/Dockerfile +++ b/dotnetcore2.0/build/Dockerfile @@ -20,6 +20,6 @@ RUN rm -rf /var/runtime /var/lang && \ rm -rf /tmp/warmup /tmp/NuGetScratch # Add these as a separate layer as they get updated frequently -RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.51.0 awscli boto3 virtualenv pipenv --no-cache-dir +RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.52.0 awscli boto3 virtualenv pipenv --no-cache-dir CMD ["dotnet", "build"] diff --git a/dotnetcore2.1/build/Dockerfile b/dotnetcore2.1/build/Dockerfile index 5301a1b0..bbc0dcca 100644 --- a/dotnetcore2.1/build/Dockerfile +++ b/dotnetcore2.1/build/Dockerfile @@ -21,7 +21,7 @@ RUN rm -rf /var/runtime /var/lang && \ rm -rf /tmp/warmup /tmp/NuGetScratch /tmp/.dotnet # Add these as a separate layer as they get updated frequently -RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.51.0 awscli boto3 virtualenv pipenv --no-cache-dir && \ +RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.52.0 awscli boto3 virtualenv pipenv --no-cache-dir && \ dotnet tool install --global Amazon.Lambda.Tools --version 3.3.1 CMD ["dotnet", "build"] diff --git a/dotnetcore3.1/build/Dockerfile b/dotnetcore3.1/build/Dockerfile index cbd1aa7d..0aa663c8 100644 --- a/dotnetcore3.1/build/Dockerfile +++ b/dotnetcore3.1/build/Dockerfile @@ -20,7 +20,7 @@ RUN rm -rf /var/runtime /var/lang && \ rm -rf /tmp/warmup /tmp/NuGetScratch /tmp/.dotnet # Add these as a separate layer as they get updated frequently -RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.51.0 awscli boto3 --no-cache-dir && \ +RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.52.0 awscli boto3 --no-cache-dir && \ dotnet tool install --global Amazon.Lambda.Tools --version 4.0.0 CMD ["dotnet", "build"] diff --git a/go1.x/build/Dockerfile b/go1.x/build/Dockerfile index 3ad1ae13..c0dcc42c 100644 --- a/go1.x/build/Dockerfile +++ b/go1.x/build/Dockerfile @@ -16,6 +16,6 @@ RUN rm -rf /var/runtime /var/lang && \ go get golang.org/x/vgo # Add these as a separate layer as they get updated frequently -RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.51.0 awscli boto3 --no-cache-dir +RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.52.0 awscli boto3 --no-cache-dir CMD ["dep", "ensure"] diff --git a/java11/build/Dockerfile b/java11/build/Dockerfile index 2386109a..104df4f6 100644 --- a/java11/build/Dockerfile +++ b/java11/build/Dockerfile @@ -14,4 +14,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ ENV PATH="/usr/local/gradle/gradle-6.2.2/bin:/usr/local/maven/apache-maven-3.6.3/bin:${PATH}" # Add these as a separate layer as they get updated frequently -RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.51.0 awscli boto3 --no-cache-dir +RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.52.0 awscli boto3 --no-cache-dir diff --git a/java8/build/Dockerfile b/java8/build/Dockerfile index 3e0b4a01..3c844335 100644 --- a/java8/build/Dockerfile +++ b/java8/build/Dockerfile @@ -15,4 +15,4 @@ RUN rm -rf /var/runtime /var/lang && \ ENV PATH="/usr/local/gradle/gradle-6.2.2/bin:/usr/local/maven/apache-maven-3.6.3/bin:${PATH}" # Add these as a separate layer as they get updated frequently -RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.51.0 awscli boto3 --no-cache-dir +RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.52.0 awscli boto3 --no-cache-dir diff --git a/nodejs10.x/build/Dockerfile b/nodejs10.x/build/Dockerfile index ce2c8314..09efadec 100644 --- a/nodejs10.x/build/Dockerfile +++ b/nodejs10.x/build/Dockerfile @@ -9,4 +9,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ curl https://lambci.s3.amazonaws.com/fs/nodejs10.x.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.51.0 awscli boto3 --no-cache-dir +RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.52.0 awscli boto3 --no-cache-dir diff --git a/nodejs12.x/build/Dockerfile b/nodejs12.x/build/Dockerfile index 463ee7ea..9106bf5c 100644 --- a/nodejs12.x/build/Dockerfile +++ b/nodejs12.x/build/Dockerfile @@ -9,4 +9,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ curl https://lambci.s3.amazonaws.com/fs/nodejs12.x.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.51.0 awscli boto3 --no-cache-dir +RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.52.0 awscli boto3 --no-cache-dir diff --git a/nodejs4.3/build/Dockerfile b/nodejs4.3/build/Dockerfile index 79e811b6..742bdf58 100644 --- a/nodejs4.3/build/Dockerfile +++ b/nodejs4.3/build/Dockerfile @@ -10,6 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs4.3.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.51.0 awscli boto3 --no-cache-dir +RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.52.0 awscli boto3 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/nodejs6.10/build/Dockerfile b/nodejs6.10/build/Dockerfile index 6d460917..7b7046ff 100644 --- a/nodejs6.10/build/Dockerfile +++ b/nodejs6.10/build/Dockerfile @@ -10,6 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs6.10.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.51.0 awscli boto3 --no-cache-dir +RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.52.0 awscli boto3 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/nodejs8.10/build/Dockerfile b/nodejs8.10/build/Dockerfile index 3492801d..c6fce8a8 100644 --- a/nodejs8.10/build/Dockerfile +++ b/nodejs8.10/build/Dockerfile @@ -10,6 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs8.10.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.51.0 awscli boto3 --no-cache-dir +RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.52.0 awscli boto3 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/provided/build/Dockerfile b/provided/build/Dockerfile index 1f6be2f7..9ab4e660 100644 --- a/provided/build/Dockerfile +++ b/provided/build/Dockerfile @@ -1,4 +1,4 @@ FROM lambci/lambda-base:build # Add these as a separate layer as they get updated frequently -RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.51.0 awscli boto3 --no-cache-dir +RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.52.0 awscli boto3 --no-cache-dir diff --git a/python3.6/build/Dockerfile b/python3.6/build/Dockerfile index c6a1e12a..f813226e 100644 --- a/python3.6/build/Dockerfile +++ b/python3.6/build/Dockerfile @@ -20,6 +20,6 @@ RUN rm -rf /var/runtime /var/lang && \ RUN pip install -U pip setuptools wheel --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.5/get-poetry.py | POETRY_VERSION=1.0.5 python3 && \ - pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.51.0 awscli boto3 --no-cache-dir + pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.52.0 awscli boto3 --no-cache-dir ENV PATH=/root/.poetry/bin:$PATH diff --git a/python3.7/build/Dockerfile b/python3.7/build/Dockerfile index 206ca81a..e495adb9 100644 --- a/python3.7/build/Dockerfile +++ b/python3.7/build/Dockerfile @@ -12,6 +12,6 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ RUN pip install -U pip setuptools wheel --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.5/get-poetry.py | POETRY_VERSION=1.0.5 python3 && \ - pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.51.0 awscli boto3 --no-cache-dir + pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.52.0 awscli boto3 --no-cache-dir ENV PATH=/root/.poetry/bin:$PATH diff --git a/python3.8/build/Dockerfile b/python3.8/build/Dockerfile index e1c9eefe..bf59fc8c 100644 --- a/python3.8/build/Dockerfile +++ b/python3.8/build/Dockerfile @@ -12,6 +12,6 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ RUN pip install -U pip setuptools wheel --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.5/get-poetry.py | POETRY_VERSION=1.0.5 python3 && \ - pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.51.0 awscli boto3 --no-cache-dir + pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.52.0 awscli boto3 --no-cache-dir ENV PATH=/root/.poetry/bin:$PATH diff --git a/ruby2.5/build/Dockerfile b/ruby2.5/build/Dockerfile index afc1b594..10d642fb 100644 --- a/ruby2.5/build/Dockerfile +++ b/ruby2.5/build/Dockerfile @@ -13,4 +13,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN gem update --system --no-document && \ gem install --no-document bundler -v '~> 2.1' && \ - pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.51.0 awscli boto3 --no-cache-dir + pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.52.0 awscli boto3 --no-cache-dir diff --git a/ruby2.7/build/Dockerfile b/ruby2.7/build/Dockerfile index c637481d..7bbaacc8 100644 --- a/ruby2.7/build/Dockerfile +++ b/ruby2.7/build/Dockerfile @@ -13,4 +13,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN gem update --system --no-document && \ gem install --no-document bundler -v '~> 2.1' && \ - pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.51.0 awscli boto3 --no-cache-dir + pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.52.0 awscli boto3 --no-cache-dir From 1c7797c67302e201234f2f29d663d089ca0b5e28 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Thu, 28 May 2020 18:47:29 -0400 Subject: [PATCH 177/271] Add note about AWS CLI v2 and raw-in-base64-out --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 324dc5c0..484d3257 100644 --- a/README.md +++ b/README.md @@ -89,6 +89,8 @@ aws lambda invoke --endpoint http://localhost:9001 --no-sign-request \ --function-name myfunction --payload '{}' output.json ``` +(if you're using [AWS CLI v2](https://docs.aws.amazon.com/cli/latest/userguide/cliv2-migration.html#cliv2-migration-binaryparam), you'll need to add `--cli-binary-format raw-in-base64-out` to the above command) + Or just: ```sh From 966b646f986e8c9888512b7e260b853fe1125b65 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Tue, 2 Jun 2020 09:25:48 -0400 Subject: [PATCH 178/271] Update go to 1.14.4 on build image --- go1.x/build/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/go1.x/build/Dockerfile b/go1.x/build/Dockerfile index c0dcc42c..2c1fb509 100644 --- a/go1.x/build/Dockerfile +++ b/go1.x/build/Dockerfile @@ -1,7 +1,7 @@ FROM lambci/lambda-base:build # https://golang.org/doc/devel/release.html -ENV GOLANG_VERSION=1.14.2 \ +ENV GOLANG_VERSION=1.14.4 \ GOPATH=/go \ PATH=/go/bin:/usr/local/go/bin:$PATH \ AWS_EXECUTION_ENV=AWS_Lambda_go1.x From 4143ed38a2882a45d6945085cb3895d142d1df11 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Tue, 2 Jun 2020 09:27:14 -0400 Subject: [PATCH 179/271] Update gradle to 6.4.1 on java build images --- java11/build/Dockerfile | 4 ++-- java8/build/Dockerfile | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/java11/build/Dockerfile b/java11/build/Dockerfile index 104df4f6..3010e0d7 100644 --- a/java11/build/Dockerfile +++ b/java11/build/Dockerfile @@ -6,12 +6,12 @@ ENV PATH=/var/lang/bin:$PATH \ RUN rm -rf /var/runtime /var/lang /var/rapid && \ curl https://lambci.s3.amazonaws.com/fs/java11.tgz | tar -zx -C / && \ - mkdir /usr/local/gradle && curl -L -o gradle.zip https://downloads.gradle-dn.com/distributions/gradle-6.2.2-bin.zip && \ + mkdir /usr/local/gradle && curl -L -o gradle.zip https://downloads.gradle-dn.com/distributions/gradle-6.4.1-bin.zip && \ unzip -d /usr/local/gradle gradle.zip && rm gradle.zip && mkdir /usr/local/maven && \ curl -L http://mirror.cc.columbia.edu/pub/software/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz | \ tar -zx -C /usr/local/maven -ENV PATH="/usr/local/gradle/gradle-6.2.2/bin:/usr/local/maven/apache-maven-3.6.3/bin:${PATH}" +ENV PATH="/usr/local/gradle/gradle-6.4.1/bin:/usr/local/maven/apache-maven-3.6.3/bin:${PATH}" # Add these as a separate layer as they get updated frequently RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.52.0 awscli boto3 --no-cache-dir diff --git a/java8/build/Dockerfile b/java8/build/Dockerfile index 3c844335..6cf637fe 100644 --- a/java8/build/Dockerfile +++ b/java8/build/Dockerfile @@ -7,12 +7,12 @@ WORKDIR / RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/java8.tgz | tar -zx -C / && \ yum install -y java-1.8.0-openjdk-devel && \ - mkdir /usr/local/gradle && curl -L -o gradle.zip https://downloads.gradle-dn.com/distributions/gradle-6.2.2-bin.zip && \ + mkdir /usr/local/gradle && curl -L -o gradle.zip https://downloads.gradle-dn.com/distributions/gradle-6.4.1-bin.zip && \ unzip -d /usr/local/gradle gradle.zip && rm gradle.zip && mkdir /usr/local/maven && \ curl -L http://mirror.cc.columbia.edu/pub/software/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz | \ tar -zx -C /usr/local/maven -ENV PATH="/usr/local/gradle/gradle-6.2.2/bin:/usr/local/maven/apache-maven-3.6.3/bin:${PATH}" +ENV PATH="/usr/local/gradle/gradle-6.4.1/bin:/usr/local/maven/apache-maven-3.6.3/bin:${PATH}" # Add these as a separate layer as they get updated frequently RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.52.0 awscli boto3 --no-cache-dir From 1f60db68a64ea5952f6b7e014999c9ca3b8050ed Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Wed, 3 Jun 2020 08:05:07 -0400 Subject: [PATCH 180/271] Pin ImageMagick-devel version in build images - Fixes #280 --- base/build/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/base/build/Dockerfile b/base/build/Dockerfile index 6ddad545..99fa4bc2 100644 --- a/base/build/Dockerfile +++ b/base/build/Dockerfile @@ -17,7 +17,7 @@ f.close();" && \ yum reinstall -y setup pam shadow-utils audit-libs openssl glibc-common glibc && \ yum groupinstall -y development && \ yum install -y clang cmake docker python27-devel python36-devel \ - ImageMagick-devel cairo-devel libssh2-devel libxslt-devel libmpc-devel readline-devel db4-devel \ + ImageMagick-devel-6.7.8.9 cairo-devel libssh2-devel libxslt-devel libmpc-devel readline-devel db4-devel \ libffi-devel expat-devel libicu-devel lua-devel gdbm-devel sqlite-devel pcre-devel libcurl-devel && \ alternatives --set gcc /usr/bin/gcc48 && \ alternatives --set g++ /usr/bin/g++48 && \ From be8acf4fce3072abf976e1ea734bdab0848b3b4a Mon Sep 17 00:00:00 2001 From: Adam Lewis Date: Tue, 9 Jun 2020 11:02:26 +0100 Subject: [PATCH 181/271] Add null check to Log method --- dotnetcore2.0/run/MockBootstraps/MockRuntime.cs | 5 +++++ dotnetcore2.1/run/MockBootstraps/MockRuntime.cs | 5 +++++ 2 files changed, 10 insertions(+) diff --git a/dotnetcore2.0/run/MockBootstraps/MockRuntime.cs b/dotnetcore2.0/run/MockBootstraps/MockRuntime.cs index ca930389..d6038738 100644 --- a/dotnetcore2.0/run/MockBootstraps/MockRuntime.cs +++ b/dotnetcore2.0/run/MockBootstraps/MockRuntime.cs @@ -231,6 +231,11 @@ public unsafe void ReportDone(string invokeId, string errorType, bool waitForExi private byte[] LogsTail4k() { + if (logs == null) + { + return new byte[4096]; + } + var logBuf = Encoding.UTF8.GetBytes(logs); if (logBuf.Length <= 4096) { diff --git a/dotnetcore2.1/run/MockBootstraps/MockRuntime.cs b/dotnetcore2.1/run/MockBootstraps/MockRuntime.cs index 95635487..4acf0332 100644 --- a/dotnetcore2.1/run/MockBootstraps/MockRuntime.cs +++ b/dotnetcore2.1/run/MockBootstraps/MockRuntime.cs @@ -232,6 +232,11 @@ public unsafe void ReportDone(string invokeId, string errorType, bool waitForExi private byte[] LogsTail4k() { + if (logs == null) + { + return new byte[4096]; + } + var logBuf = Encoding.UTF8.GetBytes(logs); if (logBuf.Length <= 4096) { From 5ca3009aebfe1fe05e5c5aebec4a96b4648beb08 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Tue, 9 Jun 2020 10:14:10 -0400 Subject: [PATCH 182/271] Initialize strings instead of null check Also reset StartTime each time we receive an invoke --- dotnetcore2.0/run/MockBootstraps/MockRuntime.cs | 8 ++------ dotnetcore2.1/run/MockBootstraps/MockRuntime.cs | 8 ++------ 2 files changed, 4 insertions(+), 12 deletions(-) diff --git a/dotnetcore2.0/run/MockBootstraps/MockRuntime.cs b/dotnetcore2.0/run/MockBootstraps/MockRuntime.cs index d6038738..daa1df4d 100644 --- a/dotnetcore2.0/run/MockBootstraps/MockRuntime.cs +++ b/dotnetcore2.0/run/MockBootstraps/MockRuntime.cs @@ -30,7 +30,7 @@ internal class MockRuntime : ILambdaRuntime private DateTimeOffset receivedInvokeAt = DateTimeOffset.MinValue; - private string logs; + private string logs = ""; private Exception invokeError; @@ -145,6 +145,7 @@ unsafe InvokeData ILambdaRuntime.ReceiveInvoke(IDictionary initialEnvironmentVar var body = result.Content.ReadAsStringAsync().Result; + context.StartTime = DateTime.Now; context.RequestId = requestId; context.DeadlineMs = long.Parse(deadlineMs); context.Body = body; @@ -231,11 +232,6 @@ public unsafe void ReportDone(string invokeId, string errorType, bool waitForExi private byte[] LogsTail4k() { - if (logs == null) - { - return new byte[4096]; - } - var logBuf = Encoding.UTF8.GetBytes(logs); if (logBuf.Length <= 4096) { diff --git a/dotnetcore2.1/run/MockBootstraps/MockRuntime.cs b/dotnetcore2.1/run/MockBootstraps/MockRuntime.cs index 4acf0332..c3827321 100644 --- a/dotnetcore2.1/run/MockBootstraps/MockRuntime.cs +++ b/dotnetcore2.1/run/MockBootstraps/MockRuntime.cs @@ -30,7 +30,7 @@ internal class MockRuntime : ILambdaRuntime private DateTimeOffset receivedInvokeAt = DateTimeOffset.MinValue; - private string logs; + private string logs = ""; private Exception invokeError; @@ -146,6 +146,7 @@ unsafe InvokeData ILambdaRuntime.ReceiveInvoke(IDictionary initialEnvironmentVar var body = result.Content.ReadAsStringAsync().Result; + context.StartTime = DateTime.Now; context.RequestId = requestId; context.DeadlineMs = long.Parse(deadlineMs); context.Body = body; @@ -232,11 +233,6 @@ public unsafe void ReportDone(string invokeId, string errorType, bool waitForExi private byte[] LogsTail4k() { - if (logs == null) - { - return new byte[4096]; - } - var logBuf = Encoding.UTF8.GetBytes(logs); if (logBuf.Length <= 4096) { From ae8d83ddec48f20b5beddbc79da4020ebad5baf3 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Tue, 9 Jun 2020 11:53:32 -0400 Subject: [PATCH 183/271] Reorder runtimes in build scripts to make it clearer which are amzn1 and which are amzn2 --- base/build-all.sh | 2 +- base/publish-all.sh | 2 +- base/tag-all.sh | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/base/build-all.sh b/base/build-all.sh index 9b23660d..12d7c0f5 100755 --- a/base/build-all.sh +++ b/base/build-all.sh @@ -1,6 +1,6 @@ #!/bin/bash -RUNTIMES="provided go1.x nodejs4.3 nodejs6.10 nodejs8.10 nodejs10.x nodejs12.x python2.7 python3.6 python3.7 python3.8 ruby2.5 ruby2.7 java8 java11 dotnetcore2.0 dotnetcore2.1 dotnetcore3.1" +RUNTIMES="provided go1.x nodejs4.3 nodejs6.10 nodejs8.10 python2.7 python3.6 python3.7 ruby2.5 java8 dotnetcore2.0 dotnetcore2.1 nodejs10.x nodejs12.x python3.8 ruby2.7 java11 dotnetcore3.1" TOP_DIR="${PWD}/.." diff --git a/base/publish-all.sh b/base/publish-all.sh index f2bc7842..b5f5027c 100755 --- a/base/publish-all.sh +++ b/base/publish-all.sh @@ -1,6 +1,6 @@ #!/bin/bash -RUNTIMES="provided go1.x nodejs4.3 nodejs6.10 nodejs8.10 nodejs10.x nodejs12.x python2.7 python3.6 python3.7 python3.8 ruby2.5 ruby2.7 java8 java11 dotnetcore2.0 dotnetcore2.1 dotnetcore3.1" +RUNTIMES="provided go1.x nodejs4.3 nodejs6.10 nodejs8.10 python2.7 python3.6 python3.7 ruby2.5 java8 dotnetcore2.0 dotnetcore2.1 nodejs10.x nodejs12.x python3.8 ruby2.7 java11 dotnetcore3.1" echo -n "Enter repository passphrase: " read -s DOCKER_CONTENT_TRUST_REPOSITORY_PASSPHRASE diff --git a/base/tag-all.sh b/base/tag-all.sh index 2e36b3e0..8b9c0827 100755 --- a/base/tag-all.sh +++ b/base/tag-all.sh @@ -1,6 +1,6 @@ #!/bin/bash -RUNTIMES="provided go1.x nodejs4.3 nodejs6.10 nodejs8.10 nodejs10.x nodejs12.x python2.7 python3.6 python3.7 python3.8 ruby2.5 ruby2.7 java8 java11 dotnetcore2.0 dotnetcore2.1 dotnetcore3.1" +RUNTIMES="provided go1.x nodejs4.3 nodejs6.10 nodejs8.10 python2.7 python3.6 python3.7 ruby2.5 java8 dotnetcore2.0 dotnetcore2.1 nodejs10.x nodejs12.x python3.8 ruby2.7 java11 dotnetcore3.1" git tag -f latest From 74991ec6344ca8a8868ac93180c4afc17efb693b Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Tue, 9 Jun 2020 12:02:29 -0400 Subject: [PATCH 184/271] Update poetry to 1.0.8 on python build images --- python2.7/build/Dockerfile | 2 +- python3.6/build/Dockerfile | 2 +- python3.7/build/Dockerfile | 2 +- python3.8/build/Dockerfile | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/python2.7/build/Dockerfile b/python2.7/build/Dockerfile index 07b2c7a7..d3c0b8ba 100644 --- a/python2.7/build/Dockerfile +++ b/python2.7/build/Dockerfile @@ -8,7 +8,7 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ pip install -U 'virtualenv>=16.0.0,<20.0.0' pipenv wheel --no-cache-dir && \ - curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.5/get-poetry.py | POETRY_VERSION=1.0.5 python && \ + curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.8/get-poetry.py | POETRY_VERSION=1.0.8 python && \ pip install -U awscli boto3 aws-sam-cli==0.22.0 aws-lambda-builders==0.4.0 --no-cache-dir ENV PATH=/root/.poetry/bin:$PATH diff --git a/python3.6/build/Dockerfile b/python3.6/build/Dockerfile index f813226e..76008eaa 100644 --- a/python3.6/build/Dockerfile +++ b/python3.6/build/Dockerfile @@ -19,7 +19,7 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN pip install -U pip setuptools wheel --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ - curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.5/get-poetry.py | POETRY_VERSION=1.0.5 python3 && \ + curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.8/get-poetry.py | POETRY_VERSION=1.0.8 python3 && \ pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.52.0 awscli boto3 --no-cache-dir ENV PATH=/root/.poetry/bin:$PATH diff --git a/python3.7/build/Dockerfile b/python3.7/build/Dockerfile index e495adb9..06728d49 100644 --- a/python3.7/build/Dockerfile +++ b/python3.7/build/Dockerfile @@ -11,7 +11,7 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN pip install -U pip setuptools wheel --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ - curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.5/get-poetry.py | POETRY_VERSION=1.0.5 python3 && \ + curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.8/get-poetry.py | POETRY_VERSION=1.0.8 python3 && \ pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.52.0 awscli boto3 --no-cache-dir ENV PATH=/root/.poetry/bin:$PATH diff --git a/python3.8/build/Dockerfile b/python3.8/build/Dockerfile index bf59fc8c..b6842b89 100644 --- a/python3.8/build/Dockerfile +++ b/python3.8/build/Dockerfile @@ -11,7 +11,7 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN pip install -U pip setuptools wheel --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ - curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.5/get-poetry.py | POETRY_VERSION=1.0.5 python3 && \ + curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.8/get-poetry.py | POETRY_VERSION=1.0.8 python3 && \ pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.52.0 awscli boto3 --no-cache-dir ENV PATH=/root/.poetry/bin:$PATH From ca4c77254c9e73f0626f5a658616d81360e76f52 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Tue, 9 Jun 2020 14:54:16 -0400 Subject: [PATCH 185/271] Update dotnetcore3.1 SDK to 3.1.301 --- dotnetcore3.1/build/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dotnetcore3.1/build/Dockerfile b/dotnetcore3.1/build/Dockerfile index 0aa663c8..a442debe 100644 --- a/dotnetcore3.1/build/Dockerfile +++ b/dotnetcore3.1/build/Dockerfile @@ -6,7 +6,7 @@ ENV DOTNET_ROOT=/var/lang/bin ENV PATH=/root/.dotnet/tools:$DOTNET_ROOT:$PATH \ LD_LIBRARY_PATH=/var/lang/lib:$LD_LIBRARY_PATH \ AWS_EXECUTION_ENV=AWS_Lambda_dotnetcore3.1 \ - DOTNET_SDK_VERSION=3.1.300 \ + DOTNET_SDK_VERSION=3.1.301 \ DOTNET_CLI_TELEMETRY_OPTOUT=1 \ NUGET_XMLDOC_MODE=skip From 74bc9c4f70cf595e6bc482dcb67d15ce5dbec48c Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Tue, 9 Jun 2020 15:42:03 -0400 Subject: [PATCH 186/271] Update poetry to 1.0.9 on python build images --- python2.7/build/Dockerfile | 2 +- python3.6/build/Dockerfile | 2 +- python3.7/build/Dockerfile | 2 +- python3.8/build/Dockerfile | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/python2.7/build/Dockerfile b/python2.7/build/Dockerfile index d3c0b8ba..dc20f283 100644 --- a/python2.7/build/Dockerfile +++ b/python2.7/build/Dockerfile @@ -8,7 +8,7 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ pip install -U 'virtualenv>=16.0.0,<20.0.0' pipenv wheel --no-cache-dir && \ - curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.8/get-poetry.py | POETRY_VERSION=1.0.8 python && \ + curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.9/get-poetry.py | POETRY_VERSION=1.0.9 python && \ pip install -U awscli boto3 aws-sam-cli==0.22.0 aws-lambda-builders==0.4.0 --no-cache-dir ENV PATH=/root/.poetry/bin:$PATH diff --git a/python3.6/build/Dockerfile b/python3.6/build/Dockerfile index 76008eaa..f9961b63 100644 --- a/python3.6/build/Dockerfile +++ b/python3.6/build/Dockerfile @@ -19,7 +19,7 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN pip install -U pip setuptools wheel --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ - curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.8/get-poetry.py | POETRY_VERSION=1.0.8 python3 && \ + curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.9/get-poetry.py | POETRY_VERSION=1.0.9 python3 && \ pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.52.0 awscli boto3 --no-cache-dir ENV PATH=/root/.poetry/bin:$PATH diff --git a/python3.7/build/Dockerfile b/python3.7/build/Dockerfile index 06728d49..790c9b74 100644 --- a/python3.7/build/Dockerfile +++ b/python3.7/build/Dockerfile @@ -11,7 +11,7 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN pip install -U pip setuptools wheel --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ - curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.8/get-poetry.py | POETRY_VERSION=1.0.8 python3 && \ + curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.9/get-poetry.py | POETRY_VERSION=1.0.9 python3 && \ pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.52.0 awscli boto3 --no-cache-dir ENV PATH=/root/.poetry/bin:$PATH diff --git a/python3.8/build/Dockerfile b/python3.8/build/Dockerfile index b6842b89..7cf8533e 100644 --- a/python3.8/build/Dockerfile +++ b/python3.8/build/Dockerfile @@ -11,7 +11,7 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN pip install -U pip setuptools wheel --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ - curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.8/get-poetry.py | POETRY_VERSION=1.0.8 python3 && \ + curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.9/get-poetry.py | POETRY_VERSION=1.0.9 python3 && \ pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.52.0 awscli boto3 --no-cache-dir ENV PATH=/root/.poetry/bin:$PATH From 77e51481fd8db43fcb66d905a3051d5d0f3d4469 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Tue, 16 Jun 2020 21:32:24 -0400 Subject: [PATCH 187/271] Update aws-sam-cli to 0.53.0 --- dotnetcore2.0/build/Dockerfile | 2 +- dotnetcore2.1/build/Dockerfile | 2 +- dotnetcore3.1/build/Dockerfile | 2 +- go1.x/build/Dockerfile | 2 +- java11/build/Dockerfile | 2 +- java8/build/Dockerfile | 2 +- nodejs10.x/build/Dockerfile | 2 +- nodejs12.x/build/Dockerfile | 2 +- nodejs4.3/build/Dockerfile | 2 +- nodejs6.10/build/Dockerfile | 2 +- nodejs8.10/build/Dockerfile | 2 +- provided/build/Dockerfile | 2 +- python3.6/build/Dockerfile | 2 +- python3.7/build/Dockerfile | 2 +- python3.8/build/Dockerfile | 2 +- ruby2.5/build/Dockerfile | 2 +- ruby2.7/build/Dockerfile | 2 +- 17 files changed, 17 insertions(+), 17 deletions(-) diff --git a/dotnetcore2.0/build/Dockerfile b/dotnetcore2.0/build/Dockerfile index f9636093..4e4b138d 100644 --- a/dotnetcore2.0/build/Dockerfile +++ b/dotnetcore2.0/build/Dockerfile @@ -20,6 +20,6 @@ RUN rm -rf /var/runtime /var/lang && \ rm -rf /tmp/warmup /tmp/NuGetScratch # Add these as a separate layer as they get updated frequently -RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.52.0 awscli boto3 virtualenv pipenv --no-cache-dir +RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.53.0 awscli boto3 virtualenv pipenv --no-cache-dir CMD ["dotnet", "build"] diff --git a/dotnetcore2.1/build/Dockerfile b/dotnetcore2.1/build/Dockerfile index bbc0dcca..be936a46 100644 --- a/dotnetcore2.1/build/Dockerfile +++ b/dotnetcore2.1/build/Dockerfile @@ -21,7 +21,7 @@ RUN rm -rf /var/runtime /var/lang && \ rm -rf /tmp/warmup /tmp/NuGetScratch /tmp/.dotnet # Add these as a separate layer as they get updated frequently -RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.52.0 awscli boto3 virtualenv pipenv --no-cache-dir && \ +RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.53.0 awscli boto3 virtualenv pipenv --no-cache-dir && \ dotnet tool install --global Amazon.Lambda.Tools --version 3.3.1 CMD ["dotnet", "build"] diff --git a/dotnetcore3.1/build/Dockerfile b/dotnetcore3.1/build/Dockerfile index a442debe..e2cfdcf9 100644 --- a/dotnetcore3.1/build/Dockerfile +++ b/dotnetcore3.1/build/Dockerfile @@ -20,7 +20,7 @@ RUN rm -rf /var/runtime /var/lang && \ rm -rf /tmp/warmup /tmp/NuGetScratch /tmp/.dotnet # Add these as a separate layer as they get updated frequently -RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.52.0 awscli boto3 --no-cache-dir && \ +RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.53.0 awscli boto3 --no-cache-dir && \ dotnet tool install --global Amazon.Lambda.Tools --version 4.0.0 CMD ["dotnet", "build"] diff --git a/go1.x/build/Dockerfile b/go1.x/build/Dockerfile index 2c1fb509..258b3216 100644 --- a/go1.x/build/Dockerfile +++ b/go1.x/build/Dockerfile @@ -16,6 +16,6 @@ RUN rm -rf /var/runtime /var/lang && \ go get golang.org/x/vgo # Add these as a separate layer as they get updated frequently -RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.52.0 awscli boto3 --no-cache-dir +RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.53.0 awscli boto3 --no-cache-dir CMD ["dep", "ensure"] diff --git a/java11/build/Dockerfile b/java11/build/Dockerfile index 3010e0d7..a4953ff8 100644 --- a/java11/build/Dockerfile +++ b/java11/build/Dockerfile @@ -14,4 +14,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ ENV PATH="/usr/local/gradle/gradle-6.4.1/bin:/usr/local/maven/apache-maven-3.6.3/bin:${PATH}" # Add these as a separate layer as they get updated frequently -RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.52.0 awscli boto3 --no-cache-dir +RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.53.0 awscli boto3 --no-cache-dir diff --git a/java8/build/Dockerfile b/java8/build/Dockerfile index 6cf637fe..eb5a62c7 100644 --- a/java8/build/Dockerfile +++ b/java8/build/Dockerfile @@ -15,4 +15,4 @@ RUN rm -rf /var/runtime /var/lang && \ ENV PATH="/usr/local/gradle/gradle-6.4.1/bin:/usr/local/maven/apache-maven-3.6.3/bin:${PATH}" # Add these as a separate layer as they get updated frequently -RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.52.0 awscli boto3 --no-cache-dir +RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.53.0 awscli boto3 --no-cache-dir diff --git a/nodejs10.x/build/Dockerfile b/nodejs10.x/build/Dockerfile index 09efadec..4f41af70 100644 --- a/nodejs10.x/build/Dockerfile +++ b/nodejs10.x/build/Dockerfile @@ -9,4 +9,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ curl https://lambci.s3.amazonaws.com/fs/nodejs10.x.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.52.0 awscli boto3 --no-cache-dir +RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.53.0 awscli boto3 --no-cache-dir diff --git a/nodejs12.x/build/Dockerfile b/nodejs12.x/build/Dockerfile index 9106bf5c..51dfeb4e 100644 --- a/nodejs12.x/build/Dockerfile +++ b/nodejs12.x/build/Dockerfile @@ -9,4 +9,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ curl https://lambci.s3.amazonaws.com/fs/nodejs12.x.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.52.0 awscli boto3 --no-cache-dir +RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.53.0 awscli boto3 --no-cache-dir diff --git a/nodejs4.3/build/Dockerfile b/nodejs4.3/build/Dockerfile index 742bdf58..c6420f90 100644 --- a/nodejs4.3/build/Dockerfile +++ b/nodejs4.3/build/Dockerfile @@ -10,6 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs4.3.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.52.0 awscli boto3 --no-cache-dir +RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.53.0 awscli boto3 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/nodejs6.10/build/Dockerfile b/nodejs6.10/build/Dockerfile index 7b7046ff..c9eb1b24 100644 --- a/nodejs6.10/build/Dockerfile +++ b/nodejs6.10/build/Dockerfile @@ -10,6 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs6.10.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.52.0 awscli boto3 --no-cache-dir +RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.53.0 awscli boto3 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/nodejs8.10/build/Dockerfile b/nodejs8.10/build/Dockerfile index c6fce8a8..b6b4a8bc 100644 --- a/nodejs8.10/build/Dockerfile +++ b/nodejs8.10/build/Dockerfile @@ -10,6 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs8.10.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.52.0 awscli boto3 --no-cache-dir +RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.53.0 awscli boto3 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/provided/build/Dockerfile b/provided/build/Dockerfile index 9ab4e660..ec3bf89d 100644 --- a/provided/build/Dockerfile +++ b/provided/build/Dockerfile @@ -1,4 +1,4 @@ FROM lambci/lambda-base:build # Add these as a separate layer as they get updated frequently -RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.52.0 awscli boto3 --no-cache-dir +RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.53.0 awscli boto3 --no-cache-dir diff --git a/python3.6/build/Dockerfile b/python3.6/build/Dockerfile index f9961b63..d458b5ee 100644 --- a/python3.6/build/Dockerfile +++ b/python3.6/build/Dockerfile @@ -20,6 +20,6 @@ RUN rm -rf /var/runtime /var/lang && \ RUN pip install -U pip setuptools wheel --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.9/get-poetry.py | POETRY_VERSION=1.0.9 python3 && \ - pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.52.0 awscli boto3 --no-cache-dir + pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.53.0 awscli boto3 --no-cache-dir ENV PATH=/root/.poetry/bin:$PATH diff --git a/python3.7/build/Dockerfile b/python3.7/build/Dockerfile index 790c9b74..dcada8e1 100644 --- a/python3.7/build/Dockerfile +++ b/python3.7/build/Dockerfile @@ -12,6 +12,6 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ RUN pip install -U pip setuptools wheel --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.9/get-poetry.py | POETRY_VERSION=1.0.9 python3 && \ - pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.52.0 awscli boto3 --no-cache-dir + pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.53.0 awscli boto3 --no-cache-dir ENV PATH=/root/.poetry/bin:$PATH diff --git a/python3.8/build/Dockerfile b/python3.8/build/Dockerfile index 7cf8533e..dcf83d6b 100644 --- a/python3.8/build/Dockerfile +++ b/python3.8/build/Dockerfile @@ -12,6 +12,6 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ RUN pip install -U pip setuptools wheel --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.9/get-poetry.py | POETRY_VERSION=1.0.9 python3 && \ - pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.52.0 awscli boto3 --no-cache-dir + pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.53.0 awscli boto3 --no-cache-dir ENV PATH=/root/.poetry/bin:$PATH diff --git a/ruby2.5/build/Dockerfile b/ruby2.5/build/Dockerfile index 10d642fb..79bfcec0 100644 --- a/ruby2.5/build/Dockerfile +++ b/ruby2.5/build/Dockerfile @@ -13,4 +13,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN gem update --system --no-document && \ gem install --no-document bundler -v '~> 2.1' && \ - pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.52.0 awscli boto3 --no-cache-dir + pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.53.0 awscli boto3 --no-cache-dir diff --git a/ruby2.7/build/Dockerfile b/ruby2.7/build/Dockerfile index 7bbaacc8..8cb421e9 100644 --- a/ruby2.7/build/Dockerfile +++ b/ruby2.7/build/Dockerfile @@ -13,4 +13,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN gem update --system --no-document && \ gem install --no-document bundler -v '~> 2.1' && \ - pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.52.0 awscli boto3 --no-cache-dir + pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.53.0 awscli boto3 --no-cache-dir From ab8c916f85ee057dad80b98231602a0c0e202d5c Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Tue, 16 Jun 2020 21:48:30 -0400 Subject: [PATCH 188/271] Use docker cache for build images --- base/build-all.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/base/build-all.sh b/base/build-all.sh index 12d7c0f5..88ad7919 100755 --- a/base/build-all.sh +++ b/base/build-all.sh @@ -19,5 +19,5 @@ for RUNTIME in $RUNTIMES; do cd ${TOP_DIR}/${RUNTIME}/build - docker build --no-cache -t lambci/lambda:build-${RUNTIME} . + docker build -t lambci/lambda:build-${RUNTIME} . done From a03bff0038d6ae2bcfdddc4e61d156b535f9606e Mon Sep 17 00:00:00 2001 From: Timo Schilling Date: Sun, 21 Jun 2020 19:19:05 +0200 Subject: [PATCH 189/271] set BUNDLE_SILENCE_ROOT_WARNING=1 for all ruby container (#286) --- ruby2.5/build/Dockerfile | 3 ++- ruby2.7/build/Dockerfile | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/ruby2.5/build/Dockerfile b/ruby2.5/build/Dockerfile index 79bfcec0..f6d5cbd0 100644 --- a/ruby2.5/build/Dockerfile +++ b/ruby2.5/build/Dockerfile @@ -5,7 +5,8 @@ ENV PATH=/var/lang/bin:$PATH \ AWS_EXECUTION_ENV=AWS_Lambda_ruby2.5 \ GEM_HOME=/var/runtime \ GEM_PATH=/var/task/vendor/bundle/ruby/2.5.0:/opt/ruby/gems/2.5.0:/var/lang/lib/ruby/gems/2.5.0 \ - RUBYLIB=/var/task:/var/runtime/lib:/opt/ruby/lib + RUBYLIB=/var/task:/var/runtime/lib:/opt/ruby/lib \ + BUNDLE_SILENCE_ROOT_WARNING=1 RUN rm -rf /var/runtime /var/lang /var/rapid && \ curl https://lambci.s3.amazonaws.com/fs/ruby2.5.tgz | tar -zx -C / diff --git a/ruby2.7/build/Dockerfile b/ruby2.7/build/Dockerfile index 8cb421e9..3728daf2 100644 --- a/ruby2.7/build/Dockerfile +++ b/ruby2.7/build/Dockerfile @@ -5,7 +5,8 @@ ENV PATH=/var/lang/bin:$PATH \ AWS_EXECUTION_ENV=AWS_Lambda_ruby2.7 \ GEM_HOME=/var/runtime \ GEM_PATH=/var/task/vendor/bundle/ruby/2.7.0:/opt/ruby/gems/2.7.0:/var/lang/lib/ruby/gems/2.7.0 \ - RUBYLIB=/var/task:/var/runtime/lib:/opt/ruby/lib + RUBYLIB=/var/task:/var/runtime/lib:/opt/ruby/lib \ + BUNDLE_SILENCE_ROOT_WARNING=1 RUN rm -rf /var/runtime /var/lang /var/rapid && \ curl https://lambci.s3.amazonaws.com/fs/ruby2.7.tgz | tar -zx -C / From c1af16ade5fe7b6b0cf094202e7aa5793d7b0320 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Tue, 23 Jun 2020 14:34:14 -0400 Subject: [PATCH 190/271] Create FUNDING.yml --- .github/FUNDING.yml | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 .github/FUNDING.yml diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml new file mode 100644 index 00000000..b7fdd974 --- /dev/null +++ b/.github/FUNDING.yml @@ -0,0 +1,3 @@ +# These are supported funding model platforms + +github: mhart From 38f12c4df00ba1ed48d12c0318494a975a5f04d0 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Wed, 24 Jun 2020 11:28:28 -0400 Subject: [PATCH 191/271] yum-plugin-ovl is now included in Amazon Linux 1 Lambdas --- base/build/Dockerfile | 9 --------- 1 file changed, 9 deletions(-) diff --git a/base/build/Dockerfile b/base/build/Dockerfile index 99fa4bc2..e2a6fa1d 100644 --- a/base/build/Dockerfile +++ b/base/build/Dockerfile @@ -4,16 +4,7 @@ ENV PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/bin # A couple of packages are either missing critical-ish files, or didn't make it into the tar RUN chmod 1777 /tmp && \ - /usr/bin/python3 -c "from configparser import SafeConfigParser; \ -yum_conf = SafeConfigParser(); \ -yum_conf.read('/etc/yum.conf'); \ -yum_conf.has_section('main') or yum_conf.add_section('main'); \ -yum_conf.set('main', 'plugins', '1'); \ -f = open('/etc/yum.conf', 'w'); \ -yum_conf.write(f); \ -f.close();" && \ rpm --rebuilddb && \ - yum install -y yum-plugin-ovl && \ yum reinstall -y setup pam shadow-utils audit-libs openssl glibc-common glibc && \ yum groupinstall -y development && \ yum install -y clang cmake docker python27-devel python36-devel \ From a88dcb4162d4e85e0d59db7f9735f704e976b3f1 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Wed, 24 Jun 2020 11:33:14 -0400 Subject: [PATCH 192/271] Update amzn1 packages --- base/amazonlinux1.txt | 36 ++++++++++++++++----------------- base/packages.txt | 47 ++++++++++++++++++++++--------------------- 2 files changed, 42 insertions(+), 41 deletions(-) diff --git a/base/amazonlinux1.txt b/base/amazonlinux1.txt index 773aa0bc..dbb5fa6d 100644 --- a/base/amazonlinux1.txt +++ b/base/amazonlinux1.txt @@ -1,7 +1,7 @@ basesystem-10.0-4.9.amzn1.noarch bash-4.2.46-28.37.amzn1.x86_64 bzip2-libs-1.0.6-8.12.amzn1.x86_64 -ca-certificates-2018.2.22-65.1.21.amzn1.noarch +ca-certificates-2018.2.22-65.1.22.amzn1.noarch chkconfig-1.3.49.3-2.14.amzn1.x86_64 coreutils-8.22-15.52.amzn1.x86_64 curl-7.61.1-12.93.amzn1.x86_64 @@ -9,14 +9,14 @@ cyrus-sasl-lib-2.1.23-13.16.amzn1.x86_64 db4-4.7.25-18.11.amzn1.x86_64 db4-utils-4.7.25-18.11.amzn1.x86_64 elfutils-libelf-0.168-8.19.amzn1.x86_64 -expat-2.1.0-10.21.amzn1.x86_64 -file-libs-5.37-8.48.amzn1.x86_64 +expat-2.1.0-11.22.amzn1.x86_64 +file-libs-5.37-8.49.amzn1.x86_64 filesystem-2.4.30-3.8.amzn1.x86_64 gawk-3.1.7-10.10.amzn1.x86_64 gdbm-1.8.0-36.6.amzn1.x86_64 glib2-2.36.3-5.21.amzn1.x86_64 -glibc-2.17-292.178.amzn1.x86_64 -glibc-common-2.17-292.178.amzn1.x86_64 +glibc-2.17-292.180.amzn1.x86_64 +glibc-common-2.17-292.180.amzn1.x86_64 gmp-6.0.0-11.16.amzn1.x86_64 gnupg2-2.0.28-2.33.amzn1.x86_64 gpgme-1.4.3-5.15.amzn1.x86_64 @@ -24,7 +24,7 @@ grep-2.20-3.18.amzn1.x86_64 gzip-1.5-9.19.amzn1.x86_64 info-5.1-4.10.amzn1.x86_64 keyutils-libs-1.5.8-3.12.amzn1.x86_64 -krb5-libs-1.15.1-34.44.amzn1.x86_64 +krb5-libs-1.15.1-46.48.amzn1.x86_64 libacl-2.2.49-6.11.amzn1.x86_64 libassuan-2.0.3-3.3.amzn1.x86_64 libattr-2.4.46-12.10.amzn1.x86_64 @@ -35,7 +35,7 @@ libffi-3.0.13-16.5.amzn1.x86_64 libgcc72-7.2.1-2.59.amzn1.x86_64 libgcrypt-1.5.3-12.19.amzn1.x86_64 libgpg-error-1.11-1.12.amzn1.x86_64 -libicu-50.1.2-11.12.amzn1.x86_64 +libicu-50.2-4.0.amzn1.x86_64 libidn2-2.3.0-1.4.amzn1.x86_64 libnghttp2-1.31.1-2.5.amzn1.x86_64 libpsl-0.6.2-1.2.amzn1.x86_64 @@ -53,16 +53,16 @@ make-3.82-21.10.amzn1.x86_64 ncurses-5.7-4.20090207.14.amzn1.x86_64 ncurses-base-5.7-4.20090207.14.amzn1.x86_64 ncurses-libs-5.7-4.20090207.14.amzn1.x86_64 -nspr-4.19.0-1.43.amzn1.x86_64 -nss-3.36.0-5.82.amzn1.x86_64 +nspr-4.21.0-1.43.amzn1.x86_64 +nss-3.44.0-7.84.amzn1.x86_64 nss-pem-1.0.3-4.3.amzn1.x86_64 -nss-softokn-3.36.0-5.42.amzn1.x86_64 -nss-softokn-freebl-3.36.0-5.42.amzn1.x86_64 -nss-sysinit-3.36.0-5.82.amzn1.x86_64 -nss-tools-3.36.0-5.82.amzn1.x86_64 -nss-util-3.36.0-1.54.amzn1.x86_64 +nss-softokn-3.44.0-8.44.amzn1.x86_64 +nss-softokn-freebl-3.44.0-8.44.amzn1.x86_64 +nss-sysinit-3.44.0-7.84.amzn1.x86_64 +nss-tools-3.44.0-7.84.amzn1.x86_64 +nss-util-3.44.0-4.56.amzn1.x86_64 openldap-2.4.40-16.31.amzn1.x86_64 -openssl-1.0.2k-16.150.amzn1.x86_64 +openssl-1.0.2k-16.151.amzn1.x86_64 p11-kit-0.18.5-2.3.amzn1.x86_64 p11-kit-trust-0.18.5-2.3.amzn1.x86_64 pcre-8.21-7.8.amzn1.x86_64 @@ -70,11 +70,11 @@ pinentry-0.7.6-6.11.amzn1.x86_64 pkgconfig-0.27.1-2.7.amzn1.x86_64 popt-1.13-7.7.amzn1.x86_64 pth-2.0.7-9.3.7.amzn1.x86_64 -python27-2.7.16-1.131.amzn1.x86_64 +python27-2.7.18-1.137.amzn1.x86_64 python27-chardet-2.0.1-7.7.amzn1.noarch python27-iniparse-0.3.1-2.1.9.amzn1.noarch python27-kitchen-1.1.1-5.6.amzn1.noarch -python27-libs-2.7.16-1.131.amzn1.x86_64 +python27-libs-2.7.18-1.137.amzn1.x86_64 python27-pycurl-7.19.0-17.12.amzn1.x86_64 python27-pygpgme-0.3-9.12.amzn1.x86_64 python27-pyliblzma-0.5.3-11.6.amzn1.x86_64 @@ -94,7 +94,7 @@ system-release-2018.03-0.0.noarch tar-1.26-31.22.amzn1.x86_64 tzdata-2019c-1.73.amzn1.noarch xz-libs-5.2.2-1.13.amzn1.x86_64 -yum-3.4.3-150.70.amzn1.noarch +yum-3.4.3-150.71.amzn1.noarch yum-metadata-parser-1.1.4-10.20.amzn1.x86_64 yum-plugin-ovl-1.1.31-46.30.amzn1.noarch yum-plugin-priorities-1.1.31-46.30.amzn1.noarch diff --git a/base/packages.txt b/base/packages.txt index e29e8ab5..a4d5ef92 100644 --- a/base/packages.txt +++ b/base/packages.txt @@ -7,7 +7,7 @@ bash-4.2.46-28.37.amzn1.x86_64 binutils-2.25.1-31.base.66.amzn1.x86_64 bzip2-1.0.6-8.12.amzn1.x86_64 bzip2-libs-1.0.6-8.12.amzn1.x86_64 -ca-certificates-2018.2.22-65.1.21.amzn1.noarch +ca-certificates-2018.2.22-65.1.22.amzn1.noarch cairo-1.12.14-6.8.amzn1.x86_64 chkconfig-1.3.49.3-2.14.amzn1.x86_64 compat-gmp4-4.3.2-1.14.amzn1.x86_64 @@ -27,21 +27,21 @@ dejavu-sans-fonts-2.33-6.6.amzn1.noarch dejavu-serif-fonts-2.33-6.6.amzn1.noarch diffutils-3.3-4.15.amzn1.x86_64 elfutils-libelf-0.168-8.19.amzn1.x86_64 -expat-2.1.0-10.21.amzn1.x86_64 -file-5.37-8.48.amzn1.x86_64 -file-libs-5.37-8.48.amzn1.x86_64 +expat-2.1.0-11.22.amzn1.x86_64 +file-5.37-8.49.amzn1.x86_64 +file-libs-5.37-8.49.amzn1.x86_64 filesystem-2.4.30-3.8.amzn1.x86_64 findutils-4.4.2-6.9.amzn1.x86_64 fontconfig-2.8.0-5.8.amzn1.x86_64 fontpackages-filesystem-1.41-1.1.2.amzn1.noarch -freetype-2.3.11-15.14.amzn1.x86_64 +freetype-2.3.11-19.15.amzn1.x86_64 gawk-3.1.7-10.10.amzn1.x86_64 gdbm-1.8.0-36.6.amzn1.x86_64 ghostscript-fonts-5.50-23.2.7.amzn1.noarch giflib-4.1.6-3.1.6.amzn1.x86_64 glib2-2.36.3-5.21.amzn1.x86_64 -glibc-2.17-292.178.amzn1.x86_64 -glibc-common-2.17-292.178.amzn1.x86_64 +glibc-2.17-292.180.amzn1.x86_64 +glibc-common-2.17-292.180.amzn1.x86_64 gmp-6.0.0-11.16.amzn1.x86_64 gnupg2-2.0.28-2.33.amzn1.x86_64 gnutls-2.12.23-21.18.amzn1.x86_64 @@ -60,7 +60,7 @@ jpackage-utils-1.7.5-27.17.amzn1.noarch keyutils-libs-1.5.8-3.12.amzn1.x86_64 kmod-14-10.10.amzn1.x86_64 kmod-libs-14-10.10.amzn1.x86_64 -krb5-libs-1.15.1-34.44.amzn1.x86_64 +krb5-libs-1.15.1-46.48.amzn1.x86_64 lcms2-2.6-2.5.amzn1.x86_64 libICE-1.0.6-1.4.amzn1.x86_64 libSM-1.2.1-2.6.amzn1.x86_64 @@ -94,7 +94,7 @@ libglvnd-0.2.999-14.20170308git8e6e102.3.amzn1.x86_64 libglvnd-glx-0.2.999-14.20170308git8e6e102.3.amzn1.x86_64 libgomp-6.4.1-1.45.amzn1.x86_64 libgpg-error-1.11-1.12.amzn1.x86_64 -libicu-50.1.2-11.12.amzn1.x86_64 +libicu-50.2-4.0.amzn1.x86_64 libidn2-2.3.0-1.4.amzn1.x86_64 libjpeg-turbo-1.2.90-8.16.amzn1.x86_64 libmount-2.23.2-59.29.amzn1.x86_64 @@ -132,16 +132,16 @@ mesa-libglapi-17.1.5-2.41.amzn1.x86_64 ncurses-5.7-4.20090207.14.amzn1.x86_64 ncurses-base-5.7-4.20090207.14.amzn1.x86_64 ncurses-libs-5.7-4.20090207.14.amzn1.x86_64 -nspr-4.19.0-1.43.amzn1.x86_64 -nss-3.36.0-5.82.amzn1.x86_64 +nspr-4.21.0-1.43.amzn1.x86_64 +nss-3.44.0-7.84.amzn1.x86_64 nss-pem-1.0.3-4.3.amzn1.x86_64 -nss-softokn-3.36.0-5.42.amzn1.x86_64 -nss-softokn-freebl-3.36.0-5.42.amzn1.x86_64 -nss-sysinit-3.36.0-5.82.amzn1.x86_64 -nss-tools-3.36.0-5.82.amzn1.x86_64 -nss-util-3.36.0-1.54.amzn1.x86_64 +nss-softokn-3.44.0-8.44.amzn1.x86_64 +nss-softokn-freebl-3.44.0-8.44.amzn1.x86_64 +nss-sysinit-3.44.0-7.84.amzn1.x86_64 +nss-tools-3.44.0-7.84.amzn1.x86_64 +nss-util-3.44.0-4.56.amzn1.x86_64 openldap-2.4.40-16.31.amzn1.x86_64 -openssl-1.0.2k-16.150.amzn1.x86_64 +openssl-1.0.2k-16.151.amzn1.x86_64 p11-kit-0.18.5-2.3.amzn1.x86_64 p11-kit-trust-0.18.5-2.3.amzn1.x86_64 pam-1.1.8-12.33.amzn1.x86_64 @@ -181,17 +181,17 @@ popt-1.13-7.7.amzn1.x86_64 procps-3.2.8-45.16.amzn1.x86_64 psmisc-22.20-8.12.amzn1.x86_64 pth-2.0.7-9.3.7.amzn1.x86_64 -python27-2.7.16-1.130.amzn1.x86_64 +python27-2.7.18-1.137.amzn1.x86_64 python27-iniparse-0.3.1-2.1.9.amzn1.noarch -python27-libs-2.7.16-1.130.amzn1.x86_64 +python27-libs-2.7.18-1.137.amzn1.x86_64 python27-pycurl-7.19.0-17.12.amzn1.x86_64 python27-pygpgme-0.3-9.12.amzn1.x86_64 python27-pyliblzma-0.5.3-11.6.amzn1.x86_64 python27-pyxattr-0.5.0-1.6.amzn1.x86_64 python27-urlgrabber-3.10-8.16.amzn1.noarch -python36-3.6.8-1.15.amzn1.x86_64 -python36-libs-3.6.8-1.15.amzn1.x86_64 -python36-pip-9.0.3-1.26.amzn1.noarch +python36-3.6.10-1.16.amzn1.x86_64 +python36-libs-3.6.10-1.16.amzn1.x86_64 +python36-pip-9.0.3-1.27.amzn1.noarch python36-setuptools-36.2.7-1.33.amzn1.noarch readline-6.2-9.14.amzn1.x86_64 rpm-4.11.3-40.76.amzn1.x86_64 @@ -217,7 +217,8 @@ xorg-x11-font-utils-7.2-11.5.amzn1.x86_64 xorg-x11-fonts-Type1-7.2-9.1.5.amzn1.noarch xz-5.2.2-1.13.amzn1.x86_64 xz-libs-5.2.2-1.13.amzn1.x86_64 -yum-3.4.3-150.70.amzn1.noarch +yum-3.4.3-150.71.amzn1.noarch yum-metadata-parser-1.1.4-10.20.amzn1.x86_64 +yum-plugin-ovl-1.1.31-46.30.amzn1.noarch yum-plugin-priorities-1.1.31-46.30.amzn1.noarch zlib-1.2.8-7.18.amzn1.x86_64 From 178462ae977e424f3b9bb929a5a8eec256f22bcb Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Wed, 24 Jun 2020 11:39:31 -0400 Subject: [PATCH 193/271] Update amzn2 packages --- base/base-2/amazonlinux2.txt | 32 +++++++++++++------------- base/base-2/diff.txt | 44 ++++++++++++++++++------------------ base/base-2/packages.txt | 16 ++++++------- 3 files changed, 46 insertions(+), 46 deletions(-) diff --git a/base/base-2/amazonlinux2.txt b/base/base-2/amazonlinux2.txt index 9519274b..b6f2420b 100644 --- a/base/base-2/amazonlinux2.txt +++ b/base/base-2/amazonlinux2.txt @@ -1,8 +1,8 @@ -amazon-linux-extras-1.6.9-2.amzn2.noarch +amazon-linux-extras-1.6.11-1.amzn2.noarch basesystem-10.0-7.amzn2.0.1.noarch bash-4.2.46-33.amzn2.x86_64 bzip2-libs-1.0.6-13.amzn2.0.2.x86_64 -ca-certificates-2019.2.32-76.amzn2.0.1.noarch +ca-certificates-2019.2.32-76.amzn2.0.2.noarch chkconfig-1.7.4-1.amzn2.0.2.x86_64 coreutils-8.22-24.amzn2.x86_64 cpio-2.11-27.amzn2.x86_64 @@ -13,16 +13,16 @@ elfutils-libelf-0.176-2.amzn2.x86_64 expat-2.1.0-10.amzn2.0.2.x86_64 file-libs-5.11-35.amzn2.0.2.x86_64 filesystem-3.2-25.amzn2.0.4.x86_64 -findutils-4.5.11-5.amzn2.0.2.x86_64 +findutils-4.5.11-6.amzn2.x86_64 gawk-4.0.2-4.amzn2.1.2.x86_64 gdbm-1.13-6.amzn2.0.2.x86_64 -glib2-2.56.1-4.amzn2.x86_64 +glib2-2.56.1-5.amzn2.0.1.x86_64 glibc-2.26-34.amzn2.x86_64 glibc-common-2.26-34.amzn2.x86_64 glibc-langpack-en-2.26-34.amzn2.x86_64 glibc-minimal-langpack-2.26-34.amzn2.x86_64 gmp-6.0.0-15.amzn2.0.2.x86_64 -gnupg2-2.0.22-5.amzn2.0.3.x86_64 +gnupg2-2.0.22-5.amzn2.0.4.x86_64 gpgme-1.3.2-5.amzn2.0.2.x86_64 grep-2.20-3.amzn2.0.2.x86_64 info-5.1-5.amzn2.x86_64 @@ -68,7 +68,7 @@ nss-sysinit-3.44.0-7.amzn2.x86_64 nss-tools-3.44.0-7.amzn2.x86_64 nss-util-3.44.0-4.amzn2.x86_64 openldap-2.4.44-15.amzn2.x86_64 -openssl-libs-1.0.2k-19.amzn2.0.1.x86_64 +openssl-libs-1.0.2k-19.amzn2.0.3.x86_64 p11-kit-0.23.5-3.amzn2.0.2.x86_64 p11-kit-trust-0.23.5-3.amzn2.0.2.x86_64 pcre-8.32-17.amzn2.0.2.x86_64 @@ -77,27 +77,27 @@ popt-1.13-16.amzn2.0.2.x86_64 pth-2.0.7-23.amzn2.0.2.x86_64 pygpgme-0.3-9.amzn2.0.2.x86_64 pyliblzma-0.5.3-11.amzn2.0.2.x86_64 -python-2.7.16-5.amzn2.x86_64 +python-2.7.18-1.amzn2.x86_64 python-iniparse-0.4-9.amzn2.noarch -python-libs-2.7.16-5.amzn2.x86_64 +python-libs-2.7.18-1.amzn2.x86_64 python-pycurl-7.19.0-19.amzn2.0.2.x86_64 python-urlgrabber-3.10-9.amzn2.0.1.noarch -python2-rpm-4.11.3-40.amzn2.0.3.x86_64 +python2-rpm-4.11.3-40.amzn2.0.4.x86_64 pyxattr-0.5.1-5.amzn2.0.2.x86_64 readline-6.2-10.amzn2.0.2.x86_64 -rpm-4.11.3-40.amzn2.0.3.x86_64 -rpm-build-libs-4.11.3-40.amzn2.0.3.x86_64 -rpm-libs-4.11.3-40.amzn2.0.3.x86_64 +rpm-4.11.3-40.amzn2.0.4.x86_64 +rpm-build-libs-4.11.3-40.amzn2.0.4.x86_64 +rpm-libs-4.11.3-40.amzn2.0.4.x86_64 sed-4.2.2-5.amzn2.0.2.x86_64 -setup-2.8.71-10.amzn2.noarch +setup-2.8.71-10.amzn2.0.1.noarch shared-mime-info-1.8-4.amzn2.x86_64 -sqlite-3.7.17-8.amzn2.0.2.x86_64 +sqlite-3.7.17-8.amzn2.1.1.x86_64 system-release-2-11.amzn2.x86_64 tzdata-2019c-1.amzn2.noarch vim-minimal-8.1.1602-1.amzn2.x86_64 xz-libs-5.2.2-1.amzn2.0.2.x86_64 -yum-3.4.3-158.amzn2.0.3.noarch +yum-3.4.3-158.amzn2.0.4.noarch yum-metadata-parser-1.1.4-10.amzn2.0.2.x86_64 yum-plugin-ovl-1.1.31-46.amzn2.0.1.noarch yum-plugin-priorities-1.1.31-46.amzn2.0.1.noarch -zlib-1.2.7-17.amzn2.0.2.x86_64 +zlib-1.2.7-18.amzn2.x86_64 diff --git a/base/base-2/diff.txt b/base/base-2/diff.txt index cb9feacb..02234165 100644 --- a/base/base-2/diff.txt +++ b/base/base-2/diff.txt @@ -1,27 +1,27 @@ -amazon-linux-extras-1.6.9-2.amzn2.noarch +amazon-linux-extras-1.6.11-1.amzn2.noarch bzip2-libs-1.0.6-13.amzn2.0.2.x86_64 cpio-2.11-27.amzn2.x86_64 curl-7.61.1-12.amzn2.0.1.x86_64 cyrus-sasl-lib-2.1.26-23.amzn2.x86_64 -diffutils-3.3-4.amzn2.0.2.x86_64 +diffutils-3.3-5.amzn2.x86_64 elfutils-libelf-0.176-2.amzn2.x86_64 expat-2.1.0-10.amzn2.0.2.x86_64 -file-libs-5.11-33.amzn2.0.2.x86_64 -findutils-4.5.11-5.amzn2.0.2.x86_64 +file-libs-5.11-35.amzn2.0.2.x86_64 +findutils-4.5.11-6.amzn2.x86_64 gdbm-1.13-6.amzn2.0.2.x86_64 -glib2-2.56.1-4.amzn2.x86_64 -glibc-langpack-en-2.26-32.amzn2.0.2.x86_64 -gnupg2-2.0.22-5.amzn2.0.3.x86_64 +glib2-2.56.1-5.amzn2.0.1.x86_64 +glibc-langpack-en-2.26-34.amzn2.x86_64 +gnupg2-2.0.22-5.amzn2.0.4.x86_64 gpgme-1.3.2-5.amzn2.0.2.x86_64 libassuan-2.1.0-3.amzn2.0.2.x86_64 libblkid-2.30.2-2.amzn2.0.4.x86_64 -libcrypt-2.26-32.amzn2.0.2.x86_64 +libcrypt-2.26-34.amzn2.x86_64 libcurl-7.61.1-12.amzn2.0.1.x86_64 libdb-5.3.21-24.amzn2.0.3.x86_64 libdb-utils-5.3.21-24.amzn2.0.3.x86_64 libgcrypt-1.5.3-14.amzn2.0.2.x86_64 libgpg-error-1.12-3.amzn2.0.3.x86_64 -libidn2-2.0.4-1.amzn2.0.2.x86_64 +libidn2-2.3.0-1.amzn2.x86_64 libmetalink-0.1.2-7.amzn2.0.2.x86_64 libmount-2.30.2-2.amzn2.0.4.x86_64 libnghttp2-1.39.2-1.amzn2.x86_64 @@ -30,32 +30,32 @@ libunistring-0.9.3-9.amzn2.0.2.x86_64 libuuid-2.30.2-2.amzn2.0.4.x86_64 libxml2-2.9.1-6.amzn2.3.3.x86_64 lua-5.1.4-15.amzn2.0.2.x86_64 -nss-3.44.0-4.amzn2.0.2.x86_64 +nss-3.44.0-7.amzn2.x86_64 nss-pem-1.0.3-5.amzn2.x86_64 -nss-softokn-3.44.0-5.amzn2.0.2.x86_64 -nss-sysinit-3.44.0-4.amzn2.0.2.x86_64 -nss-tools-3.44.0-4.amzn2.0.2.x86_64 +nss-softokn-3.44.0-8.amzn2.x86_64 +nss-sysinit-3.44.0-7.amzn2.x86_64 +nss-tools-3.44.0-7.amzn2.x86_64 openldap-2.4.44-15.amzn2.x86_64 pinentry-0.8.1-17.amzn2.0.2.x86_64 pth-2.0.7-23.amzn2.0.2.x86_64 pygpgme-0.3-9.amzn2.0.2.x86_64 pyliblzma-0.5.3-11.amzn2.0.2.x86_64 -python-2.7.16-3.amzn2.0.1.x86_64 +python-2.7.18-1.amzn2.x86_64 python-iniparse-0.4-9.amzn2.noarch -python-libs-2.7.16-3.amzn2.0.1.x86_64 +python-libs-2.7.18-1.amzn2.x86_64 python-pycurl-7.19.0-19.amzn2.0.2.x86_64 -python-urlgrabber-3.10-8.amzn2.noarch +python-urlgrabber-3.10-9.amzn2.0.1.noarch +python2-rpm-4.11.3-40.amzn2.0.4.x86_64 pyxattr-0.5.1-5.amzn2.0.2.x86_64 readline-6.2-10.amzn2.0.2.x86_64 -rpm-4.11.3-25.amzn2.0.3.x86_64 -rpm-build-libs-4.11.3-25.amzn2.0.3.x86_64 -rpm-libs-4.11.3-25.amzn2.0.3.x86_64 -rpm-python-4.11.3-25.amzn2.0.3.x86_64 +rpm-4.11.3-40.amzn2.0.4.x86_64 +rpm-build-libs-4.11.3-40.amzn2.0.4.x86_64 +rpm-libs-4.11.3-40.amzn2.0.4.x86_64 shared-mime-info-1.8-4.amzn2.x86_64 -sqlite-3.7.17-8.amzn2.0.2.x86_64 +sqlite-3.7.17-8.amzn2.1.1.x86_64 vim-minimal-8.1.1602-1.amzn2.x86_64 xz-libs-5.2.2-1.amzn2.0.2.x86_64 -yum-3.4.3-158.amzn2.0.2.noarch +yum-3.4.3-158.amzn2.0.4.noarch yum-metadata-parser-1.1.4-10.amzn2.0.2.x86_64 yum-plugin-ovl-1.1.31-46.amzn2.0.1.noarch yum-plugin-priorities-1.1.31-46.amzn2.0.1.noarch diff --git a/base/base-2/packages.txt b/base/base-2/packages.txt index 81a1640c..7c3c164e 100644 --- a/base/base-2/packages.txt +++ b/base/base-2/packages.txt @@ -1,8 +1,8 @@ basesystem-10.0-7.amzn2.0.1.noarch -bash-4.2.46-30.amzn2.x86_64 -ca-certificates-2019.2.32-76.amzn2.0.1.noarch +bash-4.2.46-33.amzn2.x86_64 +ca-certificates-2019.2.32-76.amzn2.0.2.noarch chkconfig-1.7.4-1.amzn2.0.2.x86_64 -coreutils-8.22-21.amzn2.x86_64 +coreutils-8.22-24.amzn2.x86_64 filesystem-3.2-25.amzn2.0.4.x86_64 gawk-4.0.2-4.amzn2.1.2.x86_64 glibc-2.26-34.amzn2.x86_64 @@ -13,14 +13,14 @@ gmp-6.0.0-15.amzn2.0.2.x86_64 grep-2.20-3.amzn2.0.2.x86_64 info-5.1-5.amzn2.x86_64 keyutils-libs-1.5.8-3.amzn2.0.2.x86_64 -krb5-libs-1.15.1-37.amzn2.2.1.x86_64 +krb5-libs-1.15.1-37.amzn2.2.2.x86_64 libacl-2.2.51-14.amzn2.x86_64 libattr-2.4.46-12.amzn2.0.2.x86_64 libcap-2.22-9.amzn2.0.2.x86_64 libcom_err-1.42.9-12.amzn2.0.2.x86_64 libffi-3.0.13-18.amzn2.0.2.x86_64 libgcc-7.3.1-6.amzn2.0.4.x86_64 -libicu-50.1.2-17.amzn2.x86_64 +libicu-50.2-4.amzn2.x86_64 libselinux-2.5-12.amzn2.0.2.x86_64 libsepol-2.5-8.1.amzn2.0.2.x86_64 libstdc++-7.3.1-6.amzn2.0.4.x86_64 @@ -32,13 +32,13 @@ ncurses-libs-6.0-8.20170212.amzn2.1.3.x86_64 nspr-4.21.0-1.amzn2.0.2.x86_64 nss-softokn-freebl-3.44.0-8.amzn2.x86_64 nss-util-3.44.0-4.amzn2.x86_64 -openssl-libs-1.0.2k-19.amzn2.0.1.x86_64 +openssl-libs-1.0.2k-19.amzn2.0.3.x86_64 p11-kit-0.23.5-3.amzn2.0.2.x86_64 p11-kit-trust-0.23.5-3.amzn2.0.2.x86_64 pcre-8.32-17.amzn2.0.2.x86_64 popt-1.13-16.amzn2.0.2.x86_64 sed-4.2.2-5.amzn2.0.2.x86_64 -setup-2.8.71-10.amzn2.noarch +setup-2.8.71-10.amzn2.0.1.noarch system-release-2-11.amzn2.x86_64 tzdata-2019c-1.amzn2.noarch -zlib-1.2.7-17.amzn2.0.2.x86_64 +zlib-1.2.7-18.amzn2.x86_64 From 1a5ef29741961444212b663868e7ba90a7a0d7c6 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Wed, 24 Jun 2020 12:18:25 -0400 Subject: [PATCH 194/271] Update dotnetcore2.1 Bootstrap --- .../run/MockBootstraps/lib/Bootstrap.dll | Bin 147456 -> 147456 bytes .../run/MockBootstraps/lib/Bootstrap.pdb | Bin 44980 -> 44964 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/dotnetcore2.1/run/MockBootstraps/lib/Bootstrap.dll b/dotnetcore2.1/run/MockBootstraps/lib/Bootstrap.dll index 4880d8fd9ec88680c4407c7cbd7228fbbb51f489..1e9e0796febf86a99471027dc5c25741e5b11b97 100644 GIT binary patch delta 114 zcmZo@;B08%oY29tc(3o##-6P`j2G?;h`O(@3!2{U-{hS0tn-JY*Y=zTj3yy0Y7@Nn zPG4fe6d;iH>D;vdZX=h@z0G|)Ua)ML&SJ`xsQ?u{;t3T6s<-X%D}DK{iuFhBlK*+z Jdrg^&xd3}cGyebp delta 114 zcmZo@;B08%oY2AY!~Oin#-6P`j2G?;=mzr67jc>3ye8mUxVhb`t=n@RFq(w0WIes| zdHNC)rT~H4E?u)pyJ6b4=`5y9nF>(R1-wvEkowHTKT6Z4`Do6lJ)66| J*OaN43jn_?G~@sP diff --git a/dotnetcore2.1/run/MockBootstraps/lib/Bootstrap.pdb b/dotnetcore2.1/run/MockBootstraps/lib/Bootstrap.pdb index 3f913c8b3c16410e70ff8393a9e04193f32497a7..83172b95b8b62266fdb0f0bd914158cf75822fad 100644 GIT binary patch delta 8591 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 delta 8605 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 From fe5454bf980d062e0a87c2fd16d7f57d343c3bbd Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Wed, 24 Jun 2020 12:32:05 -0400 Subject: [PATCH 195/271] Update gradle to 6.5.0 in java build images --- base/test-all.sh | 2 +- java11/build/Dockerfile | 4 ++-- java8/build/Dockerfile | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/base/test-all.sh b/base/test-all.sh index 0bded02f..563f2671 100755 --- a/base/test-all.sh +++ b/base/test-all.sh @@ -34,7 +34,7 @@ docker run --rm -v "$PWD":/var/task lambci/lambda:ruby2.5 lambda_function.lambda docker run --rm -v "$PWD":/var/task lambci/lambda:ruby2.7 lambda_function.lambda_handler cd ${EXAMPLES_DIR}/java -docker run --rm -v "$PWD":/app -w /app gradle gradle build +docker run --rm -v "$PWD":/app -w /app lambci/lambda:build-java8 gradle build docker run --rm -v "$PWD/build/docker":/var/task lambci/lambda:java8 org.lambci.lambda.ExampleHandler '{"some": "event"}' docker run --rm -v "$PWD/build/docker":/var/task lambci/lambda:java11 org.lambci.lambda.ExampleHandler '{"some": "event"}' diff --git a/java11/build/Dockerfile b/java11/build/Dockerfile index a4953ff8..8262f998 100644 --- a/java11/build/Dockerfile +++ b/java11/build/Dockerfile @@ -6,12 +6,12 @@ ENV PATH=/var/lang/bin:$PATH \ RUN rm -rf /var/runtime /var/lang /var/rapid && \ curl https://lambci.s3.amazonaws.com/fs/java11.tgz | tar -zx -C / && \ - mkdir /usr/local/gradle && curl -L -o gradle.zip https://downloads.gradle-dn.com/distributions/gradle-6.4.1-bin.zip && \ + mkdir /usr/local/gradle && curl -L -o gradle.zip https://services.gradle.org/distributions/gradle-6.5-bin.zip && \ unzip -d /usr/local/gradle gradle.zip && rm gradle.zip && mkdir /usr/local/maven && \ curl -L http://mirror.cc.columbia.edu/pub/software/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz | \ tar -zx -C /usr/local/maven -ENV PATH="/usr/local/gradle/gradle-6.4.1/bin:/usr/local/maven/apache-maven-3.6.3/bin:${PATH}" +ENV PATH="/usr/local/gradle/gradle-6.5/bin:/usr/local/maven/apache-maven-3.6.3/bin:${PATH}" # Add these as a separate layer as they get updated frequently RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.53.0 awscli boto3 --no-cache-dir diff --git a/java8/build/Dockerfile b/java8/build/Dockerfile index eb5a62c7..03e72f3c 100644 --- a/java8/build/Dockerfile +++ b/java8/build/Dockerfile @@ -7,12 +7,12 @@ WORKDIR / RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/java8.tgz | tar -zx -C / && \ yum install -y java-1.8.0-openjdk-devel && \ - mkdir /usr/local/gradle && curl -L -o gradle.zip https://downloads.gradle-dn.com/distributions/gradle-6.4.1-bin.zip && \ + mkdir /usr/local/gradle && curl -L -o gradle.zip https://services.gradle.org/distributions/gradle-6.5-bin.zip && \ unzip -d /usr/local/gradle gradle.zip && rm gradle.zip && mkdir /usr/local/maven && \ curl -L http://mirror.cc.columbia.edu/pub/software/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz | \ tar -zx -C /usr/local/maven -ENV PATH="/usr/local/gradle/gradle-6.4.1/bin:/usr/local/maven/apache-maven-3.6.3/bin:${PATH}" +ENV PATH="/usr/local/gradle/gradle-6.5/bin:/usr/local/maven/apache-maven-3.6.3/bin:${PATH}" # Add these as a separate layer as they get updated frequently RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.53.0 awscli boto3 --no-cache-dir From 20fca7e5121e4b8e40fe68d6a826220d0389d012 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Fri, 26 Jun 2020 16:51:03 -0400 Subject: [PATCH 196/271] Add CORS headers to Lambda API --- provided/run/init.go | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/provided/run/init.go b/provided/run/init.go index d2f33d37..b3b3aa66 100644 --- a/provided/run/init.go +++ b/provided/run/init.go @@ -342,9 +342,20 @@ func waitForContext(context *mockLambdaContext) { } func addAPIRoutes(r *chi.Mux) *chi.Mux { + r.Options("/*", func(w http.ResponseWriter, r *http.Request) { + w.Header().Set("x-amzn-requestid", fakeGUID()) + w.Header().Set("access-control-allow-origin", "*") + w.Header().Set("access-control-expose-headers", "x-amzn-RequestId,x-amzn-ErrorType,x-amzn-ErrorMessage,Date,x-amz-log-result,x-amz-function-error") + w.Header().Set("access-control-max-age", "172800") + w.WriteHeader(200) + }) + r.Post("/2015-03-31/functions/{function}/invocations", func(w http.ResponseWriter, r *http.Request) { context := newContext() + w.Header().Set("access-control-allow-origin", "*") + w.Header().Set("access-control-expose-headers", "x-amzn-RequestId,x-amzn-ErrorType,x-amzn-ErrorMessage,Date,x-amz-log-result,x-amz-function-error") + if r.Header.Get("X-Amz-Invocation-Type") != "" { context.InvocationType = r.Header.Get("X-Amz-Invocation-Type") } From 858a1f742e0d535a0ad2fb71a73260c148860a14 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Fri, 26 Jun 2020 17:42:29 -0400 Subject: [PATCH 197/271] Roll back dotnetcore2.1 Bootstrap --- .../run/MockBootstraps/lib/Bootstrap.dll | Bin 147456 -> 147456 bytes .../run/MockBootstraps/lib/Bootstrap.pdb | Bin 44964 -> 44980 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/dotnetcore2.1/run/MockBootstraps/lib/Bootstrap.dll b/dotnetcore2.1/run/MockBootstraps/lib/Bootstrap.dll index 1e9e0796febf86a99471027dc5c25741e5b11b97..4880d8fd9ec88680c4407c7cbd7228fbbb51f489 100644 GIT binary patch delta 114 zcmZo@;B08%oY2AY!~Oin#-6P`j2G?;=mzr67jc>3ye8mUxVhb`t=n@RFq(w0WIes| zdHNC)rT~H4E?u)pyJ6b4=`5y9nF>(R1-wvEkowHTKT6Z4`Do6lJ)66| J*OaN43jn_?G~@sP delta 114 zcmZo@;B08%oY29tc(3o##-6P`j2G?;h`O(@3!2{U-{hS0tn-JY*Y=zTj3yy0Y7@Nn zPG4fe6d;iH>D;vdZX=h@z0G|)Ua)ML&SJ`xsQ?u{;t3T6s<-X%D}DK{iuFhBlK*+z Jdrg^&xd3}cGyebp diff --git a/dotnetcore2.1/run/MockBootstraps/lib/Bootstrap.pdb b/dotnetcore2.1/run/MockBootstraps/lib/Bootstrap.pdb index 83172b95b8b62266fdb0f0bd914158cf75822fad..3f913c8b3c16410e70ff8393a9e04193f32497a7 100644 GIT binary patch delta 8605 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 delta 8591 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 From a90b26718834d51ac407b7cb7d2493f64641f0a5 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Fri, 26 Jun 2020 19:29:28 -0400 Subject: [PATCH 198/271] Fix stay-open test --- base/test-all.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/base/test-all.sh b/base/test-all.sh index 563f2671..aa0e1a8c 100755 --- a/base/test-all.sh +++ b/base/test-all.sh @@ -58,5 +58,6 @@ cd ${EXAMPLES_DIR}/provided docker run --rm -v "$PWD":/var/task lambci/lambda:provided handler '{"some": "event"}' # To invoke and keep open: +# cd ${EXAMPLES_DIR}/ruby # docker run --rm -v $PWD:/var/task -e DOCKER_LAMBDA_STAY_OPEN=1 -p 9001:9001 \ # lambci/lambda:ruby2.5 lambda_function.lambda_handler From 4190ed1cfd599c778f5b3388b82f0a996e1860c3 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Sat, 27 Jun 2020 13:02:16 -0400 Subject: [PATCH 199/271] Revert "yum-plugin-ovl is now included in Amazon Linux 1 Lambdas" This reverts commit 38f12c4df00ba1ed48d12c0318494a975a5f04d0. --- base/build/Dockerfile | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/base/build/Dockerfile b/base/build/Dockerfile index e2a6fa1d..99fa4bc2 100644 --- a/base/build/Dockerfile +++ b/base/build/Dockerfile @@ -4,7 +4,16 @@ ENV PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/bin # A couple of packages are either missing critical-ish files, or didn't make it into the tar RUN chmod 1777 /tmp && \ + /usr/bin/python3 -c "from configparser import SafeConfigParser; \ +yum_conf = SafeConfigParser(); \ +yum_conf.read('/etc/yum.conf'); \ +yum_conf.has_section('main') or yum_conf.add_section('main'); \ +yum_conf.set('main', 'plugins', '1'); \ +f = open('/etc/yum.conf', 'w'); \ +yum_conf.write(f); \ +f.close();" && \ rpm --rebuilddb && \ + yum install -y yum-plugin-ovl && \ yum reinstall -y setup pam shadow-utils audit-libs openssl glibc-common glibc && \ yum groupinstall -y development && \ yum install -y clang cmake docker python27-devel python36-devel \ From fd4b833af83b0e3b8693ae10c13f818dfaa54717 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Tue, 30 Jun 2020 08:13:38 -0400 Subject: [PATCH 200/271] Update gradle to 6.5.1 in java build images --- java11/build/Dockerfile | 4 ++-- java8/build/Dockerfile | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/java11/build/Dockerfile b/java11/build/Dockerfile index 8262f998..9418442b 100644 --- a/java11/build/Dockerfile +++ b/java11/build/Dockerfile @@ -6,12 +6,12 @@ ENV PATH=/var/lang/bin:$PATH \ RUN rm -rf /var/runtime /var/lang /var/rapid && \ curl https://lambci.s3.amazonaws.com/fs/java11.tgz | tar -zx -C / && \ - mkdir /usr/local/gradle && curl -L -o gradle.zip https://services.gradle.org/distributions/gradle-6.5-bin.zip && \ + mkdir /usr/local/gradle && curl -L -o gradle.zip https://services.gradle.org/distributions/gradle-6.5.1-bin.zip && \ unzip -d /usr/local/gradle gradle.zip && rm gradle.zip && mkdir /usr/local/maven && \ curl -L http://mirror.cc.columbia.edu/pub/software/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz | \ tar -zx -C /usr/local/maven -ENV PATH="/usr/local/gradle/gradle-6.5/bin:/usr/local/maven/apache-maven-3.6.3/bin:${PATH}" +ENV PATH="/usr/local/gradle/gradle-6.5.1/bin:/usr/local/maven/apache-maven-3.6.3/bin:${PATH}" # Add these as a separate layer as they get updated frequently RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.53.0 awscli boto3 --no-cache-dir diff --git a/java8/build/Dockerfile b/java8/build/Dockerfile index 03e72f3c..708c3f54 100644 --- a/java8/build/Dockerfile +++ b/java8/build/Dockerfile @@ -7,12 +7,12 @@ WORKDIR / RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/java8.tgz | tar -zx -C / && \ yum install -y java-1.8.0-openjdk-devel && \ - mkdir /usr/local/gradle && curl -L -o gradle.zip https://services.gradle.org/distributions/gradle-6.5-bin.zip && \ + mkdir /usr/local/gradle && curl -L -o gradle.zip https://services.gradle.org/distributions/gradle-6.5.1-bin.zip && \ unzip -d /usr/local/gradle gradle.zip && rm gradle.zip && mkdir /usr/local/maven && \ curl -L http://mirror.cc.columbia.edu/pub/software/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz | \ tar -zx -C /usr/local/maven -ENV PATH="/usr/local/gradle/gradle-6.5/bin:/usr/local/maven/apache-maven-3.6.3/bin:${PATH}" +ENV PATH="/usr/local/gradle/gradle-6.5.1/bin:/usr/local/maven/apache-maven-3.6.3/bin:${PATH}" # Add these as a separate layer as they get updated frequently RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.53.0 awscli boto3 --no-cache-dir From 46ff80e2fe3bbb3fab4fa18ac2fb05d7167f064e Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Tue, 30 Jun 2020 14:24:06 -0400 Subject: [PATCH 201/271] Add headers and methods CORS headers to OPTIONS call --- provided/run/init.go | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/provided/run/init.go b/provided/run/init.go index b3b3aa66..584f2489 100644 --- a/provided/run/init.go +++ b/provided/run/init.go @@ -343,18 +343,30 @@ func waitForContext(context *mockLambdaContext) { func addAPIRoutes(r *chi.Mux) *chi.Mux { r.Options("/*", func(w http.ResponseWriter, r *http.Request) { + if r.Header.Get("Origin") == "" { + w.WriteHeader(403) + return + } w.Header().Set("x-amzn-requestid", fakeGUID()) w.Header().Set("access-control-allow-origin", "*") w.Header().Set("access-control-expose-headers", "x-amzn-RequestId,x-amzn-ErrorType,x-amzn-ErrorMessage,Date,x-amz-log-result,x-amz-function-error") w.Header().Set("access-control-max-age", "172800") + if r.Header.Get("Access-Control-Request-Headers") != "" { + w.Header().Set("access-control-allow-headers", r.Header.Get("Access-Control-Request-Headers")) + } + if r.Header.Get("Access-Control-Request-Method") != "" { + w.Header().Set("access-control-allow-methods", r.Header.Get("Access-Control-Request-Method")) + } w.WriteHeader(200) }) r.Post("/2015-03-31/functions/{function}/invocations", func(w http.ResponseWriter, r *http.Request) { context := newContext() - w.Header().Set("access-control-allow-origin", "*") - w.Header().Set("access-control-expose-headers", "x-amzn-RequestId,x-amzn-ErrorType,x-amzn-ErrorMessage,Date,x-amz-log-result,x-amz-function-error") + if r.Header.Get("Origin") != "" { + w.Header().Set("access-control-allow-origin", "*") + w.Header().Set("access-control-expose-headers", "x-amzn-RequestId,x-amzn-ErrorType,x-amzn-ErrorMessage,Date,x-amz-log-result,x-amz-function-error") + } if r.Header.Get("X-Amz-Invocation-Type") != "" { context.InvocationType = r.Header.Get("X-Amz-Invocation-Type") From 187542add179d199825090c10d6bbb387d76fea1 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Wed, 1 Jul 2020 14:25:29 -0400 Subject: [PATCH 202/271] Nicer error output for java8 --- .../java/lambdainternal/LambdaRuntime.java | 25 ++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/java8/run/lambda-runtime-mock/src/main/java/lambdainternal/LambdaRuntime.java b/java8/run/lambda-runtime-mock/src/main/java/lambdainternal/LambdaRuntime.java index d2b9df1a..4737a67d 100644 --- a/java8/run/lambda-runtime-mock/src/main/java/lambdainternal/LambdaRuntime.java +++ b/java8/run/lambda-runtime-mock/src/main/java/lambdainternal/LambdaRuntime.java @@ -11,6 +11,7 @@ import java.net.URL; import java.nio.charset.StandardCharsets; import java.text.SimpleDateFormat; +import java.util.ArrayList; import java.util.Arrays; import java.util.Base64; import java.util.Date; @@ -20,6 +21,7 @@ import java.util.UUID; import com.google.gson.Gson; +import com.google.gson.JsonObject; import sun.misc.Unsafe; import sun.misc.Signal; @@ -42,6 +44,7 @@ public class LambdaRuntime { private static long deadlineMs; private static boolean invoked = false; private static boolean errored = false; + private static String errorMsg = ""; private static boolean initEndSent = false; private static long initEnd; private static long receivedInvokeAt; @@ -216,6 +219,13 @@ public static void reportDone(final String invokeid, final byte[] result, final byte[] resultCopy = result == null ? new byte[0] : new String(result, 0, resultLength).getBytes(StandardCharsets.UTF_8); + + if (errored && resultCopy.length == 0) { + JsonObject errObject = new JsonObject(); + errObject.addProperty("errorMessage", !isNullOrEmpty(errorMsg) ? errorMsg : "Unknown error"); + resultCopy = errObject.toString().getBytes(StandardCharsets.UTF_8); + } + try (OutputStream os = conn.getOutputStream()) { os.write(resultCopy); } @@ -231,7 +241,20 @@ public static void reportDone(final String invokeid, final byte[] result, final public static void reportFault(final String invokeid, final String msg, final String exceptionClass, final String stack) { errored = true; - systemErr(stack); + ArrayList errorPieces = new ArrayList(); + if (exceptionClass != null) { + systemErr(exceptionClass); + errorPieces.add(exceptionClass); + } + if (msg != null) { + systemErr(msg); + errorPieces.add(msg); + } + if (stack != null) { + systemErr(stack); + errorPieces.add(stack); + } + errorMsg = String.join("\n", errorPieces); } public static int getRemainingTime() { From ed7e7e9d7b7b7dc7563f215db8aadb079e04aa9d Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Mon, 20 Jul 2020 17:04:07 -0400 Subject: [PATCH 203/271] Use pipx for all global python binaries (#297) * Use pipx for all global python binaries - Add /root/.local/bin to PATH - Add pipx to base build images - Update aws-lambda-builders to 1.0.0 - Update dotnetcore3.1 build SDK to 3.1.302 * Also publish tag with date --- base/build-2/Dockerfile | 3 ++- base/build/Dockerfile | 7 ++++--- base/publish-all.sh | 6 ++++++ dotnetcore2.0/build/Dockerfile | 8 +++++++- dotnetcore2.1/build/Dockerfile | 8 +++++++- dotnetcore3.1/build/Dockerfile | 6 ++++-- go1.x/build/Dockerfile | 6 +++++- java11/build/Dockerfile | 4 +++- java8/build/Dockerfile | 6 +++++- nodejs10.x/build/Dockerfile | 4 +++- nodejs12.x/build/Dockerfile | 4 +++- nodejs4.3/build/Dockerfile | 6 +++++- nodejs6.10/build/Dockerfile | 6 +++++- nodejs8.10/build/Dockerfile | 6 +++++- provided/build/Dockerfile | 6 +++++- python3.6/build/Dockerfile | 11 ++++++++--- python3.7/build/Dockerfile | 11 ++++++++--- python3.8/build/Dockerfile | 11 ++++++++--- ruby2.5/build/Dockerfile | 10 +++++++--- ruby2.7/build/Dockerfile | 8 +++++--- 20 files changed, 105 insertions(+), 32 deletions(-) diff --git a/base/build-2/Dockerfile b/base/build-2/Dockerfile index a0d07fbd..1c807711 100644 --- a/base/build-2/Dockerfile +++ b/base/build-2/Dockerfile @@ -6,7 +6,7 @@ RUN yum list yum && \ FROM lambci/lambda-base-2 -ENV PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/bin +ENV PATH=/root/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/bin COPY --from=0 /installroot/etc /etc/ COPY --from=0 /installroot/usr /usr/ @@ -17,5 +17,6 @@ RUN yum reinstall -y filesystem setup glibc-common glibc; \ yum install -y which clang cmake python-devel python3-devel amazon-linux-extras && \ amazon-linux-extras install -y docker && \ pip3 install -U pip setuptools wheel --no-cache-dir && \ + pip3 install --user pipx --no-cache-dir && \ yum clean all && \ rm -rf /var/cache/yum diff --git a/base/build/Dockerfile b/base/build/Dockerfile index 99fa4bc2..6e22c0df 100644 --- a/base/build/Dockerfile +++ b/base/build/Dockerfile @@ -1,6 +1,6 @@ FROM lambci/lambda-base -ENV PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/bin +ENV PATH=/root/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/bin # A couple of packages are either missing critical-ish files, or didn't make it into the tar RUN chmod 1777 /tmp && \ @@ -22,7 +22,8 @@ f.close();" && \ alternatives --set gcc /usr/bin/gcc48 && \ alternatives --set g++ /usr/bin/g++48 && \ alternatives --set cpp /usr/bin/cpp48 && \ - curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python3 && \ - pip install -U setuptools wheel --no-cache-dir && \ + python3 -m pip install -U pip setuptools wheel --no-cache-dir && \ + pip install --user pipx --no-cache-dir && \ + pipx run awscli==1.* 2>/dev/null || true && \ yum clean all && \ rm -rf /var/cache/yum diff --git a/base/publish-all.sh b/base/publish-all.sh index b5f5027c..53bfce6b 100755 --- a/base/publish-all.sh +++ b/base/publish-all.sh @@ -9,12 +9,16 @@ echo export DOCKER_CONTENT_TRUST=1 export DOCKER_CONTENT_TRUST_REPOSITORY_PASSPHRASE +export PUBLISH_DATE=$(date "+%Y%m%d") + docker push lambci/lambda-base docker push lambci/lambda-base-2 for RUNTIME in $RUNTIMES; do echo $RUNTIME + docker tag lambci/lambda:${RUNTIME} lambci/lambda:${PUBLISH_DATE}-${RUNTIME} docker push lambci/lambda:${RUNTIME} + docker push lambci/lambda:${PUBLISH_DATE}-${RUNTIME} done docker push lambci/lambda-base:build @@ -22,5 +26,7 @@ docker push lambci/lambda-base-2:build for RUNTIME in $RUNTIMES; do echo build-${RUNTIME} + docker tag lambci/lambda:build-${RUNTIME} lambci/lambda:${PUBLISH_DATE}-build-${RUNTIME} docker push lambci/lambda:build-${RUNTIME} + docker push lambci/lambda:${PUBLISH_DATE}-build-${RUNTIME} done diff --git a/dotnetcore2.0/build/Dockerfile b/dotnetcore2.0/build/Dockerfile index 4e4b138d..9defe440 100644 --- a/dotnetcore2.0/build/Dockerfile +++ b/dotnetcore2.0/build/Dockerfile @@ -20,6 +20,12 @@ RUN rm -rf /var/runtime /var/lang && \ rm -rf /tmp/warmup /tmp/NuGetScratch # Add these as a separate layer as they get updated frequently -RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.53.0 awscli boto3 virtualenv pipenv --no-cache-dir +# The pipx workaround is due to https://github.com/pipxproject/pipx/issues/218 +RUN source ~/.local/pipx/shared/bin/activate && \ + pipx install virtualenv && \ + pipx install pipenv && \ + pipx install awscli==1.* && \ + pipx install aws-lambda-builders==1.0.0 && \ + pipx install aws-sam-cli==0.53.0 CMD ["dotnet", "build"] diff --git a/dotnetcore2.1/build/Dockerfile b/dotnetcore2.1/build/Dockerfile index be936a46..15f91876 100644 --- a/dotnetcore2.1/build/Dockerfile +++ b/dotnetcore2.1/build/Dockerfile @@ -21,7 +21,13 @@ RUN rm -rf /var/runtime /var/lang && \ rm -rf /tmp/warmup /tmp/NuGetScratch /tmp/.dotnet # Add these as a separate layer as they get updated frequently -RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.53.0 awscli boto3 virtualenv pipenv --no-cache-dir && \ +# The pipx workaround is due to https://github.com/pipxproject/pipx/issues/218 +RUN source ~/.local/pipx/shared/bin/activate && \ + pipx install virtualenv && \ + pipx install pipenv && \ + pipx install awscli==1.* && \ + pipx install aws-lambda-builders==1.0.0 && \ + pipx install aws-sam-cli==0.53.0 && \ dotnet tool install --global Amazon.Lambda.Tools --version 3.3.1 CMD ["dotnet", "build"] diff --git a/dotnetcore3.1/build/Dockerfile b/dotnetcore3.1/build/Dockerfile index e2cfdcf9..95c1bf17 100644 --- a/dotnetcore3.1/build/Dockerfile +++ b/dotnetcore3.1/build/Dockerfile @@ -6,7 +6,7 @@ ENV DOTNET_ROOT=/var/lang/bin ENV PATH=/root/.dotnet/tools:$DOTNET_ROOT:$PATH \ LD_LIBRARY_PATH=/var/lang/lib:$LD_LIBRARY_PATH \ AWS_EXECUTION_ENV=AWS_Lambda_dotnetcore3.1 \ - DOTNET_SDK_VERSION=3.1.301 \ + DOTNET_SDK_VERSION=3.1.302 \ DOTNET_CLI_TELEMETRY_OPTOUT=1 \ NUGET_XMLDOC_MODE=skip @@ -20,7 +20,9 @@ RUN rm -rf /var/runtime /var/lang && \ rm -rf /tmp/warmup /tmp/NuGetScratch /tmp/.dotnet # Add these as a separate layer as they get updated frequently -RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.53.0 awscli boto3 --no-cache-dir && \ +RUN pipx install awscli==1.* && \ + pipx install aws-lambda-builders==1.0.0 && \ + pipx install aws-sam-cli==0.53.0 && \ dotnet tool install --global Amazon.Lambda.Tools --version 4.0.0 CMD ["dotnet", "build"] diff --git a/go1.x/build/Dockerfile b/go1.x/build/Dockerfile index 258b3216..a0f6e31b 100644 --- a/go1.x/build/Dockerfile +++ b/go1.x/build/Dockerfile @@ -16,6 +16,10 @@ RUN rm -rf /var/runtime /var/lang && \ go get golang.org/x/vgo # Add these as a separate layer as they get updated frequently -RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.53.0 awscli boto3 --no-cache-dir +# The pipx workaround is due to https://github.com/pipxproject/pipx/issues/218 +RUN source ~/.local/pipx/shared/bin/activate && \ + pipx install awscli==1.* && \ + pipx install aws-lambda-builders==1.0.0 && \ + pipx install aws-sam-cli==0.53.0 CMD ["dep", "ensure"] diff --git a/java11/build/Dockerfile b/java11/build/Dockerfile index 9418442b..7cb2d76e 100644 --- a/java11/build/Dockerfile +++ b/java11/build/Dockerfile @@ -14,4 +14,6 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ ENV PATH="/usr/local/gradle/gradle-6.5.1/bin:/usr/local/maven/apache-maven-3.6.3/bin:${PATH}" # Add these as a separate layer as they get updated frequently -RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.53.0 awscli boto3 --no-cache-dir +RUN pipx install awscli==1.* && \ + pipx install aws-lambda-builders==1.0.0 && \ + pipx install aws-sam-cli==0.53.0 diff --git a/java8/build/Dockerfile b/java8/build/Dockerfile index 708c3f54..8b65a22d 100644 --- a/java8/build/Dockerfile +++ b/java8/build/Dockerfile @@ -15,4 +15,8 @@ RUN rm -rf /var/runtime /var/lang && \ ENV PATH="/usr/local/gradle/gradle-6.5.1/bin:/usr/local/maven/apache-maven-3.6.3/bin:${PATH}" # Add these as a separate layer as they get updated frequently -RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.53.0 awscli boto3 --no-cache-dir +# The pipx workaround is due to https://github.com/pipxproject/pipx/issues/218 +RUN source ~/.local/pipx/shared/bin/activate && \ + pipx install awscli==1.* && \ + pipx install aws-lambda-builders==1.0.0 && \ + pipx install aws-sam-cli==0.53.0 diff --git a/nodejs10.x/build/Dockerfile b/nodejs10.x/build/Dockerfile index 4f41af70..1ec80353 100644 --- a/nodejs10.x/build/Dockerfile +++ b/nodejs10.x/build/Dockerfile @@ -9,4 +9,6 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ curl https://lambci.s3.amazonaws.com/fs/nodejs10.x.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.53.0 awscli boto3 --no-cache-dir +RUN pipx install awscli==1.* && \ + pipx install aws-lambda-builders==1.0.0 && \ + pipx install aws-sam-cli==0.53.0 diff --git a/nodejs12.x/build/Dockerfile b/nodejs12.x/build/Dockerfile index 51dfeb4e..07df5cd9 100644 --- a/nodejs12.x/build/Dockerfile +++ b/nodejs12.x/build/Dockerfile @@ -9,4 +9,6 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ curl https://lambci.s3.amazonaws.com/fs/nodejs12.x.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.53.0 awscli boto3 --no-cache-dir +RUN pipx install awscli==1.* && \ + pipx install aws-lambda-builders==1.0.0 && \ + pipx install aws-sam-cli==0.53.0 diff --git a/nodejs4.3/build/Dockerfile b/nodejs4.3/build/Dockerfile index c6420f90..46fa9698 100644 --- a/nodejs4.3/build/Dockerfile +++ b/nodejs4.3/build/Dockerfile @@ -10,6 +10,10 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs4.3.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.53.0 awscli boto3 --no-cache-dir +# The pipx workaround is due to https://github.com/pipxproject/pipx/issues/218 +RUN source ~/.local/pipx/shared/bin/activate && \ + pipx install awscli==1.* && \ + pipx install aws-lambda-builders==1.0.0 && \ + pipx install aws-sam-cli==0.53.0 CMD ["npm", "rebuild"] diff --git a/nodejs6.10/build/Dockerfile b/nodejs6.10/build/Dockerfile index c9eb1b24..d5cf1744 100644 --- a/nodejs6.10/build/Dockerfile +++ b/nodejs6.10/build/Dockerfile @@ -10,6 +10,10 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs6.10.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.53.0 awscli boto3 --no-cache-dir +# The pipx workaround is due to https://github.com/pipxproject/pipx/issues/218 +RUN source ~/.local/pipx/shared/bin/activate && \ + pipx install awscli==1.* && \ + pipx install aws-lambda-builders==1.0.0 && \ + pipx install aws-sam-cli==0.53.0 CMD ["npm", "rebuild"] diff --git a/nodejs8.10/build/Dockerfile b/nodejs8.10/build/Dockerfile index b6b4a8bc..5be7cd38 100644 --- a/nodejs8.10/build/Dockerfile +++ b/nodejs8.10/build/Dockerfile @@ -10,6 +10,10 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs8.10.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.53.0 awscli boto3 --no-cache-dir +# The pipx workaround is due to https://github.com/pipxproject/pipx/issues/218 +RUN source ~/.local/pipx/shared/bin/activate && \ + pipx install awscli==1.* && \ + pipx install aws-lambda-builders==1.0.0 && \ + pipx install aws-sam-cli==0.53.0 CMD ["npm", "rebuild"] diff --git a/provided/build/Dockerfile b/provided/build/Dockerfile index ec3bf89d..97cca041 100644 --- a/provided/build/Dockerfile +++ b/provided/build/Dockerfile @@ -1,4 +1,8 @@ FROM lambci/lambda-base:build # Add these as a separate layer as they get updated frequently -RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.53.0 awscli boto3 --no-cache-dir +# The pipx workaround is due to https://github.com/pipxproject/pipx/issues/218 +RUN source ~/.local/pipx/shared/bin/activate && \ + pipx install awscli==1.* && \ + pipx install aws-lambda-builders==1.0.0 && \ + pipx install aws-sam-cli==0.53.0 diff --git a/python3.6/build/Dockerfile b/python3.6/build/Dockerfile index d458b5ee..f6f94d72 100644 --- a/python3.6/build/Dockerfile +++ b/python3.6/build/Dockerfile @@ -18,8 +18,13 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN pip install -U pip setuptools wheel --no-cache-dir && \ - pip install -U virtualenv pipenv --no-cache-dir && \ - curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.9/get-poetry.py | POETRY_VERSION=1.0.9 python3 && \ - pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.53.0 awscli boto3 --no-cache-dir + rm -rf /root/.local && \ + pip install --user pipx --no-cache-dir && \ + pipx install virtualenv && \ + pipx install pipenv && \ + pipx install poetry==1.0.9 && \ + pipx install awscli==1.* && \ + pipx install aws-lambda-builders==1.0.0 && \ + pipx install aws-sam-cli==0.53.0 ENV PATH=/root/.poetry/bin:$PATH diff --git a/python3.7/build/Dockerfile b/python3.7/build/Dockerfile index dcada8e1..aa5b0b7f 100644 --- a/python3.7/build/Dockerfile +++ b/python3.7/build/Dockerfile @@ -10,8 +10,13 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN pip install -U pip setuptools wheel --no-cache-dir && \ - pip install -U virtualenv pipenv --no-cache-dir && \ - curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.9/get-poetry.py | POETRY_VERSION=1.0.9 python3 && \ - pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.53.0 awscli boto3 --no-cache-dir + rm -rf /root/.local && \ + pip install --user pipx --no-cache-dir && \ + pipx install virtualenv && \ + pipx install pipenv && \ + pipx install poetry==1.0.9 && \ + pipx install awscli==1.* && \ + pipx install aws-lambda-builders==1.0.0 && \ + pipx install aws-sam-cli==0.53.0 ENV PATH=/root/.poetry/bin:$PATH diff --git a/python3.8/build/Dockerfile b/python3.8/build/Dockerfile index dcf83d6b..5b47e407 100644 --- a/python3.8/build/Dockerfile +++ b/python3.8/build/Dockerfile @@ -10,8 +10,13 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN pip install -U pip setuptools wheel --no-cache-dir && \ - pip install -U virtualenv pipenv --no-cache-dir && \ - curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.9/get-poetry.py | POETRY_VERSION=1.0.9 python3 && \ - pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.53.0 awscli boto3 --no-cache-dir + rm -rf /root/.local && \ + pip install --user pipx --no-cache-dir && \ + pipx install virtualenv && \ + pipx install pipenv && \ + pipx install poetry==1.0.9 && \ + pipx install awscli==1.* && \ + pipx install aws-lambda-builders==1.0.0 && \ + pipx install aws-sam-cli==0.53.0 ENV PATH=/root/.poetry/bin:$PATH diff --git a/ruby2.5/build/Dockerfile b/ruby2.5/build/Dockerfile index f6d5cbd0..bc06ecc0 100644 --- a/ruby2.5/build/Dockerfile +++ b/ruby2.5/build/Dockerfile @@ -12,6 +12,10 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ curl https://lambci.s3.amazonaws.com/fs/ruby2.5.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN gem update --system --no-document && \ - gem install --no-document bundler -v '~> 2.1' && \ - pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.53.0 awscli boto3 --no-cache-dir +# The pipx workaround is due to https://github.com/pipxproject/pipx/issues/218 +RUN source ~/.local/pipx/shared/bin/activate && \ + pipx install awscli==1.* && \ + pipx install aws-lambda-builders==1.0.0 && \ + pipx install aws-sam-cli==0.53.0 && \ + gem update --system --no-document && \ + gem install --no-document bundler -v '~> 2.1' diff --git a/ruby2.7/build/Dockerfile b/ruby2.7/build/Dockerfile index 3728daf2..c31ecf1a 100644 --- a/ruby2.7/build/Dockerfile +++ b/ruby2.7/build/Dockerfile @@ -12,6 +12,8 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ curl https://lambci.s3.amazonaws.com/fs/ruby2.7.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN gem update --system --no-document && \ - gem install --no-document bundler -v '~> 2.1' && \ - pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.53.0 awscli boto3 --no-cache-dir +RUN pipx install awscli==1.* && \ + pipx install aws-lambda-builders==1.0.0 && \ + pipx install aws-sam-cli==0.53.0 && \ + gem update --system --no-document && \ + gem install --no-document bundler -v '~> 2.1' From 5133701db94bf2ee28e4134bb742df51a5819c4f Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Tue, 21 Jul 2020 09:22:49 -0400 Subject: [PATCH 204/271] Use /usr/local for pipx Fixes #298 --- base/build-2/Dockerfile | 6 ++++-- base/build/Dockerfile | 6 ++++-- dotnetcore2.0/build/Dockerfile | 2 +- dotnetcore2.1/build/Dockerfile | 2 +- go1.x/build/Dockerfile | 2 +- java8/build/Dockerfile | 2 +- nodejs4.3/build/Dockerfile | 2 +- nodejs6.10/build/Dockerfile | 2 +- nodejs8.10/build/Dockerfile | 2 +- provided/build/Dockerfile | 2 +- python3.6/build/Dockerfile | 9 ++++----- python3.7/build/Dockerfile | 9 ++++----- python3.8/build/Dockerfile | 9 ++++----- ruby2.5/build/Dockerfile | 2 +- 14 files changed, 29 insertions(+), 28 deletions(-) diff --git a/base/build-2/Dockerfile b/base/build-2/Dockerfile index 1c807711..e41381b5 100644 --- a/base/build-2/Dockerfile +++ b/base/build-2/Dockerfile @@ -6,7 +6,9 @@ RUN yum list yum && \ FROM lambci/lambda-base-2 -ENV PATH=/root/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/bin +ENV PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/bin \ + PIPX_BIN_DIR=/usr/local/bin \ + PIPX_HOME=/usr/local/pipx COPY --from=0 /installroot/etc /etc/ COPY --from=0 /installroot/usr /usr/ @@ -17,6 +19,6 @@ RUN yum reinstall -y filesystem setup glibc-common glibc; \ yum install -y which clang cmake python-devel python3-devel amazon-linux-extras && \ amazon-linux-extras install -y docker && \ pip3 install -U pip setuptools wheel --no-cache-dir && \ - pip3 install --user pipx --no-cache-dir && \ + pip3 install pipx --no-cache-dir && \ yum clean all && \ rm -rf /var/cache/yum diff --git a/base/build/Dockerfile b/base/build/Dockerfile index 6e22c0df..2d8fbc8b 100644 --- a/base/build/Dockerfile +++ b/base/build/Dockerfile @@ -1,6 +1,8 @@ FROM lambci/lambda-base -ENV PATH=/root/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/bin +ENV PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/bin \ + PIPX_BIN_DIR=/usr/local/bin \ + PIPX_HOME=/usr/local/pipx # A couple of packages are either missing critical-ish files, or didn't make it into the tar RUN chmod 1777 /tmp && \ @@ -23,7 +25,7 @@ f.close();" && \ alternatives --set g++ /usr/bin/g++48 && \ alternatives --set cpp /usr/bin/cpp48 && \ python3 -m pip install -U pip setuptools wheel --no-cache-dir && \ - pip install --user pipx --no-cache-dir && \ + pip install pipx --no-cache-dir && \ pipx run awscli==1.* 2>/dev/null || true && \ yum clean all && \ rm -rf /var/cache/yum diff --git a/dotnetcore2.0/build/Dockerfile b/dotnetcore2.0/build/Dockerfile index 9defe440..c47040a1 100644 --- a/dotnetcore2.0/build/Dockerfile +++ b/dotnetcore2.0/build/Dockerfile @@ -21,7 +21,7 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently # The pipx workaround is due to https://github.com/pipxproject/pipx/issues/218 -RUN source ~/.local/pipx/shared/bin/activate && \ +RUN source /usr/local/pipx/shared/bin/activate && \ pipx install virtualenv && \ pipx install pipenv && \ pipx install awscli==1.* && \ diff --git a/dotnetcore2.1/build/Dockerfile b/dotnetcore2.1/build/Dockerfile index 15f91876..b0da831b 100644 --- a/dotnetcore2.1/build/Dockerfile +++ b/dotnetcore2.1/build/Dockerfile @@ -22,7 +22,7 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently # The pipx workaround is due to https://github.com/pipxproject/pipx/issues/218 -RUN source ~/.local/pipx/shared/bin/activate && \ +RUN source /usr/local/pipx/shared/bin/activate && \ pipx install virtualenv && \ pipx install pipenv && \ pipx install awscli==1.* && \ diff --git a/go1.x/build/Dockerfile b/go1.x/build/Dockerfile index a0f6e31b..7e0d730b 100644 --- a/go1.x/build/Dockerfile +++ b/go1.x/build/Dockerfile @@ -17,7 +17,7 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently # The pipx workaround is due to https://github.com/pipxproject/pipx/issues/218 -RUN source ~/.local/pipx/shared/bin/activate && \ +RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.0.0 && \ pipx install aws-sam-cli==0.53.0 diff --git a/java8/build/Dockerfile b/java8/build/Dockerfile index 8b65a22d..ed8631cd 100644 --- a/java8/build/Dockerfile +++ b/java8/build/Dockerfile @@ -16,7 +16,7 @@ ENV PATH="/usr/local/gradle/gradle-6.5.1/bin:/usr/local/maven/apache-maven-3.6.3 # Add these as a separate layer as they get updated frequently # The pipx workaround is due to https://github.com/pipxproject/pipx/issues/218 -RUN source ~/.local/pipx/shared/bin/activate && \ +RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.0.0 && \ pipx install aws-sam-cli==0.53.0 diff --git a/nodejs4.3/build/Dockerfile b/nodejs4.3/build/Dockerfile index 46fa9698..4688f91f 100644 --- a/nodejs4.3/build/Dockerfile +++ b/nodejs4.3/build/Dockerfile @@ -11,7 +11,7 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently # The pipx workaround is due to https://github.com/pipxproject/pipx/issues/218 -RUN source ~/.local/pipx/shared/bin/activate && \ +RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.0.0 && \ pipx install aws-sam-cli==0.53.0 diff --git a/nodejs6.10/build/Dockerfile b/nodejs6.10/build/Dockerfile index d5cf1744..ce7b8616 100644 --- a/nodejs6.10/build/Dockerfile +++ b/nodejs6.10/build/Dockerfile @@ -11,7 +11,7 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently # The pipx workaround is due to https://github.com/pipxproject/pipx/issues/218 -RUN source ~/.local/pipx/shared/bin/activate && \ +RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.0.0 && \ pipx install aws-sam-cli==0.53.0 diff --git a/nodejs8.10/build/Dockerfile b/nodejs8.10/build/Dockerfile index 5be7cd38..93c0e8c2 100644 --- a/nodejs8.10/build/Dockerfile +++ b/nodejs8.10/build/Dockerfile @@ -11,7 +11,7 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently # The pipx workaround is due to https://github.com/pipxproject/pipx/issues/218 -RUN source ~/.local/pipx/shared/bin/activate && \ +RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.0.0 && \ pipx install aws-sam-cli==0.53.0 diff --git a/provided/build/Dockerfile b/provided/build/Dockerfile index 97cca041..5b885549 100644 --- a/provided/build/Dockerfile +++ b/provided/build/Dockerfile @@ -2,7 +2,7 @@ FROM lambci/lambda-base:build # Add these as a separate layer as they get updated frequently # The pipx workaround is due to https://github.com/pipxproject/pipx/issues/218 -RUN source ~/.local/pipx/shared/bin/activate && \ +RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.0.0 && \ pipx install aws-sam-cli==0.53.0 diff --git a/python3.6/build/Dockerfile b/python3.6/build/Dockerfile index f6f94d72..19de2812 100644 --- a/python3.6/build/Dockerfile +++ b/python3.6/build/Dockerfile @@ -3,7 +3,9 @@ FROM lambci/lambda-base:build ENV PATH=/var/lang/bin:$PATH \ LD_LIBRARY_PATH=/var/lang/lib:$LD_LIBRARY_PATH \ AWS_EXECUTION_ENV=AWS_Lambda_python3.6 \ - PKG_CONFIG_PATH=/var/lang/lib/pkgconfig:/usr/lib64/pkgconfig:/usr/share/pkgconfig + PKG_CONFIG_PATH=/var/lang/lib/pkgconfig:/usr/lib64/pkgconfig:/usr/share/pkgconfig \ + PIPX_BIN_DIR=/var/lang/bin \ + PIPX_HOME=/var/lang/pipx RUN rm -rf /var/runtime /var/lang && \ export PYTHON_VERSION=3.6.10 && \ @@ -18,13 +20,10 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN pip install -U pip setuptools wheel --no-cache-dir && \ - rm -rf /root/.local && \ - pip install --user pipx --no-cache-dir && \ + pip install pipx --no-cache-dir && \ pipx install virtualenv && \ pipx install pipenv && \ pipx install poetry==1.0.9 && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.0.0 && \ pipx install aws-sam-cli==0.53.0 - -ENV PATH=/root/.poetry/bin:$PATH diff --git a/python3.7/build/Dockerfile b/python3.7/build/Dockerfile index aa5b0b7f..cbb8a404 100644 --- a/python3.7/build/Dockerfile +++ b/python3.7/build/Dockerfile @@ -3,20 +3,19 @@ FROM lambci/lambda-base:build ENV PATH=/var/lang/bin:$PATH \ LD_LIBRARY_PATH=/var/lang/lib:$LD_LIBRARY_PATH \ AWS_EXECUTION_ENV=AWS_Lambda_python3.7 \ - PKG_CONFIG_PATH=/var/lang/lib/pkgconfig:/usr/lib64/pkgconfig:/usr/share/pkgconfig + PKG_CONFIG_PATH=/var/lang/lib/pkgconfig:/usr/lib64/pkgconfig:/usr/share/pkgconfig \ + PIPX_BIN_DIR=/var/lang/bin \ + PIPX_HOME=/var/lang/pipx RUN rm -rf /var/runtime /var/lang /var/rapid && \ curl https://lambci.s3.amazonaws.com/fs/python3.7.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently RUN pip install -U pip setuptools wheel --no-cache-dir && \ - rm -rf /root/.local && \ - pip install --user pipx --no-cache-dir && \ + pip install pipx --no-cache-dir && \ pipx install virtualenv && \ pipx install pipenv && \ pipx install poetry==1.0.9 && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.0.0 && \ pipx install aws-sam-cli==0.53.0 - -ENV PATH=/root/.poetry/bin:$PATH diff --git a/python3.8/build/Dockerfile b/python3.8/build/Dockerfile index 5b47e407..83e7a77c 100644 --- a/python3.8/build/Dockerfile +++ b/python3.8/build/Dockerfile @@ -3,20 +3,19 @@ FROM lambci/lambda-base-2:build ENV PATH=/var/lang/bin:$PATH \ LD_LIBRARY_PATH=/var/lang/lib:$LD_LIBRARY_PATH \ AWS_EXECUTION_ENV=AWS_Lambda_python3.8 \ - PKG_CONFIG_PATH=/var/lang/lib/pkgconfig:/usr/lib64/pkgconfig:/usr/share/pkgconfig + PKG_CONFIG_PATH=/var/lang/lib/pkgconfig:/usr/lib64/pkgconfig:/usr/share/pkgconfig \ + PIPX_BIN_DIR=/var/lang/bin \ + PIPX_HOME=/var/lang/pipx RUN rm -rf /var/runtime /var/lang /var/rapid && \ curl https://lambci.s3.amazonaws.com/fs/python3.8.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently RUN pip install -U pip setuptools wheel --no-cache-dir && \ - rm -rf /root/.local && \ - pip install --user pipx --no-cache-dir && \ + pip install pipx --no-cache-dir && \ pipx install virtualenv && \ pipx install pipenv && \ pipx install poetry==1.0.9 && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.0.0 && \ pipx install aws-sam-cli==0.53.0 - -ENV PATH=/root/.poetry/bin:$PATH diff --git a/ruby2.5/build/Dockerfile b/ruby2.5/build/Dockerfile index bc06ecc0..ae3c93dc 100644 --- a/ruby2.5/build/Dockerfile +++ b/ruby2.5/build/Dockerfile @@ -13,7 +13,7 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently # The pipx workaround is due to https://github.com/pipxproject/pipx/issues/218 -RUN source ~/.local/pipx/shared/bin/activate && \ +RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.0.0 && \ pipx install aws-sam-cli==0.53.0 && \ From f6dd2b4ac594fe51517700ec68b73f759d73cdaf Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Tue, 21 Jul 2020 17:27:35 -0400 Subject: [PATCH 205/271] Update aws-sam-cli to 1.0.0 --- dotnetcore2.0/build/Dockerfile | 2 +- dotnetcore2.1/build/Dockerfile | 2 +- .../run/MockBootstraps/lib/Bootstrap.dll | Bin 147456 -> 147456 bytes .../run/MockBootstraps/lib/Bootstrap.pdb | Bin 44980 -> 44964 bytes dotnetcore3.1/build/Dockerfile | 2 +- go1.x/build/Dockerfile | 2 +- java11/build/Dockerfile | 2 +- java8/build/Dockerfile | 2 +- nodejs10.x/build/Dockerfile | 2 +- nodejs12.x/build/Dockerfile | 2 +- nodejs4.3/build/Dockerfile | 2 +- nodejs6.10/build/Dockerfile | 2 +- nodejs8.10/build/Dockerfile | 2 +- provided/build/Dockerfile | 2 +- python3.6/build/Dockerfile | 2 +- python3.7/build/Dockerfile | 2 +- python3.8/build/Dockerfile | 2 +- ruby2.5/build/Dockerfile | 2 +- ruby2.7/build/Dockerfile | 2 +- 19 files changed, 17 insertions(+), 17 deletions(-) diff --git a/dotnetcore2.0/build/Dockerfile b/dotnetcore2.0/build/Dockerfile index c47040a1..34c89f9c 100644 --- a/dotnetcore2.0/build/Dockerfile +++ b/dotnetcore2.0/build/Dockerfile @@ -26,6 +26,6 @@ RUN source /usr/local/pipx/shared/bin/activate && \ pipx install pipenv && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.0.0 && \ - pipx install aws-sam-cli==0.53.0 + pipx install aws-sam-cli==1.0.0 CMD ["dotnet", "build"] diff --git a/dotnetcore2.1/build/Dockerfile b/dotnetcore2.1/build/Dockerfile index b0da831b..7f52d4b8 100644 --- a/dotnetcore2.1/build/Dockerfile +++ b/dotnetcore2.1/build/Dockerfile @@ -27,7 +27,7 @@ RUN source /usr/local/pipx/shared/bin/activate && \ pipx install pipenv && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.0.0 && \ - pipx install aws-sam-cli==0.53.0 && \ + pipx install aws-sam-cli==1.0.0 && \ dotnet tool install --global Amazon.Lambda.Tools --version 3.3.1 CMD ["dotnet", "build"] diff --git a/dotnetcore2.1/run/MockBootstraps/lib/Bootstrap.dll b/dotnetcore2.1/run/MockBootstraps/lib/Bootstrap.dll index 4880d8fd9ec88680c4407c7cbd7228fbbb51f489..1e9e0796febf86a99471027dc5c25741e5b11b97 100644 GIT binary patch delta 114 zcmZo@;B08%oY29tc(3o##-6P`j2G?;h`O(@3!2{U-{hS0tn-JY*Y=zTj3yy0Y7@Nn zPG4fe6d;iH>D;vdZX=h@z0G|)Ua)ML&SJ`xsQ?u{;t3T6s<-X%D}DK{iuFhBlK*+z Jdrg^&xd3}cGyebp delta 114 zcmZo@;B08%oY2AY!~Oin#-6P`j2G?;=mzr67jc>3ye8mUxVhb`t=n@RFq(w0WIes| zdHNC)rT~H4E?u)pyJ6b4=`5y9nF>(R1-wvEkowHTKT6Z4`Do6lJ)66| J*OaN43jn_?G~@sP diff --git a/dotnetcore2.1/run/MockBootstraps/lib/Bootstrap.pdb b/dotnetcore2.1/run/MockBootstraps/lib/Bootstrap.pdb index 3f913c8b3c16410e70ff8393a9e04193f32497a7..83172b95b8b62266fdb0f0bd914158cf75822fad 100644 GIT binary patch delta 8591 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 delta 8605 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 diff --git a/dotnetcore3.1/build/Dockerfile b/dotnetcore3.1/build/Dockerfile index 95c1bf17..3a5613a4 100644 --- a/dotnetcore3.1/build/Dockerfile +++ b/dotnetcore3.1/build/Dockerfile @@ -22,7 +22,7 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.0.0 && \ - pipx install aws-sam-cli==0.53.0 && \ + pipx install aws-sam-cli==1.0.0 && \ dotnet tool install --global Amazon.Lambda.Tools --version 4.0.0 CMD ["dotnet", "build"] diff --git a/go1.x/build/Dockerfile b/go1.x/build/Dockerfile index 7e0d730b..d2bcafb2 100644 --- a/go1.x/build/Dockerfile +++ b/go1.x/build/Dockerfile @@ -20,6 +20,6 @@ RUN rm -rf /var/runtime /var/lang && \ RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.0.0 && \ - pipx install aws-sam-cli==0.53.0 + pipx install aws-sam-cli==1.0.0 CMD ["dep", "ensure"] diff --git a/java11/build/Dockerfile b/java11/build/Dockerfile index 7cb2d76e..72e3053f 100644 --- a/java11/build/Dockerfile +++ b/java11/build/Dockerfile @@ -16,4 +16,4 @@ ENV PATH="/usr/local/gradle/gradle-6.5.1/bin:/usr/local/maven/apache-maven-3.6.3 # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.0.0 && \ - pipx install aws-sam-cli==0.53.0 + pipx install aws-sam-cli==1.0.0 diff --git a/java8/build/Dockerfile b/java8/build/Dockerfile index ed8631cd..a63cc78e 100644 --- a/java8/build/Dockerfile +++ b/java8/build/Dockerfile @@ -19,4 +19,4 @@ ENV PATH="/usr/local/gradle/gradle-6.5.1/bin:/usr/local/maven/apache-maven-3.6.3 RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.0.0 && \ - pipx install aws-sam-cli==0.53.0 + pipx install aws-sam-cli==1.0.0 diff --git a/nodejs10.x/build/Dockerfile b/nodejs10.x/build/Dockerfile index 1ec80353..8e3603e5 100644 --- a/nodejs10.x/build/Dockerfile +++ b/nodejs10.x/build/Dockerfile @@ -11,4 +11,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.0.0 && \ - pipx install aws-sam-cli==0.53.0 + pipx install aws-sam-cli==1.0.0 diff --git a/nodejs12.x/build/Dockerfile b/nodejs12.x/build/Dockerfile index 07df5cd9..f9389348 100644 --- a/nodejs12.x/build/Dockerfile +++ b/nodejs12.x/build/Dockerfile @@ -11,4 +11,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.0.0 && \ - pipx install aws-sam-cli==0.53.0 + pipx install aws-sam-cli==1.0.0 diff --git a/nodejs4.3/build/Dockerfile b/nodejs4.3/build/Dockerfile index 4688f91f..38c8bd39 100644 --- a/nodejs4.3/build/Dockerfile +++ b/nodejs4.3/build/Dockerfile @@ -14,6 +14,6 @@ RUN rm -rf /var/runtime /var/lang && \ RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.0.0 && \ - pipx install aws-sam-cli==0.53.0 + pipx install aws-sam-cli==1.0.0 CMD ["npm", "rebuild"] diff --git a/nodejs6.10/build/Dockerfile b/nodejs6.10/build/Dockerfile index ce7b8616..43562b51 100644 --- a/nodejs6.10/build/Dockerfile +++ b/nodejs6.10/build/Dockerfile @@ -14,6 +14,6 @@ RUN rm -rf /var/runtime /var/lang && \ RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.0.0 && \ - pipx install aws-sam-cli==0.53.0 + pipx install aws-sam-cli==1.0.0 CMD ["npm", "rebuild"] diff --git a/nodejs8.10/build/Dockerfile b/nodejs8.10/build/Dockerfile index 93c0e8c2..551d0df0 100644 --- a/nodejs8.10/build/Dockerfile +++ b/nodejs8.10/build/Dockerfile @@ -14,6 +14,6 @@ RUN rm -rf /var/runtime /var/lang && \ RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.0.0 && \ - pipx install aws-sam-cli==0.53.0 + pipx install aws-sam-cli==1.0.0 CMD ["npm", "rebuild"] diff --git a/provided/build/Dockerfile b/provided/build/Dockerfile index 5b885549..6c83f670 100644 --- a/provided/build/Dockerfile +++ b/provided/build/Dockerfile @@ -5,4 +5,4 @@ FROM lambci/lambda-base:build RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.0.0 && \ - pipx install aws-sam-cli==0.53.0 + pipx install aws-sam-cli==1.0.0 diff --git a/python3.6/build/Dockerfile b/python3.6/build/Dockerfile index 19de2812..30bc24fa 100644 --- a/python3.6/build/Dockerfile +++ b/python3.6/build/Dockerfile @@ -26,4 +26,4 @@ RUN pip install -U pip setuptools wheel --no-cache-dir && \ pipx install poetry==1.0.9 && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.0.0 && \ - pipx install aws-sam-cli==0.53.0 + pipx install aws-sam-cli==1.0.0 diff --git a/python3.7/build/Dockerfile b/python3.7/build/Dockerfile index cbb8a404..4986c137 100644 --- a/python3.7/build/Dockerfile +++ b/python3.7/build/Dockerfile @@ -18,4 +18,4 @@ RUN pip install -U pip setuptools wheel --no-cache-dir && \ pipx install poetry==1.0.9 && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.0.0 && \ - pipx install aws-sam-cli==0.53.0 + pipx install aws-sam-cli==1.0.0 diff --git a/python3.8/build/Dockerfile b/python3.8/build/Dockerfile index 83e7a77c..b6fcd43b 100644 --- a/python3.8/build/Dockerfile +++ b/python3.8/build/Dockerfile @@ -18,4 +18,4 @@ RUN pip install -U pip setuptools wheel --no-cache-dir && \ pipx install poetry==1.0.9 && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.0.0 && \ - pipx install aws-sam-cli==0.53.0 + pipx install aws-sam-cli==1.0.0 diff --git a/ruby2.5/build/Dockerfile b/ruby2.5/build/Dockerfile index ae3c93dc..6acd3477 100644 --- a/ruby2.5/build/Dockerfile +++ b/ruby2.5/build/Dockerfile @@ -16,6 +16,6 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.0.0 && \ - pipx install aws-sam-cli==0.53.0 && \ + pipx install aws-sam-cli==1.0.0 && \ gem update --system --no-document && \ gem install --no-document bundler -v '~> 2.1' diff --git a/ruby2.7/build/Dockerfile b/ruby2.7/build/Dockerfile index c31ecf1a..4c3d059e 100644 --- a/ruby2.7/build/Dockerfile +++ b/ruby2.7/build/Dockerfile @@ -14,6 +14,6 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.0.0 && \ - pipx install aws-sam-cli==0.53.0 && \ + pipx install aws-sam-cli==1.0.0 && \ gem update --system --no-document && \ gem install --no-document bundler -v '~> 2.1' From f263e1664c4f82883849bbefddfd84644003374f Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Tue, 21 Jul 2020 17:27:54 -0400 Subject: [PATCH 206/271] Remove yum-plugin-ovl from base build, it's now installed on the OS --- base/build/Dockerfile | 1 - 1 file changed, 1 deletion(-) diff --git a/base/build/Dockerfile b/base/build/Dockerfile index 2d8fbc8b..4bafa8f4 100644 --- a/base/build/Dockerfile +++ b/base/build/Dockerfile @@ -15,7 +15,6 @@ f = open('/etc/yum.conf', 'w'); \ yum_conf.write(f); \ f.close();" && \ rpm --rebuilddb && \ - yum install -y yum-plugin-ovl && \ yum reinstall -y setup pam shadow-utils audit-libs openssl glibc-common glibc && \ yum groupinstall -y development && \ yum install -y clang cmake docker python27-devel python36-devel \ From 8207111ffc8d5cde604fd8df761c6fb7b65e4e2f Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Tue, 21 Jul 2020 17:49:37 -0400 Subject: [PATCH 207/271] Update poetry to 1.0.10 in python build images --- python2.7/build/Dockerfile | 2 +- python3.6/build/Dockerfile | 2 +- python3.7/build/Dockerfile | 2 +- python3.8/build/Dockerfile | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/python2.7/build/Dockerfile b/python2.7/build/Dockerfile index dc20f283..ed8e9abe 100644 --- a/python2.7/build/Dockerfile +++ b/python2.7/build/Dockerfile @@ -8,7 +8,7 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ pip install -U 'virtualenv>=16.0.0,<20.0.0' pipenv wheel --no-cache-dir && \ - curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.9/get-poetry.py | POETRY_VERSION=1.0.9 python && \ + curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.10/get-poetry.py | POETRY_VERSION=1.0.10 python && \ pip install -U awscli boto3 aws-sam-cli==0.22.0 aws-lambda-builders==0.4.0 --no-cache-dir ENV PATH=/root/.poetry/bin:$PATH diff --git a/python3.6/build/Dockerfile b/python3.6/build/Dockerfile index 30bc24fa..197e3afe 100644 --- a/python3.6/build/Dockerfile +++ b/python3.6/build/Dockerfile @@ -23,7 +23,7 @@ RUN pip install -U pip setuptools wheel --no-cache-dir && \ pip install pipx --no-cache-dir && \ pipx install virtualenv && \ pipx install pipenv && \ - pipx install poetry==1.0.9 && \ + pipx install poetry==1.0.10 && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.0.0 && \ pipx install aws-sam-cli==1.0.0 diff --git a/python3.7/build/Dockerfile b/python3.7/build/Dockerfile index 4986c137..e0275280 100644 --- a/python3.7/build/Dockerfile +++ b/python3.7/build/Dockerfile @@ -15,7 +15,7 @@ RUN pip install -U pip setuptools wheel --no-cache-dir && \ pip install pipx --no-cache-dir && \ pipx install virtualenv && \ pipx install pipenv && \ - pipx install poetry==1.0.9 && \ + pipx install poetry==1.0.10 && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.0.0 && \ pipx install aws-sam-cli==1.0.0 diff --git a/python3.8/build/Dockerfile b/python3.8/build/Dockerfile index b6fcd43b..70f9ec9d 100644 --- a/python3.8/build/Dockerfile +++ b/python3.8/build/Dockerfile @@ -15,7 +15,7 @@ RUN pip install -U pip setuptools wheel --no-cache-dir && \ pip install pipx --no-cache-dir && \ pipx install virtualenv && \ pipx install pipenv && \ - pipx install poetry==1.0.9 && \ + pipx install poetry==1.0.10 && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.0.0 && \ pipx install aws-sam-cli==1.0.0 From 72a47daca351fd2d58f08ea5a4642812a0dac4af Mon Sep 17 00:00:00 2001 From: jakub-bochenski Date: Mon, 3 Aug 2020 14:11:46 +0200 Subject: [PATCH 208/271] docs: update broken link (#302) --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 484d3257..ce2b5d1a 100644 --- a/README.md +++ b/README.md @@ -196,7 +196,7 @@ docker run --rm -v "$PWD":/var/task:ro,delegated lambci/lambda:go1.x my_handler # Test a function from the current directory on Java 11 # The directory must be laid out in the same way the Lambda zip file is, # with top-level package source directories and a `lib` directory for third-party jars -# http://docs.aws.amazon.com/lambda/latest/dg/create-deployment-pkg-zip-java.html +# https://docs.aws.amazon.com/lambda/latest/dg/java-package.html docker run --rm -v "$PWD":/var/task:ro,delegated lambci/lambda:java11 org.myorg.MyHandler # Test on .NET Core 3.1 given a test.dll assembly in the current directory, From 7c40c85468107fa2d82bd15f728b537d6bdab23f Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Fri, 31 Jul 2020 17:05:03 -0400 Subject: [PATCH 209/271] Rework base images to make them less hobbled - Reinstall all yum packages that require reinstalling - Fix filesystem breakages - Remove plugin enabling, should be always enabled now --- base/Dockerfile | 18 +++++++++++++----- base/base-2/Dockerfile | 18 +++++++++++------- base/build-2/Dockerfile | 17 +++++++++-------- base/build/Dockerfile | 20 +++++--------------- 4 files changed, 38 insertions(+), 35 deletions(-) diff --git a/base/Dockerfile b/base/Dockerfile index ab3ea957..6d447adc 100644 --- a/base/Dockerfile +++ b/base/Dockerfile @@ -1,9 +1,16 @@ -FROM scratch +FROM amazonlinux:1 # Docker doesn't support unpacking from remote URLs with ADD, # and we don't want to 'docker import' because we can't squash into a small layer # So this is expected to be downloaded from https://lambci.s3.amazonaws.com/fs/base.tgz -ADD ./base.tgz / +ADD ./base.tgz /opt/ + +RUN yum --installroot=/opt reinstall -y filesystem-2.4.30-3.8.amzn1 && \ + yum --installroot=/opt clean all + +FROM scratch + +COPY --from=0 /opt / ENV PATH=/usr/local/bin:/usr/bin/:/bin:/opt/bin \ LD_LIBRARY_PATH=/lib64:/usr/lib64:/var/runtime:/var/runtime/lib:/var/task:/var/task/lib:/opt/lib \ @@ -23,10 +30,11 @@ ENV PATH=/usr/local/bin:/usr/bin/:/bin:/opt/bin \ AWS_XRAY_CONTEXT_MISSING=LOG_ERROR \ _X_AMZN_TRACE_ID='Root=1-dc99d00f-c079a84d433534434534ef0d;Parent=91ed514f1e5c03b2;Sampled=1' -RUN yum reinstall -y filesystem; \ +# pam has problems reinstalling from a non-standard installroot, +# so reinstall everything except filesystem here +RUN yum reinstall -y setup-2.8.14-20.12.amzn1 audit-libs-2.6.5-3.28.amzn1 shadow-utils-4.1.4.2-13.10.amzn1 \ + openssl-1.0.2k-16.151.amzn1 glibc-2.17-292.180.amzn1 glibc-common-2.17-292.180.amzn1 pam-1.1.8-12.33.amzn1 && \ yum clean all && \ - rm -rf /var/cache/yum && \ - mkdir /tmp && \ chown sbx_user1051:495 /tmp && \ chmod 700 /tmp diff --git a/base/base-2/Dockerfile b/base/base-2/Dockerfile index 12b79b22..4e522317 100644 --- a/base/base-2/Dockerfile +++ b/base/base-2/Dockerfile @@ -1,9 +1,17 @@ -FROM scratch +FROM amazonlinux:2 # Docker doesn't support unpacking from remote URLs with ADD, # and we don't want to 'docker import' because we can't squash into a small layer # So this is expected to be downloaded from https://lambci.s3.amazonaws.com/fs/base-2.tgz -ADD ./base-2.tgz / +ADD ./base-2.tgz /opt/ + +RUN yum --installroot=/opt reinstall -y filesystem-3.2-25.amzn2.0.4 \ + setup-2.8.71-10.amzn2.0.1 glibc-2.26-34.amzn2 glibc-common-2.26-34.amzn2 && \ + yum --installroot=/opt clean all + +FROM scratch + +COPY --from=0 /opt / ENV PATH=/usr/local/bin:/usr/bin/:/bin:/opt/bin \ LD_LIBRARY_PATH=/lib64:/usr/lib64:/var/runtime:/var/runtime/lib:/var/task:/var/task/lib:/opt/lib \ @@ -23,11 +31,7 @@ ENV PATH=/usr/local/bin:/usr/bin/:/bin:/opt/bin \ AWS_XRAY_CONTEXT_MISSING=LOG_ERROR \ _X_AMZN_TRACE_ID='Root=1-dc99d00f-c079a84d433534434534ef0d;Parent=91ed514f1e5c03b2;Sampled=1' -RUN rm -rf /var/cache/yum /var/lib/rpm/__db.* && \ - > /var/log/yum.log && \ - mkdir -p /root /tmp && \ - chmod 550 /root && \ - chown sbx_user1051:495 /tmp && \ +RUN chown sbx_user1051:495 /tmp && \ chmod 700 /tmp WORKDIR /var/task diff --git a/base/build-2/Dockerfile b/base/build-2/Dockerfile index e41381b5..104c9db7 100644 --- a/base/build-2/Dockerfile +++ b/base/build-2/Dockerfile @@ -1,8 +1,10 @@ +FROM lambci/lambda-base-2 + FROM amazonlinux:2 -RUN yum list yum && \ - yum install -y --releasever=2 --installroot=/installroot yum yum-plugin-ovl yum-plugin-priorities +COPY --from=0 / /opt/ +RUN yum --installroot=/opt install -y yum yum-plugin-ovl yum-plugin-priorities FROM lambci/lambda-base-2 @@ -10,15 +12,14 @@ ENV PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/bin \ PIPX_BIN_DIR=/usr/local/bin \ PIPX_HOME=/usr/local/pipx -COPY --from=0 /installroot/etc /etc/ -COPY --from=0 /installroot/usr /usr/ +COPY --from=1 /opt / -RUN yum reinstall -y filesystem setup glibc-common glibc; \ +RUN chown root:root /tmp && \ + chmod 1777 /tmp && \ yum install -y glibc-langpack-en && \ yum groupinstall -y development && \ yum install -y which clang cmake python-devel python3-devel amazon-linux-extras && \ amazon-linux-extras install -y docker && \ - pip3 install -U pip setuptools wheel --no-cache-dir && \ - pip3 install pipx --no-cache-dir && \ yum clean all && \ - rm -rf /var/cache/yum + pip3 install -U pip setuptools wheel --no-cache-dir && \ + pip3 install pipx --no-cache-dir diff --git a/base/build/Dockerfile b/base/build/Dockerfile index 4bafa8f4..d8bb2f35 100644 --- a/base/build/Dockerfile +++ b/base/build/Dockerfile @@ -4,27 +4,17 @@ ENV PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/bin \ PIPX_BIN_DIR=/usr/local/bin \ PIPX_HOME=/usr/local/pipx -# A couple of packages are either missing critical-ish files, or didn't make it into the tar -RUN chmod 1777 /tmp && \ - /usr/bin/python3 -c "from configparser import SafeConfigParser; \ -yum_conf = SafeConfigParser(); \ -yum_conf.read('/etc/yum.conf'); \ -yum_conf.has_section('main') or yum_conf.add_section('main'); \ -yum_conf.set('main', 'plugins', '1'); \ -f = open('/etc/yum.conf', 'w'); \ -yum_conf.write(f); \ -f.close();" && \ - rpm --rebuilddb && \ - yum reinstall -y setup pam shadow-utils audit-libs openssl glibc-common glibc && \ +RUN chown root:root /tmp && \ + chmod 1777 /tmp && \ + yum groups mark convert && \ yum groupinstall -y development && \ yum install -y clang cmake docker python27-devel python36-devel \ ImageMagick-devel-6.7.8.9 cairo-devel libssh2-devel libxslt-devel libmpc-devel readline-devel db4-devel \ libffi-devel expat-devel libicu-devel lua-devel gdbm-devel sqlite-devel pcre-devel libcurl-devel && \ + yum clean all && \ alternatives --set gcc /usr/bin/gcc48 && \ alternatives --set g++ /usr/bin/g++48 && \ alternatives --set cpp /usr/bin/cpp48 && \ python3 -m pip install -U pip setuptools wheel --no-cache-dir && \ pip install pipx --no-cache-dir && \ - pipx run awscli==1.* 2>/dev/null || true && \ - yum clean all && \ - rm -rf /var/cache/yum + pipx run awscli==1.* 2>/dev/null || true From 7ece2742a5b0e84eb09d6ed659f123474e619b27 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Thu, 6 Aug 2020 10:51:48 -0400 Subject: [PATCH 210/271] Remove hardcoded AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY settings Fixes #303 --- dotnetcore2.0/run/MockBootstraps/MockRuntime.cs | 4 ++-- dotnetcore2.1/run/MockBootstraps/MockRuntime.cs | 4 ++-- go1.x/run/aws-lambda-mock.go | 4 ++-- .../src/main/java/lambdainternal/LambdaRuntime.java | 4 ++-- nodejs4.3/run/awslambda-mock.js | 4 ++-- nodejs6.10/run/awslambda-mock.js | 4 ++-- nodejs8.10/run/awslambda-mock.js | 4 ++-- provided/run/init.go | 4 ++-- python2.7/run/runtime_mock.py | 4 ++-- python3.6/run/runtime_mock.py | 4 ++-- 10 files changed, 20 insertions(+), 20 deletions(-) diff --git a/dotnetcore2.0/run/MockBootstraps/MockRuntime.cs b/dotnetcore2.0/run/MockBootstraps/MockRuntime.cs index daa1df4d..7cff6ecc 100644 --- a/dotnetcore2.0/run/MockBootstraps/MockRuntime.cs +++ b/dotnetcore2.0/run/MockBootstraps/MockRuntime.cs @@ -156,8 +156,8 @@ unsafe InvokeData ILambdaRuntime.ReceiveInvoke(IDictionary initialEnvironmentVar RequestId = context.RequestId, AwsCredentials = new AwsCredentials { - AccessKeyId = EnvHelper.GetOrDefault("AWS_ACCESS_KEY_ID", "SOME_ACCESS_KEY_ID"), - SecretAccessKey = EnvHelper.GetOrDefault("AWS_SECRET_ACCESS_KEY", "SOME_SECRET_ACCESS_KEY"), + AccessKeyId = System.Environment.GetEnvironmentVariable("AWS_ACCESS_KEY_ID"), + SecretAccessKey = System.Environment.GetEnvironmentVariable("AWS_SECRET_ACCESS_KEY"), SessionToken = System.Environment.GetEnvironmentVariable("AWS_SESSION_TOKEN") }, XAmznTraceId = xAmznTraceId, diff --git a/dotnetcore2.1/run/MockBootstraps/MockRuntime.cs b/dotnetcore2.1/run/MockBootstraps/MockRuntime.cs index c3827321..51ee0887 100644 --- a/dotnetcore2.1/run/MockBootstraps/MockRuntime.cs +++ b/dotnetcore2.1/run/MockBootstraps/MockRuntime.cs @@ -157,8 +157,8 @@ unsafe InvokeData ILambdaRuntime.ReceiveInvoke(IDictionary initialEnvironmentVar RequestId = context.RequestId, AwsCredentials = new AwsCredentials { - AccessKeyId = EnvHelper.GetOrDefault("AWS_ACCESS_KEY_ID", "SOME_ACCESS_KEY_ID"), - SecretAccessKey = EnvHelper.GetOrDefault("AWS_SECRET_ACCESS_KEY", "SOME_SECRET_ACCESS_KEY"), + AccessKeyId = System.Environment.GetEnvironmentVariable("AWS_ACCESS_KEY_ID"), + SecretAccessKey = System.Environment.GetEnvironmentVariable("AWS_SECRET_ACCESS_KEY"), SessionToken = System.Environment.GetEnvironmentVariable("AWS_SESSION_TOKEN") }, XAmznTraceId = xAmznTraceId, diff --git a/go1.x/run/aws-lambda-mock.go b/go1.x/run/aws-lambda-mock.go index 103a52d9..885f0200 100644 --- a/go1.x/run/aws-lambda-mock.go +++ b/go1.x/run/aws-lambda-mock.go @@ -76,8 +76,8 @@ func main() { } mockContext.ParseTimeout() - awsAccessKey := getEnv("AWS_ACCESS_KEY", getEnv("AWS_ACCESS_KEY_ID", "SOME_ACCESS_KEY_ID")) - awsSecretKey := getEnv("AWS_SECRET_KEY", getEnv("AWS_SECRET_ACCESS_KEY", "SOME_SECRET_ACCESS_KEY")) + awsAccessKey := getEnv("AWS_ACCESS_KEY", os.Getenv("AWS_ACCESS_KEY_ID")) + awsSecretKey := getEnv("AWS_SECRET_KEY", os.Getenv("AWS_SECRET_ACCESS_KEY")) awsSessionToken := getEnv("AWS_SESSION_TOKEN", os.Getenv("AWS_SECURITY_TOKEN")) port := getEnv("_LAMBDA_SERVER_PORT", "54321") diff --git a/java8/run/lambda-runtime-mock/src/main/java/lambdainternal/LambdaRuntime.java b/java8/run/lambda-runtime-mock/src/main/java/lambdainternal/LambdaRuntime.java index 4737a67d..d7999155 100644 --- a/java8/run/lambda-runtime-mock/src/main/java/lambdainternal/LambdaRuntime.java +++ b/java8/run/lambda-runtime-mock/src/main/java/lambdainternal/LambdaRuntime.java @@ -72,8 +72,8 @@ public class LambdaRuntime { FUNCTION_VERSION = getEnvOrDefault("AWS_LAMBDA_FUNCTION_VERSION", "$LATEST"); LOG_GROUP_NAME = getEnvOrDefault("AWS_LAMBDA_LOG_GROUP_NAME", "/aws/lambda/" + FUNCTION_NAME); LOG_STREAM_NAME = getEnvOrDefault("AWS_LAMBDA_LOG_STREAM_NAME", randomLogStreamName(FUNCTION_VERSION)); - AWS_ACCESS_KEY_ID = getEnvOrDefault("AWS_ACCESS_KEY_ID", "SOME_ACCESS_KEY_ID"); - AWS_SECRET_ACCESS_KEY = getEnvOrDefault("AWS_SECRET_ACCESS_KEY", "SOME_SECRET_ACCESS_KEY"); + AWS_ACCESS_KEY_ID = getEnv("AWS_ACCESS_KEY_ID"); + AWS_SECRET_ACCESS_KEY = getEnv("AWS_SECRET_ACCESS_KEY"); AWS_SESSION_TOKEN = getEnv("AWS_SESSION_TOKEN"); AWS_REGION = getEnvOrDefault("AWS_REGION", getEnvOrDefault("AWS_DEFAULT_REGION", "us-east-1")); diff --git a/nodejs4.3/run/awslambda-mock.js b/nodejs4.3/run/awslambda-mock.js index dec5ee15..254062e3 100644 --- a/nodejs4.3/run/awslambda-mock.js +++ b/nodejs4.3/run/awslambda-mock.js @@ -21,8 +21,8 @@ var MEM_SIZE = process.env.AWS_LAMBDA_FUNCTION_MEMORY_SIZE || '1536' var TIMEOUT = process.env.AWS_LAMBDA_FUNCTION_TIMEOUT || '300' var REGION = process.env.AWS_REGION || process.env.AWS_DEFAULT_REGION || 'us-east-1' var ACCOUNT_ID = process.env.AWS_ACCOUNT_ID || randomAccountId() -var ACCESS_KEY_ID = process.env.AWS_ACCESS_KEY_ID || 'SOME_ACCESS_KEY_ID' -var SECRET_ACCESS_KEY = process.env.AWS_SECRET_ACCESS_KEY || 'SOME_SECRET_ACCESS_KEY' +var ACCESS_KEY_ID = process.env.AWS_ACCESS_KEY_ID +var SECRET_ACCESS_KEY = process.env.AWS_SECRET_ACCESS_KEY var SESSION_TOKEN = process.env.AWS_SESSION_TOKEN var INVOKED_ARN = process.env.AWS_LAMBDA_FUNCTION_INVOKED_ARN || arn(REGION, ACCOUNT_ID, FN_NAME) var TRACE_ID = process.env._X_AMZN_TRACE_ID diff --git a/nodejs6.10/run/awslambda-mock.js b/nodejs6.10/run/awslambda-mock.js index dec5ee15..254062e3 100644 --- a/nodejs6.10/run/awslambda-mock.js +++ b/nodejs6.10/run/awslambda-mock.js @@ -21,8 +21,8 @@ var MEM_SIZE = process.env.AWS_LAMBDA_FUNCTION_MEMORY_SIZE || '1536' var TIMEOUT = process.env.AWS_LAMBDA_FUNCTION_TIMEOUT || '300' var REGION = process.env.AWS_REGION || process.env.AWS_DEFAULT_REGION || 'us-east-1' var ACCOUNT_ID = process.env.AWS_ACCOUNT_ID || randomAccountId() -var ACCESS_KEY_ID = process.env.AWS_ACCESS_KEY_ID || 'SOME_ACCESS_KEY_ID' -var SECRET_ACCESS_KEY = process.env.AWS_SECRET_ACCESS_KEY || 'SOME_SECRET_ACCESS_KEY' +var ACCESS_KEY_ID = process.env.AWS_ACCESS_KEY_ID +var SECRET_ACCESS_KEY = process.env.AWS_SECRET_ACCESS_KEY var SESSION_TOKEN = process.env.AWS_SESSION_TOKEN var INVOKED_ARN = process.env.AWS_LAMBDA_FUNCTION_INVOKED_ARN || arn(REGION, ACCOUNT_ID, FN_NAME) var TRACE_ID = process.env._X_AMZN_TRACE_ID diff --git a/nodejs8.10/run/awslambda-mock.js b/nodejs8.10/run/awslambda-mock.js index aaeab76f..ca25a49e 100644 --- a/nodejs8.10/run/awslambda-mock.js +++ b/nodejs8.10/run/awslambda-mock.js @@ -21,8 +21,8 @@ var MEM_SIZE = process.env.AWS_LAMBDA_FUNCTION_MEMORY_SIZE || '1536' var TIMEOUT = process.env.AWS_LAMBDA_FUNCTION_TIMEOUT || '300' var REGION = process.env.AWS_REGION || process.env.AWS_DEFAULT_REGION || 'us-east-1' var ACCOUNT_ID = process.env.AWS_ACCOUNT_ID || randomAccountId() -var ACCESS_KEY_ID = process.env.AWS_ACCESS_KEY_ID || 'SOME_ACCESS_KEY_ID' -var SECRET_ACCESS_KEY = process.env.AWS_SECRET_ACCESS_KEY || 'SOME_SECRET_ACCESS_KEY' +var ACCESS_KEY_ID = process.env.AWS_ACCESS_KEY_ID +var SECRET_ACCESS_KEY = process.env.AWS_SECRET_ACCESS_KEY var SESSION_TOKEN = process.env.AWS_SESSION_TOKEN var INVOKED_ARN = process.env.AWS_LAMBDA_FUNCTION_INVOKED_ARN || arn(REGION, ACCOUNT_ID, FN_NAME) var TRACE_ID = process.env._X_AMZN_TRACE_ID diff --git a/provided/run/init.go b/provided/run/init.go index 584f2489..6b9339c2 100644 --- a/provided/run/init.go +++ b/provided/run/init.go @@ -262,8 +262,8 @@ func ensureBootstrapIsRunning(context *mockLambdaContext) error { return fmt.Errorf("Couldn't find valid bootstrap(s): [/var/task/bootstrap /opt/bootstrap]") } - awsAccessKey := getEnv("AWS_ACCESS_KEY", getEnv("AWS_ACCESS_KEY_ID", "SOME_ACCESS_KEY_ID")) - awsSecretKey := getEnv("AWS_SECRET_KEY", getEnv("AWS_SECRET_ACCESS_KEY", "SOME_SECRET_ACCESS_KEY")) + awsAccessKey := getEnv("AWS_ACCESS_KEY", os.Getenv("AWS_ACCESS_KEY_ID")) + awsSecretKey := getEnv("AWS_SECRET_KEY", os.Getenv("AWS_SECRET_ACCESS_KEY")) awsSessionToken := getEnv("AWS_SESSION_TOKEN", os.Getenv("AWS_SECURITY_TOKEN")) bootstrapCmd.Env = append(os.Environ(), diff --git a/python2.7/run/runtime_mock.py b/python2.7/run/runtime_mock.py index 59f428cf..a52ffe80 100644 --- a/python2.7/run/runtime_mock.py +++ b/python2.7/run/runtime_mock.py @@ -38,8 +38,8 @@ DEADLINE_MS = int(time.time() * 1000) + int(os.environ.get('AWS_LAMBDA_FUNCTION_TIMEOUT', '300')) REGION = os.environ.get('AWS_REGION', os.environ.get('AWS_DEFAULT_REGION', 'us-east-1')) ACCOUNT_ID = os.environ.get('AWS_ACCOUNT_ID', random.randint(100000000000, 999999999999)) -ACCESS_KEY_ID = os.environ.get('AWS_ACCESS_KEY_ID', 'SOME_ACCESS_KEY_ID') -SECRET_ACCESS_KEY = os.environ.get('AWS_SECRET_ACCESS_KEY', 'SOME_SECRET_ACCESS_KEY') +ACCESS_KEY_ID = os.environ.get('AWS_ACCESS_KEY_ID', None) +SECRET_ACCESS_KEY = os.environ.get('AWS_SECRET_ACCESS_KEY', None) SESSION_TOKEN = os.environ.get('AWS_SESSION_TOKEN', None) INVOKEID = str(uuid.uuid4()) diff --git a/python3.6/run/runtime_mock.py b/python3.6/run/runtime_mock.py index 59f428cf..a52ffe80 100644 --- a/python3.6/run/runtime_mock.py +++ b/python3.6/run/runtime_mock.py @@ -38,8 +38,8 @@ DEADLINE_MS = int(time.time() * 1000) + int(os.environ.get('AWS_LAMBDA_FUNCTION_TIMEOUT', '300')) REGION = os.environ.get('AWS_REGION', os.environ.get('AWS_DEFAULT_REGION', 'us-east-1')) ACCOUNT_ID = os.environ.get('AWS_ACCOUNT_ID', random.randint(100000000000, 999999999999)) -ACCESS_KEY_ID = os.environ.get('AWS_ACCESS_KEY_ID', 'SOME_ACCESS_KEY_ID') -SECRET_ACCESS_KEY = os.environ.get('AWS_SECRET_ACCESS_KEY', 'SOME_SECRET_ACCESS_KEY') +ACCESS_KEY_ID = os.environ.get('AWS_ACCESS_KEY_ID', None) +SECRET_ACCESS_KEY = os.environ.get('AWS_SECRET_ACCESS_KEY', None) SESSION_TOKEN = os.environ.get('AWS_SESSION_TOKEN', None) INVOKEID = str(uuid.uuid4()) From 7a36e3efc440366c314d9c413aa83dc88b2b730c Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Thu, 6 Aug 2020 12:50:15 -0400 Subject: [PATCH 211/271] Update dotnetcore2.1 Bootstrap to match production --- .../run/MockBootstraps/lib/Bootstrap.dll | Bin 147456 -> 147968 bytes .../run/MockBootstraps/lib/Bootstrap.pdb | Bin 44964 -> 45268 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/dotnetcore2.1/run/MockBootstraps/lib/Bootstrap.dll b/dotnetcore2.1/run/MockBootstraps/lib/Bootstrap.dll index 1e9e0796febf86a99471027dc5c25741e5b11b97..a437156cdc904e6ec6438e2ac03861485805b810 100644 GIT binary patch delta 46890 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 z zK={>w@M{5KY&m`D91aK@Zv?=Rfbh|PFs^c6rM!#Lbn&i1 zRKI4`bAAJtX5 zlH+s^E1oPl&hzxpsIVw(C*9q=2mVrek!qOtJ*d6kK-kyLG%wZ1#{Y`2&ENhO;U`-t zd+Lxj|7of<*G+9RwB<4wBqnc%obSWAYdC7FwWy4$R5G8Qx?%ff=FLpVm)pJ; z8zS!|zh8vc(hemGqrMb-LhpU;k#Iw~xpwAYo@c%}GgAAry?JJ4O#*H3VlHxv=Vj_E zMGlMSRe@&hthoG=1lllRIn_NF0J^s1G_D@c5d^*Sgo&d5&2)Q$`QWTKwEYR@vf1_a z3S@Jow&W*sz}!*1!t6UIpI4e!%t^Ktz@U5jn_K5Z+eaWAYHt{6K09X_oO;b22f1mk zH)<3Nn(G^6;|`I(o>68y&pp~Z3Fb?lD(&A1X8UkqhAKGV##;OYi62YDQFF}Y<6;)!uJ&Yz zP4`TKt7{lUm^UWTeC6_Pe35zK@?^+FZyT*5(d_AUg;Qf@hUr#uv*`&n=XuF(r?)fY zQExir@7|19k!GaL7L0opn`G7_y^h5XjwC@?{-JXa6T29SaMu`mco+L#@fFeE#ipl`R_$2e&1-&9f zgE@59NSH#swPzHytEqfa!!fx^%{6t~rgPGpyJ&t6x zCDpjrHp9p1ahAy?6_g@j#n|JgTas}n)J8BaZMpB}XWb)J@=TLi;JeSY(4(Mq9 zbVb)*@)*av73tt!QTbm5e>%|lOlac*QrVswFY?&#nq<~3YFF?F#z7iB=BpT`6Y&#TmvFAo|*w+PoXKWQKS%e1wBJgk_g{ zU#1|{jqbH)VCZ4xw59o*OE{<&w|XbRA|mSIfWW&4oapkTB7TT1%2iJpCzpATLhZW) zCm*_xrks2U4e6v3vPD_Mxxno~t+J|8>^he?(X(!M*j&@0_ZGUbqQtJN66&Ds zt{LV_OA_N#V6u8Hz+V9^JW zLGD7FhKa0cJ_*5m;_l?cQJ!}tO6$S?%z>DY-p$}Bmy>o3)RLhYQ!(*85KDE!4gy@| z404aK%N%B#Z!V8E{;x?yI&I!({*ta;Zo7ln1Z=+x(Fy?-a%j4!5M683=b`@k=%PMh zy6YjTAzjFs=2XMU7n@fYSskuK3EjBTmf+X5yV=97S<)?{H9SkrmyM+Km#EIGVU~Hi zmcf1bduS8!!1rAQF5>tMqhq=0Y>Y7mbj2{sw0ZBrFODdl!H+x{q9pXpiRyBD8G4bb z#f6o?vHbm(2`&){!jRfX7FTODaq}YbUvucL;~=tm)f$$Ieei!Oi_P6em1Rw?`B7t1 z8eN61bPSEu%&;^~wt*`HOtT=SdxyKo`*yCGyyCL7t3W<&M~i1EnA%^=mDZ@x6YVsc zE5&?ZMS+2Z(V<<`dmX|&+=jSTGIu$nnybM1NzJw9-xD@BeSxo085m48W@ zj&_hPr9$OO?}gJ*I+9a2<%Dzqu25Xo=CrHA!c-Z0i87cgu4kn`#(P)f`!lk8Mg`2pYV^2!(&3{> z>Mu*RGsx8qO^)0>>rj|T{X}Ak-*~ znaVD=SM%j4*R3bPe~(A)Oc$KRb3G!vZh$z^!GWhd5e25UIyIB`{;#oI+mJxWi4LJL zc5jc~=BU-fMaN^rZlJQnd*l1~YamaDRBu~6RNBl8-E$*(cJ!|6>+fbcT4_%d*z&r^ zgsbkki6TVmo{f}1i0;{hU)*Hjs5KU0Z4F;m8#)2UuXF1;9TU>Jt(1=0OxOS@Y0ZhvQ9mrcFGNxz%+q#l^uc zCC`SCS1ZkP8@SEHHo5WM$e~c>7=wplg3CiU<5|^&fbgP#@GSx1=L5p;2ZVp3FrIW~ zAf2c}gmJe_;cSGxC8WUndAhiQQoT12$i||1C=}B#1@1~2* zMFG~WB(ZK$damxM3eu+gkIXc0{qTTUN5-YCVV1f1n)cK0AfI^em+)!6WSU107A`z} z5_>AKDEnq)-J4p>=3zRe!H}tYr$|ygJR>%%o%bWCn$tsn^hGb48V@|=Y(c%39UY}cF#TLinR+;YDb707G%=Kd$S0~S!I*q?u{NmZg<^l#;==M zONph=ly~e{#_o>~`e!&c3qEx*gWux^Mr2(ow{FpJjb@m*%)`ZhXNTigzrTh_;pl|f3)tGQ;0 zOzR<&F5zWaT4=>>(_f7j!&?|pj=bdtc;m7o7Jfjv{3K3agtEC70ZPK4@pHvNzHoPnLKPBxuI(xH!4?+iOuy0 zQgvjs)jfL=u+T|39*)PPYp%x-@;nYf$EFVViCEmuXlw*(USkGrxW;G&ZCd_rq+|1@ z;OUq=LCVLYbSTpOife`91B^ZCk+Bp;GwN*KJU@-Fc|Z4i4z_uJ^i$_N zo0pIDCF%-JOzP6s=I!l^Z3}i?g*Ns)X?DLcDJBf1RX2=%P@u7>di=V1=ByhB8{=TY z8)vKG-0&2_o~Navi4@Nu?0Oa=eXKVe*;zc#0p_P-!Ejv-hxDP|w}cw+3^=6bDorjB zxK{Q-X_4=?(0)@F3g5X{g0=*Y|I94&abq0H)36okIW+IaQK%IPsk>wJ01`W9&qnxY z-X~hP_(;0kEL>i1;o>9dvRSx%<8$djIr&if+$Ma&M+X+hN7CgE^VXZ14D95c4G+QF zp}Af_u|sU$E&;Iu$h8Gto_ir|-aai{eB^qNT<#Mt#VuTXBwcpHMNe;=ZSBSeqeE+{ z5c|>G*e&%&A?VE|M@UAz&GRAxp}JkOi#C-7KVZJSaf&%;Q@2(xBN;pjU4n6K^}K4% z+7#FJ4W+6i)j`B2dj-Ku=I%`$3_6~X4`wyXGK#0+KIsKSYQXH_Xu$cnV;Q-V`bAP> z=5RE;N@_|HCyx}V;Vqb!jYKGYd&8p$r>a7{hOlQ(fZ}yh?1jJuXkkqTYKz-xoOh@Q zhhf5#iH4|98xF~FN*(MT*kB@%8tl0VKb~u4coT)!%J3}|UN6J9QuqcLzMaB1LWDNl zO&YuBPWrKVc9G#O3L7@h{RBH9@V3lYZ3)hNt=^H;S=jqI7SJ)GPrdq|)zAI2`umn@ z`DnHSDx81{tBj0JRe?ES9efQ`G_=BR-fiLX{e|^&Bvsn zvIz}_K6jlU6>f5cihf<6kftYThFio7@v~ef1LKK`oFa`%TRhBjVN2y$OHG_U)*>{^ zlklj^^%<#qsq{tlPLqZbF(=)Y?D`yJ*;&I_TdU^`!oE(#aQMP!^PDyByUpePk{ra~ z!3f5Z&7776l{jT|=oql++LEg<3UnboUzrzgn=j5xX(*CGY@X6PU>o*34Yy|PQc4p8 zlw2&HuZd`4pm8>dX2E4RBca!7(Be2G773k$6P|4>r_+;f5O%f2J(w>+vMMmFo^SnR z^?Vly-v{Jet$cJp()~N=0Wy zbeW5$_Gd1Rf_zo{iJY1{=V!C+9dX8zK-DiTlKhoua&wX+P#=-H)$?0mobv=(4SmpI zjo6O(XNm-icv&wUXPtjAan6w5)jJI{qI{1HaRyqL`O20Q!vm!Y)xqO7+Q#c%9HA>k zRzo2rj3qKKVYxZcedBq(coJ_BkM#WyP}omE?iWo+_B*S;pqY4;pV=r9r+#RXIqE$p|zyhA8-5l!dnBvbi~%|bB{mV zaG5!6TS5%I8e#Fwr_C3=o1iLU-nK10Z!Q%b)4jhDy1EMCGh2K%kp3T<+Wcc%T*?#- zPg;O6@#2sdot5cQ@Bk8UoQU_{R%PbjSyFcijc)b)4iC>C5Z=r&=!DkC-KpJWUn3 zXiI1o5N|7_XL(mun^$bl>@yw5nH}-pJNWM$TDarL`Q90Gr#0Y`Vf)W8)`-ci+Jf1!UEl3J16dkDzrbz2b1@Y z#!jJrf3(ip)syCOk@U{7aAp6}gInwDc_EwZ6waSa`Zr3+vy+fRb<%8H`?QW^ z%v6%Mitu|y-Hi;LEfRI@n@b6miT2Cgs&70K6@ZpKNv8we=zK724=tvzgX*9`UBn_61zSP-{!IaRhdKw_lqA_)Lehf9{!9G;81;Yyq64(=> zJBo$0h)%f?VV%7#lIt>@68!Y4BjcH(U=Q)E12-*g1cJUlcGNEFgh+uP^a|YLf zXjX|}pOq3tvsHqc2F@A0k;Sm<@HSrrdljCWK{pC|Mo=8P(Ga*xU^{k;n14QNJ!kMv zmdLgUO3)>37xXV>qg95nE9}yCpP*~%B|V7j8B0Y$Ymv$$!nU~&RU(@m7Dek{NVa|; zgOcgopNu8!xG)~6BjX4`jGYz9jA0)O+W}#l%rr4QE-oR@%a}zp)m3 zBHOVNqMO(pVS85CZf9O(AHjZbpB~zoZ)I1ARL+kk&#i2cu(cj=dgw+F_N4H14g zmLnA-f>jPB*KMp(B>L|nq8)6NpvQ}e?qN6;L18pxe~LZKZV+^DA=w^dH;W9TDv6$A zTZHYHi1!ZLD~Jyx+X?oJpuwYvzG5#?%NT4FYR}j=?67F4HEEJ?hlLF9aFXjc4EHji zp@M$Eaz;)1!Eo~YgJHJ{+qH;S3&Oq)G^>i}5;oRED@6NRd4!;^5wDh6d88m?ji`l{ zj-yi8E*T>UT^vW5z~w!Oa(IKtaPjCHs%lwZ-Y9Gb zt0ZB21kbSHM{~%wN>I0c4Ru6o1ig|+G>GF=0iLmwhzj{OLFqk+iaAao$Trm=EaMLg zyseI?f&4O0bb)rW8 zgP@6aq80on5OyQjP3~k@@n5u+$UbT)`o9+VyJi6nD`spkU&)g#tC7sEI*PcG_ZGCK zkf=#fC3?P=J*w!rdZMQk@nJ+ygZxEnNzd~EKATa?Uf{zlRPGBHRJH6yUhFg0vID#{ zfDZA>0D75E74hm(uUZV>Spl{;_#9!wO&)A-@diPs(UP_7ZN9+oX|Q+s6_!XO@hzHd zGy9M)6Rz`wD-pFtSr3Z%5jO(pWD7b4()Ac;O<`4|z0-KeonuMnPbS$nmt=A+$+_c6 z-qwxekz9j*ct?_Dy~h`FHf(YoWL59!koJzVAmaD5^K4h_8t^22u1A-_)F41Gif$-a{*wYMjdl$yEq6dqi$#VB;LN4nQQE~&W( zGP=WV$aEpUOnw64i$Z?oe6=u#CFZ>YO=;D82#*ut51n5j>=5C86+a_9RD@$ntVKC2 z7vUUMm|-vSw@pM*RpYZ0NS;fLC^D)V6WbG<5~}_poLozqx#LOR){W$mT#~#a$-W|7 z)|NYFa%f!*>XeXAa{pkeU(Y&{MoD{EhvZUt%Mg-xM3by4OfKREyG+2v zF7H6~RG$c6Ne@m+Lk4fvknBE{Cx39m%DT>-Gz$8CMU?ax!$^u+vPPuC*`6ZG>-#P= zdYq~9IhN#@@>perZ9IO$D<_#<9**wRqYafTKaONm+sjba`(i0v z6F&>#_U$~7dGU+PSr50J@y*m_7+^;rD;r-8zZ&7lL`x>Kk#V~aYfB~Nm4%K^W_xnT=VSC~RpWyxPXtvp_7n0YA#WCP znvlzcyhX_ALbiv@VVf`8gS-lbyjsW)F55E}s;p^bXeZ>C!Z1*T{}ka$5uPQ&E+JnN z@N*Ho^rWwF^eu z_W=h)5?kXwM#1_>du+O8DdDy}g{6&3F3;cPf(qufRier}169-hMv#l{aG**K;L zb=_MS0#%K*5hNc&n6uAC{a70c%Q`*Xmcnz|ev7l5yV@oqos}4RRgL$DlZ=F{Y_v=w z>5U@UGm_+IgGsuD{@SP-15hdqe+ol9#!_y*sV@@MQMlw0@9# zhJIX>%zC#iGQWN_*`NWMj4yu3Yt^(e*blU>f_!2sg?9+~;00INVE2!Ua(PC` z%;9-#QK)Bl3>&7+hYSuP`G}3=c{|BFf=PCAkbF_d1tAo+g_2wAF3hw%Gf6i{A?DGA`DB>T~&>S$mZd06kaN_ zNft#JIF&S0l1ZKu`jhP`+$iGSBVq;jB+Z!-BqwIms-Mbd-=e(WH4`ILR6zQ$!2x6*ZnKd{z&pxqne;BbxdkUk!PWbv>kETP;S( z%?OXO+z$Ct&^vL`LNv80I^t_g%~g#XMUM^=@>n8i?nA5Ov3Ib4#5NoM4uz#nPN7=~@$XRB z*@8g2qeCDa7#~1JSgSw`E9e$r44a)BNL$AS(y^`q6x6nNARX;cp!*6F^uzchf6;>a zj<*;4ZN|*bp#eCnTi1YycjP()Y+7!#JSd?01{L>?4oLK3hv;JL@n!9U67c8~w+f18 zjgK$3`eKkJ z)o##qMITlY9aF?b4c}LEK-BQ0qD7*HXBBM`Rr*d*jHuFYimpT@3}o0rW_Z7-g z^-(nFaX%Huv%@~(ctl`)=EL~ncI~ENM5@RFiKZ4OFqe<2aS-Q7YqmwOB$gy- zlif9LWN|Wc`KYG21IzZ&#Nv)D-$zr6Q&@k)hqH=PS)rnC<1Q~wV^e)}MR6y#!bi)B zU2KbwRu*?=&-iFfaXLHcqw9+^SWqV_=q7u&aT|->ELqSgzI(_pmdUa^8Du=ge~8Ls zU08!MF2D(I4!coN(C9MIHbr%%BUx8=ucDIdYEYOcEMIU#K)^gb?MQNCXa@l!B zA7B#d#v(e)RL+m*c&O`AG!&Ci9_z2D0kcjIHU`v{GQ1npPClEfjG>rzda~7uGBNG+ zV(WaAUTnIbZ(~%UiF&iWO8wcWGSCZ(rsYg#eb`Y&?ui3fU-o%3p~3pI-xUSda5jL2 zr^^zrL(>jqE=461r-AAfWx#U?+aYKLYtyU08{Z!tS6EPgTk%lVJA;y0!S0{94YXd- zEay(pZb2K^Z-eePFFYS-+=SxeCE-kpafVMEwYPXU+mt1VR)k`tdzs21R@8pDHe8&njAPOeW)Th10tb{VAvk z7u!C#hUCb?jH*jvWvq=N{E<&ksvzIxOfEH zAdr%YV58WrKFZKWvmKJ`SEYZajbZqzhiY%XG5z!6G3`)E*dbjeH~QN+0| z;(2_w!sHxwxsL`VcP#PxC?h$mWI>B~3&pI1a#KkUSnyg8{t*pI?p}fycobzM4=7ox zNEURN&xX^c5`QX#lFI@pBe}X{1?w%^X+xXDvbvJ1SavQ&-N2r7)`N^fdQ}5>H*h7( z#?uU<#ESZoRctzrCy72BI;&(go1HJo+vSRqt66C8W@;>1!{+sow02Bg$#v}Eev&2& z>M}@Dw~{rmjZ(C<%g&PP*`LNxGH$}<^k9j}s)sex-jbWx6h*DZK3%ej-Qc4aN^WLH zd^D^07WTW3UM<wlI7j zAtIKQd|9%M9ahw>+w(Y3XcGgbOB0(-e)G<2S&ax%h$5f|)`Y4)F9Stg0 zBCERu;q$qzSzNutrCTIn0VWoGo(BV{x6)dzcg5As76^k9u3Ko&Cvt4X`i8RjXlLC4}P!q#nYtA|t zZ&1~Cv8CnYf*neiB+x2F@8ikXF1B6KzS3I%PGR@6 z1B%kz(V)YE|5){#p-^V&Bq9MPZ zbx}kkem~1sL?iwM)?d+-K1rZLMOSx;)?P4Jg+MtlUSQSINZFUZz@C*hcD75O(id6E zSSs2ER$ft8a)5=3m0<(Bby%!^fX!F*xjwM;Ae%iwdfsIpSo#u^>%<0DA3U)15bIwj zZI?hVGb39p8ynaf$H3B8Fp#7%C1haft8Ck3N$-JPW4)(Hnh`p%^mP_hFX;s6Fe_0s zoeeB~gRN3D#5%C_2-~ly$TqO_DEm#(mnhmXmMxd54Qwe&^Cp`v7Of2|7KM2WCsQ(u zJ3()=J^v7l{WCqVDA3Ptl!n18Wj&4j|d$3mycR7z2p_t}0$l_<;y?9u6B zn%uy?M`=D}-DXJFRVd6yY^kC|WPhB!sOV|X$LyS?B4eSi)6E4CQT^c5jKTiC^vXzg5cys#Y|11YzE3iI0?cWf<4{tx_5=G<;d@DVFM|cmqliuRF6q(Qk1R}4pY#a!Ba2b=Va3+cpICyT zuPSzeIw_i+7_I%xx+q$b7{PvK`HF5DxV!Wh)?d**#=t$mB890{Pn7=3Dg~{y_pEvW zG*;QZ8t|F^8=I_%4Ln@>8=Ea?6MH}7?b7osLTpbrusYXArN6U6Mb8y}R{964^@=Kq zY5fAe>m=HQn+M}u=>_(zctvp&yEgIX(o1ahd@^EcNx4+Y`7MfWOAIcv@HZrh9jBFt zEg(;7(uguEcl#)|%*OAOWRK_`t=ai5Mf=l|@cz&qMMjTk1IDL(5$W%Uy&z~4s~(t8 zX6HwJ)TzwDPbg|LAh#@xf2ZhdQvWh1Pgy7mV;?#o1xMm;NhsQ|vPj;?M-h1EW2lcZ zG$WQ*sE9A5c8G}M)rul8y5o4Aq9-uA81(#8%AnqQX8 zf5L12)G==kT2_|IPcM-)yz8>EPCR8PksRHfxm%D-vop{4*(%C9^PxUkS(eU?X#x+~ zcjVkq=H?zr*u(4&a&!7ZfU$$jj{Qw0e^$^6R$qh%%={ZcGK(yJUQm;Ld1Vr8R&f(U zh1pb=#YahE8{0>)Y`#{}t7#E4vu|;2 zDa+*%iY$WKDf+$>*<6aEI}>$Nv_VjRMfrkCmdo1&d#b={WgMMO5$hEV7q)qdW(nI; zMQI}YYZUDf+25o{7xA_!x?XthR+J|^pIk21zfJb@!gx>_4+`TkMVka2m&9(V+kv8e ztLU1n9cA6PRW9PpM#;QPz+_zhP{dUMbtW%=B_l3wS6 z@v}ism-XVufkZT*dh>RxBz;@+LRnwFSW!XsYh?rZPC;_84dM?-vNsgISvH72CTN9y zdEtAY=asG7pwINd{E)H@9dx*KFh5FUh%tMjYzRLqU0Eq!03F6lnkf4wR+vnbbPdr8 z_I(La)EY@&<`F%tXnDoivSGacwPb6uCqzYSg}hKvR#XHlTKC~-a*k%t)sPCo~|eesnqgr&7S$4$|vv}6jkK^55Jj(8%suN674YkL}dN+)cOPTIuKTg;ynB)e%bPq~STc81gCyOCh&pr$e?^c?b16S2Xr=x5kY}t*`TK^z74{#8EGu8iPx)L|l`rGx ze6+UQ;O#b2xtmzixQeo?_>P+;6((;iU&&7jGTBT0wwE{Y_irH^jtAX&Yz=>9v!pJ4 zA1S|%SKKNoy6?X7^*r=8v2?6pFZ4KCej|6?E{(@~d|bYf-=L_j@0aB_^Bs3c+lQcA zdBhe;=X?B8eh05slt1=T`4&EJtF&!M&?~m`?-bpe8eXxDkKZP3i!#D1?&Pm*6YJjw z_FZ|KitYS8Vcft@gLd$<%5~_#q>8)wygOyY$4fd_+{1s`E-7|wcE!CsY6p?Yc6RPj zv5W6lv?F0a#r=HuPHEedUSG1CpT1kt2c7Fn9^meK#QJBlUpp68JjfUABI5?OXli-I zLwuE@2~%q-_VC?4s;}6~v+g6$6?i|}Q}H+-py&wqR6N0F2-;*nnYggxNj^_d6C04T z6f|E^kDS#NPw{7o!(yv6(9 zPv$23pwwvXEncW-G){=#;+2ZZl9KRhY>lGYB)l-n>jlxC_}z+k_+x@LvDb%wRPirg z4q+4Tsd&GcjHE^F12E~_gg~lkVcR@_j`MOsE7-zl zoqfz_3X)UH$NU!QX`fm7d&S3moAk8Lue=1>rECq|lh_HqN7=42x^v*u(unLM*eCq7 za;0*g#p6`8%` zK^GK_nEYME86NSFXc_yo5k#F7z1%wqGk;%2AN9uTv}bsgMAnFH;TL?SqKzYn8U<}) z&*W6K`hq{HsAll9`j@=T9?F6apMxsD;*$i)S^jH2L(nERy`-+>Yks5hysLjm<=1?d zqQe6sE59-LGYV%8YFqg&KQ2fn^F2Q;=uGgNxc&T|pOZHG>5dWXd;YVs8L<7pFDTnu z*nZ&pBUH3A!7gm)e&nqLHQ5WW!2if&m90H4?Vq@jsEpaTwtwO-W!#HF^E1y@wnNxn z{mgqx5`F&*AE0bhv|o6UA}ZQ1e1sw@+OK@9A}ZRie2O9}+HZW8p^(b<8=tR;%66VF zRYXNQ&sQs=qW#X-DWanN&TkQ9vI)+Pm4EPYd#U!a4gcg*1f2=)Tboh&C!Zy4_M+Mx z(EPn({W}xfP>^4FfiG3Yswn~d5Pbx zsHnCQ^pGOTfoV@Dq8ymEf3H~on(UMX*IrRZ%7Sa}2r^m3;Oa_EtA3Q~w1HJRCstat zCk4qGTDARxP(xhzR_zsOvzOwY$Ev-lYz=6&AngNXYeK69X`g~nf0>M~eWhHdq49O? zS4E%Wen{7>k5Tq#g0B}gr=k!+35vqPlJGZFG8Fxc40TQXKd%t)FdnMw+7M+MkXF%3 z*G3Q-Fn(V*vr^Y4Dx+oUJkV@Khl>`1<_n^N=9cT)M}qKl3!XO3`ZyJB1v`#ZY}zJ4 zO?Ik;O?yBQRl=qnR791qX&(u~{U6oBrv0RhR12Hd;R#B#$xh|AXKQc8abyv>cYMWhv|(l*2N#{)#@gU`MJ4%Ks-pIs$gSuRLAiot$K-1T%J!V)v|-KH z$^(qOv@yzfw>O635}BU8bc`Mh|b zwp`GeV0uC_NNW;wh_%B8&KRWKq;MkM@EN2%FI_pE^$!+_Ha};wO40;wO40Qlg3ZpK3@CTKqV33h$K68(`fCZXGHxE*{Qil zYiE^_dTq4!vm)xX(VF%w)$ov=dTq28u82BqwAM}%qY*S(bNgskX_Yol5p`j;_OK!v zK{eX*Ak_a5qaid_`N$(_$6T zC>f`v`e;q*c&)D_J6%5$v|=JdJ-eEqjS)sUMNH5p3R=l7@S~Lzv}uY?TF>LFRIj2n zwxgAGnjuK80F$)q1j$q;X{Pe5wY*a~N!zUGNYF=>leIeq87pz5_*vx??Ga_X*-CUk zkW6%nc2tl|bc*(#@|E$n$}Czj5jEX3L&~((aVDFRa6s7wnr5m5wu^?7)G|kin>{e-dB`w zBRZ|6%-R?562jH|2R1`?7Mn z)=$wy>$jCNv~h}ha^uU&nc5_UuVB+XOPeN0CNo>}DBHh-zO9_C8G>YnbF}LMJm+Yp z^32vMTFue6Dax=Mt(>FXtLXNi^L(zhS5bofs8Q+B_6w95&eL8|#!oCuE9YrR`>FQL zHkY84>>bO`upJU43**(^5+psn+K0+>6~9pF)jm~Zwdf-nv~LwH2+~Iw^R+(}?y-iA zSfE*7VE8AKS*V2yTFFeyijaj`7eO+^D=^FBgUTNNEIVZUv%Y-^=}$~rH{AZSJknjHQ%2JK>C1sPex(~FD3ZoxdQ`mT z9Q;N7&z1dqBgksXngz9xJNe!R5Qh{Z(-J)@1D@(mqROhKa z+p*AJrb53QSJvnC{&G$flf&TNBJfhGNWc+Xgh@Ja%C1{TO4wy={ZsFjf?XSVSq z|HoLye~DIBM+uSCLZxiU<%({?++Jr zpzt5*)N$WITJiB2`2@B~lbiIwu*svUJR}r;UmNU%XKC_rIZ=> zKuh4ep)`_#g{U$_!}cFXh7-d?_9El^{vSy({{O#aMqhhywq5jVs0ja6YRp zH1<`0vXVw))$ml~Ut=w4mz>k$ZQB4__2^rYCPl_Zi7Lj%2D1Si%eF7J)$rY6JHC5!99Z6w) zGK6fli4i6>--+q2c~lwyoM>PM+k5`Ak4z}gQ);ODG?6_<1~Rs?@tA^wn3?2H$5&7q z|FSIqy}W@Vd4U+uff@fj9M~#>1(k)9ElOeBh7(v=h-kDs#n31aJ(QPE`e9=H$Ktxs z@S!PbWaQ3bRpg>hBsEsriL9B3g}+@Cpdn8yqtu%9m*KYE!VaTrF#hRBW7idvStj~g zUrOkE$mR%(V70KNLL&!Yg}6{@Q{bF|iy6x^Ar`pCw|K8K{@DLZC*5KNKtH-}RSc zJZY>$9i@i2H2!J9<&25i%gI%SweziSqXPWh`p=KsH{=&$Bbf&L!h zk)foQm+L`voW^JpMdMGSrjClDtNeC^@wXVK;*Ykoosf1$*Lrg-8TTd85jLzH82|na zQ_Jnq{~Ns_cRv0Nq}*`+{~-e_Akz=r6RSOk-2cqz-o%b4{U!(N9d*wi%Q;^5*WV`VJ^_>V0fDeV& zi0}sXI=<%J#hlT3ko0NiE|!9ic6YIT_@Zl#*zk4^6sk?(|l8p5Or=2X`^A$3-y#g#2!HIVoVlA@OF;C~-WVOwkW z;jfObpS%x$4cQs}Hv5v%C!9|48dz`P>1NZr{K*F6+i#fHAh`(qvBKT>znhFgZH90+ zoQCicgiE1eHKQQ+c9{UVZSrE?)AB*R!N-fn94|7c7jf%_|5GA^%Po}Vcu~s|QS`+^ zQ-aD+nzOPO^V#sk!k` z&ynV{qH7L{uIb6?aJ#4FbF`wdn3s?FQd_}a?);s$n16zAU3XbhN`BEEMV3SOF3UaR zE@+2Ea_@+wmtt5g=EsHgv`F-vNOS|g3y0!|h5jeu|EKV`avA|Y34JK1?u!z&4~2dR z4>kDiUI#4ggrS`ZlVOkLfa?#-Q|w9U`@T;QUt(m#IAdEa^G0`oGA z;1v+O0-^|liefT~lI9J;3o6Mdq!fxGX_PiIUP=>73!5x0Oe-t9Xcl=%;h&an)>i6n zn%hE}Y1(!DTW+@ff6p_vA9wrjj=taXyw5r3InR4;b2*3i)sJ$T)51p{o#vBu@<3`| zQ6u-^kMn9E7qhuCJzG+j%wzCQ)C`lutP|}E4 zC*Q!A1?;wqBKv#e_UfgQ|GckM(p_mvC04ui3NEHX(j96lBrS0*mNZhAGcRx-uH`h} zvz(>*)B0JiYLE8Fwv5nRDMKvz;8=?noMtHp%PmFVLQAbQGLMN`S=ILd7@2nfUHi5o z-%3Q#th7TuHT*%#ZZ=JQyUtR_avf)*Yu#?i(o%8rnJle1Gai{IPTXT5{Q;yT7k5k2 z@0NG;K4h`$h3W6Zp~Cb}Sw6$O$ow1gXO6Y{j5_wEj-9Au@5l*Ez4|V%Y1s9B`17^h za(!%!u|Xb)q5@`POVCHMpj(RZk!&hRH%=mbUvT2sfkuKpG;T2Tm_MMY80!OX&G#8; z`eP~g8TnePl-0&Y#2(|TUu*cXw4NP-Be2MwT{w>aWID7>%?R>2FSHg9i?Uixxf8fi>hn%W=N&Xy%Nbna*?*J=IaG#Ub3o9p$oJnHRXJIj}} z4&!BjZNA=hc&^POeV@mSwq24mxz^~`US7!5+b?s$XTch1$kQ~XV|^@5{XGwDuf8Z< zjlz~Bey8$z{-=Sr-bOX?oXrc3OI*VmY^aiV+pe*-D9iz*X&!XZwu{}`CAa%9=g(K) zgjwuOTuc+*B%;yAb$Ma-fKG_l3h*AGT*a%AZr zcirmPtbW8q+kz&3$w7l{mm?R`)DcGuruoy3b>IM>ZHIdJmdLOjDlW1^*eEr-^8v9# zbuFF(&CC6~VIDbSU;w05#T{zJ^p#;*%7Y2JkX`Y}`^M}Jy8uIPBmGM6`(e|d$E}|g zRW(_V;pK8Ergo2{#Xr)-fKQaAhkN9cSda60c_b}t*61Vir-qku0Y&C-GjGo1OCjEbNcl0@4C$mZJ4Wk9@4`xU)vRH|z@9zRQHGl3Klox}cvJ z{;l(Z?n@r^gOghQN9P6bAI=TZ6-!<0wj!JPy}r1w8~ib>4KoH@)wh#5U%i;$-MpYj zM)!nfhP4k^VeJo1#?+h4@6|HzNN`>BIP;{OnLW|Gs=w?l0XyTpUs|H0%T1aC7MgYo z=6~ukwK*%yj)EU$Xjn^)DRMTtUc_vUOi6D-HO-DlJy)(~}y-cB|udON8_8xNCP zd0cE~?qUnu!5Z5>mbbD@?+DI_6i$=P?1FB10QXBy9yU*2-C zXSY>!vflnk#6d;xfyd$33lXOkz5AVojCXO~gyF&MNoW+%O1nqWn)+qFz9Ri1x~E5` zjr#)no?|b8w2tnPv;H?%#h?ze@PBy zOL8bjl0&(Y96B!j;3skgcv?OHHp_>=v$766FE@afXgeAiR!OliaH1OR+dN;J2Do6h3XM-vZ@EC zskb9-Vz&ALvS0lOx!$M9_pRz0RNItvn_|0a55B5;g1giZ@J%%u+^43vHPNWfK|ZT4 zfag_8D^pxji@@*He(2(@2E3&G6+fC^)t=2W zg-d@GnkYTC4Qfaq(8d%o`d~0eFNG#o4}v%A8^KZfMjwI-eKR;ue-^A}`7VxL%=EK< zxlZl9l4EQ27m;$U{wi3fzYf;xd%&&CZTbPo+d2KKtl6a>gyv2C2zZd?!#eenqoB_w zKGZ)z#Bu!?_z6dx=FH73pVg@+pVvP@>?Qp#;CK4xxSDa6FTp}f`?jb|%UE!l#SfNP z4uIjt70_io&<-_Wgts?ETjLEd#yH-=6!Au6j48Spb7M@ONHqQwhmK=pC!pgPXTc2P zPn}HB-*~yRDYA`>E~q-=9GGiVbT!4zMpQRbj579vSL(zX<$BO$J)jux6q~joZOm z;~8+R@i|y$6!kU5W5!`{qfyw;6!peO;8x@2{^+(w0Nid|246MiWTD#{pMY-~`2)~x zjgw%bF>4?mePFzjZHmLjx1aNYU?xZIkb*InF!Nv0QW#FkXhOSBT{U9?U+X1oA+ZhYBA>+#)K$0k#19K>ICUXmOb0oz! zFyyS21`6TBsOPGFU zy^n)NW;0Wa=K`2HOh2=p*~n~WiULl_%wd)={mgo%DC9KE9A*jA&#W)xM9q96CU8<_ z4zq;mXNrj&%gkYxFq&J? zM8w}CVx%j0#gvQj`*uBU8u$$E6!?P36EBII#jE&rd?)Vw_ZEJ$K8&Zr{24y?oe?!2 z&*U0N+}w%y?lhvCIXHvld3}gmrVx*(6Fs-K1^;VapZHIiFBMbf%h6;Y3zfUI(p>P=43aOV5}!#P35Krh=yWPRr16%LoH1@3IA=1+>EnsLN{B`- z@wGuyz>uBOzErx(W5pB^HflPUoI>*NGru;7Qm#%d15b3P;xDojlV_Gg4!N?1>)`uI zWT7yTcr1?iZV@q&>r!u%)MvVJ6w^pJ&9T^|5XbRo^&&ctnLYr%)}Ddp3NkAhZaM&hGBoU}_K z)q3VMW)ia~ne<~=u4Flxv%TJ(^bXcwFM~TrQbhMw#8q4q3%b8o5Fb6wjUq;Dx7T+rTl7OdSfY`#J zhC;3dl~|*OL4FX#R!fx!c`b;|4Qd4Bhe3rOeQtrg9#rB{H5zgd#1=3$7V-vAiN{qw zMmK6?mossPK)u2=X(a63?lrkhg)@`GlKBV5b47 z#EWV=~naRcpZa z)kEOVY908idIS{OdN522g5lZ*(5XE^Mon!K7@<7{y0pz;l(q$o)}8@dYtMo0wCBN& z+KXVk_7d1hdj(9=c7Vy+YhVxUbudM10DEe?!Cu;4FhhF_%+wBmeYGZVp!T-Zv98%s zG+gT-hfDcNaA>S7^Wo`$)_&G1>!a3Ztw*dMTP?OU+a%jO+fG{tdr$ii`z`ipN1S7d zW2R$|#L`tO5`eiYyyR=b!T__iypZ~-@_3P=~v<@Vx7LGfWoJACq2|l zZr1OLrErUW=~fD#(Tn)}IsGX-EG%P^!d*FZKR!78%gf4})cA2)tWR{^jm3J}^Kqlj z_vqN)D|=1|>9CWD1iTVmjnNe9(A=Q=f6|TV7)p0zA+?jQs!oL?X0NVmdN1H7|uS8cdwn&oh#zIEodjCD|;f&ww=3#>s=2Q`ZTNOtL-&kNA z9vql2+T-I_dwlVZ!Oe$b!~`4@aZJK7S;S&9L7bQ(y5j40H>_lL!}GF|@BsE?F&#$< z?pp1|F+=nfGjWunpOwMdZLl;8R%XKry;_T@E(+U=#-Vi4?S;2(Dk(Nzk9hKW#FN4s z>>e+>`$Fl~NiQcmp+fm9^{KAo>MzD|b-{>K>DFjfWNm{ZTGd-4)egwJtz*^gHY{)9 zywLs#;x?)M_V-oKut@bnSR3_P*d~<{{;OIU9<5G=hiRw6BUOYmOe?a^)z>=b>UB6C zcg}U-7vjHYuZ20q`i7J7GA`Qcsjl|UoLv_DHd9vGW|dV>A6DU=*D$58{4C6!S5`f2 z?!xk_%DHpO=2lPiR+TsO86wkNu0lMl)>~dZys|2ky}>(P{-Sym)GVkjo6{?|+&gP- z<$~(+nG1U5md(JE<40A_3JC?(mGc&Pt7pz`xNU;GS2^b2SyojuVs3R=Rm0gy^1L2i zId6JiRhbux!r2W+rpX4UPB|Oyxm{*ht;4G-=Zr3&+wj7C8Kv9UG`t^>{f!1~r5qNaWla~slGCy^ zKF5zm)8gjV;B@Sq7={~zPrxVoJbaoT0}9-g+AGSjo1t9HMHh%iSEv+K2&>T<$`F=< zGsK;Un*}KpQwhBnDXPJlNY{)1iCYR`We!qRB7HS<@ng_qt8h9K$}*Vxt&l}r9f!(YY}01xrN*KAIc5EK`k-^K~;+^MDT8l?1kV;i`?7#kOf~} z0!NH!w|}=Z9r02|y94hB-~C+X$d7`yGxCbu(D3USIZWQvU&aY55~j#j!iZNg#y!rC z#Mvqi_oA~SB15&p4f9l-G@;%gqa(|e+rQbJ7)__arC-P%gMJCePvvIhQt9^Za5-;0 zvE6uLzwyNJ+ez@NFXUs=8C-Tw4)8^HwMLrsijMSOl`6zY|JV5M_P=Q}O}owJ_OCZW z5m-+`gcEb5Gy$7w2#qpBRwh-!(pV!NPJM5>Qoj**Ll$1cbknI9bem8=*NgIocNbO&NALZKAQrS1tfs}^Ay7HhG!w%Xi*mGBDH z7z1DO-TqpX#QsizztX+5DERYNvWrX%#$S|q2xecDDanbgV6~W9agc@6id8cV!DjU%fHHHwXjT>=>u zse(^@BjXZRP?fDhmOvP6{w5=%I}pjHqTn;CCfM?gOzpAix2jr0!U$yhr?ASj>h3^W zBy|T|?m$#<;J5N2*+2N+x3XQ=Z0?oFbG>`El59Jd+xv*gCv`#lchY099MdrAJDHXx zbAqdq@YyLb*d|$}`x12nbwW6;8L<`!ffY0umY_$_NfZqLZpk(OlvYv1dP;=|lhq@r z8~!svjBZ2*)>5hr&2T5;=#8U4DN1aV4V}|u!4650zBKqzvg+WPP4YZKHQ}z{wPe-S z@RMBI(7uNnt=kg0g9H+Tm8q(|j0rxFsz%AghCip`^Qg}vWUOYhqR*kqmRt`56q@K@ zRRY+4xAp%31KZp` delta 46140 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 Date: Tue, 11 Aug 2020 19:52:38 -0400 Subject: [PATCH 212/271] Update Go to 1.15 --- base/dump-go1x/go.mod | 2 +- examples/go1.x/go.mod | 2 +- go1.x/build/Dockerfile | 2 +- go1.x/run/go.mod | 2 +- provided/run/go.mod | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/base/dump-go1x/go.mod b/base/dump-go1x/go.mod index 54262d7d..1dccccbe 100644 --- a/base/dump-go1x/go.mod +++ b/base/dump-go1x/go.mod @@ -5,4 +5,4 @@ require ( github.com/aws/aws-sdk-go-v2 v0.17.0 ) -go 1.14 +go 1.15 diff --git a/examples/go1.x/go.mod b/examples/go1.x/go.mod index 258e8af4..bcc119a6 100644 --- a/examples/go1.x/go.mod +++ b/examples/go1.x/go.mod @@ -2,4 +2,4 @@ module handler require github.com/aws/aws-lambda-go v1.13.3 -go 1.14 +go 1.15 diff --git a/go1.x/build/Dockerfile b/go1.x/build/Dockerfile index d2bcafb2..1066c7b2 100644 --- a/go1.x/build/Dockerfile +++ b/go1.x/build/Dockerfile @@ -1,7 +1,7 @@ FROM lambci/lambda-base:build # https://golang.org/doc/devel/release.html -ENV GOLANG_VERSION=1.14.4 \ +ENV GOLANG_VERSION=1.15 \ GOPATH=/go \ PATH=/go/bin:/usr/local/go/bin:$PATH \ AWS_EXECUTION_ENV=AWS_Lambda_go1.x diff --git a/go1.x/run/go.mod b/go1.x/run/go.mod index 21bd0b6d..182b72af 100644 --- a/go1.x/run/go.mod +++ b/go1.x/run/go.mod @@ -2,4 +2,4 @@ module aws-lambda-mock require github.com/aws/aws-lambda-go v1.13.3 -go 1.14 +go 1.15 diff --git a/provided/run/go.mod b/provided/run/go.mod index d5e3372d..28c72849 100644 --- a/provided/run/go.mod +++ b/provided/run/go.mod @@ -6,4 +6,4 @@ require ( github.com/rjeczalik/notify v0.9.2 ) -go 1.14 +go 1.15 From 7c8130ae492b60fc20dca90e3068f39f4ad6540d Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Tue, 11 Aug 2020 19:52:51 -0400 Subject: [PATCH 213/271] Update gradle to 6.6 --- java11/build/Dockerfile | 4 ++-- java8/build/Dockerfile | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/java11/build/Dockerfile b/java11/build/Dockerfile index 72e3053f..bda58339 100644 --- a/java11/build/Dockerfile +++ b/java11/build/Dockerfile @@ -6,12 +6,12 @@ ENV PATH=/var/lang/bin:$PATH \ RUN rm -rf /var/runtime /var/lang /var/rapid && \ curl https://lambci.s3.amazonaws.com/fs/java11.tgz | tar -zx -C / && \ - mkdir /usr/local/gradle && curl -L -o gradle.zip https://services.gradle.org/distributions/gradle-6.5.1-bin.zip && \ + mkdir /usr/local/gradle && curl -L -o gradle.zip https://services.gradle.org/distributions/gradle-6.6-bin.zip && \ unzip -d /usr/local/gradle gradle.zip && rm gradle.zip && mkdir /usr/local/maven && \ curl -L http://mirror.cc.columbia.edu/pub/software/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz | \ tar -zx -C /usr/local/maven -ENV PATH="/usr/local/gradle/gradle-6.5.1/bin:/usr/local/maven/apache-maven-3.6.3/bin:${PATH}" +ENV PATH="/usr/local/gradle/gradle-6.6/bin:/usr/local/maven/apache-maven-3.6.3/bin:${PATH}" # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ diff --git a/java8/build/Dockerfile b/java8/build/Dockerfile index a63cc78e..1e9bfc69 100644 --- a/java8/build/Dockerfile +++ b/java8/build/Dockerfile @@ -7,12 +7,12 @@ WORKDIR / RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/java8.tgz | tar -zx -C / && \ yum install -y java-1.8.0-openjdk-devel && \ - mkdir /usr/local/gradle && curl -L -o gradle.zip https://services.gradle.org/distributions/gradle-6.5.1-bin.zip && \ + mkdir /usr/local/gradle && curl -L -o gradle.zip https://services.gradle.org/distributions/gradle-6.6-bin.zip && \ unzip -d /usr/local/gradle gradle.zip && rm gradle.zip && mkdir /usr/local/maven && \ curl -L http://mirror.cc.columbia.edu/pub/software/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz | \ tar -zx -C /usr/local/maven -ENV PATH="/usr/local/gradle/gradle-6.5.1/bin:/usr/local/maven/apache-maven-3.6.3/bin:${PATH}" +ENV PATH="/usr/local/gradle/gradle-6.6/bin:/usr/local/maven/apache-maven-3.6.3/bin:${PATH}" # Add these as a separate layer as they get updated frequently # The pipx workaround is due to https://github.com/pipxproject/pipx/issues/218 From 9b895e3a7da477f6415b5e57efb4fca271b18666 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Tue, 11 Aug 2020 20:33:15 -0400 Subject: [PATCH 214/271] Update dotnetcore3.1 SDK to 3.1.401 --- dotnetcore3.1/build/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dotnetcore3.1/build/Dockerfile b/dotnetcore3.1/build/Dockerfile index 3a5613a4..dcee793e 100644 --- a/dotnetcore3.1/build/Dockerfile +++ b/dotnetcore3.1/build/Dockerfile @@ -6,7 +6,7 @@ ENV DOTNET_ROOT=/var/lang/bin ENV PATH=/root/.dotnet/tools:$DOTNET_ROOT:$PATH \ LD_LIBRARY_PATH=/var/lang/lib:$LD_LIBRARY_PATH \ AWS_EXECUTION_ENV=AWS_Lambda_dotnetcore3.1 \ - DOTNET_SDK_VERSION=3.1.302 \ + DOTNET_SDK_VERSION=3.1.401 \ DOTNET_CLI_TELEMETRY_OPTOUT=1 \ NUGET_XMLDOC_MODE=skip From 2ee33b57126925a8ab4f584952c033adcb82fa3b Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Wed, 12 Aug 2020 15:39:57 -0400 Subject: [PATCH 215/271] Add java8.al2 runtime --- .gitignore | 2 + README.md | 2 + .../org.eclipse.buildship.core.prefs | 2 +- base/dump-java8al2/.classpath | 12 +++ base/dump-java8al2/.project | 23 +++++ .../org.eclipse.buildship.core.prefs | 13 +++ .../org.eclipse.core.resources.prefs | 2 + .../.settings/org.eclipse.jdt.core.prefs | 8 ++ base/dump-java8al2/build.gradle | 28 ++++++ .../java/org/lambci/lambda/DumpJava8.java | 88 +++++++++++++++++++ base/publish-all.sh | 2 +- base/tag-all.sh | 2 +- base/test-all.sh | 1 + docker-lambda.code-workspace | 3 + .../org.eclipse.buildship.core.prefs | 2 +- java8.al2/build/Dockerfile | 20 +++++ java8.al2/run/Dockerfile | 21 +++++ 17 files changed, 227 insertions(+), 4 deletions(-) create mode 100644 base/dump-java8al2/.classpath create mode 100644 base/dump-java8al2/.project create mode 100644 base/dump-java8al2/.settings/org.eclipse.buildship.core.prefs create mode 100644 base/dump-java8al2/.settings/org.eclipse.core.resources.prefs create mode 100644 base/dump-java8al2/.settings/org.eclipse.jdt.core.prefs create mode 100644 base/dump-java8al2/build.gradle create mode 100644 base/dump-java8al2/src/main/java/org/lambci/lambda/DumpJava8.java create mode 100644 java8.al2/build/Dockerfile create mode 100644 java8.al2/run/Dockerfile diff --git a/.gitignore b/.gitignore index 4525d854..4a897231 100644 --- a/.gitignore +++ b/.gitignore @@ -8,6 +8,8 @@ base/diff-2 base/tar-find-layer/layer.zip base/dump-java8/bin base/dump-java8/build +base/dump-java8al2/bin +base/dump-java8al2/build base/dump-java11/bin base/dump-java11/build base/dump-dotnetcore20/bin diff --git a/README.md b/README.md index ce2b5d1a..5e0dc318 100644 --- a/README.md +++ b/README.md @@ -310,6 +310,7 @@ These follow the Lambda runtime names: - `ruby2.5` - `ruby2.7` - `java8` + - `java8.al2` - `java11` - `go1.x` - `dotnetcore2.0` @@ -328,6 +329,7 @@ These follow the Lambda runtime names: - `build-ruby2.5` - `build-ruby2.7` - `build-java8` + - `build-java8.al2` - `build-java11` - `build-go1.x` - `build-dotnetcore2.0` diff --git a/base/dump-java8/.settings/org.eclipse.buildship.core.prefs b/base/dump-java8/.settings/org.eclipse.buildship.core.prefs index 39c6821c..90865998 100644 --- a/base/dump-java8/.settings/org.eclipse.buildship.core.prefs +++ b/base/dump-java8/.settings/org.eclipse.buildship.core.prefs @@ -1,7 +1,7 @@ arguments= auto.sync=false build.scans.enabled=false -connection.gradle.distribution=GRADLE_DISTRIBUTION(VERSION(6.0-20191016123526+0000)) +connection.gradle.distribution=GRADLE_DISTRIBUTION(VERSION(6.3)) connection.project.dir= eclipse.preferences.version=1 gradle.user.home= diff --git a/base/dump-java8al2/.classpath b/base/dump-java8al2/.classpath new file mode 100644 index 00000000..4857be40 --- /dev/null +++ b/base/dump-java8al2/.classpath @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/base/dump-java8al2/.project b/base/dump-java8al2/.project new file mode 100644 index 00000000..0e30deb7 --- /dev/null +++ b/base/dump-java8al2/.project @@ -0,0 +1,23 @@ + + + dump-java8 + + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.buildship.core.gradleprojectbuilder + + + + + + org.eclipse.jdt.core.javanature + org.eclipse.buildship.core.gradleprojectnature + + diff --git a/base/dump-java8al2/.settings/org.eclipse.buildship.core.prefs b/base/dump-java8al2/.settings/org.eclipse.buildship.core.prefs new file mode 100644 index 00000000..90865998 --- /dev/null +++ b/base/dump-java8al2/.settings/org.eclipse.buildship.core.prefs @@ -0,0 +1,13 @@ +arguments= +auto.sync=false +build.scans.enabled=false +connection.gradle.distribution=GRADLE_DISTRIBUTION(VERSION(6.3)) +connection.project.dir= +eclipse.preferences.version=1 +gradle.user.home= +java.home= +jvm.arguments= +offline.mode=false +override.workspace.settings=true +show.console.view=true +show.executions.view=true diff --git a/base/dump-java8al2/.settings/org.eclipse.core.resources.prefs b/base/dump-java8al2/.settings/org.eclipse.core.resources.prefs new file mode 100644 index 00000000..2b763404 --- /dev/null +++ b/base/dump-java8al2/.settings/org.eclipse.core.resources.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +encoding//src/main/java=UTF-8 diff --git a/base/dump-java8al2/.settings/org.eclipse.jdt.core.prefs b/base/dump-java8al2/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 00000000..2f5cc74c --- /dev/null +++ b/base/dump-java8al2/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,8 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 +org.eclipse.jdt.core.compiler.compliance=1.8 +org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled +org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning +org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=ignore +org.eclipse.jdt.core.compiler.release=disabled +org.eclipse.jdt.core.compiler.source=1.8 diff --git a/base/dump-java8al2/build.gradle b/base/dump-java8al2/build.gradle new file mode 100644 index 00000000..77e5fb16 --- /dev/null +++ b/base/dump-java8al2/build.gradle @@ -0,0 +1,28 @@ +apply plugin: 'java' + +sourceCompatibility = '1.8' +targetCompatibility = '1.8' + +repositories { + mavenCentral() +} + +dependencies { + implementation ( + 'com.amazonaws:aws-lambda-java-core:1.2.0', + 'com.amazonaws:aws-lambda-java-events:2.2.7', + 'com.amazonaws:aws-java-sdk-s3:1.11.681' + ) +} + +task buildZip(type: Zip) { + from compileJava + from processResources + into('lib') { + from configurations.runtimeClasspath + } +} + +build.dependsOn buildZip + +// docker run --rm -v "$PWD":/app -w /app gradle:jdk8 gradle build diff --git a/base/dump-java8al2/src/main/java/org/lambci/lambda/DumpJava8.java b/base/dump-java8al2/src/main/java/org/lambci/lambda/DumpJava8.java new file mode 100644 index 00000000..f842aa4a --- /dev/null +++ b/base/dump-java8al2/src/main/java/org/lambci/lambda/DumpJava8.java @@ -0,0 +1,88 @@ +package org.lambci.lambda; + +import java.io.File; +import java.io.IOException; +import java.lang.InterruptedException; +import java.lang.management.ManagementFactory; +import java.nio.file.Files; +import java.nio.file.Paths; +import java.util.Map; +import java.util.Scanner; + +import com.amazonaws.services.lambda.runtime.Context; +import com.amazonaws.services.lambda.runtime.RequestHandler; +import com.amazonaws.services.s3.AmazonS3; +import com.amazonaws.services.s3.AmazonS3ClientBuilder; +import com.amazonaws.services.s3.model.CannedAccessControlList; +import com.amazonaws.services.s3.model.PutObjectRequest; +import com.amazonaws.services.s3.model.PutObjectResult; + +public class DumpJava8 implements RequestHandler { + + @Override + public PutObjectResult handleRequest(Object input, Context context) { + String filename = "java8.al2.tgz"; + String cmd = "tar -cpzf /tmp/" + filename + " --numeric-owner --ignore-failed-read /var/runtime /var/lang"; + AmazonS3 s3client = AmazonS3ClientBuilder.standard().withRegion("us-east-1").build(); + + System.out.println(ManagementFactory.getRuntimeMXBean().getInputArguments().toString()); + System.out.println(System.getProperty("sun.java.command")); + System.out.println(System.getProperty("java.home")); + System.out.println(System.getProperty("java.library.path")); + System.out.println(System.getProperty("java.class.path")); + System.out.println(System.getProperty("user.dir")); + System.out.println(System.getProperty("user.home")); + System.out.println(System.getProperty("user.name")); + System.out.println(new File(".").getAbsolutePath()); + Map env = System.getenv(); + for (String envName : env.keySet()) { + System.out.println(envName + "=" + env.get(envName)); + } + + try { + int pid = Integer.parseInt(new File("/proc/self").getCanonicalFile().getName()); + + System.out.println("Parent cmdline:"); + System.out.println(new String(Files.readAllBytes(Paths.get("/proc/1/cmdline"))).replace("\0", " ")); + + System.out.println("Parent env:"); + runShell("xargs --null --max-args=1 < /proc/1/environ"); + + System.out.println("This cmdline:"); + System.out.println(new String(Files.readAllBytes(Paths.get("/proc/" + pid + "/cmdline"))).replace("\0", " ")); + + System.out.println("This env:"); + runShell("xargs --null --max-args=1 < /proc/" + pid + "/environ"); + + if (runShell(cmd) != 0) { + return null; + } + + System.out.println("Zipping done! Uploading..."); + + return s3client.putObject(new PutObjectRequest("lambci", "fs/" + filename, new File("/tmp/" + filename)) + .withCannedAcl(CannedAccessControlList.PublicRead)); + } catch (Exception e) { + throw new RuntimeException(e); + } + } + + public static int runShell(String cmd) throws IOException, InterruptedException { + Process process = Runtime.getRuntime().exec(new String[] { "sh", "-c", cmd }); + + try (Scanner stdoutScanner = new Scanner(process.getInputStream()); + Scanner stderrScanner = new Scanner(process.getErrorStream())) { + // Echo all stdout first + while (stdoutScanner.hasNextLine()) { + System.out.println(stdoutScanner.nextLine()); + } + // Then echo stderr + while (stderrScanner.hasNextLine()) { + System.err.println(stderrScanner.nextLine()); + } + } + + process.waitFor(); + return process.exitValue(); + } +} diff --git a/base/publish-all.sh b/base/publish-all.sh index 53bfce6b..e1580b82 100755 --- a/base/publish-all.sh +++ b/base/publish-all.sh @@ -1,6 +1,6 @@ #!/bin/bash -RUNTIMES="provided go1.x nodejs4.3 nodejs6.10 nodejs8.10 python2.7 python3.6 python3.7 ruby2.5 java8 dotnetcore2.0 dotnetcore2.1 nodejs10.x nodejs12.x python3.8 ruby2.7 java11 dotnetcore3.1" +RUNTIMES="provided go1.x nodejs4.3 nodejs6.10 nodejs8.10 python2.7 python3.6 python3.7 ruby2.5 java8 dotnetcore2.0 dotnetcore2.1 nodejs10.x nodejs12.x python3.8 ruby2.7 java8.al2 java11 dotnetcore3.1" echo -n "Enter repository passphrase: " read -s DOCKER_CONTENT_TRUST_REPOSITORY_PASSPHRASE diff --git a/base/tag-all.sh b/base/tag-all.sh index 8b9c0827..c68f7292 100755 --- a/base/tag-all.sh +++ b/base/tag-all.sh @@ -1,6 +1,6 @@ #!/bin/bash -RUNTIMES="provided go1.x nodejs4.3 nodejs6.10 nodejs8.10 python2.7 python3.6 python3.7 ruby2.5 java8 dotnetcore2.0 dotnetcore2.1 nodejs10.x nodejs12.x python3.8 ruby2.7 java11 dotnetcore3.1" +RUNTIMES="provided go1.x nodejs4.3 nodejs6.10 nodejs8.10 python2.7 python3.6 python3.7 ruby2.5 java8 dotnetcore2.0 dotnetcore2.1 nodejs10.x nodejs12.x python3.8 ruby2.7 java8.al2 java11 dotnetcore3.1" git tag -f latest diff --git a/base/test-all.sh b/base/test-all.sh index aa0e1a8c..044cd6ee 100755 --- a/base/test-all.sh +++ b/base/test-all.sh @@ -36,6 +36,7 @@ docker run --rm -v "$PWD":/var/task lambci/lambda:ruby2.7 lambda_function.lambda cd ${EXAMPLES_DIR}/java docker run --rm -v "$PWD":/app -w /app lambci/lambda:build-java8 gradle build docker run --rm -v "$PWD/build/docker":/var/task lambci/lambda:java8 org.lambci.lambda.ExampleHandler '{"some": "event"}' +docker run --rm -v "$PWD/build/docker":/var/task lambci/lambda:java8.al2 org.lambci.lambda.ExampleHandler '{"some": "event"}' docker run --rm -v "$PWD/build/docker":/var/task lambci/lambda:java11 org.lambci.lambda.ExampleHandler '{"some": "event"}' cd ${EXAMPLES_DIR}/dotnetcore2.0 diff --git a/docker-lambda.code-workspace b/docker-lambda.code-workspace index 32ca28b3..975aee7f 100644 --- a/docker-lambda.code-workspace +++ b/docker-lambda.code-workspace @@ -21,6 +21,9 @@ { "path": "base/dump-java8" }, + { + "path": "base/dump-java8al2" + }, { "path": "examples/java" }, diff --git a/examples/java/.settings/org.eclipse.buildship.core.prefs b/examples/java/.settings/org.eclipse.buildship.core.prefs index 39c6821c..90865998 100644 --- a/examples/java/.settings/org.eclipse.buildship.core.prefs +++ b/examples/java/.settings/org.eclipse.buildship.core.prefs @@ -1,7 +1,7 @@ arguments= auto.sync=false build.scans.enabled=false -connection.gradle.distribution=GRADLE_DISTRIBUTION(VERSION(6.0-20191016123526+0000)) +connection.gradle.distribution=GRADLE_DISTRIBUTION(VERSION(6.3)) connection.project.dir= eclipse.preferences.version=1 gradle.user.home= diff --git a/java8.al2/build/Dockerfile b/java8.al2/build/Dockerfile new file mode 100644 index 00000000..df669031 --- /dev/null +++ b/java8.al2/build/Dockerfile @@ -0,0 +1,20 @@ +FROM lambci/lambda-base-2:build + +ENV AWS_EXECUTION_ENV=AWS_Lambda_rapid + +WORKDIR / + +RUN rm -rf /var/runtime /var/lang && \ + curl https://lambci.s3.amazonaws.com/fs/java8.tgz | tar -zx -C / && \ + yum install -y java-1.8.0-openjdk-devel && \ + mkdir /usr/local/gradle && curl -L -o gradle.zip https://services.gradle.org/distributions/gradle-6.6-bin.zip && \ + unzip -d /usr/local/gradle gradle.zip && rm gradle.zip && mkdir /usr/local/maven && \ + curl -L http://mirror.cc.columbia.edu/pub/software/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz | \ + tar -zx -C /usr/local/maven + +ENV PATH="/usr/local/gradle/gradle-6.6/bin:/usr/local/maven/apache-maven-3.6.3/bin:${PATH}" + +# Add these as a separate layer as they get updated frequently +RUN pipx install awscli==1.* && \ + pipx install aws-lambda-builders==1.0.0 && \ + pipx install aws-sam-cli==1.0.0 diff --git a/java8.al2/run/Dockerfile b/java8.al2/run/Dockerfile new file mode 100644 index 00000000..7c912988 --- /dev/null +++ b/java8.al2/run/Dockerfile @@ -0,0 +1,21 @@ +FROM lambci/lambda-base + +RUN curl https://lambci.s3.amazonaws.com/fs/java8.al2.tgz | tar -zx -C /opt + + +FROM lambci/lambda:provided + + +FROM lambci/lambda-base-2 + +ENV PATH=/var/lang/bin:$PATH \ + LD_LIBRARY_PATH=/var/lang/lib:$LD_LIBRARY_PATH \ + AWS_EXECUTION_ENV=AWS_Lambda_rapid + +COPY --from=0 /opt/* /var/ + +COPY --from=1 /var/runtime/init /var/rapid/init + +USER sbx_user1051 + +ENTRYPOINT ["/var/rapid/init", "--bootstrap", "/var/runtime/bootstrap", "--enable-msg-logs"] From 644e1035b8720e719b75c5bb1faa1ecc2366dcb1 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Wed, 12 Aug 2020 16:08:03 -0400 Subject: [PATCH 216/271] Fix path for java8.al2 tarball --- java8/build/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/java8/build/Dockerfile b/java8/build/Dockerfile index 1e9bfc69..31a34c2d 100644 --- a/java8/build/Dockerfile +++ b/java8/build/Dockerfile @@ -5,7 +5,7 @@ ENV AWS_EXECUTION_ENV=AWS_Lambda_java8 WORKDIR / RUN rm -rf /var/runtime /var/lang && \ - curl https://lambci.s3.amazonaws.com/fs/java8.tgz | tar -zx -C / && \ + curl https://lambci.s3.amazonaws.com/fs/java8.al2.tgz | tar -zx -C / && \ yum install -y java-1.8.0-openjdk-devel && \ mkdir /usr/local/gradle && curl -L -o gradle.zip https://services.gradle.org/distributions/gradle-6.6-bin.zip && \ unzip -d /usr/local/gradle gradle.zip && rm gradle.zip && mkdir /usr/local/maven && \ From 2d48569a26bd5a2f2b1fa0fe9eb3500d0e05714c Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Wed, 12 Aug 2020 16:20:35 -0400 Subject: [PATCH 217/271] Add java8.al2 to build-all script --- base/build-all.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/base/build-all.sh b/base/build-all.sh index 88ad7919..914a9cff 100755 --- a/base/build-all.sh +++ b/base/build-all.sh @@ -1,6 +1,6 @@ #!/bin/bash -RUNTIMES="provided go1.x nodejs4.3 nodejs6.10 nodejs8.10 python2.7 python3.6 python3.7 ruby2.5 java8 dotnetcore2.0 dotnetcore2.1 nodejs10.x nodejs12.x python3.8 ruby2.7 java11 dotnetcore3.1" +RUNTIMES="provided go1.x nodejs4.3 nodejs6.10 nodejs8.10 python2.7 python3.6 python3.7 ruby2.5 java8 dotnetcore2.0 dotnetcore2.1 nodejs10.x nodejs12.x python3.8 ruby2.7 java8.al2 java11 dotnetcore3.1" TOP_DIR="${PWD}/.." From 8a91a64714c10c11e1b0f0fdd5a5afa365fb9ea0 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Wed, 12 Aug 2020 16:39:19 -0400 Subject: [PATCH 218/271] Add provided.al2 runtime --- .gitignore | 4 ++ README.md | 2 + base/build-all.sh | 2 +- base/dump-providedal2/bootstrap.go | 87 ++++++++++++++++++++++++++++++ base/dump-providedal2/go.mod | 8 +++ base/dump-providedal2/go.sum | 26 +++++++++ base/publish-all.sh | 2 +- base/tag-all.sh | 2 +- base/test-all.sh | 4 ++ examples/provided.al2/bootstrap.go | 27 ++++++++++ examples/provided.al2/go.mod | 8 +++ examples/provided.al2/go.sum | 27 ++++++++++ provided.al2/build/Dockerfile | 6 +++ provided.al2/run/Dockerfile | 13 +++++ 14 files changed, 215 insertions(+), 3 deletions(-) create mode 100644 base/dump-providedal2/bootstrap.go create mode 100644 base/dump-providedal2/go.mod create mode 100644 base/dump-providedal2/go.sum create mode 100644 examples/provided.al2/bootstrap.go create mode 100644 examples/provided.al2/go.mod create mode 100644 examples/provided.al2/go.sum create mode 100644 provided.al2/build/Dockerfile create mode 100644 provided.al2/run/Dockerfile diff --git a/.gitignore b/.gitignore index 4a897231..f335be0f 100644 --- a/.gitignore +++ b/.gitignore @@ -18,6 +18,8 @@ base/dump-dotnetcore21/bin base/dump-dotnetcore21/obj base/dump-dotnetcore31/bin base/dump-dotnetcore31/obj +base/dump-providedal2/bootstrap +base/dump-providedal2/bootstrap.zip dotnetcore2.0/run/MockBootstraps/bin dotnetcore2.0/run/MockBootstraps/obj dotnetcore2.1/run/MockBootstraps/bin @@ -35,3 +37,5 @@ examples/dotnetcore3.1/pub examples/java/bin examples/java/build examples/go1.x/handler +examples/go1.x/handler +examples/provided.al2/bootstrap diff --git a/README.md b/README.md index 5e0dc318..df924a37 100644 --- a/README.md +++ b/README.md @@ -317,6 +317,7 @@ These follow the Lambda runtime names: - `dotnetcore2.1` - `dotnetcore3.1` - `provided` + - `provided.al2` - `build-nodejs4.3` - `build-nodejs6.10` - `build-nodejs8.10` @@ -336,6 +337,7 @@ These follow the Lambda runtime names: - `build-dotnetcore2.1` - `build-dotnetcore3.1` - `build-provided` + - `build-provided.al2` ## Verifying images diff --git a/base/build-all.sh b/base/build-all.sh index 914a9cff..9a0e6e31 100755 --- a/base/build-all.sh +++ b/base/build-all.sh @@ -1,6 +1,6 @@ #!/bin/bash -RUNTIMES="provided go1.x nodejs4.3 nodejs6.10 nodejs8.10 python2.7 python3.6 python3.7 ruby2.5 java8 dotnetcore2.0 dotnetcore2.1 nodejs10.x nodejs12.x python3.8 ruby2.7 java8.al2 java11 dotnetcore3.1" +RUNTIMES="provided go1.x nodejs4.3 nodejs6.10 nodejs8.10 python2.7 python3.6 python3.7 ruby2.5 java8 dotnetcore2.0 dotnetcore2.1 provided.al2 nodejs10.x nodejs12.x python3.8 ruby2.7 java8.al2 java11 dotnetcore3.1" TOP_DIR="${PWD}/.." diff --git a/base/dump-providedal2/bootstrap.go b/base/dump-providedal2/bootstrap.go new file mode 100644 index 00000000..a0f1d7b3 --- /dev/null +++ b/base/dump-providedal2/bootstrap.go @@ -0,0 +1,87 @@ +// docker run --rm -v "$PWD":/go/src/handler lambci/lambda:build-go1.x sh -c \ +// 'go mod download && go build -tags lambda.norpc -ldflags="-s -w" bootstrap.go' && \ +// zip bootstrap.zip bootstrap + +package main + +import ( + "context" + "fmt" + "io/ioutil" + "log" + "os" + "os/exec" + "strings" + + "github.com/aws/aws-lambda-go/lambda" + "github.com/aws/aws-sdk-go-v2/aws" + "github.com/aws/aws-sdk-go-v2/aws/external" + "github.com/aws/aws-sdk-go-v2/service/s3" +) + +func handleRequest(ctx context.Context, event interface{}) (*s3.PutObjectResponse, error) { + filename := "provided.al2.tgz" + + runShell("tar -cpzf /tmp/" + filename + " --numeric-owner --ignore-failed-read /var/runtime /var/lang") + + fmt.Println("Zipping done! Uploading...") + + cfg, err := external.LoadDefaultAWSConfig() + if err != nil { + log.Fatal(err) + } + + file, err := os.Open("/tmp/" + filename) + if err != nil { + log.Fatal(err) + } + + resp, err := s3.New(cfg).PutObjectRequest(&s3.PutObjectInput{ + ACL: s3.ObjectCannedACLPublicRead, + Body: file, + Bucket: aws.String("lambci"), + Key: aws.String("fs/" + filename), + }).Send(context.Background()) + if err != nil { + log.Fatal(err) + } + + fmt.Println("Uploading done!") + + fmt.Println("Parent env:") + runShell("xargs --null --max-args=1 < /proc/1/environ") + + fmt.Println("Parent cmdline:") + content, err := ioutil.ReadFile("/proc/1/cmdline") + fmt.Println(strings.ReplaceAll(string(content), "\x00", " ")) + + fmt.Println("os.Args:") + for _, a := range os.Args { + fmt.Println(a) + } + + fmt.Println("os.Getwd:") + pwd, _ := os.Getwd() + fmt.Println(pwd) + + fmt.Println("os.Environ:") + for _, e := range os.Environ() { + fmt.Println(e) + } + + fmt.Println("ctx:") + fmt.Println(ctx) + + return resp, nil +} + +func runShell(shellCmd string) { + cmd := exec.Command("sh", "-c", shellCmd) + cmd.Stdout = os.Stdout + cmd.Stderr = os.Stderr + cmd.Run() +} + +func main() { + lambda.Start(handleRequest) +} diff --git a/base/dump-providedal2/go.mod b/base/dump-providedal2/go.mod new file mode 100644 index 00000000..4fc94c95 --- /dev/null +++ b/base/dump-providedal2/go.mod @@ -0,0 +1,8 @@ +module bootstrap + +require ( + github.com/aws/aws-lambda-go v1.19.0 + github.com/aws/aws-sdk-go-v2 v0.24.0 +) + +go 1.15 diff --git a/base/dump-providedal2/go.sum b/base/dump-providedal2/go.sum new file mode 100644 index 00000000..0b1fc768 --- /dev/null +++ b/base/dump-providedal2/go.sum @@ -0,0 +1,26 @@ +github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +github.com/aws/aws-lambda-go v1.19.0/go.mod h1:jJmlefzPfGnckuHdXX7/80O3BvUUi12XOkbv4w9SGLU= +github.com/aws/aws-sdk-go-v2 v0.24.0/go.mod h1:2LhT7UgHOXK3UXONKI5OMgIyoQL6zTAw/jwIeX6yqzw= +github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= +github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/go-sql-driver/mysql v1.5.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg= +github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= +github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/urfave/cli/v2 v2.2.0/go.mod h1:SE9GqnLQmjVa0iPEY0f1w3ygNIYcIJ0OKPMoW2caLfQ= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/base/publish-all.sh b/base/publish-all.sh index e1580b82..9cdc5d45 100755 --- a/base/publish-all.sh +++ b/base/publish-all.sh @@ -1,6 +1,6 @@ #!/bin/bash -RUNTIMES="provided go1.x nodejs4.3 nodejs6.10 nodejs8.10 python2.7 python3.6 python3.7 ruby2.5 java8 dotnetcore2.0 dotnetcore2.1 nodejs10.x nodejs12.x python3.8 ruby2.7 java8.al2 java11 dotnetcore3.1" +RUNTIMES="provided go1.x nodejs4.3 nodejs6.10 nodejs8.10 python2.7 python3.6 python3.7 ruby2.5 java8 dotnetcore2.0 dotnetcore2.1 provided.al2 nodejs10.x nodejs12.x python3.8 ruby2.7 java8.al2 java11 dotnetcore3.1" echo -n "Enter repository passphrase: " read -s DOCKER_CONTENT_TRUST_REPOSITORY_PASSPHRASE diff --git a/base/tag-all.sh b/base/tag-all.sh index c68f7292..0591bf34 100755 --- a/base/tag-all.sh +++ b/base/tag-all.sh @@ -1,6 +1,6 @@ #!/bin/bash -RUNTIMES="provided go1.x nodejs4.3 nodejs6.10 nodejs8.10 python2.7 python3.6 python3.7 ruby2.5 java8 dotnetcore2.0 dotnetcore2.1 nodejs10.x nodejs12.x python3.8 ruby2.7 java8.al2 java11 dotnetcore3.1" +RUNTIMES="provided go1.x nodejs4.3 nodejs6.10 nodejs8.10 python2.7 python3.6 python3.7 ruby2.5 java8 dotnetcore2.0 dotnetcore2.1 provided.al2 nodejs10.x nodejs12.x python3.8 ruby2.7 java8.al2 java11 dotnetcore3.1" git tag -f latest diff --git a/base/test-all.sh b/base/test-all.sh index 044cd6ee..c6a40c0e 100755 --- a/base/test-all.sh +++ b/base/test-all.sh @@ -58,6 +58,10 @@ docker run --rm -v "$PWD":/var/task lambci/lambda:go1.x handler '{"Records": []} cd ${EXAMPLES_DIR}/provided docker run --rm -v "$PWD":/var/task lambci/lambda:provided handler '{"some": "event"}' +cd ${EXAMPLES_DIR}/provided.al2 +docker run --rm -v "$PWD":/go/src/handler lambci/lambda:build-go1.x sh -c 'go mod download && go build -tags lambda.norpc bootstrap.go' +docker run --rm -v "$PWD":/var/task lambci/lambda:provided.al2 handler '{"Records": []}' + # To invoke and keep open: # cd ${EXAMPLES_DIR}/ruby # docker run --rm -v $PWD:/var/task -e DOCKER_LAMBDA_STAY_OPEN=1 -p 9001:9001 \ diff --git a/examples/provided.al2/bootstrap.go b/examples/provided.al2/bootstrap.go new file mode 100644 index 00000000..e71e3518 --- /dev/null +++ b/examples/provided.al2/bootstrap.go @@ -0,0 +1,27 @@ +// Compile with: +// docker run --rm -v "$PWD":/go/src/handler lambci/lambda:build-go1.x sh -c 'go mod download && go build -tags lambda.norpc bootstrap.go' + +// Run with: +// docker run --rm -v "$PWD":/var/task lambci/lambda:provided.al2 handler '{"Records": []}' + +package main + +import ( + "context" + "fmt" + + "github.com/aws/aws-lambda-go/events" + "github.com/aws/aws-lambda-go/lambda" +) + +func handleRequest(ctx context.Context, event events.S3Event) (string, error) { + fmt.Println(ctx) + + fmt.Println(event) + + return "Hello World!", nil +} + +func main() { + lambda.Start(handleRequest) +} diff --git a/examples/provided.al2/go.mod b/examples/provided.al2/go.mod new file mode 100644 index 00000000..4fc94c95 --- /dev/null +++ b/examples/provided.al2/go.mod @@ -0,0 +1,8 @@ +module bootstrap + +require ( + github.com/aws/aws-lambda-go v1.19.0 + github.com/aws/aws-sdk-go-v2 v0.24.0 +) + +go 1.15 diff --git a/examples/provided.al2/go.sum b/examples/provided.al2/go.sum new file mode 100644 index 00000000..8da6f30f --- /dev/null +++ b/examples/provided.al2/go.sum @@ -0,0 +1,27 @@ +github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +github.com/aws/aws-lambda-go v1.19.0 h1:Cn28zA8Mic4NpR7p4IlaEW2srI+U3+I7tRqjFMpt/fs= +github.com/aws/aws-lambda-go v1.19.0/go.mod h1:jJmlefzPfGnckuHdXX7/80O3BvUUi12XOkbv4w9SGLU= +github.com/aws/aws-sdk-go-v2 v0.24.0/go.mod h1:2LhT7UgHOXK3UXONKI5OMgIyoQL6zTAw/jwIeX6yqzw= +github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= +github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/go-sql-driver/mysql v1.5.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg= +github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= +github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/urfave/cli/v2 v2.2.0/go.mod h1:SE9GqnLQmjVa0iPEY0f1w3ygNIYcIJ0OKPMoW2caLfQ= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/provided.al2/build/Dockerfile b/provided.al2/build/Dockerfile new file mode 100644 index 00000000..cf5e84ea --- /dev/null +++ b/provided.al2/build/Dockerfile @@ -0,0 +1,6 @@ +FROM lambci/lambda-base-2:build + +# Add these as a separate layer as they get updated frequently +RUN pipx install awscli==1.* && \ + pipx install aws-lambda-builders==1.0.0 && \ + pipx install aws-sam-cli==1.0.0 diff --git a/provided.al2/run/Dockerfile b/provided.al2/run/Dockerfile new file mode 100644 index 00000000..19e39287 --- /dev/null +++ b/provided.al2/run/Dockerfile @@ -0,0 +1,13 @@ +FROM lambci/lambda:provided + + +FROM lambci/lambda-base-2 + +ENV PATH=/var/lang/bin:$PATH \ + LD_LIBRARY_PATH=/var/lang/lib:$LD_LIBRARY_PATH + +COPY --from=0 /var/runtime/init /var/runtime/init + +USER sbx_user1051 + +ENTRYPOINT ["/var/runtime/init"] From b36a9e9195cc9ffad667c9ced210962b779c57d0 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Wed, 12 Aug 2020 16:42:54 -0400 Subject: [PATCH 219/271] *Really* fix path for java8.al2 tarball --- java8.al2/build/Dockerfile | 2 +- java8/build/Dockerfile | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/java8.al2/build/Dockerfile b/java8.al2/build/Dockerfile index df669031..920a5cfb 100644 --- a/java8.al2/build/Dockerfile +++ b/java8.al2/build/Dockerfile @@ -5,7 +5,7 @@ ENV AWS_EXECUTION_ENV=AWS_Lambda_rapid WORKDIR / RUN rm -rf /var/runtime /var/lang && \ - curl https://lambci.s3.amazonaws.com/fs/java8.tgz | tar -zx -C / && \ + curl https://lambci.s3.amazonaws.com/fs/java8.al2.tgz | tar -zx -C / && \ yum install -y java-1.8.0-openjdk-devel && \ mkdir /usr/local/gradle && curl -L -o gradle.zip https://services.gradle.org/distributions/gradle-6.6-bin.zip && \ unzip -d /usr/local/gradle gradle.zip && rm gradle.zip && mkdir /usr/local/maven && \ diff --git a/java8/build/Dockerfile b/java8/build/Dockerfile index 31a34c2d..1e9bfc69 100644 --- a/java8/build/Dockerfile +++ b/java8/build/Dockerfile @@ -5,7 +5,7 @@ ENV AWS_EXECUTION_ENV=AWS_Lambda_java8 WORKDIR / RUN rm -rf /var/runtime /var/lang && \ - curl https://lambci.s3.amazonaws.com/fs/java8.al2.tgz | tar -zx -C / && \ + curl https://lambci.s3.amazonaws.com/fs/java8.tgz | tar -zx -C / && \ yum install -y java-1.8.0-openjdk-devel && \ mkdir /usr/local/gradle && curl -L -o gradle.zip https://services.gradle.org/distributions/gradle-6.6-bin.zip && \ unzip -d /usr/local/gradle gradle.zip && rm gradle.zip && mkdir /usr/local/maven && \ From 63efae981cbabeda26ce6c05458a17b4c16666c1 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Wed, 12 Aug 2020 21:19:52 -0400 Subject: [PATCH 220/271] Update aws-sam-cli to 1.1.0 --- dotnetcore2.0/build/Dockerfile | 2 +- dotnetcore2.1/build/Dockerfile | 2 +- dotnetcore3.1/build/Dockerfile | 2 +- go1.x/build/Dockerfile | 2 +- java11/build/Dockerfile | 2 +- java8.al2/build/Dockerfile | 3 +-- java8/build/Dockerfile | 2 +- nodejs10.x/build/Dockerfile | 2 +- nodejs12.x/build/Dockerfile | 2 +- nodejs4.3/build/Dockerfile | 2 +- nodejs6.10/build/Dockerfile | 2 +- nodejs8.10/build/Dockerfile | 2 +- provided.al2/build/Dockerfile | 2 +- provided/build/Dockerfile | 2 +- python3.6/build/Dockerfile | 2 +- python3.7/build/Dockerfile | 2 +- python3.8/build/Dockerfile | 2 +- ruby2.5/build/Dockerfile | 2 +- ruby2.7/build/Dockerfile | 2 +- 19 files changed, 19 insertions(+), 20 deletions(-) diff --git a/dotnetcore2.0/build/Dockerfile b/dotnetcore2.0/build/Dockerfile index 34c89f9c..2ea4bb08 100644 --- a/dotnetcore2.0/build/Dockerfile +++ b/dotnetcore2.0/build/Dockerfile @@ -26,6 +26,6 @@ RUN source /usr/local/pipx/shared/bin/activate && \ pipx install pipenv && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.0.0 && \ - pipx install aws-sam-cli==1.0.0 + pipx install aws-sam-cli==1.1.0 CMD ["dotnet", "build"] diff --git a/dotnetcore2.1/build/Dockerfile b/dotnetcore2.1/build/Dockerfile index 7f52d4b8..69c765d5 100644 --- a/dotnetcore2.1/build/Dockerfile +++ b/dotnetcore2.1/build/Dockerfile @@ -27,7 +27,7 @@ RUN source /usr/local/pipx/shared/bin/activate && \ pipx install pipenv && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.0.0 && \ - pipx install aws-sam-cli==1.0.0 && \ + pipx install aws-sam-cli==1.1.0 && \ dotnet tool install --global Amazon.Lambda.Tools --version 3.3.1 CMD ["dotnet", "build"] diff --git a/dotnetcore3.1/build/Dockerfile b/dotnetcore3.1/build/Dockerfile index dcee793e..8868f243 100644 --- a/dotnetcore3.1/build/Dockerfile +++ b/dotnetcore3.1/build/Dockerfile @@ -22,7 +22,7 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.0.0 && \ - pipx install aws-sam-cli==1.0.0 && \ + pipx install aws-sam-cli==1.1.0 && \ dotnet tool install --global Amazon.Lambda.Tools --version 4.0.0 CMD ["dotnet", "build"] diff --git a/go1.x/build/Dockerfile b/go1.x/build/Dockerfile index 1066c7b2..7e0d2162 100644 --- a/go1.x/build/Dockerfile +++ b/go1.x/build/Dockerfile @@ -20,6 +20,6 @@ RUN rm -rf /var/runtime /var/lang && \ RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.0.0 && \ - pipx install aws-sam-cli==1.0.0 + pipx install aws-sam-cli==1.1.0 CMD ["dep", "ensure"] diff --git a/java11/build/Dockerfile b/java11/build/Dockerfile index bda58339..557a2600 100644 --- a/java11/build/Dockerfile +++ b/java11/build/Dockerfile @@ -16,4 +16,4 @@ ENV PATH="/usr/local/gradle/gradle-6.6/bin:/usr/local/maven/apache-maven-3.6.3/b # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.0.0 && \ - pipx install aws-sam-cli==1.0.0 + pipx install aws-sam-cli==1.1.0 diff --git a/java8.al2/build/Dockerfile b/java8.al2/build/Dockerfile index 920a5cfb..e1ca8445 100644 --- a/java8.al2/build/Dockerfile +++ b/java8.al2/build/Dockerfile @@ -6,7 +6,6 @@ WORKDIR / RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/java8.al2.tgz | tar -zx -C / && \ - yum install -y java-1.8.0-openjdk-devel && \ mkdir /usr/local/gradle && curl -L -o gradle.zip https://services.gradle.org/distributions/gradle-6.6-bin.zip && \ unzip -d /usr/local/gradle gradle.zip && rm gradle.zip && mkdir /usr/local/maven && \ curl -L http://mirror.cc.columbia.edu/pub/software/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz | \ @@ -17,4 +16,4 @@ ENV PATH="/usr/local/gradle/gradle-6.6/bin:/usr/local/maven/apache-maven-3.6.3/b # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.0.0 && \ - pipx install aws-sam-cli==1.0.0 + pipx install aws-sam-cli==1.1.0 diff --git a/java8/build/Dockerfile b/java8/build/Dockerfile index 1e9bfc69..e526e1b3 100644 --- a/java8/build/Dockerfile +++ b/java8/build/Dockerfile @@ -19,4 +19,4 @@ ENV PATH="/usr/local/gradle/gradle-6.6/bin:/usr/local/maven/apache-maven-3.6.3/b RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.0.0 && \ - pipx install aws-sam-cli==1.0.0 + pipx install aws-sam-cli==1.1.0 diff --git a/nodejs10.x/build/Dockerfile b/nodejs10.x/build/Dockerfile index 8e3603e5..84c48611 100644 --- a/nodejs10.x/build/Dockerfile +++ b/nodejs10.x/build/Dockerfile @@ -11,4 +11,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.0.0 && \ - pipx install aws-sam-cli==1.0.0 + pipx install aws-sam-cli==1.1.0 diff --git a/nodejs12.x/build/Dockerfile b/nodejs12.x/build/Dockerfile index f9389348..c95ab18c 100644 --- a/nodejs12.x/build/Dockerfile +++ b/nodejs12.x/build/Dockerfile @@ -11,4 +11,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.0.0 && \ - pipx install aws-sam-cli==1.0.0 + pipx install aws-sam-cli==1.1.0 diff --git a/nodejs4.3/build/Dockerfile b/nodejs4.3/build/Dockerfile index 38c8bd39..c029f7d6 100644 --- a/nodejs4.3/build/Dockerfile +++ b/nodejs4.3/build/Dockerfile @@ -14,6 +14,6 @@ RUN rm -rf /var/runtime /var/lang && \ RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.0.0 && \ - pipx install aws-sam-cli==1.0.0 + pipx install aws-sam-cli==1.1.0 CMD ["npm", "rebuild"] diff --git a/nodejs6.10/build/Dockerfile b/nodejs6.10/build/Dockerfile index 43562b51..7a50d8f6 100644 --- a/nodejs6.10/build/Dockerfile +++ b/nodejs6.10/build/Dockerfile @@ -14,6 +14,6 @@ RUN rm -rf /var/runtime /var/lang && \ RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.0.0 && \ - pipx install aws-sam-cli==1.0.0 + pipx install aws-sam-cli==1.1.0 CMD ["npm", "rebuild"] diff --git a/nodejs8.10/build/Dockerfile b/nodejs8.10/build/Dockerfile index 551d0df0..07a537ce 100644 --- a/nodejs8.10/build/Dockerfile +++ b/nodejs8.10/build/Dockerfile @@ -14,6 +14,6 @@ RUN rm -rf /var/runtime /var/lang && \ RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.0.0 && \ - pipx install aws-sam-cli==1.0.0 + pipx install aws-sam-cli==1.1.0 CMD ["npm", "rebuild"] diff --git a/provided.al2/build/Dockerfile b/provided.al2/build/Dockerfile index cf5e84ea..e8fb0ed8 100644 --- a/provided.al2/build/Dockerfile +++ b/provided.al2/build/Dockerfile @@ -3,4 +3,4 @@ # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.0.0 && \ - pipx install aws-sam-cli==1.0.0 + pipx install aws-sam-cli==1.1.0 diff --git a/provided/build/Dockerfile b/provided/build/Dockerfile index 6c83f670..3e04210a 100644 --- a/provided/build/Dockerfile +++ b/provided/build/Dockerfile @@ -5,4 +5,4 @@ FROM lambci/lambda-base:build RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.0.0 && \ - pipx install aws-sam-cli==1.0.0 + pipx install aws-sam-cli==1.1.0 diff --git a/python3.6/build/Dockerfile b/python3.6/build/Dockerfile index 197e3afe..2396e3ed 100644 --- a/python3.6/build/Dockerfile +++ b/python3.6/build/Dockerfile @@ -26,4 +26,4 @@ RUN pip install -U pip setuptools wheel --no-cache-dir && \ pipx install poetry==1.0.10 && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.0.0 && \ - pipx install aws-sam-cli==1.0.0 + pipx install aws-sam-cli==1.1.0 diff --git a/python3.7/build/Dockerfile b/python3.7/build/Dockerfile index e0275280..56632d18 100644 --- a/python3.7/build/Dockerfile +++ b/python3.7/build/Dockerfile @@ -18,4 +18,4 @@ RUN pip install -U pip setuptools wheel --no-cache-dir && \ pipx install poetry==1.0.10 && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.0.0 && \ - pipx install aws-sam-cli==1.0.0 + pipx install aws-sam-cli==1.1.0 diff --git a/python3.8/build/Dockerfile b/python3.8/build/Dockerfile index 70f9ec9d..8b17b047 100644 --- a/python3.8/build/Dockerfile +++ b/python3.8/build/Dockerfile @@ -18,4 +18,4 @@ RUN pip install -U pip setuptools wheel --no-cache-dir && \ pipx install poetry==1.0.10 && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.0.0 && \ - pipx install aws-sam-cli==1.0.0 + pipx install aws-sam-cli==1.1.0 diff --git a/ruby2.5/build/Dockerfile b/ruby2.5/build/Dockerfile index 6acd3477..7e49af84 100644 --- a/ruby2.5/build/Dockerfile +++ b/ruby2.5/build/Dockerfile @@ -16,6 +16,6 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.0.0 && \ - pipx install aws-sam-cli==1.0.0 && \ + pipx install aws-sam-cli==1.1.0 && \ gem update --system --no-document && \ gem install --no-document bundler -v '~> 2.1' diff --git a/ruby2.7/build/Dockerfile b/ruby2.7/build/Dockerfile index 4c3d059e..a5a0e4bc 100644 --- a/ruby2.7/build/Dockerfile +++ b/ruby2.7/build/Dockerfile @@ -14,6 +14,6 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.0.0 && \ - pipx install aws-sam-cli==1.0.0 && \ + pipx install aws-sam-cli==1.1.0 && \ gem update --system --no-document && \ gem install --no-document bundler -v '~> 2.1' From 2b4ab8c6a98bdd1eb17394598d287f4d6e854748 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Thu, 13 Aug 2020 20:57:30 -0400 Subject: [PATCH 221/271] Fix JDK on java8.al2 --- java8.al2/build/Dockerfile | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/java8.al2/build/Dockerfile b/java8.al2/build/Dockerfile index e1ca8445..73fcb5f6 100644 --- a/java8.al2/build/Dockerfile +++ b/java8.al2/build/Dockerfile @@ -1,11 +1,14 @@ FROM lambci/lambda-base-2:build -ENV AWS_EXECUTION_ENV=AWS_Lambda_rapid +ENV PATH=/var/lang/bin:$PATH \ + LD_LIBRARY_PATH=/var/lang/lib:$LD_LIBRARY_PATH \ + AWS_EXECUTION_ENV=AWS_Lambda_rapid -WORKDIR / - -RUN rm -rf /var/runtime /var/lang && \ +RUN rm -rf /var/runtime && \ curl https://lambci.s3.amazonaws.com/fs/java8.al2.tgz | tar -zx -C / && \ + rm -rf /var/lang/* && \ + curl -sSL https://corretto.aws/downloads/resources/8.252.09.1/amazon-corretto-8.252.09.1-linux-x64.tar.gz | tar -xz --strip-components=1 -C /var/lang && \ + rm -rf /var/lang/*.zip && \ mkdir /usr/local/gradle && curl -L -o gradle.zip https://services.gradle.org/distributions/gradle-6.6-bin.zip && \ unzip -d /usr/local/gradle gradle.zip && rm gradle.zip && mkdir /usr/local/maven && \ curl -L http://mirror.cc.columbia.edu/pub/software/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz | \ From 7f6815f1661a8bb8745bd4dfe9bd7e3b1ba0136d Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Tue, 18 Aug 2020 10:36:51 -0400 Subject: [PATCH 222/271] Remove date-tagged image locally after publishing --- base/publish-all.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/base/publish-all.sh b/base/publish-all.sh index 9cdc5d45..da170994 100755 --- a/base/publish-all.sh +++ b/base/publish-all.sh @@ -29,4 +29,5 @@ for RUNTIME in $RUNTIMES; do docker tag lambci/lambda:build-${RUNTIME} lambci/lambda:${PUBLISH_DATE}-build-${RUNTIME} docker push lambci/lambda:build-${RUNTIME} docker push lambci/lambda:${PUBLISH_DATE}-build-${RUNTIME} + docker rmi lambci/lambda:${PUBLISH_DATE}-build-${RUNTIME} done From 42582d6fa2066d591ef0ce61170f4304dffbcecc Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Thu, 20 Aug 2020 13:09:02 -0400 Subject: [PATCH 223/271] Quieten unzipping in java builds --- java11/build/Dockerfile | 2 +- java8.al2/build/Dockerfile | 2 +- java8/build/Dockerfile | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/java11/build/Dockerfile b/java11/build/Dockerfile index 557a2600..9165d29e 100644 --- a/java11/build/Dockerfile +++ b/java11/build/Dockerfile @@ -7,7 +7,7 @@ ENV PATH=/var/lang/bin:$PATH \ RUN rm -rf /var/runtime /var/lang /var/rapid && \ curl https://lambci.s3.amazonaws.com/fs/java11.tgz | tar -zx -C / && \ mkdir /usr/local/gradle && curl -L -o gradle.zip https://services.gradle.org/distributions/gradle-6.6-bin.zip && \ - unzip -d /usr/local/gradle gradle.zip && rm gradle.zip && mkdir /usr/local/maven && \ + unzip -qd /usr/local/gradle gradle.zip && rm gradle.zip && mkdir /usr/local/maven && \ curl -L http://mirror.cc.columbia.edu/pub/software/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz | \ tar -zx -C /usr/local/maven diff --git a/java8.al2/build/Dockerfile b/java8.al2/build/Dockerfile index 73fcb5f6..4cbcc42f 100644 --- a/java8.al2/build/Dockerfile +++ b/java8.al2/build/Dockerfile @@ -10,7 +10,7 @@ RUN rm -rf /var/runtime && \ curl -sSL https://corretto.aws/downloads/resources/8.252.09.1/amazon-corretto-8.252.09.1-linux-x64.tar.gz | tar -xz --strip-components=1 -C /var/lang && \ rm -rf /var/lang/*.zip && \ mkdir /usr/local/gradle && curl -L -o gradle.zip https://services.gradle.org/distributions/gradle-6.6-bin.zip && \ - unzip -d /usr/local/gradle gradle.zip && rm gradle.zip && mkdir /usr/local/maven && \ + unzip -qd /usr/local/gradle gradle.zip && rm gradle.zip && mkdir /usr/local/maven && \ curl -L http://mirror.cc.columbia.edu/pub/software/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz | \ tar -zx -C /usr/local/maven diff --git a/java8/build/Dockerfile b/java8/build/Dockerfile index e526e1b3..de0e2309 100644 --- a/java8/build/Dockerfile +++ b/java8/build/Dockerfile @@ -8,7 +8,7 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/java8.tgz | tar -zx -C / && \ yum install -y java-1.8.0-openjdk-devel && \ mkdir /usr/local/gradle && curl -L -o gradle.zip https://services.gradle.org/distributions/gradle-6.6-bin.zip && \ - unzip -d /usr/local/gradle gradle.zip && rm gradle.zip && mkdir /usr/local/maven && \ + unzip -qd /usr/local/gradle gradle.zip && rm gradle.zip && mkdir /usr/local/maven && \ curl -L http://mirror.cc.columbia.edu/pub/software/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz | \ tar -zx -C /usr/local/maven From a64a88947030c9bd3b3a35160349851be2969a18 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Thu, 20 Aug 2020 13:09:17 -0400 Subject: [PATCH 224/271] Bump bcrypt dep in example --- .../nodejs-native-module/package-lock.json | 38 +++++++++---------- examples/nodejs-native-module/package.json | 2 +- 2 files changed, 20 insertions(+), 20 deletions(-) diff --git a/examples/nodejs-native-module/package-lock.json b/examples/nodejs-native-module/package-lock.json index 4efd95c6..1beaa4c1 100644 --- a/examples/nodejs-native-module/package-lock.json +++ b/examples/nodejs-native-module/package-lock.json @@ -34,12 +34,12 @@ "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" }, "bcrypt": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/bcrypt/-/bcrypt-4.0.1.tgz", - "integrity": "sha512-hSIZHkUxIDS5zA2o00Kf2O5RfVbQ888n54xQoF/eIaquU4uaLxK8vhhBdktd0B3n2MjkcAWzv4mnhogykBKOUQ==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/bcrypt/-/bcrypt-5.0.0.tgz", + "integrity": "sha512-jB0yCBl4W/kVHM2whjfyqnxTmOHkCX4kHEa5nYKSoGeYe8YrjTYTc87/6bwt1g8cmV0QrbhKriETg9jWtcREhg==", "requires": { - "node-addon-api": "^2.0.0", - "node-pre-gyp": "0.14.0" + "node-addon-api": "^3.0.0", + "node-pre-gyp": "0.15.0" } }, "brace-expansion": { @@ -224,9 +224,9 @@ } }, "mkdirp": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.4.tgz", - "integrity": "sha512-iG9AK/dJLtJ0XNgTuDbSyNS3zECqDlAhnQW4CsNxBG3LQJBbHmRX1egw39DmtOdCAqY+dKXV+sgPgilNWUKMVw==", + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", "requires": { "minimist": "^1.2.5" } @@ -237,9 +237,9 @@ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, "needle": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/needle/-/needle-2.3.3.tgz", - "integrity": "sha512-EkY0GeSq87rWp1hoq/sH/wnTWgFVhYlnIkbJ0YJFfRgEFlz2RraCjBpFQ+vrEgEdp0ThfyHADmkChEhcb7PKyw==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/needle/-/needle-2.5.0.tgz", + "integrity": "sha512-o/qITSDR0JCyCKEQ1/1bnUXMmznxabbwi/Y4WwJElf+evwJNFNwIDMCCt5IigFVxgeGBJESLohGtIS9gEzo1fA==", "requires": { "debug": "^3.2.6", "iconv-lite": "^0.4.4", @@ -247,18 +247,18 @@ } }, "node-addon-api": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-2.0.0.tgz", - "integrity": "sha512-ASCL5U13as7HhOExbT6OlWJJUV/lLzL2voOSP1UVehpRD8FbSrSDjfScK/KwAvVTI5AS6r4VwbOMlIqtvRidnA==" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.0.0.tgz", + "integrity": "sha512-sSHCgWfJ+Lui/u+0msF3oyCgvdkhxDbkCS6Q8uiJquzOimkJBvX6hl5aSSA7DR1XbMpdM8r7phjcF63sF4rkKg==" }, "node-pre-gyp": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.14.0.tgz", - "integrity": "sha512-+CvDC7ZttU/sSt9rFjix/P05iS43qHCOOGzcr3Ry99bXG7VX953+vFyEuph/tfqoYu8dttBkE86JSKBO2OzcxA==", + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.15.0.tgz", + "integrity": "sha512-7QcZa8/fpaU/BKenjcaeFF9hLz2+7S9AqyXFhlH/rilsQ/hPZKK32RtR5EQHJElgu+q5RfbJ34KriI79UWaorA==", "requires": { "detect-libc": "^1.0.2", - "mkdirp": "^0.5.1", - "needle": "^2.2.1", + "mkdirp": "^0.5.3", + "needle": "^2.5.0", "nopt": "^4.0.1", "npm-packlist": "^1.1.6", "npmlog": "^4.0.2", diff --git a/examples/nodejs-native-module/package.json b/examples/nodejs-native-module/package.json index 7a043bda..1917e45b 100644 --- a/examples/nodejs-native-module/package.json +++ b/examples/nodejs-native-module/package.json @@ -7,6 +7,6 @@ "test": "node test.js" }, "dependencies": { - "bcrypt": "^4.0.1" + "bcrypt": "^5.0.0" } } From 91cf2ab632ec456af72eedc944f0dedc4452782f Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Thu, 20 Aug 2020 13:09:38 -0400 Subject: [PATCH 225/271] Update dotnetcore2.1 bootstrap to match latest prod --- .../run/MockBootstraps/lib/Bootstrap.dll | Bin 147968 -> 147968 bytes .../run/MockBootstraps/lib/Bootstrap.pdb | Bin 45268 -> 45932 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/dotnetcore2.1/run/MockBootstraps/lib/Bootstrap.dll b/dotnetcore2.1/run/MockBootstraps/lib/Bootstrap.dll index a437156cdc904e6ec6438e2ac03861485805b810..2adc509b9298cd3e15d84431b050b26ebc7b59de 100644 GIT binary patch delta 8260 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 delta 8333 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 Date: Tue, 25 Aug 2020 13:36:21 -0400 Subject: [PATCH 226/271] Update gradle to 6.6.1 on all java build images --- java11/build/Dockerfile | 4 ++-- java8.al2/build/Dockerfile | 4 ++-- java8/build/Dockerfile | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/java11/build/Dockerfile b/java11/build/Dockerfile index 9165d29e..d3920773 100644 --- a/java11/build/Dockerfile +++ b/java11/build/Dockerfile @@ -6,12 +6,12 @@ ENV PATH=/var/lang/bin:$PATH \ RUN rm -rf /var/runtime /var/lang /var/rapid && \ curl https://lambci.s3.amazonaws.com/fs/java11.tgz | tar -zx -C / && \ - mkdir /usr/local/gradle && curl -L -o gradle.zip https://services.gradle.org/distributions/gradle-6.6-bin.zip && \ + mkdir /usr/local/gradle && curl -L -o gradle.zip https://services.gradle.org/distributions/gradle-6.6.1-bin.zip && \ unzip -qd /usr/local/gradle gradle.zip && rm gradle.zip && mkdir /usr/local/maven && \ curl -L http://mirror.cc.columbia.edu/pub/software/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz | \ tar -zx -C /usr/local/maven -ENV PATH="/usr/local/gradle/gradle-6.6/bin:/usr/local/maven/apache-maven-3.6.3/bin:${PATH}" +ENV PATH="/usr/local/gradle/gradle-6.6.1/bin:/usr/local/maven/apache-maven-3.6.3/bin:${PATH}" # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ diff --git a/java8.al2/build/Dockerfile b/java8.al2/build/Dockerfile index 4cbcc42f..d774151a 100644 --- a/java8.al2/build/Dockerfile +++ b/java8.al2/build/Dockerfile @@ -9,12 +9,12 @@ RUN rm -rf /var/runtime && \ rm -rf /var/lang/* && \ curl -sSL https://corretto.aws/downloads/resources/8.252.09.1/amazon-corretto-8.252.09.1-linux-x64.tar.gz | tar -xz --strip-components=1 -C /var/lang && \ rm -rf /var/lang/*.zip && \ - mkdir /usr/local/gradle && curl -L -o gradle.zip https://services.gradle.org/distributions/gradle-6.6-bin.zip && \ + mkdir /usr/local/gradle && curl -L -o gradle.zip https://services.gradle.org/distributions/gradle-6.6.1-bin.zip && \ unzip -qd /usr/local/gradle gradle.zip && rm gradle.zip && mkdir /usr/local/maven && \ curl -L http://mirror.cc.columbia.edu/pub/software/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz | \ tar -zx -C /usr/local/maven -ENV PATH="/usr/local/gradle/gradle-6.6/bin:/usr/local/maven/apache-maven-3.6.3/bin:${PATH}" +ENV PATH="/usr/local/gradle/gradle-6.6.1/bin:/usr/local/maven/apache-maven-3.6.3/bin:${PATH}" # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ diff --git a/java8/build/Dockerfile b/java8/build/Dockerfile index de0e2309..04a3ed4b 100644 --- a/java8/build/Dockerfile +++ b/java8/build/Dockerfile @@ -7,12 +7,12 @@ WORKDIR / RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/java8.tgz | tar -zx -C / && \ yum install -y java-1.8.0-openjdk-devel && \ - mkdir /usr/local/gradle && curl -L -o gradle.zip https://services.gradle.org/distributions/gradle-6.6-bin.zip && \ + mkdir /usr/local/gradle && curl -L -o gradle.zip https://services.gradle.org/distributions/gradle-6.6.1-bin.zip && \ unzip -qd /usr/local/gradle gradle.zip && rm gradle.zip && mkdir /usr/local/maven && \ curl -L http://mirror.cc.columbia.edu/pub/software/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz | \ tar -zx -C /usr/local/maven -ENV PATH="/usr/local/gradle/gradle-6.6/bin:/usr/local/maven/apache-maven-3.6.3/bin:${PATH}" +ENV PATH="/usr/local/gradle/gradle-6.6.1/bin:/usr/local/maven/apache-maven-3.6.3/bin:${PATH}" # Add these as a separate layer as they get updated frequently # The pipx workaround is due to https://github.com/pipxproject/pipx/issues/218 From 51711e917c481053c612c331467e9b4e51cb6272 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Wed, 2 Sep 2020 17:14:42 -0400 Subject: [PATCH 227/271] Remove package-lock.json from git --- .gitignore | 1 + package-lock.json | 43 ------------------------------------------- 2 files changed, 1 insertion(+), 43 deletions(-) delete mode 100644 package-lock.json diff --git a/.gitignore b/.gitignore index f335be0f..97b322a1 100644 --- a/.gitignore +++ b/.gitignore @@ -39,3 +39,4 @@ examples/java/build examples/go1.x/handler examples/go1.x/handler examples/provided.al2/bootstrap +package-lock.json diff --git a/package-lock.json b/package-lock.json deleted file mode 100644 index fb3fd99b..00000000 --- a/package-lock.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "name": "docker-lambda", - "version": "0.15.3", - "lockfileVersion": 1, - "requires": true, - "dependencies": { - "should": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/should/-/should-8.4.0.tgz", - "integrity": "sha1-XmCInT5kS73Tl6MM00+tKPz5C8A=", - "dev": true, - "requires": { - "should-equal": "0.8.0", - "should-format": "0.3.2", - "should-type": "0.2.0" - } - }, - "should-equal": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/should-equal/-/should-equal-0.8.0.tgz", - "integrity": "sha1-o/BXMv9FusG3ukEvhAiFaBlkEpk=", - "dev": true, - "requires": { - "should-type": "0.2.0" - } - }, - "should-format": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/should-format/-/should-format-0.3.2.tgz", - "integrity": "sha1-pZgx4Bot3uFJkRvHFIvlyAMZ4f8=", - "dev": true, - "requires": { - "should-type": "0.2.0" - } - }, - "should-type": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/should-type/-/should-type-0.2.0.tgz", - "integrity": "sha1-ZwfvlVKdmJ3MCY/gdTqx+RNrt/Y=", - "dev": true - } - } -} From fe2760e99a568d3816a7d926e36b572570173c3a Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Fri, 4 Sep 2020 08:27:28 -0400 Subject: [PATCH 228/271] Update aws-lambda-builders and aws-sam-cli --- dotnetcore2.0/build/Dockerfile | 4 ++-- dotnetcore2.1/build/Dockerfile | 4 ++-- dotnetcore3.1/build/Dockerfile | 4 ++-- go1.x/build/Dockerfile | 4 ++-- java11/build/Dockerfile | 4 ++-- java8.al2/build/Dockerfile | 4 ++-- java8/build/Dockerfile | 4 ++-- nodejs10.x/build/Dockerfile | 4 ++-- nodejs12.x/build/Dockerfile | 4 ++-- nodejs4.3/build/Dockerfile | 4 ++-- nodejs6.10/build/Dockerfile | 4 ++-- nodejs8.10/build/Dockerfile | 4 ++-- provided.al2/build/Dockerfile | 4 ++-- provided/build/Dockerfile | 4 ++-- python3.6/build/Dockerfile | 4 ++-- python3.7/build/Dockerfile | 4 ++-- python3.8/build/Dockerfile | 4 ++-- ruby2.5/build/Dockerfile | 4 ++-- ruby2.7/build/Dockerfile | 4 ++-- 19 files changed, 38 insertions(+), 38 deletions(-) diff --git a/dotnetcore2.0/build/Dockerfile b/dotnetcore2.0/build/Dockerfile index 2ea4bb08..7972fb81 100644 --- a/dotnetcore2.0/build/Dockerfile +++ b/dotnetcore2.0/build/Dockerfile @@ -25,7 +25,7 @@ RUN source /usr/local/pipx/shared/bin/activate && \ pipx install virtualenv && \ pipx install pipenv && \ pipx install awscli==1.* && \ - pipx install aws-lambda-builders==1.0.0 && \ - pipx install aws-sam-cli==1.1.0 + pipx install aws-lambda-builders==1.1.0 && \ + pipx install aws-sam-cli==1.2.0 CMD ["dotnet", "build"] diff --git a/dotnetcore2.1/build/Dockerfile b/dotnetcore2.1/build/Dockerfile index 69c765d5..e5201f3f 100644 --- a/dotnetcore2.1/build/Dockerfile +++ b/dotnetcore2.1/build/Dockerfile @@ -26,8 +26,8 @@ RUN source /usr/local/pipx/shared/bin/activate && \ pipx install virtualenv && \ pipx install pipenv && \ pipx install awscli==1.* && \ - pipx install aws-lambda-builders==1.0.0 && \ - pipx install aws-sam-cli==1.1.0 && \ + pipx install aws-lambda-builders==1.1.0 && \ + pipx install aws-sam-cli==1.2.0 && \ dotnet tool install --global Amazon.Lambda.Tools --version 3.3.1 CMD ["dotnet", "build"] diff --git a/dotnetcore3.1/build/Dockerfile b/dotnetcore3.1/build/Dockerfile index 8868f243..203c6169 100644 --- a/dotnetcore3.1/build/Dockerfile +++ b/dotnetcore3.1/build/Dockerfile @@ -21,8 +21,8 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ - pipx install aws-lambda-builders==1.0.0 && \ - pipx install aws-sam-cli==1.1.0 && \ + pipx install aws-lambda-builders==1.1.0 && \ + pipx install aws-sam-cli==1.2.0 && \ dotnet tool install --global Amazon.Lambda.Tools --version 4.0.0 CMD ["dotnet", "build"] diff --git a/go1.x/build/Dockerfile b/go1.x/build/Dockerfile index 7e0d2162..fe38995c 100644 --- a/go1.x/build/Dockerfile +++ b/go1.x/build/Dockerfile @@ -19,7 +19,7 @@ RUN rm -rf /var/runtime /var/lang && \ # The pipx workaround is due to https://github.com/pipxproject/pipx/issues/218 RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ - pipx install aws-lambda-builders==1.0.0 && \ - pipx install aws-sam-cli==1.1.0 + pipx install aws-lambda-builders==1.1.0 && \ + pipx install aws-sam-cli==1.2.0 CMD ["dep", "ensure"] diff --git a/java11/build/Dockerfile b/java11/build/Dockerfile index d3920773..ec6170d3 100644 --- a/java11/build/Dockerfile +++ b/java11/build/Dockerfile @@ -15,5 +15,5 @@ ENV PATH="/usr/local/gradle/gradle-6.6.1/bin:/usr/local/maven/apache-maven-3.6.3 # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ - pipx install aws-lambda-builders==1.0.0 && \ - pipx install aws-sam-cli==1.1.0 + pipx install aws-lambda-builders==1.1.0 && \ + pipx install aws-sam-cli==1.2.0 diff --git a/java8.al2/build/Dockerfile b/java8.al2/build/Dockerfile index d774151a..622dd0b4 100644 --- a/java8.al2/build/Dockerfile +++ b/java8.al2/build/Dockerfile @@ -18,5 +18,5 @@ ENV PATH="/usr/local/gradle/gradle-6.6.1/bin:/usr/local/maven/apache-maven-3.6.3 # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ - pipx install aws-lambda-builders==1.0.0 && \ - pipx install aws-sam-cli==1.1.0 + pipx install aws-lambda-builders==1.1.0 && \ + pipx install aws-sam-cli==1.2.0 diff --git a/java8/build/Dockerfile b/java8/build/Dockerfile index 04a3ed4b..28880ad8 100644 --- a/java8/build/Dockerfile +++ b/java8/build/Dockerfile @@ -18,5 +18,5 @@ ENV PATH="/usr/local/gradle/gradle-6.6.1/bin:/usr/local/maven/apache-maven-3.6.3 # The pipx workaround is due to https://github.com/pipxproject/pipx/issues/218 RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ - pipx install aws-lambda-builders==1.0.0 && \ - pipx install aws-sam-cli==1.1.0 + pipx install aws-lambda-builders==1.1.0 && \ + pipx install aws-sam-cli==1.2.0 diff --git a/nodejs10.x/build/Dockerfile b/nodejs10.x/build/Dockerfile index 84c48611..ec77907b 100644 --- a/nodejs10.x/build/Dockerfile +++ b/nodejs10.x/build/Dockerfile @@ -10,5 +10,5 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ - pipx install aws-lambda-builders==1.0.0 && \ - pipx install aws-sam-cli==1.1.0 + pipx install aws-lambda-builders==1.1.0 && \ + pipx install aws-sam-cli==1.2.0 diff --git a/nodejs12.x/build/Dockerfile b/nodejs12.x/build/Dockerfile index c95ab18c..13e3d46f 100644 --- a/nodejs12.x/build/Dockerfile +++ b/nodejs12.x/build/Dockerfile @@ -10,5 +10,5 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ - pipx install aws-lambda-builders==1.0.0 && \ - pipx install aws-sam-cli==1.1.0 + pipx install aws-lambda-builders==1.1.0 && \ + pipx install aws-sam-cli==1.2.0 diff --git a/nodejs4.3/build/Dockerfile b/nodejs4.3/build/Dockerfile index c029f7d6..84584a60 100644 --- a/nodejs4.3/build/Dockerfile +++ b/nodejs4.3/build/Dockerfile @@ -13,7 +13,7 @@ RUN rm -rf /var/runtime /var/lang && \ # The pipx workaround is due to https://github.com/pipxproject/pipx/issues/218 RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ - pipx install aws-lambda-builders==1.0.0 && \ - pipx install aws-sam-cli==1.1.0 + pipx install aws-lambda-builders==1.1.0 && \ + pipx install aws-sam-cli==1.2.0 CMD ["npm", "rebuild"] diff --git a/nodejs6.10/build/Dockerfile b/nodejs6.10/build/Dockerfile index 7a50d8f6..426be790 100644 --- a/nodejs6.10/build/Dockerfile +++ b/nodejs6.10/build/Dockerfile @@ -13,7 +13,7 @@ RUN rm -rf /var/runtime /var/lang && \ # The pipx workaround is due to https://github.com/pipxproject/pipx/issues/218 RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ - pipx install aws-lambda-builders==1.0.0 && \ - pipx install aws-sam-cli==1.1.0 + pipx install aws-lambda-builders==1.1.0 && \ + pipx install aws-sam-cli==1.2.0 CMD ["npm", "rebuild"] diff --git a/nodejs8.10/build/Dockerfile b/nodejs8.10/build/Dockerfile index 07a537ce..27ce85a2 100644 --- a/nodejs8.10/build/Dockerfile +++ b/nodejs8.10/build/Dockerfile @@ -13,7 +13,7 @@ RUN rm -rf /var/runtime /var/lang && \ # The pipx workaround is due to https://github.com/pipxproject/pipx/issues/218 RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ - pipx install aws-lambda-builders==1.0.0 && \ - pipx install aws-sam-cli==1.1.0 + pipx install aws-lambda-builders==1.1.0 && \ + pipx install aws-sam-cli==1.2.0 CMD ["npm", "rebuild"] diff --git a/provided.al2/build/Dockerfile b/provided.al2/build/Dockerfile index e8fb0ed8..78a57c0f 100644 --- a/provided.al2/build/Dockerfile +++ b/provided.al2/build/Dockerfile @@ -2,5 +2,5 @@ # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ - pipx install aws-lambda-builders==1.0.0 && \ - pipx install aws-sam-cli==1.1.0 + pipx install aws-lambda-builders==1.1.0 && \ + pipx install aws-sam-cli==1.2.0 diff --git a/provided/build/Dockerfile b/provided/build/Dockerfile index 3e04210a..a965582a 100644 --- a/provided/build/Dockerfile +++ b/provided/build/Dockerfile @@ -4,5 +4,5 @@ FROM lambci/lambda-base:build # The pipx workaround is due to https://github.com/pipxproject/pipx/issues/218 RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ - pipx install aws-lambda-builders==1.0.0 && \ - pipx install aws-sam-cli==1.1.0 + pipx install aws-lambda-builders==1.1.0 && \ + pipx install aws-sam-cli==1.2.0 diff --git a/python3.6/build/Dockerfile b/python3.6/build/Dockerfile index 2396e3ed..cb8fecce 100644 --- a/python3.6/build/Dockerfile +++ b/python3.6/build/Dockerfile @@ -25,5 +25,5 @@ RUN pip install -U pip setuptools wheel --no-cache-dir && \ pipx install pipenv && \ pipx install poetry==1.0.10 && \ pipx install awscli==1.* && \ - pipx install aws-lambda-builders==1.0.0 && \ - pipx install aws-sam-cli==1.1.0 + pipx install aws-lambda-builders==1.1.0 && \ + pipx install aws-sam-cli==1.2.0 diff --git a/python3.7/build/Dockerfile b/python3.7/build/Dockerfile index 56632d18..ad5f9da9 100644 --- a/python3.7/build/Dockerfile +++ b/python3.7/build/Dockerfile @@ -17,5 +17,5 @@ RUN pip install -U pip setuptools wheel --no-cache-dir && \ pipx install pipenv && \ pipx install poetry==1.0.10 && \ pipx install awscli==1.* && \ - pipx install aws-lambda-builders==1.0.0 && \ - pipx install aws-sam-cli==1.1.0 + pipx install aws-lambda-builders==1.1.0 && \ + pipx install aws-sam-cli==1.2.0 diff --git a/python3.8/build/Dockerfile b/python3.8/build/Dockerfile index 8b17b047..ea9be052 100644 --- a/python3.8/build/Dockerfile +++ b/python3.8/build/Dockerfile @@ -17,5 +17,5 @@ RUN pip install -U pip setuptools wheel --no-cache-dir && \ pipx install pipenv && \ pipx install poetry==1.0.10 && \ pipx install awscli==1.* && \ - pipx install aws-lambda-builders==1.0.0 && \ - pipx install aws-sam-cli==1.1.0 + pipx install aws-lambda-builders==1.1.0 && \ + pipx install aws-sam-cli==1.2.0 diff --git a/ruby2.5/build/Dockerfile b/ruby2.5/build/Dockerfile index 7e49af84..24629792 100644 --- a/ruby2.5/build/Dockerfile +++ b/ruby2.5/build/Dockerfile @@ -15,7 +15,7 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # The pipx workaround is due to https://github.com/pipxproject/pipx/issues/218 RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ - pipx install aws-lambda-builders==1.0.0 && \ - pipx install aws-sam-cli==1.1.0 && \ + pipx install aws-lambda-builders==1.1.0 && \ + pipx install aws-sam-cli==1.2.0 && \ gem update --system --no-document && \ gem install --no-document bundler -v '~> 2.1' diff --git a/ruby2.7/build/Dockerfile b/ruby2.7/build/Dockerfile index a5a0e4bc..3fa80f40 100644 --- a/ruby2.7/build/Dockerfile +++ b/ruby2.7/build/Dockerfile @@ -13,7 +13,7 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ - pipx install aws-lambda-builders==1.0.0 && \ - pipx install aws-sam-cli==1.1.0 && \ + pipx install aws-lambda-builders==1.1.0 && \ + pipx install aws-sam-cli==1.2.0 && \ gem update --system --no-document && \ gem install --no-document bundler -v '~> 2.1' From d318d7e1e0402bc246472facd4da9cc27069914f Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Wed, 9 Sep 2020 10:11:28 -0400 Subject: [PATCH 229/271] Update dotnetcore3.1 sdk to 3.1.402 --- dotnetcore3.1/build/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dotnetcore3.1/build/Dockerfile b/dotnetcore3.1/build/Dockerfile index 203c6169..2f230a03 100644 --- a/dotnetcore3.1/build/Dockerfile +++ b/dotnetcore3.1/build/Dockerfile @@ -6,7 +6,7 @@ ENV DOTNET_ROOT=/var/lang/bin ENV PATH=/root/.dotnet/tools:$DOTNET_ROOT:$PATH \ LD_LIBRARY_PATH=/var/lang/lib:$LD_LIBRARY_PATH \ AWS_EXECUTION_ENV=AWS_Lambda_dotnetcore3.1 \ - DOTNET_SDK_VERSION=3.1.401 \ + DOTNET_SDK_VERSION=3.1.402 \ DOTNET_CLI_TELEMETRY_OPTOUT=1 \ NUGET_XMLDOC_MODE=skip From 33c7d80700f849a2ec37794a238c39ad3a11d071 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Fri, 11 Sep 2020 11:04:51 -0400 Subject: [PATCH 230/271] =?UTF-8?q?VSCode=20wants=20to=20add=20filteredRes?= =?UTF-8?q?ources=20to=20java=20.project=20files=20=F0=9F=A4=B7=E2=80=8D?= =?UTF-8?q?=E2=99=82=EF=B8=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- base/dump-java11/.project | 11 ++++++ base/dump-java8/.project | 51 ++++++++++++++++---------- base/dump-java8al2/.project | 51 ++++++++++++++++---------- examples/java/.project | 11 ++++++ java8/run/lambda-runtime-mock/.project | 39 +++++++++++++------- 5 files changed, 109 insertions(+), 54 deletions(-) diff --git a/base/dump-java11/.project b/base/dump-java11/.project index 47ed2d4d..52873e92 100644 --- a/base/dump-java11/.project +++ b/base/dump-java11/.project @@ -20,4 +20,15 @@ org.eclipse.jdt.core.javanature org.eclipse.buildship.core.gradleprojectnature + + + 1599680497019 + + 30 + + org.eclipse.core.resources.regexFilterMatcher + node_modules|.git|__CREATED_BY_JAVA_LANGUAGE_SERVER__ + + + diff --git a/base/dump-java8/.project b/base/dump-java8/.project index 0e30deb7..848abc21 100644 --- a/base/dump-java8/.project +++ b/base/dump-java8/.project @@ -1,23 +1,34 @@ - dump-java8 - - - - - - org.eclipse.jdt.core.javabuilder - - - - - org.eclipse.buildship.core.gradleprojectbuilder - - - - - - org.eclipse.jdt.core.javanature - org.eclipse.buildship.core.gradleprojectnature - + dump-java8 + + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.buildship.core.gradleprojectbuilder + + + + + + org.eclipse.jdt.core.javanature + org.eclipse.buildship.core.gradleprojectnature + + + + 1599680497033 + + 30 + + org.eclipse.core.resources.regexFilterMatcher + node_modules|.git|__CREATED_BY_JAVA_LANGUAGE_SERVER__ + + + diff --git a/base/dump-java8al2/.project b/base/dump-java8al2/.project index 0e30deb7..b3dcbd7f 100644 --- a/base/dump-java8al2/.project +++ b/base/dump-java8al2/.project @@ -1,23 +1,34 @@ - dump-java8 - - - - - - org.eclipse.jdt.core.javabuilder - - - - - org.eclipse.buildship.core.gradleprojectbuilder - - - - - - org.eclipse.jdt.core.javanature - org.eclipse.buildship.core.gradleprojectnature - + dump-java8 + + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.buildship.core.gradleprojectbuilder + + + + + + org.eclipse.jdt.core.javanature + org.eclipse.buildship.core.gradleprojectnature + + + + 1599680497040 + + 30 + + org.eclipse.core.resources.regexFilterMatcher + node_modules|.git|__CREATED_BY_JAVA_LANGUAGE_SERVER__ + + + diff --git a/examples/java/.project b/examples/java/.project index b4c37dd9..123c68bd 100644 --- a/examples/java/.project +++ b/examples/java/.project @@ -20,4 +20,15 @@ org.eclipse.jdt.core.javanature org.eclipse.buildship.core.gradleprojectnature + + + 1599680497045 + + 30 + + org.eclipse.core.resources.regexFilterMatcher + node_modules|.git|__CREATED_BY_JAVA_LANGUAGE_SERVER__ + + + diff --git a/java8/run/lambda-runtime-mock/.project b/java8/run/lambda-runtime-mock/.project index e2f6a921..f980c6e2 100644 --- a/java8/run/lambda-runtime-mock/.project +++ b/java8/run/lambda-runtime-mock/.project @@ -1,17 +1,28 @@ - lambda-runtime-mock - - - - - - org.eclipse.jdt.core.javabuilder - - - - - - org.eclipse.jdt.core.javanature - + lambda-runtime-mock + + + + + + org.eclipse.jdt.core.javabuilder + + + + + + org.eclipse.jdt.core.javanature + + + + 1599680497051 + + 30 + + org.eclipse.core.resources.regexFilterMatcher + node_modules|.git|__CREATED_BY_JAVA_LANGUAGE_SERVER__ + + + From ba348567412478a65a687c7a95272be1fabcf563 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Fri, 11 Sep 2020 19:10:59 -0400 Subject: [PATCH 231/271] Bump ImageMagick to 6.9.10.68 in base build image --- base/build/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/base/build/Dockerfile b/base/build/Dockerfile index d8bb2f35..3a61529f 100644 --- a/base/build/Dockerfile +++ b/base/build/Dockerfile @@ -9,7 +9,7 @@ RUN chown root:root /tmp && \ yum groups mark convert && \ yum groupinstall -y development && \ yum install -y clang cmake docker python27-devel python36-devel \ - ImageMagick-devel-6.7.8.9 cairo-devel libssh2-devel libxslt-devel libmpc-devel readline-devel db4-devel \ + ImageMagick-devel-6.9.10.68 cairo-devel libssh2-devel libxslt-devel libmpc-devel readline-devel db4-devel \ libffi-devel expat-devel libicu-devel lua-devel gdbm-devel sqlite-devel pcre-devel libcurl-devel && \ yum clean all && \ alternatives --set gcc /usr/bin/gcc48 && \ From 94efe99e92f09c516f4698f87c3cf86124d3ce9c Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Fri, 11 Sep 2020 19:11:21 -0400 Subject: [PATCH 232/271] Bump glibc version in base-2 image --- base/base-2/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/base/base-2/Dockerfile b/base/base-2/Dockerfile index 4e522317..41750c26 100644 --- a/base/base-2/Dockerfile +++ b/base/base-2/Dockerfile @@ -6,7 +6,7 @@ FROM amazonlinux:2 ADD ./base-2.tgz /opt/ RUN yum --installroot=/opt reinstall -y filesystem-3.2-25.amzn2.0.4 \ - setup-2.8.71-10.amzn2.0.1 glibc-2.26-34.amzn2 glibc-common-2.26-34.amzn2 && \ + setup-2.8.71-10.amzn2.0.1 glibc-2.26-35.amzn2 glibc-common-2.26-35.amzn2 && \ yum --installroot=/opt clean all FROM scratch From 72a9a219e35e80aea8988922542c898e5230837f Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Tue, 15 Sep 2020 08:53:09 -0400 Subject: [PATCH 233/271] Update packages list to match latest images --- base/amazonlinux1.txt | 24 +++++++++++----------- base/base-2/amazonlinux2.txt | 40 ++++++++++++++++++------------------ base/base-2/packages.txt | 22 ++++++++++---------- base/packages.txt | 30 +++++++++++++-------------- 4 files changed, 58 insertions(+), 58 deletions(-) diff --git a/base/amazonlinux1.txt b/base/amazonlinux1.txt index dbb5fa6d..a02b765a 100644 --- a/base/amazonlinux1.txt +++ b/base/amazonlinux1.txt @@ -1,10 +1,10 @@ basesystem-10.0-4.9.amzn1.noarch -bash-4.2.46-28.37.amzn1.x86_64 +bash-4.2.46-34.43.amzn1.x86_64 bzip2-libs-1.0.6-8.12.amzn1.x86_64 ca-certificates-2018.2.22-65.1.22.amzn1.noarch chkconfig-1.3.49.3-2.14.amzn1.x86_64 coreutils-8.22-15.52.amzn1.x86_64 -curl-7.61.1-12.93.amzn1.x86_64 +curl-7.61.1-12.94.amzn1.x86_64 cyrus-sasl-lib-2.1.23-13.16.amzn1.x86_64 db4-4.7.25-18.11.amzn1.x86_64 db4-utils-4.7.25-18.11.amzn1.x86_64 @@ -30,14 +30,14 @@ libassuan-2.0.3-3.3.amzn1.x86_64 libattr-2.4.46-12.10.amzn1.x86_64 libcap-2.16-5.5.8.amzn1.x86_64 libcom_err-1.43.5-2.43.amzn1.x86_64 -libcurl-7.61.1-12.93.amzn1.x86_64 +libcurl-7.61.1-12.94.amzn1.x86_64 libffi-3.0.13-16.5.amzn1.x86_64 libgcc72-7.2.1-2.59.amzn1.x86_64 libgcrypt-1.5.3-12.19.amzn1.x86_64 libgpg-error-1.11-1.12.amzn1.x86_64 libicu-50.2-4.0.amzn1.x86_64 libidn2-2.3.0-1.4.amzn1.x86_64 -libnghttp2-1.31.1-2.5.amzn1.x86_64 +libnghttp2-1.33.0-1.1.6.amzn1.x86_64 libpsl-0.6.2-1.2.amzn1.x86_64 libselinux-2.1.10-3.22.amzn1.x86_64 libsepol-2.1.7-3.12.amzn1.x86_64 @@ -46,8 +46,8 @@ libstdc++72-7.2.1-2.59.amzn1.x86_64 libtasn1-2.3-6.6.amzn1.x86_64 libunistring-0.9.3-6.1.amzn1.x86_64 libverto-0.2.5-4.9.amzn1.x86_64 -libxml2-2.9.1-6.3.52.amzn1.x86_64 -libxml2-python27-2.9.1-6.3.52.amzn1.x86_64 +libxml2-2.9.1-6.4.40.amzn1.x86_64 +libxml2-python27-2.9.1-6.4.40.amzn1.x86_64 lua-5.1.4-4.1.9.amzn1.x86_64 make-3.82-21.10.amzn1.x86_64 ncurses-5.7-4.20090207.14.amzn1.x86_64 @@ -70,21 +70,21 @@ pinentry-0.7.6-6.11.amzn1.x86_64 pkgconfig-0.27.1-2.7.amzn1.x86_64 popt-1.13-7.7.amzn1.x86_64 pth-2.0.7-9.3.7.amzn1.x86_64 -python27-2.7.18-1.137.amzn1.x86_64 +python27-2.7.18-2.139.amzn1.x86_64 python27-chardet-2.0.1-7.7.amzn1.noarch python27-iniparse-0.3.1-2.1.9.amzn1.noarch python27-kitchen-1.1.1-5.6.amzn1.noarch -python27-libs-2.7.18-1.137.amzn1.x86_64 +python27-libs-2.7.18-2.139.amzn1.x86_64 python27-pycurl-7.19.0-17.12.amzn1.x86_64 python27-pygpgme-0.3-9.12.amzn1.x86_64 python27-pyliblzma-0.5.3-11.6.amzn1.x86_64 python27-pyxattr-0.5.0-1.6.amzn1.x86_64 python27-urlgrabber-3.10-8.16.amzn1.noarch readline-6.2-9.14.amzn1.x86_64 -rpm-4.11.3-40.76.amzn1.x86_64 -rpm-build-libs-4.11.3-40.76.amzn1.x86_64 -rpm-libs-4.11.3-40.76.amzn1.x86_64 -rpm-python27-4.11.3-40.76.amzn1.x86_64 +rpm-4.11.3-40.77.amzn1.x86_64 +rpm-build-libs-4.11.3-40.77.amzn1.x86_64 +rpm-libs-4.11.3-40.77.amzn1.x86_64 +rpm-python27-4.11.3-40.77.amzn1.x86_64 sed-4.2.1-10.10.amzn1.x86_64 setup-2.8.14-20.12.amzn1.noarch shared-mime-info-1.1-9.8.amzn1.x86_64 diff --git a/base/base-2/amazonlinux2.txt b/base/base-2/amazonlinux2.txt index b6f2420b..ac90985e 100644 --- a/base/base-2/amazonlinux2.txt +++ b/base/base-2/amazonlinux2.txt @@ -1,26 +1,26 @@ -amazon-linux-extras-1.6.11-1.amzn2.noarch +amazon-linux-extras-1.6.12-1.amzn2.noarch basesystem-10.0-7.amzn2.0.1.noarch bash-4.2.46-33.amzn2.x86_64 bzip2-libs-1.0.6-13.amzn2.0.2.x86_64 -ca-certificates-2019.2.32-76.amzn2.0.2.noarch +ca-certificates-2019.2.32-76.amzn2.0.3.noarch chkconfig-1.7.4-1.amzn2.0.2.x86_64 coreutils-8.22-24.amzn2.x86_64 cpio-2.11-27.amzn2.x86_64 -curl-7.61.1-12.amzn2.0.1.x86_64 +curl-7.61.1-12.amzn2.0.2.x86_64 cyrus-sasl-lib-2.1.26-23.amzn2.x86_64 diffutils-3.3-5.amzn2.x86_64 elfutils-libelf-0.176-2.amzn2.x86_64 expat-2.1.0-10.amzn2.0.2.x86_64 -file-libs-5.11-35.amzn2.0.2.x86_64 +file-libs-5.11-36.amzn2.0.1.x86_64 filesystem-3.2-25.amzn2.0.4.x86_64 findutils-4.5.11-6.amzn2.x86_64 gawk-4.0.2-4.amzn2.1.2.x86_64 gdbm-1.13-6.amzn2.0.2.x86_64 glib2-2.56.1-5.amzn2.0.1.x86_64 -glibc-2.26-34.amzn2.x86_64 -glibc-common-2.26-34.amzn2.x86_64 -glibc-langpack-en-2.26-34.amzn2.x86_64 -glibc-minimal-langpack-2.26-34.amzn2.x86_64 +glibc-2.26-35.amzn2.x86_64 +glibc-common-2.26-35.amzn2.x86_64 +glibc-langpack-en-2.26-35.amzn2.x86_64 +glibc-minimal-langpack-2.26-35.amzn2.x86_64 gmp-6.0.0-15.amzn2.0.2.x86_64 gnupg2-2.0.22-5.amzn2.0.4.x86_64 gpgme-1.3.2-5.amzn2.0.2.x86_64 @@ -34,27 +34,27 @@ libattr-2.4.46-12.amzn2.0.2.x86_64 libblkid-2.30.2-2.amzn2.0.4.x86_64 libcap-2.22-9.amzn2.0.2.x86_64 libcom_err-1.42.9-12.amzn2.0.2.x86_64 -libcrypt-2.26-34.amzn2.x86_64 -libcurl-7.61.1-12.amzn2.0.1.x86_64 +libcrypt-2.26-35.amzn2.x86_64 +libcurl-7.61.1-12.amzn2.0.2.x86_64 libdb-5.3.21-24.amzn2.0.3.x86_64 libdb-utils-5.3.21-24.amzn2.0.3.x86_64 libffi-3.0.13-18.amzn2.0.2.x86_64 -libgcc-7.3.1-6.amzn2.0.4.x86_64 +libgcc-7.3.1-9.amzn2.x86_64 libgcrypt-1.5.3-14.amzn2.0.2.x86_64 libgpg-error-1.12-3.amzn2.0.3.x86_64 libidn2-2.3.0-1.amzn2.x86_64 libmetalink-0.1.2-7.amzn2.0.2.x86_64 libmount-2.30.2-2.amzn2.0.4.x86_64 -libnghttp2-1.39.2-1.amzn2.x86_64 +libnghttp2-1.41.0-1.amzn2.x86_64 libselinux-2.5-12.amzn2.0.2.x86_64 libsepol-2.5-8.1.amzn2.0.2.x86_64 libssh2-1.4.3-12.amzn2.2.2.x86_64 -libstdc++-7.3.1-6.amzn2.0.4.x86_64 +libstdc++-7.3.1-9.amzn2.x86_64 libtasn1-4.10-1.amzn2.0.2.x86_64 libunistring-0.9.3-9.amzn2.0.2.x86_64 libuuid-2.30.2-2.amzn2.0.4.x86_64 libverto-0.2.5-4.amzn2.0.2.x86_64 -libxml2-2.9.1-6.amzn2.3.3.x86_64 +libxml2-2.9.1-6.amzn2.4.1.x86_64 lua-5.1.4-15.amzn2.0.2.x86_64 ncurses-6.0-8.20170212.amzn2.1.3.x86_64 ncurses-base-6.0-8.20170212.amzn2.1.3.noarch @@ -69,17 +69,17 @@ nss-tools-3.44.0-7.amzn2.x86_64 nss-util-3.44.0-4.amzn2.x86_64 openldap-2.4.44-15.amzn2.x86_64 openssl-libs-1.0.2k-19.amzn2.0.3.x86_64 -p11-kit-0.23.5-3.amzn2.0.2.x86_64 -p11-kit-trust-0.23.5-3.amzn2.0.2.x86_64 +p11-kit-0.23.19-1.amzn2.x86_64 +p11-kit-trust-0.23.19-1.amzn2.x86_64 pcre-8.32-17.amzn2.0.2.x86_64 pinentry-0.8.1-17.amzn2.0.2.x86_64 popt-1.13-16.amzn2.0.2.x86_64 pth-2.0.7-23.amzn2.0.2.x86_64 pygpgme-0.3-9.amzn2.0.2.x86_64 pyliblzma-0.5.3-11.amzn2.0.2.x86_64 -python-2.7.18-1.amzn2.x86_64 +python-2.7.18-1.amzn2.0.2.x86_64 python-iniparse-0.4-9.amzn2.noarch -python-libs-2.7.18-1.amzn2.x86_64 +python-libs-2.7.18-1.amzn2.0.2.x86_64 python-pycurl-7.19.0-19.amzn2.0.2.x86_64 python-urlgrabber-3.10-9.amzn2.0.1.noarch python2-rpm-4.11.3-40.amzn2.0.4.x86_64 @@ -92,8 +92,8 @@ sed-4.2.2-5.amzn2.0.2.x86_64 setup-2.8.71-10.amzn2.0.1.noarch shared-mime-info-1.8-4.amzn2.x86_64 sqlite-3.7.17-8.amzn2.1.1.x86_64 -system-release-2-11.amzn2.x86_64 -tzdata-2019c-1.amzn2.noarch +system-release-2-12.amzn2.x86_64 +tzdata-2020a-1.amzn2.noarch vim-minimal-8.1.1602-1.amzn2.x86_64 xz-libs-5.2.2-1.amzn2.0.2.x86_64 yum-3.4.3-158.amzn2.0.4.noarch diff --git a/base/base-2/packages.txt b/base/base-2/packages.txt index 7c3c164e..18018541 100644 --- a/base/base-2/packages.txt +++ b/base/base-2/packages.txt @@ -1,14 +1,14 @@ basesystem-10.0-7.amzn2.0.1.noarch bash-4.2.46-33.amzn2.x86_64 -ca-certificates-2019.2.32-76.amzn2.0.2.noarch +ca-certificates-2019.2.32-76.amzn2.0.3.noarch chkconfig-1.7.4-1.amzn2.0.2.x86_64 coreutils-8.22-24.amzn2.x86_64 filesystem-3.2-25.amzn2.0.4.x86_64 gawk-4.0.2-4.amzn2.1.2.x86_64 -glibc-2.26-34.amzn2.x86_64 -glibc-all-langpacks-2.26-34.amzn2.x86_64 -glibc-common-2.26-34.amzn2.x86_64 -glibc-minimal-langpack-2.26-34.amzn2.x86_64 +glibc-2.26-35.amzn2.x86_64 +glibc-all-langpacks-2.26-35.amzn2.x86_64 +glibc-common-2.26-35.amzn2.x86_64 +glibc-minimal-langpack-2.26-35.amzn2.x86_64 gmp-6.0.0-15.amzn2.0.2.x86_64 grep-2.20-3.amzn2.0.2.x86_64 info-5.1-5.amzn2.x86_64 @@ -19,11 +19,11 @@ libattr-2.4.46-12.amzn2.0.2.x86_64 libcap-2.22-9.amzn2.0.2.x86_64 libcom_err-1.42.9-12.amzn2.0.2.x86_64 libffi-3.0.13-18.amzn2.0.2.x86_64 -libgcc-7.3.1-6.amzn2.0.4.x86_64 +libgcc-7.3.1-9.amzn2.x86_64 libicu-50.2-4.amzn2.x86_64 libselinux-2.5-12.amzn2.0.2.x86_64 libsepol-2.5-8.1.amzn2.0.2.x86_64 -libstdc++-7.3.1-6.amzn2.0.4.x86_64 +libstdc++-7.3.1-9.amzn2.x86_64 libtasn1-4.10-1.amzn2.0.2.x86_64 libverto-0.2.5-4.amzn2.0.2.x86_64 ncurses-6.0-8.20170212.amzn2.1.3.x86_64 @@ -33,12 +33,12 @@ nspr-4.21.0-1.amzn2.0.2.x86_64 nss-softokn-freebl-3.44.0-8.amzn2.x86_64 nss-util-3.44.0-4.amzn2.x86_64 openssl-libs-1.0.2k-19.amzn2.0.3.x86_64 -p11-kit-0.23.5-3.amzn2.0.2.x86_64 -p11-kit-trust-0.23.5-3.amzn2.0.2.x86_64 +p11-kit-0.23.19-1.amzn2.x86_64 +p11-kit-trust-0.23.19-1.amzn2.x86_64 pcre-8.32-17.amzn2.0.2.x86_64 popt-1.13-16.amzn2.0.2.x86_64 sed-4.2.2-5.amzn2.0.2.x86_64 setup-2.8.71-10.amzn2.0.1.noarch -system-release-2-11.amzn2.x86_64 -tzdata-2019c-1.amzn2.noarch +system-release-2-12.amzn2.x86_64 +tzdata-2020a-1.amzn2.noarch zlib-1.2.7-18.amzn2.x86_64 diff --git a/base/packages.txt b/base/packages.txt index a4d5ef92..b1cd85be 100644 --- a/base/packages.txt +++ b/base/packages.txt @@ -1,14 +1,14 @@ -ImageMagick-6.7.8.9-15.21.amzn1.x86_64 +ImageMagick-6.9.10.68-3.22.amzn1.x86_64 alsa-lib-1.0.22-3.9.amzn1.x86_64 audit-libs-2.6.5-3.28.amzn1.x86_64 avahi-libs-0.6.25-12.17.amzn1.x86_64 basesystem-10.0-4.9.amzn1.noarch -bash-4.2.46-28.37.amzn1.x86_64 +bash-4.2.46-34.43.amzn1.x86_64 binutils-2.25.1-31.base.66.amzn1.x86_64 bzip2-1.0.6-8.12.amzn1.x86_64 bzip2-libs-1.0.6-8.12.amzn1.x86_64 ca-certificates-2018.2.22-65.1.22.amzn1.noarch -cairo-1.12.14-6.8.amzn1.x86_64 +cairo-1.12.14-6.9.amzn1.x86_64 chkconfig-1.3.49.3-2.14.amzn1.x86_64 compat-gmp4-4.3.2-1.14.amzn1.x86_64 copy-jdk-configs-3.3-10.3.amzn1.noarch @@ -17,7 +17,7 @@ cpio-2.10-12.12.amzn1.x86_64 cracklib-2.8.16-4.14.amzn1.x86_64 cracklib-dicts-2.8.16-4.14.amzn1.x86_64 cups-libs-1.4.2-67.21.amzn1.x86_64 -curl-7.61.1-12.93.amzn1.x86_64 +curl-7.61.1-12.94.amzn1.x86_64 cyrus-sasl-lib-2.1.23-13.16.amzn1.x86_64 db4-4.7.25-18.11.amzn1.x86_64 db4-utils-4.7.25-18.11.amzn1.x86_64 @@ -84,7 +84,7 @@ libblkid-2.23.2-59.29.amzn1.x86_64 libcap-2.16-5.5.8.amzn1.x86_64 libcap-ng-0.7.5-4.15.amzn1.x86_64 libcom_err-1.43.5-2.43.amzn1.x86_64 -libcurl-7.61.1-12.93.amzn1.x86_64 +libcurl-7.61.1-12.94.amzn1.x86_64 libdrm-2.4.82-1.14.amzn1.x86_64 libffi-3.0.13-16.5.amzn1.x86_64 libfontenc-1.0.5-2.6.amzn1.x86_64 @@ -98,7 +98,7 @@ libicu-50.2-4.0.amzn1.x86_64 libidn2-2.3.0-1.4.amzn1.x86_64 libjpeg-turbo-1.2.90-8.16.amzn1.x86_64 libmount-2.23.2-59.29.amzn1.x86_64 -libnghttp2-1.31.1-2.5.amzn1.x86_64 +libnghttp2-1.33.0-1.1.6.amzn1.x86_64 libpciaccess-0.13.1-4.1.11.amzn1.x86_64 libpng-1.2.49-2.14.amzn1.x86_64 libpsl-0.6.2-1.2.amzn1.x86_64 @@ -119,7 +119,7 @@ libuuid-2.23.2-59.29.amzn1.x86_64 libverto-0.2.5-4.9.amzn1.x86_64 libwmf-lite-0.2.8.4-41.13.amzn1.x86_64 libxcb-1.11-2.21.amzn1.x86_64 -libxml2-2.9.1-6.3.52.amzn1.x86_64 +libxml2-2.9.1-6.4.40.amzn1.x86_64 libxshmfence-1.2-1.4.amzn1.x86_64 libxslt-1.1.28-5.13.amzn1.x86_64 lksctp-tools-1.0.10-7.7.amzn1.x86_64 @@ -181,23 +181,23 @@ popt-1.13-7.7.amzn1.x86_64 procps-3.2.8-45.16.amzn1.x86_64 psmisc-22.20-8.12.amzn1.x86_64 pth-2.0.7-9.3.7.amzn1.x86_64 -python27-2.7.18-1.137.amzn1.x86_64 +python27-2.7.18-1.138.amzn1.x86_64 python27-iniparse-0.3.1-2.1.9.amzn1.noarch -python27-libs-2.7.18-1.137.amzn1.x86_64 +python27-libs-2.7.18-1.138.amzn1.x86_64 python27-pycurl-7.19.0-17.12.amzn1.x86_64 python27-pygpgme-0.3-9.12.amzn1.x86_64 python27-pyliblzma-0.5.3-11.6.amzn1.x86_64 python27-pyxattr-0.5.0-1.6.amzn1.x86_64 python27-urlgrabber-3.10-8.16.amzn1.noarch -python36-3.6.10-1.16.amzn1.x86_64 -python36-libs-3.6.10-1.16.amzn1.x86_64 +python36-3.6.11-1.17.amzn1.x86_64 +python36-libs-3.6.11-1.17.amzn1.x86_64 python36-pip-9.0.3-1.27.amzn1.noarch python36-setuptools-36.2.7-1.33.amzn1.noarch readline-6.2-9.14.amzn1.x86_64 -rpm-4.11.3-40.76.amzn1.x86_64 -rpm-build-libs-4.11.3-40.76.amzn1.x86_64 -rpm-libs-4.11.3-40.76.amzn1.x86_64 -rpm-python27-4.11.3-40.76.amzn1.x86_64 +rpm-4.11.3-40.77.amzn1.x86_64 +rpm-build-libs-4.11.3-40.77.amzn1.x86_64 +rpm-libs-4.11.3-40.77.amzn1.x86_64 +rpm-python27-4.11.3-40.77.amzn1.x86_64 sed-4.2.1-10.10.amzn1.x86_64 setup-2.8.14-20.12.amzn1.noarch shadow-utils-4.1.4.2-13.10.amzn1.x86_64 From 8ae26020ab7de9faad750a9e11f779b8b605fa7e Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Wed, 23 Sep 2020 08:32:52 -0400 Subject: [PATCH 234/271] Bump aws-sam-cli to 1.3.0 --- dotnetcore2.0/build/Dockerfile | 2 +- dotnetcore2.1/build/Dockerfile | 2 +- .../run/MockBootstraps/lib/Bootstrap.dll | Bin 147968 -> 147968 bytes .../run/MockBootstraps/lib/Bootstrap.pdb | Bin 45932 -> 45932 bytes dotnetcore3.1/build/Dockerfile | 2 +- go1.x/build/Dockerfile | 2 +- java11/build/Dockerfile | 2 +- java8.al2/build/Dockerfile | 2 +- java8/build/Dockerfile | 2 +- nodejs10.x/build/Dockerfile | 2 +- nodejs12.x/build/Dockerfile | 2 +- nodejs4.3/build/Dockerfile | 2 +- nodejs6.10/build/Dockerfile | 2 +- nodejs8.10/build/Dockerfile | 2 +- provided.al2/build/Dockerfile | 2 +- provided/build/Dockerfile | 2 +- python3.6/build/Dockerfile | 2 +- python3.7/build/Dockerfile | 2 +- python3.8/build/Dockerfile | 2 +- ruby2.5/build/Dockerfile | 2 +- ruby2.7/build/Dockerfile | 2 +- 21 files changed, 19 insertions(+), 19 deletions(-) diff --git a/dotnetcore2.0/build/Dockerfile b/dotnetcore2.0/build/Dockerfile index 7972fb81..eaf95a1e 100644 --- a/dotnetcore2.0/build/Dockerfile +++ b/dotnetcore2.0/build/Dockerfile @@ -26,6 +26,6 @@ RUN source /usr/local/pipx/shared/bin/activate && \ pipx install pipenv && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.2.0 + pipx install aws-sam-cli==1.3.0 CMD ["dotnet", "build"] diff --git a/dotnetcore2.1/build/Dockerfile b/dotnetcore2.1/build/Dockerfile index e5201f3f..e5bd0c8b 100644 --- a/dotnetcore2.1/build/Dockerfile +++ b/dotnetcore2.1/build/Dockerfile @@ -27,7 +27,7 @@ RUN source /usr/local/pipx/shared/bin/activate && \ pipx install pipenv && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.2.0 && \ + pipx install aws-sam-cli==1.3.0 && \ dotnet tool install --global Amazon.Lambda.Tools --version 3.3.1 CMD ["dotnet", "build"] diff --git a/dotnetcore2.1/run/MockBootstraps/lib/Bootstrap.dll b/dotnetcore2.1/run/MockBootstraps/lib/Bootstrap.dll index 2adc509b9298cd3e15d84431b050b26ebc7b59de..0711afac7c936960e201a819b464bfa557ba87bd 100644 GIT binary patch delta 114 zcmZo@;cRH(oY29dW;gX{W6#zeMvF%RPuZJZO5{a&ZTn__(;vFXsyH=c@Yq1&%KVoV5ODQY=z zYr2IwQ-FZ`ytU1Lr2^g7y!#k_bh_H3=`+lkG8Ler*L0wwK=o0t?&ob`&Y!;M@3)^e L+Z8RC?sEbFO@cUp diff --git a/dotnetcore2.1/run/MockBootstraps/lib/Bootstrap.pdb b/dotnetcore2.1/run/MockBootstraps/lib/Bootstrap.pdb index 4513532ae742c9fd3185a8e1f3beda602f728f5a..ddc2c4d463f967e8be6d2c0abf31c5ea110e3a2c 100644 GIT binary patch delta 77 zcmV-T0J8t=<^t^I0+4(ZW_ZoC=%$fGpvxbWI2-v|WKp5`v5>o_Ci47yy%4!(Hyv4D j(eLE^)mlwbNqS72Oa(w^LHJ(I8X{N#03|51ai{wWJMty& delta 77 zcmV-T0J8t=<^t^I0+4(ZN1m;N{Tfk5tnTqw#g``Ha)iLzv5>o_CfkYW5fQ27(TQ`~ jV3R9PBC2)ye9M$0S-18b_~l^COd?nS03{K#ai{wWc`+z# diff --git a/dotnetcore3.1/build/Dockerfile b/dotnetcore3.1/build/Dockerfile index 2f230a03..0d8f414c 100644 --- a/dotnetcore3.1/build/Dockerfile +++ b/dotnetcore3.1/build/Dockerfile @@ -22,7 +22,7 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.2.0 && \ + pipx install aws-sam-cli==1.3.0 && \ dotnet tool install --global Amazon.Lambda.Tools --version 4.0.0 CMD ["dotnet", "build"] diff --git a/go1.x/build/Dockerfile b/go1.x/build/Dockerfile index fe38995c..403ab19b 100644 --- a/go1.x/build/Dockerfile +++ b/go1.x/build/Dockerfile @@ -20,6 +20,6 @@ RUN rm -rf /var/runtime /var/lang && \ RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.2.0 + pipx install aws-sam-cli==1.3.0 CMD ["dep", "ensure"] diff --git a/java11/build/Dockerfile b/java11/build/Dockerfile index ec6170d3..a1cdcf83 100644 --- a/java11/build/Dockerfile +++ b/java11/build/Dockerfile @@ -16,4 +16,4 @@ ENV PATH="/usr/local/gradle/gradle-6.6.1/bin:/usr/local/maven/apache-maven-3.6.3 # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.2.0 + pipx install aws-sam-cli==1.3.0 diff --git a/java8.al2/build/Dockerfile b/java8.al2/build/Dockerfile index 622dd0b4..9ee02be0 100644 --- a/java8.al2/build/Dockerfile +++ b/java8.al2/build/Dockerfile @@ -19,4 +19,4 @@ ENV PATH="/usr/local/gradle/gradle-6.6.1/bin:/usr/local/maven/apache-maven-3.6.3 # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.2.0 + pipx install aws-sam-cli==1.3.0 diff --git a/java8/build/Dockerfile b/java8/build/Dockerfile index 28880ad8..536818ec 100644 --- a/java8/build/Dockerfile +++ b/java8/build/Dockerfile @@ -19,4 +19,4 @@ ENV PATH="/usr/local/gradle/gradle-6.6.1/bin:/usr/local/maven/apache-maven-3.6.3 RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.2.0 + pipx install aws-sam-cli==1.3.0 diff --git a/nodejs10.x/build/Dockerfile b/nodejs10.x/build/Dockerfile index ec77907b..571e7a8f 100644 --- a/nodejs10.x/build/Dockerfile +++ b/nodejs10.x/build/Dockerfile @@ -11,4 +11,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.2.0 + pipx install aws-sam-cli==1.3.0 diff --git a/nodejs12.x/build/Dockerfile b/nodejs12.x/build/Dockerfile index 13e3d46f..8213ebb0 100644 --- a/nodejs12.x/build/Dockerfile +++ b/nodejs12.x/build/Dockerfile @@ -11,4 +11,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.2.0 + pipx install aws-sam-cli==1.3.0 diff --git a/nodejs4.3/build/Dockerfile b/nodejs4.3/build/Dockerfile index 84584a60..b7ddf5f3 100644 --- a/nodejs4.3/build/Dockerfile +++ b/nodejs4.3/build/Dockerfile @@ -14,6 +14,6 @@ RUN rm -rf /var/runtime /var/lang && \ RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.2.0 + pipx install aws-sam-cli==1.3.0 CMD ["npm", "rebuild"] diff --git a/nodejs6.10/build/Dockerfile b/nodejs6.10/build/Dockerfile index 426be790..09339351 100644 --- a/nodejs6.10/build/Dockerfile +++ b/nodejs6.10/build/Dockerfile @@ -14,6 +14,6 @@ RUN rm -rf /var/runtime /var/lang && \ RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.2.0 + pipx install aws-sam-cli==1.3.0 CMD ["npm", "rebuild"] diff --git a/nodejs8.10/build/Dockerfile b/nodejs8.10/build/Dockerfile index 27ce85a2..a41a8f8b 100644 --- a/nodejs8.10/build/Dockerfile +++ b/nodejs8.10/build/Dockerfile @@ -14,6 +14,6 @@ RUN rm -rf /var/runtime /var/lang && \ RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.2.0 + pipx install aws-sam-cli==1.3.0 CMD ["npm", "rebuild"] diff --git a/provided.al2/build/Dockerfile b/provided.al2/build/Dockerfile index 78a57c0f..0563fd82 100644 --- a/provided.al2/build/Dockerfile +++ b/provided.al2/build/Dockerfile @@ -3,4 +3,4 @@ # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.2.0 + pipx install aws-sam-cli==1.3.0 diff --git a/provided/build/Dockerfile b/provided/build/Dockerfile index a965582a..a8344e09 100644 --- a/provided/build/Dockerfile +++ b/provided/build/Dockerfile @@ -5,4 +5,4 @@ FROM lambci/lambda-base:build RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.2.0 + pipx install aws-sam-cli==1.3.0 diff --git a/python3.6/build/Dockerfile b/python3.6/build/Dockerfile index cb8fecce..4689d728 100644 --- a/python3.6/build/Dockerfile +++ b/python3.6/build/Dockerfile @@ -26,4 +26,4 @@ RUN pip install -U pip setuptools wheel --no-cache-dir && \ pipx install poetry==1.0.10 && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.2.0 + pipx install aws-sam-cli==1.3.0 diff --git a/python3.7/build/Dockerfile b/python3.7/build/Dockerfile index ad5f9da9..664e0a7d 100644 --- a/python3.7/build/Dockerfile +++ b/python3.7/build/Dockerfile @@ -18,4 +18,4 @@ RUN pip install -U pip setuptools wheel --no-cache-dir && \ pipx install poetry==1.0.10 && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.2.0 + pipx install aws-sam-cli==1.3.0 diff --git a/python3.8/build/Dockerfile b/python3.8/build/Dockerfile index ea9be052..c0d233ad 100644 --- a/python3.8/build/Dockerfile +++ b/python3.8/build/Dockerfile @@ -18,4 +18,4 @@ RUN pip install -U pip setuptools wheel --no-cache-dir && \ pipx install poetry==1.0.10 && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.2.0 + pipx install aws-sam-cli==1.3.0 diff --git a/ruby2.5/build/Dockerfile b/ruby2.5/build/Dockerfile index 24629792..366eac1c 100644 --- a/ruby2.5/build/Dockerfile +++ b/ruby2.5/build/Dockerfile @@ -16,6 +16,6 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.2.0 && \ + pipx install aws-sam-cli==1.3.0 && \ gem update --system --no-document && \ gem install --no-document bundler -v '~> 2.1' diff --git a/ruby2.7/build/Dockerfile b/ruby2.7/build/Dockerfile index 3fa80f40..52e12d6c 100644 --- a/ruby2.7/build/Dockerfile +++ b/ruby2.7/build/Dockerfile @@ -14,6 +14,6 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.2.0 && \ + pipx install aws-sam-cli==1.3.0 && \ gem update --system --no-document && \ gem install --no-document bundler -v '~> 2.1' From 247933cd92e389f4f96de5466b9adb1a6d45f82f Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Wed, 23 Sep 2020 08:35:50 -0400 Subject: [PATCH 235/271] Remove date-tagged after publishing --- base/publish-all.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/base/publish-all.sh b/base/publish-all.sh index da170994..aa86df18 100755 --- a/base/publish-all.sh +++ b/base/publish-all.sh @@ -19,6 +19,7 @@ for RUNTIME in $RUNTIMES; do docker tag lambci/lambda:${RUNTIME} lambci/lambda:${PUBLISH_DATE}-${RUNTIME} docker push lambci/lambda:${RUNTIME} docker push lambci/lambda:${PUBLISH_DATE}-${RUNTIME} + docker rmi lambci/lambda:${PUBLISH_DATE}-${RUNTIME} done docker push lambci/lambda-base:build From 039ef1f767e2b1c0b443376c297ed71efca0f561 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Thu, 24 Sep 2020 19:50:39 -0400 Subject: [PATCH 236/271] Bump aws-sam-cli to 1.3.2 --- dotnetcore2.0/build/Dockerfile | 2 +- dotnetcore2.1/build/Dockerfile | 2 +- dotnetcore3.1/build/Dockerfile | 2 +- go1.x/build/Dockerfile | 2 +- java11/build/Dockerfile | 2 +- java8.al2/build/Dockerfile | 2 +- java8/build/Dockerfile | 2 +- nodejs10.x/build/Dockerfile | 2 +- nodejs12.x/build/Dockerfile | 2 +- nodejs4.3/build/Dockerfile | 2 +- nodejs6.10/build/Dockerfile | 2 +- nodejs8.10/build/Dockerfile | 2 +- provided.al2/build/Dockerfile | 2 +- provided/build/Dockerfile | 2 +- python3.6/build/Dockerfile | 2 +- python3.7/build/Dockerfile | 2 +- python3.8/build/Dockerfile | 2 +- ruby2.5/build/Dockerfile | 2 +- ruby2.7/build/Dockerfile | 2 +- 19 files changed, 19 insertions(+), 19 deletions(-) diff --git a/dotnetcore2.0/build/Dockerfile b/dotnetcore2.0/build/Dockerfile index eaf95a1e..d8c9a82d 100644 --- a/dotnetcore2.0/build/Dockerfile +++ b/dotnetcore2.0/build/Dockerfile @@ -26,6 +26,6 @@ RUN source /usr/local/pipx/shared/bin/activate && \ pipx install pipenv && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.3.0 + pipx install aws-sam-cli==1.3.2 CMD ["dotnet", "build"] diff --git a/dotnetcore2.1/build/Dockerfile b/dotnetcore2.1/build/Dockerfile index e5bd0c8b..61104698 100644 --- a/dotnetcore2.1/build/Dockerfile +++ b/dotnetcore2.1/build/Dockerfile @@ -27,7 +27,7 @@ RUN source /usr/local/pipx/shared/bin/activate && \ pipx install pipenv && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.3.0 && \ + pipx install aws-sam-cli==1.3.2 && \ dotnet tool install --global Amazon.Lambda.Tools --version 3.3.1 CMD ["dotnet", "build"] diff --git a/dotnetcore3.1/build/Dockerfile b/dotnetcore3.1/build/Dockerfile index 0d8f414c..feca3f3a 100644 --- a/dotnetcore3.1/build/Dockerfile +++ b/dotnetcore3.1/build/Dockerfile @@ -22,7 +22,7 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.3.0 && \ + pipx install aws-sam-cli==1.3.2 && \ dotnet tool install --global Amazon.Lambda.Tools --version 4.0.0 CMD ["dotnet", "build"] diff --git a/go1.x/build/Dockerfile b/go1.x/build/Dockerfile index 403ab19b..2fbd81a4 100644 --- a/go1.x/build/Dockerfile +++ b/go1.x/build/Dockerfile @@ -20,6 +20,6 @@ RUN rm -rf /var/runtime /var/lang && \ RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.3.0 + pipx install aws-sam-cli==1.3.2 CMD ["dep", "ensure"] diff --git a/java11/build/Dockerfile b/java11/build/Dockerfile index a1cdcf83..8c6ad828 100644 --- a/java11/build/Dockerfile +++ b/java11/build/Dockerfile @@ -16,4 +16,4 @@ ENV PATH="/usr/local/gradle/gradle-6.6.1/bin:/usr/local/maven/apache-maven-3.6.3 # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.3.0 + pipx install aws-sam-cli==1.3.2 diff --git a/java8.al2/build/Dockerfile b/java8.al2/build/Dockerfile index 9ee02be0..0efa5e52 100644 --- a/java8.al2/build/Dockerfile +++ b/java8.al2/build/Dockerfile @@ -19,4 +19,4 @@ ENV PATH="/usr/local/gradle/gradle-6.6.1/bin:/usr/local/maven/apache-maven-3.6.3 # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.3.0 + pipx install aws-sam-cli==1.3.2 diff --git a/java8/build/Dockerfile b/java8/build/Dockerfile index 536818ec..48b9d0d7 100644 --- a/java8/build/Dockerfile +++ b/java8/build/Dockerfile @@ -19,4 +19,4 @@ ENV PATH="/usr/local/gradle/gradle-6.6.1/bin:/usr/local/maven/apache-maven-3.6.3 RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.3.0 + pipx install aws-sam-cli==1.3.2 diff --git a/nodejs10.x/build/Dockerfile b/nodejs10.x/build/Dockerfile index 571e7a8f..2bc015fa 100644 --- a/nodejs10.x/build/Dockerfile +++ b/nodejs10.x/build/Dockerfile @@ -11,4 +11,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.3.0 + pipx install aws-sam-cli==1.3.2 diff --git a/nodejs12.x/build/Dockerfile b/nodejs12.x/build/Dockerfile index 8213ebb0..f97ad5aa 100644 --- a/nodejs12.x/build/Dockerfile +++ b/nodejs12.x/build/Dockerfile @@ -11,4 +11,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.3.0 + pipx install aws-sam-cli==1.3.2 diff --git a/nodejs4.3/build/Dockerfile b/nodejs4.3/build/Dockerfile index b7ddf5f3..e6266985 100644 --- a/nodejs4.3/build/Dockerfile +++ b/nodejs4.3/build/Dockerfile @@ -14,6 +14,6 @@ RUN rm -rf /var/runtime /var/lang && \ RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.3.0 + pipx install aws-sam-cli==1.3.2 CMD ["npm", "rebuild"] diff --git a/nodejs6.10/build/Dockerfile b/nodejs6.10/build/Dockerfile index 09339351..dc294953 100644 --- a/nodejs6.10/build/Dockerfile +++ b/nodejs6.10/build/Dockerfile @@ -14,6 +14,6 @@ RUN rm -rf /var/runtime /var/lang && \ RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.3.0 + pipx install aws-sam-cli==1.3.2 CMD ["npm", "rebuild"] diff --git a/nodejs8.10/build/Dockerfile b/nodejs8.10/build/Dockerfile index a41a8f8b..e3d41085 100644 --- a/nodejs8.10/build/Dockerfile +++ b/nodejs8.10/build/Dockerfile @@ -14,6 +14,6 @@ RUN rm -rf /var/runtime /var/lang && \ RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.3.0 + pipx install aws-sam-cli==1.3.2 CMD ["npm", "rebuild"] diff --git a/provided.al2/build/Dockerfile b/provided.al2/build/Dockerfile index 0563fd82..718bd174 100644 --- a/provided.al2/build/Dockerfile +++ b/provided.al2/build/Dockerfile @@ -3,4 +3,4 @@ # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.3.0 + pipx install aws-sam-cli==1.3.2 diff --git a/provided/build/Dockerfile b/provided/build/Dockerfile index a8344e09..b2f29e2b 100644 --- a/provided/build/Dockerfile +++ b/provided/build/Dockerfile @@ -5,4 +5,4 @@ FROM lambci/lambda-base:build RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.3.0 + pipx install aws-sam-cli==1.3.2 diff --git a/python3.6/build/Dockerfile b/python3.6/build/Dockerfile index 4689d728..88b30e62 100644 --- a/python3.6/build/Dockerfile +++ b/python3.6/build/Dockerfile @@ -26,4 +26,4 @@ RUN pip install -U pip setuptools wheel --no-cache-dir && \ pipx install poetry==1.0.10 && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.3.0 + pipx install aws-sam-cli==1.3.2 diff --git a/python3.7/build/Dockerfile b/python3.7/build/Dockerfile index 664e0a7d..8d72e0fa 100644 --- a/python3.7/build/Dockerfile +++ b/python3.7/build/Dockerfile @@ -18,4 +18,4 @@ RUN pip install -U pip setuptools wheel --no-cache-dir && \ pipx install poetry==1.0.10 && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.3.0 + pipx install aws-sam-cli==1.3.2 diff --git a/python3.8/build/Dockerfile b/python3.8/build/Dockerfile index c0d233ad..bdc2a938 100644 --- a/python3.8/build/Dockerfile +++ b/python3.8/build/Dockerfile @@ -18,4 +18,4 @@ RUN pip install -U pip setuptools wheel --no-cache-dir && \ pipx install poetry==1.0.10 && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.3.0 + pipx install aws-sam-cli==1.3.2 diff --git a/ruby2.5/build/Dockerfile b/ruby2.5/build/Dockerfile index 366eac1c..537d678f 100644 --- a/ruby2.5/build/Dockerfile +++ b/ruby2.5/build/Dockerfile @@ -16,6 +16,6 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.3.0 && \ + pipx install aws-sam-cli==1.3.2 && \ gem update --system --no-document && \ gem install --no-document bundler -v '~> 2.1' diff --git a/ruby2.7/build/Dockerfile b/ruby2.7/build/Dockerfile index 52e12d6c..1dfb7fc1 100644 --- a/ruby2.7/build/Dockerfile +++ b/ruby2.7/build/Dockerfile @@ -14,6 +14,6 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.3.0 && \ + pipx install aws-sam-cli==1.3.2 && \ gem update --system --no-document && \ gem install --no-document bundler -v '~> 2.1' From f16b40a3207ae9eab8d7c6459532f323882ce996 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=A1bor=20Lipt=C3=A1k?= Date: Thu, 1 Oct 2020 09:23:29 -0400 Subject: [PATCH 237/271] Add Github Actions build (#309) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Gábor Lipták --- .github/workflows/ci-build.yml | 20 ++++++++++++++++++++ .github/workflows/ci-run.yml | 20 ++++++++++++++++++++ base/build-all-build.sh | 14 ++++++++++++++ base/build-all-run.sh | 16 ++++++++++++++++ base/build-all.sh | 23 +++-------------------- 5 files changed, 73 insertions(+), 20 deletions(-) create mode 100644 .github/workflows/ci-build.yml create mode 100644 .github/workflows/ci-run.yml create mode 100755 base/build-all-build.sh create mode 100755 base/build-all-run.sh diff --git a/.github/workflows/ci-build.yml b/.github/workflows/ci-build.yml new file mode 100644 index 00000000..801ac7c5 --- /dev/null +++ b/.github/workflows/ci-build.yml @@ -0,0 +1,20 @@ +name: ci-build + +on: + push: + branches: + - master + pull_request: + +jobs: + build: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v2 + - name: Build build Docker images + working-directory: base + run: ./build-all-build.sh + - name: List Docker images + run: | + docker images diff --git a/.github/workflows/ci-run.yml b/.github/workflows/ci-run.yml new file mode 100644 index 00000000..880bb7df --- /dev/null +++ b/.github/workflows/ci-run.yml @@ -0,0 +1,20 @@ +name: ci-run + +on: + push: + branches: + - master + pull_request: + +jobs: + build: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v2 + - name: Build run Docker images + working-directory: base + run: ./build-all-run.sh + - name: List Docker images + run: | + docker images diff --git a/base/build-all-build.sh b/base/build-all-build.sh new file mode 100755 index 00000000..29f2f25d --- /dev/null +++ b/base/build-all-build.sh @@ -0,0 +1,14 @@ +#!/bin/bash +set -e + +RUNTIMES="provided go1.x nodejs4.3 nodejs6.10 nodejs8.10 python2.7 python3.6 python3.7 ruby2.5 java8 dotnetcore2.0 dotnetcore2.1 provided.al2 nodejs10.x nodejs12.x python3.8 ruby2.7 java8.al2 java11 dotnetcore3.1" + +TOP_DIR="${PWD}/.." + +for RUNTIME in $RUNTIMES; do + echo build-${RUNTIME} + + cd ${TOP_DIR}/${RUNTIME}/build + + docker build -t lambci/lambda:build-${RUNTIME} . +done diff --git a/base/build-all-run.sh b/base/build-all-run.sh new file mode 100755 index 00000000..0e7ebe4c --- /dev/null +++ b/base/build-all-run.sh @@ -0,0 +1,16 @@ +#!/bin/bash +set -e + +RUNTIMES="provided go1.x nodejs4.3 nodejs6.10 nodejs8.10 python2.7 python3.6 python3.7 ruby2.5 java8 dotnetcore2.0 dotnetcore2.1 provided.al2 nodejs10.x nodejs12.x python3.8 ruby2.7 java8.al2 java11 dotnetcore3.1" + +TOP_DIR="${PWD}/.." + +for RUNTIME in $RUNTIMES; do + echo $RUNTIME + + cd ${TOP_DIR}/${RUNTIME}/run + + [ -x ./update_libs.sh ] && ./update_libs.sh + + docker build --no-cache -t lambci/lambda:${RUNTIME} . +done diff --git a/base/build-all.sh b/base/build-all.sh index 9a0e6e31..aeb952d8 100755 --- a/base/build-all.sh +++ b/base/build-all.sh @@ -1,23 +1,6 @@ #!/bin/bash +set -e -RUNTIMES="provided go1.x nodejs4.3 nodejs6.10 nodejs8.10 python2.7 python3.6 python3.7 ruby2.5 java8 dotnetcore2.0 dotnetcore2.1 provided.al2 nodejs10.x nodejs12.x python3.8 ruby2.7 java8.al2 java11 dotnetcore3.1" +${PWD}/build-all-run.sh -TOP_DIR="${PWD}/.." - -for RUNTIME in $RUNTIMES; do - echo $RUNTIME - - cd ${TOP_DIR}/${RUNTIME}/run - - [ -x ./update_libs.sh ] && ./update_libs.sh - - docker build --no-cache -t lambci/lambda:${RUNTIME} . -done - -for RUNTIME in $RUNTIMES; do - echo build-${RUNTIME} - - cd ${TOP_DIR}/${RUNTIME}/build - - docker build -t lambci/lambda:build-${RUNTIME} . -done +${PWD}/build-all-build.sh From c7b359eef2f54a640d925a92202e8860bd41a60e Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Thu, 1 Oct 2020 09:42:00 -0400 Subject: [PATCH 238/271] Split runtimes out into separate script --- base/build-all-build.sh | 2 +- base/build-all-run.sh | 2 +- base/dump.sh | 2 +- base/publish-all.sh | 2 +- base/runtimes.sh | 2 ++ base/tag-all.sh | 2 +- 6 files changed, 7 insertions(+), 5 deletions(-) create mode 100644 base/runtimes.sh diff --git a/base/build-all-build.sh b/base/build-all-build.sh index 29f2f25d..d5b958be 100755 --- a/base/build-all-build.sh +++ b/base/build-all-build.sh @@ -1,7 +1,7 @@ #!/bin/bash set -e -RUNTIMES="provided go1.x nodejs4.3 nodejs6.10 nodejs8.10 python2.7 python3.6 python3.7 ruby2.5 java8 dotnetcore2.0 dotnetcore2.1 provided.al2 nodejs10.x nodejs12.x python3.8 ruby2.7 java8.al2 java11 dotnetcore3.1" +source ${PWD}/runtimes.sh TOP_DIR="${PWD}/.." diff --git a/base/build-all-run.sh b/base/build-all-run.sh index 0e7ebe4c..27abcaab 100755 --- a/base/build-all-run.sh +++ b/base/build-all-run.sh @@ -1,7 +1,7 @@ #!/bin/bash set -e -RUNTIMES="provided go1.x nodejs4.3 nodejs6.10 nodejs8.10 python2.7 python3.6 python3.7 ruby2.5 java8 dotnetcore2.0 dotnetcore2.1 provided.al2 nodejs10.x nodejs12.x python3.8 ruby2.7 java8.al2 java11 dotnetcore3.1" +source ${PWD}/runtimes.sh TOP_DIR="${PWD}/.." diff --git a/base/dump.sh b/base/dump.sh index 608e2bae..944988d2 100755 --- a/base/dump.sh +++ b/base/dump.sh @@ -1,6 +1,6 @@ #!/bin/bash -RUNTIMES="node43 node610 node810 node10x node12x python27 python36 python37 python38 ruby25 ruby27 java8 java11 go1x dotnetcore20 dotnetcore21 dotnetcore31 provided" +source ${PWD}/runtimes.sh for RUNTIME in $RUNTIMES; do echo $RUNTIME diff --git a/base/publish-all.sh b/base/publish-all.sh index aa86df18..a2fb0c2b 100755 --- a/base/publish-all.sh +++ b/base/publish-all.sh @@ -1,6 +1,6 @@ #!/bin/bash -RUNTIMES="provided go1.x nodejs4.3 nodejs6.10 nodejs8.10 python2.7 python3.6 python3.7 ruby2.5 java8 dotnetcore2.0 dotnetcore2.1 provided.al2 nodejs10.x nodejs12.x python3.8 ruby2.7 java8.al2 java11 dotnetcore3.1" +source ${PWD}/runtimes.sh echo -n "Enter repository passphrase: " read -s DOCKER_CONTENT_TRUST_REPOSITORY_PASSPHRASE diff --git a/base/runtimes.sh b/base/runtimes.sh new file mode 100644 index 00000000..22080f09 --- /dev/null +++ b/base/runtimes.sh @@ -0,0 +1,2 @@ +# RUNTIMES="provided go1.x nodejs4.3 nodejs6.10 nodejs8.10 python2.7 python3.6 python3.7 ruby2.5 java8 dotnetcore2.0 dotnetcore2.1 provided.al2 nodejs10.x nodejs12.x python3.8 ruby2.7 java8.al2 java11 dotnetcore3.1" +RUNTIMES="nodejs12.x" diff --git a/base/tag-all.sh b/base/tag-all.sh index 0591bf34..a8314ee9 100755 --- a/base/tag-all.sh +++ b/base/tag-all.sh @@ -1,6 +1,6 @@ #!/bin/bash -RUNTIMES="provided go1.x nodejs4.3 nodejs6.10 nodejs8.10 python2.7 python3.6 python3.7 ruby2.5 java8 dotnetcore2.0 dotnetcore2.1 provided.al2 nodejs10.x nodejs12.x python3.8 ruby2.7 java8.al2 java11 dotnetcore3.1" +source ${PWD}/runtimes.sh git tag -f latest From 2d566e44b5313882239c36fa792681e795092df9 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Thu, 1 Oct 2020 09:43:08 -0400 Subject: [PATCH 239/271] Update poetry to 1.1.0 --- python2.7/build/Dockerfile | 2 +- python3.6/build/Dockerfile | 2 +- python3.7/build/Dockerfile | 2 +- python3.8/build/Dockerfile | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/python2.7/build/Dockerfile b/python2.7/build/Dockerfile index ed8e9abe..5a6fcc01 100644 --- a/python2.7/build/Dockerfile +++ b/python2.7/build/Dockerfile @@ -8,7 +8,7 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ pip install -U 'virtualenv>=16.0.0,<20.0.0' pipenv wheel --no-cache-dir && \ - curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.10/get-poetry.py | POETRY_VERSION=1.0.10 python && \ + curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.1.0/get-poetry.py | POETRY_VERSION=1.1.0 python && \ pip install -U awscli boto3 aws-sam-cli==0.22.0 aws-lambda-builders==0.4.0 --no-cache-dir ENV PATH=/root/.poetry/bin:$PATH diff --git a/python3.6/build/Dockerfile b/python3.6/build/Dockerfile index 88b30e62..4937e57d 100644 --- a/python3.6/build/Dockerfile +++ b/python3.6/build/Dockerfile @@ -23,7 +23,7 @@ RUN pip install -U pip setuptools wheel --no-cache-dir && \ pip install pipx --no-cache-dir && \ pipx install virtualenv && \ pipx install pipenv && \ - pipx install poetry==1.0.10 && \ + pipx install poetry==1.1.0 && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ pipx install aws-sam-cli==1.3.2 diff --git a/python3.7/build/Dockerfile b/python3.7/build/Dockerfile index 8d72e0fa..c0d6a654 100644 --- a/python3.7/build/Dockerfile +++ b/python3.7/build/Dockerfile @@ -15,7 +15,7 @@ RUN pip install -U pip setuptools wheel --no-cache-dir && \ pip install pipx --no-cache-dir && \ pipx install virtualenv && \ pipx install pipenv && \ - pipx install poetry==1.0.10 && \ + pipx install poetry==1.1.0 && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ pipx install aws-sam-cli==1.3.2 diff --git a/python3.8/build/Dockerfile b/python3.8/build/Dockerfile index bdc2a938..3109232b 100644 --- a/python3.8/build/Dockerfile +++ b/python3.8/build/Dockerfile @@ -15,7 +15,7 @@ RUN pip install -U pip setuptools wheel --no-cache-dir && \ pip install pipx --no-cache-dir && \ pipx install virtualenv && \ pipx install pipenv && \ - pipx install poetry==1.0.10 && \ + pipx install poetry==1.1.0 && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ pipx install aws-sam-cli==1.3.2 From 0bd3ee1e69a9f3f8263fd43b55204aea31b1dce5 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Thu, 1 Oct 2020 10:08:50 -0400 Subject: [PATCH 240/271] Make all build images usr /var dirs from runtime images --- base/runtimes.sh | 3 +-- dotnetcore2.0/build/Dockerfile | 10 +++++++--- dotnetcore2.1/build/Dockerfile | 12 ++++++++---- dotnetcore3.1/build/Dockerfile | 12 ++++++++---- go1.x/build/Dockerfile | 10 +++++++--- java11/build/Dockerfile | 10 +++++++--- java8.al2/build/Dockerfile | 14 +++++++++----- java8/build/Dockerfile | 10 +++++++--- nodejs10.x/build/Dockerfile | 7 +++++-- nodejs12.x/build/Dockerfile | 7 +++++-- nodejs4.3/build/Dockerfile | 7 +++++-- nodejs6.10/build/Dockerfile | 7 +++++-- nodejs8.10/build/Dockerfile | 7 +++++-- provided.al2/build/Dockerfile | 8 +++++++- provided/build/Dockerfile | 6 ++++++ python2.7/build/Dockerfile | 7 +++++-- python3.6/build/Dockerfile | 10 +++++++--- python3.7/build/Dockerfile | 7 +++++-- python3.8/build/Dockerfile | 7 +++++-- ruby2.5/build/Dockerfile | 7 +++++-- ruby2.7/build/Dockerfile | 7 +++++-- 21 files changed, 124 insertions(+), 51 deletions(-) diff --git a/base/runtimes.sh b/base/runtimes.sh index 22080f09..80891dd4 100644 --- a/base/runtimes.sh +++ b/base/runtimes.sh @@ -1,2 +1 @@ -# RUNTIMES="provided go1.x nodejs4.3 nodejs6.10 nodejs8.10 python2.7 python3.6 python3.7 ruby2.5 java8 dotnetcore2.0 dotnetcore2.1 provided.al2 nodejs10.x nodejs12.x python3.8 ruby2.7 java8.al2 java11 dotnetcore3.1" -RUNTIMES="nodejs12.x" +RUNTIMES="provided go1.x nodejs4.3 nodejs6.10 nodejs8.10 python2.7 python3.6 python3.7 ruby2.5 java8 dotnetcore2.0 dotnetcore2.1 provided.al2 nodejs10.x nodejs12.x python3.8 ruby2.7 java8.al2 java11 dotnetcore3.1" diff --git a/dotnetcore2.0/build/Dockerfile b/dotnetcore2.0/build/Dockerfile index d8c9a82d..ddedc900 100644 --- a/dotnetcore2.0/build/Dockerfile +++ b/dotnetcore2.0/build/Dockerfile @@ -1,3 +1,5 @@ +FROM lambci/lambda:dotnetcore2.0 + FROM lambci/lambda-base:build # Run: docker run --rm --entrypoint dotnet lambci/lambda:dotnetcore2.1 --info @@ -9,9 +11,11 @@ ENV PATH=/var/lang/bin:$PATH \ DOTNET_CLI_TELEMETRY_OPTOUT=1 \ NUGET_XMLDOC_MODE=skip -RUN rm -rf /var/runtime /var/lang && \ - curl https://lambci.s3.amazonaws.com/fs/dotnetcore2.0.tgz | tar -zx -C / && \ - yum install -y libunwind && \ +COPY --from=0 /var/runtime /var/runtime +COPY --from=0 /var/lang /var/lang +COPY --from=0 /var/rapid /var/rapid + +RUN yum install -y libunwind && \ curl -L https://dot.net/v1/dotnet-install.sh | bash -s -- -v $DOTNET_SDK_VERSION -i /var/lang/bin && \ mkdir /tmp/warmup && \ cd /tmp/warmup && \ diff --git a/dotnetcore2.1/build/Dockerfile b/dotnetcore2.1/build/Dockerfile index 61104698..d2e568e9 100644 --- a/dotnetcore2.1/build/Dockerfile +++ b/dotnetcore2.1/build/Dockerfile @@ -1,4 +1,6 @@ -FROM lambci/lambda-base:build +FROM lambci/lambda:dotnetcore2.1 + +FROM lambci/lambda-base:build # Run: docker run --rm --entrypoint dotnet lambci/lambda:dotnetcore2.1 --info # Check https://dotnet.microsoft.com/download/dotnet-core/2.1 for versions @@ -10,9 +12,11 @@ ENV PATH=/root/.dotnet/tools:$DOTNET_ROOT:$PATH \ DOTNET_CLI_TELEMETRY_OPTOUT=1 \ NUGET_XMLDOC_MODE=skip -RUN rm -rf /var/runtime /var/lang && \ - curl https://lambci.s3.amazonaws.com/fs/dotnetcore2.1.tgz | tar -zx -C / && \ - yum install -y libunwind && \ +COPY --from=0 /var/runtime /var/runtime +COPY --from=0 /var/lang /var/lang +COPY --from=0 /var/rapid /var/rapid + +RUN yum install -y libunwind && \ curl -L https://dot.net/v1/dotnet-install.sh | bash -s -- -v $DOTNET_SDK_VERSION -i $DOTNET_ROOT && \ mkdir /tmp/warmup && \ cd /tmp/warmup && \ diff --git a/dotnetcore3.1/build/Dockerfile b/dotnetcore3.1/build/Dockerfile index feca3f3a..c585ba0a 100644 --- a/dotnetcore3.1/build/Dockerfile +++ b/dotnetcore3.1/build/Dockerfile @@ -1,4 +1,6 @@ -FROM lambci/lambda-base-2:build +FROM lambci/lambda:dotnetcore3.1 + +FROM lambci/lambda-base-2:build # Run: docker run --rm --entrypoint dotnet lambci/lambda:dotnetcore3.1 --info # Check https://dotnet.microsoft.com/download/dotnet-core/3.1 for versions @@ -10,9 +12,11 @@ ENV PATH=/root/.dotnet/tools:$DOTNET_ROOT:$PATH \ DOTNET_CLI_TELEMETRY_OPTOUT=1 \ NUGET_XMLDOC_MODE=skip -RUN rm -rf /var/runtime /var/lang && \ - curl https://lambci.s3.amazonaws.com/fs/dotnetcore3.1.tgz | tar -zx -C / && \ - curl -L https://dot.net/v1/dotnet-install.sh | bash -s -- -v $DOTNET_SDK_VERSION -i $DOTNET_ROOT && \ +COPY --from=0 /var/runtime /var/runtime +COPY --from=0 /var/lang /var/lang +COPY --from=0 /var/rapid /var/rapid + +RUN curl -L https://dot.net/v1/dotnet-install.sh | bash -s -- -v $DOTNET_SDK_VERSION -i $DOTNET_ROOT && \ mkdir /tmp/warmup && \ cd /tmp/warmup && \ dotnet new && \ diff --git a/go1.x/build/Dockerfile b/go1.x/build/Dockerfile index 2fbd81a4..0c5a0205 100644 --- a/go1.x/build/Dockerfile +++ b/go1.x/build/Dockerfile @@ -1,3 +1,5 @@ +FROM lambci/lambda:go1.x + FROM lambci/lambda-base:build # https://golang.org/doc/devel/release.html @@ -8,9 +10,11 @@ ENV GOLANG_VERSION=1.15 \ WORKDIR /go/src/handler -RUN rm -rf /var/runtime /var/lang && \ - curl https://lambci.s3.amazonaws.com/fs/go1.x.tgz | tar -zx -C / && \ - curl https://storage.googleapis.com/golang/go${GOLANG_VERSION}.linux-amd64.tar.gz | tar -zx -C /usr/local && \ +COPY --from=0 /var/runtime /var/runtime +COPY --from=0 /var/lang /var/lang +COPY --from=0 /var/rapid /var/rapid + +RUN curl https://storage.googleapis.com/golang/go${GOLANG_VERSION}.linux-amd64.tar.gz | tar -zx -C /usr/local && \ go get github.com/golang/dep/cmd/dep && \ go install github.com/golang/dep/cmd/dep && \ go get golang.org/x/vgo diff --git a/java11/build/Dockerfile b/java11/build/Dockerfile index 8c6ad828..d29cb706 100644 --- a/java11/build/Dockerfile +++ b/java11/build/Dockerfile @@ -1,12 +1,16 @@ +FROM lambci/lambda:java11 + FROM lambci/lambda-base-2:build ENV PATH=/var/lang/bin:$PATH \ LD_LIBRARY_PATH=/var/lang/lib:$LD_LIBRARY_PATH \ AWS_EXECUTION_ENV=AWS_Lambda_java11 -RUN rm -rf /var/runtime /var/lang /var/rapid && \ - curl https://lambci.s3.amazonaws.com/fs/java11.tgz | tar -zx -C / && \ - mkdir /usr/local/gradle && curl -L -o gradle.zip https://services.gradle.org/distributions/gradle-6.6.1-bin.zip && \ +COPY --from=0 /var/runtime /var/runtime +COPY --from=0 /var/lang /var/lang +COPY --from=0 /var/rapid /var/rapid + +RUN mkdir /usr/local/gradle && curl -L -o gradle.zip https://services.gradle.org/distributions/gradle-6.6.1-bin.zip && \ unzip -qd /usr/local/gradle gradle.zip && rm gradle.zip && mkdir /usr/local/maven && \ curl -L http://mirror.cc.columbia.edu/pub/software/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz | \ tar -zx -C /usr/local/maven diff --git a/java8.al2/build/Dockerfile b/java8.al2/build/Dockerfile index 0efa5e52..fa4732a0 100644 --- a/java8.al2/build/Dockerfile +++ b/java8.al2/build/Dockerfile @@ -1,13 +1,17 @@ -FROM lambci/lambda-base-2:build +FROM lambci/lambda:java8.al2 + +FROM lambci/lambda-base-2:build ENV PATH=/var/lang/bin:$PATH \ LD_LIBRARY_PATH=/var/lang/lib:$LD_LIBRARY_PATH \ AWS_EXECUTION_ENV=AWS_Lambda_rapid -RUN rm -rf /var/runtime && \ - curl https://lambci.s3.amazonaws.com/fs/java8.al2.tgz | tar -zx -C / && \ - rm -rf /var/lang/* && \ - curl -sSL https://corretto.aws/downloads/resources/8.252.09.1/amazon-corretto-8.252.09.1-linux-x64.tar.gz | tar -xz --strip-components=1 -C /var/lang && \ +COPY --from=0 /var/runtime /var/runtime +COPY --from=0 /var/lang /var/lang +COPY --from=0 /var/rapid /var/rapid + +RUN rm -rf /var/lang/* && \ + curl -sSL https://corretto.aws/downloads/resources/8.265.01.1/amazon-corretto-8.265.01.1-linux-x64.tar.gz | tar -xz --strip-components=1 -C /var/lang && \ rm -rf /var/lang/*.zip && \ mkdir /usr/local/gradle && curl -L -o gradle.zip https://services.gradle.org/distributions/gradle-6.6.1-bin.zip && \ unzip -qd /usr/local/gradle gradle.zip && rm gradle.zip && mkdir /usr/local/maven && \ diff --git a/java8/build/Dockerfile b/java8/build/Dockerfile index 48b9d0d7..d64f8e68 100644 --- a/java8/build/Dockerfile +++ b/java8/build/Dockerfile @@ -1,12 +1,16 @@ +FROM lambci/lambda:java8 + FROM lambci/lambda-base:build ENV AWS_EXECUTION_ENV=AWS_Lambda_java8 WORKDIR / -RUN rm -rf /var/runtime /var/lang && \ - curl https://lambci.s3.amazonaws.com/fs/java8.tgz | tar -zx -C / && \ - yum install -y java-1.8.0-openjdk-devel && \ +COPY --from=0 /var/runtime /var/runtime +COPY --from=0 /var/lang /var/lang +COPY --from=0 /var/rapid /var/rapid + +RUN yum install -y java-1.8.0-openjdk-devel && \ mkdir /usr/local/gradle && curl -L -o gradle.zip https://services.gradle.org/distributions/gradle-6.6.1-bin.zip && \ unzip -qd /usr/local/gradle gradle.zip && rm gradle.zip && mkdir /usr/local/maven && \ curl -L http://mirror.cc.columbia.edu/pub/software/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz | \ diff --git a/nodejs10.x/build/Dockerfile b/nodejs10.x/build/Dockerfile index 2bc015fa..3c533df0 100644 --- a/nodejs10.x/build/Dockerfile +++ b/nodejs10.x/build/Dockerfile @@ -1,3 +1,5 @@ +FROM lambci/lambda:nodejs10.x + FROM lambci/lambda-base-2:build ENV PATH=/var/lang/bin:$PATH \ @@ -5,8 +7,9 @@ ENV PATH=/var/lang/bin:$PATH \ AWS_EXECUTION_ENV=AWS_Lambda_nodejs10.x \ NODE_PATH=/opt/nodejs/node10/node_modules:/opt/nodejs/node_modules:/var/runtime/node_modules -RUN rm -rf /var/runtime /var/lang /var/rapid && \ - curl https://lambci.s3.amazonaws.com/fs/nodejs10.x.tgz | tar -zx -C / +COPY --from=0 /var/runtime /var/runtime +COPY --from=0 /var/lang /var/lang +COPY --from=0 /var/rapid /var/rapid # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ diff --git a/nodejs12.x/build/Dockerfile b/nodejs12.x/build/Dockerfile index f97ad5aa..1cc57ffc 100644 --- a/nodejs12.x/build/Dockerfile +++ b/nodejs12.x/build/Dockerfile @@ -1,3 +1,5 @@ +FROM lambci/lambda:nodejs12.x + FROM lambci/lambda-base-2:build ENV PATH=/var/lang/bin:$PATH \ @@ -5,8 +7,9 @@ ENV PATH=/var/lang/bin:$PATH \ AWS_EXECUTION_ENV=AWS_Lambda_nodejs12.x \ NODE_PATH=/opt/nodejs/node12/node_modules:/opt/nodejs/node_modules:/var/runtime/node_modules -RUN rm -rf /var/runtime /var/lang /var/rapid && \ - curl https://lambci.s3.amazonaws.com/fs/nodejs12.x.tgz | tar -zx -C / +COPY --from=0 /var/runtime /var/runtime +COPY --from=0 /var/lang /var/lang +COPY --from=0 /var/rapid /var/rapid # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ diff --git a/nodejs4.3/build/Dockerfile b/nodejs4.3/build/Dockerfile index e6266985..becdd201 100644 --- a/nodejs4.3/build/Dockerfile +++ b/nodejs4.3/build/Dockerfile @@ -1,3 +1,5 @@ +FROM lambci/lambda:nodejs4.3 + FROM lambci/lambda-base:build ENV PATH=/var/lang/bin:$PATH \ @@ -6,8 +8,9 @@ ENV PATH=/var/lang/bin:$PATH \ NODE_PATH=/var/runtime:/var/task:/var/runtime/node_modules \ npm_config_unsafe-perm=true -RUN rm -rf /var/runtime /var/lang && \ - curl https://lambci.s3.amazonaws.com/fs/nodejs4.3.tgz | tar -zx -C / +COPY --from=0 /var/runtime /var/runtime +COPY --from=0 /var/lang /var/lang +COPY --from=0 /var/rapid /var/rapid # Add these as a separate layer as they get updated frequently # The pipx workaround is due to https://github.com/pipxproject/pipx/issues/218 diff --git a/nodejs6.10/build/Dockerfile b/nodejs6.10/build/Dockerfile index dc294953..e3e0f5f0 100644 --- a/nodejs6.10/build/Dockerfile +++ b/nodejs6.10/build/Dockerfile @@ -1,3 +1,5 @@ +FROM lambci/lambda:nodejs6.10 + FROM lambci/lambda-base:build ENV PATH=/var/lang/bin:$PATH \ @@ -6,8 +8,9 @@ ENV PATH=/var/lang/bin:$PATH \ NODE_PATH=/opt/nodejs/node6/node_modules:/opt/nodejs/node_modules:/var/runtime/node_modules:/var/runtime:/var/task:/var/runtime/node_modules \ npm_config_unsafe-perm=true -RUN rm -rf /var/runtime /var/lang && \ - curl https://lambci.s3.amazonaws.com/fs/nodejs6.10.tgz | tar -zx -C / +COPY --from=0 /var/runtime /var/runtime +COPY --from=0 /var/lang /var/lang +COPY --from=0 /var/rapid /var/rapid # Add these as a separate layer as they get updated frequently # The pipx workaround is due to https://github.com/pipxproject/pipx/issues/218 diff --git a/nodejs8.10/build/Dockerfile b/nodejs8.10/build/Dockerfile index e3d41085..790a2b1b 100644 --- a/nodejs8.10/build/Dockerfile +++ b/nodejs8.10/build/Dockerfile @@ -1,3 +1,5 @@ +FROM lambci/lambda:nodejs8.10 + FROM lambci/lambda-base:build ENV PATH=/var/lang/bin:$PATH \ @@ -6,8 +8,9 @@ ENV PATH=/var/lang/bin:$PATH \ NODE_PATH=/opt/nodejs/node8/node_modules:/opt/nodejs/node_modules:/var/runtime/node_modules:/var/runtime:/var/task:/var/runtime/node_modules \ npm_config_unsafe-perm=true -RUN rm -rf /var/runtime /var/lang && \ - curl https://lambci.s3.amazonaws.com/fs/nodejs8.10.tgz | tar -zx -C / +COPY --from=0 /var/runtime /var/runtime +COPY --from=0 /var/lang /var/lang +COPY --from=0 /var/rapid /var/rapid # Add these as a separate layer as they get updated frequently # The pipx workaround is due to https://github.com/pipxproject/pipx/issues/218 diff --git a/provided.al2/build/Dockerfile b/provided.al2/build/Dockerfile index 718bd174..128daae4 100644 --- a/provided.al2/build/Dockerfile +++ b/provided.al2/build/Dockerfile @@ -1,4 +1,10 @@ -FROM lambci/lambda-base-2:build +FROM lambci/lambda:provided.al2 + +FROM lambci/lambda-base-2:build + +COPY --from=0 /var/runtime /var/runtime +COPY --from=0 /var/lang /var/lang +COPY --from=0 /var/rapid /var/rapid # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ diff --git a/provided/build/Dockerfile b/provided/build/Dockerfile index b2f29e2b..928c7ea5 100644 --- a/provided/build/Dockerfile +++ b/provided/build/Dockerfile @@ -1,5 +1,11 @@ +FROM lambci/lambda:provided + FROM lambci/lambda-base:build +COPY --from=0 /var/runtime /var/runtime +COPY --from=0 /var/lang /var/lang +COPY --from=0 /var/rapid /var/rapid + # Add these as a separate layer as they get updated frequently # The pipx workaround is due to https://github.com/pipxproject/pipx/issues/218 RUN source /usr/local/pipx/shared/bin/activate && \ diff --git a/python2.7/build/Dockerfile b/python2.7/build/Dockerfile index 5a6fcc01..97facea9 100644 --- a/python2.7/build/Dockerfile +++ b/python2.7/build/Dockerfile @@ -1,9 +1,12 @@ +FROM lambci/lambda:python2.7 + FROM lambci/lambda-base:build ENV AWS_EXECUTION_ENV=AWS_Lambda_python2.7 -RUN rm -rf /var/runtime /var/lang && \ - curl https://lambci.s3.amazonaws.com/fs/python2.7.tgz | tar -zx -C / +COPY --from=0 /var/runtime /var/runtime +COPY --from=0 /var/lang /var/lang +COPY --from=0 /var/rapid /var/rapid # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ diff --git a/python3.6/build/Dockerfile b/python3.6/build/Dockerfile index 4937e57d..1d078d19 100644 --- a/python3.6/build/Dockerfile +++ b/python3.6/build/Dockerfile @@ -1,3 +1,5 @@ +FROM lambci/lambda:python3.6 + FROM lambci/lambda-base:build ENV PATH=/var/lang/bin:$PATH \ @@ -7,9 +9,11 @@ ENV PATH=/var/lang/bin:$PATH \ PIPX_BIN_DIR=/var/lang/bin \ PIPX_HOME=/var/lang/pipx -RUN rm -rf /var/runtime /var/lang && \ - export PYTHON_VERSION=3.6.10 && \ - curl https://lambci.s3.amazonaws.com/fs/python3.6.tgz | tar -xz -C / && \ +COPY --from=0 /var/runtime /var/runtime +COPY --from=0 /var/lang /var/lang +COPY --from=0 /var/rapid /var/rapid + +RUN export PYTHON_VERSION=3.6.12 && \ sed -i '/^prefix=/c\prefix=/var/lang' /var/lang/lib/pkgconfig/python-3.6.pc && \ curl https://www.python.org/ftp/python/${PYTHON_VERSION}/Python-${PYTHON_VERSION}.tar.xz | tar -xJ && \ cd Python-${PYTHON_VERSION} && \ diff --git a/python3.7/build/Dockerfile b/python3.7/build/Dockerfile index c0d6a654..ac502307 100644 --- a/python3.7/build/Dockerfile +++ b/python3.7/build/Dockerfile @@ -1,3 +1,5 @@ +FROM lambci/lambda:python3.7 + FROM lambci/lambda-base:build ENV PATH=/var/lang/bin:$PATH \ @@ -7,8 +9,9 @@ ENV PATH=/var/lang/bin:$PATH \ PIPX_BIN_DIR=/var/lang/bin \ PIPX_HOME=/var/lang/pipx -RUN rm -rf /var/runtime /var/lang /var/rapid && \ - curl https://lambci.s3.amazonaws.com/fs/python3.7.tgz | tar -zx -C / +COPY --from=0 /var/runtime /var/runtime +COPY --from=0 /var/lang /var/lang +COPY --from=0 /var/rapid /var/rapid # Add these as a separate layer as they get updated frequently RUN pip install -U pip setuptools wheel --no-cache-dir && \ diff --git a/python3.8/build/Dockerfile b/python3.8/build/Dockerfile index 3109232b..1c40d5d4 100644 --- a/python3.8/build/Dockerfile +++ b/python3.8/build/Dockerfile @@ -1,3 +1,5 @@ +FROM lambci/lambda:python3.8 + FROM lambci/lambda-base-2:build ENV PATH=/var/lang/bin:$PATH \ @@ -7,8 +9,9 @@ ENV PATH=/var/lang/bin:$PATH \ PIPX_BIN_DIR=/var/lang/bin \ PIPX_HOME=/var/lang/pipx -RUN rm -rf /var/runtime /var/lang /var/rapid && \ - curl https://lambci.s3.amazonaws.com/fs/python3.8.tgz | tar -zx -C / +COPY --from=0 /var/runtime /var/runtime +COPY --from=0 /var/lang /var/lang +COPY --from=0 /var/rapid /var/rapid # Add these as a separate layer as they get updated frequently RUN pip install -U pip setuptools wheel --no-cache-dir && \ diff --git a/ruby2.5/build/Dockerfile b/ruby2.5/build/Dockerfile index 537d678f..d9264d13 100644 --- a/ruby2.5/build/Dockerfile +++ b/ruby2.5/build/Dockerfile @@ -1,3 +1,5 @@ +FROM lambci/lambda:ruby2.5 + FROM lambci/lambda-base:build ENV PATH=/var/lang/bin:$PATH \ @@ -8,8 +10,9 @@ ENV PATH=/var/lang/bin:$PATH \ RUBYLIB=/var/task:/var/runtime/lib:/opt/ruby/lib \ BUNDLE_SILENCE_ROOT_WARNING=1 -RUN rm -rf /var/runtime /var/lang /var/rapid && \ - curl https://lambci.s3.amazonaws.com/fs/ruby2.5.tgz | tar -zx -C / +COPY --from=0 /var/runtime /var/runtime +COPY --from=0 /var/lang /var/lang +COPY --from=0 /var/rapid /var/rapid # Add these as a separate layer as they get updated frequently # The pipx workaround is due to https://github.com/pipxproject/pipx/issues/218 diff --git a/ruby2.7/build/Dockerfile b/ruby2.7/build/Dockerfile index 1dfb7fc1..4cd46196 100644 --- a/ruby2.7/build/Dockerfile +++ b/ruby2.7/build/Dockerfile @@ -1,3 +1,5 @@ +FROM lambci/lambda:ruby2.7 + FROM lambci/lambda-base-2:build ENV PATH=/var/lang/bin:$PATH \ @@ -8,8 +10,9 @@ ENV PATH=/var/lang/bin:$PATH \ RUBYLIB=/var/task:/var/runtime/lib:/opt/ruby/lib \ BUNDLE_SILENCE_ROOT_WARNING=1 -RUN rm -rf /var/runtime /var/lang /var/rapid && \ - curl https://lambci.s3.amazonaws.com/fs/ruby2.7.tgz | tar -zx -C / +COPY --from=0 /var/runtime /var/runtime +COPY --from=0 /var/lang /var/lang +COPY --from=0 /var/rapid /var/rapid # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ From ba16412c29548f9bafc0faa8c97f5d3b49d7dc41 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Sun, 4 Oct 2020 11:40:08 -0400 Subject: [PATCH 241/271] Update aws-sam-cli to 1.4.0 --- dotnetcore2.0/build/Dockerfile | 2 +- dotnetcore2.1/build/Dockerfile | 2 +- dotnetcore3.1/build/Dockerfile | 2 +- go1.x/build/Dockerfile | 2 +- java11/build/Dockerfile | 2 +- java8.al2/build/Dockerfile | 2 +- java8/build/Dockerfile | 2 +- nodejs10.x/build/Dockerfile | 2 +- nodejs12.x/build/Dockerfile | 2 +- nodejs4.3/build/Dockerfile | 2 +- nodejs6.10/build/Dockerfile | 2 +- nodejs8.10/build/Dockerfile | 2 +- provided.al2/build/Dockerfile | 2 +- provided/build/Dockerfile | 2 +- python3.6/build/Dockerfile | 2 +- python3.7/build/Dockerfile | 2 +- python3.8/build/Dockerfile | 2 +- ruby2.5/build/Dockerfile | 2 +- ruby2.7/build/Dockerfile | 2 +- 19 files changed, 19 insertions(+), 19 deletions(-) diff --git a/dotnetcore2.0/build/Dockerfile b/dotnetcore2.0/build/Dockerfile index ddedc900..fbeed971 100644 --- a/dotnetcore2.0/build/Dockerfile +++ b/dotnetcore2.0/build/Dockerfile @@ -30,6 +30,6 @@ RUN source /usr/local/pipx/shared/bin/activate && \ pipx install pipenv && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.3.2 + pipx install aws-sam-cli==1.4.0 CMD ["dotnet", "build"] diff --git a/dotnetcore2.1/build/Dockerfile b/dotnetcore2.1/build/Dockerfile index d2e568e9..e2888288 100644 --- a/dotnetcore2.1/build/Dockerfile +++ b/dotnetcore2.1/build/Dockerfile @@ -31,7 +31,7 @@ RUN source /usr/local/pipx/shared/bin/activate && \ pipx install pipenv && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.3.2 && \ + pipx install aws-sam-cli==1.4.0 && \ dotnet tool install --global Amazon.Lambda.Tools --version 3.3.1 CMD ["dotnet", "build"] diff --git a/dotnetcore3.1/build/Dockerfile b/dotnetcore3.1/build/Dockerfile index c585ba0a..f1793a29 100644 --- a/dotnetcore3.1/build/Dockerfile +++ b/dotnetcore3.1/build/Dockerfile @@ -26,7 +26,7 @@ RUN curl -L https://dot.net/v1/dotnet-install.sh | bash -s -- -v $DOTNET_SDK_VER # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.3.2 && \ + pipx install aws-sam-cli==1.4.0 && \ dotnet tool install --global Amazon.Lambda.Tools --version 4.0.0 CMD ["dotnet", "build"] diff --git a/go1.x/build/Dockerfile b/go1.x/build/Dockerfile index 0c5a0205..2669e789 100644 --- a/go1.x/build/Dockerfile +++ b/go1.x/build/Dockerfile @@ -24,6 +24,6 @@ RUN curl https://storage.googleapis.com/golang/go${GOLANG_VERSION}.linux-amd64.t RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.3.2 + pipx install aws-sam-cli==1.4.0 CMD ["dep", "ensure"] diff --git a/java11/build/Dockerfile b/java11/build/Dockerfile index d29cb706..bdfcd550 100644 --- a/java11/build/Dockerfile +++ b/java11/build/Dockerfile @@ -20,4 +20,4 @@ ENV PATH="/usr/local/gradle/gradle-6.6.1/bin:/usr/local/maven/apache-maven-3.6.3 # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.3.2 + pipx install aws-sam-cli==1.4.0 diff --git a/java8.al2/build/Dockerfile b/java8.al2/build/Dockerfile index fa4732a0..7e507787 100644 --- a/java8.al2/build/Dockerfile +++ b/java8.al2/build/Dockerfile @@ -23,4 +23,4 @@ ENV PATH="/usr/local/gradle/gradle-6.6.1/bin:/usr/local/maven/apache-maven-3.6.3 # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.3.2 + pipx install aws-sam-cli==1.4.0 diff --git a/java8/build/Dockerfile b/java8/build/Dockerfile index d64f8e68..3137fe0d 100644 --- a/java8/build/Dockerfile +++ b/java8/build/Dockerfile @@ -23,4 +23,4 @@ ENV PATH="/usr/local/gradle/gradle-6.6.1/bin:/usr/local/maven/apache-maven-3.6.3 RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.3.2 + pipx install aws-sam-cli==1.4.0 diff --git a/nodejs10.x/build/Dockerfile b/nodejs10.x/build/Dockerfile index 3c533df0..e92651d7 100644 --- a/nodejs10.x/build/Dockerfile +++ b/nodejs10.x/build/Dockerfile @@ -14,4 +14,4 @@ COPY --from=0 /var/rapid /var/rapid # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.3.2 + pipx install aws-sam-cli==1.4.0 diff --git a/nodejs12.x/build/Dockerfile b/nodejs12.x/build/Dockerfile index 1cc57ffc..760d0c60 100644 --- a/nodejs12.x/build/Dockerfile +++ b/nodejs12.x/build/Dockerfile @@ -14,4 +14,4 @@ COPY --from=0 /var/rapid /var/rapid # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.3.2 + pipx install aws-sam-cli==1.4.0 diff --git a/nodejs4.3/build/Dockerfile b/nodejs4.3/build/Dockerfile index becdd201..b4dfc74e 100644 --- a/nodejs4.3/build/Dockerfile +++ b/nodejs4.3/build/Dockerfile @@ -17,6 +17,6 @@ COPY --from=0 /var/rapid /var/rapid RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.3.2 + pipx install aws-sam-cli==1.4.0 CMD ["npm", "rebuild"] diff --git a/nodejs6.10/build/Dockerfile b/nodejs6.10/build/Dockerfile index e3e0f5f0..e1c2a8db 100644 --- a/nodejs6.10/build/Dockerfile +++ b/nodejs6.10/build/Dockerfile @@ -17,6 +17,6 @@ COPY --from=0 /var/rapid /var/rapid RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.3.2 + pipx install aws-sam-cli==1.4.0 CMD ["npm", "rebuild"] diff --git a/nodejs8.10/build/Dockerfile b/nodejs8.10/build/Dockerfile index 790a2b1b..be39d278 100644 --- a/nodejs8.10/build/Dockerfile +++ b/nodejs8.10/build/Dockerfile @@ -17,6 +17,6 @@ COPY --from=0 /var/rapid /var/rapid RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.3.2 + pipx install aws-sam-cli==1.4.0 CMD ["npm", "rebuild"] diff --git a/provided.al2/build/Dockerfile b/provided.al2/build/Dockerfile index 128daae4..6f48d488 100644 --- a/provided.al2/build/Dockerfile +++ b/provided.al2/build/Dockerfile @@ -9,4 +9,4 @@ COPY --from=0 /var/rapid /var/rapid # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.3.2 + pipx install aws-sam-cli==1.4.0 diff --git a/provided/build/Dockerfile b/provided/build/Dockerfile index 928c7ea5..3593c5f9 100644 --- a/provided/build/Dockerfile +++ b/provided/build/Dockerfile @@ -11,4 +11,4 @@ COPY --from=0 /var/rapid /var/rapid RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.3.2 + pipx install aws-sam-cli==1.4.0 diff --git a/python3.6/build/Dockerfile b/python3.6/build/Dockerfile index 1d078d19..11e3ef31 100644 --- a/python3.6/build/Dockerfile +++ b/python3.6/build/Dockerfile @@ -30,4 +30,4 @@ RUN pip install -U pip setuptools wheel --no-cache-dir && \ pipx install poetry==1.1.0 && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.3.2 + pipx install aws-sam-cli==1.4.0 diff --git a/python3.7/build/Dockerfile b/python3.7/build/Dockerfile index ac502307..49aac79e 100644 --- a/python3.7/build/Dockerfile +++ b/python3.7/build/Dockerfile @@ -21,4 +21,4 @@ RUN pip install -U pip setuptools wheel --no-cache-dir && \ pipx install poetry==1.1.0 && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.3.2 + pipx install aws-sam-cli==1.4.0 diff --git a/python3.8/build/Dockerfile b/python3.8/build/Dockerfile index 1c40d5d4..1072eb9a 100644 --- a/python3.8/build/Dockerfile +++ b/python3.8/build/Dockerfile @@ -21,4 +21,4 @@ RUN pip install -U pip setuptools wheel --no-cache-dir && \ pipx install poetry==1.1.0 && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.3.2 + pipx install aws-sam-cli==1.4.0 diff --git a/ruby2.5/build/Dockerfile b/ruby2.5/build/Dockerfile index d9264d13..611e2d4c 100644 --- a/ruby2.5/build/Dockerfile +++ b/ruby2.5/build/Dockerfile @@ -19,6 +19,6 @@ COPY --from=0 /var/rapid /var/rapid RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.3.2 && \ + pipx install aws-sam-cli==1.4.0 && \ gem update --system --no-document && \ gem install --no-document bundler -v '~> 2.1' diff --git a/ruby2.7/build/Dockerfile b/ruby2.7/build/Dockerfile index 4cd46196..69833022 100644 --- a/ruby2.7/build/Dockerfile +++ b/ruby2.7/build/Dockerfile @@ -17,6 +17,6 @@ COPY --from=0 /var/rapid /var/rapid # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.3.2 && \ + pipx install aws-sam-cli==1.4.0 && \ gem update --system --no-document && \ gem install --no-document bundler -v '~> 2.1' From 3839aa3db6215b199fee52703fbd9007d00b1884 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Mon, 5 Oct 2020 08:41:59 -0400 Subject: [PATCH 242/271] Update poetry to 1.1.1 in python images --- python2.7/build/Dockerfile | 2 +- python3.6/build/Dockerfile | 2 +- python3.7/build/Dockerfile | 2 +- python3.8/build/Dockerfile | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/python2.7/build/Dockerfile b/python2.7/build/Dockerfile index 97facea9..a30b6136 100644 --- a/python2.7/build/Dockerfile +++ b/python2.7/build/Dockerfile @@ -11,7 +11,7 @@ COPY --from=0 /var/rapid /var/rapid # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ pip install -U 'virtualenv>=16.0.0,<20.0.0' pipenv wheel --no-cache-dir && \ - curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.1.0/get-poetry.py | POETRY_VERSION=1.1.0 python && \ + curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.1.1/get-poetry.py | POETRY_VERSION=1.1.1 python && \ pip install -U awscli boto3 aws-sam-cli==0.22.0 aws-lambda-builders==0.4.0 --no-cache-dir ENV PATH=/root/.poetry/bin:$PATH diff --git a/python3.6/build/Dockerfile b/python3.6/build/Dockerfile index 11e3ef31..5a3f324c 100644 --- a/python3.6/build/Dockerfile +++ b/python3.6/build/Dockerfile @@ -27,7 +27,7 @@ RUN pip install -U pip setuptools wheel --no-cache-dir && \ pip install pipx --no-cache-dir && \ pipx install virtualenv && \ pipx install pipenv && \ - pipx install poetry==1.1.0 && \ + pipx install poetry==1.1.1 && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ pipx install aws-sam-cli==1.4.0 diff --git a/python3.7/build/Dockerfile b/python3.7/build/Dockerfile index 49aac79e..a4adc0ac 100644 --- a/python3.7/build/Dockerfile +++ b/python3.7/build/Dockerfile @@ -18,7 +18,7 @@ RUN pip install -U pip setuptools wheel --no-cache-dir && \ pip install pipx --no-cache-dir && \ pipx install virtualenv && \ pipx install pipenv && \ - pipx install poetry==1.1.0 && \ + pipx install poetry==1.1.1 && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ pipx install aws-sam-cli==1.4.0 diff --git a/python3.8/build/Dockerfile b/python3.8/build/Dockerfile index 1072eb9a..0b3257aa 100644 --- a/python3.8/build/Dockerfile +++ b/python3.8/build/Dockerfile @@ -18,7 +18,7 @@ RUN pip install -U pip setuptools wheel --no-cache-dir && \ pip install pipx --no-cache-dir && \ pipx install virtualenv && \ pipx install pipenv && \ - pipx install poetry==1.1.0 && \ + pipx install poetry==1.1.1 && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ pipx install aws-sam-cli==1.4.0 From 3f85c1a49c1527cbb9245054eb5947a5a9a5e618 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Tue, 6 Oct 2020 16:46:58 -0400 Subject: [PATCH 243/271] Update poetry to 1.1.2 in python images --- python2.7/build/Dockerfile | 2 +- python3.6/build/Dockerfile | 2 +- python3.7/build/Dockerfile | 2 +- python3.8/build/Dockerfile | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/python2.7/build/Dockerfile b/python2.7/build/Dockerfile index a30b6136..6e3c3727 100644 --- a/python2.7/build/Dockerfile +++ b/python2.7/build/Dockerfile @@ -11,7 +11,7 @@ COPY --from=0 /var/rapid /var/rapid # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ pip install -U 'virtualenv>=16.0.0,<20.0.0' pipenv wheel --no-cache-dir && \ - curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.1.1/get-poetry.py | POETRY_VERSION=1.1.1 python && \ + curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.1.1/get-poetry.py | POETRY_VERSION=1.1.2 python && \ pip install -U awscli boto3 aws-sam-cli==0.22.0 aws-lambda-builders==0.4.0 --no-cache-dir ENV PATH=/root/.poetry/bin:$PATH diff --git a/python3.6/build/Dockerfile b/python3.6/build/Dockerfile index 5a3f324c..9288dec5 100644 --- a/python3.6/build/Dockerfile +++ b/python3.6/build/Dockerfile @@ -27,7 +27,7 @@ RUN pip install -U pip setuptools wheel --no-cache-dir && \ pip install pipx --no-cache-dir && \ pipx install virtualenv && \ pipx install pipenv && \ - pipx install poetry==1.1.1 && \ + pipx install poetry==1.1.2 && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ pipx install aws-sam-cli==1.4.0 diff --git a/python3.7/build/Dockerfile b/python3.7/build/Dockerfile index a4adc0ac..c39c5b46 100644 --- a/python3.7/build/Dockerfile +++ b/python3.7/build/Dockerfile @@ -18,7 +18,7 @@ RUN pip install -U pip setuptools wheel --no-cache-dir && \ pip install pipx --no-cache-dir && \ pipx install virtualenv && \ pipx install pipenv && \ - pipx install poetry==1.1.1 && \ + pipx install poetry==1.1.2 && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ pipx install aws-sam-cli==1.4.0 diff --git a/python3.8/build/Dockerfile b/python3.8/build/Dockerfile index 0b3257aa..1913ede8 100644 --- a/python3.8/build/Dockerfile +++ b/python3.8/build/Dockerfile @@ -18,7 +18,7 @@ RUN pip install -U pip setuptools wheel --no-cache-dir && \ pip install pipx --no-cache-dir && \ pipx install virtualenv && \ pipx install pipenv && \ - pipx install poetry==1.1.1 && \ + pipx install poetry==1.1.2 && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ pipx install aws-sam-cli==1.4.0 From a38b0ee3b2381ddbd18e05d7c888e02d68b14377 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Fri, 9 Oct 2020 08:58:03 -0400 Subject: [PATCH 244/271] Update aws-sam-cli to 1.6.2 --- dotnetcore2.0/build/Dockerfile | 2 +- dotnetcore2.1/build/Dockerfile | 2 +- dotnetcore3.1/build/Dockerfile | 2 +- go1.x/build/Dockerfile | 2 +- java11/build/Dockerfile | 2 +- java8.al2/build/Dockerfile | 2 +- java8/build/Dockerfile | 2 +- nodejs10.x/build/Dockerfile | 2 +- nodejs12.x/build/Dockerfile | 2 +- nodejs4.3/build/Dockerfile | 2 +- nodejs6.10/build/Dockerfile | 2 +- nodejs8.10/build/Dockerfile | 2 +- provided.al2/build/Dockerfile | 2 +- provided/build/Dockerfile | 2 +- python3.6/build/Dockerfile | 2 +- python3.7/build/Dockerfile | 2 +- python3.8/build/Dockerfile | 2 +- ruby2.5/build/Dockerfile | 2 +- ruby2.7/build/Dockerfile | 2 +- 19 files changed, 19 insertions(+), 19 deletions(-) diff --git a/dotnetcore2.0/build/Dockerfile b/dotnetcore2.0/build/Dockerfile index fbeed971..c81f5a8d 100644 --- a/dotnetcore2.0/build/Dockerfile +++ b/dotnetcore2.0/build/Dockerfile @@ -30,6 +30,6 @@ RUN source /usr/local/pipx/shared/bin/activate && \ pipx install pipenv && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.4.0 + pipx install aws-sam-cli==1.6.2 CMD ["dotnet", "build"] diff --git a/dotnetcore2.1/build/Dockerfile b/dotnetcore2.1/build/Dockerfile index e2888288..bddb00c2 100644 --- a/dotnetcore2.1/build/Dockerfile +++ b/dotnetcore2.1/build/Dockerfile @@ -31,7 +31,7 @@ RUN source /usr/local/pipx/shared/bin/activate && \ pipx install pipenv && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.4.0 && \ + pipx install aws-sam-cli==1.6.2 && \ dotnet tool install --global Amazon.Lambda.Tools --version 3.3.1 CMD ["dotnet", "build"] diff --git a/dotnetcore3.1/build/Dockerfile b/dotnetcore3.1/build/Dockerfile index f1793a29..9d1bc68f 100644 --- a/dotnetcore3.1/build/Dockerfile +++ b/dotnetcore3.1/build/Dockerfile @@ -26,7 +26,7 @@ RUN curl -L https://dot.net/v1/dotnet-install.sh | bash -s -- -v $DOTNET_SDK_VER # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.4.0 && \ + pipx install aws-sam-cli==1.6.2 && \ dotnet tool install --global Amazon.Lambda.Tools --version 4.0.0 CMD ["dotnet", "build"] diff --git a/go1.x/build/Dockerfile b/go1.x/build/Dockerfile index 2669e789..f051bea7 100644 --- a/go1.x/build/Dockerfile +++ b/go1.x/build/Dockerfile @@ -24,6 +24,6 @@ RUN curl https://storage.googleapis.com/golang/go${GOLANG_VERSION}.linux-amd64.t RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.4.0 + pipx install aws-sam-cli==1.6.2 CMD ["dep", "ensure"] diff --git a/java11/build/Dockerfile b/java11/build/Dockerfile index bdfcd550..e413e546 100644 --- a/java11/build/Dockerfile +++ b/java11/build/Dockerfile @@ -20,4 +20,4 @@ ENV PATH="/usr/local/gradle/gradle-6.6.1/bin:/usr/local/maven/apache-maven-3.6.3 # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.4.0 + pipx install aws-sam-cli==1.6.2 diff --git a/java8.al2/build/Dockerfile b/java8.al2/build/Dockerfile index 7e507787..64e2944e 100644 --- a/java8.al2/build/Dockerfile +++ b/java8.al2/build/Dockerfile @@ -23,4 +23,4 @@ ENV PATH="/usr/local/gradle/gradle-6.6.1/bin:/usr/local/maven/apache-maven-3.6.3 # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.4.0 + pipx install aws-sam-cli==1.6.2 diff --git a/java8/build/Dockerfile b/java8/build/Dockerfile index 3137fe0d..33cb7352 100644 --- a/java8/build/Dockerfile +++ b/java8/build/Dockerfile @@ -23,4 +23,4 @@ ENV PATH="/usr/local/gradle/gradle-6.6.1/bin:/usr/local/maven/apache-maven-3.6.3 RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.4.0 + pipx install aws-sam-cli==1.6.2 diff --git a/nodejs10.x/build/Dockerfile b/nodejs10.x/build/Dockerfile index e92651d7..f4e9a3ea 100644 --- a/nodejs10.x/build/Dockerfile +++ b/nodejs10.x/build/Dockerfile @@ -14,4 +14,4 @@ COPY --from=0 /var/rapid /var/rapid # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.4.0 + pipx install aws-sam-cli==1.6.2 diff --git a/nodejs12.x/build/Dockerfile b/nodejs12.x/build/Dockerfile index 760d0c60..b78b82d4 100644 --- a/nodejs12.x/build/Dockerfile +++ b/nodejs12.x/build/Dockerfile @@ -14,4 +14,4 @@ COPY --from=0 /var/rapid /var/rapid # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.4.0 + pipx install aws-sam-cli==1.6.2 diff --git a/nodejs4.3/build/Dockerfile b/nodejs4.3/build/Dockerfile index b4dfc74e..56513f6c 100644 --- a/nodejs4.3/build/Dockerfile +++ b/nodejs4.3/build/Dockerfile @@ -17,6 +17,6 @@ COPY --from=0 /var/rapid /var/rapid RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.4.0 + pipx install aws-sam-cli==1.6.2 CMD ["npm", "rebuild"] diff --git a/nodejs6.10/build/Dockerfile b/nodejs6.10/build/Dockerfile index e1c2a8db..5949ba66 100644 --- a/nodejs6.10/build/Dockerfile +++ b/nodejs6.10/build/Dockerfile @@ -17,6 +17,6 @@ COPY --from=0 /var/rapid /var/rapid RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.4.0 + pipx install aws-sam-cli==1.6.2 CMD ["npm", "rebuild"] diff --git a/nodejs8.10/build/Dockerfile b/nodejs8.10/build/Dockerfile index be39d278..3fa8af62 100644 --- a/nodejs8.10/build/Dockerfile +++ b/nodejs8.10/build/Dockerfile @@ -17,6 +17,6 @@ COPY --from=0 /var/rapid /var/rapid RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.4.0 + pipx install aws-sam-cli==1.6.2 CMD ["npm", "rebuild"] diff --git a/provided.al2/build/Dockerfile b/provided.al2/build/Dockerfile index 6f48d488..0f918c25 100644 --- a/provided.al2/build/Dockerfile +++ b/provided.al2/build/Dockerfile @@ -9,4 +9,4 @@ COPY --from=0 /var/rapid /var/rapid # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.4.0 + pipx install aws-sam-cli==1.6.2 diff --git a/provided/build/Dockerfile b/provided/build/Dockerfile index 3593c5f9..e750bab2 100644 --- a/provided/build/Dockerfile +++ b/provided/build/Dockerfile @@ -11,4 +11,4 @@ COPY --from=0 /var/rapid /var/rapid RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.4.0 + pipx install aws-sam-cli==1.6.2 diff --git a/python3.6/build/Dockerfile b/python3.6/build/Dockerfile index 9288dec5..dfdd73cc 100644 --- a/python3.6/build/Dockerfile +++ b/python3.6/build/Dockerfile @@ -30,4 +30,4 @@ RUN pip install -U pip setuptools wheel --no-cache-dir && \ pipx install poetry==1.1.2 && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.4.0 + pipx install aws-sam-cli==1.6.2 diff --git a/python3.7/build/Dockerfile b/python3.7/build/Dockerfile index c39c5b46..5defbda8 100644 --- a/python3.7/build/Dockerfile +++ b/python3.7/build/Dockerfile @@ -21,4 +21,4 @@ RUN pip install -U pip setuptools wheel --no-cache-dir && \ pipx install poetry==1.1.2 && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.4.0 + pipx install aws-sam-cli==1.6.2 diff --git a/python3.8/build/Dockerfile b/python3.8/build/Dockerfile index 1913ede8..8072dcf6 100644 --- a/python3.8/build/Dockerfile +++ b/python3.8/build/Dockerfile @@ -21,4 +21,4 @@ RUN pip install -U pip setuptools wheel --no-cache-dir && \ pipx install poetry==1.1.2 && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.4.0 + pipx install aws-sam-cli==1.6.2 diff --git a/ruby2.5/build/Dockerfile b/ruby2.5/build/Dockerfile index 611e2d4c..f9abb231 100644 --- a/ruby2.5/build/Dockerfile +++ b/ruby2.5/build/Dockerfile @@ -19,6 +19,6 @@ COPY --from=0 /var/rapid /var/rapid RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.4.0 && \ + pipx install aws-sam-cli==1.6.2 && \ gem update --system --no-document && \ gem install --no-document bundler -v '~> 2.1' diff --git a/ruby2.7/build/Dockerfile b/ruby2.7/build/Dockerfile index 69833022..968b1ee3 100644 --- a/ruby2.7/build/Dockerfile +++ b/ruby2.7/build/Dockerfile @@ -17,6 +17,6 @@ COPY --from=0 /var/rapid /var/rapid # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.4.0 && \ + pipx install aws-sam-cli==1.6.2 && \ gem update --system --no-document && \ gem install --no-document bundler -v '~> 2.1' From 071d2044e131803c0d5467897018a0713f643910 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Wed, 14 Oct 2020 16:01:31 -0400 Subject: [PATCH 245/271] Update gradle to 6.7 --- java11/build/Dockerfile | 4 ++-- java8.al2/build/Dockerfile | 4 ++-- java8/build/Dockerfile | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/java11/build/Dockerfile b/java11/build/Dockerfile index e413e546..b5bb9683 100644 --- a/java11/build/Dockerfile +++ b/java11/build/Dockerfile @@ -10,12 +10,12 @@ COPY --from=0 /var/runtime /var/runtime COPY --from=0 /var/lang /var/lang COPY --from=0 /var/rapid /var/rapid -RUN mkdir /usr/local/gradle && curl -L -o gradle.zip https://services.gradle.org/distributions/gradle-6.6.1-bin.zip && \ +RUN mkdir /usr/local/gradle && curl -L -o gradle.zip https://services.gradle.org/distributions/gradle-6.7-bin.zip && \ unzip -qd /usr/local/gradle gradle.zip && rm gradle.zip && mkdir /usr/local/maven && \ curl -L http://mirror.cc.columbia.edu/pub/software/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz | \ tar -zx -C /usr/local/maven -ENV PATH="/usr/local/gradle/gradle-6.6.1/bin:/usr/local/maven/apache-maven-3.6.3/bin:${PATH}" +ENV PATH="/usr/local/gradle/gradle-6.7/bin:/usr/local/maven/apache-maven-3.6.3/bin:${PATH}" # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ diff --git a/java8.al2/build/Dockerfile b/java8.al2/build/Dockerfile index 64e2944e..c394c93f 100644 --- a/java8.al2/build/Dockerfile +++ b/java8.al2/build/Dockerfile @@ -13,12 +13,12 @@ COPY --from=0 /var/rapid /var/rapid RUN rm -rf /var/lang/* && \ curl -sSL https://corretto.aws/downloads/resources/8.265.01.1/amazon-corretto-8.265.01.1-linux-x64.tar.gz | tar -xz --strip-components=1 -C /var/lang && \ rm -rf /var/lang/*.zip && \ - mkdir /usr/local/gradle && curl -L -o gradle.zip https://services.gradle.org/distributions/gradle-6.6.1-bin.zip && \ + mkdir /usr/local/gradle && curl -L -o gradle.zip https://services.gradle.org/distributions/gradle-6.7-bin.zip && \ unzip -qd /usr/local/gradle gradle.zip && rm gradle.zip && mkdir /usr/local/maven && \ curl -L http://mirror.cc.columbia.edu/pub/software/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz | \ tar -zx -C /usr/local/maven -ENV PATH="/usr/local/gradle/gradle-6.6.1/bin:/usr/local/maven/apache-maven-3.6.3/bin:${PATH}" +ENV PATH="/usr/local/gradle/gradle-6.7/bin:/usr/local/maven/apache-maven-3.6.3/bin:${PATH}" # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ diff --git a/java8/build/Dockerfile b/java8/build/Dockerfile index 33cb7352..0fcaf577 100644 --- a/java8/build/Dockerfile +++ b/java8/build/Dockerfile @@ -11,12 +11,12 @@ COPY --from=0 /var/lang /var/lang COPY --from=0 /var/rapid /var/rapid RUN yum install -y java-1.8.0-openjdk-devel && \ - mkdir /usr/local/gradle && curl -L -o gradle.zip https://services.gradle.org/distributions/gradle-6.6.1-bin.zip && \ + mkdir /usr/local/gradle && curl -L -o gradle.zip https://services.gradle.org/distributions/gradle-6.7-bin.zip && \ unzip -qd /usr/local/gradle gradle.zip && rm gradle.zip && mkdir /usr/local/maven && \ curl -L http://mirror.cc.columbia.edu/pub/software/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz | \ tar -zx -C /usr/local/maven -ENV PATH="/usr/local/gradle/gradle-6.6.1/bin:/usr/local/maven/apache-maven-3.6.3/bin:${PATH}" +ENV PATH="/usr/local/gradle/gradle-6.7/bin:/usr/local/maven/apache-maven-3.6.3/bin:${PATH}" # Add these as a separate layer as they get updated frequently # The pipx workaround is due to https://github.com/pipxproject/pipx/issues/218 From 0785576d99dd6a4228057513042823002ffabfac Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Wed, 14 Oct 2020 16:02:19 -0400 Subject: [PATCH 246/271] Update poetry to 1.1.3 --- python2.7/build/Dockerfile | 2 +- python3.6/build/Dockerfile | 2 +- python3.7/build/Dockerfile | 2 +- python3.8/build/Dockerfile | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/python2.7/build/Dockerfile b/python2.7/build/Dockerfile index 6e3c3727..57fbc3c8 100644 --- a/python2.7/build/Dockerfile +++ b/python2.7/build/Dockerfile @@ -11,7 +11,7 @@ COPY --from=0 /var/rapid /var/rapid # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ pip install -U 'virtualenv>=16.0.0,<20.0.0' pipenv wheel --no-cache-dir && \ - curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.1.1/get-poetry.py | POETRY_VERSION=1.1.2 python && \ + curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.1.1/get-poetry.py | POETRY_VERSION=1.1.3 python && \ pip install -U awscli boto3 aws-sam-cli==0.22.0 aws-lambda-builders==0.4.0 --no-cache-dir ENV PATH=/root/.poetry/bin:$PATH diff --git a/python3.6/build/Dockerfile b/python3.6/build/Dockerfile index dfdd73cc..17e562cb 100644 --- a/python3.6/build/Dockerfile +++ b/python3.6/build/Dockerfile @@ -27,7 +27,7 @@ RUN pip install -U pip setuptools wheel --no-cache-dir && \ pip install pipx --no-cache-dir && \ pipx install virtualenv && \ pipx install pipenv && \ - pipx install poetry==1.1.2 && \ + pipx install poetry==1.1.3 && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ pipx install aws-sam-cli==1.6.2 diff --git a/python3.7/build/Dockerfile b/python3.7/build/Dockerfile index 5defbda8..75b401a9 100644 --- a/python3.7/build/Dockerfile +++ b/python3.7/build/Dockerfile @@ -18,7 +18,7 @@ RUN pip install -U pip setuptools wheel --no-cache-dir && \ pip install pipx --no-cache-dir && \ pipx install virtualenv && \ pipx install pipenv && \ - pipx install poetry==1.1.2 && \ + pipx install poetry==1.1.3 && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ pipx install aws-sam-cli==1.6.2 diff --git a/python3.8/build/Dockerfile b/python3.8/build/Dockerfile index 8072dcf6..580df2ef 100644 --- a/python3.8/build/Dockerfile +++ b/python3.8/build/Dockerfile @@ -18,7 +18,7 @@ RUN pip install -U pip setuptools wheel --no-cache-dir && \ pip install pipx --no-cache-dir && \ pipx install virtualenv && \ pipx install pipenv && \ - pipx install poetry==1.1.2 && \ + pipx install poetry==1.1.3 && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ pipx install aws-sam-cli==1.6.2 From d6d3a9ab4dd79894711c96d0b490ceacb57aec7a Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Wed, 14 Oct 2020 16:03:02 -0400 Subject: [PATCH 247/271] Update dotnetcore to 3.1.403 sdk --- dotnetcore3.1/build/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dotnetcore3.1/build/Dockerfile b/dotnetcore3.1/build/Dockerfile index 9d1bc68f..82aa9123 100644 --- a/dotnetcore3.1/build/Dockerfile +++ b/dotnetcore3.1/build/Dockerfile @@ -8,7 +8,7 @@ ENV DOTNET_ROOT=/var/lang/bin ENV PATH=/root/.dotnet/tools:$DOTNET_ROOT:$PATH \ LD_LIBRARY_PATH=/var/lang/lib:$LD_LIBRARY_PATH \ AWS_EXECUTION_ENV=AWS_Lambda_dotnetcore3.1 \ - DOTNET_SDK_VERSION=3.1.402 \ + DOTNET_SDK_VERSION=3.1.403 \ DOTNET_CLI_TELEMETRY_OPTOUT=1 \ NUGET_XMLDOC_MODE=skip From 082853b3cf1898b8516424aca4bf3644ae70eca5 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Sat, 24 Oct 2020 13:45:46 -0400 Subject: [PATCH 248/271] Bump poetry to 1.1.4 in python runtimes --- python2.7/build/Dockerfile | 2 +- python3.6/build/Dockerfile | 2 +- python3.7/build/Dockerfile | 2 +- python3.8/build/Dockerfile | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/python2.7/build/Dockerfile b/python2.7/build/Dockerfile index 57fbc3c8..826024bd 100644 --- a/python2.7/build/Dockerfile +++ b/python2.7/build/Dockerfile @@ -11,7 +11,7 @@ COPY --from=0 /var/rapid /var/rapid # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ pip install -U 'virtualenv>=16.0.0,<20.0.0' pipenv wheel --no-cache-dir && \ - curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.1.1/get-poetry.py | POETRY_VERSION=1.1.3 python && \ + curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.1.4/get-poetry.py | POETRY_VERSION=1.1.4 python && \ pip install -U awscli boto3 aws-sam-cli==0.22.0 aws-lambda-builders==0.4.0 --no-cache-dir ENV PATH=/root/.poetry/bin:$PATH diff --git a/python3.6/build/Dockerfile b/python3.6/build/Dockerfile index 17e562cb..40d29044 100644 --- a/python3.6/build/Dockerfile +++ b/python3.6/build/Dockerfile @@ -27,7 +27,7 @@ RUN pip install -U pip setuptools wheel --no-cache-dir && \ pip install pipx --no-cache-dir && \ pipx install virtualenv && \ pipx install pipenv && \ - pipx install poetry==1.1.3 && \ + pipx install poetry==1.1.4 && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ pipx install aws-sam-cli==1.6.2 diff --git a/python3.7/build/Dockerfile b/python3.7/build/Dockerfile index 75b401a9..35ba7e82 100644 --- a/python3.7/build/Dockerfile +++ b/python3.7/build/Dockerfile @@ -18,7 +18,7 @@ RUN pip install -U pip setuptools wheel --no-cache-dir && \ pip install pipx --no-cache-dir && \ pipx install virtualenv && \ pipx install pipenv && \ - pipx install poetry==1.1.3 && \ + pipx install poetry==1.1.4 && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ pipx install aws-sam-cli==1.6.2 diff --git a/python3.8/build/Dockerfile b/python3.8/build/Dockerfile index 580df2ef..0197a882 100644 --- a/python3.8/build/Dockerfile +++ b/python3.8/build/Dockerfile @@ -18,7 +18,7 @@ RUN pip install -U pip setuptools wheel --no-cache-dir && \ pip install pipx --no-cache-dir && \ pipx install virtualenv && \ pipx install pipenv && \ - pipx install poetry==1.1.3 && \ + pipx install poetry==1.1.4 && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ pipx install aws-sam-cli==1.6.2 From 0a1f88a0ccf199e2db68c8e665500d8a76e1930b Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Sat, 24 Oct 2020 14:11:41 -0400 Subject: [PATCH 249/271] Update package list in base images --- base/amazonlinux1.txt | 2 +- base/base-2/amazonlinux2.txt | 14 +++++++------- base/packages.txt | 12 ++++++------ 3 files changed, 14 insertions(+), 14 deletions(-) diff --git a/base/amazonlinux1.txt b/base/amazonlinux1.txt index a02b765a..98715fb1 100644 --- a/base/amazonlinux1.txt +++ b/base/amazonlinux1.txt @@ -92,7 +92,7 @@ sqlite-3.7.17-8.14.amzn1.x86_64 sysctl-defaults-1.0-1.1.amzn1.noarch system-release-2018.03-0.0.noarch tar-1.26-31.22.amzn1.x86_64 -tzdata-2019c-1.73.amzn1.noarch +tzdata-2020a-1.75.amzn1.noarch xz-libs-5.2.2-1.13.amzn1.x86_64 yum-3.4.3-150.71.amzn1.noarch yum-metadata-parser-1.1.4-10.20.amzn1.x86_64 diff --git a/base/base-2/amazonlinux2.txt b/base/base-2/amazonlinux2.txt index ac90985e..0a66ec0b 100644 --- a/base/base-2/amazonlinux2.txt +++ b/base/base-2/amazonlinux2.txt @@ -43,7 +43,7 @@ libgcc-7.3.1-9.amzn2.x86_64 libgcrypt-1.5.3-14.amzn2.0.2.x86_64 libgpg-error-1.12-3.amzn2.0.3.x86_64 libidn2-2.3.0-1.amzn2.x86_64 -libmetalink-0.1.2-7.amzn2.0.2.x86_64 +libmetalink-0.1.3-13.amzn2.x86_64 libmount-2.30.2-2.amzn2.0.4.x86_64 libnghttp2-1.41.0-1.amzn2.x86_64 libselinux-2.5-12.amzn2.0.2.x86_64 @@ -69,8 +69,8 @@ nss-tools-3.44.0-7.amzn2.x86_64 nss-util-3.44.0-4.amzn2.x86_64 openldap-2.4.44-15.amzn2.x86_64 openssl-libs-1.0.2k-19.amzn2.0.3.x86_64 -p11-kit-0.23.19-1.amzn2.x86_64 -p11-kit-trust-0.23.19-1.amzn2.x86_64 +p11-kit-0.23.21-2.amzn2.0.1.x86_64 +p11-kit-trust-0.23.21-2.amzn2.0.1.x86_64 pcre-8.32-17.amzn2.0.2.x86_64 pinentry-0.8.1-17.amzn2.0.2.x86_64 popt-1.13-16.amzn2.0.2.x86_64 @@ -82,12 +82,12 @@ python-iniparse-0.4-9.amzn2.noarch python-libs-2.7.18-1.amzn2.0.2.x86_64 python-pycurl-7.19.0-19.amzn2.0.2.x86_64 python-urlgrabber-3.10-9.amzn2.0.1.noarch -python2-rpm-4.11.3-40.amzn2.0.4.x86_64 +python2-rpm-4.11.3-40.amzn2.0.5.x86_64 pyxattr-0.5.1-5.amzn2.0.2.x86_64 readline-6.2-10.amzn2.0.2.x86_64 -rpm-4.11.3-40.amzn2.0.4.x86_64 -rpm-build-libs-4.11.3-40.amzn2.0.4.x86_64 -rpm-libs-4.11.3-40.amzn2.0.4.x86_64 +rpm-4.11.3-40.amzn2.0.5.x86_64 +rpm-build-libs-4.11.3-40.amzn2.0.5.x86_64 +rpm-libs-4.11.3-40.amzn2.0.5.x86_64 sed-4.2.2-5.amzn2.0.2.x86_64 setup-2.8.71-10.amzn2.0.1.noarch shared-mime-info-1.8-4.amzn2.x86_64 diff --git a/base/packages.txt b/base/packages.txt index b1cd85be..ed4de740 100644 --- a/base/packages.txt +++ b/base/packages.txt @@ -181,16 +181,16 @@ popt-1.13-7.7.amzn1.x86_64 procps-3.2.8-45.16.amzn1.x86_64 psmisc-22.20-8.12.amzn1.x86_64 pth-2.0.7-9.3.7.amzn1.x86_64 -python27-2.7.18-1.138.amzn1.x86_64 +python27-2.7.18-2.139.amzn1.x86_64 python27-iniparse-0.3.1-2.1.9.amzn1.noarch -python27-libs-2.7.18-1.138.amzn1.x86_64 +python27-libs-2.7.18-2.139.amzn1.x86_64 python27-pycurl-7.19.0-17.12.amzn1.x86_64 python27-pygpgme-0.3-9.12.amzn1.x86_64 python27-pyliblzma-0.5.3-11.6.amzn1.x86_64 python27-pyxattr-0.5.0-1.6.amzn1.x86_64 python27-urlgrabber-3.10-8.16.amzn1.noarch -python36-3.6.11-1.17.amzn1.x86_64 -python36-libs-3.6.11-1.17.amzn1.x86_64 +python36-3.6.12-1.19.amzn1.x86_64 +python36-libs-3.6.12-1.19.amzn1.x86_64 python36-pip-9.0.3-1.27.amzn1.noarch python36-setuptools-36.2.7-1.33.amzn1.noarch readline-6.2-9.14.amzn1.x86_64 @@ -207,8 +207,8 @@ sysctl-defaults-1.0-1.1.amzn1.noarch system-release-2018.03-0.0.noarch tar-1.26-31.22.amzn1.x86_64 ttmkfdir-3.0.9-32.1.5.amzn1.x86_64 -tzdata-2019c-1.73.amzn1.noarch -tzdata-java-2019c-1.73.amzn1.noarch +tzdata-2020a-1.75.amzn1.noarch +tzdata-java-2020a-1.75.amzn1.noarch unzip-6.0-4.10.amzn1.x86_64 urw-fonts-2.4-10.7.amzn1.noarch util-linux-2.23.2-59.29.amzn1.x86_64 From 27a9af159daf17bf0a25ca932b656ab7c0d796cd Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Thu, 29 Oct 2020 20:05:31 -0400 Subject: [PATCH 250/271] Update aws-sam-cli to 1.7.0 --- dotnetcore2.0/build/Dockerfile | 2 +- dotnetcore2.1/build/Dockerfile | 2 +- dotnetcore3.1/build/Dockerfile | 2 +- go1.x/build/Dockerfile | 2 +- java11/build/Dockerfile | 2 +- java8.al2/build/Dockerfile | 2 +- java8/build/Dockerfile | 2 +- nodejs10.x/build/Dockerfile | 2 +- nodejs12.x/build/Dockerfile | 2 +- nodejs4.3/build/Dockerfile | 2 +- nodejs6.10/build/Dockerfile | 2 +- nodejs8.10/build/Dockerfile | 2 +- provided.al2/build/Dockerfile | 2 +- provided/build/Dockerfile | 2 +- python3.6/build/Dockerfile | 2 +- python3.7/build/Dockerfile | 2 +- python3.8/build/Dockerfile | 2 +- ruby2.5/build/Dockerfile | 2 +- ruby2.7/build/Dockerfile | 2 +- 19 files changed, 19 insertions(+), 19 deletions(-) diff --git a/dotnetcore2.0/build/Dockerfile b/dotnetcore2.0/build/Dockerfile index c81f5a8d..e675411e 100644 --- a/dotnetcore2.0/build/Dockerfile +++ b/dotnetcore2.0/build/Dockerfile @@ -30,6 +30,6 @@ RUN source /usr/local/pipx/shared/bin/activate && \ pipx install pipenv && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.6.2 + pipx install aws-sam-cli==1.7.0 CMD ["dotnet", "build"] diff --git a/dotnetcore2.1/build/Dockerfile b/dotnetcore2.1/build/Dockerfile index bddb00c2..0e0da528 100644 --- a/dotnetcore2.1/build/Dockerfile +++ b/dotnetcore2.1/build/Dockerfile @@ -31,7 +31,7 @@ RUN source /usr/local/pipx/shared/bin/activate && \ pipx install pipenv && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.6.2 && \ + pipx install aws-sam-cli==1.7.0 && \ dotnet tool install --global Amazon.Lambda.Tools --version 3.3.1 CMD ["dotnet", "build"] diff --git a/dotnetcore3.1/build/Dockerfile b/dotnetcore3.1/build/Dockerfile index 82aa9123..c0bcd242 100644 --- a/dotnetcore3.1/build/Dockerfile +++ b/dotnetcore3.1/build/Dockerfile @@ -26,7 +26,7 @@ RUN curl -L https://dot.net/v1/dotnet-install.sh | bash -s -- -v $DOTNET_SDK_VER # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.6.2 && \ + pipx install aws-sam-cli==1.7.0 && \ dotnet tool install --global Amazon.Lambda.Tools --version 4.0.0 CMD ["dotnet", "build"] diff --git a/go1.x/build/Dockerfile b/go1.x/build/Dockerfile index f051bea7..b22fdb72 100644 --- a/go1.x/build/Dockerfile +++ b/go1.x/build/Dockerfile @@ -24,6 +24,6 @@ RUN curl https://storage.googleapis.com/golang/go${GOLANG_VERSION}.linux-amd64.t RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.6.2 + pipx install aws-sam-cli==1.7.0 CMD ["dep", "ensure"] diff --git a/java11/build/Dockerfile b/java11/build/Dockerfile index b5bb9683..abf973f1 100644 --- a/java11/build/Dockerfile +++ b/java11/build/Dockerfile @@ -20,4 +20,4 @@ ENV PATH="/usr/local/gradle/gradle-6.7/bin:/usr/local/maven/apache-maven-3.6.3/b # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.6.2 + pipx install aws-sam-cli==1.7.0 diff --git a/java8.al2/build/Dockerfile b/java8.al2/build/Dockerfile index c394c93f..2e14492d 100644 --- a/java8.al2/build/Dockerfile +++ b/java8.al2/build/Dockerfile @@ -23,4 +23,4 @@ ENV PATH="/usr/local/gradle/gradle-6.7/bin:/usr/local/maven/apache-maven-3.6.3/b # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.6.2 + pipx install aws-sam-cli==1.7.0 diff --git a/java8/build/Dockerfile b/java8/build/Dockerfile index 0fcaf577..c8ee4c94 100644 --- a/java8/build/Dockerfile +++ b/java8/build/Dockerfile @@ -23,4 +23,4 @@ ENV PATH="/usr/local/gradle/gradle-6.7/bin:/usr/local/maven/apache-maven-3.6.3/b RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.6.2 + pipx install aws-sam-cli==1.7.0 diff --git a/nodejs10.x/build/Dockerfile b/nodejs10.x/build/Dockerfile index f4e9a3ea..3bb9c466 100644 --- a/nodejs10.x/build/Dockerfile +++ b/nodejs10.x/build/Dockerfile @@ -14,4 +14,4 @@ COPY --from=0 /var/rapid /var/rapid # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.6.2 + pipx install aws-sam-cli==1.7.0 diff --git a/nodejs12.x/build/Dockerfile b/nodejs12.x/build/Dockerfile index b78b82d4..9e38767e 100644 --- a/nodejs12.x/build/Dockerfile +++ b/nodejs12.x/build/Dockerfile @@ -14,4 +14,4 @@ COPY --from=0 /var/rapid /var/rapid # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.6.2 + pipx install aws-sam-cli==1.7.0 diff --git a/nodejs4.3/build/Dockerfile b/nodejs4.3/build/Dockerfile index 56513f6c..4a57e33d 100644 --- a/nodejs4.3/build/Dockerfile +++ b/nodejs4.3/build/Dockerfile @@ -17,6 +17,6 @@ COPY --from=0 /var/rapid /var/rapid RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.6.2 + pipx install aws-sam-cli==1.7.0 CMD ["npm", "rebuild"] diff --git a/nodejs6.10/build/Dockerfile b/nodejs6.10/build/Dockerfile index 5949ba66..9efe61f3 100644 --- a/nodejs6.10/build/Dockerfile +++ b/nodejs6.10/build/Dockerfile @@ -17,6 +17,6 @@ COPY --from=0 /var/rapid /var/rapid RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.6.2 + pipx install aws-sam-cli==1.7.0 CMD ["npm", "rebuild"] diff --git a/nodejs8.10/build/Dockerfile b/nodejs8.10/build/Dockerfile index 3fa8af62..4d17101a 100644 --- a/nodejs8.10/build/Dockerfile +++ b/nodejs8.10/build/Dockerfile @@ -17,6 +17,6 @@ COPY --from=0 /var/rapid /var/rapid RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.6.2 + pipx install aws-sam-cli==1.7.0 CMD ["npm", "rebuild"] diff --git a/provided.al2/build/Dockerfile b/provided.al2/build/Dockerfile index 0f918c25..4a588655 100644 --- a/provided.al2/build/Dockerfile +++ b/provided.al2/build/Dockerfile @@ -9,4 +9,4 @@ COPY --from=0 /var/rapid /var/rapid # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.6.2 + pipx install aws-sam-cli==1.7.0 diff --git a/provided/build/Dockerfile b/provided/build/Dockerfile index e750bab2..3beb63e5 100644 --- a/provided/build/Dockerfile +++ b/provided/build/Dockerfile @@ -11,4 +11,4 @@ COPY --from=0 /var/rapid /var/rapid RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.6.2 + pipx install aws-sam-cli==1.7.0 diff --git a/python3.6/build/Dockerfile b/python3.6/build/Dockerfile index 40d29044..94b3fdd0 100644 --- a/python3.6/build/Dockerfile +++ b/python3.6/build/Dockerfile @@ -30,4 +30,4 @@ RUN pip install -U pip setuptools wheel --no-cache-dir && \ pipx install poetry==1.1.4 && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.6.2 + pipx install aws-sam-cli==1.7.0 diff --git a/python3.7/build/Dockerfile b/python3.7/build/Dockerfile index 35ba7e82..08373525 100644 --- a/python3.7/build/Dockerfile +++ b/python3.7/build/Dockerfile @@ -21,4 +21,4 @@ RUN pip install -U pip setuptools wheel --no-cache-dir && \ pipx install poetry==1.1.4 && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.6.2 + pipx install aws-sam-cli==1.7.0 diff --git a/python3.8/build/Dockerfile b/python3.8/build/Dockerfile index 0197a882..3e996ce6 100644 --- a/python3.8/build/Dockerfile +++ b/python3.8/build/Dockerfile @@ -21,4 +21,4 @@ RUN pip install -U pip setuptools wheel --no-cache-dir && \ pipx install poetry==1.1.4 && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.6.2 + pipx install aws-sam-cli==1.7.0 diff --git a/ruby2.5/build/Dockerfile b/ruby2.5/build/Dockerfile index f9abb231..832f92dd 100644 --- a/ruby2.5/build/Dockerfile +++ b/ruby2.5/build/Dockerfile @@ -19,6 +19,6 @@ COPY --from=0 /var/rapid /var/rapid RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.6.2 && \ + pipx install aws-sam-cli==1.7.0 && \ gem update --system --no-document && \ gem install --no-document bundler -v '~> 2.1' diff --git a/ruby2.7/build/Dockerfile b/ruby2.7/build/Dockerfile index 968b1ee3..9ba9965e 100644 --- a/ruby2.7/build/Dockerfile +++ b/ruby2.7/build/Dockerfile @@ -17,6 +17,6 @@ COPY --from=0 /var/rapid /var/rapid # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.6.2 && \ + pipx install aws-sam-cli==1.7.0 && \ gem update --system --no-document && \ gem install --no-document bundler -v '~> 2.1' From ce25a2d132b775c4c902e994f5a448ba85c3c1af Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Thu, 29 Oct 2020 20:08:44 -0400 Subject: [PATCH 251/271] Update base2 packages --- base/amazonlinux1.txt | 12 ++++++------ base/base-2/amazonlinux2.txt | 24 ++++++++++++------------ base/base-2/packages.txt | 4 ++-- 3 files changed, 20 insertions(+), 20 deletions(-) diff --git a/base/amazonlinux1.txt b/base/amazonlinux1.txt index 98715fb1..beed053c 100644 --- a/base/amazonlinux1.txt +++ b/base/amazonlinux1.txt @@ -46,8 +46,8 @@ libstdc++72-7.2.1-2.59.amzn1.x86_64 libtasn1-2.3-6.6.amzn1.x86_64 libunistring-0.9.3-6.1.amzn1.x86_64 libverto-0.2.5-4.9.amzn1.x86_64 -libxml2-2.9.1-6.4.40.amzn1.x86_64 -libxml2-python27-2.9.1-6.4.40.amzn1.x86_64 +libxml2-2.9.1-6.4.41.amzn1.x86_64 +libxml2-python27-2.9.1-6.4.41.amzn1.x86_64 lua-5.1.4-4.1.9.amzn1.x86_64 make-3.82-21.10.amzn1.x86_64 ncurses-5.7-4.20090207.14.amzn1.x86_64 @@ -81,10 +81,10 @@ python27-pyliblzma-0.5.3-11.6.amzn1.x86_64 python27-pyxattr-0.5.0-1.6.amzn1.x86_64 python27-urlgrabber-3.10-8.16.amzn1.noarch readline-6.2-9.14.amzn1.x86_64 -rpm-4.11.3-40.77.amzn1.x86_64 -rpm-build-libs-4.11.3-40.77.amzn1.x86_64 -rpm-libs-4.11.3-40.77.amzn1.x86_64 -rpm-python27-4.11.3-40.77.amzn1.x86_64 +rpm-4.11.3-40.78.amzn1.x86_64 +rpm-build-libs-4.11.3-40.78.amzn1.x86_64 +rpm-libs-4.11.3-40.78.amzn1.x86_64 +rpm-python27-4.11.3-40.78.amzn1.x86_64 sed-4.2.1-10.10.amzn1.x86_64 setup-2.8.14-20.12.amzn1.noarch shared-mime-info-1.1-9.8.amzn1.x86_64 diff --git a/base/base-2/amazonlinux2.txt b/base/base-2/amazonlinux2.txt index 0a66ec0b..3dee288d 100644 --- a/base/base-2/amazonlinux2.txt +++ b/base/base-2/amazonlinux2.txt @@ -1,26 +1,26 @@ amazon-linux-extras-1.6.12-1.amzn2.noarch basesystem-10.0-7.amzn2.0.1.noarch -bash-4.2.46-33.amzn2.x86_64 +bash-4.2.46-34.amzn2.x86_64 bzip2-libs-1.0.6-13.amzn2.0.2.x86_64 ca-certificates-2019.2.32-76.amzn2.0.3.noarch chkconfig-1.7.4-1.amzn2.0.2.x86_64 coreutils-8.22-24.amzn2.x86_64 -cpio-2.11-27.amzn2.x86_64 +cpio-2.11-28.amzn2.x86_64 curl-7.61.1-12.amzn2.0.2.x86_64 cyrus-sasl-lib-2.1.26-23.amzn2.x86_64 diffutils-3.3-5.amzn2.x86_64 elfutils-libelf-0.176-2.amzn2.x86_64 -expat-2.1.0-10.amzn2.0.2.x86_64 +expat-2.1.0-12.amzn2.x86_64 file-libs-5.11-36.amzn2.0.1.x86_64 filesystem-3.2-25.amzn2.0.4.x86_64 findutils-4.5.11-6.amzn2.x86_64 gawk-4.0.2-4.amzn2.1.2.x86_64 gdbm-1.13-6.amzn2.0.2.x86_64 glib2-2.56.1-5.amzn2.0.1.x86_64 -glibc-2.26-35.amzn2.x86_64 -glibc-common-2.26-35.amzn2.x86_64 -glibc-langpack-en-2.26-35.amzn2.x86_64 -glibc-minimal-langpack-2.26-35.amzn2.x86_64 +glibc-2.26-37.amzn2.x86_64 +glibc-common-2.26-37.amzn2.x86_64 +glibc-langpack-en-2.26-37.amzn2.x86_64 +glibc-minimal-langpack-2.26-37.amzn2.x86_64 gmp-6.0.0-15.amzn2.0.2.x86_64 gnupg2-2.0.22-5.amzn2.0.4.x86_64 gpgme-1.3.2-5.amzn2.0.2.x86_64 @@ -33,8 +33,8 @@ libassuan-2.1.0-3.amzn2.0.2.x86_64 libattr-2.4.46-12.amzn2.0.2.x86_64 libblkid-2.30.2-2.amzn2.0.4.x86_64 libcap-2.22-9.amzn2.0.2.x86_64 -libcom_err-1.42.9-12.amzn2.0.2.x86_64 -libcrypt-2.26-35.amzn2.x86_64 +libcom_err-1.42.9-19.amzn2.x86_64 +libcrypt-2.26-37.amzn2.x86_64 libcurl-7.61.1-12.amzn2.0.2.x86_64 libdb-5.3.21-24.amzn2.0.3.x86_64 libdb-utils-5.3.21-24.amzn2.0.3.x86_64 @@ -48,13 +48,13 @@ libmount-2.30.2-2.amzn2.0.4.x86_64 libnghttp2-1.41.0-1.amzn2.x86_64 libselinux-2.5-12.amzn2.0.2.x86_64 libsepol-2.5-8.1.amzn2.0.2.x86_64 -libssh2-1.4.3-12.amzn2.2.2.x86_64 +libssh2-1.4.3-12.amzn2.2.3.x86_64 libstdc++-7.3.1-9.amzn2.x86_64 libtasn1-4.10-1.amzn2.0.2.x86_64 libunistring-0.9.3-9.amzn2.0.2.x86_64 libuuid-2.30.2-2.amzn2.0.4.x86_64 libverto-0.2.5-4.amzn2.0.2.x86_64 -libxml2-2.9.1-6.amzn2.4.1.x86_64 +libxml2-2.9.1-6.amzn2.5.1.x86_64 lua-5.1.4-15.amzn2.0.2.x86_64 ncurses-6.0-8.20170212.amzn2.1.3.x86_64 ncurses-base-6.0-8.20170212.amzn2.1.3.noarch @@ -67,7 +67,7 @@ nss-softokn-freebl-3.44.0-8.amzn2.x86_64 nss-sysinit-3.44.0-7.amzn2.x86_64 nss-tools-3.44.0-7.amzn2.x86_64 nss-util-3.44.0-4.amzn2.x86_64 -openldap-2.4.44-15.amzn2.x86_64 +openldap-2.4.44-22.amzn2.x86_64 openssl-libs-1.0.2k-19.amzn2.0.3.x86_64 p11-kit-0.23.21-2.amzn2.0.1.x86_64 p11-kit-trust-0.23.21-2.amzn2.0.1.x86_64 diff --git a/base/base-2/packages.txt b/base/base-2/packages.txt index 18018541..85f41c16 100644 --- a/base/base-2/packages.txt +++ b/base/base-2/packages.txt @@ -33,8 +33,8 @@ nspr-4.21.0-1.amzn2.0.2.x86_64 nss-softokn-freebl-3.44.0-8.amzn2.x86_64 nss-util-3.44.0-4.amzn2.x86_64 openssl-libs-1.0.2k-19.amzn2.0.3.x86_64 -p11-kit-0.23.19-1.amzn2.x86_64 -p11-kit-trust-0.23.19-1.amzn2.x86_64 +p11-kit-0.23.21-2.amzn2.0.1.x86_64 +p11-kit-trust-0.23.21-2.amzn2.0.1.x86_64 pcre-8.32-17.amzn2.0.2.x86_64 popt-1.13-16.amzn2.0.2.x86_64 sed-4.2.2-5.amzn2.0.2.x86_64 From b8069e22612c44305ed28188d672429f2b69b891 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Thu, 5 Nov 2020 21:13:22 -0500 Subject: [PATCH 252/271] Update aws-sam-cli to 1.8.0 --- dotnetcore2.0/build/Dockerfile | 2 +- dotnetcore2.1/build/Dockerfile | 2 +- dotnetcore3.1/build/Dockerfile | 2 +- go1.x/build/Dockerfile | 2 +- java11/build/Dockerfile | 2 +- java8.al2/build/Dockerfile | 2 +- java8/build/Dockerfile | 2 +- nodejs10.x/build/Dockerfile | 2 +- nodejs12.x/build/Dockerfile | 2 +- nodejs4.3/build/Dockerfile | 2 +- nodejs6.10/build/Dockerfile | 2 +- nodejs8.10/build/Dockerfile | 2 +- provided.al2/build/Dockerfile | 2 +- provided/build/Dockerfile | 2 +- python3.6/build/Dockerfile | 2 +- python3.7/build/Dockerfile | 2 +- python3.8/build/Dockerfile | 2 +- ruby2.5/build/Dockerfile | 2 +- ruby2.7/build/Dockerfile | 2 +- 19 files changed, 19 insertions(+), 19 deletions(-) diff --git a/dotnetcore2.0/build/Dockerfile b/dotnetcore2.0/build/Dockerfile index e675411e..fc8216ba 100644 --- a/dotnetcore2.0/build/Dockerfile +++ b/dotnetcore2.0/build/Dockerfile @@ -30,6 +30,6 @@ RUN source /usr/local/pipx/shared/bin/activate && \ pipx install pipenv && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.7.0 + pipx install aws-sam-cli==1.8.0 CMD ["dotnet", "build"] diff --git a/dotnetcore2.1/build/Dockerfile b/dotnetcore2.1/build/Dockerfile index 0e0da528..80626c55 100644 --- a/dotnetcore2.1/build/Dockerfile +++ b/dotnetcore2.1/build/Dockerfile @@ -31,7 +31,7 @@ RUN source /usr/local/pipx/shared/bin/activate && \ pipx install pipenv && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.7.0 && \ + pipx install aws-sam-cli==1.8.0 && \ dotnet tool install --global Amazon.Lambda.Tools --version 3.3.1 CMD ["dotnet", "build"] diff --git a/dotnetcore3.1/build/Dockerfile b/dotnetcore3.1/build/Dockerfile index c0bcd242..62792b41 100644 --- a/dotnetcore3.1/build/Dockerfile +++ b/dotnetcore3.1/build/Dockerfile @@ -26,7 +26,7 @@ RUN curl -L https://dot.net/v1/dotnet-install.sh | bash -s -- -v $DOTNET_SDK_VER # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.7.0 && \ + pipx install aws-sam-cli==1.8.0 && \ dotnet tool install --global Amazon.Lambda.Tools --version 4.0.0 CMD ["dotnet", "build"] diff --git a/go1.x/build/Dockerfile b/go1.x/build/Dockerfile index b22fdb72..6bacf73b 100644 --- a/go1.x/build/Dockerfile +++ b/go1.x/build/Dockerfile @@ -24,6 +24,6 @@ RUN curl https://storage.googleapis.com/golang/go${GOLANG_VERSION}.linux-amd64.t RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.7.0 + pipx install aws-sam-cli==1.8.0 CMD ["dep", "ensure"] diff --git a/java11/build/Dockerfile b/java11/build/Dockerfile index abf973f1..a4f33612 100644 --- a/java11/build/Dockerfile +++ b/java11/build/Dockerfile @@ -20,4 +20,4 @@ ENV PATH="/usr/local/gradle/gradle-6.7/bin:/usr/local/maven/apache-maven-3.6.3/b # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.7.0 + pipx install aws-sam-cli==1.8.0 diff --git a/java8.al2/build/Dockerfile b/java8.al2/build/Dockerfile index 2e14492d..d54a88ea 100644 --- a/java8.al2/build/Dockerfile +++ b/java8.al2/build/Dockerfile @@ -23,4 +23,4 @@ ENV PATH="/usr/local/gradle/gradle-6.7/bin:/usr/local/maven/apache-maven-3.6.3/b # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.7.0 + pipx install aws-sam-cli==1.8.0 diff --git a/java8/build/Dockerfile b/java8/build/Dockerfile index c8ee4c94..11bb8f4f 100644 --- a/java8/build/Dockerfile +++ b/java8/build/Dockerfile @@ -23,4 +23,4 @@ ENV PATH="/usr/local/gradle/gradle-6.7/bin:/usr/local/maven/apache-maven-3.6.3/b RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.7.0 + pipx install aws-sam-cli==1.8.0 diff --git a/nodejs10.x/build/Dockerfile b/nodejs10.x/build/Dockerfile index 3bb9c466..69557bb4 100644 --- a/nodejs10.x/build/Dockerfile +++ b/nodejs10.x/build/Dockerfile @@ -14,4 +14,4 @@ COPY --from=0 /var/rapid /var/rapid # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.7.0 + pipx install aws-sam-cli==1.8.0 diff --git a/nodejs12.x/build/Dockerfile b/nodejs12.x/build/Dockerfile index 9e38767e..d5eaaac1 100644 --- a/nodejs12.x/build/Dockerfile +++ b/nodejs12.x/build/Dockerfile @@ -14,4 +14,4 @@ COPY --from=0 /var/rapid /var/rapid # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.7.0 + pipx install aws-sam-cli==1.8.0 diff --git a/nodejs4.3/build/Dockerfile b/nodejs4.3/build/Dockerfile index 4a57e33d..09aee3e4 100644 --- a/nodejs4.3/build/Dockerfile +++ b/nodejs4.3/build/Dockerfile @@ -17,6 +17,6 @@ COPY --from=0 /var/rapid /var/rapid RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.7.0 + pipx install aws-sam-cli==1.8.0 CMD ["npm", "rebuild"] diff --git a/nodejs6.10/build/Dockerfile b/nodejs6.10/build/Dockerfile index 9efe61f3..a8287d23 100644 --- a/nodejs6.10/build/Dockerfile +++ b/nodejs6.10/build/Dockerfile @@ -17,6 +17,6 @@ COPY --from=0 /var/rapid /var/rapid RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.7.0 + pipx install aws-sam-cli==1.8.0 CMD ["npm", "rebuild"] diff --git a/nodejs8.10/build/Dockerfile b/nodejs8.10/build/Dockerfile index 4d17101a..e50647dd 100644 --- a/nodejs8.10/build/Dockerfile +++ b/nodejs8.10/build/Dockerfile @@ -17,6 +17,6 @@ COPY --from=0 /var/rapid /var/rapid RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.7.0 + pipx install aws-sam-cli==1.8.0 CMD ["npm", "rebuild"] diff --git a/provided.al2/build/Dockerfile b/provided.al2/build/Dockerfile index 4a588655..14ed1022 100644 --- a/provided.al2/build/Dockerfile +++ b/provided.al2/build/Dockerfile @@ -9,4 +9,4 @@ COPY --from=0 /var/rapid /var/rapid # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.7.0 + pipx install aws-sam-cli==1.8.0 diff --git a/provided/build/Dockerfile b/provided/build/Dockerfile index 3beb63e5..f1980e41 100644 --- a/provided/build/Dockerfile +++ b/provided/build/Dockerfile @@ -11,4 +11,4 @@ COPY --from=0 /var/rapid /var/rapid RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.7.0 + pipx install aws-sam-cli==1.8.0 diff --git a/python3.6/build/Dockerfile b/python3.6/build/Dockerfile index 94b3fdd0..23ad8d3a 100644 --- a/python3.6/build/Dockerfile +++ b/python3.6/build/Dockerfile @@ -30,4 +30,4 @@ RUN pip install -U pip setuptools wheel --no-cache-dir && \ pipx install poetry==1.1.4 && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.7.0 + pipx install aws-sam-cli==1.8.0 diff --git a/python3.7/build/Dockerfile b/python3.7/build/Dockerfile index 08373525..2074777a 100644 --- a/python3.7/build/Dockerfile +++ b/python3.7/build/Dockerfile @@ -21,4 +21,4 @@ RUN pip install -U pip setuptools wheel --no-cache-dir && \ pipx install poetry==1.1.4 && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.7.0 + pipx install aws-sam-cli==1.8.0 diff --git a/python3.8/build/Dockerfile b/python3.8/build/Dockerfile index 3e996ce6..8d67f17f 100644 --- a/python3.8/build/Dockerfile +++ b/python3.8/build/Dockerfile @@ -21,4 +21,4 @@ RUN pip install -U pip setuptools wheel --no-cache-dir && \ pipx install poetry==1.1.4 && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.7.0 + pipx install aws-sam-cli==1.8.0 diff --git a/ruby2.5/build/Dockerfile b/ruby2.5/build/Dockerfile index 832f92dd..4443df93 100644 --- a/ruby2.5/build/Dockerfile +++ b/ruby2.5/build/Dockerfile @@ -19,6 +19,6 @@ COPY --from=0 /var/rapid /var/rapid RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.7.0 && \ + pipx install aws-sam-cli==1.8.0 && \ gem update --system --no-document && \ gem install --no-document bundler -v '~> 2.1' diff --git a/ruby2.7/build/Dockerfile b/ruby2.7/build/Dockerfile index 9ba9965e..540e6625 100644 --- a/ruby2.7/build/Dockerfile +++ b/ruby2.7/build/Dockerfile @@ -17,6 +17,6 @@ COPY --from=0 /var/rapid /var/rapid # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.7.0 && \ + pipx install aws-sam-cli==1.8.0 && \ gem update --system --no-document && \ gem install --no-document bundler -v '~> 2.1' From 8192be17f92d23304c737cd37592eac80ae536e0 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Tue, 10 Nov 2020 14:13:10 -0500 Subject: [PATCH 253/271] Update base and base2 packages --- base/base-2/Dockerfile | 2 +- base/base-2/packages.txt | 12 ++++++------ base/packages.txt | 10 +++++----- 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/base/base-2/Dockerfile b/base/base-2/Dockerfile index 41750c26..aba6aa99 100644 --- a/base/base-2/Dockerfile +++ b/base/base-2/Dockerfile @@ -6,7 +6,7 @@ FROM amazonlinux:2 ADD ./base-2.tgz /opt/ RUN yum --installroot=/opt reinstall -y filesystem-3.2-25.amzn2.0.4 \ - setup-2.8.71-10.amzn2.0.1 glibc-2.26-35.amzn2 glibc-common-2.26-35.amzn2 && \ + setup-2.8.71-10.amzn2.0.1 glibc-2.26-37.amzn2 glibc-common-2.26-37.amzn2 && \ yum --installroot=/opt clean all FROM scratch diff --git a/base/base-2/packages.txt b/base/base-2/packages.txt index 85f41c16..b306a3a8 100644 --- a/base/base-2/packages.txt +++ b/base/base-2/packages.txt @@ -1,14 +1,14 @@ basesystem-10.0-7.amzn2.0.1.noarch -bash-4.2.46-33.amzn2.x86_64 +bash-4.2.46-34.amzn2.x86_64 ca-certificates-2019.2.32-76.amzn2.0.3.noarch chkconfig-1.7.4-1.amzn2.0.2.x86_64 coreutils-8.22-24.amzn2.x86_64 filesystem-3.2-25.amzn2.0.4.x86_64 gawk-4.0.2-4.amzn2.1.2.x86_64 -glibc-2.26-35.amzn2.x86_64 -glibc-all-langpacks-2.26-35.amzn2.x86_64 -glibc-common-2.26-35.amzn2.x86_64 -glibc-minimal-langpack-2.26-35.amzn2.x86_64 +glibc-2.26-37.amzn2.x86_64 +glibc-all-langpacks-2.26-37.amzn2.x86_64 +glibc-common-2.26-37.amzn2.x86_64 +glibc-minimal-langpack-2.26-37.amzn2.x86_64 gmp-6.0.0-15.amzn2.0.2.x86_64 grep-2.20-3.amzn2.0.2.x86_64 info-5.1-5.amzn2.x86_64 @@ -17,7 +17,7 @@ krb5-libs-1.15.1-37.amzn2.2.2.x86_64 libacl-2.2.51-14.amzn2.x86_64 libattr-2.4.46-12.amzn2.0.2.x86_64 libcap-2.22-9.amzn2.0.2.x86_64 -libcom_err-1.42.9-12.amzn2.0.2.x86_64 +libcom_err-1.42.9-19.amzn2.x86_64 libffi-3.0.13-18.amzn2.0.2.x86_64 libgcc-7.3.1-9.amzn2.x86_64 libicu-50.2-4.amzn2.x86_64 diff --git a/base/packages.txt b/base/packages.txt index ed4de740..efe940a0 100644 --- a/base/packages.txt +++ b/base/packages.txt @@ -119,7 +119,7 @@ libuuid-2.23.2-59.29.amzn1.x86_64 libverto-0.2.5-4.9.amzn1.x86_64 libwmf-lite-0.2.8.4-41.13.amzn1.x86_64 libxcb-1.11-2.21.amzn1.x86_64 -libxml2-2.9.1-6.4.40.amzn1.x86_64 +libxml2-2.9.1-6.4.41.amzn1.x86_64 libxshmfence-1.2-1.4.amzn1.x86_64 libxslt-1.1.28-5.13.amzn1.x86_64 lksctp-tools-1.0.10-7.7.amzn1.x86_64 @@ -194,10 +194,10 @@ python36-libs-3.6.12-1.19.amzn1.x86_64 python36-pip-9.0.3-1.27.amzn1.noarch python36-setuptools-36.2.7-1.33.amzn1.noarch readline-6.2-9.14.amzn1.x86_64 -rpm-4.11.3-40.77.amzn1.x86_64 -rpm-build-libs-4.11.3-40.77.amzn1.x86_64 -rpm-libs-4.11.3-40.77.amzn1.x86_64 -rpm-python27-4.11.3-40.77.amzn1.x86_64 +rpm-4.11.3-40.78.amzn1.x86_64 +rpm-build-libs-4.11.3-40.78.amzn1.x86_64 +rpm-libs-4.11.3-40.78.amzn1.x86_64 +rpm-python27-4.11.3-40.78.amzn1.x86_64 sed-4.2.1-10.10.amzn1.x86_64 setup-2.8.14-20.12.amzn1.noarch shadow-utils-4.1.4.2-13.10.amzn1.x86_64 From 64b72bf9c918aa7df3a31abeb1e321e97eb13468 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Tue, 10 Nov 2020 14:13:26 -0500 Subject: [PATCH 254/271] Update aws-sam-cli to 1.9.0 --- dotnetcore2.0/build/Dockerfile | 2 +- dotnetcore2.1/build/Dockerfile | 2 +- dotnetcore3.1/build/Dockerfile | 2 +- go1.x/build/Dockerfile | 2 +- java11/build/Dockerfile | 2 +- java8.al2/build/Dockerfile | 2 +- java8/build/Dockerfile | 2 +- nodejs10.x/build/Dockerfile | 2 +- nodejs12.x/build/Dockerfile | 2 +- nodejs4.3/build/Dockerfile | 2 +- nodejs6.10/build/Dockerfile | 2 +- nodejs8.10/build/Dockerfile | 2 +- provided.al2/build/Dockerfile | 2 +- provided/build/Dockerfile | 2 +- python3.6/build/Dockerfile | 2 +- python3.7/build/Dockerfile | 2 +- python3.8/build/Dockerfile | 2 +- ruby2.5/build/Dockerfile | 2 +- ruby2.7/build/Dockerfile | 2 +- 19 files changed, 19 insertions(+), 19 deletions(-) diff --git a/dotnetcore2.0/build/Dockerfile b/dotnetcore2.0/build/Dockerfile index fc8216ba..25be1128 100644 --- a/dotnetcore2.0/build/Dockerfile +++ b/dotnetcore2.0/build/Dockerfile @@ -30,6 +30,6 @@ RUN source /usr/local/pipx/shared/bin/activate && \ pipx install pipenv && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.8.0 + pipx install aws-sam-cli==1.9.0 CMD ["dotnet", "build"] diff --git a/dotnetcore2.1/build/Dockerfile b/dotnetcore2.1/build/Dockerfile index 80626c55..ec92d1ce 100644 --- a/dotnetcore2.1/build/Dockerfile +++ b/dotnetcore2.1/build/Dockerfile @@ -31,7 +31,7 @@ RUN source /usr/local/pipx/shared/bin/activate && \ pipx install pipenv && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.8.0 && \ + pipx install aws-sam-cli==1.9.0 && \ dotnet tool install --global Amazon.Lambda.Tools --version 3.3.1 CMD ["dotnet", "build"] diff --git a/dotnetcore3.1/build/Dockerfile b/dotnetcore3.1/build/Dockerfile index 62792b41..b2c54335 100644 --- a/dotnetcore3.1/build/Dockerfile +++ b/dotnetcore3.1/build/Dockerfile @@ -26,7 +26,7 @@ RUN curl -L https://dot.net/v1/dotnet-install.sh | bash -s -- -v $DOTNET_SDK_VER # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.8.0 && \ + pipx install aws-sam-cli==1.9.0 && \ dotnet tool install --global Amazon.Lambda.Tools --version 4.0.0 CMD ["dotnet", "build"] diff --git a/go1.x/build/Dockerfile b/go1.x/build/Dockerfile index 6bacf73b..f5eb80af 100644 --- a/go1.x/build/Dockerfile +++ b/go1.x/build/Dockerfile @@ -24,6 +24,6 @@ RUN curl https://storage.googleapis.com/golang/go${GOLANG_VERSION}.linux-amd64.t RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.8.0 + pipx install aws-sam-cli==1.9.0 CMD ["dep", "ensure"] diff --git a/java11/build/Dockerfile b/java11/build/Dockerfile index a4f33612..32714825 100644 --- a/java11/build/Dockerfile +++ b/java11/build/Dockerfile @@ -20,4 +20,4 @@ ENV PATH="/usr/local/gradle/gradle-6.7/bin:/usr/local/maven/apache-maven-3.6.3/b # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.8.0 + pipx install aws-sam-cli==1.9.0 diff --git a/java8.al2/build/Dockerfile b/java8.al2/build/Dockerfile index d54a88ea..0eb718e0 100644 --- a/java8.al2/build/Dockerfile +++ b/java8.al2/build/Dockerfile @@ -23,4 +23,4 @@ ENV PATH="/usr/local/gradle/gradle-6.7/bin:/usr/local/maven/apache-maven-3.6.3/b # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.8.0 + pipx install aws-sam-cli==1.9.0 diff --git a/java8/build/Dockerfile b/java8/build/Dockerfile index 11bb8f4f..55090f57 100644 --- a/java8/build/Dockerfile +++ b/java8/build/Dockerfile @@ -23,4 +23,4 @@ ENV PATH="/usr/local/gradle/gradle-6.7/bin:/usr/local/maven/apache-maven-3.6.3/b RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.8.0 + pipx install aws-sam-cli==1.9.0 diff --git a/nodejs10.x/build/Dockerfile b/nodejs10.x/build/Dockerfile index 69557bb4..888f19a0 100644 --- a/nodejs10.x/build/Dockerfile +++ b/nodejs10.x/build/Dockerfile @@ -14,4 +14,4 @@ COPY --from=0 /var/rapid /var/rapid # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.8.0 + pipx install aws-sam-cli==1.9.0 diff --git a/nodejs12.x/build/Dockerfile b/nodejs12.x/build/Dockerfile index d5eaaac1..96979a34 100644 --- a/nodejs12.x/build/Dockerfile +++ b/nodejs12.x/build/Dockerfile @@ -14,4 +14,4 @@ COPY --from=0 /var/rapid /var/rapid # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.8.0 + pipx install aws-sam-cli==1.9.0 diff --git a/nodejs4.3/build/Dockerfile b/nodejs4.3/build/Dockerfile index 09aee3e4..c99b7ead 100644 --- a/nodejs4.3/build/Dockerfile +++ b/nodejs4.3/build/Dockerfile @@ -17,6 +17,6 @@ COPY --from=0 /var/rapid /var/rapid RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.8.0 + pipx install aws-sam-cli==1.9.0 CMD ["npm", "rebuild"] diff --git a/nodejs6.10/build/Dockerfile b/nodejs6.10/build/Dockerfile index a8287d23..a87475eb 100644 --- a/nodejs6.10/build/Dockerfile +++ b/nodejs6.10/build/Dockerfile @@ -17,6 +17,6 @@ COPY --from=0 /var/rapid /var/rapid RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.8.0 + pipx install aws-sam-cli==1.9.0 CMD ["npm", "rebuild"] diff --git a/nodejs8.10/build/Dockerfile b/nodejs8.10/build/Dockerfile index e50647dd..f9b7ba54 100644 --- a/nodejs8.10/build/Dockerfile +++ b/nodejs8.10/build/Dockerfile @@ -17,6 +17,6 @@ COPY --from=0 /var/rapid /var/rapid RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.8.0 + pipx install aws-sam-cli==1.9.0 CMD ["npm", "rebuild"] diff --git a/provided.al2/build/Dockerfile b/provided.al2/build/Dockerfile index 14ed1022..bed28c2b 100644 --- a/provided.al2/build/Dockerfile +++ b/provided.al2/build/Dockerfile @@ -9,4 +9,4 @@ COPY --from=0 /var/rapid /var/rapid # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.8.0 + pipx install aws-sam-cli==1.9.0 diff --git a/provided/build/Dockerfile b/provided/build/Dockerfile index f1980e41..c528baaa 100644 --- a/provided/build/Dockerfile +++ b/provided/build/Dockerfile @@ -11,4 +11,4 @@ COPY --from=0 /var/rapid /var/rapid RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.8.0 + pipx install aws-sam-cli==1.9.0 diff --git a/python3.6/build/Dockerfile b/python3.6/build/Dockerfile index 23ad8d3a..3d54de23 100644 --- a/python3.6/build/Dockerfile +++ b/python3.6/build/Dockerfile @@ -30,4 +30,4 @@ RUN pip install -U pip setuptools wheel --no-cache-dir && \ pipx install poetry==1.1.4 && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.8.0 + pipx install aws-sam-cli==1.9.0 diff --git a/python3.7/build/Dockerfile b/python3.7/build/Dockerfile index 2074777a..0f2b5629 100644 --- a/python3.7/build/Dockerfile +++ b/python3.7/build/Dockerfile @@ -21,4 +21,4 @@ RUN pip install -U pip setuptools wheel --no-cache-dir && \ pipx install poetry==1.1.4 && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.8.0 + pipx install aws-sam-cli==1.9.0 diff --git a/python3.8/build/Dockerfile b/python3.8/build/Dockerfile index 8d67f17f..caf35d3d 100644 --- a/python3.8/build/Dockerfile +++ b/python3.8/build/Dockerfile @@ -21,4 +21,4 @@ RUN pip install -U pip setuptools wheel --no-cache-dir && \ pipx install poetry==1.1.4 && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.8.0 + pipx install aws-sam-cli==1.9.0 diff --git a/ruby2.5/build/Dockerfile b/ruby2.5/build/Dockerfile index 4443df93..2aa06958 100644 --- a/ruby2.5/build/Dockerfile +++ b/ruby2.5/build/Dockerfile @@ -19,6 +19,6 @@ COPY --from=0 /var/rapid /var/rapid RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.8.0 && \ + pipx install aws-sam-cli==1.9.0 && \ gem update --system --no-document && \ gem install --no-document bundler -v '~> 2.1' diff --git a/ruby2.7/build/Dockerfile b/ruby2.7/build/Dockerfile index 540e6625..2a04349f 100644 --- a/ruby2.7/build/Dockerfile +++ b/ruby2.7/build/Dockerfile @@ -17,6 +17,6 @@ COPY --from=0 /var/rapid /var/rapid # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.8.0 && \ + pipx install aws-sam-cli==1.9.0 && \ gem update --system --no-document && \ gem install --no-document bundler -v '~> 2.1' From 1d8714b313f3a1fc51beb39fb9cab4401b974926 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Tue, 10 Nov 2020 14:13:39 -0500 Subject: [PATCH 255/271] Update .NET SDK to 3.1.404 --- dotnetcore3.1/build/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dotnetcore3.1/build/Dockerfile b/dotnetcore3.1/build/Dockerfile index b2c54335..ae78cd10 100644 --- a/dotnetcore3.1/build/Dockerfile +++ b/dotnetcore3.1/build/Dockerfile @@ -8,7 +8,7 @@ ENV DOTNET_ROOT=/var/lang/bin ENV PATH=/root/.dotnet/tools:$DOTNET_ROOT:$PATH \ LD_LIBRARY_PATH=/var/lang/lib:$LD_LIBRARY_PATH \ AWS_EXECUTION_ENV=AWS_Lambda_dotnetcore3.1 \ - DOTNET_SDK_VERSION=3.1.403 \ + DOTNET_SDK_VERSION=3.1.404 \ DOTNET_CLI_TELEMETRY_OPTOUT=1 \ NUGET_XMLDOC_MODE=skip From 93e48e987c353d4f0fe2b6901fcbb6598e791a97 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Thu, 12 Nov 2020 17:01:56 -0500 Subject: [PATCH 256/271] Update aws-sam-cli to 1.10.0 --- dotnetcore2.0/build/Dockerfile | 2 +- dotnetcore2.1/build/Dockerfile | 2 +- dotnetcore3.1/build/Dockerfile | 2 +- go1.x/build/Dockerfile | 2 +- java11/build/Dockerfile | 2 +- java8.al2/build/Dockerfile | 2 +- java8/build/Dockerfile | 2 +- nodejs10.x/build/Dockerfile | 2 +- nodejs12.x/build/Dockerfile | 2 +- nodejs4.3/build/Dockerfile | 2 +- nodejs6.10/build/Dockerfile | 2 +- nodejs8.10/build/Dockerfile | 2 +- provided.al2/build/Dockerfile | 2 +- provided/build/Dockerfile | 2 +- python3.6/build/Dockerfile | 2 +- python3.7/build/Dockerfile | 2 +- python3.8/build/Dockerfile | 2 +- ruby2.5/build/Dockerfile | 2 +- ruby2.7/build/Dockerfile | 2 +- 19 files changed, 19 insertions(+), 19 deletions(-) diff --git a/dotnetcore2.0/build/Dockerfile b/dotnetcore2.0/build/Dockerfile index 25be1128..c303fb80 100644 --- a/dotnetcore2.0/build/Dockerfile +++ b/dotnetcore2.0/build/Dockerfile @@ -30,6 +30,6 @@ RUN source /usr/local/pipx/shared/bin/activate && \ pipx install pipenv && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.9.0 + pipx install aws-sam-cli==1.10.0 CMD ["dotnet", "build"] diff --git a/dotnetcore2.1/build/Dockerfile b/dotnetcore2.1/build/Dockerfile index ec92d1ce..b9a0fe39 100644 --- a/dotnetcore2.1/build/Dockerfile +++ b/dotnetcore2.1/build/Dockerfile @@ -31,7 +31,7 @@ RUN source /usr/local/pipx/shared/bin/activate && \ pipx install pipenv && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.9.0 && \ + pipx install aws-sam-cli==1.10.0 && \ dotnet tool install --global Amazon.Lambda.Tools --version 3.3.1 CMD ["dotnet", "build"] diff --git a/dotnetcore3.1/build/Dockerfile b/dotnetcore3.1/build/Dockerfile index ae78cd10..bc6e3ef1 100644 --- a/dotnetcore3.1/build/Dockerfile +++ b/dotnetcore3.1/build/Dockerfile @@ -26,7 +26,7 @@ RUN curl -L https://dot.net/v1/dotnet-install.sh | bash -s -- -v $DOTNET_SDK_VER # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.9.0 && \ + pipx install aws-sam-cli==1.10.0 && \ dotnet tool install --global Amazon.Lambda.Tools --version 4.0.0 CMD ["dotnet", "build"] diff --git a/go1.x/build/Dockerfile b/go1.x/build/Dockerfile index f5eb80af..bd7d4692 100644 --- a/go1.x/build/Dockerfile +++ b/go1.x/build/Dockerfile @@ -24,6 +24,6 @@ RUN curl https://storage.googleapis.com/golang/go${GOLANG_VERSION}.linux-amd64.t RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.9.0 + pipx install aws-sam-cli==1.10.0 CMD ["dep", "ensure"] diff --git a/java11/build/Dockerfile b/java11/build/Dockerfile index 32714825..78204a2b 100644 --- a/java11/build/Dockerfile +++ b/java11/build/Dockerfile @@ -20,4 +20,4 @@ ENV PATH="/usr/local/gradle/gradle-6.7/bin:/usr/local/maven/apache-maven-3.6.3/b # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.9.0 + pipx install aws-sam-cli==1.10.0 diff --git a/java8.al2/build/Dockerfile b/java8.al2/build/Dockerfile index 0eb718e0..911c9900 100644 --- a/java8.al2/build/Dockerfile +++ b/java8.al2/build/Dockerfile @@ -23,4 +23,4 @@ ENV PATH="/usr/local/gradle/gradle-6.7/bin:/usr/local/maven/apache-maven-3.6.3/b # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.9.0 + pipx install aws-sam-cli==1.10.0 diff --git a/java8/build/Dockerfile b/java8/build/Dockerfile index 55090f57..27b3c83f 100644 --- a/java8/build/Dockerfile +++ b/java8/build/Dockerfile @@ -23,4 +23,4 @@ ENV PATH="/usr/local/gradle/gradle-6.7/bin:/usr/local/maven/apache-maven-3.6.3/b RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.9.0 + pipx install aws-sam-cli==1.10.0 diff --git a/nodejs10.x/build/Dockerfile b/nodejs10.x/build/Dockerfile index 888f19a0..9343b6ad 100644 --- a/nodejs10.x/build/Dockerfile +++ b/nodejs10.x/build/Dockerfile @@ -14,4 +14,4 @@ COPY --from=0 /var/rapid /var/rapid # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.9.0 + pipx install aws-sam-cli==1.10.0 diff --git a/nodejs12.x/build/Dockerfile b/nodejs12.x/build/Dockerfile index 96979a34..b23eec65 100644 --- a/nodejs12.x/build/Dockerfile +++ b/nodejs12.x/build/Dockerfile @@ -14,4 +14,4 @@ COPY --from=0 /var/rapid /var/rapid # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.9.0 + pipx install aws-sam-cli==1.10.0 diff --git a/nodejs4.3/build/Dockerfile b/nodejs4.3/build/Dockerfile index c99b7ead..0f181c48 100644 --- a/nodejs4.3/build/Dockerfile +++ b/nodejs4.3/build/Dockerfile @@ -17,6 +17,6 @@ COPY --from=0 /var/rapid /var/rapid RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.9.0 + pipx install aws-sam-cli==1.10.0 CMD ["npm", "rebuild"] diff --git a/nodejs6.10/build/Dockerfile b/nodejs6.10/build/Dockerfile index a87475eb..54b8fa53 100644 --- a/nodejs6.10/build/Dockerfile +++ b/nodejs6.10/build/Dockerfile @@ -17,6 +17,6 @@ COPY --from=0 /var/rapid /var/rapid RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.9.0 + pipx install aws-sam-cli==1.10.0 CMD ["npm", "rebuild"] diff --git a/nodejs8.10/build/Dockerfile b/nodejs8.10/build/Dockerfile index f9b7ba54..7dea26c7 100644 --- a/nodejs8.10/build/Dockerfile +++ b/nodejs8.10/build/Dockerfile @@ -17,6 +17,6 @@ COPY --from=0 /var/rapid /var/rapid RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.9.0 + pipx install aws-sam-cli==1.10.0 CMD ["npm", "rebuild"] diff --git a/provided.al2/build/Dockerfile b/provided.al2/build/Dockerfile index bed28c2b..0e03e0d4 100644 --- a/provided.al2/build/Dockerfile +++ b/provided.al2/build/Dockerfile @@ -9,4 +9,4 @@ COPY --from=0 /var/rapid /var/rapid # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.9.0 + pipx install aws-sam-cli==1.10.0 diff --git a/provided/build/Dockerfile b/provided/build/Dockerfile index c528baaa..a4bde671 100644 --- a/provided/build/Dockerfile +++ b/provided/build/Dockerfile @@ -11,4 +11,4 @@ COPY --from=0 /var/rapid /var/rapid RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.9.0 + pipx install aws-sam-cli==1.10.0 diff --git a/python3.6/build/Dockerfile b/python3.6/build/Dockerfile index 3d54de23..8d0b6ffa 100644 --- a/python3.6/build/Dockerfile +++ b/python3.6/build/Dockerfile @@ -30,4 +30,4 @@ RUN pip install -U pip setuptools wheel --no-cache-dir && \ pipx install poetry==1.1.4 && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.9.0 + pipx install aws-sam-cli==1.10.0 diff --git a/python3.7/build/Dockerfile b/python3.7/build/Dockerfile index 0f2b5629..3378bf48 100644 --- a/python3.7/build/Dockerfile +++ b/python3.7/build/Dockerfile @@ -21,4 +21,4 @@ RUN pip install -U pip setuptools wheel --no-cache-dir && \ pipx install poetry==1.1.4 && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.9.0 + pipx install aws-sam-cli==1.10.0 diff --git a/python3.8/build/Dockerfile b/python3.8/build/Dockerfile index caf35d3d..b9eca049 100644 --- a/python3.8/build/Dockerfile +++ b/python3.8/build/Dockerfile @@ -21,4 +21,4 @@ RUN pip install -U pip setuptools wheel --no-cache-dir && \ pipx install poetry==1.1.4 && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.9.0 + pipx install aws-sam-cli==1.10.0 diff --git a/ruby2.5/build/Dockerfile b/ruby2.5/build/Dockerfile index 2aa06958..6e483431 100644 --- a/ruby2.5/build/Dockerfile +++ b/ruby2.5/build/Dockerfile @@ -19,6 +19,6 @@ COPY --from=0 /var/rapid /var/rapid RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.9.0 && \ + pipx install aws-sam-cli==1.10.0 && \ gem update --system --no-document && \ gem install --no-document bundler -v '~> 2.1' diff --git a/ruby2.7/build/Dockerfile b/ruby2.7/build/Dockerfile index 2a04349f..3b65e546 100644 --- a/ruby2.7/build/Dockerfile +++ b/ruby2.7/build/Dockerfile @@ -17,6 +17,6 @@ COPY --from=0 /var/rapid /var/rapid # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.9.0 && \ + pipx install aws-sam-cli==1.10.0 && \ gem update --system --no-document && \ gem install --no-document bundler -v '~> 2.1' From b281a1e5767ff499eacc8963230dd4b09f39eb0e Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Mon, 16 Nov 2020 13:44:51 -0500 Subject: [PATCH 257/271] Update gradle to 6.7.1 in java build images --- java11/build/Dockerfile | 4 ++-- java8.al2/build/Dockerfile | 4 ++-- java8/build/Dockerfile | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/java11/build/Dockerfile b/java11/build/Dockerfile index 78204a2b..fdaca1df 100644 --- a/java11/build/Dockerfile +++ b/java11/build/Dockerfile @@ -10,12 +10,12 @@ COPY --from=0 /var/runtime /var/runtime COPY --from=0 /var/lang /var/lang COPY --from=0 /var/rapid /var/rapid -RUN mkdir /usr/local/gradle && curl -L -o gradle.zip https://services.gradle.org/distributions/gradle-6.7-bin.zip && \ +RUN mkdir /usr/local/gradle && curl -L -o gradle.zip https://services.gradle.org/distributions/gradle-6.7.1-bin.zip && \ unzip -qd /usr/local/gradle gradle.zip && rm gradle.zip && mkdir /usr/local/maven && \ curl -L http://mirror.cc.columbia.edu/pub/software/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz | \ tar -zx -C /usr/local/maven -ENV PATH="/usr/local/gradle/gradle-6.7/bin:/usr/local/maven/apache-maven-3.6.3/bin:${PATH}" +ENV PATH="/usr/local/gradle/gradle-6.7.1/bin:/usr/local/maven/apache-maven-3.6.3/bin:${PATH}" # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ diff --git a/java8.al2/build/Dockerfile b/java8.al2/build/Dockerfile index 911c9900..a69d5dd9 100644 --- a/java8.al2/build/Dockerfile +++ b/java8.al2/build/Dockerfile @@ -13,12 +13,12 @@ COPY --from=0 /var/rapid /var/rapid RUN rm -rf /var/lang/* && \ curl -sSL https://corretto.aws/downloads/resources/8.265.01.1/amazon-corretto-8.265.01.1-linux-x64.tar.gz | tar -xz --strip-components=1 -C /var/lang && \ rm -rf /var/lang/*.zip && \ - mkdir /usr/local/gradle && curl -L -o gradle.zip https://services.gradle.org/distributions/gradle-6.7-bin.zip && \ + mkdir /usr/local/gradle && curl -L -o gradle.zip https://services.gradle.org/distributions/gradle-6.7.1-bin.zip && \ unzip -qd /usr/local/gradle gradle.zip && rm gradle.zip && mkdir /usr/local/maven && \ curl -L http://mirror.cc.columbia.edu/pub/software/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz | \ tar -zx -C /usr/local/maven -ENV PATH="/usr/local/gradle/gradle-6.7/bin:/usr/local/maven/apache-maven-3.6.3/bin:${PATH}" +ENV PATH="/usr/local/gradle/gradle-6.7.1/bin:/usr/local/maven/apache-maven-3.6.3/bin:${PATH}" # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ diff --git a/java8/build/Dockerfile b/java8/build/Dockerfile index 27b3c83f..5b60c838 100644 --- a/java8/build/Dockerfile +++ b/java8/build/Dockerfile @@ -11,12 +11,12 @@ COPY --from=0 /var/lang /var/lang COPY --from=0 /var/rapid /var/rapid RUN yum install -y java-1.8.0-openjdk-devel && \ - mkdir /usr/local/gradle && curl -L -o gradle.zip https://services.gradle.org/distributions/gradle-6.7-bin.zip && \ + mkdir /usr/local/gradle && curl -L -o gradle.zip https://services.gradle.org/distributions/gradle-6.7.1-bin.zip && \ unzip -qd /usr/local/gradle gradle.zip && rm gradle.zip && mkdir /usr/local/maven && \ curl -L http://mirror.cc.columbia.edu/pub/software/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz | \ tar -zx -C /usr/local/maven -ENV PATH="/usr/local/gradle/gradle-6.7/bin:/usr/local/maven/apache-maven-3.6.3/bin:${PATH}" +ENV PATH="/usr/local/gradle/gradle-6.7.1/bin:/usr/local/maven/apache-maven-3.6.3/bin:${PATH}" # Add these as a separate layer as they get updated frequently # The pipx workaround is due to https://github.com/pipxproject/pipx/issues/218 From af0840e6f9ff474662059a26187419013a7f9df4 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Sun, 22 Nov 2020 10:05:31 -0500 Subject: [PATCH 258/271] Update packages in base builds --- base/amazonlinux1.txt | 8 ++++---- base/base-2/Dockerfile | 2 +- base/base-2/amazonlinux2.txt | 26 +++++++++++++------------- base/base-2/packages.txt | 14 +++++++------- base/packages.txt | 10 +++++----- 5 files changed, 30 insertions(+), 30 deletions(-) diff --git a/base/amazonlinux1.txt b/base/amazonlinux1.txt index beed053c..4d630e4b 100644 --- a/base/amazonlinux1.txt +++ b/base/amazonlinux1.txt @@ -4,7 +4,7 @@ bzip2-libs-1.0.6-8.12.amzn1.x86_64 ca-certificates-2018.2.22-65.1.22.amzn1.noarch chkconfig-1.3.49.3-2.14.amzn1.x86_64 coreutils-8.22-15.52.amzn1.x86_64 -curl-7.61.1-12.94.amzn1.x86_64 +curl-7.61.1-12.95.amzn1.x86_64 cyrus-sasl-lib-2.1.23-13.16.amzn1.x86_64 db4-4.7.25-18.11.amzn1.x86_64 db4-utils-4.7.25-18.11.amzn1.x86_64 @@ -30,7 +30,7 @@ libassuan-2.0.3-3.3.amzn1.x86_64 libattr-2.4.46-12.10.amzn1.x86_64 libcap-2.16-5.5.8.amzn1.x86_64 libcom_err-1.43.5-2.43.amzn1.x86_64 -libcurl-7.61.1-12.94.amzn1.x86_64 +libcurl-7.61.1-12.95.amzn1.x86_64 libffi-3.0.13-16.5.amzn1.x86_64 libgcc72-7.2.1-2.59.amzn1.x86_64 libgcrypt-1.5.3-12.19.amzn1.x86_64 @@ -70,11 +70,11 @@ pinentry-0.7.6-6.11.amzn1.x86_64 pkgconfig-0.27.1-2.7.amzn1.x86_64 popt-1.13-7.7.amzn1.x86_64 pth-2.0.7-9.3.7.amzn1.x86_64 -python27-2.7.18-2.139.amzn1.x86_64 +python27-2.7.18-2.140.amzn1.x86_64 python27-chardet-2.0.1-7.7.amzn1.noarch python27-iniparse-0.3.1-2.1.9.amzn1.noarch python27-kitchen-1.1.1-5.6.amzn1.noarch -python27-libs-2.7.18-2.139.amzn1.x86_64 +python27-libs-2.7.18-2.140.amzn1.x86_64 python27-pycurl-7.19.0-17.12.amzn1.x86_64 python27-pygpgme-0.3-9.12.amzn1.x86_64 python27-pyliblzma-0.5.3-11.6.amzn1.x86_64 diff --git a/base/base-2/Dockerfile b/base/base-2/Dockerfile index aba6aa99..42ca14d7 100644 --- a/base/base-2/Dockerfile +++ b/base/base-2/Dockerfile @@ -6,7 +6,7 @@ FROM amazonlinux:2 ADD ./base-2.tgz /opt/ RUN yum --installroot=/opt reinstall -y filesystem-3.2-25.amzn2.0.4 \ - setup-2.8.71-10.amzn2.0.1 glibc-2.26-37.amzn2 glibc-common-2.26-37.amzn2 && \ + setup-2.8.71-10.amzn2.0.1 glibc-2.26-37.amzn2 glibc-common-2.26-38.amzn2 && \ yum --installroot=/opt clean all FROM scratch diff --git a/base/base-2/amazonlinux2.txt b/base/base-2/amazonlinux2.txt index 3dee288d..39e195e2 100644 --- a/base/base-2/amazonlinux2.txt +++ b/base/base-2/amazonlinux2.txt @@ -16,11 +16,11 @@ filesystem-3.2-25.amzn2.0.4.x86_64 findutils-4.5.11-6.amzn2.x86_64 gawk-4.0.2-4.amzn2.1.2.x86_64 gdbm-1.13-6.amzn2.0.2.x86_64 -glib2-2.56.1-5.amzn2.0.1.x86_64 -glibc-2.26-37.amzn2.x86_64 -glibc-common-2.26-37.amzn2.x86_64 -glibc-langpack-en-2.26-37.amzn2.x86_64 -glibc-minimal-langpack-2.26-37.amzn2.x86_64 +glib2-2.56.1-7.amzn2.0.1.x86_64 +glibc-2.26-38.amzn2.x86_64 +glibc-common-2.26-38.amzn2.x86_64 +glibc-langpack-en-2.26-38.amzn2.x86_64 +glibc-minimal-langpack-2.26-38.amzn2.x86_64 gmp-6.0.0-15.amzn2.0.2.x86_64 gnupg2-2.0.22-5.amzn2.0.4.x86_64 gpgme-1.3.2-5.amzn2.0.2.x86_64 @@ -34,7 +34,7 @@ libattr-2.4.46-12.amzn2.0.2.x86_64 libblkid-2.30.2-2.amzn2.0.4.x86_64 libcap-2.22-9.amzn2.0.2.x86_64 libcom_err-1.42.9-19.amzn2.x86_64 -libcrypt-2.26-37.amzn2.x86_64 +libcrypt-2.26-38.amzn2.x86_64 libcurl-7.61.1-12.amzn2.0.2.x86_64 libdb-5.3.21-24.amzn2.0.3.x86_64 libdb-utils-5.3.21-24.amzn2.0.3.x86_64 @@ -59,14 +59,14 @@ lua-5.1.4-15.amzn2.0.2.x86_64 ncurses-6.0-8.20170212.amzn2.1.3.x86_64 ncurses-base-6.0-8.20170212.amzn2.1.3.noarch ncurses-libs-6.0-8.20170212.amzn2.1.3.x86_64 -nspr-4.21.0-1.amzn2.0.2.x86_64 -nss-3.44.0-7.amzn2.x86_64 +nspr-4.25.0-2.amzn2.x86_64 +nss-3.53.1-3.amzn2.x86_64 nss-pem-1.0.3-5.amzn2.x86_64 -nss-softokn-3.44.0-8.amzn2.x86_64 -nss-softokn-freebl-3.44.0-8.amzn2.x86_64 -nss-sysinit-3.44.0-7.amzn2.x86_64 -nss-tools-3.44.0-7.amzn2.x86_64 -nss-util-3.44.0-4.amzn2.x86_64 +nss-softokn-3.53.1-6.amzn2.x86_64 +nss-softokn-freebl-3.53.1-6.amzn2.x86_64 +nss-sysinit-3.53.1-3.amzn2.x86_64 +nss-tools-3.53.1-3.amzn2.x86_64 +nss-util-3.53.1-1.amzn2.x86_64 openldap-2.4.44-22.amzn2.x86_64 openssl-libs-1.0.2k-19.amzn2.0.3.x86_64 p11-kit-0.23.21-2.amzn2.0.1.x86_64 diff --git a/base/base-2/packages.txt b/base/base-2/packages.txt index b306a3a8..88d114d4 100644 --- a/base/base-2/packages.txt +++ b/base/base-2/packages.txt @@ -5,10 +5,10 @@ chkconfig-1.7.4-1.amzn2.0.2.x86_64 coreutils-8.22-24.amzn2.x86_64 filesystem-3.2-25.amzn2.0.4.x86_64 gawk-4.0.2-4.amzn2.1.2.x86_64 -glibc-2.26-37.amzn2.x86_64 -glibc-all-langpacks-2.26-37.amzn2.x86_64 -glibc-common-2.26-37.amzn2.x86_64 -glibc-minimal-langpack-2.26-37.amzn2.x86_64 +glibc-2.26-38.amzn2.x86_64 +glibc-all-langpacks-2.26-38.amzn2.x86_64 +glibc-common-2.26-38.amzn2.x86_64 +glibc-minimal-langpack-2.26-38.amzn2.x86_64 gmp-6.0.0-15.amzn2.0.2.x86_64 grep-2.20-3.amzn2.0.2.x86_64 info-5.1-5.amzn2.x86_64 @@ -29,9 +29,9 @@ libverto-0.2.5-4.amzn2.0.2.x86_64 ncurses-6.0-8.20170212.amzn2.1.3.x86_64 ncurses-base-6.0-8.20170212.amzn2.1.3.noarch ncurses-libs-6.0-8.20170212.amzn2.1.3.x86_64 -nspr-4.21.0-1.amzn2.0.2.x86_64 -nss-softokn-freebl-3.44.0-8.amzn2.x86_64 -nss-util-3.44.0-4.amzn2.x86_64 +nspr-4.25.0-2.amzn2.x86_64 +nss-softokn-freebl-3.53.1-6.amzn2.x86_64 +nss-util-3.53.1-1.amzn2.x86_64 openssl-libs-1.0.2k-19.amzn2.0.3.x86_64 p11-kit-0.23.21-2.amzn2.0.1.x86_64 p11-kit-trust-0.23.21-2.amzn2.0.1.x86_64 diff --git a/base/packages.txt b/base/packages.txt index efe940a0..7e5e4fb1 100644 --- a/base/packages.txt +++ b/base/packages.txt @@ -17,7 +17,7 @@ cpio-2.10-12.12.amzn1.x86_64 cracklib-2.8.16-4.14.amzn1.x86_64 cracklib-dicts-2.8.16-4.14.amzn1.x86_64 cups-libs-1.4.2-67.21.amzn1.x86_64 -curl-7.61.1-12.94.amzn1.x86_64 +curl-7.61.1-12.95.amzn1.x86_64 cyrus-sasl-lib-2.1.23-13.16.amzn1.x86_64 db4-4.7.25-18.11.amzn1.x86_64 db4-utils-4.7.25-18.11.amzn1.x86_64 @@ -84,7 +84,7 @@ libblkid-2.23.2-59.29.amzn1.x86_64 libcap-2.16-5.5.8.amzn1.x86_64 libcap-ng-0.7.5-4.15.amzn1.x86_64 libcom_err-1.43.5-2.43.amzn1.x86_64 -libcurl-7.61.1-12.94.amzn1.x86_64 +libcurl-7.61.1-12.95.amzn1.x86_64 libdrm-2.4.82-1.14.amzn1.x86_64 libffi-3.0.13-16.5.amzn1.x86_64 libfontenc-1.0.5-2.6.amzn1.x86_64 @@ -109,7 +109,7 @@ libsmartcols-2.23.2-59.29.amzn1.x86_64 libssh2-1.4.2-3.12.amzn1.x86_64 libstdc++72-7.2.1-2.59.amzn1.x86_64 libtasn1-2.3-6.6.amzn1.x86_64 -libtiff-4.0.3-32.34.amzn1.x86_64 +libtiff-4.0.3-35.36.amzn1.x86_64 libtool-ltdl-2.4.2-20.4.8.5.32.amzn1.x86_64 libudev-173-4.13.amzn1.x86_64 libunistring-0.9.3-6.1.amzn1.x86_64 @@ -181,9 +181,9 @@ popt-1.13-7.7.amzn1.x86_64 procps-3.2.8-45.16.amzn1.x86_64 psmisc-22.20-8.12.amzn1.x86_64 pth-2.0.7-9.3.7.amzn1.x86_64 -python27-2.7.18-2.139.amzn1.x86_64 +python27-2.7.18-2.140.amzn1.x86_64 python27-iniparse-0.3.1-2.1.9.amzn1.noarch -python27-libs-2.7.18-2.139.amzn1.x86_64 +python27-libs-2.7.18-2.140.amzn1.x86_64 python27-pycurl-7.19.0-17.12.amzn1.x86_64 python27-pygpgme-0.3-9.12.amzn1.x86_64 python27-pyliblzma-0.5.3-11.6.amzn1.x86_64 From 4e1b563f26ec90e83d54af776924fb0fd0752c21 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Sun, 22 Nov 2020 10:05:49 -0500 Subject: [PATCH 259/271] Update aws-sam-cli to 1.11.0 --- dotnetcore2.0/build/Dockerfile | 2 +- dotnetcore2.1/build/Dockerfile | 2 +- dotnetcore3.1/build/Dockerfile | 2 +- go1.x/build/Dockerfile | 2 +- java11/build/Dockerfile | 2 +- java8.al2/build/Dockerfile | 2 +- java8/build/Dockerfile | 2 +- nodejs10.x/build/Dockerfile | 2 +- nodejs12.x/build/Dockerfile | 2 +- nodejs4.3/build/Dockerfile | 2 +- nodejs6.10/build/Dockerfile | 2 +- nodejs8.10/build/Dockerfile | 2 +- provided.al2/build/Dockerfile | 2 +- provided/build/Dockerfile | 2 +- python3.6/build/Dockerfile | 2 +- python3.7/build/Dockerfile | 2 +- python3.8/build/Dockerfile | 2 +- ruby2.5/build/Dockerfile | 2 +- ruby2.7/build/Dockerfile | 2 +- 19 files changed, 19 insertions(+), 19 deletions(-) diff --git a/dotnetcore2.0/build/Dockerfile b/dotnetcore2.0/build/Dockerfile index c303fb80..21140dda 100644 --- a/dotnetcore2.0/build/Dockerfile +++ b/dotnetcore2.0/build/Dockerfile @@ -30,6 +30,6 @@ RUN source /usr/local/pipx/shared/bin/activate && \ pipx install pipenv && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.10.0 + pipx install aws-sam-cli==1.11.0 CMD ["dotnet", "build"] diff --git a/dotnetcore2.1/build/Dockerfile b/dotnetcore2.1/build/Dockerfile index b9a0fe39..2b314be4 100644 --- a/dotnetcore2.1/build/Dockerfile +++ b/dotnetcore2.1/build/Dockerfile @@ -31,7 +31,7 @@ RUN source /usr/local/pipx/shared/bin/activate && \ pipx install pipenv && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.10.0 && \ + pipx install aws-sam-cli==1.11.0 && \ dotnet tool install --global Amazon.Lambda.Tools --version 3.3.1 CMD ["dotnet", "build"] diff --git a/dotnetcore3.1/build/Dockerfile b/dotnetcore3.1/build/Dockerfile index bc6e3ef1..52f389c7 100644 --- a/dotnetcore3.1/build/Dockerfile +++ b/dotnetcore3.1/build/Dockerfile @@ -26,7 +26,7 @@ RUN curl -L https://dot.net/v1/dotnet-install.sh | bash -s -- -v $DOTNET_SDK_VER # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.10.0 && \ + pipx install aws-sam-cli==1.11.0 && \ dotnet tool install --global Amazon.Lambda.Tools --version 4.0.0 CMD ["dotnet", "build"] diff --git a/go1.x/build/Dockerfile b/go1.x/build/Dockerfile index bd7d4692..7aa4e18b 100644 --- a/go1.x/build/Dockerfile +++ b/go1.x/build/Dockerfile @@ -24,6 +24,6 @@ RUN curl https://storage.googleapis.com/golang/go${GOLANG_VERSION}.linux-amd64.t RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.10.0 + pipx install aws-sam-cli==1.11.0 CMD ["dep", "ensure"] diff --git a/java11/build/Dockerfile b/java11/build/Dockerfile index fdaca1df..419ef7ce 100644 --- a/java11/build/Dockerfile +++ b/java11/build/Dockerfile @@ -20,4 +20,4 @@ ENV PATH="/usr/local/gradle/gradle-6.7.1/bin:/usr/local/maven/apache-maven-3.6.3 # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.10.0 + pipx install aws-sam-cli==1.11.0 diff --git a/java8.al2/build/Dockerfile b/java8.al2/build/Dockerfile index a69d5dd9..fe734ea5 100644 --- a/java8.al2/build/Dockerfile +++ b/java8.al2/build/Dockerfile @@ -23,4 +23,4 @@ ENV PATH="/usr/local/gradle/gradle-6.7.1/bin:/usr/local/maven/apache-maven-3.6.3 # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.10.0 + pipx install aws-sam-cli==1.11.0 diff --git a/java8/build/Dockerfile b/java8/build/Dockerfile index 5b60c838..f0d0dd5b 100644 --- a/java8/build/Dockerfile +++ b/java8/build/Dockerfile @@ -23,4 +23,4 @@ ENV PATH="/usr/local/gradle/gradle-6.7.1/bin:/usr/local/maven/apache-maven-3.6.3 RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.10.0 + pipx install aws-sam-cli==1.11.0 diff --git a/nodejs10.x/build/Dockerfile b/nodejs10.x/build/Dockerfile index 9343b6ad..31a81f5f 100644 --- a/nodejs10.x/build/Dockerfile +++ b/nodejs10.x/build/Dockerfile @@ -14,4 +14,4 @@ COPY --from=0 /var/rapid /var/rapid # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.10.0 + pipx install aws-sam-cli==1.11.0 diff --git a/nodejs12.x/build/Dockerfile b/nodejs12.x/build/Dockerfile index b23eec65..fcef1c7b 100644 --- a/nodejs12.x/build/Dockerfile +++ b/nodejs12.x/build/Dockerfile @@ -14,4 +14,4 @@ COPY --from=0 /var/rapid /var/rapid # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.10.0 + pipx install aws-sam-cli==1.11.0 diff --git a/nodejs4.3/build/Dockerfile b/nodejs4.3/build/Dockerfile index 0f181c48..8d1c7e8f 100644 --- a/nodejs4.3/build/Dockerfile +++ b/nodejs4.3/build/Dockerfile @@ -17,6 +17,6 @@ COPY --from=0 /var/rapid /var/rapid RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.10.0 + pipx install aws-sam-cli==1.11.0 CMD ["npm", "rebuild"] diff --git a/nodejs6.10/build/Dockerfile b/nodejs6.10/build/Dockerfile index 54b8fa53..fbfba52a 100644 --- a/nodejs6.10/build/Dockerfile +++ b/nodejs6.10/build/Dockerfile @@ -17,6 +17,6 @@ COPY --from=0 /var/rapid /var/rapid RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.10.0 + pipx install aws-sam-cli==1.11.0 CMD ["npm", "rebuild"] diff --git a/nodejs8.10/build/Dockerfile b/nodejs8.10/build/Dockerfile index 7dea26c7..2191f84e 100644 --- a/nodejs8.10/build/Dockerfile +++ b/nodejs8.10/build/Dockerfile @@ -17,6 +17,6 @@ COPY --from=0 /var/rapid /var/rapid RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.10.0 + pipx install aws-sam-cli==1.11.0 CMD ["npm", "rebuild"] diff --git a/provided.al2/build/Dockerfile b/provided.al2/build/Dockerfile index 0e03e0d4..aa77a92c 100644 --- a/provided.al2/build/Dockerfile +++ b/provided.al2/build/Dockerfile @@ -9,4 +9,4 @@ COPY --from=0 /var/rapid /var/rapid # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.10.0 + pipx install aws-sam-cli==1.11.0 diff --git a/provided/build/Dockerfile b/provided/build/Dockerfile index a4bde671..2c3d392a 100644 --- a/provided/build/Dockerfile +++ b/provided/build/Dockerfile @@ -11,4 +11,4 @@ COPY --from=0 /var/rapid /var/rapid RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.10.0 + pipx install aws-sam-cli==1.11.0 diff --git a/python3.6/build/Dockerfile b/python3.6/build/Dockerfile index 8d0b6ffa..439a1c7d 100644 --- a/python3.6/build/Dockerfile +++ b/python3.6/build/Dockerfile @@ -30,4 +30,4 @@ RUN pip install -U pip setuptools wheel --no-cache-dir && \ pipx install poetry==1.1.4 && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.10.0 + pipx install aws-sam-cli==1.11.0 diff --git a/python3.7/build/Dockerfile b/python3.7/build/Dockerfile index 3378bf48..086e0f6a 100644 --- a/python3.7/build/Dockerfile +++ b/python3.7/build/Dockerfile @@ -21,4 +21,4 @@ RUN pip install -U pip setuptools wheel --no-cache-dir && \ pipx install poetry==1.1.4 && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.10.0 + pipx install aws-sam-cli==1.11.0 diff --git a/python3.8/build/Dockerfile b/python3.8/build/Dockerfile index b9eca049..1049db2b 100644 --- a/python3.8/build/Dockerfile +++ b/python3.8/build/Dockerfile @@ -21,4 +21,4 @@ RUN pip install -U pip setuptools wheel --no-cache-dir && \ pipx install poetry==1.1.4 && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.10.0 + pipx install aws-sam-cli==1.11.0 diff --git a/ruby2.5/build/Dockerfile b/ruby2.5/build/Dockerfile index 6e483431..8d783f04 100644 --- a/ruby2.5/build/Dockerfile +++ b/ruby2.5/build/Dockerfile @@ -19,6 +19,6 @@ COPY --from=0 /var/rapid /var/rapid RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.10.0 && \ + pipx install aws-sam-cli==1.11.0 && \ gem update --system --no-document && \ gem install --no-document bundler -v '~> 2.1' diff --git a/ruby2.7/build/Dockerfile b/ruby2.7/build/Dockerfile index 3b65e546..fd43b68d 100644 --- a/ruby2.7/build/Dockerfile +++ b/ruby2.7/build/Dockerfile @@ -17,6 +17,6 @@ COPY --from=0 /var/rapid /var/rapid # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.10.0 && \ + pipx install aws-sam-cli==1.11.0 && \ gem update --system --no-document && \ gem install --no-document bundler -v '~> 2.1' From b25f2695dec37f4b25c71f33ae3166075df38b6a Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Thu, 3 Dec 2020 13:06:05 -0500 Subject: [PATCH 260/271] Clarify dev packages on base images Addresses #321 --- README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README.md b/README.md index df924a37..bb211d1f 100644 --- a/README.md +++ b/README.md @@ -397,6 +397,9 @@ Yum packages installed on build images: - `docker` (Docker in Docker!) - `clang` - `cmake` + +The build image for older Amazon Linux 1 based runtimes also include: + - `python27-devel` - `python36-devel` - `ImageMagick-devel` From 1fc4f2a4f3656e16297db508bbed9bc191a660ab Mon Sep 17 00:00:00 2001 From: novemberde Date: Sat, 19 Dec 2020 22:25:13 +0900 Subject: [PATCH 261/271] fix(log): apply billed duration by 1ms --- provided/run/init.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/provided/run/init.go b/provided/run/init.go index 6b9339c2..9905cf2e 100644 --- a/provided/run/init.go +++ b/provided/run/init.go @@ -978,7 +978,7 @@ func (mc *mockLambdaContext) LogEndRequest() { "Billed Duration: %.f ms\t"+ "Memory Size: %s MB\t"+ "Max Memory Used: %d MB\t", - mc.RequestID, diffMs, math.Ceil(diffMs/100)*100, mc.MemSize, mc.MaxMem)) + mc.RequestID, diffMs, math.Ceil(diffMs), mc.MemSize, mc.MaxMem)) } type invokeResponse struct { From 7002aa01fff1952f12594af1a7f03e72a7cd1be8 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Fri, 29 Jan 2021 09:28:14 -0500 Subject: [PATCH 262/271] Ensure we only use a 2.7-compatible pip for provided --- base/dump-provided.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/base/dump-provided.sh b/base/dump-provided.sh index 690ec844..9a3472f3 100755 --- a/base/dump-provided.sh +++ b/base/dump-provided.sh @@ -6,7 +6,7 @@ export HOME=/tmp export PATH=/tmp/.local/bin:$PATH cd /tmp -curl -sSL https://bootstrap.pypa.io/get-pip.py -o get-pip.py +curl -sSL https://bootstrap.pypa.io/2.7/get-pip.py -o get-pip.py python get-pip.py --user pip install --user awscli From dc04991bdc702b10279f0f1adb50ae09de0dc579 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Fri, 29 Jan 2021 09:29:40 -0500 Subject: [PATCH 263/271] Bump gradle to 6.8.1 --- java11/build/Dockerfile | 4 ++-- java8.al2/build/Dockerfile | 4 ++-- java8/build/Dockerfile | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/java11/build/Dockerfile b/java11/build/Dockerfile index 419ef7ce..3b54f0a4 100644 --- a/java11/build/Dockerfile +++ b/java11/build/Dockerfile @@ -10,12 +10,12 @@ COPY --from=0 /var/runtime /var/runtime COPY --from=0 /var/lang /var/lang COPY --from=0 /var/rapid /var/rapid -RUN mkdir /usr/local/gradle && curl -L -o gradle.zip https://services.gradle.org/distributions/gradle-6.7.1-bin.zip && \ +RUN mkdir /usr/local/gradle && curl -L -o gradle.zip https://services.gradle.org/distributions/gradle-6.8.1-bin.zip && \ unzip -qd /usr/local/gradle gradle.zip && rm gradle.zip && mkdir /usr/local/maven && \ curl -L http://mirror.cc.columbia.edu/pub/software/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz | \ tar -zx -C /usr/local/maven -ENV PATH="/usr/local/gradle/gradle-6.7.1/bin:/usr/local/maven/apache-maven-3.6.3/bin:${PATH}" +ENV PATH="/usr/local/gradle/gradle-6.8.1/bin:/usr/local/maven/apache-maven-3.6.3/bin:${PATH}" # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ diff --git a/java8.al2/build/Dockerfile b/java8.al2/build/Dockerfile index fe734ea5..959d5832 100644 --- a/java8.al2/build/Dockerfile +++ b/java8.al2/build/Dockerfile @@ -13,12 +13,12 @@ COPY --from=0 /var/rapid /var/rapid RUN rm -rf /var/lang/* && \ curl -sSL https://corretto.aws/downloads/resources/8.265.01.1/amazon-corretto-8.265.01.1-linux-x64.tar.gz | tar -xz --strip-components=1 -C /var/lang && \ rm -rf /var/lang/*.zip && \ - mkdir /usr/local/gradle && curl -L -o gradle.zip https://services.gradle.org/distributions/gradle-6.7.1-bin.zip && \ + mkdir /usr/local/gradle && curl -L -o gradle.zip https://services.gradle.org/distributions/gradle-6.8.1-bin.zip && \ unzip -qd /usr/local/gradle gradle.zip && rm gradle.zip && mkdir /usr/local/maven && \ curl -L http://mirror.cc.columbia.edu/pub/software/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz | \ tar -zx -C /usr/local/maven -ENV PATH="/usr/local/gradle/gradle-6.7.1/bin:/usr/local/maven/apache-maven-3.6.3/bin:${PATH}" +ENV PATH="/usr/local/gradle/gradle-6.8.1/bin:/usr/local/maven/apache-maven-3.6.3/bin:${PATH}" # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ diff --git a/java8/build/Dockerfile b/java8/build/Dockerfile index f0d0dd5b..83c9e60d 100644 --- a/java8/build/Dockerfile +++ b/java8/build/Dockerfile @@ -11,12 +11,12 @@ COPY --from=0 /var/lang /var/lang COPY --from=0 /var/rapid /var/rapid RUN yum install -y java-1.8.0-openjdk-devel && \ - mkdir /usr/local/gradle && curl -L -o gradle.zip https://services.gradle.org/distributions/gradle-6.7.1-bin.zip && \ + mkdir /usr/local/gradle && curl -L -o gradle.zip https://services.gradle.org/distributions/gradle-6.8.1-bin.zip && \ unzip -qd /usr/local/gradle gradle.zip && rm gradle.zip && mkdir /usr/local/maven && \ curl -L http://mirror.cc.columbia.edu/pub/software/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz | \ tar -zx -C /usr/local/maven -ENV PATH="/usr/local/gradle/gradle-6.7.1/bin:/usr/local/maven/apache-maven-3.6.3/bin:${PATH}" +ENV PATH="/usr/local/gradle/gradle-6.8.1/bin:/usr/local/maven/apache-maven-3.6.3/bin:${PATH}" # Add these as a separate layer as they get updated frequently # The pipx workaround is due to https://github.com/pipxproject/pipx/issues/218 From d17854762dbcce1bf22fd54c42a45fef6cba2e11 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Fri, 29 Jan 2021 09:32:35 -0500 Subject: [PATCH 264/271] Bump .NET Core SDK to 3.1.405 --- dotnetcore3.1/build/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dotnetcore3.1/build/Dockerfile b/dotnetcore3.1/build/Dockerfile index 52f389c7..18e114ac 100644 --- a/dotnetcore3.1/build/Dockerfile +++ b/dotnetcore3.1/build/Dockerfile @@ -8,7 +8,7 @@ ENV DOTNET_ROOT=/var/lang/bin ENV PATH=/root/.dotnet/tools:$DOTNET_ROOT:$PATH \ LD_LIBRARY_PATH=/var/lang/lib:$LD_LIBRARY_PATH \ AWS_EXECUTION_ENV=AWS_Lambda_dotnetcore3.1 \ - DOTNET_SDK_VERSION=3.1.404 \ + DOTNET_SDK_VERSION=3.1.405 \ DOTNET_CLI_TELEMETRY_OPTOUT=1 \ NUGET_XMLDOC_MODE=skip From 231bde0674894a215ac9a04a181924f62832230e Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Fri, 29 Jan 2021 09:33:11 -0500 Subject: [PATCH 265/271] Bump aws-lambda-builders and aws-sam-cli versions --- dotnetcore2.0/build/Dockerfile | 4 ++-- dotnetcore2.1/build/Dockerfile | 4 ++-- dotnetcore3.1/build/Dockerfile | 4 ++-- go1.x/build/Dockerfile | 4 ++-- java11/build/Dockerfile | 4 ++-- java8.al2/build/Dockerfile | 4 ++-- java8/build/Dockerfile | 4 ++-- nodejs10.x/build/Dockerfile | 4 ++-- nodejs12.x/build/Dockerfile | 4 ++-- nodejs4.3/build/Dockerfile | 4 ++-- nodejs6.10/build/Dockerfile | 4 ++-- nodejs8.10/build/Dockerfile | 4 ++-- provided.al2/build/Dockerfile | 4 ++-- provided/build/Dockerfile | 4 ++-- python3.6/build/Dockerfile | 4 ++-- python3.7/build/Dockerfile | 4 ++-- python3.8/build/Dockerfile | 4 ++-- ruby2.5/build/Dockerfile | 4 ++-- ruby2.7/build/Dockerfile | 4 ++-- 19 files changed, 38 insertions(+), 38 deletions(-) diff --git a/dotnetcore2.0/build/Dockerfile b/dotnetcore2.0/build/Dockerfile index 21140dda..01474732 100644 --- a/dotnetcore2.0/build/Dockerfile +++ b/dotnetcore2.0/build/Dockerfile @@ -29,7 +29,7 @@ RUN source /usr/local/pipx/shared/bin/activate && \ pipx install virtualenv && \ pipx install pipenv && \ pipx install awscli==1.* && \ - pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.11.0 + pipx install aws-lambda-builders==1.2.0 && \ + pipx install aws-sam-cli==1.15.0 CMD ["dotnet", "build"] diff --git a/dotnetcore2.1/build/Dockerfile b/dotnetcore2.1/build/Dockerfile index 2b314be4..b9aceba7 100644 --- a/dotnetcore2.1/build/Dockerfile +++ b/dotnetcore2.1/build/Dockerfile @@ -30,8 +30,8 @@ RUN source /usr/local/pipx/shared/bin/activate && \ pipx install virtualenv && \ pipx install pipenv && \ pipx install awscli==1.* && \ - pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.11.0 && \ + pipx install aws-lambda-builders==1.2.0 && \ + pipx install aws-sam-cli==1.15.0 && \ dotnet tool install --global Amazon.Lambda.Tools --version 3.3.1 CMD ["dotnet", "build"] diff --git a/dotnetcore3.1/build/Dockerfile b/dotnetcore3.1/build/Dockerfile index 18e114ac..5952e362 100644 --- a/dotnetcore3.1/build/Dockerfile +++ b/dotnetcore3.1/build/Dockerfile @@ -25,8 +25,8 @@ RUN curl -L https://dot.net/v1/dotnet-install.sh | bash -s -- -v $DOTNET_SDK_VER # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ - pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.11.0 && \ + pipx install aws-lambda-builders==1.2.0 && \ + pipx install aws-sam-cli==1.15.0 && \ dotnet tool install --global Amazon.Lambda.Tools --version 4.0.0 CMD ["dotnet", "build"] diff --git a/go1.x/build/Dockerfile b/go1.x/build/Dockerfile index 7aa4e18b..87ffda03 100644 --- a/go1.x/build/Dockerfile +++ b/go1.x/build/Dockerfile @@ -23,7 +23,7 @@ RUN curl https://storage.googleapis.com/golang/go${GOLANG_VERSION}.linux-amd64.t # The pipx workaround is due to https://github.com/pipxproject/pipx/issues/218 RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ - pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.11.0 + pipx install aws-lambda-builders==1.2.0 && \ + pipx install aws-sam-cli==1.15.0 CMD ["dep", "ensure"] diff --git a/java11/build/Dockerfile b/java11/build/Dockerfile index 3b54f0a4..6b2f3c90 100644 --- a/java11/build/Dockerfile +++ b/java11/build/Dockerfile @@ -19,5 +19,5 @@ ENV PATH="/usr/local/gradle/gradle-6.8.1/bin:/usr/local/maven/apache-maven-3.6.3 # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ - pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.11.0 + pipx install aws-lambda-builders==1.2.0 && \ + pipx install aws-sam-cli==1.15.0 diff --git a/java8.al2/build/Dockerfile b/java8.al2/build/Dockerfile index 959d5832..0edeb604 100644 --- a/java8.al2/build/Dockerfile +++ b/java8.al2/build/Dockerfile @@ -22,5 +22,5 @@ ENV PATH="/usr/local/gradle/gradle-6.8.1/bin:/usr/local/maven/apache-maven-3.6.3 # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ - pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.11.0 + pipx install aws-lambda-builders==1.2.0 && \ + pipx install aws-sam-cli==1.15.0 diff --git a/java8/build/Dockerfile b/java8/build/Dockerfile index 83c9e60d..25e65cd4 100644 --- a/java8/build/Dockerfile +++ b/java8/build/Dockerfile @@ -22,5 +22,5 @@ ENV PATH="/usr/local/gradle/gradle-6.8.1/bin:/usr/local/maven/apache-maven-3.6.3 # The pipx workaround is due to https://github.com/pipxproject/pipx/issues/218 RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ - pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.11.0 + pipx install aws-lambda-builders==1.2.0 && \ + pipx install aws-sam-cli==1.15.0 diff --git a/nodejs10.x/build/Dockerfile b/nodejs10.x/build/Dockerfile index 31a81f5f..4b7bb8ff 100644 --- a/nodejs10.x/build/Dockerfile +++ b/nodejs10.x/build/Dockerfile @@ -13,5 +13,5 @@ COPY --from=0 /var/rapid /var/rapid # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ - pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.11.0 + pipx install aws-lambda-builders==1.2.0 && \ + pipx install aws-sam-cli==1.15.0 diff --git a/nodejs12.x/build/Dockerfile b/nodejs12.x/build/Dockerfile index fcef1c7b..98833ba5 100644 --- a/nodejs12.x/build/Dockerfile +++ b/nodejs12.x/build/Dockerfile @@ -13,5 +13,5 @@ COPY --from=0 /var/rapid /var/rapid # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ - pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.11.0 + pipx install aws-lambda-builders==1.2.0 && \ + pipx install aws-sam-cli==1.15.0 diff --git a/nodejs4.3/build/Dockerfile b/nodejs4.3/build/Dockerfile index 8d1c7e8f..c971ca69 100644 --- a/nodejs4.3/build/Dockerfile +++ b/nodejs4.3/build/Dockerfile @@ -16,7 +16,7 @@ COPY --from=0 /var/rapid /var/rapid # The pipx workaround is due to https://github.com/pipxproject/pipx/issues/218 RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ - pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.11.0 + pipx install aws-lambda-builders==1.2.0 && \ + pipx install aws-sam-cli==1.15.0 CMD ["npm", "rebuild"] diff --git a/nodejs6.10/build/Dockerfile b/nodejs6.10/build/Dockerfile index fbfba52a..a544d6f7 100644 --- a/nodejs6.10/build/Dockerfile +++ b/nodejs6.10/build/Dockerfile @@ -16,7 +16,7 @@ COPY --from=0 /var/rapid /var/rapid # The pipx workaround is due to https://github.com/pipxproject/pipx/issues/218 RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ - pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.11.0 + pipx install aws-lambda-builders==1.2.0 && \ + pipx install aws-sam-cli==1.15.0 CMD ["npm", "rebuild"] diff --git a/nodejs8.10/build/Dockerfile b/nodejs8.10/build/Dockerfile index 2191f84e..f87e8a22 100644 --- a/nodejs8.10/build/Dockerfile +++ b/nodejs8.10/build/Dockerfile @@ -16,7 +16,7 @@ COPY --from=0 /var/rapid /var/rapid # The pipx workaround is due to https://github.com/pipxproject/pipx/issues/218 RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ - pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.11.0 + pipx install aws-lambda-builders==1.2.0 && \ + pipx install aws-sam-cli==1.15.0 CMD ["npm", "rebuild"] diff --git a/provided.al2/build/Dockerfile b/provided.al2/build/Dockerfile index aa77a92c..214706da 100644 --- a/provided.al2/build/Dockerfile +++ b/provided.al2/build/Dockerfile @@ -8,5 +8,5 @@ COPY --from=0 /var/rapid /var/rapid # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ - pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.11.0 + pipx install aws-lambda-builders==1.2.0 && \ + pipx install aws-sam-cli==1.15.0 diff --git a/provided/build/Dockerfile b/provided/build/Dockerfile index 2c3d392a..47474a12 100644 --- a/provided/build/Dockerfile +++ b/provided/build/Dockerfile @@ -10,5 +10,5 @@ COPY --from=0 /var/rapid /var/rapid # The pipx workaround is due to https://github.com/pipxproject/pipx/issues/218 RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ - pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.11.0 + pipx install aws-lambda-builders==1.2.0 && \ + pipx install aws-sam-cli==1.15.0 diff --git a/python3.6/build/Dockerfile b/python3.6/build/Dockerfile index 439a1c7d..3da42ff5 100644 --- a/python3.6/build/Dockerfile +++ b/python3.6/build/Dockerfile @@ -29,5 +29,5 @@ RUN pip install -U pip setuptools wheel --no-cache-dir && \ pipx install pipenv && \ pipx install poetry==1.1.4 && \ pipx install awscli==1.* && \ - pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.11.0 + pipx install aws-lambda-builders==1.2.0 && \ + pipx install aws-sam-cli==1.15.0 diff --git a/python3.7/build/Dockerfile b/python3.7/build/Dockerfile index 086e0f6a..98b20835 100644 --- a/python3.7/build/Dockerfile +++ b/python3.7/build/Dockerfile @@ -20,5 +20,5 @@ RUN pip install -U pip setuptools wheel --no-cache-dir && \ pipx install pipenv && \ pipx install poetry==1.1.4 && \ pipx install awscli==1.* && \ - pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.11.0 + pipx install aws-lambda-builders==1.2.0 && \ + pipx install aws-sam-cli==1.15.0 diff --git a/python3.8/build/Dockerfile b/python3.8/build/Dockerfile index 1049db2b..ecf9ab00 100644 --- a/python3.8/build/Dockerfile +++ b/python3.8/build/Dockerfile @@ -20,5 +20,5 @@ RUN pip install -U pip setuptools wheel --no-cache-dir && \ pipx install pipenv && \ pipx install poetry==1.1.4 && \ pipx install awscli==1.* && \ - pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.11.0 + pipx install aws-lambda-builders==1.2.0 && \ + pipx install aws-sam-cli==1.15.0 diff --git a/ruby2.5/build/Dockerfile b/ruby2.5/build/Dockerfile index 8d783f04..439b202b 100644 --- a/ruby2.5/build/Dockerfile +++ b/ruby2.5/build/Dockerfile @@ -18,7 +18,7 @@ COPY --from=0 /var/rapid /var/rapid # The pipx workaround is due to https://github.com/pipxproject/pipx/issues/218 RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ - pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.11.0 && \ + pipx install aws-lambda-builders==1.2.0 && \ + pipx install aws-sam-cli==1.15.0 && \ gem update --system --no-document && \ gem install --no-document bundler -v '~> 2.1' diff --git a/ruby2.7/build/Dockerfile b/ruby2.7/build/Dockerfile index fd43b68d..c0fbeef3 100644 --- a/ruby2.7/build/Dockerfile +++ b/ruby2.7/build/Dockerfile @@ -16,7 +16,7 @@ COPY --from=0 /var/rapid /var/rapid # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ - pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.11.0 && \ + pipx install aws-lambda-builders==1.2.0 && \ + pipx install aws-sam-cli==1.15.0 && \ gem update --system --no-document && \ gem install --no-document bundler -v '~> 2.1' From 6c8ddcf78a1d90dd2f26e544885dcbfad9dd0a32 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Fri, 29 Jan 2021 09:40:35 -0500 Subject: [PATCH 266/271] Bump base packages --- base/Dockerfile | 2 +- base/base-2/Dockerfile | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/base/Dockerfile b/base/Dockerfile index 6d447adc..c3623a79 100644 --- a/base/Dockerfile +++ b/base/Dockerfile @@ -33,7 +33,7 @@ ENV PATH=/usr/local/bin:/usr/bin/:/bin:/opt/bin \ # pam has problems reinstalling from a non-standard installroot, # so reinstall everything except filesystem here RUN yum reinstall -y setup-2.8.14-20.12.amzn1 audit-libs-2.6.5-3.28.amzn1 shadow-utils-4.1.4.2-13.10.amzn1 \ - openssl-1.0.2k-16.151.amzn1 glibc-2.17-292.180.amzn1 glibc-common-2.17-292.180.amzn1 pam-1.1.8-12.33.amzn1 && \ + openssl-1.0.2k-16.152.amzn1 glibc-2.17-292.180.amzn1 glibc-common-2.17-292.180.amzn1 pam-1.1.8-12.33.amzn1 && \ yum clean all && \ chown sbx_user1051:495 /tmp && \ chmod 700 /tmp diff --git a/base/base-2/Dockerfile b/base/base-2/Dockerfile index 42ca14d7..6f41cc31 100644 --- a/base/base-2/Dockerfile +++ b/base/base-2/Dockerfile @@ -6,7 +6,7 @@ FROM amazonlinux:2 ADD ./base-2.tgz /opt/ RUN yum --installroot=/opt reinstall -y filesystem-3.2-25.amzn2.0.4 \ - setup-2.8.71-10.amzn2.0.1 glibc-2.26-37.amzn2 glibc-common-2.26-38.amzn2 && \ + setup-2.8.71-10.amzn2.0.1 glibc-2.26-39.amzn2 glibc-common-2.26-39.amzn2 && \ yum --installroot=/opt clean all FROM scratch From 39e8d0d57fa2cdce5d955e41e7e979e8ac24c142 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Fri, 29 Jan 2021 09:59:51 -0500 Subject: [PATCH 267/271] Ensure we only use a 2.7-compatible pip for python2.7 --- python2.7/build/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/python2.7/build/Dockerfile b/python2.7/build/Dockerfile index 826024bd..520142fd 100644 --- a/python2.7/build/Dockerfile +++ b/python2.7/build/Dockerfile @@ -9,7 +9,7 @@ COPY --from=0 /var/lang /var/lang COPY --from=0 /var/rapid /var/rapid # Add these as a separate layer as they get updated frequently -RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ +RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/2.7/get-pip.py | python && \ pip install -U 'virtualenv>=16.0.0,<20.0.0' pipenv wheel --no-cache-dir && \ curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.1.4/get-poetry.py | POETRY_VERSION=1.1.4 python && \ pip install -U awscli boto3 aws-sam-cli==0.22.0 aws-lambda-builders==0.4.0 --no-cache-dir From 34dc45175525d8f11d150998883fce4fd47ed33b Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Fri, 29 Jan 2021 15:59:22 -0500 Subject: [PATCH 268/271] Cleanup unnecessary go code --- provided/run/init.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/provided/run/init.go b/provided/run/init.go index 6b9339c2..f594f297 100644 --- a/provided/run/init.go +++ b/provided/run/init.go @@ -43,10 +43,10 @@ var watchMode = os.Getenv("DOCKER_LAMBDA_WATCH") != "" var curState = "STATE_INIT" var transitions = map[string]map[string]bool{ - "STATE_INIT_ERROR": map[string]bool{"STATE_INIT": true}, - "STATE_INVOKE_NEXT": map[string]bool{"STATE_INIT": true, "STATE_INVOKE_NEXT": true, "STATE_INVOKE_RESPONSE": true, "STATE_INVOKE_ERROR": true}, - "STATE_INVOKE_RESPONSE": map[string]bool{"STATE_INVOKE_NEXT": true}, - "STATE_INVOKE_ERROR": map[string]bool{"STATE_INVOKE_NEXT": true}, + "STATE_INIT_ERROR": {"STATE_INIT": true}, + "STATE_INVOKE_NEXT": {"STATE_INIT": true, "STATE_INVOKE_NEXT": true, "STATE_INVOKE_RESPONSE": true, "STATE_INVOKE_ERROR": true}, + "STATE_INVOKE_RESPONSE": {"STATE_INVOKE_NEXT": true}, + "STATE_INVOKE_ERROR": {"STATE_INVOKE_NEXT": true}, } var acceptedResponse = &statusResponse{Status: "OK", HTTPStatusCode: 202} From a71b6d72ab9d3b5aed0d1f81cccd6f7859196df1 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Fri, 29 Jan 2021 15:59:37 -0500 Subject: [PATCH 269/271] Remove unused dotnet code --- dotnetcore2.0/run/MockBootstraps/MockLambdaContext.cs | 5 ----- dotnetcore2.1/run/MockBootstraps/MockLambdaContext.cs | 5 ----- 2 files changed, 10 deletions(-) diff --git a/dotnetcore2.0/run/MockBootstraps/MockLambdaContext.cs b/dotnetcore2.0/run/MockBootstraps/MockLambdaContext.cs index 1a3d6797..76d64ca8 100644 --- a/dotnetcore2.0/run/MockBootstraps/MockLambdaContext.cs +++ b/dotnetcore2.0/run/MockBootstraps/MockLambdaContext.cs @@ -42,9 +42,6 @@ public TimeSpan RemainingTime() return StartTime + TimeSpan.FromSeconds(Timeout) - DateTime.Now; } - public long Duration => (long)(DateTime.Now - StartTime).TotalMilliseconds; - public long BilledDuration => (long)(Math.Ceiling((DateTime.Now - StartTime).TotalMilliseconds / 100)) * 100; - public long DeadlineMs { set @@ -64,8 +61,6 @@ public string Body } } - public long MemoryUsed => Process.GetCurrentProcess().WorkingSet64; - public Stream InputStream { get; set; } public string RequestId { get; set; } diff --git a/dotnetcore2.1/run/MockBootstraps/MockLambdaContext.cs b/dotnetcore2.1/run/MockBootstraps/MockLambdaContext.cs index 1a3d6797..76d64ca8 100644 --- a/dotnetcore2.1/run/MockBootstraps/MockLambdaContext.cs +++ b/dotnetcore2.1/run/MockBootstraps/MockLambdaContext.cs @@ -42,9 +42,6 @@ public TimeSpan RemainingTime() return StartTime + TimeSpan.FromSeconds(Timeout) - DateTime.Now; } - public long Duration => (long)(DateTime.Now - StartTime).TotalMilliseconds; - public long BilledDuration => (long)(Math.Ceiling((DateTime.Now - StartTime).TotalMilliseconds / 100)) * 100; - public long DeadlineMs { set @@ -64,8 +61,6 @@ public string Body } } - public long MemoryUsed => Process.GetCurrentProcess().WorkingSet64; - public Stream InputStream { get; set; } public string RequestId { get; set; } From eca75c1c0d096955eb3f400e85703889dff4f4c9 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Mon, 16 Jan 2023 08:08:44 +1100 Subject: [PATCH 270/271] Add deprecation note --- README.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/README.md b/README.md index bb211d1f..9de871c9 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,11 @@ +# Deprecated + +NB: these images are deprecated in favor of AWS' official Lambda Runtime Interface Emulator, which you can find at: + +https://github.com/aws/aws-lambda-runtime-interface-emulator + +This project is now archived and will not receive any further updates. + # docker-lambda A sandboxed local environment that replicates the live [AWS Lambda](https://aws.amazon.com/lambda/) From de9a2bf5b73f6330fff10e0203f94b9f6f784ab6 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Sun, 15 Jan 2023 16:14:40 -0500 Subject: [PATCH 271/271] Use different AWS repo (#368) --- README.md | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 9de871c9..136a5ff2 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,12 @@ # Deprecated -NB: these images are deprecated in favor of AWS' official Lambda Runtime Interface Emulator, which you can find at: +NB: these images are deprecated in favor of AWS' official images, which you can find at: -https://github.com/aws/aws-lambda-runtime-interface-emulator +https://github.com/aws/aws-lambda-base-images + +And browse on the ECR public gallery, eg: + +https://gallery.ecr.aws/lambda/python This project is now archived and will not receive any further updates.
  • (am$cT5@D3l6R&ratNv%LppFTM+WuU4Ib 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 z zvAP~3wFqeMWQ(3{mEt*C90dstTO|&OXJY+Ns$ZJCzD})BK!r4)51U^5K1=E%wLISs zIt^ep?kr@2>#o_&Kf%o2>Vd0SS;&~?AS8)of@M$g#KFkXHhdf=K@ zjz89P?kkuiweMlV0sEYhY%3wbhtm_+&#Zq}-^myLhb8Y-^(FNYPK_|*kki2#iww7S_fxXMQ_8o5Ywe7a9ou z-7ab&ms+?%VwJt)n8W2~v^L(x7RH)yxF$mcpzR`a{=#Vz0-7y%Ah^R9meN9BmOzv! z!_b@j>Z2{0np`T_qR6};)T&Ew5FpN?UvU-TnpvP4jQj$;2vq=m ziwe_41(1p7kEzy+#*t>sBDV|K5ca!T6@A~-JSSghQQb0zMB{4 zGgg#|mbbWPoSKKFucm>6N}w4=w2!LMyu&NJ9zP%Z+iB|h)A!1Gbuvi0y4rL5TXZwJ z+)U!Xmv=25Fn>bWVjOsl?ar>6XBUHisT1e4S2V87!X{du4k3*UH!ivE>U6?L%(Nu*VNzYwnzQ zo9~J|1?(i{J2SoMC6$)nvUfH{dl=eN_-ySo-c}>NhtOz9i>hKbgaOX~;*7m8LAxr% z+Q+8QIZxdmlC+1n-$XXOy3C~u%-4Ruvu~=4jVfa8_Kuw|b*{j%)OD5IF8d;;7qe`1&K@=uHXk7ObD}nGgMFZ=UznLZsj@!=B(_++fZhX&s9Fcd+G3@d3*&v z9@|+XhIL;!N|`dG=EJ#7YgB&ju(;R;cF0w1Biuqk({8`3hrRqYgWZ*BQ~iNMNcsez zA?dp_`F@+b=Fy6_dGZE9MBoW7OU)Od|M?qZoYRI*&X&86f`nOyuy}@?7BbUUgnu<< zA*Sn6Mti2Gd*dAM*DBs8D)aq+;hdYlW?`$vDSWr$Icv8Hr!mjb46Y0e{;j1hZ4+ zLJ;a8HlYHf#!r3)rjPm_E=xxI{30)ra%f5^Ix7Ks_h-kC?x(4+)Lwb<<887dAD-pxOL$&ux20 z#}=uLfo$ot=6)L(f^BY=^lW}c2NQjDKiNBHC|ACWSm-OXJ$qh`cqV7gaKZ9fmyUC+ z-7no|tL25h=*m_^mDsX}9`D+wsQBH-el09aS6K}!3D$7IpX?JWu`Q0~cr4Vw?d*&u zev~WD>iX(v9|O0DEIwdR{h)*l_|`;5y2gq<+Zqttx*vKcV-}D=5fYH%-#(`}lcKuy z+a_6g=r84$ zQQs)+Wb(OI7JFV-#hl)_w9m0k|HzxBFDzbQ$|L#|!7MvMsq|0!9QiZ5BWKw+B zb&@M~sZ?zQ*Ea&_XjlpG4^`Qb6Eevu+(;>vF1TPBg6dVdyJ-cpd#OQeNo z$zvr<53uG^U6r@FMSjaE{3PU7A28DKMOBuf#%a(#sFPF^^ue#W77N{piv_?27lmtq7OS z`x+D~TT#oY-}A|YtxA#>%bs;>z8|H5kC-+{Bb`->Lu;$BlL)Wp=%-#%8``yAz!gzd z#N*NL+w>I6kw*gAogJ4!IycgiFa1F0o`~)UbY_tUEO5vLPN|iWgetlIA+LcMW1X@3 z3SR`#G-&7bZ{Xp35N5YFt6ip{ca9tjFXP?hR$u0Zi>^C*jX56ubs2pLVH3n@_10t{*wei{!0-8=E0AJHtsoz-|EX4E zq8(T^GdeJ zyw~?K+lE_Fz&+A{e5VI;uOsf+u#LH)9)xkzqIdMoY3-P!sK%P7 ze*^cr*>^BTY)fQbtB z&*nZH%mdX6;*EaZ@!WJ+;e}XW=2k12qM<`32!@%v;58!va26JIuHYo~k5U5&^> zv=g1ltR0}X$rxEBzC7yL>HihAzzXab@r58ke1lwfW;T6U{{OsR*@NZBEaJCqRyFLT z-#L>&k!SyUo()oh!O!J(5}RW4bZl;b@abKZ9Ql7Iksfr`!P z;uOBpI{%s@&fK-;oI%y#P-CFj&po4lS=TffH5`tZ=DT?Q>*3zN3N`nQXdfMEHS#fq zah5T$ocno7@*~i97emiRxbKwo2WcN3HP*Nbvo<%_1~K{Tk&Qqov(2$Xw)~-4CNe|y z!jGSLsb;GOc|}_&-^@9Eii6KDhq_>YqUFy{9{y&VmKFPURP3El!S+T${^$gr-j7@1 zhj!TsalPH?J0IyhCI4I+xTnetab`fLFcizEc_fmn`iHD5t;h!OThX-|?R^W861gKk z&;%9UOhlx}d z>Dx`FE5y}i(c%jI^oIU~|G#2kuuS?*09uRAv2C0DTGvft%p8;5Ha!X7eHT|;Am2#z z}~V!fNk%w11aLqzud3Q}2_MY-RsKy1!dRxYl@II_Wk7 zGDU*{pQU)$pK-C?bOgBgryQAYTm90jA)}fO;fS55gmOFx@JaWW*z(qDJwDlVh_JUHy zXniL~{4sBSkXeK?M@c9_ciFRZZtNYXQI4!CF9A}4HX}5ROpE&~2EUt&62dkMDXB;V zOdnJhQ-A-9x?#Q;ZTYgIk$2;cB~&2psn|5HLE(FTL_t?vrqZ&MpUF3Z;gb1bYbJM{ z)3r&{7JT5!`)+JGeTy5bS0a+FtM6$blrL&_o}^GJ^s!yYIx072%+7nA%QmVV9(%A1 z(HxJkRA$br3u6S?9UY6i=5t@6Cy#MLzs2bN#LkMP@QP}K_CxUf#)&VY#gzvAKh{M9 z?%uLwMb%PPQqxCcOb|=9R@CTrQA-fv^ogooe^lX4S=`jAYIC=yfw9~@z-;gtmmZDT zUb#Q+!|$7V_A97mqM*6{9Q9vFKfj;G@s~%mpO-{(I}19oWBckVAx1z$wQn@^B`iR{ z#I@^d_>eouYXJo}H(exDyG|U&S5-UPc&nQ_O`G^|6OZd8Kwhs0yiTgmRUaA1fm6lx zO>GSQ&QMjC<{)8*t(FkMp}ON0;*iA;*!@LET!Mazob#uM2Zgytw6K0GDX=qNS{kwvsr%&ee*n-t*1k>S$dh)no}|@la})R z88y>nqW)C-SJiU2x3uu*&(*OGzaE_DZ0)w4%~5$RR$6vl`aPogW@2sMO4Dih;p#(R z-F>z2PTjlI;ue%)Hgo^5qkWm4K6vaLNEz{) z4{~ZYvUU%^hkxhHz041Cr&`k|9jz89{pyErfyqX4Sjfwe!B`Epr^;pnXJ2p2BH?}A zx)^g$RM3ewc1utW zwZ@G#z%r^T2lyx}yKa5fKAXiQd?cDJt|k~2VR$T-i#uPQOvbNAyVu`cB-asz*(<+l z{|()S?03kbXE^dMs%6nUIz0#Qi!S7Wr#`L{gh&#fm8~a&>1kuuWIgZsSU6uC>$bR4 z>$?l2lALl^DX&~u$I_JdefI&i-1<* z051?=(8k;ra3*Dc)j`~Q?lfM#JCV9;w!#DD?0m0A1%O|ad$SG1kD;WVUJ;U6f)M8) z+%wHL{zE2rI4h9B%U0Hic9XjFfQhdAlWcTFj%U9nr!1B1$Dn~8Y8&#ck3`#t&VIg- z*unKe1$PcfT)dpV^xF6j{P$gCDiB=+?!w!nj#EjtBu)Gp4a&ce;_Rno??H_Jc%Iyf zxY2%p)sk|yvHrs{E2%!UCZUR&7ZTVKW>vxR?wX86Nu9NebA0RPX$z<}EHTsvY^!me z>_4(0ZCSJ_rT6yD$dKkx8ZBTOm={2AF#W$w6Eq;|%jLiPDSOR-R+L7Pr$fKm=pcM6 zyZ-fB$(AKdS=0BInsL@MC5|r`GPUY1E?Kp^kzwwBow1)x@7N16ui6aRFJIc`_cC0k zLD`}y=DR813PHNN7#S2ZHW)YLd3YrJ1?vS6wpb#LMsSGU>WCG8Mp)@zkRLy{*-m~Z zqV^xiA_K+eEcpyn%7KWyg^6(<{g`(GC*@9JYqYLQe#+<`{|8ovjaxM+yP8UcX+A~l zsGv(HE2U&cHV~(qq-l+s(^DhihPBhtDdL=rbizNGigCGXe~_|z2D>lJh^zZQI%p(t zk1(Mby~OZ9RVmbG{kz=OQ-rX^y2ho@X{)##hJ(&G@Yya&c8u>TW8Pb}&?s2P3V}tJ zKM#ebNnnI9OBR_?2h!D!+f(i=_B&-r6HZ3q2}z7%x~5j`y{x_-_?I0ces7#}lAp(X z^dQwtJ38Yf3x;pg^Xld)Dzmb;6smOrEu39i2rdZZw~xEgEHM8V@&lkQ|2@1o+2$8A zj;Wh=UsJxj_i8u3Gd(j^lX( z-C9|itlg8RS^SN(i}|R+;Z0^K`bq#NWAIr0AhFN9($H-NLzceW*90hiwKy})M|WH$ zXGNzi7Ce<0AHDp#X=*UJS>^XPU6KO9^UzWSi%qyuTjC@!(xTYuVZ7cf#l_%Yhje#pH@-_$S?mleBA7!|2K(rK$W{&X1!Kv0xc3rv3Xc!9 zg65l8UyQcs8Ep4A6_-s;2Zjl|>3cy=oYP{9+Y&0c`zR-|eCH}HK0BTH7Ynsh6NWYA`b8vf zH3El!Fu#aKFvCnd9oXnFmJC33I7Ld3o;~!IO;hmDMXx)y4~iZA$iR(v%zW6 zB2Q5MEraA#4DEb))2a^YYC(?s7~WiPPxX)y5`-&1IPsMbVLGsX6g^#1NdI)$Tpg=_ zHgi@K;m?lniy}YP!0H(vTKHZ&u<=;JAarz)^BP8`;qE7j@<0CQ172T5b;MJ)z_|yCb);- zD*LCIZa-q7eqR`60r5Gs@Y}Wf@j&(vgk&rVb3JPre7RRgQ>(?(8L@ercFwnLp5F2; z^@jvj!{ipnON_bvg%nmj=EY8d#1P^H*ufXz%=8n`W%~JoucGTnzb&0c){a^CcY`w% z(a!2YIMpM=Lmj7P9O!o*7z;1TA6oBsI zLQudUde`}gu3L1a#gN#W1(*a~fC(=kKqaGrO^Xi7#H7RD0JdyLfFEk;Qm*VCTDH$q z@NR<_co|v78kuN$!oU7VDE#yD!eFd~C2eq?n;MDK*a>{luy}TYy?d4T~nL_U8f?*|YEVp^V9LM5k+c58O>_ zv4sQoqee1G`NW^XrnStwxP|mPutPe9{WypgBk*^6VG7%8nOvpTQI4sGnHE$)E$nXA;o8KOo>5*qOJU_YGy%B{VS~MpCV%>|Mfh8 zQ5*FuTHTQU7 zy&Uh{_j~dx1z)kYlmb5xPNR`RWpj`#T2RM#sbxxK`$^WCc17>AiCIbeHfP0R#^(|D zF>YMmLAEY`k&7_n zr1|D4|CH3GqoGe#9I@B(TEuU|@E~)9+LJ=azLYkN-%<5s4G~WvFPgERKZN-1W7Swq zbh$UF8EO&ovp-jFItgv!7LP2%Ht2L#xj*dMF70nGXaBg-qdqXFo-T}m6J*Bm&%4X- zeLtg7ULsZqRiZx1qVFl_$VHbcZq7ma)(dzKdiY8E_U|09&w@%HYk9m&-k<>2=O4F}sCxV(iL^9MRf)p0+vR})sx18&&mH+~ua}Uv5 z6jj4=*a=BK%&2T(le=>=$jq`LqJ3w8R*W}t`N!!aCQ%D`n+cf)ny8yG=BcbU}SaD>~9&6gPy(2D+ zvDqSDdjM=6P5Q(87E|LlymS)3%XVH{LscIRu6j)_wBB`3y%tSkiWsJT>h|BTeejTJ z*vwL3Qt47hpE}oRMJ>}r;j7}X!bSnuq*UZ!c0BaoUh)~tOdjYhuLDRP$2@L9*0lB*d8#k7BCswz`;GKNM1aL3Zxw;U``k>Isg%Cr&AB zifOxQ_n#l;K#kPKZEykgA&R$QH5%78rh~&IlUutBBL>coglkQS=H+{eey22E&+l%Y zFbIdaLlE*pGjFwaZyK2XwP&tskxap{B~s@ywM}1MI!(V9Y9X2kfq&s$DxTjo+%Rm( z!8^*xP<-PUJPf!XW`u;phN4x@o|;m5^|fe8`iP@D4nz}!zQ{I(tj0uUi&!Pgc``xW zc?LS*9SpBBpWh?kLC2aF{W&4me#r0L%`Mwj^q2Bu5N4KI)$CSQamqp-V_<3INa!)p(!kL?*Zz{kpzG}C?gxF~cEc5j#r_Uwt+~j_2inkE%ZM-}Bo%7@#E# zB)%#EkdUbEu#ns5qC!6eu?tkDT2-0sKcL_{`_Z()Ztx6>BqFWXIE*tkLnqdvx9~2h zG2*=JY^y7mb3I%s+*$-gqg7D~E2{m9VDb&V`JHt{V1fc~>P$qbkzMOfJ@ro)opL43 z&?OI{HW*YKi=*qdn~fOAfY%u*t~d!kV<{VRLz&#+3h*HQOpk@$KK<9SE&A?V8{>U8 z&)G6Yn2hDtat^Vp?BZgu@w2(B%#dkh=T8Ku(3g|j{8sV>(!9rSN5CT345|nSb$NQ= zF^3PC2n!{RYp{EuVYAAQ?J=q^H|+P+<2N#4i(Z+}9DhhE_VG&Wv&CdZ>pnrLAVS>Y zw|T2%uu01C4G9nvg|Lpx0JQEOVyplW0o}&ICQmwH$XSPAsl1Icomb61Sk8Ue%l;5? zN7&dbdv1#r=Oxd0@H0VlH;dejwjhW@I4*vJ%S80k*UIk^VpOwbnjJNl2TCYpgdmCL zD>IS&M%y43yW%mbPvD?%WL&1AzPet7nIed3<1!*t(7F+sm@Guvc;-j7@Q49Ju!5%te}UNFjBW!?T~j$Qi=D3xXDn7785C&(BD)>?uGv8}hAC1G=l0AB$^DSy zkrE!s9-+qRZ!l(ri83`{$48EFG{4hBLy_eIul{i^PKl(JuwA4IxN*Pm4LIs(U%Z{vHdMNNpo{^D) zLAwRWN@RN+h7i9@`|xSzj3bvU~DeDiUFm0KyHLodq^9k=FYOQj~tu;Bw}mY{*?pE73!U z2`HvRl!k_Lx~#4nwEgS%_z5w8ugV`K;Yjxj3wdDkf~n`+$nc~39T?$1DVT8bIHU)< zn8f$#+3t@RCIpoR!W_SXp*1Ya81y-RqAuM}hnMby>C z1T5HoEP4G1WL0NXxy&AP@S6-B&S&=v1G2aKWccsxmqcCNeXCxD?OaLV5ePrmP*rnn zNSD`R;$Pw)^RCABOTD)UDDdE}famwS7ay^XTexL`7sr~PhS*E>ebf~B-g_Lc&NT(@ z<$$^2wejEBP8JRGhG?P35Q0}Ys4^G$(H99<^AC3uf9k4$E%d^JI+$Gs_P?~&_$2@O z|1AKmwq$9yfb$EIIz-EVtzl2oJbq?qr=4THmdbY{Z*lN0)uJX_q*j5{8nwh85Xye( zVlEQv?}?@5dwi7-jG~#B0ww_dn->$6o{MOUi9-2}H2GcdCf=W%u_~T6bvB}i6RwM! zXp1V)mHjbDm>rXI37#pu=&U)=y9K-DY}0=YWn~ZRW4-*BMcrD{z#23fVE3CGS$LT& z+@gSurx2L52ysXTD2ia~Zabuv)~1Hi8JxO?e#XK6igdP`on)WQ`oj!1_vA#wQcKac zem`>np7Hm+X21V^Asq~ZM(q*mGXg`N59d$H*qU81M3+H{kSW0wJH$CPT#k&}tDem6}oh_c;+S_9C5a^2kM8PL3p$QI1O{=fS5{MI?~G+}voupfh>yZsVi z%KBzYgWAzDVY2{LWub#id*B5lCWnERjc(ZM)i-o_+kS4yWMFiXKr2r_o8X?A$`T5d zlX{ol=>!FgJxj)y#f#sduFhuk^B0)W0^$|a<^H|FZWS!wHjjDwr9xIu&}_B!#z@gL zok-|5cyx>!%^lJPq=;PrO;Bk9Whxtw_FWzl270;x(&^Ui)myfemk-EQes=tcaeDsg zzQK8!QSz}z8AGYC}x8Jh6{2S$OjKyUcbt!@nwQ9FffGT+Z<{|;fG2cFj64gm=TrA_-BbVLFI0kIU?rUwm31QzB=xd^{Sli zzHy~BFii@2n$W3BANk-NoaaT zZkSTR4lFb_W~Y-bObz~2(G^wtwfOq%w*JzK#*R$Q$Ic}2?l6S29Nu439j{8V>26u~ zICA4uK@V2Fj%Jrs6#Dt8}DRdc+;tBOBz*W2h^CcdO5W8bnL@SNX~#fndYm&o<|igqZi*DhyG0odCb z6|p;N8}VkN#`n)bak8a+*}mUfcF}}FZkOl~+Jeh*Kd#5BPsMpAdC@SXQ%@&;8R*5P z4eg{lcpdMa6LJK)wIB~@ZyY}hAJY|XB-NC8oki8hJ8ZCdGSZMgqL2v6--F~z0|G$h z`a|sk{bf8yX1i2KlkyJHx%xVJBXn@8PHS&u{6T zYbV^Re3cVL$h9*9j@IMwG~RF}DEn>5z^rWWZoSP}>BctO1@YCtisE$MQV zn-VmX(cTgG9hVJ)?;>_PAA%TRMmlNDFXa_jxh%IYH4P1th>pAB985`ksw~YVOZZMRp#CC>q*I)(>v*fIszA%C`!xsf105}QqjeQAiG=2Xt!W?pkx2*ln|5awf#v>Ac9J2o z(`*MgTmS1QZFu1KUWxH(%X0}PZ!47e17cC)H3st}0w}jQq?h2>ThNf^w*s#klio8G z=OxYHmW}yW#jiy|rpxTo7cxqszAa z4}QOEJGI{%GRR1-ie+Rbn=8?wMf*9W#U*j0j=5GFV@^gid(F+=iC*xam zu3EM}3TX8qb>><*bDlLkOZLz5h{Q%JZ1(1a#25}<_0gaC4Efr#vjp1(A_^ zKTtb`=G}6($}#Wm379qZtIT9C7=#$z7_@pI1Gk(nRyE7hWZt@(h0ifRpunjmqHDco z%>LdB8FYptqV3hPdJEoQN0RR}KADogH$74rPdw6BzFvnC3W#D#$ksnta{(70q|87!(X9uZYd6I< zhBJP{soeQ#M%2JBLA#i!;+)iB`BNa6_gcH{%%X(V({yv+Iuvl&sMN6?8wE7os4;UCnNuJ+&wo1Ty(}5vG>m0`C0xjx8vY+mR~gsT|F#uD5Ts)YNGTyPQbK_t zAwLNz=`I0j=^P;-t+aq3B_Q3+$bob>j?qYMH`2f>v_Y{wJnK68(6`S^aZ!xVQCL=^4JzKMV$DN>vdpg|+%rE## zEjgvz+e_)NS`i@YI1Wl=xY=$En0+v`5tmmYTT?E=_Z;u41> z#U1`XbZXcEOHOs{yE%~?RkFg6N2iIxRPGP(-&*cMpV$04+ny+dihcD~gl!PmlM?H1 zjLNFPK=|j*XRlf0Ld-|+ak$Zd?KHZ#${9+`(ozD80>yZ8epSm=xFe*1`#~YDM&aib zM#ZZ*!H4eg?ZMvIyMR3$(Q<4FUhAiYDq+9D_%{TX7b9WZCJMQI5f;r7@(=o2lK{i? zJLbDB6ROhSIcBJtIKfyteZ``veM`jsA}^4$xiRb2?%DztW$}$+kfg_}tjbtOC;#oT zEs-k_HnKd97{L5l}r};(7otmYE z0-5tf=dv%E_#U>sbvLxWG{1dIc*GMVtv}NB?-5$xexps~Xt*w)`iADO$NQdA_k&45 z7-6Wafn5%oCx^Hlg~OalMY!BQV%C9om#We*;4+$8?Vv$KydoDGc{c{O6Tuy?U_301 zvKmG1Dymt`_R*Jv!>$->whu1v<3@GXG!z^x(CJinx}Qoki|Z4MWPQkS!ECs>mlE;C zSAxToA<&uAszA9GxrwE_BH2L1h!QI593?tql%Tz_VZYF{mmBEAkd|I)$E4-bak$~| zcmo3qAtOk2KYvJl^I(k*!)p(IQ*FiMvd&znsbi_%_<(4XjP`D;2fp**}u`n9oC_UDuDj)b4epJbVmI|YBs5X z4>X9LbhnSUKStPO;ogj7k+Am_Ki)|0$HjQU2S~^Z2}eUiAbU8DzLS8`NEpz)O76xy zDPLmQVCShFXU@NhN(@ArUt;$$)fz+Bn%jsH?K|}4gx#(KLFIy2f#>FPK`R~j#V^{> zHlQL4SVe_44cmFGM(c;I`J}>7sx}*F)K$~(t`8rCWuH~f>1vppo;O@V(#9KN_zUj? z^Jh(5W+yvIiM!ggs=P9qdy5>~lz)k^?%Dd;J9bv3wK8K}w%F32d7P;=_jF5KPY_h@ zf*`=<$j9{qq@BEIXBz`ah$TqvP8nal__jrltNU?RBGdV1shu5H+-=7@@{|ON+lOPu7U4g54>P6E6+#@w6o41u_$T~G5mWAb(cV!1v*cAwtqM2e|dQI^a90X z(1yvD*Qh=5yBlyRowXy?e%5e2bX`@hq+~yCCqW(a)5K;E?~}mLoqco8z$GiLfX{t7 z9cwYi!(ssUc!MnN$t^%bLtUkkVGe09$CvSNU<|S&OxZFDJ1>~1cF!3jTTO{diCqf= zv<5+A$_e>cC8DZd*nYB24(R0X>STam)cz24s?iARvOmc+=-8?wGZL-#CoN*Tm{!M6 z%WWkkj*(-3?4<9~FvN`H{V>vb%OKOTOO1LoSMZ!ixvJ;Y9G`)@DOOmXnz0U_;8j5! zZHS=ktbgK+RdVv?Z_0l9L}6^))%Nd?k@f(=G-H3OjGo1H#ubyS`jsVkW`>s?NuLgW zQLAtB*&FW>XB&b_bY;3_N2yXq>BvoYlrFGCR=30a@ABKW`LIfQ26TlB#lAm`dnbWg z#z?FwOYzolJpOtd0pM6reg`{Aw)IyqbwHd&kNsPqoeX;MLVOztLIR9XS;f^Z&3D>I ztnDEqDW_F63h~5cG<7jr{v7;=@qsfs+qqwB^oDM|WJoEtwG17jS3MrGy!E=3ZvE*D zinX{$E?}+0 zLwn^j=y}9#Rm7}ng)Kl9Yq`dx_k8ouh>nD4Lb(Loe3mqyvdV~Y-HD#htLl}PM^k&>!TxCd2b$SjA;frsu#rZ{7TM0E?xsmd@mLK_3-k3Tob%;dqgulGX9gD6TgnTlq z!E@n)s=H!!wkF)o42^nWceWUIZnk{WwI-)(CqZk+N+@HPx5`$j6st`S2}{peyc^r<8w zCK+pCU_efr0_AO5jPyD$qE^T`9lD%!yeHs#}Nl@wgU-oT{OWL(pmiG(%hJoWL$HFV{F;yS%uj*GI{x1rpF!CYp=7gUD z3=2!TcdGsv>MtsEu&y;5Y!;{vr!kKq&SFWMVlP65v=Sdhy-kO9F^&v64`w zRYr2YXrNJ%_khX+z%n}K*LSo9z2g4Tj3)u;)klNaF4D02GHSg?+#;x916X?SC)ray zvt1YKQ+tG6n9Oz8CBap##&~RZ0ByJ~GKWxj_OProeJndFR!iV2Zj=tp+{i)44YBUk z*1~7|u*QD9o|t>dkE?IzLrve(I$0z(EE{37HfrP&W(+$fKf<6bcy{Tp(yxx^~lK3JnUG^81&6-*MGo;2Fi$)9| z^P~TKp4!jIxc=W4=?lC7_5oIk4)#Njn&wzG3JZi*7v+WIn;_NdY-GsptroR)<*LjdbbuFa1Nq$K=Cb z^y8GOBibLn{Bb3>4~II%MfE^0a?#3tH(aZ76Mv_G9d`Q}0zXbrcdOm_%n?-3IDVk) z&B2e{`z)ndKte~{LU7+kop9@or!`$ECBBtJhR~M$#eBwp%b4(3vLu)E+u-Wdtw$$y zsGaFw$?i>g7njcV8{b=Z5bJsfpH^EUDqmH*@`p8~5Ax`Zmk*gSbC8-AFIHSmY5Z+% z06yh<+``#CelhIitBPWgx$Yyatf4~fP^0M{F+=Zl&8>edorb07N{26#rQ7Fm8A0?} ze!EFTw1|p*?|SjI^PZWv(4|Z^0=V=_dbUb#f8_nV*PddwjHc9Hica^B5kfrrMqc1SSM87^}+p4xz3@;S; zcP*$%FIDe?ca8d32lUR>l9Q4H>v`g_SA0|_A{9UrapHpJlH()mJlooZKR$R4#? zM0ADqx2U9###gSdPZ8p<(Z=?LD?%#CuZo5s~ z(`jc`rD#&Jlq9G8QQH4Di-XXq+_92`0&7;kd=rJzODiGv&VOV`hPj)-H=FHLkvEEz z0w1@_*4RQk{%&AU76Y8gpclF-7<5)Ip|EW%zs zDZschbNowMoAsKtHx$E6r@dKb?0%2s)axGf#u#H}LWkVL8LUElxEZ<&2_OUEtC^^e z*K`=&Tw}NoXKsN0WwmixY>mq`2oo9?QTBcw@e{^I+IfB>i?U6L5z#8J<@Be;zrvq+ z)=)ZLgPKXe&+FjFU4XO|dyC8Ov!=qOc~S(k*@WLWj&jL~I*I5|!?mpF^d5~v-}UDw zyZ2YxTGFY4VR*{nU&q-rJBigKmF2lSf49eFF`(-#ec!e{D6!wVAm{H$^qCdKFH*fJ z4$1K+5uJIcvt^z;?$yvxx2HxLS$*96VJ&P1-T0T%MN`0RXN-vP>ICUT(V1)=6=(8^7n>dwvsS{XPi=&OpeesfNe=zEj~UISwUL?uzu&oEvP<;7%2Qb~okyjXX-m60S8z}Bj$tYnek zxs9v63k`4;vJEm#bR~j0h=P8@X|6dw_a?V|T&}@6C}6)}7xenf$v+%lWZ1D5Yq_3o zI}iig;Z7`s+YvMt}!ob`*Th2(E{gko3mlOnU#O8-vX zKl_7qA~T<_SOLoBR7IhMY-nK4W(wY-3$&N?j7b)_YUiaoqx{YqV6$&O25j>oHf(2` z4*>b+e0;NBJ>wF+NISf}(k#&EB^h`+>$}t}i*kMo!$n~;rPEO5(=&gd56oqG&Z-de zlsxbAR_s+~Qc(l$)M_Mmw(JI-UxG!NCz>+*&ss<=$B`We_)nd-_*A;`1XY;#n&KoR_zv$vzHBP^c(^RH?)fqsj3L1C`=1R@@$hP1IZ6Q|%Y{F_ z3*#V84L4hp@Wv;iTz%E3j-NQ{-t^etQ#CLUY6ts$s5A8^n~?w4S>+LVS3=O?;tl>2 zD|^YC9pKvzj4HBVu&Vs%CY3w72f8BJSZNzPy}WjMSy{F1XVdfOm&x@W5t}f$ykTDO zynXcp!N9!kLBL9#%()LwTG}~J$)eIYn-DB)?eM&Kh%vE&BqyHW9S@GLV0(v=AJ$9T zd+b52CJ9be1Kpd}vzOUh6n3y4_8o$8=u0!Utn+WibidlvuX)&sfM0DSQFbrS;(DJ#$A}V&$OrjDi%tM6gPvZxB ztG4m4+9MC1YLFd=Rb8pShTbC98V-2Ygf9F#!c3{V9nMYKSB6Q&+i%2wPQXH75sXTc>MG-`0Cr)*Y|70fR?$^;qR8ds$jkon;w&+l`!cm z8C8N`xc7tkC;Pho2ZX`sd~4)x!k|n$5VR5vLE!Sf?&JDdi&&eXLVd3dKG=oc;RRP( z>lh5^iT*mOm=hj0LxpajC41W)zuY^z=cIsy2!cURFE85|x|fBdMWbP-D>eEw7ibX5 zDKu2GPo>JOg4o=3o8liZm4hq#K8db+r|9mmM16b z9NY2nYm~yLltw8DU54c7Ck+&AeMl6uKC*cTdhA*b^$EJ~+N-f0q?-&p6_-gr z#6m(Kf_7tBk@MLtR!gn1r*C}+wu~2{%O5?>qfrY-g*$BYjJ_!gJ0%tcG-F|Ei*%hpybY_p}o|0Yl~g7?0yuqur+bg z)GHU8Ykgd{Zl9|`*i12?0b6@-qELJX9-}mc?FdEw{%oM2KfmRb1E>d6JG|=S; zD(WAjp%*oZVkiLxuYC>y)+C}Q13;jf_QdO}eMPU)W9yn&PD6WHAdgt{cb=1pRp`L< zJng(t*iThStCLT6g9(M(XT+|$LGIS{QTD3jQG(@7_`mYt4z6`ZM$m9mu+1w8J=JovIj1~&I zEa8q65$kN&6m+kP@ir4Z4?ngP6?+(p%zLli!G)ug`oJMfa>9YRU;kvr=8pYl%i67_ z*M&QJMKRuY14fap?ra^sA5qs^H>3lV?k?`rl{3-*rg&lbb>4yR~b?ywZ9_ za|G$HeMV?{aF`^Efty}7Q#%z(DXDmJ080aSne4ta%mU*d{k_ky&I>+qTSE@m;4wS` zSLn9n8`E6#@2+iYWM!z_T*3UmPZ?Ok+K4`vkQjxH(c@W2>^#`s3;(o#|KP>HwW`YB zi8k7|EM#kN5Z7+ihYLR*$&7j%L?vJ4E^GJiyI-nL$exEh*=96Sw*k3`YeL>XZU4p} zAY4;GIq;+dHRE>j{rPe-4tnKfU^tSyG?j!pLcHdYCdG$V)fa&GqhSGy09o@LVKW6^ zrZo;pV|sxyqKZ~fB{lBRX_4g1D&T3c029+%~ambUF7(~ z`JxxKelxqR7zK~ermWtbX=G#b8cC8?Vx<;W0TOpczSo`4iVvmqXj>gTp!c*I-4=ym zc07W0oVQ+gR}~fxe~XLyP#((#bPuFF7`8MK4KN^cR;D6r<>P%yc0{!lZy61=;tO}&^h;c%lJ{3d+&cV zd4UL5s{Vr)({O1_#wWl|4fWL|IuKt8dIxfe#fSIs4Nje8u6^bh2>(F!kpzpQiDu#) za4<4cf5`muVD5saaOj6;=<8m-mmdICViuw&w83RwV}ef-nWn#2oHv8#r@xF>v~5F{ zSdYF|n}GUc>?IwqSiI0BTB^serTS(shUXUl`xd`y0W)=?fT3r4KrR@Y~(g~4?63S&g zGAJxb6j{YE?Qjc(X+6YJspx+uUA(o~NCJyRQl@nFMlsz_N%TyLS+0EG31>eJf``xOh|Ui-!Z(=HQyaK8D0l|)VXY- zrYfdIVq0e(8?gCZ^vn0O9T;86E=|PE%dt_C9fSvy@+%&4wflZ zpM_V)PFs_rTX)?Cw!Ni|W-tnW9JNBSx`?_x5XSTVYs=Y`_pG4!{U`u+4w6X9<@kGz zWhaCla0l<~eO_Jz%+7qul@@Yt#q&qHW}Z1!*XG#E`h`L%ENeL zC@`P}-qd7-Bx@WAeQ6(4d(;4oYdGg;$$6>Y8hU@$_Ep{_t zDCJXNoJg?i5zN0kU7Qno0d*U5Yc6_XirTLY+>JbLEAb%2UQ)=OzqnwXb0xjTqyraO zxtqE=`SZE>q8@o`vNZq9n?%(w?xj0XsLe>n-Omhc@{77f`l_8kpS0#*04kn|I$|k3Y`1a!qYj|9)ES=CDvz=`&UFnfSd8XoOXS+@snHF=} z^QR9by1FmPZKB#90krc7}~A7}IDXeF2|h^mdRAF`9SiI#^7RCmznc3;SXZ-ylQo1fVG&i7DXai$hKNoHZ7 z{W`jyj;{xJhhd6eoQIcy0CaG=R~ zM702NbutQO`X!f+6ojHnO}k0Lgep* z?H2dlsGVBxTE~-gXimc}@f%boq~_@UtJglM|9QMq!3&~PSz{HEF!uI^-AJSMkA8|` z5&=St-Ga+SP1z3=;-Y|yPlFv5z0lWY!RPD1q8(*~bl=j_DKzCFw)jcB>So`FZ?c6Qw>}S>p1MV>>qNZZ;(N&?(H|e&4U>4if z8<^hVj&xxiNXU_Zc$g_J(Q#KP zU{1DdSPhA4lW!DCrggxSR+0XDDJ3>fZD22KOj5qxyOsN$737fRZu#kkJ6$R6i%pas z35gdiC+%R$#{)Vp%88&g)|akd7JAe=|J#aHsy0;RMLGKm)v{*TfC|`4`8w0xqd-TB zoUOZPkGM3x=C#S9sZ|5`?xz&}&>JNZn}mreJ?vSKIkIYY-!|8DA~R$*671~)b0Nae z-?gT5?k(mO%#63bLBTlZn1sWg>Y`3n8=C^bDCGiZ-uI<2clPm!B+wiYpfFL`p6&fn z=_ll7c_HHHN0a=h-Noq(_ww4U_vzmf0$1foBhc-I-olz{C*yT~4%<)!*nSqj zG51+&HF;k!>gxy>d#BH7n0#Aa4v^uLMw%5|EuR*(@em~^YBmc39KXnQLExA$bt(JHQOR_ZVo04RbK^h0*1i0P^F{xL; z>FxJ}iylDG8Z0?tKYab*`xZI{bJZ%u7g>LXJp}zK0{%ezwx35@epR8Pm{-+ z^S@V{-MCICN7nl7v&6&<(^v&VgG4BaC{`c*?n1)(jLaFkZg^(H@kGIo0cR{x5~>28 z-?6lndosDNh+72!Zvo+DuScmT1EFr|}Jt>OlV*@+oZ z8aq^02cYFo_ZXXbrxZCf>HrYF5cPpb;FzA}>POol@X2kCXdb+yAUG!F`X;M_IJ;wH zQ1(I)5k80h`Z9?@7|_QZbUq`JAj$ed{)tm~B98jW(JEko{Es`Z;T}C>?5+Z|o|Jtk zvK2zh{;#g%=>)7CLi(i&!+gr-%dhmn>3h~kGQB?+#MFG)0#-i=&Y*m7VO~8WMYy%d z>sMcM*L+YGXte&9SK^UdHR|IDZ06g4qz3DCFg{GHz3CTDU!FT`o=ypX3tluWfkD&Z zDs4jmRlHPJlO`cs!VDE9e)S@d_BIL?MXAjGpDJitrpq6Ve;+2MEQpPOkb#tVdln&- zpA6Cb=?t9oSa#zzTF;H5=4fCf!nf!3PrKH{tLy%o7RfU0ZbTJPC*x3L{a2{x-Oej1 z0SEs>2)`D3fduC|$Y8DdO8;NZY)ez28Or)$Ts2-|*kIfq1HzMKh_y)J%lDrgq?d05 zgTu_(QrH z$X0%T$;~~QfXCx=*k?8C0;mMwbpq9;zjc$iaT*}yFDD_^;4l9!>k}mX{P&rC$Io5w zrKKB*4>9S+_8#IV!%!#?z>JPoKEHmF;yLSuLQ^(HKU4n%+Ver)Fg#L-|@Anh!(EzZF3}Ee2B5I4K_k_ zPX)rY6JOKC8WU@AP1#I3E8?UQNS@tq9*mOrAP5UdMFf4PdNUglyBi8)XS6cEW0^+f z>hXAP=5{$v=uz!7^&~xWK^^PG{Tsg}4B9R+`m`r0|WQ<6GDj?Fqtcj2VR ztf!u`y82JRWbigrXfDV(KZg5gSZ7kzam!wn60_40wU7ZCwRbj($Xd_<+g1IDr^1J^ za(BK8Xg4+Xac2o2Afv?;O#(*GUQ*oso`n%)pv^ahhWtWfge7ygyFZ%pThH(pi3G%?aHPz;@F1o?{ z?~TS6`hV;)OkoU9XbSEn!?rS%P5|07MN;#E7@axGBp40N~13B z-17q3IIy!Ffa@X#?Xmgee`~KN9j`mY!+Z_;U_?;N2gU2#qU}ANg?MNWl_!a3&B^=D zGm;oH&K78rAQyY~-+Iz+)}z78gWAqb7zz2Onp5dx*@if)$@LIBgZQrnr~|GYKU0Ne zhTsF>3w!Af@upsDB!v;CE&N4cBJDF<10bTf-#Qy4J)d$aY2kI_$8Skmj^mQ4nmM&# z0^AQk2=tHXdxNXILjK>>7LjKfq=e!xa6Zav9n~a}K-ECm_`9(kZ_8xBliKfGU$=b+ zJ0NYo`EAa=Q^EZ$kT&jCng59%%<(xRo-INovd36noo;?&{RsF|-e44yS!Y6cynnSb z8wVMeO8%uza9HSAI(&|B9lltO^!KeG?vu|!failuvqHR!brGRgW8V650Vuabu1Hd$BOT({YR{Pe^ffBSJ_z4)E1 zdcrCP6bY&xb{lo7&1Q$ZM|sGQ#yY<&8v)?qXHM0$Qe`(F0oXE*RiF~Nd}g+r; z!rlN$nc63g$CMX}gTEK310R_e?ar|ZQmwVwJE~8n5Ql8a$%XNsg$&bj6R_?6x~R}; zr#cH2fE(xR+9P4k1ocR|xQDGyn)jeMEoOPUj2ckd?N$92AD=6o)A1m$t~1=K&=cgQ z4uuos_G%{&Yf+w<{X2U9#$q|o2MPOWX$=$*OPNX=r`i!;<~U=f;K6nHf1+*?u4+c6 zD$As|6Zs$h)4p7c?K{i;Jr4%V;WNDw7LfU338!_yZ2>5(VbKOGR#VuK87m-gtdOJD z+{c9@cc9Nh4w^4H8xEMW^&Xc9paeG(xmU5ucmlxc=Y7h5;vrujs|a2 z5ca|Db7mU9u>gsiaaC;!OvirO)@k6ZQHaw5y3&bL+PK_ZmT&)9QrZvs01fga|50;P zpmHZxITSGp^{*uHyL%!fgQUkdW!1Al?)!xn!VLT0-9q*%cl;p~Km5z*0&v4q%5L03 zCI*uMyX}CyqWy&z=14WgEIpc+|7svr4`1_Mvwmu?WttNn!hXfAe_EMH_xxLxlM$)p zE9B2i`9>Z4)P`oqY94~t`D=t~x;;VcYM)WJpX1t{;*1 z7|fqX`upin8mMVfaM;&{TRw!bbM|R2V4LD&z$y-Di*GC6s^P9Jougw{H6-?d)!vd8 zyWPcckc}zUpl|HrjkT5KgP-)q@vltX$6XHl&RZkn|8ky%n_rmQ0@Km3(b*SbL%jz( z>17u0{mAsRTzDC}F9V%9YpX|ncc!KZhuD5TW(gMib*7r?KM6f*DCdI&csdgM;x+;d z^kD8Hlv8Ub1L`h%I~mGmSDQp=Llzk3H6GQVs3b}q&&(a-`*A1q zJqGv2cx8l7s3pyzfO+}!57s#IgXDv6Jsm7$9!Cd|IGSFKt#b|JN=tK z+aRk%&n6A%6xfn}Xe|jiJLBI%URyYb%b5Kx?;}rSqI$gTR?mCeg}iT7^O!t(dG%2; z_r$$zrPg8@^7zqe5-@1BeG3t|vJSq6k?U22+#MZ(BBG&nIz8(ds&UHH?G>czjZXS& zwol7uoFD6=z69Pm`~_={h8{95#ae*nRHVwxLMDLC-6;2p;&#soa?<1)TRS$wmV@Ne z^)=sHj!;LmrA?l6qOGoc0T9u7Yd4}%7&QqRI z;Okt;@QpWzeIyt1n8jDswQTUZrQ`dx5_738Z6)A;{8)(xpn7+$uGl84MLTCo;E%^< z|JFr55SEJ0$Ml-oyE){P-$$)|q;L%KSamS8UT(&O$3VG%B{1vq? zsNlTl{@2qK_x(5rQ{Pv7%u#FUL=^GLln586^5V@uuwVoP2gyMfiKhu|v)fELAM0J? z#xyEOPTmf9!_r%RO9X=IX%XI!Jg1D@Y}ui!KyvlckNALB^lzAtryQs9HWZr6;VUd+ z@yA&HBLnv>6935u7qGb?v%*>*GBTEVPKOsiMyI8Yr8;k~ZC(*%&X}HC<&xiw@DS|3 zP7j$+N5fZ%;i2@3_Xk)rKQh_w%Awyq_o&PV}b$V(Qei51&zuE(+WJgyQw zpAD5JyaiTuMuHpvE{_DQyL&Z|hc1}009&lXbH@?)0mL4Vt-1!skj+oTqd~rJpCy6D zxjitxQdZO3{+hdwuHJ+kZ@(0@8GP)i?9i2S3nuYCqO$uV4yf}+&(x6sB1$`Xkc@(_ za3D8$$BT$ns8lYSGNO1kIA>5P#YIIQAD{Q|;5J%2VCTZLe88E}(1pQ^0-5A6N-0s? zX0!Gr_(XG`pI=@&<-lS(V28WLY16`n_e>%%oWa%6&9rlii1PPAM|0oVC*8w7(~(@# zj~wsAe!SMn#JMti3l`Eb|GhwR8;Jg)Ifc?F;`ONqpT(=vbmC+Y!O*Xd*7`^oD0Qmv zkV8AS^Gk}90pGF^EuX2#CukZ4XXrrXv5WGbH$}-)>_nX&J;EgK&z;Rc|~$xm0#Ze z!2D>CBAT*{QF5cPZN#v1wF7dIdq;n$DE{U6^bS=#Ih#-2_|{x%46{;o|_^y1D3K6hb)n|B;j9MtvG8@o)(*W9ZI~5m-XM( z$Z_r%RI1*h|CpJHgUS-in_m2@^^Vr_OcB6JeD2w?qMSmd*BHkpIh?T4zgXMT$0U@OB<+>6n16O@4MQ`5K)Ky48|Do#QWK4r?CERa9#)wN%o!Pl4X$mgZ&V17029 z`YcGvbbAN+`_GHPD~W48U0)wgkrvs3^Y!~z{yPsX!{lD*C`YBXr%C$M2^yVZwwuMw zKELu4^p^p?0P)Ald&zFZq3PrQAz!AWDcqT?U z&cgI^vNH>MkBngZW%M$+IbYuCUmuf^)uZ8aLd|VfG^PJ_Xv(SUC3cz>>Q{aS5MFGN z^7IX>cCAFU_uwCLI{6N@S5-&VhZ5nx*&zk?=ifcV2VQ?z{o@Y)KrTh|Ix-!SB)k3r z$;mfhegPm&mRea^AdfBSU4}dl)196%f0ExZJxKQHm*zm^!;)W7 zkGg7JldAIZ09!fIeV^e{<^UFeMu?e+n1vD4*K#;Bf}o#ob8kfwW{E-HLsos+C=V$*`xJKnq->m1@C#VLm&`e1LN$aK|`Eq@6) zFcM>qZSYnT-e97j&MfdIkMB=%4E@^gOaYqPPjh`&^-*>!kD>ddQiZ}%QuXh75j{Pw zz+eFTiW!mYMyIC1yjXKx^Nu~z_=!RxU-f^~;Q?F=E0&%&o zB0aW{XGEvcEW+=9i;Yu-&Bvm(cZ2_k{uB7jj{4O9EG}c`)_wl?wq%oGt}_;=$dlGU zwA+C(zlyENN`>vlZ^->IchZpvG_~UMnZ6mLl+*yVzSuLrHV;d=8vmq(w`vK-3CgAV z7UkVE3{-1E@B3x6=bW+10yz=OdVZs|Mg*0uwn4tRk~gaZ@N8QqSA}oRw4V}_KIF=T zpYMK_8^`pR9kuBHh(9S35gA_`Lb71z>a=X0VWcRKl#Gu&Z}qbvp6Y=N3nI|-%0n*t zKk=hSN^b6dTzv^YbT*p^fo&(!+LeC<*!#MQNGB<}VI5xwf=`bgri`ry1Ocjie3%){ zc)Qc1JTA~KfHxw{Emaa4nuN=; z`r*`X-G#k^`gB4%MD*9U9Y>< z*S1Xzhs6x&uXq1<9q@N1#^e!a>iO|ZZdPymi2raI>iY9!%-JP@mTUdA=Fy}C%?aWE zX94^~Zc~Dt5C3v~&4#Y1#tevz@#Vy3p^DwW!DV?)gO24Z6_4J1Z$(mSUHTnEWNp4t zZZvq2x6@vQAPQmhS3%~NkmO%la~_cRY~w%bO;xX1{wP%pQB3jJ{yjX^kgDpUsmbx( z*=7m6@GGY@IcbyKoxQ}nR{UPdJkzJ}Mplj54jw*G7*R%d*50I=4nDMl%S<#s_|rkVEiGGHeIa6 zcEZBA4!JbV&6RByA5mvv3p?qU(%Ye{uC_eZ>dLQ77<@va^*SJ@nv_@zz&SAQ`NKpR z3}*zNwPhyR%3)TLsYA)%D!xrw#6W<7Bw-F&o$y@=UO+O8JLeWA&7sy7ZF9>8Mt9 zQ~mSs^HLdq8d^)aBGz_a^qnfzIVIq>0y3~~4`W|UVf|V1t=jj{qNfNM%}2$Ice+M}^NTQf+&^0$;FWkd0v*O( z8Gxb&HyvMD>4!wbtByP?R8Z@<-;bZkJgMKN4qlFzOMsMd2H0fWB=l~u?J8by9Q7S3 zWUYw2rrdSx>@j|;Km4tH+2^WajJAqEj!7cdR8_6XU}fV+{}Wa5&vf)}(>dKAi!%la zhH3cjkIXG8H?F6hmX_q#3;*7~i`Xf~d4LC_E6Tt2Hcw8*#Ng9lyWu3-8pD!?;EX9v zG794d`}LmG<`lW=*zx|YO|2bPn)B%Nw=A=!Ul}-S;mP(3GSLAKZXlThbqen1e$+>c zhk|=B`t);n=JSm_e&5^pSBJI>m;TLQx-j@Qw)j(Q6!k#b^A!v1^j&RfCCT$%Q!%fpPS$^_)7dq@hQiS#DA`hO(lt?h{fEWS3*WxRFt$dF zJ6)1qe#U!lmiw}^;hDfe@E%uGuUtQ`Sgn@+1;kw%7V(1jRHN|O!_y~B?QjfbQ@Xu< zdh22O1Coc}9-@(v2%UUD_nlkL`#hx#(*GJv-eKxj2cAiMq~0J3o=GxzZR=pYir73n zf)X8lv|o1lYoyDyWP;I%xaZgOY~OLtG{@Ml8*)cij29(1r!z>hp&_x;0na@LF$%29 zYYITD{q}!LEo(RYjC2iUh8j)Ai{oRIg1h-h!}C`gQMqFYWO3=$Ds4>2tkO+Bj{xa2 zeNdo7J=0$De#R|G!bYEjYP`U|Tch%Z!(NV&S{;76CrMAqq?J&tdRC2|?;mO;2WZOm zdeu8u8E{JE^a?5HOAf|^Rx!t(dEHj(^vTo>S3s4>LAhU;Ud%ru@OAP5W6PA6Kk1Yr?R6qtHfergSc6a4sqHB5oS&8?qMI!H6F#~|o(sfS z8|l43YRGVy<~DL2bPK>vi#-U=xstTZ9g4?4o44&0EUuo769mX3hcQli)>k~LK!7`4 z&5fjI{YKRHXsGF#hD|LN-JBG8Yz;Z&h0 zhnHJX<|6d`&o{0O6RD`>izK?0-;WQZb81wbt$QwMuodRY%V}5hLH{*le#3KpGgM%V zu16~ThlNo0W4#lx(-&wTC!TT;K=n}MNM`f<8Np=Zmn4cqJm`nEPbh1%iZVip{13D> z@?u>=Cl3Y{#bfUA60+GlO+yCEke>9J8 zbL4=8iC1Hp@RQfDu42rWGuI2C0s6&w>m#t(0o<|Zl6W|smOib`Z_(vzhnEfzUXN5U zjNomA65KpSpB&g>Pn}Wk5-dH0DQj6q`?A9R1g_pdkucx!ZK@JtndYAiP=|FX42OKq z?kK!4f57)|nZ3PpSu-794yiw~Dyf@eto&kQiL>t~wuf|x6S&NW*>#kmAIaY{NUSFG zl!=Ln0R0ei!b*+v@eLA2imiw=B1RJCK~%esdL>vdq7d;gp)8cHRaQ7n>Ck;6UQ$(1 zk&dKBv65S~uAw271vw}^pnhk9HWK9~mMD@fwW~iK4`*Y38FtY%?WD49(r`b*K40;0n78zgeupJPA&M z=srOD6zP3{CSN>0en%P-Ab zwx3Ld70j2a%)nN4mkylyh3;apxG{ENPe+}w>Aw{F`S+JIxonHb@1gJd*4t_7PpO5F zv2tu+wtsonetN368A=j%Tl_yz!Mwac3($byeDUo#HGD$g&*x<5rk%&?V;D}jcVGU$ z*lyI3p+3y|wT{ko8e`=?0Dfo*_*L*dd!!K+P-Sx#ehky_ak?C4!MpY{YlP>_6_GxB z3g%uT*JjH(Vtjh6g1`l7sCfo|HGnnl00j-Dx;GTUNbNJ0=AV$Kipt zyM4xKb;#-0Dqg1aqN;_xlpW&nUzGB@N(n5(-e{bq#QOP$x4%3zUTcKEi^RMH>2|+F zwyAtzb_|lg^^O=}6gl_NAg{%JaCHwW@A$!)x>ApZZ59Sm<|<;-mo*Q&bK1lDY)d&G znuQtatWuWy)GS0dtVkBCQfyPTXskYhUb(2)Q7lg&Q>L@zn;Vz72QUzz#P8kT?UFe z=xnz7i~FJY4Xgk{o9D%slXGe5e%~m?O63v{^U~cc{_1>fCU+^)8WS*| zQp2Av{FNzqGl)We%kle@+^1MCMRC-dBj~r-P$2Y?LnfOKC#5~A9;x8R!))^S-?zYI z1{?eh(0MQK+l@(Oo4+lc&adT;S-jg@EH7h|HmpKSzM4LBxeSdFF_kGf`d^cN#(gep zhMWgI+P`0$kx2-QCH`{itfLqH;1Lvr%b})W!4B;Z-a3vxfzZsuHuh2Ku?LD3)w#FG6-ii zf`Gd1>bL?(E`y^lJ#rbQkFmRy@ETVAf_#r&xECQ4&U)YcKf_lw{%0y)tt<{Wv!*TM z8tG31eB@logrn`=N54xr&@#NjZMm~F)$?IUUV46^6&mbSadw25uXwZ59A{mI5Q@~4 zTWgQhfJ-vrPfOl?HLvWixT2ov7JuKwucJaBDN4U*((1Avy4mrow@aU)&|^G>dv?d$ zw21t4K)iCs_fRl)z;69gtd3a)>*h>Pag{8kTUM~Un1a zb3e^%)giH%1pjq}^YcsJH$G;@o=#xx>?!s(?BA?(6)@`ObvXGWxBcuaO}u^LpFLs0 zJ3Tb+So+JWcFFjCM|K-gO39emn=6`;A_ct6zSg*B+CRV->I5Ph+S7oO393%PeIz*MWTbSSZL49JS%^1c?nc7uO z)xWKPc@RGC{eHIlZWx5gb!FNI>%*d0Enqij++U;ivu}-mR-LRvX6($*thqKG7D8pt zByX2LUXP_8rO^K#h`np&yMVsx26h7Jp_%&rwN68(Pae7%FZJX}nB2OkfK@;+Z#TNE z8ulbcQ!r7a`QG|S<~4myO{pzF2b3CK4sEx$&m@rZ+WhW92RgIA6|>W;0%IPP^Zv2VXK<+B2Z zyqV=UjnrMFxq3vd`t7NgkdafFNp{3%X9t=`T_D{H#jE{iXHRS1xY8Uz$az4kUQkwN zrF<^68@8;PpOAL!XB6r_CxX&GbYZ#HD=xpU!9^*9Axxai)E<;WcgwC4Sl#q0xPhUQ zzQrSIDMJ)mNK+i_l1^Z|IrS|=5>cp{fI9k{c1$yedvs>L`oFxyxj}NbzTfj zU-P7P3HnqM4V=lWDSrM%`BI7248q!My^Vt1oTf9Y;(;#_4B0~BL%Dbn2819H^T_B* zG8=u7#d|%E6y>bErM~gg(DP~gwHu}ta)u#p6~GPU#rWH`hxXGGOieCTKhpWobkFqYdRq1DJR{RSV zcgrtmGUqXsKgwTa<2!c^cd`RW)GpD-_MON<09Y~e)Ur(m~ylSc#s7%TAVr_l=Z>5O!bPZ>R#+Fnf zQ-}gdDg-)jZv<;F&#bd#zT%*AW7J~}p}|3QxxUW299ML=FudgHJ&T*3&osLw?$$=p z-Rk@-X^7OaLQ9r8HOR8$-r#5~mZk@*9&KM`uJ{iwlO<=`qUBPnb{sz7ogR3Ed8TD> zvaw^I(L*ZcJE{qbo&6*r^WNpF*fRqIl5^`E)O_jo2_G;b3pRx8$$<|FEskukAbUi1 zawllo3|;TR3U?z9$A7^nKWap3IRTzkhBxPC60=J0fGHxsYVzPCB6;t^j-|GK#n=7n zTp*fC7+LdG{Qg-!iu`OmU^U}w2r9_@Sg8>KFFj>3@H`z@)kasCtHVneDT zo|C9dI0K_!`TJCu13?{5`RDV_wg-SyXoAOkO2&%&U(q!tKR&KOBAX8MuM7y)AG2dV z=w7lrv*AE7@>)uO z@?=FLf6%F|k=8-M$!`%+9_Hc@S=SUj@T#ajqqugLb2ArT9NC%VJXsBLkap{li8wT(1uOp8sZhSrz(StL9s{`F{PAyVtL4li^=XiMil=AMdY5zWqzyYHlOMx;E zM@Htt$DzXQR$9_Oh(8J0Ndm^N;9~(%3N!q@zQM5gc~3*JE;Z;zyu}CorON3C$0>+nq7yVqGeWCgTMA+`N|J*XrUodOp z>(~JN<+$uB15W5#;*@iN^=Tj*FwHd}njFrdS1JHqGM$QOkYmM4ZIY9x2 zL0d`LNr7!TwSSR58Zpg?b{x3?O)7cR~y$)<8y#_WY4KKuSfs~&-;D83a+rU z8jXV+fZN_W+{tSH#Dtyq!5wcYlC!Qq4)r78;SF5+&2-8ADX7NFG;FMQQwQL7JBamC z;gfhinm0q)33@Y))D&r%&`Z~sQh0ogV>QnVo32w(v6-xTNgG zf9@vglzc9c=@h~qMvB{*)Xl)rONFD(lDOZWR&?(LYe1*f-mk~hDiv%yXgR&^<)$$ z7_U~mrau3iUWnLl(WuE(B8V9ADne;qthEJnpg@3y#Yy*cBs(VjD&+y;w`A#%I2u@Z z)9ajWbZaAdtcM|F1Mdv#xBSR$*s{8HcY^c3aHW-LYx=K`MLc)m#@D8_CTD-zC91zR z{ZpEL`SOTQRo0IkfSzb{-SAgiC;U7LBmcyXB94Z^$vFv5$f&={?l*C^GyG2KO+ROD zUtbf|?GQ7i3kOAWXX~+|4QyVJj&<{67OUUCTZ21(C+Ma;$W}ADoH%BqfK#5XssXlV z8``J%3f%<bz2=c#qeET^QflGAapUU6BR`(Kd`BJt-IArRr`7s> z-8~>Rxpc;-iYs|Kmm)NLTB8TaIi4Q&+@|zf(rcTsryt$(&@;y!Rp9Y}tJO2UeFG`I4-BdOiq)FxZ+}xvJ|ny96LQ~5ol!qr zUJ2;mo{|?dnyw#{HRg~OMDS>#^6m5A5HK4Q_y7JG)e9{IZ3@91smUQox~%dVF`4Z5SC&}$2jbcY$J zHC7k@m}-#V559(h;=$7zNhR0cb1tP#9txnYi*Vd~6#MubXGMO8;EMa_`&WCMktTuo z(5q(4qAAZ<6OxT)ulibRF56;7A7;K)9J&_y*XoReLUlfF%ywR~6y`)(8f8!@0bR#Y z`g&hRZ#~s6l6LvnEm#GkYQc0NVaLN$ISfz`!{<)hIw?5@EvJtDT!nt4%0pzir?Xdp z@72Z1C+<$7@4wH@6E$TagPw0ioCA5)=Vw}fKQDkmjTe8$7BVBhog=^b@zW_$I*TBR zUBzlVe%NbJk(R4AwmduN_=@G@ixlc2TbL4fxqu5I59&MC=}v1jO5Uu|&+6%fnm&Gw z{CNEWU<~QRw0`J8=}}C*1j-;c(5>5T}Nm)bdw11EFIM%GrPx+SA@kMBEdL#6`&{WO>Z ztYTU_k@7jbkWE_P`M>s7Tu*pr!XJiip}K9;@h_hyqLWSh({0WLsKC>}B$W=CF3MjW z;q4AO^pBU)6L&;;$2RI^*b8en+av`A_p{D@p=2qFI+I4>2&L78sjW-BKcs6f9BZPybbE8wIo zIrXy5W2Fhcn&fOSdVTC-TCbW}O~UD)SD)Z2zH@@C{nG?D4#mjd>yyGovPpXhe$hMr zK9h%1R9k}Df&9QS7BHDR54@rvu%dY@IrS`eS7;i_hIWM;wBPvID+e1?IpzC zx&j)HXiyRZg*K8zZYcV?OPo{&8E#Rsl=Tj&GgGaobTu(cEJJ8K%2F1-j zekbJm-z?+nQG~kBehe&IIQ#m}l;hiwb#@venq+z~P)bupyiGQ3y zMQXkmUD&uX8tFkG-Wq^CB+!ln8phjPp5sG1kUo^UgW`5EisA1LAjSD1%e^D(b2Uo; z1V0D=9Cr$qgXXIo-c?-vk*nkvi&PXSTziq#*0kq?rYv6!C=(m`3L^(etLBiOAFg55rWOo418sddOimoBOfveMI z5;4XZEZao!%i%^!R^f3^(Plk};B0M~a`v`|h4D zLh}1#7w&+^OfwFa=PjFu+GeE=rLgR18!}A+$Ock>(M#$6%&6e=&rRBGR9vFU{*H?{ z>RSNU;8TtCv8;ID;@R+l$)Xn#3|Lgdp;Gn$hpoCeVUuBzu*L94ehWGcvGpMFMLyrw z-klGWhFUM6ff>on--c%Agu8F-n7x|5*f6tXQUR3Phq)Grp>;G+N7<0$*@5*%JAqFX zpW}{9%j!!-(;g6u#jFy~q2}k^|FI%bB+I%csgPx^&n3qgJ}{WhHschZ9C*C2Jc?>L zpZ`%|Q=))YW$Iz`UC>fD=8%W5^I_WwI_ww3pgB%E4lQH#I}4ceecGe9 zV7-R7usa3Zrj1hI^MUB&o|V~SAmYe#of=c1p0NWUsfG$rPwj#Nlm-IYBT)GhW7Y46 z#jJFMy(8qHL^-B$GjO)A?1M!MYVJ2B3^*-q>bOg_bq#Y7EPHNkO&EFkKawK#}h4PB{b(nJ)vXJ16 znGxUbr~g~9quk-TFRa0UXTw)n$z}ipLF@^aZa$HGt@%+8Tm|a1_7+ImtK2}p8|A!v zu-nmV=GB&FSD`oUNmA+iKC$zUWo2IoGAG* z{+1Ml%eH@wi5w130@k;r9vviU4kJ};)wCi8A~-8TY0f25?h@pYndcM%J&trW>!5EjGk+8z_6+F@FHX^EPf0>7T@@H)cde+K{yHN0m9m0qd+_0*>aHX_A;1~ zR15JBLSz7h4I&*Z0V_`intBG&6G((QNbnF^$F6aqoceBH>wLCvKjOkMm{rAri>ZbN zFy8-u%zRz(!xfHYXU zzjwN_=S`BK+RNuVaVT|h60WE69A~T!;sOcDYw48r0@g*8>0zLtIwU-A(?$WnRq^n+ z`UKVhr7(pjs&YJx4S5ADVIOOh`E8TUGZ zD5|(Z4hG$EkP8JJY<;-DL9u0%*0JINEa+oWC%I{|XpM{VtN6f&JE&7(3LUIlP|-R( zW+==YD0PPQ0KHBB7Gu%VxM?5IN`mYvAO}rI@Cv1u1sWO#82KPN+O(^Js2L*K?gTp3Cfxp+ zjF}07L>)0BlC8Wnb-9je`b;lYeLAmN280K z0<<79BN=LhJm2ZGMa0uDWlvk%THRsE_$X4>+|&Wzi-`bXSjdjTwuyXsJy2s1D!*4N z{CB^hQ|K|9luen`@PVMZ43YW5I7-qW$2hqpN>FB z!bm`g-O!Q8CC~$B8@T+Un@$@#)9d|On#Krq>-2<=7)BiU+mVn4=wZ+k4sSS=qVVYV zi{ascLQe$02$cL%CpJN(r~d#B3fq4(O=c+!SjNK`^g}w3`9^os>)XAs^NmD|TfJy>#mzjyu0Xn<^7t)FKqm9APR8epkFBaN5 zjCoQ8J&db6fh7hr3N{VbZAekKY_sdh_HPK}8tCMVrh)o*GA0PBk~;Jp_xA#iTBgb1 zj;=3-OB0g~_2Wf=fFfxG=I4n3&M^Bo0Z91!s+o#0U34A1h!Ll|M>NqeB-Z(M#evNlD<93S?GEu313}#-t83f&8u-4 zF~uAti{c70L(kzOy(LSJt+^Qk-Vm!**<%N$vJ6$NE?$zbPsp@tC6&W(#_T7rS5urNvr%fbr47K(GI z;`Me{%t8(>CP8_VVJi^zG+e5|-N@&=$_Mzwh;$P$HWR-$h0=9)N`0<7PP4CwK~+2|~^hJ-ZJuk&mbIdz@i9jU5!r zTNnp$eusKu2Wm*~jAVsU;U5VD+mrCWge3EPi(v-5rzLpPT6O~jY7bBuJ`u}PR#{uVkx5z-S=dL5n-c&6PEa0ZH$b+RC<1p#Xy1ES8NN49j)Zlsx8 z`zsJ#BIL4GF&H>VoKj}BS#$&0k$wVek37xJTBiSy4rIR_n5IHm()3zyUbMQqcE#qr zhwbwDNf?y+?BeO1+4NpI!l?E<%NA;Rg@sU|;o_4+`x{iS=_*Ab{y4!wc%n*y*&ypC zs%ZvSO~Yn9?j}t*tf*(+q~giYL3+GD4#uqT)1(h5w5kg{r=;ym-#&0p<82QP zEhRPm0A-Xa71N=F!1^2SoJBov{eBDmzo%UHhmidD9cD`v=C%tAhJyT9lpTd$`wx2r zvG{7|PAHi8VZN7$_;A4~#>)9M<*9Kmv1A1^zwvXn6=Ye_mKkp=MbeRwjYQ8%@WL@n z#lK8p?8j6PdsW1XYW|tN^Q6iQ9F%-@c)&+(mclYppq^DIYzG22;r|v& zsJ$ic;44U_3y{Dr(YYOpAOe-343lmC5pq|uA6&CbLPlsnG$PX0I+-d8m04@YT$y|1 z|J1CIBrAJu{msRZP!moMditUlZMd5VCB=_Z&ut?YjVejT+4Pa8DVg#HO%L#=sf-jQ zZXkl_EDg!B_xwhmHUs+2jb^UfHx{->iw6$kD<=G1O;1Rs?jF^hLD?89=!{v*4jjU( zM&BttH`dnl;grT(snZKwxlY5}qe$%iRio`^*&Co+I}oK9ae%h(B1-id4k{kZb)<%@ z#e{q#E^gLuD`h}0H{{Q=pE-)lPK+?gJ=k%kIKljI$X1Jh)!Y9|%9DblNEN8%3!!2c zl}S(_HI*Pz0?OT0y3*VeBS=Q_#u>qz%Qt@&rZ) z`afGYpJY4K7OQkeO@GoIKdW zZ`YY~n?+GKlk?g^J@u=-u3GZr>z)_%_{=Zd+AJ1xZ5bhC1wNJj&zC`~y_5A>)v_G$ zLvHoL3fq=cel78NJ3tH641g9zK96SMJ4p(cVGTCW^YH`w0yEt&aX};S7p_bm-zusX z1GsE~yyZ=ju9Jn^2ei4FXC~^XreX0Y*fQsQ$i44|9ckGfkl9o;3*9<;79C0 z-%#FCczH#6URB10X%sE3RzkeHa7HpFy;zX{azY0gnC$5I+ABZIr_5TDOvF_%+uy=n(Po|(=CivIzEE#PxRIo z392;KIivTd)6jmkeyx9Vl{}=b*)md_w&AWlXMJk@UVR_@(~R>^2cC|?f*xl4xmU_? zmIAk<^v-@!bbjLYxAuHlnbfXJYqj~?Z`dZJ{{-+p3?b{I<;G5J^BE`?!&Foq(~5+^ zxf#uieiO~)U?pn2DIH#6;w|Wq1=uK2xQaFB`PtV!UYu&k(^{QM0#t<2>)*q=j|^?z z2y(Xr8WRBSQi{b>HpJvSuJd^ML!w%iHeA#H17zanGTl8rX-+#CF~zvJTaq7qbEXj( zNB}Jd9l$dn20XMA2v&?#I;cXbOKj7?Om_$9EKlsUqrys|h$C8>VwJ@;0 z7tTPg=m32xA^u$?ssWv}$hJ=H3fO;)FLxnOwVBEmaJttLyqEqFAZSjF?Ub6w+Ws1E zpWALLtXc0!=l-*F_Fm%UVwI&wxZjVyHuw+RtG<46bwIzhw8$Z-$a$zRSobpnO-jBDr`hjMSmxg%1Ra2uV|lT`O|@XzchTVs1t{d zOky;Kv~LFo$S!=z3cPLpPP4tfznTqemwcQ2;9S>wbk)o0dZ?Dm(7e3nS6jl$j9>J9 zQ&zSb8#PsyvAo(#*Sg3n!w#!o;LHE{X#zRAl$b{Xmv2F{Z&H7rXA67nJKIe1s;5Hz zIe;@auw5y=gYNlrTTP6AHsso(|61IcBo&T0ivK}yarCMj-@q1zf~Ld7z-)Ogc))FX z0Lhf-NEM`VPd_W~gPZ<3_lpylbi1mND8XOq)ib9!dTn{AzA|LAZp;C5Ow^{#zu;ts z?oUg-otum&(P-$!z#&v z8HSF2BOl+lUtiQwxc{2|UEal4dogOAtKWLNvW;Up|3S;*Jg?txCNSIWcmLN2=q6MD^*Gj$0feDC^9#{qP!LvQ~cJ39Rh5_&B*obbRVCfA-hxC%VX;@j%^|GenBR?mg|UTDO>(>0d(jUT&=$ zj0oZ2`L1}NUg1@fXZ_Dp#VHt|2epwbb*%>$s(&L9IqkKd^sdZP#Dv!yvI>v9 z#0}<2zS&p45qgcM)n5S@l+H5CU19s2BuaR*t=|j9g0vSjP6+;S=$Q<^4_+gttQ#i7 zHQJzW)hCE+KnleGr__h~--kVWs?0X5EQR>QybavcJ*7i-!0aHzc&Gh;{Mi+w?ACzS zC8BB+Rzs*-QJnZaJBfnyE~b`bG}GEqKmIJ|ZgWUu z^2VzePraQNul#LnIeGUt7=UG|B-W?48V_9fjJpoBdBZHed$^R!%`cYx#z){Z|HXpr z72JZuL;)Ve-TGqCMSJ$}ZD*v~J0DdoB@(pp2r@#;M+G9~Z`D2&+zq)=%l7ghxQ{XI zaZgIEXW0Y|{PJZ$?9n4(d*i)UwA&7JA^=z$>{c3MfSKkZnf{SWuEmr5G zC`X)fX`H>bj{qkNY!-XhXSZmh2gZL2t_iy>*#-LToJ3!5?y3Q*=SU-2pLoofX=(rq z1h+2|w?{7i(hpPBNX)sya&&uk{L6b_=d;eL($c&hO8wCM2opd5KDiIY z9Esv~=RDJ4JtA<9Ei^3gq{9Ai{D_9gt@J8Co=XJr2tUiY^*=;Kv~!oO-UCI;DIQE( z4{Y)buq|`FIS)zx4Sl|B%R{+%i(Hw6oPwH#Td?V}XH#Sek|_)^C7K#fk7B$~F{Y7p zS&M4ES5`}iCU84<7OoZD;(R~%04gBeX`}>I zTbW!h64@uaJAUEHuYqVAwOI?t*C$^vujE^VDZdc>PO4Ea{C`OtD&?7FJ%1&?vpJ6O zWG(@H7&*Q#_8r03JjXls&6&WBDj_)TSy~ z_(#R?hfM7E^`l?KA?1YeQCrqLg9qos3c-BzgEctLwtxfWP0^h{QUsfDKpyZHzE&U) z%C~cS7n?!_2kAYwyuf3cgOog&alaZ&Jp?kL0-|jQWPrDgjqGerc1_%+!uyBip%Y); zb%t$66f%W!A1B%eD|@29e~lPiG+_Hdz)9mtb&`Pq{?^xpMpMC#Ut11J1|lSdlC+yQ z-QMwUjH%vR&aZ!XVl#c{L;Y*LI)`au99+q@sHKh%K7KlKwOD;VdkH4k=>9FWP^Z85 z?9C@EQbRRu?ZpfadT?`D%El^MzdqWU-DcF?KcF}d>OyL!TDPL1M(blPa(f^*Ou2op&aS&Zw4AJY}os$ zvlt=SvgX!p>Lr})p1n(1g{FVV-uzREUhWsL@A|7jn~=tLU%dX#ga-P3FQe0wW*gCM ztBij4VvSuJiw#V)pI|%w9;!BYO4h|JlsnXB zD|WA?a0j!*o=r?i>^Y7ofR(peQ?90VX43OT2~z(yg~)a4FGIK|FIr0OVB{{a%dV|wCc=s6nU7$$`fN$1T;!%8SepfKb)oS7NNwly8N}J*F5*2eU=d_kuyct z{Ku%e_eY-a#x`_>#La7=rX&P^NaiE575LuI%2|9|3Qm_DGTLwkP`9c8)fskpdBSa3 zdQa+{DG1}c-!nn?*ng^E@Ca+)8 z%!=#zI`Na$hw*Ut{kn|-ckq3;jH3y`-x0$6`=JoiJ*&~^GA4?|Dqqv}&xvjKC_KO` z`Pi@hgkX{y-?KcCi@txGq(;Q~Xjl8pM680=YNfTR=hlzlFW25)FVUe@H$s z$_;y;usmPmgI=&bC(vulOFD@L?iT4mDXU0u9NyvIV|XZ)2z3Kn#q24NE9L&*Z#iHR zN%X+>FH#;%rpN?-G*}?1LXZBph7|x0c2L_??TUqDp+Sr!&mBr$2vv9pn4swMUj_B> zBl6Hg{78Bb7^|*h*35t>BAy%llP!m)z7~#-1}kFHy`ol%1e(ayA{?)H8+zg!J z%O@q{q9-)`O~b9&gT#*Xlpd;1mfS=ptY~8bk(#&o;iH0_NL_omr2e;LrcUVDA>8Io z@0*_eYGCu)x-zLYmNk1KM z%1E-c>|%d_%$~7u=b|ki<3L|!aUyJ_@<4lSY5#0sMqj10ZnRibQRu4FQUHH16cA;s zfgakA0wa>jn8?%o+bNVjSFErq7}L*8VTxL>i>*B?WV7f$aB*2E=n;p;$Yl*7*x@pd z(zw~?`$oVN2lF2}OPo_FD%!LaTsg9j`~#m{w^P-^xIrR&i(Yi zpAd;iH1s@WOnqU7JyYbudDF0_p@2jeM#g%6J}*LTt`&IxD@KBSDn}sTBmuxT2+5wU z{~@S!7M3cMF_{WlABdv*I;F;uCO$DGNO{ZG^_s6j-yqiab(p;`@Sk&~KFfjo2ZzH+ zlp?RO=3)y|ILOgQ>^=Va29kqY9>(Gh>Iv2Z?i3kYnxa{fi?Gf*oTVe+Y(=9_y5fab zc|;ZH5(Aln%IZ$^f_hCJ*uajfKH&lA0HY6aZF{ozYudzthFJao^bU39-lN%}-b-_y z#Pl8jLz3!4vLm4O42^A6HxLU2WdTLBr3Mw-23)6Aah~Jw(!HHR#Fy%{2P86xSocgu z-UpAJs4`{9Lx1XCsuI*o>sKaAlyH_>e;$E2c!M6H%M%6nllqv?N3g1?{5?~*zvWS! zV9hOC`}SsTo7?X@frg3;D(#kU6qh@*ilXf0cqJ#d-wGLL^HBz3b^T#mtIz~q6tlfIanm_E$)O+lI zV={mEh4J68hm=fk-YD1gnfB~aXGi4$qsQV}m;&Jv^nlds*5(W@Zb{?o97%{f91G>Uh6rhse5nuuo7s{5YV1IZ&^TH7_RNbvxo##gqzCeRz1+8rP8; zWWmc;1rzJ?9KI)@=>=iYW}r$8`RB;6Y@8-hmyhFTu%Ssr z7usqWkCL5hxdCekG@eC1x@*dNj#73t^e!pO{#_#M1F4Pxngd22|P5z?(HQ(D<0`tak z_gC@pLIisu{F1Qr8+Jjblen%Tw(N10_Q}vb-Qrk7-Y%QKpKPfo*J#V_M9;ei#F+v; zhKcKl=m$1zyyl)1gIVuGx<1=-t6_srVca*C7jQX;U093ln6YuT`9BA2mYtf3@jP$^ z)rT!1-}?@V+ggSAry2+EQHUC^@1zXR3I259ir84PDUmZuGIxwpfNHuFl~X6RT`5VA z$>-TZ^w41y7p;4()t{l`>i@NP&agErn7mK(-hIpb%Ue~{Z?bXdm#g#KNxexb{O%d< zt0DfkG#nk;3TT!H(n>Z`e@EESKsr(+#-QQN4f!`&0l#}u%zu1^v~0XQGL@CBh~kP_ zk(KM(5}lyIpO2TFwtzRp&pSF|)!jLxVo5XkvX%0osYj*HIQn! z72P_&c?KJirjCMLtyC#N0#VW!)7~5MZHEzx2N$DJ3x#<%+$P0WMhJ32|7yB{u#pGn zXffsEL815j_Qyeu95iCVwrxXeJBpu}m-VMZ<`yb0V(V1oM?Rc3JF>;ryG7#;&~=A} z5DySvdnx}FCDbRBX7al1_2bR64MOl?yxVJvgBZZl@ylBj0Y!~o4Gb+LomSO6REf$8 z18?6#8~z7@<47q27ZJ!I!#gkt%Kby#?2imO;5AU6(wp(G1T}*k|_ox(QVYb z0O&qGNgmSs-`fNHNHTxrTvQo6EAmLG^%Yfe2suF^4`u)hmmTIv70R=joM`%<-u+7n zLOonUl8hx^qS7B#{G8w%kUT6_f0Iqd53QCeB`_~IsRtZ*{))PXlU6PLy=nko6s6ny zQ)wU=o)qS-G39tZ!d2f4TXevbWQMkT9&y&Ac{m}2;>Lce)c^l$0qkh^UXsjq#;VBq zln#GhM1tR=2I@q9w$br94I0lnaIVccMfQ$zO8RLMhghq=XD;%*KzdlY1P|%C(fyhD zPl-FK()maz@aWZ(*=6CN{pPgi`l8kMYhlu?biSorS(}XsL_Fth+v48zG414e>foRfL>E({U~raOEfB0)@siZ zxV8vPFvX-E@OUvW0XIZSw>c0lPsUsY6|d(`k?Z9WQRsQ%qASE=BW5MC1F*~3cP+;Dq%9`5yCulv64B>>pXCq6rd z6WHV_)8Y};qkZ#l4xEz_NExA5!Ov~YNcDe4c)m~;*&oKc)gzRhd){2#VI^&0*kic${(BIbI!}-` z&XSwwm|F$2On5^Czll+0ifp`hSZ;j$y71p7)N^;WerEWNb%C5K8|F5AH!Y0YT}Sg! z+XzgYdXYs#&4eZga$?dOedv?Vt5g}1?6tR)f7)=R;15H-1@?=4ZFNgJ+xeIG#~T>2 zS=*W2u+d~q&pkI=GHKtGINnomrBOkbWUorP1Kh4kSf8Qy)jXa$dRfy0QS$kmpdj%KpTSD5>H#y(f{(Fw z^>3hhI5R;mDf8gzd}Q$&BW=qd*fW3Iv;c@SBv%))DO1VeKsaIxK^Tel;068+oc;{m z2M^2tm-YT1r1vG}L=kcd6MwLQA6ec+-3LX8@nJ%~CtwO(pF+bdG9lL-mPL~8|LVp} ztO4$XWfWeDbWLoDIYNQM$n{I=G#DaSK`NfPaCvD=;<}&ah)VNkxvh-$CH#J&{U=VY zo%MT-2jG(Z_*9qE$3=Two`H@aO&(EWJ_E;^W;!;7NH5OUT6k{v+bdScl~SlZB%O1k z>nE^KPF`TSh8+P)qz-)?cGk!nWxnzcyYz|%U%HzeA=HLy0@f)aY7581DAQSsMAOZT zfbehBW+vzFAv5GrMby&a5^CzgMPUcaK*~rN*g3s-+fxM@W|9$*`5Ww|U;6-YQqFc;Aei=)_xcF#u zIRr7qz&>L5`pr&QDX9W1Z5esvCm;QZ3-r@huEqy&``_2k$o0AGI!BuSpHim z!^g7o9_Gt)<=ZGHsB&tBuC_E`>`&G#J6J2wU_Fo)sj!2Q~x8=ZkB#dRZ$;9I*ni9 zxy*wRx;Y*An_J?bX~7GXEqzZAFHv{;&RrJ84QnoQL&M#llg6&f#Z!>)aHTE;$iw8zpT!dXZtwr(*bOnOkYy5D&X!PG{D) zDyYlSH2nw?yLY#NpnhxzehZ%eIq>!{MA?I>{AHz)JhWE@5WaT=L~TQ_DV0GdQs09E0d|Z zcEIG98F2^7M@9RGqau8YthZ}9@rnxgCTVDch! zuMSs=O)c5u35LmG?RM^q;zl3rU&VLUVocv}tj5{hdG@Xs*>+%}YUh0iX@LHu^b02AWc||=z`N)oZhNx6rI78YU#nEr}@AIs! zs47E@*U)oU>K=ZQxzLXt5&7{&_Uaj+kc4>8V>5k#DEZF(HSm$8BD_I2`p;7C9rRo^ z&x?ZfyWM-k^|@JhxjH0i{&+pvGyJzg*jo4}6}K5Dkle~OEhhTsp{pShXWeOhea4fk zWt6~k%%7TNKYN6n(#8idUrIb7*>6{C&p#CLPV0zAX>>W$bz1Q(zUyl#v}V9%ub><5 zes!t5j8hzcf8f6%DVGRwA$`mn9#D;*aswrI0h((#GDc-$DLKy~B=Rwco18IQp*Z{> zrrtWLssH~2S5ZJhM5zHXDM3IfrDaNrfT(oH1f)Tvn~Ai<1VmI~(gISFQj?*ibm!=f z(c9SW{mu91`}>{WKld;Whn=(C*YiG~k9sa$Tn#`fH~d+lpNrbDJiw~G+LKfp;0toI z!Qu*f1cL$#5OACxZvI3Ku^N`y{(r#Ko`0BtMj2&-#|}2~ucLE82$Lg_yn=89oO6D) zseC~c5PSo`hr94~GQIr!S=fOuwPVx*F{dwM@YEi}!V+)&{rUJMQ1at5xo@rP==tcO zwTSe2Pw8`eZY7cS^gez)3j;n85$_o16KWeddIu>PJkBrcFxlS_C*9gUZyCxt@Ra*g zh@M>0>=|PJHqN3IGw{5L?tLw1k-5Oqrjl#5Y z7_caO9;5Vv>0UkM5@798OR*v{Slu#Ricii{0Z1<6;bk&vY;;m-P$^UPI5mq18?_b> zYbd|()*~z6gdt(Mg=~6X)8DFJq7wB8qw;&91Ql`n84sK0$|Q_xI7f-Bu{x!$OBNC|A8*W4X<3wroXcbniWRpr04x#;GZ6jdAnYXdGOg@34$J zM=M1vu*Zje*$kihD`B#F!^3iWXul(Y_aQ&eYR9+=8am6%G>R;xyB7854TLm-{)!ug z-D_(M{fB5ve{J(f!D;q7UOMWjwu-`NU8PPl$c0tK*vEaGgzi0gJb(2RhN-2{xhymv z!OUaMjL_5A#a1gw&dz}Rm%YY!PGoeyimEIp*^&Lo+3}BxgEBcocO_=z8tLhQ?NZ3@ z%RN@X^_ItwJf8@5@Udmkwdd=IZC8Z?4}+#S=_u7El?++kXIT41Cd)sxKQ!h)xxW@2 z%u>YPkG~@htjzWo#)oK>^Gpl!Pfo*ma^A1M`bOP;diMrp3b5d5*?*B@wdL>xQUm-^TcY>MO)_qER8Du~N!9PFO^wJ(fj)>a5@G8)o~`>(`J)A(m!yfCa2wR% zU0$8u(nMD&Z<*Dg-;oB|xV$3I_q@e&LvM%&_9DT z63OpA&cizqzhJAr?NM4u2T|cz%6WCV-d#Yrp z0B#5;xSs*}&j8hp)J=ufyj^GgrFR;eeGS>Xbwxl4W2?RBhdPFBbJTDJ{p7_>FC;cN z5lkFwVfA2LhkD&Ub&0Sx{^p@Bbg??)Y=$<-AAocYo1g&EY@_c+n+L9A;;|{Xh$+p8 zG?ndLQ*Qw!oVyI?5d*pdF|wuy@|VS&`D&+SDV`DpF_r;#4B>i-q=ZFeG?l>XroRj` zlV5G}Ml72nxOqmdh|ag@m5!#X3{cl+Ap}9jJOA3(MDS|R(qmteCQ1?24nS!E?ZdGF zzR%MSNvZh%CU}cW1{)xSoCdUrV=IISl5`L3aR`7~fja^zD=1(#a|P=NWc<63_dg-n zUz(*J$*wS(&D=Hzm+POjvEOmEMarMs3{wV=y_LH+v$FQ6D+PI#_dndCae8pE@?-D2 zA&3_br$V?QYY}r_wl>SN_ZJ3ciZ4abz$$M11tKIbs79h7j|iL1%0diIMJdLeMhEAX zcw#hOQ*Rw%KeZbA8E8!T**RFO!O7SL%n$U0HLV3$BA@lZ(gxYN=(L%0y2SkbbuJWT zMgJpqS=ZZZ*If~dlgcnMkYA7H3JmSm&o&_2cUb9SAFZ^roJ)E? zk;?~=Zewa0mIe^_aY{gGI9$}`I?vys5bKw7K^k+u-yA7WYO%kjf5@Z2sqH9bJ`#n5 zm7?f4O2vE&^={qq`gjwwbxGNNBtd_CHHTxvZEyk2_FIdYz3X|I=jBcF4Hm$sSgCH$ z@9?*@(lkzfoh%1(Lp8~?*xd{2pVa)w#s_a0L&Cl@_TGXHYpL7=!G;zVQ zrCT3?rS?GAuHu(V1CWvMyybLwW9ho0QaA;stY+|&l9azp^X|K-_PTg9%}#3HjGH`|mC+I&>*%jhQbbpW!v?5s zH~iGy4|p;zs&}ON?z_bCTce2c9|w+BQcUY?3m_=TBX$H59zJZFobD?8XkNBF~z)d*#2kGSNQsuA8>&t9&dFu4#5j< zC>Kqdxt`Ovhg3(68|I#WoU7+AM)1xO$AK-mFo@C6g71rPrB|zT@Y?|rAv^%a$#qALlNOHkl{dsbzEa4xp|20q z3yj6H&#S@;VmF0C0%xO{s?PohUeb-0(+5VdpM`!3{>(|63mrQhxVN44z+>!&aXlK? zxfj|$TU8;1cbSws@ug+G-8he8|J~R03+cLk5g~K+a!Y8@PEhv&U2zF+C}QvASG%!@ zRHqzdnYBXwU+J@i$1nAJxlTKNxTIKmP|Y-DSD!x+<}&p3^6cptv-``mrMqb>YEifM zPlo@Yn5Zra`xESSNMU$@=!A`Z>@KQ~q(!NJeO2#R)G4DmC_ol9b@IHia!nbbO@T8} zxfDh-r}jkL@3(D)TJ-wREEXIjiT0o=mxR=R0B6}9P=S1)cW6-4lG9C0E2}+L1|K97 z(jhTCNAMkHivS1oVd!}5n_!O?|KJ_w>6^&p<#~MQqSel3dsG0#pLQnBew!N-ISKTA zqEPj`Doj#ZWvOTJk#2u4e7~g(g?XjJAF^6_^~6%|KD)0Brkb}-D*8f52iU9#fZhz_ z6!9kHX{6*89(Y*f2nCy~e@agdWGyv`{S(eJipp>ob<1(5O9{yAefG!mFhN$_@Zn0` znZ@&OSPr~awhS`vHR#X7V&}6$B@_Empl^`e*C%b-RZn)rIs03$jtTJdZJ!ugm|L{t z8jefv&0omK`nw~Bp|2$`Jv^Xm(#*t&@#%k=v=;ikUorbE!GlPZ%yPgwZ!?`K;D(Wx z`Yp?lQlWc4lXy%Wad|eaR{Y~FjL@{S2Gc(FmTC;DmBZ7E39)~7|I5cQZjH<+7Gz8BF!;?VR|<}RnP%=EAUxlCFH`h)SBwDjo98_s zK}SSHREwd2KmHiB-1^vaB&HQkT3^)z#%githCNs;m_aJt??G01GeANh{`yZ zbhmE81WvY1zAbPIq!dEC)sWH#?MUI?^uNzGfAh|NA44+ozdWCPjj1q0(Uz9i5QDgR z3MJ8ShA?ErU9QuQoLkIZZG;a^UJ=S2e~*mRg#x< zy2D$nqE$p>yHwMKsjDD;MAfN3()A+yFpayIXIJal@ssyiLhvz$R=b>h*WPS)4xu~) zdibA`d}Vpk2bm7wWsG+j>9)b~<~ON37QL>izQSq25^4jh=~quhlCNU!GYZ9d#!p{P zyv2<0qFuibfkt|qQ^j#)DC*U1=3!5y2i>0hjwX&$L*9->-FgZO(jY$Yp7{e=8)UjF zZfxRkjjO-#eXnnaHix*uvqX@M)K({<#nY&mImOO1V8>UGh~#b*VQ+MQCRhF-O-;FI zjR`^yNQQ-PxF)*$&n#p}alESW@brFpKTYP@i#O(^%)BZUu!S|l5Q9FC^4UndcQxa~ zNDDm;v);mQIp6uH{MAL|fi?NIZRPvj6=v>StkI-t`>iV&4-~?W z5X1*ydlX$2Ih6uyewCb0Pt^c#5QT_BfcBzzCrSVTe|Lh;MI=#L!~cq65+L71j5;!c zJ8z004*zZ;U*|1V0_vyQ1S0#7DgCh{l*={oOlIyTGqEaO+cTxG#>gKh=zcL|jp#+j zl7QWQ6~yUT*n1Yii)RMKAbfjr6SrIYZT1~(B>g`1mNsm$rBvo#5Q%WJbN~39wYplY zR6#}To`=kmS%xZ25JSu2($5+qtVYzJw0C9%%Lq?gO=Pe~I%Xl#;^@WL;Dvvzzj`(= zB;IRhdF59%DQPqttyx{yJRPm7Xq{aWUY42nJ}0WSHY#wocKG7AN52qBNOx`jeMy{QM82Uoz5qfB+$Lt)(5BzXTRDvw?!b2e(l{>DpE&ti!TcwBf|R@ zBsB5@BCMZV*-L#yO>p^Jtqr$q_!1+Nc&m!BXVu6lWIee}!*rPNmm_MlBC&X~Q5>&( zZz-atB5r1vid-UYn=3C+riCd;;sYv58#7En^GwVxMK^tmA!9;-e?5dr?^X4;=l6a= z1KpkL?nhpTobecVxeV)!ojfB?QqLC3%;R{2N-oHbA7Z#+Z?a(Z=$KVO+dl%ot+rP% z%XS3Ct%=e1h_u=Yf_=RVfr^q_pXUc{TLc$c5xaSP|XD(>r85+AG?#n%=cvbVh`JGn2;}aY-nq6?b#0Qq&|{- zr=W_eGe2Y2QS72y$EQe%Q~S1X_tctk(|Vaw9p%$cPh}$lt0$IlK1>-F7ol!8n8%)o z5(d-0&iiuj_Y2g6IyHD(^|G=CnAAxZMj2*&Gzyh6p+8;YTii0HU(6p!i?JwM5%OZTyyD&N?p>FWer6wAl2z8Rmw%?pq!?P>ltdYMx^#WEbRs_4l=Da zIzE%Dd%7C6DHm>yN(~wE(K7LV^Z_RQ5@);k+kHK%VYb4+sf^#kcgn)QYb=5lyumF8 z*2R*N^WtYzFW{F+tE8*8ufh?9kmDdy(>Gn23Wi~q9u-x6@qtUnZb>x4K@5!NQ3qcx ziYh(MT&cD*Wed8enC(+G;J+iP=9ctoJ;#Vk;x)Oo#`6|e&9}S5};Ij zdRX}kdssGvNNl^6H6#0INBJm&(P(z6uzc9_4w|{C1>085v>;#@45rAbp*$^Bo0lRo-NrQH_`m@NnfyO{CpdOv(Xt`rF%xQvdz7?$39{)e zc9wL1xAU7tSv;qo9TU&QWgjKM=lSm1@9-4!ER}cyx}*D|a>nZbJnVl}suWBn?GYaS zqf%~=lPQ7;(D9mhvpz1<2HnsLepZ!q?makmB$w?TAe>-^yD+0#ySbE2m?NoR57ma? z1b^yi?~8YWxu8X#Hr%KbeFO(LZ*^N%Q9FZ?LjPg(_3&3L7P^JjVanHdW8uxaJiJ6q!Kvl)p0$) z|GgBaddq_}mp#R>i|MrBIffRqJI^8anh&??#k=|a{DS=!iqp3n;5_a}^BaAA*#>p1 zGu_@HOHciY8|kY4B%ag<^SxMvWY~qrx62(5rr{9wd~`sr3eU#YWSa4cM5x}kbT&Rpx5%JG_UfDh2k@tWOXpM3eTj1h@#zRjI7?=r8M&(*nmI#*PV=$^m59Ed^F zQjOe~NZ97Qr^0Me+)a@=D(p$FkTi~+&R}{m#TPi!YIf=&Uul{c+ z5)%PUd(~KOAAt!)I8`gWueX_!I4174v~pqY*7iw}_KKze3kE7~q3)Mk&0ukhFSqt` z?BR*MAilR((#@OH5C$XP&8c#@t=eB>pnc*0CT`9lv8N?=6TUl5YXWFw5=#N|W z3P;e>Ei$Q2{#I9&*6XnKZ~9OY{`5C`QX0+P&8P#ipE`VYCD44T^*HSTvjvEPJYP z+2KL6)*zF84pibiBKqL@{Prxt4M&?16W9>gs~m6|z@L%yP`LXYVJkX z&`foFf_X`=4%;<^_A2x4F0HS#@>2>j%^fVOeb=GUVG+{Kc1V#n{VH(H+grVZ+&+>q zt1NkL_p8alVO((fS49%Q9eUq@dTGaoPTP_Zn1)}`Tki<9S!kevRX<*3glF+bqj1zgm3e51O_iUKrupe^UHA|d^99T0?lXxo+bY3L|V7g)n#vZ42)~>2Aoo* z%J z>~e(U4w5)F+C{vi-#o**3;LbkovrF)d%qBCL5hqMm`0jPJN%J2+^ccPg7dUUy}Vv; zy&!mI(R51h3TFVKQ}xO6HbV=qg6J_yuE8g;*@0FpNnB|VFBh|MD1BX=Lhma@%h`Oi zA43@Ow9pkt^ZKQ+5%-cB-bI8^p4OhPuxpj(m_NH|)+e|Xg~rO_ip2#c9r_&Bo!1Ad zr`X%{&nP6i*dzTW zkK^=J0P-oMrQk0PqN{M#>kBLVyR_;>#mS6{sQyXgU^dklw#B_~qmVBZt|N1(yeBpK zh@cMr_TavFUmAph z{rT8bCKq`To6bk7k@W$aARoZ7+IGu@G0+%#35NH>o`U;n`DsFuS$$A;6gvTV;Ah{d zZaW4G~F(N?0> z!6XL8d}fl){&8FVMaFy9uT~QAW1J1FxW2&6C5Z>C+Pm1-V$-OIu{?3>G<-r~G(wQ{ z>~<Lh-Ldva$FXi&Z?!i2BlV`nAGOLAnjT&`DV0G& zS_m0&i<==W<(;1g+ZQyl&XEtInfqwb;-#H?==rotR=)b%6d9>2n?{rPp?%I}O`6v? zwtwu3T8BG$W~it#4QfOS*~U#Jxw6!+&?`h)Aok+s2Be%U51Sp|&Okl}y~tx&O;3y! zyV7*0bS*j7t7gL?Q0eBlk~s^;HzvFJ^a#gASx96l-6tvPdmBagQAU_d$KEP9mUKPp%| z$I+U|o0l4&AhDAE@%2F9HBj+RsWw+VwxP@+F@itjI5Y0>b zN*_6wGpJjwRQV;a4K0q#V)xchZr$bqYfv9#YnN{GcJF@VWy$z5gnpcrgT77jX2C?B zvg{C$vc4^-oO8WEPfXTx%Q@ssvk})a$zrY&D1;FW+b&R?T za}cb)bq{?QrZDuJi-x4*$k4J(MgZnjH+Pe==D%XH#0k-EaUFXFba{OLhwHy}YkIK= z8$kOKhERJbe3>sH`JY8*AxQvnM^lTUPJ!ny-s_>1ne|hW;yN}L5g7RYljvEKMgBvx zdeB5=@VopbM&6Fr&QM>wc~GFak%r4XeqYeNR-HFf^86G=jJ_kv3gLPo@B{z>APudo%F``(^poKUjGdTmZqDF-I9fhlmy0RL!)BZ>_*n2=`*EM zJ3XoW#EUF@KZ#*bUd#REzu1W6xVi8C)Mzz|3($%zz5qKO%$ld@zQ2{DvcEnlE-AaH zhX}NpFl`#Z4{-s4Ce-pM zPcs8eL!I?-Y2G`VthG8!cNKgC|G;*h_&H<*KZ1~HfUkD`zYvc3z00K(kCk&nTLi<4 z3A_!}uRPh#ay~vW!{{SJPFbOMFfWMANc+X-FYTM17BvOQk_lCvfdNr6A#*L9>xfQ@ zntar+OaaIj4L{P%4<|+{Kpy)<6o8*DkCCXfTMq?yK_?Ox1=K2cGrT!AU+iPpWHUqG zm?rr6n{;3OK`A^}n@xEF6_@<+-?D{%S9mpJB0P@?StadT+%G6%j^sE+&Dp}Mx1ml| z4K%9d3~B0k8;)A3y2MO8QQ;bFgCrdXaDmzoC#36YvYey~rFVWB&d1Ul%V&Zr%*{DINO2Mvbg))G2*LhY?(! zBKUgSzZ|}-0sBt!b+s6T7f`cdud;FyE&Qu?r~KrmL1up<`yqS@;h>xGN>Bf%4nScG z4YIHWe&6g0^&V^ZJtJBzQZ*P#v%#-eoc*5kppF*nr@sxhR5%&;dbCVrFjC2E7a!cH zqK%VJ_FHPS^KbBZXc<7eEQIqW3H$E-y5d3yOA>65QE5V9x^`n~5u_%)#o%olKiITIA!Gmiwz z*C*%pD%OoU2hrFfT)*ks7K8F4Q<$toCSj2=$v=?$1#Ipl4|L7RT%zx(SLGon1Lx^1 zyYNg%k{sm|Bu#Q7=mksr`)`+3hkknl_OEk}L7z4$aD^;hagD<-9u;H&!7cC{U4#?o zRq?!8d>M?4noC`R!>-q0u zSPIJ{6fFIdZJaQ%E%q**h>vd7n}gLyC0$2wqi^9?!0u7>kDpI!fOdSXuU@khsq^X8 zdv8mqb94)@v)Z)VPCxmHa-Yy(eZ?`z=c(hKHPD+ya)i8PtvRfidSvAqRlUyLlvZGF zOC!V0s2AiJEcaE~FI1bXy5w#E%e_JIJB%0QHq$Tf-Tfl{c6sk;0sE@rY|yr`UFYR3 zo)+`1xEHrJ5NxXXO5Rod2(Pj@L$fy-CjtJYma>=)#BpGnhmGdYCyI+L(}`CV*>zb} zc*N&cH2dCa+?*#1-QF*a3|@kjzp^b}liTrnrq$ke;nKy*`UlnXW)ObdrR?5gey3EW zlUl8Pc626&b0|5pndQUvB*( zE=b3A&@ayy=_+jO^3Qj=xl|ohGIpX&C3e_XV4j{D_`3*->9F^pFq+D%HpvXVEXvd@uXS zLR1e<_1o|TH*TngxI@Jzbhch(>p6e(?O*L&ucCV`rpXH}uU}Lm!{#fwZVC8z;~(%S zA1*qxJSI7?1B$1$Lg5r^ifjPv)IP1X{!c>*x^IL!e2)(PNOoGh>=wQjhBqEW8}itt zE;4^7iru*r*%ar?56H|e=f&~j6UD!KOBKV#fj10+ba(5mI$uc}jSbUCcf~6g+|>yj ziSF;W;8GA!roGkdo8q9Fb3u5Nq70Z8-$#VIow+Fz($h^BvQ_5S$3-2zAM^)+jo@aU z@CP_GPRC?vWNnJhYa&fCt2QRc{V^5RSRsfL^5zyPp@7LGJo2-G^e0b`9wI-dvft)L zxn?8Vp8XJmz%s8ly|Mg3{CanC-jW>o> zCPp|-lxUg#RF(eK(U}}vKX%IDhl7c^K1D33zjXJxkWFLb4_k(+ngNcDC+aqaKD%G| z=ht>@5kyxFasiaKdqp<&XVg`s~5(LbU9QEdbs$0-aDx* zd@?~PG_(1>w+Bfz>KvDnN1Bpt_1SErAJzcZjqscM*?ISzK1M};+={o2#mjCyjHJg( zPjoeXEpH3ICQG#UxGt0+vY`MJKBrW+gOXUML;Kc00!yWX2MeF8V|}|MEZBR8Zp2rx z^KL4(Qpv8<(k|U5i{m+BCRp@^_%}Ad$@$qGjjJ7ecI@91auiAyqls6DCugvy<5C9O zpq={bx_6ad?gBgbCUzIgtLtv8#elrR(7gn-COWrS7U)!o5q;Zgwp6`h#(j1mSAIfx z596hN#_CmMBap?H_F6zK5$JE7Y7-y0y$_xlLd%joCk65Hpy4sti9=+=7AsHp{;4`Z z0WgWAM-)#3Z;;(QF+m<)Ne6xZMo!&-_6+NfDYNJROE7wuV&&9a6l_ixB6~ig44jm| z4z$~ZkHr&Cqc~)0*fXr?3yI}{(HDC9TxXK+DxT09eR>K{t|IO68(pElqX%JOn~`dD zYCOHB5a@%7%Cl{mN-|QxIkdj1S^P|8Ha?<)_}C%2Xuo`mB%MP_U{f^}RxVZVXY+qB z>X^lB^P8eph*QV-yCt)yQyRtgF|1P-95FUi+K);8MTb*zcCE216x+%hd$;P*JJC~HRvdaD{70L7CKgBIdF5_dYdJ&YlR!Yt^ z$B>JaO=7NSruU^~m!3_{!va%SS;*MR8Mch-t!tNFDc|NFci%iQgH$oSlDD%rG%`q) z-t%hoWMyOTH|KdOyz5ryuIL88Ko*_%oVf-l#U3I?pnoq`he`hGfBbAzb>-Uf$xd)t zZx);Qg#Hn4+nqS4+=QHKbZ(QpRN_h+>tD((c&tUij3WT(wY6+n@aTmskSq$5J1EhB`7D*2kC8K@Z&e+%7ieyZ+Z!r8Yoh z9%jzWy7kv~ppt_#;P>~o*LzX<^4AFAan+BzgQZB;U#Z#_;Zv7uoWkN-QXed3`^NTB zl!8&qT0!VIgLYQVFFqsP66)A1W~hTm=-|(Stk!_ewA?;!wDJNITI?Or;<8<3fW)sAq_Bc)Ibnw1}_$AHGZsUO$y{P%FuZ6>?bjGD8h112&N8e zBMSU}>nF?d;$JE+(m*))HSUO7|IY3s+C?^CAE=%4PbpH0bZ6+}kb{Ir`F5^}k$-9M zwsGN5z%jM|#?DPB!fA>nBJzfHIEuMZ$&Cr;eOBcU%BN@M5_Q88b^`RZ{^U{Owq#2C0Y=-|Lip1@)5DaAs27-~{*_WY}GMYEqD^uG5{vlGi4Rl@MPWFdJ( zS+>gW6_wnqch=>&HpirfD&g_ZTj{spL)T3cA^N&NqpP~yl~t~fL+-=&pY}K-TmjYy z*HQ8D{71KtA z{2(%K?h|N&!Fqn23wz0pHkiA7NMgYu3c(CJcak99lqpk+crpwMDFctD7c9K3NvU(I zix?u-KTCX{!hb$0{!Pi1h==81DmPtaUmZjro8ZR=apx`xlnaElIFZo#R}c{PCh;lMwc%PyaWf5%WFsWTn$;x4v~BXX@CO!83O~hf8ibuWPR$AyL73 z_ZbA!ae%WQjm!||SyPE}nC>nfK+>W-M%I`BX64v!`_5w5aRatI+lN&F_WWH3xCJOP@S@&qYr=XqXUn!aJdYp9PlmE3xJ>DtznhBvtE5c##RQqGdA9$ zT=IsdF<@LI&iVq0d$$7#0W6~smSFtEiualvMm#~#wd?)GSZq!Yb^6bA)^tAtjzWgC zz7%u3gS-=JnEY$g!EdLp)&##lp1(lZ)M?GIKzb>ft=F}aXchUS`gF8YRX;{bAgAzk zJQ*&Uvn!8Qycw4`=DvO1O_H@FX$&%(xTR1Yz~7vLHN@2(pOp?9lhRrwC%YcM^;rqLF4f;%D!qwz<4$U~aGV5%3hfVcEdoN+S!s7-+;Jwdl7O z3ef{dvE%Q%{R`{O2p&H7Z9~t z(eIL$CF-OChoP2f_%*H#78!1mq{Ys#DN2t#5a2&ktEJ3Drw7baXXrIEVIth=^bwi8 z$6Io>jae;tX$7VfF&2r=DTKo3bm&$_bU(~peOJ1gJ#DL$! z*$%trJxlyUxmkN8{}>7WsW=e-GW64VQ91O?rQ&334>oC6^(Q*FG-}^{YH{v)AF*S- zf8mw*7xA~EVPvBchB&3CO{#QZUOpo9sdx9C_!*YnA=mX-NoKbku8w}`N1s;vAy32# zqr2}fz>eCNT13Jav;24Uqi2;^aZq8rsz#T&cBH$~SEgM#yUbtP`!I8Tok3KSfbT?kKAIa)3ocFwe1Me@wzEvw%WkU`2GOMGMeuSEw zQld?$?~O5eTcI%bprbb~DQ&q9seYs1=98M2x$bpQnR|1;ZGD$e+zss$o%#}osHUqH zCF7iJSoyF=sy8ZL=BZ5;^9-R4`eK7v@kSZSTTrRCkPWV%R??9cQA4xT8KSddWz*E1 zvtelo5vo(HnWk+fle$H8aJ;Oj+C83;sFQ1B8YMP20vSQ&UuDK?zHyxfz3xoyw1ud7 zrkRK8_>N8^S0}#7_DowE!S?iu({~8f9Gz6DL7w>fdugqH2-C2@a5vWt8nW}|CgwH7 z@3T%QbU>m$2eFlriQ5$q!fL7aG@T&c!f<5Nn)sJVw6P3WaZ@XsS%DVd+VYv) zL->`R!^F?ZcRmJ=A{MBI5F*{Or_awvOJIyc0`gq}zZE^!nK%7wVjG)G@`cZh-_9#G zd*GE05LIUav)`>1R%=Hb_AQm1*NFkfS+^dniT#qjTp=}L<8Kh!GUkn%)4zo{LnSvh zx+8+?jGD8l{xa<(t2ijOUaW^>)O+y^V41^mk>TsOtVU4ZI2I^q0BIPMZRpvel0O`d zP*h^L(*dyKp)GrSMh%q&phr*65VQb(Dyg**+P>`IVWL#cGHB5*^bRfxyd0?^FhJ}0 zYN>knJoJkYu{H2tW}fzbyIsS~8kGIBGI;otx2VaU{9o*f7MM@a{DP=3dB1|9xDRGw zgQvzde3&KSCPY*2E^6nm{xOhRVmzQpAeM1EY?C~1plg7+-A6BNgL@l82rcFUR~LfF zhQ15s72Q(*Zx#TN>gXoZCU&1TQwaH@xAW+?w%pzJ*B|$kABE9vSGeomM2f3W-4{%0 zDGjdf57CbrOB=ay`An^oS2z0y@&uBPG_PRp*3oa~FEA1zlVLygT^h-B^TRqBYH2mk z+OoAA2Z}a3{u3F%{mMdc5^(0tq!RZ+frMQX^GP`iuy zaY3nT15102_1Dio9H9m1fbb0eAiwUt@}(S6?_;MZhAv@RvazK!k3Dg0-oEe718MxP z3Q|z}`wu*&4^4-I+!|(aF3$=EOOf7aiHH1h*BQ?QDWzVs@Wx-7oL5wa)L#twhrlND zP;#Bf!d=jp(kf5_(oX~M9f8%iSH2~k=r*ep5Z2@}vy>|&HA)DSBk8m7!~KG865NZz zA^kf*2Pb`Z!2a(sCtD=4Vh@_)nCsc1SVV?Mlo$V9bXk00pvGS$RFI!Rg(4~N$*Vikw{1a|Vbjew(SP*7DD;Hzy|L|jY|dw;(A2AZn2)F%bVQ3kq1*>&t45chm-1`SF-9wg; z+_H^`bGB=_Z*ie)wd4+9X6rPK6d@Ik#nbYy$VRbc z6!^XFt|(uC)kFmsGoh_o7QQV9Di!m zV2{&1t#4t0+T5$q^U51>gBc(iJhXofS*D4ff$5X)P~kruUFIgby6PWDnS_Knzc_-1 z*i)l01?QU?wyQM|O63nM!C$=EGNAB6*{KZA14Ban94bZHqJ&3;1^Ckb3 zD`q{88kjP-L)}6A!bQ1BTgndryD;#<)|E2W`LOG!=hHz#@BZGLW;&S2Dzlq+@S>Sv zj1Oo_mIor6ejN9MMMdBt`^~duATHnp*EyO3oP)%U`@-817ZEA!F2Gdg`=MUMOe@lr z(jh(O0e2`#EWVi!4}BR!oZ2WR*qtRePRfBj`qzblFOLxa9(xjJw-vzHlO#Zo2$fG; zffX!}MgJE)8egwr_Ap7~M}GMYPmK+zu8w1N^=O(4yWtqzC0+}e(uWiu)@n=H)WgV6 z-ui`AdVAtB>!!kfMD<{c>rrCp(I_ zb5K*0|F|!@BJp1CGxEV7q5THR%^&cUYI4p}8T{ z?MDq9cY)ry4Dz1)%Y(vmr~=7}aJAP?(qt@@G~!2Nb-+YcQpblG<-)L|lGmRwhWLo5 z4SVIGUq@&*YT|wP{cS11U|4bd)<)$L8SvNvJpdS)0t_hfw=<#&0!c!|lTbjIIhWC+ zJ;Z*2_f!Ewn4-v{@&5~Y)uuGP6hgf#Mf}Tyq6sWGzU(WtiQX;yB1EQneRGPNK$jpdJewGZxz=+dGahE;lX%_^z3!X zE1%nsTdHFmgP%Y?6OwoYXRDs`Rg#n~iw!8&#SHo|LAUXpL)1;+`)uZ%FI}_0Z1F4S zD3^f`7wQGi+B#-qafN4t3@)w;ng$n%rXiR5h*E$D$#8ZB`W(0WguE3Urt;|0@Qd;4 zeRFySWvI{C)G!x0MYbJ|ZU}QDqvp*So2$?Cvy!n_$t9mZP-3>&LdFQG%nE~O8WMky z@B*owiPk~wydM;|%Ltq~LRUZ9-WUW8=Y{}^b_TQ!ztC#gj*VHsUJaUCY23J5`isOf(m=Q_~jQOwj7S;B4nMnGf=*j27B*S$u6a)28S75_MMQ7aWfD31) zcH{e&5dtvRe9Y`AtW2ndy+`ft!;h5E4~jkV)hgmY9oA-iE<$JQ23fS^=F$2PrFK62 zX93bV*gXUiwbT&s;(Z`vbKnr5AnTTeyC}-=QXu{IWPj3C=j&bOz>BpPARz=s`^z^V z^);2huA3+yWLL4~mRnj{;Fr8tyi@o6lnw5JO^xVjoSN&v(rAbvUW3N`IMWz zuR#6HzhZvx0x>FMs_pq8tduSS&* z34b6nX!JByxdx*&pV_+GF=xILjeru-=ET^rUhH}$TO^_)TD7R20K@eOk9q5b(IU4Yl7Gx!GyHTOU7LK*s??Ej0Vx&yvwwGFZz za_O3N5BP$Zn*N-M*q0*oqyHHj*0Ds*LG(Z7Bkgea%sPBM=V~?h2}r)({ZXsy5Kd`Z z*5l^l0|(x%$!il9xMD+v`xa_FmUuKwLo$=Ce{T5zhGOt~t$X1*?&@j(z5BrcbNf^G z>7~Udrh|AJr>Bqp-9PlQzuom07(hdAO@egd_hP`E)$wRt&-O<-i_}(jK~-A+jcU6R zb=jgza!(^o16%H3yL1vZYk;iLu0wmuQ89h-QlnFcDec6`sJ4ZsJno}9o|gqi()zT%>m`GMOTVZ;#~uP06T_V*5-GNs^h94;$~X=pfV;R{fa?CBK0zg`@=aM*jazzPLx; zIIo)C>bxOYhj2r_&G<_$+fIh0B=>=o;>{|kSGL3lxRcsMn(7lmflmxS8K zeBp3N>5uq$omk6)*4ABzRi`e(C=gjWNF)vsB=if+0&y3Snz)j`35~9l3=G>8ND&Mw zO?0}aW^&rN72*B3LCa!GGt@ZJ=w#0%%1(H}N+sqJA$`p`Uqv5yoiPkU=0f$pUTf;d zNblwlm!E)JC5ptFUgwyX7oO|!2mjrr1Lqd0gEf+j$3cp>Eyj|Kd)Hfj<9-NYWr??) z0);fiNCO1DhF@OejA0XXRBHY-Irleladjn9T%Ss%gY6DrJS+@*w|2 z;+;|6dwkWVBzDU4rPM&Qcz{pXo;N2M+tYxK(?hrE9X2vJa@r%m-#M8;VM;+V%X{HQ z^>KNghxNzT<61BO5@;VuiD=(m1$WNL@s0e6PFBsg4^^TJURq`_=t1!l2^fCZaAC-}U zX#+U7_i9#y>x4`UiO*_KDko-s;nf?#t1%r&|3_z*Z+H7t-jvKL&K-l0j2#oHyz(U3=uJf;%XY7&gIlHrZ`F|x3LmtwS>kl}} z@Ea6NnQ5OZJ1w6px5YmOfAD9I4G+Jt&9F9j9ynxwjr%S^@Mn5M$}~G=ZIMdb?zQ0Q zx47D-7l-Y)V+?CfA(n@~{@8w)k~a{qw)mw#-Wnao~GA4N)jJ;Z1J9 z6Jf$1Fi~83k=;ci$FBe>IW!=NlcN93dewd@5B>xqS94FxLyy~hy zLK5Ey4DVhhj?!M`{LKaIZ#`?Vy_v7W*pk1UHbTx6!gh+JQ9c~=9;End04K^!s|@~8 zadR}-i!_*s#^rjApCK@|S8&uN<{`es!W>bcVlO-Dlxw2*qS{#a8;f2HBcAI=jxRN` z8uY+-WO7stgEv&6C(Pi##ghADQ{p(0riGI@=%CKwE{}5UMa@M4eEjL>-03kPymhz9 zIrjz;V)7gq6apITB2R-iX#&7OHMP-iuGA){ zD z?a$zB-*)6|)vFZ^6>R5+7T4d*(ozF2kuWrg|8@f$ST5yCXC3##aJEuyEPIr*fvoBQ zjfHXGL+)!{w~jt5;F%|&6cBU)LSi}b^xBhY&PD&b^oAcKN?1ES@$AQC=2e2L4NQYR zg%QZap{Ddy8GDy9nm6n^@&6h=pT*$q)s7P%5bVTA&71S9GWlsai z=c&o~MqnqBcwb{{vV}NV3eDPlrWHX1fAuoHLa|n41UBE5QlIVT)D<`fJ*5tw-Y^LO zJ9gRIe_B|dA^ZX^iWkrSTz~{#G#>y8{1oss7ei9_*tir*go#O@6tORMv^-~H*Cgz1 zNB`cWS&PMud}LD7BOvke?)FSmjpv>LD=0tVTvsTJRU`AYk-_WiMXG9utR)+PmOnq6 zMS_j(g*-MUOZ0)wa6Vl(R%z1Q@&=d&RTFgsV|qby=!n$teBd1n0v;nxWO#8WGf}4N z6_f9Wc}+m@lzBz-OS-k@&9dEFU^1~r;+i0w!}A)7MUuo)ZUG{WF?~}bN)o?d8Zm`f zqJ@@JQ$qS-_W3Gf0k>rQxXo=^ntZL}7a8YKSm;BP0GCJyT4c9tK3y@td)2Wh*t#mH z(|<#G?$#WC!E3|QRQ69!rlOWU@qvV{&do1R)2vFK6m)H*!K42tHl6PbSN)*TkhQ$K zF$^8ityZ_OV%QlDlw7uXT=nVthWbC-*_dwrZ8EYVkfvp0o~Fg8ppDJyvt@6bj`S$4 zplhKX*CJaQ1sUXUsb0DN@u%ildqt8sXy@>sAi}?+q&92)J+4*3(%O|4_E$oMbG+8=@nnsnyKTsM`K$Gm&H+> z99P*D32DA>*t{ zd)ijrH(9cHe(w!67Z6U*&lik)`&&5edP_qs&V&V~`SMe8J9$p)mh;om6$a!WT(1nTC$D~KP6oRS2qhuys%^_&0jfREl{iHjB zVbDX7Hvf#LN3})QN&OvW64!9F=Z8S!TFUp4a_4^Xb4fvi@aYh~VLGNWf^;D!t-_|x z3I{)-mE_Jf!2g86(G`^}=-1PezGDKqR8+cFEYG3O6VuhpT4nBLC-lzbTRV07%5WK{ z*pJT0sgVaX^jU$;&Z*VK@9_?CO{PUCs$ zCNa{fvEekq-|td3cB!&C52umey0?riy7&T=P`}+A4&W;P{KOdJAeEb)>(9l7)a# z>V5GEXrvaShyzPmR+MOdm+DPC3^2djheLd|&@9THl5%6aJr&Y>7)jbIG?$A=Pp1>6VP3Sp8RvM`FzQ` z_?DQgnr&69k5SfqW*mFZ$^0o>|JLkx7lS)*V&Ai>l>6!NH78ryRPD9fc{#>9Hb5e; zpQseowwjh-uur!m_U`|ec%ZNpM|aYl5Ry*=NmdAy3T#M~No3@pGrBH4k@P~b(K%Gc z1oj?68mwJ3t-oF;jF8^(z3uO<#a?M+YS~{w@(!PGIcwz>Rs&@e7*WD$b;_vayUiY}exs>eB~7N@TOrYVUEW zD#fHwc6~n6vlU+uBOXm3`8o%Dh|gsi>gz+$VeS510$CPo40&@Dx9vM=JogghY9H&z zuOXbX@5}r`l16_JYOZFjS3B&V=_i_~AgKlBjZ0;;{m zNe5g{HNSA1spI)T%fGeOw09dhgX4OHAG3oK{zGc?#l!Q?A36#VSuY5vdA3^{WQu}W zL0K0Zci=nyE3kU3(+?FO@r|izVbEw|uk)wxX+eDbv4_Q9U>w24Vq1XM>sa4cCZ&Tt zZnWBa@g!~)FMcjzusLcNK6}y&zXgooD1+n?9k&Rh6{n<xVvjeo%4BHn1`KGY~N+W6m?O@QKTzzi9drjrc8zssz=XrRBHnPur_R zMXx(Ti$++}EK2tuznFT!$#da2Me;n(bW_hooO3BaM#iY_%|HJof^h|)o1D9Tm!U@y z?l$V!IKe#$m|v@9us_*J77QBZxj-eWbl-5lQ`&Yr#)(KldC81!KPefmEgPm`2g81 zxtDqIt_J+U-EZJmaLCb1cg?!y8Q$Y}(FPUQic>J3#bq@ehTmW8%I78Q&Kx-8`tz`WBuKgE-Jp2E+UqhDb$4=_%Roxo~%$kE@XX_Kvv_)6YA9LiZ9^ z=f!`WY4!&{Q1fhO5S2YNVKbYpt4tMZbts_|eKeKvc3)D$i)CO8Wm@v1+;KTkVoUfxf+A3l@%#Fq%+ayOp6k|@3F zBg;oyoPY@WXFM54{3GcDw_C3wu0tE2boCyJ-?h7sv%RMv!NkF}?_UTM*r%3pDSsE) zxXh&#(9KQSo_V{5;)iBl{pE*m3<8{mrGpM{0m2wI^2y^l*6`eJ`>>0CY*^{RJ<(_b zOOZuOZ(n2_arVoLzBwq)_`}%c(0YRB6KSqDE&)OLOR1BE2L3@5mPVv4uwxta*+&sv z)(h`>7=bN%FV39a3NO>{8|^7$u-5s1ub*cE93DS4?WW!$fM4HkN3@Z#Tli0VK6Szu zo>g*%Q(>!jg%K}a4wm+Eh^15n<2M37qH0dUkZs}%p0(F+;L94+v0?duzFBnc1Se5C z{Vb;$YzwDlkBIQ2w+H?iQWBxBJumrA8O{c-nwdNuzB5GOtjT}n*4qdVa`rfjTO8Ma zPo#A{*GFvpb8((!_aA%(LEP*35x=wHQXgNBi8~3m;GBske=haBUV@$P;sfd%H*eM6 z95R|7GCk@CPvCK{4_Z!I%8GBj6+9>jI+^?3gVlVfp|Se&bid`XaVmu(MSl07uz~Ah z4E-to`YGWP_WCHqJA(M3r4H%4ctxo(m+j#=T)qwyZQAwq`WARMm0&W6eelc7uB6kY z{uug}2LIU0ABXr6SkKB$?-)R<&HTaFJ!sEe;3s%QoJ1SIks-v@`G4U?~X>nJ9E@K8mwKGOH~ zqp@+BL9d?hCr45%WFKaq>06-Ia@i@UMSRcD-haU$a0^q2nvb@@+s4f(b;HDsgovF> zC7*bj-xSzZ-C2|Pwt*}ca#VGi>_)yCPG`IkWrX>SF|(n`U0B23Tbiu0X9ozE-GAMA z3P+-sD62DK=<<7f@#~MNvpCcvs53uj2)FvvNgVUor03|>368ir zV`z3rwPox&+1dV4(t^CJ7UOEYm%2!Cm19zom~QEzdq|&SGSN+Req-=Rg<5hL7Dzvc zS6i*>ZzmGUheF_mMlurb9Eu1yC9_1h#5K zW%$V{yY2+xEeZ%#@nErm31~4ze18PV&^by2m)XRJ~VoUtXjpWLbu0m9r(JJkyt_ z8)F{hIh+B6Jk|rJ)j#B$8w5 z6N`}EgWvml$d-$-Qit?tCUkq5lV>ta*O~8P>7gd!{{KGc-jA2rg3;3H;_r-stPDADVjZFq6zu`lpi{B2S}~oSx~v<+h||PV-Y{RX zM(lJ5*` z^tq*%fM-~Sjon?}M^{(DV^6seXW;C0>Q4{&n3j4u>gY4{&@^#mD5)lrD4u*u?7*P` z8RGqixRW!4EASocSOoqO{}TU!=P%xC_HHB(5QN{r2(AJl_)pw8yi|9tGDvJ`0+(eK zjpu-Pe^~5+t1*yn?Qf+F+dV+^O7H40^TC(vPr{e|gQ45b|3aGxO<)-k+!!Ac6q^qU zY32-CcUEF|qqxme9)RoaoXS>A7#bDQQfmG3x=~H`G-X9CbBZqObg1?h{i*`-u8QB8 zKe$DJf1Wr`Hl&pc&$s_!qJMd84>>61PbT?%MDyH>3v4_t>ee3l#{mkni5&*w9hELe zn5c4(f@*g^ZL<>8!m$zlO94vteyykn>4s%U_2T!=?{1&An}>^43uk!`XB}uimuXHj zz9J!{8wc9Nf&KB1{up~*agr^Q0TbWUQO0)iEk*7M2tobN0ym)upg zv;Pu%V?X*0{}~tug?vYD68I%uk2~&ynt9W~|BPKL6JKAGp4ER6&Su<(E3p>9IMq@I zpCWcV{f;`0O9_sZR}SgJiOdZOp-3?JZa4HE{tM#Q#sm*A`|Dvt5I(yTf_ogVgY}&O z6+)TU95P>kakv2OFFb%u&Jl5!o#`O?9p}B>KEAmRufC!XX>2ROcXsTqZ}6=_?-P%) znT&EM$KWq|=ig^gh*vGwrT$>U{wI{K_lD>*M+;k?|L z4YDp1mw7I)vg^8!x{HMw;R1+(v48*GT}}El&v}K8FPT(y<_Yiwk`@`J#mp0gUrfrO zgf(cukxc;J1;}R_?BnTKn!CF(%z>W!R|%yKQR~IjE7KI;_)bX`qK5X=Mowd!EQY3Y z9WRy+`QT3$o}D3%P&`=J-|+&aN8bi5gFTqPSi9lbv_#zl#s7V7xh9>=1^PP9ad||D zPO858A$UdZ5cOjfw_o>GGO>G~m{1&#eQFMZRgR@x{OU14S_{H*=%$E{#7 z0`q*B>*5uQHr|!yb~cvzCSPkVNqRXBU!F^42LjlU&zlG(H9p%?36Oo89@sctfJ1Y| z1R%dNEVf$fU7GjRVF{U47T4pC+wRB^$)f%W={8TdbQ~${l*i!z1d#wTh9`6Gk2ms+!B7zcD$x{iKyqk zoypC3@sytM2IAZ7N=F?lA3LBKJ827iwqHpmYM!BMqSBYtG@qJ*W+q7kOZEuAq;Wj< zF2;^vVUxBw_6NpN*uu<9IUj$7YA)5{iY(Rj3t{6G}WXP;(-I`n7V{K&4hZ>Z{0 z-0{xyXELh-0fIwp4Qv|xRef{s%pYHA;1>M?{0Af}qlv86KTnYF4C~b3=WjWt5KcO7 zzk5Kh*?C%(KZr~-PI|ru?lg;_OxIUE{-9uuX45^I+YXuKe&FaD$P9amB6yx4=Rg5v z(vPuD3QfH{yEMZP@8AzFJ`T z(d9mvABu9K(y|OV(XI#g-n5({f^>HQ_S|z!@-wZb1WkWrKOCOl4Y5`~}>8{B4D@A2;ANj^%JjYx@@kaxW=q)*z?{71demCq_0?%xmO8B@a4IMA8Kr9YA4h^9b1FrGZ^dE z*oP95)H3tlV>rP2nrSwrdlYj6zme`PR{1#CpAg%#*M^=|q<<-BfGK!B?wdr&2O~i( zz^xzEOmu8$fOYbxIVx!tbd8UoC*mzVgN z?^*RDurBm{#np0k?y9vgz?i_cuv7#JanGKtU&S)P@}cnU1+>VjlYZBFKWSWC<;6heRAv{ z+$zXNbbygw%6!<9`H7^^`ser^;v}Ks47MXj;t3f4coHN8oS$qQR49Yn2cD~@I|LF& zJUMkj04HbkP|$pfxRoMh@N~`(ot+VYOCpD;?W^%xx7{9$&U{cO^+P{}o=y?baH(a~g}d=O_lY!B<8q1jNhnqq z1retlbNsRHiP1K1j*ZOjSN`V;zP~AlPq`AzEngE8!MxM)YYB@|yF|LJ{VF0MK@Q9eldE=DUbhaU6E>{oYC)*7XYruUVuDEwpc2G`5j_fCnqNb?5g6mf^g z*+ERl@av)5u#a_S!N0!ZhT4*A&4G7b>9d`War8UYbVoDSaw=6oTGV{v-;dwZa0|B= z)Q>fzRK*!H#=Mq*r`Igs7)16mb*HNCtua|k#@9WiY{9-TGP&7A`%~ra_Ig6}8T!R= z;+VYY=OsQv_6Al}w!l|pTOuKGN0fx&zI{qUGjS0*WDI?2R8d4UzaS~f0(K%p>&iZ+`n-O5#dg za<9Qnj#v*P8q>S$GP(?6$6zR7sqc!)$I~H11hJ|b^d-T$>-M()5lB)|+08pWk^d?c zwf2KYbL|iVk&=(E(^gEnKLGy`dkXu%lyaLoggCqg`R}9YHBq9ObDGREM1GW}?Wj#h z>G9hrX^zf7s%&Pic=TyJ?2_5p&NZ`A-$GT7Qbe#~=u@hhy#=>gMn7G}z{l&yyXQ0_ z;?p^>yVq8+WU()Y}Z0Y$Rz!h%DCMyt{W=u`Eb_N?(8m} z_ve{(a|~$3ITXq>>FeHu^^D{I>>3APR_P{4aequ(5Ux)D~A}^it|EHNZ>=skaP&VA-Ur$NwFir z6uhS&-OdKZ!I?6+r$qDm@YKv3*&zp@2$tkq1`Z3ujW7Tx_WpC_>*UBTijrg z<|Ri-qE2qo-**st%LlMNn41&6PvMpI#>0;H2c~sMOMOXH|F5S9^bVH`$B|vphNR7c zQ*rSGMyFa}q2>>pI5z(=7^$jN3x=J-ohgEPZapahwtq*mcuVLE+tgvBGNxgNU);g= z@_&wH%Zrrj1DYP7`QdwvQyBeskE)LZvsSjK$0@gd`uU2p?3AB$$T}9eClTBthb-FN zQHfY3_ixF>3VRs|{yPXP!uyw*-e#FJNYkB)iX)iFg}AUHt_o4FrHFU3$rjXLpQ0c; z6~;yZj89|giGG1ZG55ayHQ^n|am;ZAi);ks_Arn40bmcuDH8wO>a79QMT}m*z?(6K zTy-O-2=;lAd8ZP2dxqq37ZoWVBbLF6{&BTDhLj#_*2xf%X#cZ5O|5?@?5lWS`TJUm z=PjZSi9%MOAl)qdaC+))Qqa7{?_fUhNFFCE6HArA6pz(aWKK!K0qh^3q`7l|R0chA zkfP1t#(&|29YrDjDiQBwYw?)R$|wpw0!C9(nr?vS#-ZzlxNf-=SA7(jbF4P z^jw8<<-Y}j4-605(hC+>Wk>U>J7eup5RV>MHXKM!3e6oghqQoBPJ>x7HxLBLp}36ZRG&pbX4UL9D1*q_EijvY{9T*%-ma5k_uRJhZiIsyPwTS0XHe>; zi%CR5k83Mw8riPQjHs|dUP4JZX>ut4N5E@AkLPA7Z@=0VS|yf<`cAC8Y{@-ly9*<& zMJf5#`-?5-RXLv>-v{DBVh*~QXehS>k1zVr7t)e09V=<_L7pqyhn)a*`E%vYH0=T$ z$M$f|dTd zk@h7yogX=Cw2Oa;w<*Z0*MEE?{8H=6eg~+XS$^%EHLq&Dk9{#NvGYdv%U%_RoEzn5 z(7>oPXsv^z>XVNLF`2E}QPs3+Yn6t7rSx)*+`yC~kIc4bEa3|2Z1@E-kOH~?Y>GH+ zy0?j4{PZVp1_I5%Y2co6v7r$E&Lz z%)Izv|D%CRP`1Cno(JcwY|jaG?`qLjnqx1@n>`KcNpf68ZShS=Ot~tycAhGR)&u7# z+oygU4Yw0gH5IaVw>rXR+Ebt(O+Pn7LEQUaO!1%c$el5Rd;%Arj1DX^PiIDx_sjp{ zrTf+78;_X3L#OiDeoDMtE|&hadt{Zn;DFn+{V?x^t%r_f#1ztDgk^-d-G^BBp54h& z*M3qWQd?8nTYO;csKIX?dEcsayb%SsQo-IUrFyK({Dzvly9@Td7Z|IhXd;HuB`^m& zNL}^$>^Q>W@gH-dVw|*jcY-@CXroFtcwB=nJX0BIPUEb@qgOH{3*%Rw3##Quzl~w7v;guo` zfhB0mH(l5oqG0wc-BixfPeU+s91{A`oVp^#R(kBErCG3K;z-aFT}!dSEk(0IPJV?OS z978Hu7oE;1(Fq1>8rOGZ!QEp>Fpqd9j`aAp`~G}Ae~9O5+o!Z46eOOOT)jXU#MIu3 z%N^vBBGvvW|3BRau`IiQStGc006*l13g#l}A0?=QetS8Mv42a_c8jW!176x*LgKKf z+lA2Czy(_1qd%Xwxjb)u@1i7qch5uuGDTV z=Zfijh=OU((1*A-%3nr8B}p6~#aiy*n<|SXjDrYG)(&}L5uv~X z2b9t8lple`Maxu~PZ}nMpsod_AIAD^TnxKnl<*M3aJ?9JWob~^+dHWv_+gf4lDcVj zHUlndaGRN%kRkvVa&>0@gRNA+`VR&KQz?DRdIW5E8(ajE!gm&z8E)qILOg4w@Ny!B zKfyQON5~;mYeLW?HW<32svGi>0p-^zkd>qrGTb^UJ=9>OUUCejI;9jZ=$#Q9P_LID zrui3KA(9?76#wZ9gHeg4i=Cvrj!ER-Z>$0vBIs7}Xi@LXH?364j9yL!`OejTIvs!=&>AZ->c zuHTM)MPn&V3|M^lVg;jl7zdS*i;a$VG5FYqEi+1bSZvQXxrKoWJk6~29zS`0L_w?Z z3-MW8Yl|0^hFIwYcXrChV?Aws{;~Y=3ocNZI>4b02agVIeTQMb!;U0Gejnw#{=2%5 zj+H!}+cug5?^t%BK5$Ql`)N${tHjaExR)AxYqQ6bzurN+_OO(>d$!E8WlM2{MV1xQ zcW~ETcksuo5zT`nC^p?YX;P z(}UuDSzp6#S|l0ycq#iej*}BgM{^zLFp&S2wO@7qQ*Q&%kx_9Y2*v-v7`>EdI73ITw62kJAff%TlOd-7OOcy%PO?q z`Ao~6kZWd_`{&XZhTiw1l`_5p1ccYLs-^>Gh9ME2)f-#Q`Rx*7OSf2RIJbpoy6Zwm z$0c%L`+ghhS*pzhQEXmj2dRA~2w-z{P=#WyP5vZEyhRvXEJh(V@T8XAEB8$_+&%Yg z&CwNq&Un5Y;1DDCJLy2YJnGay_sx0YLgMf>gUB<2CK6mffr0p4=vKml;u?fgQZ6n1 z?kT2h^@=W&l7G*B&`#lPJ&O_5%YVip?nv-$tGn|K!;sL4C6`&8@=cRLMfREUfZu*2 zxyXD+eo7*C+9-CJ@ms~Mi&gRKr1&4@RTFE7ZCi$2y2?2xpo0Eosr z;$K}5u?$yp^Nb?l)FB^sOsOtY5W;N;*z!Ap_u8wvs`N@gCsh^{R#ezB_BYMTka7s5 z!(QCSfFqce?VdRf>A|P4u2uVoOIfLPg5+g_dOi60EsMG?m1S&IUQ&+II`)z-|6a78 zpZ+yt)Ggjf*!pK&w?V|W#GUK(eyN{`;#b1F-V$gBqi+`zlP-HKTi)5?kvA9g$!eqY zTF9@Nc6ka$cYJorM_zscdnb2WCAsmdb;Jr_+muQ`j%3Pi-kP&PxE{0-SwuI6!bDLJ zZezfK%^x9#{ z&c^NG(%F%6Y;4ko%rNvOG<-J(~m~UTr9RZG9wv^xkC^=ps0r7Xt#?PIrfL_gw*nJ;R~vp0ADQGsgE&rV?eF>E7S@zLN=UOKel< zlfBI9GP~@36JS)Xw(Yr0lv^lz)|*s^@x>viIxL^>ZM|6BD?D1K=M{cp;hWV_=J-`B zcruoLtwRlzdjXOh=jUz7{%*u!%&)2wB$c#JMn(|62wl59jNX;cS>T~Y!Or5>S>up# zEB6xgaNKAKw9UC@wRl5slZ4|TdHUV7R%D19N7!&j(*^A zS{Y3H4Lx*SPyXonlb8^2t+Rtw!1d^Rf{%co8fH&S@C8R2cedLb0aIfcTD|naD^_${ zshr1em*YNuiVf33?UIBlHfF^C5aG#92;g^{7*J(R@MJ!oulkFW`*qb;bh9g<`=Q9X ztSm7w>}%saqJ&1!+U;cKc=&=;P6E1u6?dCCbnF!^6_+48aKCgwInnSdsSC%P$Rhnr zUiXeu4CEV*Tp9&iyqSywmZxSHj4!fk&-$>#)+20CQ73%+KsVH2~;r!y}2JsLarxB^$uN2kVy~y;kqY+C@tyIN0{PwYJqI|1j!D{ z#vw>hZ!ojQl{FSj^2 zWO(Q_xugRJ(fE8gFe;JRGkl)Rj!!jdxO2Q2(1ZP)20)U}!iw(M7Yy zYHk^fj%r;cb6$r9J_UQiEgu!;`;tTT<;$hP&vBP`&F$6xr5%{-M^wmGJ)p+iERr9h z`?O>qT*IL3Wu%}N15LR_CO`Eoczu?9fa+TIR{|v@=ITWivNxW}4AE)V^6bAl1Iwn* z_y?KyDdt#!N{|L(9>r0dGh}bMj&;Vg8O0!-Z-8r$=v*dbq{X1b)GX)(%Bs1A0rzO3_IYKY*axA&p=> z0eOO?fhM0q(m6DP%fCs-snb1XR9n$MF5&@sT?^xb&b^T&dH(;8;xu#sRM~l#Z|B9v_`rSV$qBq{uQyuB-57&yi9=%PTk`(5-BJgf18uO+<@>ky&h*yYfI5dxR+DwqZBSzJ^gO)*i=#IWo-%l zXnmrKZh#TR>Kjk(KB@#qlaG(A5L-R)-<1aIEDwcQ#k?@-)K3Rg8PO($@E)JNFW0yR z0vqqI@A|zvmdGimy^x?^w5Gr%@5yu+H5|RDo}@sY_Ad7#qW3#N?1xl4G2hBgdLgrB zh3m#5nGWG(m?ht*5~=N7ANcqyPcfs)$5%tpn*J)~BYNj#OI?8c`BHc+(X^E3^E+AU zbi5Gf7UJ-$%eMHOVIdDCK@E4Mr4@DTdDll_9X8{4TQB&q6n3FUR@=f}&|@Lmw&ca# zqQ=7EGURm?2$xh$0&+QhYG?s0EyHnzmVvK?IP0USNEqXH(=$P-@U_d*0wXc|x5*$p zd@&rfL`s;pS$p)n4Y!xmYw08 z;A?z*RRKx=Y*+N5JAku4J;T1|ezYiv{=?LO+dhC}h!um-y%c3|{Q&-|nZ#kwzg1L0 zgAx7EPx|)`ZV@yppV3-Ff&!L)XKBUvhCg~Hwk9YLLBu7h6)G2AP4+aJjf+bz>w!Nw z&~Hztl&)buN)XRHZ%-v(Km4Dyag$0SPN^0RXH_&`{(I-;uB&~bTQ@YSik)8Q&pKA_ zPD=pelMBx>Y?O|QBYK^1NH&t}+m*h~uakh3g$pl#U%66*cbQWdEz9(M`IRy~G1Kj! z1aEz7q~Gob_kBm|{e{tl$!>eYcTlu3om}~rMDeAEQEc7}e6h)N!EBiZOQb_rwPean zZ`AWdSr(QG+uQ}PTETFno{W98b?^9e` zN$R=GR4NZ)UAJPowrXQN&<)yl(+*f?I%zLHx8=FXSPO3p!@AHp4rd0WsWrM8;(GOBHwn z(d_LAn9CPwWyns1U0K_nANr9~F4l92K$1+sSR!->AbDP>PhTR-xV=ise zBzkZgJA(!wAPx)d)>+j<<4fSsoHa(>R2#NT5fi{ty^!a2lnoM@msD^ z$|-d`bzhTHl-ND*Wb0rbD)}V5%KcvsWPrHtjoZdmB&B0y1dZ$i;m8C5ug_DzI&J!G z@o%f|TxEDGeH-JojIS-Iq4oJ~{jLq!?b*vAN3uG+szpl0%OqreR7E?-0p**e62w;% z$6%5lNd>VG)pf1IuK(_36_L0gT@?TQ)tc~6N(zRjyotU8B1US3ZzBV$6L%DZ`(EA0 zPp zz&p{|D;1RC<3vw#ss|Mx+1f9I!(eM6?lW{>-2*TJ!o;5*)Xv(9bjWc%yckplnGIWc zN4i=bLzm<5PNMl~x)a9Qp!2vy`?_y2h4+zWFl(;~mv8?&`jy9p&&0bSGZLHc&BKP( z?`a^ITheF<75i%X2jxBvnur@_`wmce7|WsO9{=YpP2UAUj8m&7V?pb_P<#KzZr0em z)Lx9YCM!$t5 z9pVn&zvH`y+&G}O`1b!46@1eml7$jSpd@>c0H1$<0-IxOCPgEoG1@=mWxFBpCAd;T zX-}Z30k~@z`b~5zN&WBRXQw>uD-1!|VVYE_^%NVVcs&2T-p%V6r+4}HiLRBy$Y?Ko z%*7W9#4a-b)JigVV7xJ1)X}$&pl;+J7IPGoXJFGZj|Z$BTEQv1W2{*iCT(KYijO*0rPLl+o)gY@0!UWtZIf!Cmn9Ds%F8j#DR@A$!C1C3ehsI+J63Nd-So={_2 zV#dwDb%>~Zn!!R8_k!etZMGvD_onF_@*-+Pv+OIg z@Z&&LCg&SPrET<{515IcdmiZ6Hbp7j{aU+d?6UL81Z)evC`Bb%#ujAwsOcv7HAqeV zDjU`w|CSD)A}?$yytb7g>>#QeKbxn@^8wRPyt7Nga`|H~HxNEI(FR@!qfE`sjsd6_ zO&lwculVV`u2VmgB0%zQWxGy?PI!;yliH}~f*z@Dx^(+(%A1YKd*JZ732^(yB4>`- z5vKmU@z8g$dv593#i)iwjf8@WZ`;xTho|$7N-}Q$e^V z$FDxWYKf`6F2CSUfFq5l!DHHzydOh;dEd-0ri8$~c{xaOHKl5W&bZe1FuCMztsVBU z9Y(}3Aw$esl}4PQT8&J>4(Xn;;DY&N0WX3de>BmMZ0+HMWnm#`3&w`$msR9+Rtc;2 zeg&>_oZtFc#UPX^<);(hL@mR4Tl=||{gIv(>-F6sl#R@nY|L0lij}zZ8*Gr)I!F;t zLnp^>4Vhd;=zz_z=|%r-7m@N%mR&KBSm}I?AtcHQav$;BjTLOP>Hrw97cz_;tFNwY zRDG(lA*z;;MfvNhb`fvPvGmOOU-g2(+PD*j=Z|L`ejd&1PaKOzg??>0+LE)1F8+Ro zsEvCSf7MWYz7@9Y^N4@ewdKj-HgBjLaIXFwTK?4BCCEPR^`}QHuC;Ir9XIWMpb$QG zEmV>cTWMBi{pVcf{X+iCK9jvzL8qu_ts7x8Yi|DUV3rbuc-tp2c6Wjw2dI%-^U+0oNU>62rz9#JeK!}(Ob#YAvf zCC9l8FJb33YHcEX!7j(F%ZUl;&d5lfj>bO)Hje%C-{>ON0{#M+N0I0KbN{{lm(FT1 z-AB*WXSQKpFl{W|vX|LZO;S>GMItnIJ7djN_54bo8L9qho5Rn!u@;pOVp?J z;3)t`&vsSHAJ|j74yx|tNAFx{sFZjod_3?%c!oRdXP=or?an!{Y6|>W->w4!pHLUK z6tQ&2YG9)xmd}5-%`6)^R86UJq|EN7K`_=QZ@t-|?Cefis*~vw`*Zkp zNWV*WWftmKm)+VKKnsbKg&u6&zD6q!+~;#y5{|megHE8$4~S!Z4EGv9;|CMCEk@4w%HP+j8+YMEA8JFdQl=VsF{ zy0}TfgC`w8=S*+df)0r)5oPZPmTz-{Az~YdZbqoV8k$da$$E+tdK)&s#~E+W z>i#qg^1%G;_UMNR4nr6xkQEVwK+``_5=fL(6LjX}=F&t*C=6vj27asW;3K&C?=`ww z?-o^p57su+r7Y%}%jJJ*^Z|kh+42dH(F#6aaBOC0;93qu+!LpBsmRe>%;P@RKdjbf z3Xa!Tpm8+{l$o~K8)1JwsV|$<&mRl&vHJk|DYQ0lP`d~-4YPKyDyZ}Qw#VYw%XuvvigMj zQ*G%BF9SJMxZZoRloMEuNNjhHnolugORp#~ElL zi-e}rHA!bLwb#5#{0x_s-;QEIBFr=sQt{Q-{7%A_O@;zKFRN=9?>s5ZW5G-Aox=r2 zY=$}VAoIq`@LEM3WuTd%f7M2F&|YxF^$Oc=E>;liz!ei{6T5p^t<6{&bo+jHpz#jc z8gX6p@`*r0Ft<{d+~0k2d{AxAC^$a5Zjb-DBGFehW&jts)l*$HNi~u>#4{qH ze))jh+OUaQZW61b?Usc4ZS!jju#FB<1=fG0YNf%I|Is!-#pG8uQl0@Ldc&`ZF-L_- zUTYs%9Z(=`OsXFfU;xJQK11t;j_c33z?sNu&`Snd)vZl8s5*};C}xlDN7i0{TU!cF zYr;j6+!}o1<0ho>wYYY@!69I!0XEA?l~}0P0n$8xYR7nNb0eyK?SQ|)E>Ca_bk9ZV zkj^5!j@<4xv{z}%{rJ`h!1+>fQ%Bvi#(@J5%sJTM+Z=^yl~@@*mZH?5yzQC)y;WV; zXfQ92JsmmJi9IelEb`GkK{7nMa6uG1dZKgoDz^s@7bX{b{oyDjc;t{J`Zm9=abxhE zx^}O*JDJFO7mFTzxdc*YG03Fxyos<_+Zat#=;%2O;|~Q|*~&o6W8E-x%oXTn&hN&P zK8vpE^nJ>`vGD5!J0-8IYxgm9UQD!m&`-Uc6?;sRzxBYZsJ!((7qlb!_j3(9lKXMz zBaXOp24R!a8ZGFPHN)>sP%1`3Nr~`ZCwG!Kp|K+Ny?amgUO3&eMx76b7#(Grr>U-B zJAPtu?fa4MpZ-X&E&t=>Q5Jqr2$yxsaU#e18FoKkasi%_2cEdT z@8>rNbat@ipn^#$t-X=CMb}V`-0=GFcnJ1gc??L6 zG}Q2}=1)a&>~OA8!5vb|UdG^%812Q4mdIp=9+ul-mK`@gD7W_EVye!py-x@sH&q}| zPNO9GKXAig?X*rFGVXFzY=~`vTqoyBA8!eI5ezgdN!;!VfP%XsXUdj@vOf* z9VqjQ-9gjuIU@=`%M9P$+~2llRfqx$NH*A7edcq$(={R()NP+Bi%Q?8v}p+$8Aa5U zIkTe}=FQI6-C9TZ?R@EFZMa0%KKhY0B~&-Gm{=9VRrbSgWn^?rWw!PsSOS6Uw9PVgylkWpekE#f-XBaCx)^g$xx^-u46 zr6Ow^Q*Vu`DSruOMrfuYetJ`pva$lJe$3TmKT41RlASt&@TlbLeYR!f*WG`PtDDu< z{!?$zRYt1c_`8*tfZ($qX(lopwXef>^A!Q^Z~@Fmnnnc25y22~a@TeK#=d4`VF1Kx zHS034b+Mli{wDKhn?spM(2gau{^`t6+%`HK;o>J&5OEIteYYZmSTcl2^&krO+FnEi3nb(&zR1a`z83>9*r5;lWO2yH=CKu-hCqKLu!H2i;iC)t1usqlVML zF2}NIAHn4?$LUdnA2+1NIe<&7Cbwb2 zApNDwBfB@3GXbKqy&3P&@1w$(Fgo3@q86p(ZqpOh%fqQy_at^7W}M(c>W{)E4F9b!l$!cH*&YGl2V)urZa%j5q@S3nEIEf?emO-q z{R^HSv)cb&F$>)mA2cvu=8)2nGGpHSF_w<51fSNfqi0n9nf_wXkn493315zsZCw~M zdC?y7R}J{k<$P&1{p#eui)mU%814@2dzU*w54Eir|D7GE6GFSC^b=*cjdHr(Cvbgj z7#$-dCRE>8J=6A}6pHL~eIW-ng8$UeK4X2TkqGKW@-8l`aj z$M3{22X{8JR}rXH!EF8orn}6iULBm!J4-)3ap@@9u$Vs`%6wb(5Ym#MJRl)eCnl z+UqMfC;E$jAlFp_d;Gd}HZvDNv3x!urtY6FZvQw}ij;=0?ZZl(69H0K%2Yk{M5woVPAlW4} zS%rTA`-z932*;`TxjW{J5dI~?(JOVQH4JeYs%T!Nr_4#E;$@Z}cHABwU^Hy9o zpRN7K&&KZx-QZ5_2Y>e*^0wl1c=3HW%mA&U_vuta_Mb$XX|Z%sDbpN>+()wDJ0G07 za$Mfi09I`0MO|Xa^ZPcxe%~=b4D{gpi^;pS(n!WnP7Am7E+%PpKejxeu#j=H^JsC1kDh>>_7Afg~t zt<#>1o^yK-K3&lZNPX;hL;7nWq6AB^WlY;PBjL-)VjfN>z- zrs_UU2ZaZZ;|dQVnti6&h1^%*c4dg{U$9^3zhP<_8+}2IZ;1}mGg!9uL%)$fEbHAz z!&C&S_C!xf(rMA;ib$A0FtUL62V%)T{x>`0@bieKyi_#@%jp5_{b7#i;(|X6fZ8YQM7z0Ns9zp1J`x0&1`xXQ& zh2G4ikc7(HDq(2*y*3c}xSF->_p^}RHGQ=@qW9#=`g&*)yr+hx+O}?k4Rr zu0o4nWCos?tT6}Te`9yY^nuwNzS!DVUl2~3G@BI9AIs=^%Z7;OuQ-0aL>83u)ZOS> z#&~v$eDV<3wBL5!3pl#)Uxh4n5$)s7chHv#qhH6)Pk*aDosPM7Y3r9=H~<&qjl91I zJmTl4!#tPf=9XM5Kt`pP;LgR*!Kzoh;`x`7Ia?kv@6R`DpNAGiwC`i%9tE=2_A0GL!)E za$$!ysNEu4(6}RitL}EDW0JB(wtRSr=}rGmVjz!K`Nf=CrAK6g`5$nk$j=BL{tp7z zBqGmBQD#e4pG4{W>DLx+774A8HH#{q6 z9;bAUfAu?%zYtEl5xk&!J41R~RNvO@lb$XjZQ~~_v>=-5?P8Rp8lcy88RGlw^`QX| z-it4*u2jRHINmvrl6>mB-{_v6&)mXs6DVbV6~7PB_<@!8X#UHB&+&?{!EbN=s|91O zebp)!@r*jE9BjDd(Pd`!LP)#dw8>e;RU7;MKmc&Z3r?ma;5a*K|RNYr=a8L zer#O!&vceiDgDr89rJguCJ+++JS-QTzRbssz*+xHnu+IQi}RX32P1jeK#M2N8R^zp zsnYG)`qu=uvER;Q%3P6oTjsIZURDJfp>;0_s-Q+~)mYdGJhgbaqe^cVUyRuO=hA*; zBMc_?Dw%1K=qA%d^~U0VO|TvQ@ddO$pmGuu?GqdD!S%$ypec+TB%pJSty#0pkznQK z?kNyMpZk~2T0f~`pdudSx8#Q0j=rtxA$+-h(>3MENhMz_Wg*+z)XSNmmqO8Li!ngW zZ&HAGYvWgRrXbabMp}_WY;&*W56&(cnKv_NPUWYL`yK7l5N5BeU7siuF$Gxr>(A3I zQ1aU$J+7=*{-kGyy&9Qszwy*&#MSF;vtXVMV_73=k%Eo+?-hY(zM^CwRBRDy#RSjY zDe=jINuIg5L%H*5&bJ*!O7b2wIW;1fp98Cljw4P5JB#-)2BJGsvo|b!M5G{cO`jo? z<@Lzr6NIZKXwzE#{jS^Wp&^Q8Ccx4f6Jo)b-#d2bvlAWr+cu0+cKjks0R+0o`?+St zF9cmn3J0zCuBJg;B{2+=lOaw^#Ys`CyMWXyM=d>~`nuxB*Uv;2;jgtixfCHYg0i)U z6}Y1@B4>>@R9;ztTCCR^gl>W!_CDKkkTY;T2o%Z`uOGKiX&!)`?wN`z)c4}V%mGjOdc zL9zlYL``;<&aOrxpl?^FNCjeO>z*g%6=M4^24(02>PSlwa8Fbsclb0YS0!qqUXcGd z?ett|vU2#ZaxO!+xPbQd1_!SGP|7rIXyW>o7s<0yCsD=GncPIsHQe+SV~+XE6Tq|f z0Lk=;{Gl=NBBfYW`KeB#=A#>!r`MaIoO3nTZH4qd94Hv}Tj>k2{F6qU}I*ON!%E%PWgaU!Rk8*tmClyF(sobw}KI)=vD9)#|>K%e0fF@U z$|g$MMR$)qJP*dL*q5Elsl&A2 zkJ~Xnits$)dUA)IAfx5<=CdsPI%jPTK9(s;+c7U-@vR`j7wN*rqe|Q5kHSkN#t7DP z99pdO$6H*Y71gF+FD8x#sPY*i&Fs_xjZ>sP)aFr(?g~%|Y+(N+)7p(8<@nJ>a4K3m?nF>(i^P991fUsL*M??3q}n>8JbD!}?0jxl=G z+W81+Bez#Jer7{WBZf~7gig6xRl6n%dDY7Oys=}X=zWObvsO=X+Mrh`wFHU?wF@9A z>ZDP3h?gMmX&+IUqs;WO3tK+ux*>jVYj4EfB-Yws9R~nzjiD#S#hhk*wBQMaV5dU8 zKAm#q)X};In6^qlkAt;V=Yh*dt1os2y%{{{Q~PsxdAjcZa7ruIp;bK{%xvXy!MkDLB!a7+IKr$Bm`Lbt$dqz zDt0yrY2S3TP8`RzBijd)u@4Q0qvptMuh+bbkY9%oHw{?t1;|~3NHX?eoUCElQywH@ z^Zg}v+SgD{efq>;^Om^!`6u#{Cvs!YZ$1;Od6UuU_6LSMq2?fpT=p%C1#LW|dS)cB z(&<40zYKk5UP%P+zj}&mNffyX!GB3`M;KP;cJ|)J;+-+dNOt&t`0*3-hgr{SN6 zq2uGgQ@3-=>~70X*>TBj?<|J~h*p#94-VMc@dwMUy1gc0`w1g|N^`hM4*!Vwa5Jvm z4!-&e*3J#f43XO)iuKM^pR zA6)DycesA~VcG&(1r+jnA8PB2UQS3PBIbetcPjjN--O98ELUxG1&=yeP}!V06RQ68 z4G*F}6~*6i;L+QkbOGG5SsO3@7%V5zt$RiULUq{DJYwrIe(XDYU_=mQaNPbm|LnFy zAFlvXp9O~y7n54qnt?BKjR+xoB(WPS|1r5k)nyZ!{!@vCaUa#&bFk+&HrUgJUlOj%>)5F~}-k zp|(K%@0yL5g$-nY&g!#tv;^)YirMcTiJGxzj~RG|kGUz_&lvggr+bLkLHx9Tq+<34a_QCD4g5X) zGlB87YB0`is~SRdT=Tfb204eRI!!*5$>j}gPLE4nujrLUJ=<3*}p4$A`N zlqT7aIzu1P;eG?jKE-qFa&$g?vk16V3|aCGf$`p4+u?id@XvAMmhE zfXhPY(+2f)GM|IQKr{UOa=G}HvOfA3_Fk)Igt@NQu$JJsQ}@C=)Mz(1T()Fg63K3&ciI5583dN7pC8& za@Jg{dIDZkFT>=(W5mifZTCZZ9CY_;*K7as5bhXhWan z>@klIO+^iEPd>YxEA^m-yNH)F+E}Pt(GE0`rDI2d`O^oC&S-s^>w}iG2&sogFX*Cfh!l-bVufvA!`)Xl4deXq*6!SN4| zv~;6(ezG9<3)F8-+*vM%Dl~t6JE`)tk{%>TG@J>IvVHVLOaS6j(g50n=66%3#;5 z=M;TdA@@Z}U-{Yu9sm@p_j^5HO*b6tc{DzK-|nOQ*WDv6;*uSq>Zlq-buII@xFRC$ z@I+T*;3uJ{sU5-+j8X z(NyUkpeZ_OD*;iLWeHGSWttZ%Q9XMb=DlYH@Q+taPH$b*(x*R*wM!WRAF{I6l&x>S z&@A#Q8cuHhQAvk_0U8~01h;?_lpMw7v&|bgpEOX2@#>lkqm!q@n$uZa5lN4rG?-Xl zVX=__N!Ooq9HF3?0R|l+Z~_)dS|eP;fcQcwEK`*WR}u!;fIUmzC@h09(ZL1K$=$ej zBhOZb#@f`uX^IG*rBpeVjk3m*I$fuhA+-a51=WiEO~GPuYN89_XnX;3aR?zR^^I-% zj*E1dfn-_BxJW!3CLNB)wUE-CB`WbLma!t+pV!^Xiz0f8n&=9=0T+-R!f$kuW9jV! zV2@2uiJ^K{%e-sd#tUMg&Mo~~kDeK$*%G(1Q0twwn=ORhO||w8*w$r{Ivtgy4d#6P zY}3K!nlGgf7)@>p7dgAj*asRdx&2Q*T1VHO2GbA^ep_s?OJQR#LH9Y)-W6DFd({CWh&i((NmossBI8%ELR(c8GgeU!GBV_`7gfdezDwP0gX1dHN%!nSyQ8O- zfzJFK=V#C(#!cC0>g>iahdozdfv}s3oAe74{OjotrBLICB32sgRpd@%KWy;c*3-S{ zq`!=BTEiT^Fn|_CR^oA!_PzTN2TTohB$1-@wDW@L{S~;rl)_J5r{Q_1;(f%m*JQY21#<&7)$!YX7Q{WTZ zNefc5A0%X@VGhBj&hz}0%>R(Ke$pL~Sy#&N`TqI1eM2bEW%rcu!{Mi)*V66nm|H6e zL$^jT#-IDI!M{wX{!(s0IH&%eKO=Sr^7?g9|F&U}K=E6q z*{xU;4Z^RxulZxsPl!oC9uyic6!&kw)*$ufoZH55n(LLiBo*_xUX$7TiNaDx)jEuz zRhdYpr%8=8;aCQDB=S2i6|hwCY6&z^CH&4yjYTi=P=_LPrCt~doYLQSZ+6UlS|(lx zxQ!2F%)9C)iLe!Z3;bioNmQb-ir&sdS*5=bUQAN=lWWE6k2$C9u2UK_Q5N4;yi4EZ z2X*vD&+35#*66p&E8&qwtV{|4y_iP%o4D@2_X`e>P1)j%l!)}Fz9)5GSeHVR%VY|; zFmx}sxzpC;pc&r#x$=CSM!P5UuW@1j^VI<~vC0i^-R2*}`@_fc2ENbl&j!IXWlL-| zz*^eXj~O(TilnbZ3`R_u{`Mb%pi(D|NcXHxzwOxzjBfAiQTsXhrhX2&%qK?6&H>DF z(FDPXjtMxv_f~!-D~h-Yox~<(ANJ|@D?5eUA{94{pQAtYD;_=0%ZpktLtNdRL=x_S zFXIg+fd!1WR&|hxM(vW}LCjCDiLy5Ry#%bf**P6jK{nH13>AsO=qrtRIk5+G?xv&a zlq-?pix5l%Y`l;y^tcLWi?d)v_%6PM46#rfW%c0iY?vsl?5}4OmX{dtAn$`gLr@XoaRCt&iF9Zx+^6;ishTDCa=)MvmJDtul^#mf65TR0X~-VBFlOrRXDk z#x~&>mtgP>t7tj)Q`}+s?4*?QL(&6-!jj+Nr>l%p^U+Rd?mLy-$i=>=#^|jlxYVKt zi@(O485azp4#8h;(r&rxg1Jwu2Jd5s$bm#dw8@R-QQ${Id$@pI_mh;chdQalMMo?y zbRyGlldc@`>HT?4eh5Zs>VAK;)0t7)sEH1OfeRC`W&MgY;Ey%3A8yVFu38jj>0{2Z z2B7_T1Kj~G0Y!~plA7FYO@oBl@-^%+Iw!&wQXAkZ9|O~N?9sZ_p3vMB=_`(vyNkl@ z)hGaAU?QT-wdepMr*$Akj@@nhfLIe%(lK1Kw=lZj8;Z`DlU)IY*AFmi3zd(1^1zg& zhw(&BM#oEP-Yal3ZXJEjX_JeN_Y-|Js}$h>@vS~FlK61I+Yby?8Y03?pKkKi>eJX+ zXEoro;{QDNl`XdM9#&k^17k3w8FMI*(L)4mmgeLtr3r>r%?p;IG?Ou-{HsdOL;x82J8a)0JUBE4{1f{*`az#eAyk_kKdvi;}jC*EY|v zIIU4;d&Bk`DQ)Tt(`={UIj6*LmF>jxTG}ZdA{94jKv6qLJ-eDBOQCH8-jtdoL2R+>+G#x0h7JvL^>UstM_uneETglsD z{JO>*Ai@+!CCClF5H$ABBCHD?MiI9`|njF_YhQFjNdT^duN(A&~ zNzd=O$d%6+pv>@|OzpmqHcT=N9!-T=sRWok#O-=X9m0@(CPp}-q$~bjTY~^I;|cy# z6L#>KQXQW}-np$8bvyWM?e1vnH{aHn_F`dFL-{5_;NZAf{)ol^mG9-9y||9DA9Vp> z{p=;Sfl_BUg&Gg~HYq+K!*b1}BK`nounB0E#7s6A7$v^q&15Te=n~j!D{X)sXLTI{ zvPbVHu^m3?y&bGIQe@d_Cg^!G#YN5{8e(OzOh~j80lJ9sC04OVPYBsGjL1FKr^9Ng zpLsKcb6>j?A&Nf-XgsPp*FV9II9@5#J8sXE1uPOc@P+(|!nF%e-@81FOLTvGoa}vS z#Prj~u^pQ*^yUq*rHuQ}E+~aOT~Y6#WpkBbMxckgehiZYtQ`Gr(z999>a%cSPDZRRvwQ&JeAU{`Te+hk8Uc^O(V(Y75I z*SuR5c2Q!K@GacGjf%y6a4#cSj+~(_!@r&@FD}?gE`upxx8U4Tuh2u93(8<5wXtIj z9loB$Vd$_!R-7vV6D?2w2K5EK|%0uaIWeSy5FfBkQtPpz|a%2SXg?l^9?pY z%LM$_O`$+lj}YMCxf?N+#>}OE2)#(yv-hj8yh!kWWYCpr@CQ2;u1V~;4u&fW65Xdj zw$k=bjb9_m@Gfpa2n|>=Gn3tqY2O>^7x$IluDGxvAe1tvVJ#5XAdwum@@S4{I9*v} z#G^gzt87nu2<1N1=dSW5&A)vJT2+o*EjPI)=5JX2Vi{X!{6W8els{`{$p78 z`DV|^2G3S)O@I>rxD8 zsYx|ywzk6$@%EFQvJQU3uNAMNz3_FbldHpjLTK}z=$l?JA#Ur*nj_AnHW9Dn01g<% z2Te1|Pcb9pq+?FnnCG#?7Zd|}w(?SUa@V#-6AFTM=wCu9WnlCa?Hi?eWJNKyc)@|~ z{yTEIC7uKuSRGpg&(8~18+)>AgE&j%6UX;pJuTfn=COtLUWffl?@}S&R`>gRo7S4Psn>e*(#I#-I{DTtRsdXfy2laDK3a?& z3EP*RqFyq=o!tl8+*Y0)vybT627g<@nXzfP*BbJ^3n+w)Srrw!I28{ z>#w>pfAubX=?6q^r9~29WpNf_bsUq}Ami3Fa?c|J&F!8Ks2YI@7}o(O79D#Kkv|}F zs^Rf|+9jmD!6{0nVS7%&okUKU-$9_!DaV3!zo8M4ztYI1^Eu+XW#c$>)T0%+(%1Ir z`zTa&6;#C@MbZ-)h}RIG^M2WYoU;Tfwkzm#=Y#M1m-Muk-J{e-$uRCHTVwDUAk6aq z4HN*Q2^Hs7BUeYWi#b)b+^HtkPy24`b<2|fI?qDXU75OIFeF-u7^2S3JefgIrf-{P zC7l9Arl`5g=w=rp(LNn`FOzd7lEH)|J}9wL=moy1Gu4*u8MUI#_M0%h0x`gg8NP%6 zFE~e@jQQ3S@4$cbA1SKx9D6R7lLL*x-+Ly4fTAk6^8bN#VNid7@DG}~!;%FD^HSmF zxE=aic@M9ruSO?0W5}-$XGdHZP`%ruEG|?NrdXH&KX*okIWbUnsxF={z(?L=ersCP z>rh)>Dr~d8!$z}6=#GiS1$Ky5)F`z7{c2;k3R+@?BpYeMI!EHx zTwPMQ-Cg89jY(}8lPh2By1R+Num=h4v2Lewn3CinjE>4xa_-th`Kif&aXO3g3$z@( zZ~ofe3J{<&U3sCbEa;=yt8XPY2cFeOxm!gUtAXU<_Yr8GYiZ_K_7uH}E z9j)8h)@|9MBF{qauVGlOW$va@*sUXc-CAs#(MvXmf@QJ=YiHKj@?Kpvc^lt-W1Uz} zODeP~=>Qfo`D~QDK6%o2`FnCNe-tE6s{$8?du1M_L+IzyzKbPjzqZN&bAGf(#rUWR zSzXHd*2v{2StRduu3JKvYV;^%ho*)=*(m4_MKP_C(S~Xg#5-_WtHgVW*$3p7Pf9i# z#%e?XmR)?V_Tm-cYvP)1*~=28Zbl9sA;+!|Z@O(C#s2Qi-tsIe7|4pIDfYq4k+(MN)5lpoxY+X@IH&3C4v$roK{Z4L)R9(Ohg2Sok zHms1vL}t1Be?fXTvUX|g=N+3Je3(wleuJz6pQ*C1o_Zn+YChYe;|s8L1$O!3-xbu6 z5!AC&Ol4*N{S9Tm25A#)^nKkDaU&20{!|IrxsazS^{2ThX+Bj$q1jXb5;!~a*>U-g z&Xo5^F6w$CPeLa;ifwiNB2p=ZL-3cHug`2w+Xj0bf*PhUjMt9D;h@MCJJJKMLncU+ z#ar~+<#`n*dP@!=F@knXgjT%PskKJ(UhL_U_|(_ORb#H?Oy08K%E9cj>^?xL-Wbg_ zPh>hSTI6u@#a7ZdG0YH3<1WnFQ+tmZaK&h@|jWwk?~=Qg#E`I2tX;(?`b5|rT4 zRkImxbMT|cyT`W{oBiA2DB8{BJ~QoVV8A;D;;=v2V-hZ)pR#8mX3D#YCWG$&drYiV z-q%dG%|Cwee8_3?l*pTbAaCvNj*f^m$uF&yyt=-byiW7K9kC(hIp#5dTJzq_&9ZL>X4$+HH~9oJ9>0iu-SzLkX*MH0tk24Oi$zfWr@<#fz5`8?z!LP@-iI4sBG3B0M(VU)#o( z@gQ>ztnov-f<%MAld-9tw}9nG)psDx@33wg#~(5sy}5*I8i2z6@ega+2WI;Re(=P^bqtd?BGftH1QiBjRMm+E|-`KyCq`Ovhe7l*8M0JKJEfW zwXl3EsRejAidd-0DojL>9Kb8QntVYoU|#lDp)Klms_PimPFEBdenTN3Um@i3(UM zxWlcU?&iT=s>S4~oQBMV^a$i7gO>@@!pt(R1KkzqcTZ-^z5<(bexmbNU>ec|IiKZj z$@F4WiN-7qiVt$3Nwi;^7GvDkRXGGbYR+nUCce&5o}foXLUu;W}MhW#6Ki7 zg2+PrW1svZ`fhZ?%0=Ghc^x7Y9z79pYsz`PQs0e|NLq_3(GuMH$+Mq){^k9JplKee zxCv`VYASU(HEmXK@8;SWe~Z;KtZ6uVO$jDSb;p7n$?6MicL%PhD1AaSOy~GT6`tAX8-f*sMFdjFkb$&9u99kh~N3)=ZWwU7YF%!7=n^6*~kbl&{IF6ZE$O z<3BJ&QeR6_Gv+FVvq(1EzO#?VV{0sdyV$F^g)7#AU4gl+Qx}TBIDf@h6NDSDMgduU zx5Fe}2Al~WMnl%pP$a(Y7^bu&2551O!Q$4kehfuY)K+%kl5G!lH}S&CAUVEJe0Pd| zTNx08NZEt-bCb?0;7}>fbiHOqz3+abdN%n&16$r54h?$RUw2X=YHJ{C(oJ|Js?O0O zw8|1qStwetic9b^jngu>mU+8DWM@%|M=jc0@M!-%3dksMdxv|tS%y%tcELrusSRD- zP~JGrdTf>R6phmtL!#Bg+2^g(qAi1q68ewA?8${N`GfLD@Pp!fXPTTkZJ z;gNZ@h@6vYy>~4?dGSKm9xy|O-RV8kfp&8V{OuS-%*sdiW>05Uxe1*V`}DlmU;c{P<2CZ+>;gjcUG5mn#*aI z_2D_s*+H!Vv-Pu^TcJnXZcYf$UP3!D0N>TE3X4BLU&ZK!S2vP+`uT_ls$OoCZ!1P- zv1UHrTEAdq-tl?!W4jlmrkVJX)hq#h(7N;F6p0<(&zH56XNb8ndjME^Zr7{#fo{Lz zCs9LX?fId{4z!J%hnK-TMt_#02MeA)7o_K%*!gl+#fB=3?(HnWlK;Oqhx}D1Cf&u;AOMt;!nukBalL7j2OrSE#P^ zF#oE54yqbp8@65i4^4Evb(dT@h4u*;?DTHkYq?JN!|3@g+iAC~n)A<-IXJ?`bf|;p zpFhB$6)Kav>d&+8u}^bpX%C{6oFf>#Su2G0GGIFJ1q>9W7ZVf5Wpj*0O8in2F221w zR~Q;>a*e%Byk%35zwEa(|TglY;Xa>wh_T9b+dbI+uF}l7!SEv;s_8% zuEEB-)`7#H?OZ;(FGGE(ci7pa(?8P+f89bd%S~ePro2Pl?|u@M(qA`2t;)cq{GcV7 z{dr$`OjpIF*_jF8MfD@DicO~-xS4RzmQtZJXktmrDCueNqbZLe)K+HQ7)AuaRdgXL zc$eLx47S?abi$bzGUgNx2Ke=U@{8ZvX4LozmSoRCx*jPd$;6}SLr(S4N^6*sBw$>m zJps()4PXbA8Cy&#k(FhSAZmLVZ1dlK z1-Fl3=%p>1VTwJ*K(}k6oEF-^Ug-1}(z4w4ib zXrgp&_Usx2G?s4d*$(_wDYJPhkZckp$zLr+ju!?fiFjdRh{~`7nOyozuYjK9DT+wi zD;QP=6B~ltw8@aeapjj5S`x3hheob$LQXCb=3mq+B{tb}pR>O39o@Mo(>mP6^ezC) zsf2PW+{%6jg8A~3s=S9v2Hjm^Qo{m*{cib=hid)!C@_R8~0PYgz6hv5rgldxNg6i(1`$ng~ z{Zt|NM0O&r1AS3U9k_7|sBrs*RafCf`1Tc^))ZfPsm8GYvv6X>kAvong;oeUP-^M) z@&|H-s{*r-WvF0t<;^SR5|wk|cW1@JZZR_c4DI(z(!}{=W5)RsgQ*I0rpy; z%(QYsQuq$Y$YMSAX`7z{aI67@AD9h483BV-&!dNu}>UDzPHs_^a*;V@wP-v=9TzpzLgcA4W2XU?#X9u0- za*#L@vw+lxAMy)Ld@O*X?h#~Q%rIULQP|481llC{rZ#?ospdJJ((=++zG4RDdqzUHu!mo5kwIT`z{OV#r$Es$AEh92(m&s{U55hOl))7xS8(J1I=3l<7RDt4)`KHC% zZ8~e{0@n(%?Df9#hIsdM2>ws#G3Vx23{{ec&>L$?Rn!tC!|nGC*O)h%4?VT1=fsBo zkEZvIYNGABhwX?6C><#gP!SLi3mu}MA|gbj*NA{fmo9Y_P((^ls!}4-r1xGTQbI>M zgc2YiH9#mKA!UBKpZELzp0#FWt(2~Q=#{dW!r;d7X{;{<}QO}vAK>*Yx)RrZQIHd>Vm&b&ME0| z0%K<~AIz_Ye~^+NbY09EDqDd2Tw6rfGXIQyxOOtGN4BC(R#8-n>#YCI6Q|YR7X_|9 zmJ3l6M#!3Q0V2;ULM0}$VirS`hf_3j@X89u=uMAplW`O%2x)~{4&_hR`j4vcjxL<&PEv8}$X7y)zS4?S}0>^^G zyhn5`VCVq-6%Ovx5K5YUI>`UwK#T|fMHeva0{=Um>z&VqWcVRsG8|VaWKg37_->-9 z`GR4{!WL=v@r7H{nV|%mUe9Y-nCB?ZkPK2WQ+qL$n&rd9R4or()@#Ea*r+5nj~9>k zcO))%ZqJlF91p~wGImj!AAAW)HaGY~X&}~Grs;e+F#9fOd@Yh$|iwAeimj# zrB}6o3Ul4*a|}#0F(4ab;q(^z8kpU|g5}OV1A)aiCene%5F}~NpNws(a333xI){qv z`-sT#;a8n>$YB4@ad?ul?LaH-9eGJBU4go5Fm#{?g^mQ2g_{yhHrPuFR&ykwDE)G5 z@*+;;`!8C;ibpKrd6Z=o1l;+cJY*!et08GyWYX|ETu5~C8P$RCWZBi<)h`Dsr{#~|AR<`ci7aJa&f3Pw3{nD zWft9J8q~ce@U!?tYQuZTFd73Bsk<-yTnNxM_>31%jA>$1Px}s*aizW0^-XI$S8eG3 zqlM!P$?yIXZ^HB~JF!&h9Too?iNjeN;-hBTP=JI~G*N{#q*=A;;g zRM;m+nm^sFpSqi5O?kUCq56ryLvjRa&rhXQenXwE2Fg^VKwCmi1(}oHMaoh&v>d0` zUZ;+OjWt(GcZAP>0DXFY2PQSb$iS~!FxVA90N74s2ABaV(>WrV9g}ft7lX{u|GA(t zoM_zNPe62Tf}8)<{1JWP5Jg!(Vz^@HTmrs-cmbQg6Bvb+;Ow2bHw10zM*6uauDlZA zRF%ILD5G_6bxtrJt;GMpcRW&Z=`vh_|LT`iU9}d{1!*;KH)p?a?!OoQcT$uuzado6 zI*|d+n&sCQZ%N*?CO8>%R*c%Obwaxx`s@kk)`T?~rYh=3%tKD7qmzRN$`8f|EuYPE zHGAftP9O4lK{a~06n5(s)&54QCnF!tOQ?I8+(kmvR5Ehm2l7K?a%Fv~T9=%k>7Y@Y zaq0b}D67R;*ezqq?7u_+(#GYQMAVTOPA_6#j@@-n?ACAgpf=J9tt870_ez`0c&S+e zMAxCb47bB%p==d(6T*VYHyhO0mm1Pnj@g9Of477vK67s_j;*+Z@4(Cxs%8S)T2w~Z zfhFk^bB-Duzl&J2qDZ9RAwEA{c|XX$tx1uxok*eAKE*?Cf}NM&a<&9s#KZB2e}LDH zExhZ%U_YT!!BfR2p?n(_~2|KnlaN8sjX?qg2P`eq*p|%+jbDx27*C>SV%CHf&J}}vfhW^&*LxT(zsiv z*o{3_^~pJWl8 zsgHN={EVO)zx~4LABi}}4|=xt9_^lHqh+zJypOb7gpf!gfo+Y^au-9*c~pOKR!@EO z(G2kvqWB*n?P_inB({;BxRLUv&+nre{ubNGzMUWqzLXk1Q%5{75dgZ;GfD)bkNy26 zr}y3y5G}a8uX*!fFMsp|u8Vv-N%{vV7L~s;@nR*(adXOiw$in851}<*G<#Ho?VkFW z{d!|(P=c@CXT!ldTNjNU{$L4smlvOG_)ux`#9)3`4+h5o@ICCZu#B)16+3~)GRP?kfTagh{A}Mq0H#t_OubI5E^Y;2Ne2#S zrT>+Q1(k~023Q*D({2O@8bQmgkz8QGBy+~A>^`%+%zl00y@;LujK{H2T>*VED(4S^ z-(0!mXhPIN{;%TxcgNQrlG?aF5hC&m>m(H34W{t5B}Wu&P1fAO zA>DBk1a_*ceIn1z@8Y4YO!c7*qa+3IJ&kTjU5z@M((u=>UZq4dR+Q-`DET9fh^YA8pW=_R-7PKtdR?2;_3o|fzYG&zO$>2bp)pAM;)#Pc z$)`kA$&Bi&!Ex8azQX5B7$C8yR;_LQl^pVEHP$!Q9l%+9DFc3h`Lts>=V_4hibdZ2 zktk6Lv{{-~>Z#gD`@{7MhxBI)lG49>4=Qh$>z2)01>{A$W_$sxKff?rl|D~@S%0Bj zQT*a7Q-~L3BWSWV2~ZBzO^RT>5RNw~OI(K|{J2{V_ZTwgsx@;7eR%r3gf?L#R$h zCyK;%Z!y9`Umb(ecNC%GY(*|?IDyG_8y0ff6G(zYw)Dn%3fMFaoCU7XneU|Jlky+u zO4S6k+)4s_hEhn*a|_OAp`9o>Vi;46D}sIQ=LOnecRD@qPj%QgH1i%}le7Ek^Ak{# zPzrFI|0capS*IVoLCm^0-v*CHt-cB@Ga8s%zKfW0m~}J9Xv`S~@gCD+I!cKIxMLKB zl|}vpjQhgW(n{EO#0LP0aAbX1qUkk?CYn-03k(X%UI8d*kfOzK&O{x8E#M)c6ai#x zv{yN(3_$;v1-~4Hl8RM#OXm&!*5`Gyy)pp)YF+d`co`WZD076lBQ&%~1=gs_Ki9qYHq3Q}WQe^89upMn&P2>Qv0|JD>2)q()L3iS3j zqwVl5p77oX^Ikb#{J8xviCU7|H%gbKu5|ZjKd|1Ve( z(WZ+Dq(%?cC;LuDScgd0bQ^hmt~bX(89rYA{r&xtVTNzwkLgn`;rme@g>&fuJ85SE9u?Fd)P%vm%5F8A1YOI*EaGdnfY4@qUbZiJGNOmlJ@eP zU&=>BaA^BA`OQTrbF23bZvVSnBw!-wfLbq3h>x@XhGEd(KOD;76=!I$rjjeVfn3`p z6duNiK>(7w$fbH^*gHOWh!fcJG_f@F`Ua7GMxOovtdyQq6$6`c(en8#DpyBKV5~A*xd}jd+IHlin}~Ho9kVaeVp0@?bJu?jJ88e&Ik40)oQAO zW|IvPR}J1nj?83@Zn8;wlee?;xUymwkm8>srlFg8uc}bz45?+`sY^NK@Ry%Z*?trt ztQ2{=jP@oB+seGFLfr6{1Y^P1Mg&b*yqX>KlGaoA9h>0aA>G@lqG^?px&{fjK5GI- zd|rYxRfDHNQ*JzBAR)?p)NON{h`LDEOf5s&PIWVBagq_nsj^@jjXfbQfy!be|1=8K zx^XIKTGs3cJKDvtMEcp z(axWn;L?!(c-@fG2lq9C;nm8D;x`SX6N-0wOAw67>A$yMxMRD)$ibj@vNp+xztZ-w zD$Ck|d21|2bb4Wyl48rGW|#KGT( zykT!b+f9Nu4;9{204M)EQVI@_;f5NDBz~ulYE{E^WYpQL8))@0Kv(oGtKXmWVCsE| z_oJ*bijYsJTjD$_g~F2eLv|6mLv#^woSO+eig)xi#U!X;{S62G3Y{PITexJJ1g}B) z@O$o!@zy32;wjERsj8e`Hz-8K8r{UYu+2VxBEdl4o(w}1P2-VG(AGg=zQ4u zMFnc(`I`P@U@3q10mzc!B1YPosKz>GJI4!F>Cy=XoSGRv5lO#}O?(`aAZ6Fm5cv-Q znodzyac_SS4Yk5>sc!+tgh$axzPuxnbHpkd8A8RcKrFY3d!-S7sFms$gDhq?U#}#x zeeBO}(wp29{c^c`d}+e#YWT!x(+#buO~XD?dP#+JS}2=>1?E&i)ox&r*T|kMQ+d<@ zUEwb@cOS*;5>(L09i6{Ij&FE%K{-7e5m2eJH=w$i)&eeP*CC+nnWVPMOLO`()ZCRgC}ejnFL>f1TTOX5?v>$TO~7sMx&Mzjd{E6E()KO5eY~-YLx8%@+BT z)QFSiH=FwqjZHA&AgX9pKA_+Ay%gWjwVkb!(;@gfS+7JN4wz>O@Cz=nN|k*V0H44| zscjWk+8$d`(&rJ6=zTQ!m`k+!Ji}|37=A~nimDazLS?U24Q&1UggILF6`i;0yIn2x zXDS_S)cX!Z?7E}+>T|=jQ(xbrz^e>=&f%}X7!(^~+!OTUaV_v#66qjSyI;@3^M28t z>cF@ME6bgUlxFLxnYpvZH9WrPwFv5ErLAB;L&)K;5^Dd1(PYV&;&@Yh(v5!lu_qkAlO z{8W&4%%(A_M~SG??r9w?cZ3?K1X(ysT)z`EFO|AyFvIz#N?4)XSdEQxn(9c7>~#b3 zAj!hjcA^WZL^o5?Nl^$PcGvIZ?QHw9D2IKP9ML{9eN9;jbqvtSlEfDS*3ZHhFkpP6 zOWsZGt139zhIL@JfetGOI*u)izW`TcFS;rKZUzcbU4X8F&oLdzZjQh|1>cYBJfB;H z4#R|oaD$zIoaB!yUZ26i4iw>Z%}-+e68q_Uce)bjS`s1Z?>qF^C!e2d9&XVleM1rz zXmB6t9|Wl5@fI9xA3XOX{caJlmc(;B5_1Lvu}a6RCzF!QZs+YnuhEw`R-{#52vC?7 zx4Ed}ArkLTRAAv;_pnQls3H9+?vH(Z0OpiaG}`1_m0t>AYn&%0+bhD-l~0gO|Nh6v zc?pYLgu4SHCAySR`R!@!fXz0ZhS~;$sfA&g0S_32IiVB+@?UbY9HstBcROI54(bu^ z2!|Lh%yf4YXJkET$GgfruB}lBwbBuhN6F~TroA)Kvc1_;^*-1-+VoM7B82~__kQ%9 z8pUlwAUzOt=6U(k;VB-Fty{7?6ff}#Mz;B^K0CrSi1=z!T$gPl(l@>aGxTWeu{$pi zC^!4gl1=t>fhS9HmL3ipbZ(${>KQm;pzM?L-Vzfd&LnudOm;9Br-RF-YBox-YpqLxL)&~JrIuf6^Dui1{2FTUgRw0=euYty~^7_q7BkDsrtjuUZJ#@oZw z!`*`oXNcmSn`j)5nvw|1MQ5>=yeNdGHjazXDUVP&|^cT202$t}ytZ&86F0#-_r zw2dM?zjdk)B+r58pF?Yqw7u7WcOi|5t!7=@5A%2C>%+@aog{Py=(N#bsGJ05(y?8~ zwcayhW4)(aQcpPf+B-wQNxadz?40MJr`AB;YmN67Bg=Z}M=`{}fvV4Nx%kI01 zgOaL3yGo}?bgfsbh~hm0)Jd5hIrNsIQx!99Zw$ucMIw??A?kPI55EK>V3lkxxM|c1 zLZ4?Gy|w1_>nu|&6fgZYf?*^#&{op$6u%q zE?k29#&l&HvSd=Yy(6U-R|wv7`}h(#U$*Eiy?IW%($`J zoswZ`4IgflavAaZ(KD|wLWnZG`l$1Aa~VOwt?E`npniv~vTft0cxd=)ISyD1ocp2l zKvhITH-dLNQkA`cfRu|?il2=9aNJ_$cjHYu?;Q9Q;FP{A{FkIjV^2-VTV&+st$bH@ za9%;mwS3VLv5r}@P0qZM77i`Az46qw(>X@T8-(Xfgw@a?UY0$1APcrSu3-N&%&Kl{ zckrYK;g6S-Sj(dMCCHO8`1}SRe>)N{2R`DSLX7wK%WO`d#zV|rr$4h^E>LSD=DAK{ z2f;Rz9X5TXB|zsdohTQ@R+2}8=+(~9fbXC?JGIV+E7;keHfSy5MIg+NmCvz!nrH6- z4pLp$;kuy7)kC1YY^c<y`RRbycj$Mjw9bJ)##d^9f<3i|7-cw%j~o58@c5ZmmaBo zd*C>G>>pd&0pgav{ARhJTakWv`WBCVa6Eu{%;F^gkd$VoPEY;*#km6h;5eLHp(Tzm7M8Bq4fj_E)dAn@M}~lb?UWo7B4i zzYE<2MgLOKHoxqsFRl<~;L+9ld+wXeRZo~nM-H(Xt$#}vvug0$JBa9VI`4zK)O#nV zH8a6!hosgJ5=(g-J-OvG;#c`T^a#rZ#us(dAQvTWFAc?2Wzrr(l;~eBO!!4}_aNUP zwniPkj6N@jP0Hg+|C)d6%O53l?;6;vKp&l4{20f2*O(O}YcZBW#j%Jn?vWQqZ>LD? zH*WG^=vCyCYe(2U_L(OZ5CB7jtAp&=8VlV1)-FFxnFcRCRl4xgF?AJe54#~7TFCS)wRjxh38_zu;9em9U*q@U$2M>&)$?tBc_svS`EwM3qET`018HOF z01*dT?m-ybK|;paxdhzH=Cdn{sd=L7iJbM{o5+s$zpiJi_L6d$2!?BGiY?6d-xbHV z95<7kPN#1BEFD$!wosBSWE-nye5bCSND%_iR(@lt5(ieBjoYR-L)Nd)pPoi}qJ{QV zpejklhjYcyjLYxirZ(Z{sCBJnjBVsUyb4k#+Z+m+rpJa9u;hP7j?B@@BkIjQ*ZiG)#!H!ZWjrqXm(iBAlc6}3;uu-XoGInfNTLX;U=0J zxhI0ZkkB8v@P0rf5CfHIBV{4$3W=OipTJ8i^ES~m;p=r+ad|PMVjJYj2FiD8{ZIhZ z5_zlHstjriIRcly`NpPxUl6m!qr)~YNEQ|wvzB;UUwnjTIsrUq{%7n(fve`91KivS z`FxgBhHqEFsL$pk%_0;vP}dzk6wrD6r46;l>7E2AVDy78S%JQ<|vLQT^GZ|nmK(lk-nIp;l2omae=tk8-{w8EF+$Dd9JWDhsq+iwI+XNGsr$y=SjR@7LgCuA2NfL)q zZ9(MVbFD)8CBSTsnB`~SaSr?wt@s0@TyxrRi9I-u(@c4^y6_|~v)z}Go^frLu1w*n zUDPHJ3so|HUw9&n$}s;VBJ)9;XIfggySb-B1i%8CBx37d=z4nb0^ITT6!c`sF0w+? z?R28BEpCtlH!|wB{b-A0VekUb2XrW`kl5CL=+JN}(n=K|D;Y>?WeXaZx;>9rK{-A1 zVcutJ;Shd`XGeD9gBO7RL!K|TGWh1r;#9U;^#5Jn`-D6M^g+5heGbK-RI(5jdDye# zg_-qFM*hY2W>S-*+yDcmpeg$Xp;XD1NrwIFqb`CtL_~#UT;SBeW%mf79z@fjm_7Qg zb5AEMxFQJT1o9u)_q{{?i>qGFu5F%Bc7KbH>P=U$M7}JvPS;aBj&f#CH8=~YuTfpD#X2KZDR*UM{AS*y`|wA&-wQr9 zL)=4Y;|Ce4v!NVSxh!x^BSYX>wZ+6%=QkaHzke9k=^W5+dPGt~(CKxp+9C`Av5pI# z2->GMBFef7OTUtSGGh(%92ePVuP=V_+EO6MR+(jxIEh}o$}TI?DbuDx#u^Ir$*ld> z!dpIvaZZ>BBw6pJ+JlKr!29S^Ue6{8dlT%+3}^%HnYK)y%yj8I`(ua%Q@-rIk~@GS3e(ahT*sJ#L!JPPJAX{Wykc_b(=t-SPc z*@~W@WB4iRDaZF$a!hvlPpX`&;r2JP$^j)pG2-{l)`DB$`JlpgA!CSZ)1~J)E?ECG zzkP%ZK4r?;-FhB}n3hPuAAxU!_A8!kE7}(R3ulkT!5s}~vfn2|%S4uq*5)#8T>g~O zlikmD?|RihPb{h2Xn6@K>Ff{Ddq}w4GMMJ9e$1{qQ;aTv5I!(b9!ZMOb&01ADmNa(&k|AE zRM|sX-clu+U6!8+W&l1d7;xuH3F>cRB`Q8c{Z2n9q*w`UM7C>>_P(RVdtqi|6wWzgoxKs5JqA%I&QuV8Pr~v5PRzu=!T1QepZ4&u{SfgE06!Ut91(@ zeUHfF4lhrYgtY#$g+!7?)p75y%h-vQuSJi2;rk^Dm2JtY^kv$MfReR(%VmSU$=;K1 z+R8ESYaXZ|&uchcq6u0>hG;Y=k%udVpd)#FR0e+x4e+R3*Lfxk_WDupNVeY~C^V0*u`dB*8p9oVHy zE9+#1{zVbDjMh)D7pBCAxR66UiFeaUon{A96k8DfotVeDd&+bYFZ(6#3MB#!q>XLr zCkX`4n7X*NOgu5VaFF^d9F$1yNVd%W88TO<09H51T_XSbc-frAMg4}NZ|B!%?B)rd zVwPUZCtigGG|Wo>NV+e&tZ20Gi*uP~fgVQ`{kr2vv55Y_z9`jAs(Ai0lyjdyVtbu_ z%r^yGz64rO0;zT{GN}qJ=Csb;r3+5@&g93=80^;FInXrOeG6}Z{QNaaM++3mR002` zZE2vq*Pf$#&Km?{)7djEs0&b-+Ni@NFxiu9C63XqxD6=YAj{zoOKr{M^C^ZP5YZk)v^e>=i6 zjP#ygT{~p-_V?+)o63_YCQ?>N{1b&!AQX4BZ zIxm9(0x4+Vay;_GVwP9uDU2q5ZUCA)S*q-tc${hj>d*|67R{14_lx(~5g_Tq?nNi+ zI&kH~U>vV1!(JF}A?C$K`4SU8MH~E3JZws>LcXMST|L*@^w{j4_PrXry?LHZdnC$p0;# zxCia%#@_)CI9pRoT4HqAbnCvkOf;wF_!{fhrLtJRtaJG1i*04!(0xDoW}i<`ZE&JJ zzVOD@O!%?gjQw%HB(+#mlM>32N$=@xV4`VfqDZYtb2gc}ug1+I@eJlBO!In4ActhKI z23Bal={9tlKx<3Ah}wqkLpalTlwW|T+MHjkGd53?;PhI)P9(7Y2zWVT!U$GI$ZwI| z(NGoD)~6OnfaT7{%(j+qlKOQ{wJr+921GhjJHFO0Lax;iRieE&A8E`M&|+mDBr@Yr zxR?S(r+_wOmNHS4Eh*wk((wc)+3?? zu_XwdW^xe7q`A-xdQoURRdf5-6J$e^)i*5IAR5l^=SrbHU)^5D+=?R4U(1d;6s`Y-jv=^Ci1NFwbWDD|z{ zF!?Xx$r?xV*T_#CT|bCFcQhGqy2qLC4BcR5ZSlz+e+G)3ZZ6M>gg!|%0XG&SzHzLT zUU-l4?2tTeN4b8Sk}0<0u$o=9<=iW@mknzCgXbT=^^}sbA?sNFgNQDfA#vObxYvGX zf!P3*8-#0~rO0`Ag)BpF;$YQ!OT+6m#*I0#C{gqc`Q(1?Cy`+SYZzfqs)?+?C+Pi$ zd(0oAOQi}yTp<11NnF7HQxIb|sH|EiubTT|b^ zSEr8?q6ro@Hb*2ZBU4fPHhdioz7oETBAfh2a6wp7fg)4j&zEVphQ%ahd&E4R^Ym^L zDST!#TX->LdjoEHM{&`?^ERvdo_C^=LAo(Y`g8bQXLc#^HEo^YK>(}LbAVMv)$iP& zSEO>&b#FB%r5r^FTk9!Xv3NIZ{N`-+b9yi1m~tApS6X22+hjvclsagvwAi}JKNf?1 zS;W{P-8wIQs#Mk_WWj5B8aT>iQ;5eS!%-UBON)n$d=Drys(_mqg>$u-KWnvufN z;#mQjV>Nx=Hv-@@=oPQh>6>^z=IEA{S)im4BVjE>iQ@~hHATN z7_|1aAw8gbMDhLIy^m_wwWE&isknKPs$c0vJpw0fR-U?mJ~ zNfBQ8pT)V%_hU#}H)6y+cXU3J^!$jT+@jsxOU}LY!xxKKSglRk;tyUaRmT;<-fE?i z2Sxm4@a428f==JF?4^32zp|tv)xo&5bJ!;{8C3BQ(lOfy6ACq26iThw>@l}cMJLP| zha|n{BdUJ?;AR0HRGlXWz&l4x_r2ff(qZYopA=;F(-hzZ%kuN>eH6I{dcc^K@1({O zpx9DzS(D0y__rlDnObsu@ufvKctMtGsD+gOQ_4cJYYkz-uC7UG9rO7|H0u-8_Gazf zL%EQv33LZ{4wNq!kz~^Tn1cKqcQ*#GyZn2hGo6W;xO9r`d=}#9PDSkbF3MKo%JB6c zBaXB|jr<=i7d$2-I`5wGJWiA;J|=n8M zLMGB+8df0?kx=H-n9oFei6qm1$L^#4+ZpnbeY1QY~>l;O7jgZSM~VHdmKTFxvCH+;(H z^?SNH*@c6y^#9biCQJ77mdJFUzW206yEm#bF8$8KR$C-k;rX{4cF38u(zKBCh`H`Q zHJylQ6eP0@N>K#;pH4ZJHuvC7EREgjcBYpx0PUp`;Q-}o#qQ^#iQ7>JNBqU%F=%8qFB{PWt;O?N5Q3o7G#tDyGHQ zBviIrI(HSU8p>T-sKXTmkRHZ!Zu_}W{PT>RhLN6@4TwbviHcg)HVjFvNhCjB+bI)I zd!bfJ->sM2bA&LVFRBx*0T(k04%CZ^)k;X8*j$*f#O|cC^gKN3Uy}BlQ%VAZA(T4L zRhX&?W63<2Jb(nUi)d>rNhe{d`9(^koeJ{0RF5vNm8lGU3AEU1B7b}xfk`?up~VYK z(jD=r!;1(R@s@`$_d?pBy^Z&h_GS`*3C^htB58{!pVSNToLYVtkvvA(G^v^KahM7k zOI-d6?j0^;N;4FGgBQUC-X80KC)9#Hb-1s}>X+pokYI*WJvr8M2&C3wXco&UAeCAH zM#9Riut)Qd1YKVE($S>PpN+xmfsg|}=`Ntbl5!xMtd&OXtC;wrl`LeuZSGdTzv#LA zv9f0wNf9@==>o2+9ZG0XsijH5%MOKyb9pnq9qbv+1sH3L z3okz*VOuHxzZU@ir0A4}&us}84@4p|XmiKQ(pQNB63eh@fAZ)#(%Kpb1XDO~UmhrH zL`6Y&2M-PE(m%P$as7T;wsfcEPG)L8U2<3yjiO}HaGeYuMXoK`<5~?$veCtXD&D%` zxY>Q)SSiJe8o5a4s-TW$O8$dPhk@-5gZL#G^@|J|;^T*;qXcZx(m+#C7!VZ+wF+7~ zJ0y1_#6gyjxaxBv@e$&)yZ2h0jFVadWMwn)C8X5T<$chc0yGgi0OlN*yF;M$j4Ff2 z5izh$_<42c6FzJPTVz)|(G85}`8PRWPd|ygG)s0E&A!u8*!)?}y)}fp=&S#eFJC7k z!atXaL2aB$M6pq?*1@Edr2!`FEzQD@KvrJt(pp^`^irk(xS~Rz&iy;?^CeM$FEi4j zm(K>6XH1fP%kAvgZ!SQU?wgy*V5V0sjn@`s)#@rRSyo*|>WlwkPD9A&$xefhA#JEm zWbLbU)8%1`1M72JdL#KwTTB72!9_yLDys2v-Iy;9d!uL7bH?Y#a& zI~A%}7IQbxwb1<4cbZo$P)UM!)C!G9X6*w)QJc@M{uJ}?1|I|&#nt1;wJxNTFhH>I zHvLRM8P}0^XAurUWt{Nw18v$T|Lj-Bk`CCiSi6rj^@97oo>!d6i?G%2>L)<8kR4Wb zhH^XNKME=Dm>l6~;-aS8a3llMX}^t@*V;G#?AgvoKVraB;Qqy#EC_f+NUr;fK=mC? z9+4xc_rYXmdgJ0Mj#0)YPWKJNp4VBU$q8r5WS@A#vR3OSs4+lRZTJq8L?$mxy%9u$mslq8Q zoiXl)*elHw%8&J){wkdvD&xI{smc$+u>-X;3?CwQA%d>BRJBCrL@SE1RvBsymvO$ZFFQ5 ze)v;dpVWDGuwen&)3^!TQ_`<1Jj7!4 z5~=L9ppyHjR99(B4{3DTjF?V!o676hs;gJ+LVf?iaEuQwv-BW3Y_ucHG0J$zO8(jm zmEoEq{Bu;#1xEr}uZl;co3C1#xqntX{wh1Qlu~$pLR^1&K-IhL1&X(}jqdQ*JQ?Rf z%5JnS9;~m$+d)m$LIluZL63(34Dv6iL2i+|H8O~A#NP|3YPiYo8jsUNg^#PpI37GY(tV|W#=7h-O?>aM z=3|3A9AI6R^&)Y4HsYze)$GeI_*qblWMqP)@Lio~ zh$TWI2Bk{tTaWE^^1kw%XePWsS0x!U?>~X>V;?`1OW(LM*LU%==K#;YF?vb7F~IY} zdu#06juj@L^<#5rtejNKx)$|YwEKl=$;1eD_7}~{=NB!1Y?dcn_V{c7QF}+* z4-69@_$f$HU8!sIS-!L8HB}lq8=$KaCo^-eWH_5w-W?VsA+EYZ;KV@E6Xr>p0gd^; zeA+T5|GXW@MWalwBzlSdCZOkT+5tVRlrPe)iI*=osv4iR%q0LEMmK57*rd_oWNH|S zibrS+flqJY*oZn>htr*4#mr66YCFzq@$!a2n?TdA$$b+0c0~#?r+jQMPSB&GXUHuM zlvhJEsJ_AsAAn{w*}m6Qg9+OjhNW^EA;F2^qV&m9;oyugO{BQuB7Mp8v z;llVIRUHR$E{{QrO#d~AKWW2`d**tOp!QZ}D%`aKDY4^kO+_XF7 z^}8FuW-02YAnA(qtNif;IA~tKgrsL~Hmz7M&pXf!r#AGp%!Muw;Hkb+4Z?(Nphb{S z36+(T+CQ~}N{j(1oXd0lsl9Xrw7iJ+4O!jPKVfAx5WFW<^`o)l&FHkpgjKJ>93ez{ z2Ost`MDn0uZ$QQm>*+OxUqD=UW>YGf@uIlesg>@qF zB$6r?pg~eB+Jy|Ka1P37(RWKvGeC%gxxoGX_2jC{Ax2XMQPm0H#9>SD z4KNa0Wl()Gu)&c>l+u7l_`?NT97vz`#2vO6_>RPPF@CeeQRr{I ze;W+Yvk&$&uNd93y1cxwd;5I7UPvb|r|+EYpyy6yNW-QCv<;k;-?12N3bjnDD|xI= zo&}1;-)+m7xR5OCAHu{-heyy%>&y!$?Q!RtpHl}?OKO8hBNE*hDPjIyb{n}dIOHwX z5aD=JikSkVQAC>G&3pIx?1>Lg)ic_L`P4{ z3J2?RCwyX6a+$4q_6yD4(jTj|PA;XvTy7*YOf85H$@V+C=M=8it0iO4*PPgzAdZcS z(~gdBf>xAf#ijX+w7WC}!#gSVlBU1i(IdBMw9-q*DVEgZm%mCx@CC0bDw=#Re0a^@ zLvtun(s~-pCnzSmd*cR2LTKM7_v}48cU~wjuY~+3#0&4T7c0d(7Myi!pR?K2(N~@u zTX=Gwd7$((>q0ep!C-{tnDS$!!SgP|<+!y|;CJhs{ z#xI`iK!U&ACgCLR3n}xm_1ANz={!mpSs9*$ISiv&Su;}q<#u9Mf?_tSj z#2(6pk-X9lxmD209 zC}3|Za{ERUA!2Tk7;))Lbwf1)&a8j@miG(>)z32PKi8V|WNa*P!y~|&7bx7V0R8G8 zx!1UvN5PcILQij2>DFMs*@Wpl!gq$`_>^D6nMCt1LN8TQ2RQ*b8idjiG-`{H8L>K* zSV6P8s(3|qGkLH|Ti-X9zwOubDS9)@zNBg~bhtS@13G0pAK4FyS_w%_>Uy@$Qyh+eqLE?XM>^0cir&w^E zBrEeh3$gIB6k*#dDG?uF3t=w61q&wKxMkAqtGqv&911)+^S&LJ~@war+eq8I6~y)zH1|-Y?*qiGFs_p{%;G45bfr+(A$W^OC}l1cR@Y z#X*!osCfx>2C5?KQy|$;BAZ)C6K~pbwckEKuT~Et37i9n;O@fS7KDFO6uf$YB|vf? z(Gl;BrZ;3tMP&pQt2E5yOc(-$;?mL3O6w8)efNiEhf;Y7)q_-iqp5<^8zyT;J;@G6 zc$0)Mfa=hrA0Wy{sh#mRAs<1S8)x>@-M`*V2iaQKBhK`;A7-2w>rAWK^jAb(w1l(L z8j=&It8cDHskzA%Y~G~DHf|bkHG6rr0Uu;xZ^;5pH`yhSBb?)hZY{HBXh;2E23aKG z7a6rTx4&DFW!+2TQZss5pW5PQL&h}1q?ptW`0Z(X@Xdq1LFbF)tyH%=sF1r=JWB^g z$)0q`s$U+ebz2Y3I!)UT*g}Jy0@>J_-8SGTVVe0jqv3~V^cXZ38f&YE_$vD?&$2a% z3PPv%c6>UaT5!crCULcN)bo%UBWfNrn}$HE+w5lVtXLD9JlTn?3=Mk0>)7DUk-E6= z?LdMvA*;Fb5VhhgGMPL@$}o98sxEYO{c4@jz3l{Ad7J!Xh&XFCkfa@$x8NY0q6@;f zfC?PQ#1)jqVO$;E!F|;mzcA`_H9|h{;@g)t9a_>|@f_Ipn+gu@g87_T*T| zVx3PZv9YxFxJG(S4AlC{R+>Q{EZ~k~F<4(XvV6d<-pslW1SPyZi_EAP!ztI)o$xqG zm2UZ>_gX*@xFU2hfe}orrIE{Y<7yM@f>x>sk|V!YF{m2#QgS)|(NTSy98~7@RYh(L7*y~5Do$`dGU8^8F zpWep}n~=X2c|>4XYbUGdR?`%caCiD%v!bt>&`&iaL&vgih-WmK3@ID^5-#S6Ev-t&XV`(8A@>*dD6N?nC@{jKk<_Ppo5lgP{W zVvMi&$sQgUIf7bx7#WRwXItbWS5G&%FNnA7XAaNMvZ?LqbsQ2X$8~SL#mGPw5ylmz>Q5d3p2X<1%Urn_>tS4zv_@36uMbf}I!#7AY&Mx(5~xL#c9 zL(ag8bBEbVRumKjZ_cBB?|ML5#Cv)}pI1jZ;FQfn%8^3qtn~smNkLW4~qvfL_B5dEXpKV-!wE zHPA(BK7RZ#6KLQGcZi_Uwjz{Gqq#M=(mXas8?L{_xAdtc#1Sd!C4=8Iddf*ab)Y5g zqaG7WP2)+lEW7MS;b|~$*j96MSicQi5~?`JJFtC!$f+NWz+PAix2TAQX_bpiEG>V3 zV9)n7`A=!&zwqqAP6X7G-Mt4>fvZ(VNZQ>Zjwlr+J~on-yND=smpE_L;--katM7reZ17$}+{gKQc5Za=^FqJY z{byQwbYW^Ld%sC_HA4K9ibL$hnw-x|fv1Uoohtf${U`d_lkp+GKMRx(A!<7xINn7s zN>^(&vMo2iJ)+L!8&#$3jhG}5t$}pV(gl-S*TxR>Aa4O zbTd@Re5mkM)w^mzubYd>Ch-_i!G0)Mdvo8WW~HUx=psLKwYFg!bd^ zMtpS*umSg6a@?u4!Hy;Ds!&JoC>Q6#$;)R>g!gN*h>gd>)3ZBH^t#!@s$^O3k2>(7 z|799(ytTgdLH>E)6cq2kQdqkau>Xwti?dC4?=n;%9kN#T-O#nLPb2UlZ!0Ts@nj^(lTu;vGkPvRg@HtUn(Yyvl2c7u1!C~eb6jX&0|kkJ#B zDcZb^WU1l?VxO2%M;FkJUBJtnOptqi8T!GBuZ*d#6i}3VS{W6;wq2qak(?ebwjrg$dHx(UGu7ZH|5JgXBn{yH^(K zA+^UKZMI6~X5^U@=is+Iv-!@7>I{T;ai~{JV>XwA($$YE-69o4PXYJf_c<1eMrrNi zScpXRZEL($QM~ky=hYx&j83DCB=eYB<};!oly@fl85>|IUf>Mh2Q!ZozQZdibp3M0 z2aoS@DPAyZK%Vy%hJR!=&y&sfhtM9FOq~e4Wjk?+o%{Zu(|nXF>F-#HeT9wMISYg_ zqxz*ES2n=CqHtLC`{p!Qsfhg&3?N{_mS!;cHog*2mFC5$EnKZO`%bVxjn`78&_4?Xo!;)(T$Ah{9L({3TKgaN2<8o07L=JG$m7dW zm}kx;o5Zu_1_SiE7D9Pi8=&wn4#3R&BAgDn{QTPCScmmw;?F{1z8D;9HIcpcZ3T!^ z&3|@pFn)2cm?ga*zRD=>r4J4Wjsjart+<~>>KfW$Cxq-8%6_y`y z+3WC!yA`Zm_BzJIXzVI?x9CH~Wxs75^iI{knb%&F#rK}Sad^YXdLn}5bX+4toxI~K zu#hs^A^XM1PY;|zxW67}&6L}Ya)_p9zuwyoW;S%Fx6@EJLKF^IywK3k!G$)=6#(-5 ztGUh<*#J$UCok3a5>eF~xaVb26Q%IK5@2@uVPfupG%MwVeWDvAHwZC<)}e;-Cm~R9FV7b__`{?h9h|EZUiI zxxQ?dc<)KbHZk5r{}EqcGS8&h6Wv(z5v z!l%aJo{Ykf+kwi$XF>u}l&M>*_sn)r^J$-OL8z@;1XU>3ZXgk0)ynX;{&S^DLKh?o z{DA`?I|`Br<@s_=X$;-}__;y#Urem#6cu)7ZNA$C-nT_P8N(p88_!+%bTWXJ+tC_d z_-{rOc&;9N^p;(uW9jGxban^+=%XhZG(;=UZ(bd?vGgR$#;Wb)*O+I0dVwpGt;A2C z-TSUMF43}Uf<4VmkX>JIRI{G=l(1eGnb)6*g09@p?=(F3O+0bUnWws)v5E? z4Y2=0tTBN&!L8)HAB!x4kVo`WH0`*i_xJ!DN+8-Ay}Cjh zTt~F)Gi`{g!)-cJDKVB`Td#0$##g@6W%5w;EBH^9z~la_gL+LLeyAj1jwrsw&!%#s zsmPd88HdYy>9?3h_7C9FTd5HLZU}p-8kMdo_Sp8X*>Wr+tfBEIoXtxA+MW9!H5<rmW`31$09Gdq;c$?rcSI3$na+V>8b{maadYOk;D}4iOI?Fr;glSYx*JABo`> zvGY&so21fXkV^vhTmNggWJow8WCn2{yJdnbm^Q$6dd)kb8ZR=53g-wt(*iR?y}ZrS zOK;uv@89Y9Z3ww|ieX3A%`BoE$ax_=VCAL+u@jy|Nj^%;37$DBUl_NIG6 zJ3zz-R{B9(&NZpf58^*2gk{3yjYqdhTlk3KF^7W2>>FpT6~YcVIY&8Xd6UlSe(iA~6F+_Q0O+s+7sdF(XISuHShaG+Do^nkpX@MoA9VJp!%! zuT4Z~Xa^^<=fuo%N%Rm_9m-TQpWC5n!1eHO!^8@I5NxCVaVEAnSi_tT9`bfHKmcd? z1mP7nc@9>TPW@j}XjyAKoAJK~OtP<93|?o{L@R*Tu#1?{jFR~6DS`}%t`&pxlE)lq3PSemc@23cg$Q(@Mq&*l5M=j-lcCl-IO?HkHQ z6>V|fyv6*c6rj-(wpue!%wnxaqHXsfIoG`LG*ovwlD^rk;rrfsU{tuIBE_qHQ}vML z*1NrgwFZAH8~ppI8PCFICm`wU)`J&laTV9Mxj9}Fc|;`Ct){O~=?X&jmRVa1tL`|B zmPGZ=G5tO&8Bt{Iwcu z|8k4^KV@oG`k6sy+qh@CQMU^cv{v0KGpP=&WYtnP-?Y|jOQ1)eEh^U;b2l*xZ7UW= z{JJ@KzFT`AU{iVJ2U9G^43rrlKr1N-dur@b3Ls{vju-5aFJirvVoP2c+y?5 z{reiM!`97W*fpT67LVvOs-*&Tp`M+P=b+OoiPd3tjsmfv4iYJ+IVP1L`kg=;nz)W1nI#lAH*s)WfCQfu~xfmOwoH^TVm zndrSS`jmNad{|KTJtRYcH4U#1TKNE zi%+uNC4X#1-3XI@iVC;A<9|TpE}XEmEj-^NzZQ45k0TkLFzNk|oY5lYdeCSbo6k!4 z+K!G3JKJ3iUu&A>-Cw!`@Mk`V;2QsP6uy`)XT!~{*=@gN4wXK7^ee;s4zs$*Y}Do1 zMv@wIl8}CGJwx8EebAcmB$7B=v??3@)b%&0bH0iA;x8k|{P9`uw?b}60ZJ3jKY9#r z0O8bst%b47rH+vd3RTZ+t{~>=*p~o5>go;#&i_UH^BE&3O`LqObdM<;9V$YA*!^0o zy%!tA0>n z9e#tmja9cFNhEN%&Up&@pO|lkb0YOd%;}VESVrO8kB$RSlRo`grh4`n6APf`0JeWW<_ z9f;Qv0 zhdw3JbLOrtVS;ysQD>cy7Y8iisGnEaj zj#Qbab?C*7E-Rtn%nEv#EUSmAv;G`(*|0mJv<{rHiMey~d?CNLgrUow+JfKo%55QL zf}xPprM43A!dO5nVwd3(N1*?l>XhcIQlZ5nHX<@te>dQhF3x z<4>|nOx(PUH;|hPx)<4kylElsHq{S1sy<~mjE(jx zCzhfpYqo?lX}pdcH|O5zSL;yB8)_aif9K+V2)$zHe)kt^(r*42w*BJ*&U@NeY3t>x zV)3~*W2Laxn;n>fjb{P;LLj@pvNZjQLYX!?emYub5j zV5>U4ig}COIYCcF@^)nf&THXOMbLn%4f*m*VMv_ixNO)xWyS^7rE!T)$M(!JX8sk7 zq8^^^igvn0b>5q<$aS9ZBkvPku>>`CgqrmId(@_;Nn4J~LOYJj&#t7~m%hU@#YeyJ z5kVi=>KcD^@{a90A$givwXXiwzpAyOMSBg^7#3QamL=qZ2gGSPHf*mBoVXPJ-0E1p z0e2Je1_iTwXUp_M+ql&B^(q;xIe+ke&0Ba_}s@E$-9or&afgUB5(9=PeZD4GDg=w zgAvNzw>P*l<~xK-lQEU;=GO)L}~ zHX~mvbSsbjICf;1ij(Y4@>jer#3+_KMN9}=b<<}X%b$NIpf%tVfb}a2*wf@OU{L9e zq*S+`yDQDGoKzXot-N$C3)VObVjhpxzZr{0zSjC^KacSXQ5kc5!I|A8^%rw?K0Crf z`FxC_(a%Dgt}lfz^8OjWM)PCUiFZ@@VGp-o5=(U_P^O}{8le^zuI z%44(CAQ@+8LUqF5 zlq1W{P`6WypoI(Y^G|jbfgc}j2}0hFzI8vh+<_fESFh{9%Ce@$&Aj-7kGkeV3c6@d zI@yqoVf?>io;Bb2Z~ReiRSe+flsL5&qaA;_KYX8Ts({TjAHQ-bq|&A;r#bdr+TA zh~I)K++KN!uh*rM&AV-iFPL5K?t8EB^&@`3^89DE*YWqUg;xGO#S?4M*vaZ3PPz`s znE2_h21&*5X3nprEuhI zr3EANgitvS5EpxANMxeD623%}Ls<)x_J67iz+QQ7Jnmtm^;QG zq>X^sh_2g0^lj8{1gAS=dtr(9CB@0BK*jm$gBImAkjenG7Y=uvAEuG{WwX531BIu8 zjN#4gjnxF;QM6XFoHh{N5d!qAZdCUR(!a zA(I4LgfKLuC|{6d%prQF`Ee%R|3i>E^U)~r^Ir|Nt(cDZ3hY42K2ThcLlv8Siu*s= z#iIYHCBUl;Z+K&nYZ&v&jir1yBl9)aLnZ?eu@;_7+IRGB8avIt?nzDVsZUm( z=l}Ngj(}QQo{=p!Ge+(b?|GX+o(7aFI9<6bW0ywyb?@JI2Wzh|HXb;rY`u#4t%Pg{ zm^8pJOEU3b(Y51nV_ceXOwg=bO>5###ESW9TzTgK0K3~kTX~XJrA|7A&uy!8dg^2T zX6&$3LPy=sa88Dl2hmI^X!G{GXK@PgTTr(e5#|J1O{?>e4B>%RO}jTwPtD zssE&>EN*7$zX-Q|E3x^uQS2#>p2H3D zRfR!Ap7lA~g%~gFK2)yuTu4tGuvTxp6`76i!=H{WQJ1X8oe9SMSxd#U><}gPXdz{59*T?SADGHEx>EER0Z6C&|>FV?SFS9dk>OTi!EGnIl+?%y*I$Ars z5~zWiRyhu_qeKfHzqwJ?2KXIwTq4$T-6!)Zb+b^ao<8+rU1Jp2yrlg3!-XbHdjmEw zX4|-Ru$v)br$i&NPK3p0*Rg`0%96;dYY&x=m%+E`I_SAf)S6Hxh`)&o{i*MqP-3+= zY-%X*B9Po0-CO|=K0~NEb6kGFBjtD{W%A=!ZtOtgr7T#?)tD(wn2&tVE{%H4csxT) z!=y9j_a;><6;>>y|G_c2b4nF|Asq(CH2e!i7C(RM*%7%`B$^Vdk*t~?e>JQF>q5hd zy18^9btIp8^$G*3A}PSruEWi_6|Gn`Xh_Kc1QJ$9$oiOTZG7J++g#^~;8sYOy=~xs zXU;=X)<3hG+&bV{8sedC(IxjLC7*BO($v9yO)ti797jOmyB;t3)_uM@fLI~Ch>*;v z(thN3*UP1k1G#@q%mPaW;iZ+pj2-xpIi3tedrK!JPfV{Lzlb~V_RBtC3=O)N?;^K0 z6i>4!gpYIgsfU#T8d6snf^T-DpAK_YjJf@Kbbn}gIxQ6P+B+bMLr@6Geb%H#-Ni zP?r|uCi=s+!Xo-42krU05Ual(#lH{#SjMXR+$_JB+5U@F%BB;t*z{(%xIorPn zeW4XL`P3e$gww;6rT=W$D3%uoTz0G8(BGM{t%8*+^2RR1nUGGMKpD}6Kt}#KMBkhl zgyd!Qc`I+3bf6_w3UVVT+dU`6DLh|7!@sm@B@Ck&Nc*jxk(eu*smd^S<^LD0h3Yta7(Iz2$tgyiY8(ia-+X;;LDnZ6&%e9<1g+Ik|pf$68_W2Kg= zF7Ur^*qGh%cmKZaHR*E_p=|1DohWpR`be8tbsX9Cr#Km(%kGVsi##^z88Z`Er z$7**{l}q%y#lXc2(mL>~a<)YF)r%DgIQ(YnBEv0h)1NEt6`nsBgDyzB!{TRGYqnIZ zeZ(@eJjOiHdPfT{Dx8qP*vnF;e$0o^aBwn8%2E9qWYzaCKuZ5t@{bDC9MeDjV zPm6>Aofu?o0W%9F>pLB&rOHfDh;Lm1vssp)>syf};3Sk5hBV`D+AK>WEmtPF;q@Ya zxh6gVrRo@Rwy+I$X7nY+OR24K!C{>JRH1*pGD`HK|A#88)WEJbP0c5fMFAr94Hjfo zxfs9#f8vs8+U$p!)H>e4MOC{5jpG`1DPA>J-12ftbx-sq*AAoBk+ZwmPGYoY8Xl$E zf%wA7o%&5K1rXzf?h$AMXc+7zn2Lm(Ykpk@7b@X~V%$RI2h+eJ5H~PKnMYH0ZBgSl zHO>UPjb?ay&}b(0I z12gUC`iJ2<-U3-?D{S9~>P@wz+=-VJHLR_++ITg}Wvg*fmR~Gesj;Bl(}NPb;oBDq zsO<4etL@ai44W?TAr~RM%be*3Od;c4xC|b>+OM*@lG3;TR9H7A$ADa&m{pe5tn(*` z2)_jC-TBdX_q`+i!Vg^O#BWy}mX0Vu+RiVjolX$np7|Kqj?an&?%k=l>u^h3?PB;- zy|L??H%l8y;euOTGvcdlrd(fBfdt=#2)>K=?xb99HhdfvA2sCw#NXC<&AHsQ%u6HGW#Jp!)AmuZ`Op^&aMWgyz?4xyqyR_rqWp1`SYQ@~38ICxu zyCX7Q>~clsL3YFOH(j^e?(4){QT0uy-9sFKv~WWS9)3FFJXv){Fpf^ex9Vs{%1jsv zR-c?n2G>P+{x&|yi8}JCx_Scm&Ti`1r3q1i*JFa!Gv<50Iz7L#lOn=dI^@6ot2&3t z`qJ^0Kk@?jiC--P4^$yEILNp~4WZn{(!J15XENokx*hE<8Ar?L2rJAKG8Mf$W2L^I1}4_w!heQL{ErTPW8R#a>6ON-<^nEEjz3M=XgOz43@R)i_-**n zjb4&d!AjWwypw%@TAcxYU&T{aA6f1B4Ba;6$}T_z*5V5aEeY=rRtU`6Y^8A&Gq`Wp zkzT(Fq@>V9Akr+*SgZ(j-!H@z8M0jx!#_3P+0}Yj+c(#}_X?)yx+`>zNn>*lP3Q0- zXRLeNoi*nb6vr7flMdO=<#}LUhs~;DVwoHv7G5V(9Sg)??NAWzTa8$_KxMT`ymBf- zDmds#r-`$Z7Bgjkicmnqt@vZa<7bEYxRTvla;8UakY6@|Ife4GZ!qY@y<)VPU&nB5e84WD#cpl5eQ(vf z&jEJjT#+_nQP+=X)YoY*Dln3f3W*Nxzm|6g)YeO!Og*|J zq=-_ac>{~6X&*p8vua}{p|SJ8MahZ<7V@y(Hj)*^IXSw3ot9;Ge&Cc)-E8&L<^Y4IiX9= z{2f=aXU|B`+0PbZOs0Z%?pzN3XIzWkQ-FS0WGirN9U*np&mFTRP3>JY--#f5S}{)| z@24tr#Ei~Sru~nY9!UV0J;={kmZzy4QjI#47+*iq)er9UJ+NNkKFW}DbTeRmHDq5I zhqaz&f6JIerv@s!3aCdjX#aCx)>2ur*94$pnIE`Ut$-uyK~*&l`U^CgLC=k z0}O5oS+(esTt0Y+P;|_kKQC7pt|o4m^EsAs$#&z##w ztOMEnJa-$VCGMhuC^(9z%VlIU$2sZC{c+I#~(XTt(OG@@MazwCK&&6fve%V9Bbp?%E%(2dZH z-W!p?9)pwSBl>}acNpeFM0wN!X1=KC<^4%KkUf)t4!;lmJ)!dauS*`Bd+F!gyWb*% zfl?WQH5Gm9fjQzR*A0zqu@9_IaK1e1PLx9ZohvHan~FbKCog&%83MWcZbvJ0anNkm zD@$bD)^p;)FxG?8quo{UjzjdYtwRjpV0m<2==Cj=p@tZLOXj@aen=s34naMXI#1&a z8iOLRDWBXVEy}hlGnTb)rqT=vms=11Ttb}yT+&^dD{es@vz#zZ(9Qbhn;lI52w8RvIMW3X&UyYbvSz2*mN)4TSK%(Y6jm{AFJ_ZkrMbI{*y)D#z*9jG?9X z=Nj2uK{pR(ZCOHEB>W2iX(qGzTIW3(V7`l*;|0KmfNy_@;(syo7S3W>dun}r+4mBk zXAA0JifKmIZ|F5Z85Kw7J|*=-`(T=)eXW|F^Q=a}S<|mkWw@qw(cVx)?S&>snk8xHb>? zd_aRek<$H}!fs45khBD>ctzZPGsd=~O~A&&g(g~VH4G)+w7Sc=^W{a?yk;#Gu3wGT zSV_IoX)2%H+8I93`&`~_HrE8-Z6ew5Q%cdTYD-8AKm9UmT?MSiSZqq^m~8ywXsmH> z-#kF+HKcz}`QyL*o|rdPAZ5shH8I7~mWX6Ge$Ok#Mz~z7T$3w?;*Ta)wVOea8F^>| z8|Z4fM`1);Pvy>!aNq?3`duo&q*5n)-qvk13KBJO&ehC+m!D$Ej>|T?wG~)t{t@C& z?WMd_A9<;|*{BkdHO6P^q2_Lv$6qPvNNzMsht(~;$jh2`^T`X4^d+!O@ghEiDcYWM zLyKQ|f3>I&a@&+`8fTT9309u6XxNG{ltXUl6wAY!#&)~CZ-3=A_4|l+Aa_HR)40&F zXM$@%N;Cyvv3!cJk@o`D-50A&>ZP5vRu)hZlj#SCEvd-I(rtKBKvo)K>Aw{1aX-bK zZ1$9omP)h>ddl6Tw(+zf_rpwnKPwo^g`RWR^qD&5=KqGBK|EanzaMotVT$w6lke3z zyAh}$WS|t3q=lU^XF*0vuUjv#H=l_Ocb}ps%hwZz^i)L!v`FX>2 zC)#daP^d6vA}S0j1OOrPllUVAwW09kU+rEhY({#VWcrP0)hPOBVo6blUxg9e*n+08 z7r~;6N0@6TcfvXsio5nj96h<@2F$%@bzc4`>9Ejgc(pEij#J;j>A7KVUN4)B)PvvH zXHe33C5*#BT;$>c=?k@T#PGDM8ib+~9bqg6w$@pGn(I(q{NJ$tAJx+tb!^Hd3^~iq4&sKljuK~N2SXbrz3Irm=;3fxUAZ5zUAI2w=4*4U z&;Wk6_@BeZO7Y9+w&JuiS$u@7Tc=(UAW`M`ub?tMQd)Rb3YH6W8EyR|YJNDr&R}fv zrIpcD#qVcR2H;!53wQ#g2=%>1rBCWTdp7zzMVRXORd642nT`Klp08OgTUQ$8H`077@P|M0dXyyd%i80TNgIjXQ6K32P9UTq1c zj;x!;sP1O@7b@T|MM_+|dK%T;&6B#s8^BC+W+Xm4%|dhaje?BR&QmG=Yr#WS`bn$4 zXt!D~o9Y>H;5!klZ{t@U3aCp{n%XSxNbJ#M0o}g4cN|6`_B*F%rxT5Q#@&$VxQi%% zW^%V2KkE8(xFrV2Nc*ReRbVWjg!*-FvDUS&2^ZNg!?C%$mSE!{ppM*LK|YCr;PHUO zvpqG}HDs^B4V{TT+^x3Hhkm-`=B@E_2kPr--XLIt*6WyJO8_4?fCF0ujt#~ ztx8;nuUH@FJ9O`?#G%XkUcOZRLQs0@tJuz78f0voRj<9l?pYEioUrC8A5~6#P9kq~ zP9}QOR;QxC<)d#N*xUjHeIJ>zl=xBC^$TA`XL_(kQ34L zUL;*=XQT|e#4|Ot05JC8)?{`)1&q5;vI>VmAApr!#K`DNV7C-GuUWV8+ieH>fTSSm z>DkZ%)}P|(PoXP-)$lW(2eA1bt3k8?(h@Ai|5UDq2LLkm8x6_KhD()^d+Y*`WOz{@ z&Q*r@U=Z0ruV+kbp_qG+7NHpn`$E0S0LhJYY!J!>Kw=Pu2mZT>pWTn-f#De>rN5q@ zgoW#4t$;Zu04c-6$wZn0OzF&FIRffskQB6wgqG}V?PlOxkq?PrJ1UTp441F369-zX zPD8#h6)&d7Ojc84YQZ3$wuAwD;0R6otM^F%nn4H`j#+)(r!z|e;{-Ovy}+@uT> zfbDD|cn{?e#0@$LKhAiqNdn*rH|U#t`m{}sY~NUS`_IQu&wXd#USydjSIkgbWz0|a zESNX|eFMNEGJC~{{_Hb4fsk(`NcI6YFt|>r`m-eTB)B(@SH;M@!V}UFkt8-y6+LCEUp1+W_v0^mJzRV0rBd^1 z>rEZYtt1S1`u1V8ub1WP?|q;xLaGDr-*cl_s(h;IXknsP`AJx1<<@cXoHMWe*3Je}^E}6xy%b zgiNmjr3y;NfF1X>KmIw;r>)A1ACF$ugJSnXYwg1enUtZtOmfez>nV=zgK+-HOqeL4 zeOL@|%w{PtI{roC+n)49|6Kg}GUdI~WqHkZWPO>w<#;4_yX$shUG{oEht%DzhzC)F zX8^5$zeXGCF*4m83zt0-;#K z&zirL!JWS!_aOpW;fGv9V=F9`2V%~Ql2N-lF>{H$gH zlua_GeGszG6GQyJEP$w%P~fmB$N{`OHdPN9z0#bpECbq`KE*@dd7TYKqh_}JK;qQzB$NCgn>t76n)`9b4*?=m#x7%m@HbeZ zww%=_?<_vC3(AsZ(+ND#ks zx)o13$9ib8bM5J&rDrg9SZf}+g<-{h57=9h0$8|J-32!tj7y+sFw72H%__uOw*3%<50Nvnn}+#E)dC-m57+c zcH-HTUvStQyaw!!hSFYZhq>HdG8daw&3ah0gnbqgbfw|& z?+$X9jB3@|21#5`V+hhT0a*mk=B7BSng7njO!VHz1s$%cP~XcMV*|1cM6^4sd*FT7 ztlGcnp7nH=s`|mh#VC|3|3;OX1mDWws;cp8%R=WJA01YH{k_QL-^I}nJQIsp?MI(i z+pGSxo#GuLt=lWE16%rPrx9cmQu#HAwK6qGYm=t*01`15M}9;Q7ei5ADyWGnhyS+)p@gX7t7}B z>wib)+x@%DUE_G`p$UTGQ^iE>@XYVW6lQ3$`;{d$qqDXnCf_5Eg;v zvSN}`6Dq8qi>3spb~Y0Cod!nt4T+FD7?k}d<~Dy~_4%Qny1Tztbc>o$ctt)9$}f+30L2 z^X&STh_WoJQhpZe;hV+cnCsVr#k^Z(gq70HP-H;KGO>$-oOI>?6jTPk-mX}UD-mZI zxj6||7|h>x@USfYiMLmUmXjxFE0U}?LRD__b=x|`D6z8$a^hEcEi0Q7u}j|9z+|M& zFs+hR4zr;%9q^rVb4yJi0&yb=KG}K$nniW-nL{fyA{|F@BN5YpNe?JXIT)X>987s7 zyZ>heT$tBnM zflh^ukRy}h+xFkO6H&O_KiHikn$&ye%KABb_T_m_wZhd%5P2PP0hA8=;CkTr+Pg(E z`zpdmzi{SyMs2^4QVtmkN+;_m7t)^+&zKkB=Q+t)&UdmNTDS{u$9|5$O2hil;rG>d z3WT;s&#Aq-I+6@&YFvXFXQc@<{d2|pPrmA)_g*iT1t_ieYYi*BMF7`t5?8NdcEWB~ ztl?i-J3LW{jZ9#eu2^vn+ikwR;M!u{8~nM6qQ z95#G5ajwG=c9d#Xf1R=iEd2g}$Nz+mup+}3rw)v*^MFs9d5k}6jsCTt!A~GI%EXe7 zyRJ3VH2eqbm9J*OGg5*bR9xqc%jJQ~{WX_eJntbEW*A3dv0Ss4<}QcYTma(>H`jMj zt4#;)+9c2Cuc<YcQ}Xsp`Qax8v5qiKA897ZQ;^`8Sy-S58W9PpuW}9idKcBRlfvf)*=80 zocvaaYnyP5eCd~2GW_V5;?Kpcx?bnu4)Gdazuwm$JdO& zQa?F9+8hn}?2zBP@a{NIJCd8jB0lQw-M_>pusX%2|L zlIRyh?~sP}%HdhrLAz5rPsXk&MGlg7d8{fF@!IU$CB{e;wn|cchrFh;{Ln61p$TQe z;p7pzFe2k0c;4-4b!z)5mspV@w5^9quCVDW!%bH>j8I`{p> z>#omhQF!}-$*&piWCJl0qu-R#gr!*fO3e|!0THNnn-v>+9|lOH!Z@Wd6M&N2&g%ICQ%R; zM*l4I0>@vtcM$sk(h`1me?uP}aW)m$-{i^X@sLF1qqsTWp`2KnvZHM7HNdGDBDkDg zHn=1rHGNgLV_7W6^4y>55 ze^~f!Cq}5s?o#`m7$fHP6@;lkrbk`ITPH{WE&fc>&zXQCpvIenHr%GUY#!b}dLvTT zy@1gz5I=0JjwM2MDG48})bB>#tTPH$nDKQZq8Br{pN0lzah4>?cPwIUAi@smU>g1L z+&Q?Pv%!_`hcSzrFD5GgW@eVy&iJ9|p8UgYeke1$W|DRn2P6auaNFa+^x*aMcCk~v zI%*?}m2&*oi|cOWj?A_MlV(A?PbqTRF1$C7pVB5Qb7Vg*SZlV6OE-J3cgEl$Fis@w z9Ud+E890xLvf8mDmxvz7xj3mc8W8zdrAfe{qR{IubOVV4mj48-dL%-7OSt3b|B**c z?tiIbx=+&(i8x01NHbRGV@4w1%274eEmEq7M7?K_BdD&tYwZ9IxY+o)bPInHpmF5-r$yowV@4(&O}A!YuC#{Ph6%^$xPX#m z^OZ~1w(u4SxuL(NueN7OOBA_zO2Dc10l-*>b+`D%UMg#Fi`@_VB_MS~nO-HsQii0~ zu|5OLQxJu3>>FSQ%99b^T6&bkeZJ!;a-le@JJH8u>JDI!MF6yVVK^$};Kx&^&PM4L zxdcY{@_z9o!46mlUv-GIOY8*>0hDvF;Fqy`UHnN(0hc>Y^4NUdJ*cZU5B#>0cqgyV zMA@4y{{8nyKJwPDBl^pK<;%uLeGsgbey!Vk0%Z~MJe%XcQYRi57Y(}RC%bsvmfn@@ z3EAK=lcI%9%kA*QbXq<8VwL4YA-4OqNvH^@`grDF$!_Qi0NqINz9}k@PaB2s^fEc8 z_T9od7Cx8|ahQ~FEicWcO?`E(ZXVTvH}8di7019Lun1~3`Z=fQ!4&7yK3tD`q;&Ir z%1Tc-#PFFP@C$ix>`7abp_t*0#WC77n`dY2eQ7 zNX|=_?G@hhVdTi?7`Q7<&Qy;i7h#+ltV(@dGdS6t+9z|1l-hq>1()v z%;0MM~@4hKp>hPTl|v|H#x=Vuzfz|^Clfj(9T zt@iHq%}sc844Y#PZxsg7boh}D34(hh6fLBOeLU(w6zosx>%(iyk}K86xso_7mJy&n zyO8MvFcErt;Sxkel2qxWZ}1S!0;&!LBrZXcHvWgQpX@D@6(&eqsEy4}NLt9TpmHHP zzq394IZIn=+-LdX3js{j&GGx|ZgKEaFds}#>(o9PQE&~)7vHWKkxD;|H76nLoBxZF zA4i$RLy%``x}B_sc?Ve>;UjNPaJbXIh|aRs?CoCMUG zLVU>FAPL)B(SsvE-C6|ptYidS+ftqbI*2ha{}TRcLLboF;i=+bT0!W=PrwtfD+!<| z2Wz}Df%b$X#x5Nyz*iPPmlgiBD@NW_QAv&rOCOcUV>3R|DjEa?gDk9+PnxZ7bI8ak zT?b~T*gHXS4xdzYILyk&)17{1D`t?5gI)Wyi5Bg_2hv^UrOp< z0x|hlaB=Ug3eW|R5D^6ok{2JzB&^C{e zzo=ZvN8{k}ubF)Z{XaClc|27A`#)SMD%BKaXOv1sL?P>`6!jJ=35gNemm!2Kr;;tp zB!v=VNr*!BC6i8+c8 zk^N;og$1UQ_Ly+@OEFMJSw7z>Xg6eNCr(VaGW!?W+T)5}3JWM2pDp#%p6efI@5K&N zx|;n8aWXr_3JL&;yV4nN-ip-CWLNSbwMfbJa_wB;lDjn(u;|)6ucV`4eQzZyWw`HA zJ|WdWW_vo6CCv?B#>O=WURbCpesNIJ^u;kzJ2waL6ns-Z4VC?qNptr+Ciif)Q9eK! z5;!ca4&@lVyHYh#Lr1d;y~l3TD7p1JbbdVaD6-p-He`Y+k_tccds z74*JmzGQT#*Zf`j#6`b9;69takLvDErB0p55M|)+TIsL7R&qr81!`%mSW*F9)VQ*a z8Jj*Ls~|+dAdQsmmvYZV9l5pN2rAvGG6JE}T5X!ssl~imPGB+;jbuMP*WP^D!K52tm2j4e(JAzc~{!Cdw)F>t+*iQ`^K zA#}+t7i|#GV4sdSXt?}~83mjxNz&&8oTi+5iZIHK>=udv1i#>V(63EN1a~4rXKEls z!s2okoi~sYT1jP6=y_CA5773=uA zgEW&{*6Gea6sclUw7H%JHcQ>7D>LfVTbGd)w?_T77wTo}iec)=56wU?G4miQM!k~s zaS=s1=`oC`1LH*=JK~7X+vF_K6nu85TEgDpec6v{`(ane)mroB>5#BE zP-N-;gi5)b%k0x;tVq;4Esbwau!qdxxa69C{i1=pB6IGd(4i5gDEOd*FT8f^#mWhC z_Seu3tuiCP7xTc9W)N-vNb9cKp%s1rGA7^7e`?EHBt38A8x$MnhoO@aG^yX8-ZO0e zd|AFj6WDn~s#IUnU~m{n?WzfEO!1r`_nxlEvie(l$g@AV{sU0zmPeQ^xPkM2@ey|_ ztB+c&Zf07gT%$Zgn73x5$$(-$I)7zM86`8eY#gNz#rKPW-WO_4!=L!r7Et)mZjx2tX7sJTD-tF) z4n?>{GP}!u9Iv`?Qq?NpkO_2u&Oqzp+N$&+d_U#Y-Mha$-zB#meFR-`syr#_A8c{s zkoIZL$=?n_-KBn+vFm5RbTU&o@Cf`~9tn)Q>EWS(G|_<`ie=XU-4=hl3L>EmJf$otQ=hP+@#@A4SLU_z z=g%Bp67-x?C9bq-IyWW~gW<*pITu6yY*=Z}#M2Izm|i>&yg+&qr?nwh7lGp%554XS zNYCs5nfRZWjz2cWiJ#f??W!qXj%jEe0xPcK<+u?@oSCbyEqJc&j*eo~i#9mB$84Me zNg|cNeiy{({Ss4uZJ9a3%6k~l97*L6m~9TzKsvbSG3*a5@_HcJM|w(eB>aa0x2k3- zk!;_a#wv~4$UYHGi!^5&WGeFDs^4b@K9zMTzQ$Dl&Ne++C3Di5Vd1O(Z{P7U;YxFl zm^G(fj!6KdK`b83yb9B?<#YBah@WSISazkdBzRgV8xVXv^NC;tJ74IFq&-{?oDEmI z%67|owdium{c+z}q@^jltJ)E!%*fC+D5O=xi5Ap<#9g(%u&@dukpe^xl&tg%s2bL zqZ{rQhMHtcmiH46nlA+{^O2BpSl^i`CtOd84DlGV7<*r?{u=RV;|IC+MWYhjgH?aVFB(DU9KEJ<9PY;5X{Khe zo7`Rw#{7P4$kOB}XSfNy?X%22TpCf#*6K-ERD|a+RP3LMGEd47Y%-2vTL-jS4q-kc z_UnJUxV8XN^S% zui1J(kr+A2O=Pto{Q)%4t;zD*`>v_2n_jTPK*`Ga$L%h_qza$aE0zMbwAriQHhvtd z?`s_B{U2gR1!fb}a}`3*YlvCQnc^oJYcvv5*=7YDIwn6c)9CyU;gwIpc>P(^HI!-7E^kS@BlFB&dKJU;AIR$R zMdvvG_4N7o*`#)m61L2t(8KMV*55Wf5Aiy8_F`0wkzv}I+wQy92{Nm-9jCggw|XOv z56PEFl1aaAUAfYMzW2n^QxM=@gkC6$#${*GxAXo&S!#0*jRkvm&{bWMlks+y((iy* z-nt7ok!8gyc1eC={Ema0w0q#JAv(~7k66bPJ^ii;rKKbY+Wggp=LE?o2m2w?56uu1 z36DE^0~Ui-sW|rI|N2_(lcGz-Nh{YKi3Es1Ia8E<_df9)yYR}x>$*^V0Zf9rS6M5{wgc=0I+((Y)gAis08xW$E4h65O7U=V zGkE{88A3V{b+6_Ao&(!84S8jHS*zv*3v9e$DU<_j>=Z-^!idvAH5KC&x3$1~1|A&~aJ(-Hg2U+z?#7~OT6aM?85YBH() z4YCt^2qe|)lSZ^)?Vb@4Eo2?ap~@C1nI!u&sn;&Y@Ldf-tF{e3n7GoZ za!vkak^h?~1FFLpyi@MI$!|}oou)8R+GPdhJUXIvzZSgTS~z7eaG0K=vHPmT?>inc zNnmE{u+-XjX-=8ktuN0e4MSB;!R0sQeIK@aOAq44k)TOR4@IG%(QfF3-Mt?486!gx zxAaYSF@IMmYb&fJGl6GM6eq|i1f=@un#|2;_|#toK8o(I|A`KZD{ys!D59Z6446cS z4u;IJ7o$9%M;sczwkJWb*Fzf)sZA1)Hh-IRFLp4SVDfpy2@GlpSM)WK!`S{nOYa7U z#lgoH-ChL0031{&GYcLd-vzd<`q>X$oLkhM&9x}G6Lc~PRsj$FfT9WLlpsjl@X6iT zKj+{>aY9o{9EAm$HuU!E`s{kXya`?YBZD*V1k$WwGxAg5h8NU`#RNPj93C)<43z*+ zTz>h=d6<&v3H6UKqdRk%QJFH}ZwtK^yT+T`?MUme(7}fB;;4HQJ444_ZE)&v{sMSJmFuW;TvE^MrfPM|Q)o)-rv zrRY@JKAzLbGFrjPJw&R(A5O#^iJ%fvQ}Y|w%z62%M0Hh8)hajK*I zztt`Av=hugU#HyAyMNb*r|74$OnJ~Cet+N;tnqgzTp()feCrgY#il^?PX4cL+kC_B z-5xXtzL;N_Dk^+*@U@wK^OT$5#_!1t+l9h;DS2+^^c1NxE#eSQ7YW(+ai~bgCAO>}2okYDQvoc@t=uwb>56@?El*3wCXJvi#iOV{Q1`$=(^9|N{vOxEeaB3Wm$bg#wk*$;e-A#(uU3Y- zZ!+Tn>1;$w;ddRo3#X!zp%11djQ1t9b?;~InKa}#oT{woPWk#35MJL0H$U0XvFxdE z9m6^ux#cwlp95w=*NFySX!c8kd2ZVk(Cn7_(3F?(Rquwph|XxJ2H^ij3x#T#ytZZ3XBK&~)FatJdMgr`eDau1n< zVkvecXckxgdq(huu=5w20_ivM3#fP1zU!eS+?bHx(TjY0q>-#|G;D|(+zUtE+j)3a zZZ#T&lXtzjthP~#jQm7@?-qDK42&eac-aVbyxE2&F|B7~HjB{e0d2^Qqxwf|cq7T_ zJGjy-jpWn0+FS+LHw)B8e03)>egIUv=X63L%R1C(3qS(P224g0km^S}4Ai*TQX_MT zpaArgOz`Hz#rA7CCyamhhT)Moc{K%H_Mewv%iG3sQDWzLvjR^N=F;r1)2q3sdf|wW ztNFLSIcugHH#!c`Zo{bX2q4sZejI(|k}#MV@xq85yNimV{;0iNX5yICB|cKVEcp{S zFD%oJmP{<_0Jp?1tHY^8FL#ch?3>~Rl~bQW0D1xB+loYZaM08KHn5M;O5XrexR^z= z8KJ0>N<+($-=<2PKwmZ$b;cj^f#+E0Za!DK13QjxT<<3z3l_1{n=~kL z=?Xve{Mh-=7ks^Hqe!*l8Ge^PvNYhY0(;ih9+dHF@M0=X^oP^v0y8)kqJ9WGj@&S; zwcl05#jXQ#a@YSVV0THv-(S`|NjO9*^axmh@Rv29p^ZH4Lz#@T8tEm`b>FfsH*shH zp(clAHDz|Qe{UkQWTmP@y?Q16Rg_6ye})R9_z&}IDM@%7g4^N6mw zg=J8|3!TkDe3*7!;k;=(d|@kotD~HK{YkBOg6DI+wR~2UR*yuSugIv_@*%KFvkMUd zeQU_f-bXEa;b2&1x=fHfIEM{7;L(qHX*uEBBd> z9Rt>1hG@e-nnL!ih!*g{R&UAGvScx%Z?4Ee7Sh8s6EH3L0tHlXrRPw4&uIPooRZc+ z59m+E?(VdW;zCbo{L9; zb_}n^bRY#ohN9Pkqu}YPO@uRtDsJM%)WdSfMQt`eLRwW$8V3wZ^sqR9R@(#U>D-?mOH)6}ne=UDE;9?iQM77j0_uf&&&cPFGw;4ff9iZ;;vE>kmj^+O3&vY^R*&o_r zdA{%HsNl)bnZEd@)KuzukL@m$p?vpaT5Z(ZHTTDdB`2F&Q_2hW@_E4VJcS7d^AF(2 zU=nV?tQ)b56XZ)v9Mt13)|)#M^4|H z#Rs?(u}fV1!a}Y0!jOcG_tY+*urjqk)qNLJS$AiOnRU-q5_b)b=y)M}7|J5)ayOrc zyroxFp1_XsLzUfHRdJi|kVq#oxC|g9TLlB}cURkD&P;_(T--$8xCzl^Nv1++yc~+a z5|Xb3Epi-GRcd_|rBwO(#GI=0mM00B}UJMJ?TB_??3%wTH) zWMTP~VKzkIf-6X+T^cU?b*TxHQB2rtY4Gt5(LUZ>?k1UeSNs3N>Fj`#S(%h0AO15rK#hjGJ~!yp6H zGhg?IW7kKMRaFelG`c)rJ1x8|cei=3ElZ~KPS1S&ptt^EUu{)E@P{s6(?6U(zGX1&nCtI#!yedgr!|gYykSPwo=%8-Pj)`_ z;MB*g zcrkEHQsnkLzHgxEbrz*wSyF7BJE#h)K2M1QWlZ?nksO0aHY76*=!hG4*JZxKB$kCko5eG9Jb`oU z2r-W|<{+N0;u1E@#IjPJ_{YQf{qw+2Xeiz{wbS`MQba@?sl|&YVtV%Z_P`IY#mC?Z zST+1W!lLPRNl#sPTW(M6$_#Vlf88d=-hm7V3EDP6zj#^LR0=!NXERy$`=oFEAG1TX z;@te}a}PfKY+U#>d^G6g<*Su%s|Sn&kNw%LbU*u%Kx^L6Iq+Fmr04jy>i=ykyiPWi ztYqK^9lKAFMeHnW>y4rH@QB^t?`CdFzB$vAtyId)`P&yrqmb(kfCl~h;2099?3P2A z-l@2HQbSy1JS9p+=g`15bri@|7CyE5POxvtdF*q{78F={%I#9Ga$`@V=Om#k!0?b` z!Yzo$AshsUUKsAQ4#T@ujTcvy5+y?39Yg-65TdJ@>mo$*C~$4apT|c=mu|?^|!JB<5_0}joCU4cS+C({g2Nu z(ZiE9B<>y6+SL}=Fv=0~RDN;U z9n$yk*ugr@(T7lX%nW2`KOue3A$6`Pjxhc-GjvS_#$J=1q_4(2 zl0?X&h+VyL#xo$=GnxGMKD2EeT<6W+4(XuhtuNEDoPa0AHO8yMEf06Y@-zf<6`to| z(F6us<0zYC+`8tDS3Tf?2&8Q_yk9>4Q+JfniTn?)=*DiJFU$&!I?M0X-cvI>RmlC% ze)x6Q`(DSmvR|?MyK_TSp1GYDn*45OsLbulV@Wdp*I4q@G9=1_SmzFaYBjxjBy07S zP{6&JqP}VxnygETF$L^hzh?d9h#ZKIAjF<$DHENjr?K1N3+Mg{5XQc zHryH~0@S)RBy*^Z;w$;!g6__FLR?e1zZM}V^+kdz>s=qJWEK`fkbw@?c_v9tObkun3LifKj8jdja(gumy1T>Pk zZhKq>->#SvZrZ^jv2LFIU)UKFJfU$f56VDKBy)5?!FTG(hJ!D~*o47d(6?PHt3XH- z6Q|W?Bru$8`@SxuWkR6i3brz5@9EjRwg}`86U&wPg@+S>ufQLHhVj9jr{Gk<_1jl3 zjGkER-}u1I`2Yi2@P*?~-claQKzsvc6Cl7jdrO6WWuRw#jft)Fb%RV-2e+Kz4@L%= z-}SsZg!jKo)9#kd4M~b7Z$D0I#WY&%n7XD?V&bqfeH^U4z)Mbdt5RR}NJQBo0CT zLaOx59cB;oB$2F!^3RN@A#h!H6@2pT0oao1*@TbX_L+FU@oN9(AbQ`dh1m3P@T10! z))fuGUw@#pA7zEAQ+S7g!wHQ|q>?Z+V$@6_66nj2{@*2Nkfq#R!a$rg5Eh$5;RTri z>=?rY*OAV*HGJJbnuf-;_t?rM--e8QcDvn$v~KnF(cLox9@_;?H&B5W@7Wwbo!*nf z3YW9{CtYmHJ0qYTQuLtbokwmS-^n*QV~b-Ro`mlRa8pHOXXqmGsPloBCjCdgYcu$$4TYP+3f;oSgEto$hYNOFZHX*KE6vR` zQyM8y7twwXe6P@sM7iZO%Gh!|^))yBR{VpeCy_DYSm?xX?f$KNBO^~OqnY&ClEXqre^lNmP4CG%1#f7N6cBL=t%5Sv8 z&gsOCg(X)|9^#QgpauN>hwR?b7X-Z1572`{N4@O(%EU=u8ru)XV)=GTo5TYhvswJp zi%X&_QD3Jdr8Qq8(say%bmb=k9y#2bCxk?DrDv75v?2bFp95phVpXU|tXI&fg)TTS zFufd!AQ)~LjsTm1;p#uHz@Ku9MqB7QZ$KBd2R4i3)%Y)FcfK61jRg)qC(KqG&*E!u z`Z;jq2AYDVKr~0vVSGt+0mCP5_AyI+Uj*Rbvlpyt^yquM4t5LCA{6-&F$Oz)7g{2> zTWc6uw;d6-F-xY)2j58I4o4)97YnQTfa&j++HrQbU<;iqR`JeXp3dabl|MS&fKhVH z`7;dc3hu?`cgzQM?tLQYj?F!8q7A$GrXq&q9z4|ziKu(WI%s`XSsKLvClBaTUq6y` z+L@iv3WbcZ zT6m(kNp$TqTSoyZK6~cLXrElUN5C(_DL?Ubtzu)x<2A2qwriEYg$kQ8kqIVYjaPbq z&FP2nWJCfX0zO5HSmrkG+fV>66(os0GELa{_W({;q(LqCyoio0%#I(!hOL=3dp^wv zB!vx+)Kng6zZ5~%wGQZ~oA~z^^CC~rZf@?~g?B+Gan%l=`#&nBm`aZ3lLpfWn`fc0g6f))*`NKPi7f0)aT8Aj_(Znp+2^^x-?(jT zhjC%xO_@onzE1KltMf-u7h2OU=B2gGevAycGQUvF(1pD+)vrW-47$qPXONA7q}@ee zR;^3_*XX-Y+1>X+-R97hm!SS-zai%G`X*$!%5;x+rF~g(?nYn!AelXb(4pAf{+3nU zlq=KtkY~HIk|kIB^7iSNFi@Ug%f*mBk4DVF{YAU|+fxsB%Yg4zWI;0Jhj_059qq8~ z%T{M8fB#|F@})rn6BAFEvZ#qQcD36!_A&llqM9JP)*!JF@Z{gOY%}>z@lb|8h^y!qSKxg;m7gkvFQAH$H zAoT+3Q0H%oCUjOPaW6>`@)SwN+e}soEri4zAO133{4q7RZqyO%Y1t6qt6cjk-PCn# zdWkWd9!ntJW!8V-+WerbQikE(XB!e8!Gus z!it6P+}T&OMS{%vhP_!TzQ5SXP%U_k>a^W*_jP~|MgT8eL~LZHbiIs zaGpf-UBh1JPi9&i?8iW&I+vy4-83pAhbL&^5roPsK3LW)*>qEo<&B(#So! zoaq{qon%5Y=>4^!9NbU&Y2pNk2ER-1HC3)z6eYee8KMzQDN@!og5siSNG-nmajhs}>JN#Xhv zE@NWR^GE;0P>kJrJ_xbByFix`%`FdqjNxvj_&6*ZSkJqSKu>Q~Z`qq4pH@r+>#m(W z6PdqQ41MG(?`vwH;&eYyl?5+c@S#BZ%F_y#uNpR#lFldZvNBP4SNouwENJ)Tmhu;~ zBB4RuXvA3z;f}n$RU@)%F# zVb&1FsjnHe%?-P9OZ}XA%FQVFBR}8oQgo5!uxo=M)KBzV`_@tkDkotoL0?0E)TP(g zD3bIP8S94dhPC7bVyR4fDq(KO;LjR3cOq?rmT{`y2^vpgMY`6_?|`#+-G3*Y0N^7| za3nk8{2QlvI&(ra!Rq^AD(?A=<#WFJ`;RnYGK3Bx z1>T0P@beO+wM|TaqbU!^oxB9z`cjLRUV;6Ke%7F;QGsG4YDy#`^1s)Qnu|X z1169#r#D%K*~XB-@xeKKLK=LP$n2p=mL$xttk@nKd3pOfgNIT#4KOh@Q2nTfD--h% z)M!pi04`-xi)F9s%|YS1e(*7+wSP2>L!{PnfnFMmHb`JA{5!_g%)dOqU7HU%A7I?D zD+HpxOWSc5_ZEm)GBvGanP0wAmY|ksTGlAH)XSsXk6Og#@bEZX^~=DfQYwmGNnJLh zq5t0Ve&m}_w)NFtoxx^)z{UTGhTu15hP<*hEV*}+g>w<%bc}ql^sQtvQ!)@s7e{g5 z`bC8^mQ4opimF<3f;p3fBxY~r@O<3~$}A@>=v;f6-tjvOoG`O6jZR^plo`%jE&Oa> zA%UMBoGxP?T`W;~kY}f;D!1$ej>#9Smwaa^pHbWQ_(9{Qb#Rb2^Wfh|(v=?cySuM9 zuzQ~6)cEWjkOX@xAFP;hrI}RGFvdXikM@bPcaQAAe8EQ(CLh$zfMyw4rbo-lTLP=N z{gTg1)6%&S+yvl?eUKdz@S73@0ec|h!**`@jskkLz+>=CM_@)d!hn_~zyp8g31hm8 zO8P(VvC;DAj=CD=s^w0AD$Y0m3#aI*30Z@p8nT=7a| zHGQz+_0WnaxOO9ynIq`wclk>!WIC(-MogJLvG>l2J@&^HJ8%B&SONdLMTEoX%k9kN zHRt!A+vOd3s;^*fW3VVF0>$T)v@v%N#L}0;VBDc_&?T1iByM#m@UHA45koWFSl;Ig zsa=wUhotXKTt3AkSyJGuu0o>gpe1~zs%{0;0r^5BVDH`VW;~cch++WE4??6?)H&7= zVBfq?>^MF>7IfPKcaC=*RaYHosh>t1A?0T9>I`xWA&{B)c0hDNdBEl?#SIa--Lqd;t)2pb;;*KUxj>2kr zjm`rsXByfgmw_b%dW)>Vk!9|uFga#bLvyf?C-y9>bVXL)`PLcS`C4i4-1NJ;gP#3l z(O+JRK&+uuE4C%SoQD}Voo`FHQ|HQ&42v!-M^09FS^q=#EcKh?J5(Q55)-WgR1rIK zx%-^k@z4Vk!NSRlr@sgL;N{b97sTIne`Ea1Lu+OF_Q#MoZaUn&6Q2(1z*W;gTnvjmwp_gRiokPn(tYV}yug^&f8bm;q0THGN$zR3PBm+gFcU`!ymyC zZ3%EL(dgj<7u85)`Z~o$ai0>tByOa4y3YRD0cYLu>%n^kbB$vRd?7#q>ZX|>No}`; zp`r7l(T!+pr!$vxy#2pjxJ&AQX#%7*L8ssP7DSI5zP~=l-kTd6Z-o1+nLIKd)GgbY zcKqkkEa=Rto2d9r5o<17#CYT55dl^TeegUTftY|S9G#l$+3W-(_^ zfl!(t$>y@qfnzmq^M78BA=~)h(^$HYziuEH;djWFPsyzdZOt$Zv{osot0v-OwnRSk z;Gx%n2fL&kdSQ9|UHd&d|G}8SO341F-1Wdp;cR2Y$Q}A&^Goqzg!uSPUC2OEy1pel ze4*XAq~xn+|9$YB1M1tL3n;%XAfcS_?8KR#-PHzCg}!gl(}XxfZ#CG>9nyTPb1A&` z2SzREY@|vT6ke(|iQ8UBH%!hOEAF>FI!Z?iF61#W?x6ZP#rB7>TX9N3Pn=vBu3qOE zPP985~nE?D3X) z`W627zfYfzaZMdHUPQ~R=tLu@PH=fzR;|%A#CMoNTj2E#RGeq~bmedS;*Ce;&EQit zj{|i_op^XeENvY|wnKw-!UrV34AvqXhhx|NuqaRpi^4PWLS&e%6*Y1D9!D0IOPU5& zKA=;Du8P%NE`8stNyjIrP|0nS=fD3vh7!&FcnRm%s;3PU_JMvpGcU`+Mv?Q8Ab78S zbtR~x-{-Rey!64w`_0if!NFIb)!C(=9qk68UvON4%3T#NNEq}~xa8dYaZ#C0GRU#v z;1|NL4$(=+ONqk?gmm!Ci~i&PDoozpYYHHbIqRziC30nt)Do@a1I_PvUY)gVUp3~} z$QWIi5lM)!Q^(F0MBPf2JpH_C!vVP6Ccv18+ywYZ6Ubd2`>t z)Ttx%Cwr}&f^R-CU~$Yih$kxrj)=WolZr&#wJk`5+vVJZ;cc3+iCN~nlFFK{v9aep zX*Yx>6PPyPAU(hu$Ez#9C@Kw)*Exa`Q^w%JjcnRmQT8ubXE}SbppGD+}ZCXh_9LcyDjc>45mE|DiNTtCczn=i+;?y3zn@Ejb=T_$4Am1K!) zh-ny@aCn7VrTCyAgw=sVE2ORMrs0YkSI@l4B?;z)-rE~o9VEB zZzEy2GA88sL=Dm!bj)!0%i_+|iba`yC`TOMoGRTDjz^sIwCipSRJgL8yi0Q{dF_1y zFmm}Dby?(s%xiEp`^o!Lf>RZlCeS#|a$VUvw{g2{v#0+9d%2CP-bgtr-gjYF$@b}A08zN5_0C2>CeSviaMUVVME#taNE%FZoxwLhRJ*$_@Y3~} zX)JOL*5-hBVO|Zz1sq@vaYTLqImIapw|_2<4COpN)zX9JiSfg6{jg`*Z1^sYRqV*z zL?eAOY$HGz!gnKHo`^;_60?X(VwO)JXYR~${a9cug3o|oxpV+{I+Lf_qJ!$_eG{nj zrMgFuI-~`u+CWCggvn2GM8RF0&r<^1#&7$#&$kHDSUG2cp4|Cu(t*qyZ@4v;2J#RN zAPM&sUrAVv|G%B7jrhURzHurVht2wQa%pH?%}RJIqxTVIo|C|f)2l5w zjcLvo?#*2c{_p-9)dT6MG@IK{_qh$g@c=h!X1Sud6=e3s(t$j}>y$^5uxT#h{1em} z)zXIB(}+zw-V*IWF`>YvMU-{u*#%{+NFKO=8{m;Wl-_1M=QqB+TSd?;!A1z2?+9oM z6oPJW^6F;EOwJY#xEt6ZMJQ>VoOc(TXOZPK5$0c}+sq!lUkW4f71-=hOw*F=&4+m%A(s>+*6jk*qRkRB z+nybrsyljismE*|fqqEacGVT$?odg@S7n?zCYh-6Hs;eJS??cGkVnN%Oi>xQ)t6y> zVmdKrF|+Zv5U;c&IJ4A;(uDYFsn*1DVtwR>Nl=Ktvwgp{?w&_t7P=^f(f@WFlN&^J zf(g<4;#vuZ1PyCuU*s}coSQK`-f>H#Gf%sb>VFFAXA;@Gz>U&^>sc*P^(Qs$|2~B; z>B}|~&woRh;5)WF0+5)3+9eg#O0I4Ma=%5PVQ4`htT+X-s29UWNxCj?8IR(Q! z&7TFET0o*B6&#BDAc0EeHC(@tR;Qm9Bti|G#SE~A%cenlT8cJO^8m4XquJ3rOM%E_ zP=W`8ZxHh03I8y@g=L({7tj~?36S=xhr2fhc~8|B(~u3AHZ|k8R9Qq=7(h3`{TLRL zN`a4Sh>kvZ(Cni$@V=HmUr{I~R$Y1G$x!2+(348uC-sXwpUPkSELFlTT10XFXJ$}F z?O2K50GeMW0I5H`3N8N|moU|aGk7BVzM$Tw7|3hvDsRYIfA3$W1ZMNS##8Q=RDo~3 zaB8+ZDQJ0#npLvXjHo~1)+uI=BIXm@H;Nh{u0!KgJf6H*3{To(QZ7y~NXBT*1~9!XhP&ZUFf zLHm8BuZ?Lx?@R~X`1w?mJ&ZCr2o`oc~<^r`A? zAFe9e<+G=j_n{AB!(RH_Wba*NDuI9BOXMX-?2y@BTuj7c8S;Y#Jm+~J|!n` z=^5przjit}xm5tA1+CY&1?yaGP)BMc-&gG|Edn$T4gXb4chqSoU_?L}kIBeR-xtn< zi0?Q$w!(arS5S#^MT@Ho;C;K4XF$9lyjjL`rESr+KlLp%=VB>Qx$j;z16(>Sv=v3g zJg$Gw1r8zPW;o-&f4{ZiC*OauC}!i}XYRLhE?B_JtAo{$!BC`|N}(d}mI)*9zX!9- zw&oytGf0tI*?&K{1HlPGuN3aQo2Tt1>w=*iH6EcoqO;SZ(^v+UMsjJ ze$M@O#E!++xMr&g@(*SvX`+hr?%DjzFSFV8t)>htFPdJZgmVc815NS-`igt&imcY%#QJVeR;v`X1jQE_WfaMY;J$V0_(oc zPvhWs-UiZjp|BeIghGGMcgX+0>;TxG^$N7nn=yv<)gM?;rj^%{1+L>|VAl67mA+}b zTCc3Qf=hUbPzK?Ka~wi3OoeBhV5EmmSR<$-qmQBGLd1xH^bnB-Cg{pe;hv4CbK*^h zq^)NuABVp^;$XSKaLu2(4K6J&3}NL?QT~1JT5#X+eG-K%4?osTUB^gSTE}OdJO2&V z9>Dch4&YI|)3-kZqrYs?fc(Kxc=l0XZR&GOW6PkTtb2tvc6E9>eeUj=b+=o)3^2;C zlm&-g=Ik*LDyp2rV3v(+7`U72aOtZ`;62Y6`j7Q;ZUrEdDT~!AdgdF{Nfs}#XLw%f zBV@SSOw%~Jw_4t?M*+Ks@wmkItpxM*pJPb3_^rwIBo;2}2j=E3dU?$NGW%nYkMb78 zF)c)=D55lA1-!#$th2?-Qoa*-M)Iu~A}oQVG=uTLB0@&23DB77wlz5i32{LZ7bL%UJ}m=_spEYlD2H%$ak4D=y2_*{q{?DBSz!TYQJT66-P z6PRJ=B0i{sNqL4GAL7ypI}qm{(1BXk0av|{?*|QFzwPdIC zDdt6xb>p_$)!UolPL^?=Byid)1UkUl%z|2J?AQ-@70~qt1GlvdmC06QqF2!`|F$9@ zna)rVvjW08f>CViXy{Yfk&bm| z;Q&Z_ewXZeG%M;c!374S5LzYgMj@~WMO-yFp5S%M{qyzdvCj;$;2++_>xY?1+67|YB|xHNBWSHQnjY5?`&ZF>aPt1*m*m&DvjT~=JTAWjsrXj+5y~9?-^$X0rw>n=O`*e*DxkRMYH}}y?mZkO z0_6Y16Gx^9?8WgMX5KknU@fyOZ3ZD0pC_-yJ}Z6!hLQpfpE<6gtce8Pfq;u#m4%d_ zNCgAD!>KcceBu@%q>qJ|$0O+*7BO3?!Ox%(y2f{rcKii6bbtxwaXWs~e(@yFNWJok z&OQC!dCWJM6e>2d)26|YQDqpvYKuJ3qs$YAqK$v>3txZC4Tgv!V}9e+2Rdu95ZM% znulKeJ?d2dSW2ShMKrk;xb!yxT%pV=hs3Ww3tz`O+;q6j7Laq;VZuhNNCaQDgPc4G z>;-aixMo8X_eQX^E*<$M!d>kFu6%X*Ft#podl5|nAT8MKn|r_ zPZLlx=U0^lC8w1+n-c6yB}{aN?ECI{Htw^xI{fq=t)_7+qDA(>fn-7h#2Wmz zh?@7UA0i{H{qYXwzXy(Ss7)$O$Ot^p97)?G1mln#DtVnn)0`kP<_XQC2?R-zVl|$| z@S6w3^TRSX+4A$dh8h`U;GY}(-}8SB0wa#K8B9SsN&m=eT#9$vGUW382}Dfl( zwQsPzfts!^3M+8{6B3vx&&;}Gc$`6R6bu(WK*91c(vE!vBO-t5;K zNUh?AZi7io*9%Utb|NSykIRm#nV1s;&F$(cLWili_Yo}V4O638X+k|7w!6vQ))9&F z_e6dONNFMU6D(64I080LyhwR`a*Cf7CB{=1u9kP(X;gIr={&Oa5j+d^^4yviR~=~- zWlvazAn|Si*W_GypT?gOK^mP&X#3r1&?xzze|T}xO{~<#r>0dIbJl%T*DSrBq=CFE zTVUJN;s4v>8EuCHTg|5NZN})e+E0vEtC^t2%@Bs>Y1T&=+JAXAR^d)tI#Qi12spxp z5e`hw$WwXHyZfg(L@7L=Je(`@^A$B}vJu<5xYR!aLt#2N9Q1vs0L09hX*eGlF1e%$f1)ZR$*Qi`MR}=Tl@c$N~G!NnHAFGqC|A)#V#IH;eA-LN?Poo*V+atd+t^!ci-r^qlN0P*M*3)ona zQxNi#0oq(}j|EUT@al>k;#(BhyaAHws4nr2cc98wUny?M+GQwFcQRJ>i#X_^@1V*+ zQRS>pQOlY=>Bvng7y*|w2l6=DM_+{O=Za3uQqqoJx}LxFyBKvL)9u}EC0`E@0&uKEF_ z&+3m*6?Ed5t5xEj+TnO%lPZC9>QgjOUATPHX=~d5>*-AVq3YlNPbn3mjj~Osv>}v< zFri37Ziy^S60#Rr!%?y?6Uv_9rX>41WEtxWO30S2!Pu7=!_Am;XKZH zpZE1zo>x!I5>-kHQTsDA!+!erY_$1YnlhN<`xJG>_$=H1ERT!u_e08RBRa2#;IpQD z)nSBdY=&(@_cBf^I%R*qkp}pxT&h%l5?A(vLZOSG<2%}9$3A>9crc`qh3EB`ID$cb zjV9XAkQ+O@V{akS1h%4q7Y3BFE5|eY`;R#;yBEXfVlx1tt6@FG6nr-{D^?qU*tPP6 ziH~~`g{mRbQLhI05aRZoZABsocb45d<2Z`f7;Hu^&D7(egpOZi)nX zXMd?f(85tdlxBxaU0TIFn)`9=MFxi>AjQFsF3nztNXfL$yHNx zi-lh_oNecW>0f_`l>J0(DX?9S0CsRd#i_xdyJaTS+k!}*Zd%jm$GaJ~Q>@+$)@NqS znk?KXhDIhqhS)X8 z<2~k&N&G%ZO)BM?gA8tDktqAXwrHwz+W>;74nk+B<}%c40FLJ zFO+Z82YwV~T0H(%;$ASIKbqK8-=Bs5c9STY0mwI>W_s<_urUUyw2!QVlAYc2K9#O6 z5uTmEXS`Fh(xj|FN=*FC^IwzTPa|q0*}Ylt@Qsh$O^9a)N%RM`2TA($T9vKnbU$25w)v~g_H{DeGA75ALzyZ{=e?G`^R6 z2Z>F`( zIm%N%VIlz`{fuDW!C^Y-RjoEkceg#1! z4RGQw&UQSjF1}1sH>zo1e0bU@Lsm^Q*BHV1$bcX@RGcUD`K z{JkTYo0R|c4G!;0Bb`@^eZly}S~s?Z=1BYI;~vcg>(#49?FiJbhZdK4+`o5!J5cEy zdhY3!`8ZAUhc5;NZcKvtdyawQPy2oZI`x5K!1o+?a144TGMqC8huaiU^8RWw`JJe~ zEvnfJX7wPy8nz5WIkGVOoO%J*D_ir~wT$3}b2L>`MvnJzHV_M@mrh0yp7_eVy%Q#S;J&pCb zoK?;`#55L-fz*yYzr-y_cy&5pOON4tjg1XKc^0d?BY=OWa@dUsrqW=T;YTN9i>rqFCVfw|?FO+AVMElDJuX|TAg}O=6p?Zi@epO< ztX8*=yDd!Z@vf)5;*`l2{I`HLnr{dSlC8HQ3yvtmnXxFzTOAUTk4{66kZmFRHS6hQ z-0SB)=}%?(zWugo1y+JzvNCqC!Y|1l{(WfK1;zzvlgB7S=6%q+n0Wk^bqjI_SGR>3 ze;VDi>-cdU!En1cd4(zXV-K*K%PZX*>RK-+`*PW;3*76$-}`jl!+BP`I3{8mp(`n7 zq(C5Tpfq61HT3i5q{PGosrbxyTXegP-D2_92OEyBD6Yx`##0d6xK2EWg!osXa^(5n z{4&76Eg%j?l)6Dz{`QN{%>Bfl`S@P!+gZZvY3u8>4_(1O)1OH1GLU#Qd_T!Dwbr@{ z>65<20hs{Gk+w$XK8q#Spr&&;Exr{)I~G>x4#c>ebXAX2rnu>t%LVUbcKPPSH~@ zwK6~~P&*GwFz=-)REH{W^@m5q&!d?N+iGS(FMM)ML8(to4IdBKr(ef-buR+mP|A(0 z^Ze3p_s@ndo`alsJBG`G1H+tZGR+d|Y>dah6wGqmMnr;UiP}2Qf(NdK( z4y9etc|DiIqHf3!L=K@2mt(iwN^6Ae2Eg+9J=lyH4280fpVW}g<`5nPcE1U2=tbiV z5_o_8{<=6q_OLj91kxyGNAT)A_XIU8V+a0$g;*St2wx{oB-@H^w@VDzqa>35hr*O; zfTQ#_UV!GoMdJ8@b#5AO&|xzo`t6f9r9FWApGg(y_-dvj6EnqQ*e6T6zKFzcrdC6bGvgh+OZ3sB5aq*P%KmIBWh zoFpab1J|_!+_z`(9c*7B{Db2&P(IlQZ@y)fX2C+Y3By$5#zWu*ju7V|5GlK^wmW;^ z2Z09;711^qBKjV2yL{=p?bE)3jMtOTC#>rSeqDhl=zpcEH6TCH=5KV$I0?w?wP^T9 zUM&`H{j%85;F)n4tO_-}>PW83T16XsJ)nzq6in@3PvyTKZ$nkM?C1BuTT@qRfM(?S z51P5)@^1`~z9J`1*Kwhp8bMDf-0=5uMhU*HebAG6@Alro5ZV<=@1fS1cOrDevdzfZ zs&j{EB1DAyBR^wy3~8DYg1_1Sp+e+Nhipu-UHRU+L0Af87}{F!9d2GugtYJV%KvOzD=(&e{&)54 z^SK+KYBQp(?Rz02aD4`o=LTSQP=Xyt+OaGq!s(U5$1|F9b*7IWX$E?Q(l3m;fPCKk zay7z*rG8XD)(ZXQ)XsZe!A&%S$+?M^vNcrUB$^(78&{M=;5ihH2wqrtHxeN*!Vswl zkTzqCoJu5T=Nl~axR5=Xwp$*bA{`8HIN~5Xk5xYvjG7I}SKehqsGI-(Zm2f*7?rai zC@!Pt!?#HVPt$%1*5smk^B<>qEN3<=w^^;(aA&!2ATcs3Lip-+P7+`zcm?%-M-Wr$ z4Vho9g7m9+Qp&eM^4vTkKnVP6EEi+_cI7=aZr^!AdWGH3vba?g)|P&JaLWGmx_jC! zZ5^wxCNqQz1OqspGoP7qf={eSJs{Q!M$W*} zrp&pNC%pTg#`XNu_D*vnhHIDvK8U)&>C=K}ylA}jI^8>| z7DqrZ5VG#yX zswxI?tFqfD0zk`c?Cje%Vd|7I@Zy}hem8VQQg&4VEl|Y0AaF&apc3&=6c~#|w(LvH z2T3)=jd7?v|Dq3e1~3OzCE!c)ZmG!n^5QCMX7pOGg$R@d?91aMfFJLTHTHt_CPLL1 zI~RiJw{0bHL8J4~vUSZL25B19GlQZ8 zB^E%Ua5(9@Oz_OF*vTPX{0wUB`*|>0)rhh%h~V$y?NWkIP*D~_0~etBl-Xe(?@eFy zV^wgng@zT}-;V_{T&v0k3?MSYycczF0pHv~o1*78xmM2!!55eNR@ns@{iLSCluqw54`FKNsV}B zJF5qehNtQgcuvFmwm!$L>$zcC?S4|}OmZId>ey2wxjWT1Z$w*VLjKrKq|jD)n$a%z zX7wiTePS59iUAk%IZ~$Jg|c%`UzL$DIg9jbNmKIYG|#}1Lc?q=dMj*zG5 zxalma)?B{k)V|yf+$Ow%d*c&1djDn>WqS{MO{cS@16A&tMg}u@dL+l_ggJZdr^^Nrp-T5FBVU$NqxLI5USt5hn>^w6Aal7-VC_& zDLiC~+ovd$xuf6>O;LC+XiV|K%*IA_p77o0M>1~93D^!vo_aRf-QngW3l6!}dV78NnNJ;5pm+7*xYnZ+$#oYmFL%kDwvv zj|(1$e`!BHB^akD=h_bWj(~b`q#+KfRhNDQxG8&drme=@+=H_7kc#M`MTeD@@tY+=w!iOtR#Ql0Pc~amIUI7{ zm!J=Hx3$dTIvj28i!J}B-r*R+n$yMqvj+2fP_qic#k$aV(4GpmLQG?@vbkN0ths(3 z?mKX2;|T00c1m@~-ZGo@d6&7&x3|wTc+@Y#+L#8Lae3G>#KcPqnw7eKX5Lit870)S z>q}G4wWm=_f%Kw(XW^WT;gkM@!I$Ce3+&Vo@gJyrWpb?;%JGVki5YijpER>mqpa~I zNOA!ajo|dghblxu!(W2f|=W>&np_5S&!pi8_FrO?L$${JoIdVIz`lwz-xbs#T7<5 zKc|=`P870n9nixcDk=^4;d<1N7N@*XSFn+BUgmM%C--#Ke1i@lQlOw{o4fXnmjfl? ztMTrV{GPyQ7&P^3ZJe^jWe_kF-10!Xf|!g>7uMo+zr;lA7SxXuuB{(Y{JWI@1F z=$m=5wvwP;cH4MU(X#(@kIZ#O#7+U|Vv;j`a8)Pe-Et2DIcHtUNJ(yLGKSt~KC{}E z9kP0zK=oyywe`MU%GvMeZo2t7q*QZOt63O6HTh0sO=I$I{f6UO61ALh%KRGi$s~@a zlIIu2(d3?>_;H7(IF?4mlTO=oN`BO$AJ`8}m>Ei(1QJm1pUp|}#~F?hbwD>DSHQ-H zJm=y&K8@fkCy9J?jnEpN@p!O{FWXtwzLeV}dRwy%*D?98y^C@nS!YLL<3rm#eH(%WK)*}lViWxO&wWO>j zQ%D1qN2iU&MnSp?^wwmgjfU$3I*w2dZj)wuQ`!;u@3oW1IIjA0KTWW`h5@HhBEpC$ zw>=m4uqY!Rv070)TfgEd<{!RVJ|6AJrIs=tl{$z7t7*)l$iN#<^2(aR*NFmr`jB$1 z4s>>cvc5znQR(>aMA|2tMz?Egy?cG00D__bak!$f&mRBY6_gQ#boo|ML_63tv_D)o zOr%C1!K}BGrD5I{Xro7KV)_rm1ux1MBh&XZw!;Ci*o%m%6o#HEu3Y`=UOtI2xalY? z79QOqF^a~Z%BtApt@bz?91k4V{@*Qln1#;*+^FcX&kT>bxbB=fT9%FH$|z%9Rtcv6 z|5~r(kH{+1@TZ>vqlBMhs!9ycv!BHt2q#{@A*MgLVExmWIEX0~72Wn$Heu^Je!XM) zuAKfv&6*ST1AZNyZ>||NA4m9A{fD6_wAlCz>U2{o-cbcrF}_*O>$j4g*=dfOGaQ~X zg6ZUHsqppm7}xzGLhWwse$X^5q?@P9@}8ba?rP8`Szkl(&o@hNVHfW8i^Yxlb&=Ej%vDXWzyhP+3JgAQtmLCj1Xs1w8k0f2tx>;;#m}iA}4n*=|Hsn~17} zf%Zz`y&b5XjBP7$zsOX)-0*fd%KK1fqH3#N+qm zl^r#zsSve}KC9XeEN#A}pkh&vlh)Gc9;=+@OQ69VeJui?F7X||sIC(AbqtTXCp$l_ko<*+ikggH5Xya~jD8t(YHMPAA2S93T^|A+I}tXuP5QJ7Kxo8F(RXy=I|blGr_*G{TSrL3QOBo9gh6<#5iXogXr}g59)3pQOp9_#)qCJ+ME5h{&!+ecV%uQwc#vo zYL2V0+!EEpt}NNMrt0T8FdjZQ@XA~JMxP6mc1i_ma;vgo5Q_df$inLXMU`g2BOyt| z^UxD5{VVEg)ZLd`O;3=oF29{S6;bkX7A1G~GoQ16`E5rR_q>1U#>w-NCv1e1E3pcO zcVBqNzA35@Fv^Yh`7z*JK8GF)^I5{r0ZxleeB6;1zOxa*6mt3=z2{~cf~QDdB#oSM zmAk_hG~pOLqDfZ;=?iQRB)ELDKR@o?lOZ1#$CBdZ9MWw((qd}|5M!1HgLuygwmiBa z(Su}rt!bnl4FSC zB5b-5`&=J@5txfScKckV?z_I&nlI~gv5ULjm8*^w{1JjH;1BFq1u7VPJP{HBvU`%I zdP9^xwLu#w*23EY@bmZRnt0T{szrp2VWg;=8qwqE$;d<2g{!18k1jjq? z)I+UCY?(>C8H3)$yy7{^MpfH50p=YD-BY2SNQnQBkaIPB__+iyLz^tXyZ_OG65WqmwYAM+3bAdG{<=%e|E(BLf$FD%Er(z?iIa116 zD&LMW{}c`+F$?=@j5u#Fp?LH6M+&lmfI7ZTliffPoUu}(3@mrQ&sE5{3kzm}_y?V; zP{qEy%2-VtSWae!jC`IzOoV-KHHd$$>1v@|nKpyfUd31x2e_I5AMyVG&`SZZh zr`I9?P8@C=n$i1V``3Hb1vz-9_Jplz@rrS8D9vBYS`Ch8-04LHK-*EhDAND%J`_Q` zx2w#y`3x~(B`XL>x-J6^z5*Wth&uJfqn81Q-|J@_I|7r zj_|+Q;(R!x-q}3nPW0%};+Q8lsiH6|`?^P>^g117?GpoEB%l7>q8aC%x!HHkO74-X zcLr?r5QG0{7O~jYWZ8l}IxD(>pllxt%aqE4$}QrdyA=7yj7IG%Y2HZ{0Y9OC+57EN zW%$MDE8tH;=_`)H`FCZa;hlABppU}VdS-4}y*!BUfmE?*WzPa$0BPNCR zFL=N$yC;m6jPKCt4+CzGL?f%H_xs`uc9$NotB5Ti{`}b2rwas;nsnY>3u~4Fh-Yhm zfb|Hty=>n!yR7{1g`&fz3-p-xh`_ZO5&^+oEPFubmKfRC2|^Iz&c+5}0nz{;ooeEeY zn25=ZFgGaXQv1S&U6Z4-f`iCB3ULgeYVA+B{`(pc-JZ>hQ-(aMt1i?T=v|gesQDTX zhjn|?m1`AKEAX+bI(mLh8$lG-wj?fPxB+3e$4OTx|LtTVqJy+MsVDt=od#3ucX`j0ssNimPup>MH;Hxj zmkA%Z(F`~ZfGxRyQ=78`Slt1`76k3ueseYA8Hce4vbd*TIiXO-EG-xF*6yO4sEWjFhe1fsF+t`p$ z(~JKSo(G*z8Him;19FtR54#_vVsbI#;!Nx~-{l3k^>z$U#riywKR<5v*j9eroopO8 zBt{kNBIC^46Xw69Z?@*oBm4iN0i#JGhc*;oBYP#9}umP>5~v)b%AxN00t`dpP`4zoJZ4b&l@ZdJI72z3L%C84(g6 z#gmN*XXk-Oz_J}{;LmPK>8i?Jj7hq7lhKC+&9VYfK;KbK^UI{)+3$X)hs3nPL;*{d zov6RcC0F`UU^TxchG{M%fzDtTQzCM709}cOZ!l+I&n$mr6_l)`S@nVs%*j%pH^G8O zq>qx{lkY>xdLItM@6e}M-V71Gu^ELL%W;_WdsI&EpSHWTKBT?w{_w~vm#KhP)DJSF zf6|OB&g;wZc_upHih!<){Fecoc-Hpo@gtH((5vMPUulcYxsyQX?zb|qITY39sJZ4v zKblM%l@gPfAx6}BcJk)4@v||+mvqE$H~8jA0%qhJa(x<}MSI4)X{9=0AlYvXupM*` z@3cdag`*Jr0!)mGz$1~&1vA`clH$pdypOx`I!~^|S!v9pQa7GK$}dmJ&@1LTQR`xs zO-~+V(mBz5!M1jr_GD>G`qb-W?87RYCe3)3Z*31N*VnDqeNFEG%FX6mgdtPoq+gtSKMtFz5cp^WKsQ7KAlZm#diwS)TAj7 z3I?mfkvjl3n63}Y&=*Lj+W#$S_0MgdXR9A*6A6q>OCe@U=={mra^bIkBI9xKK$pkC zMFp~PU2z0KPt)EGM}fV6y7uNFIX(tuv*$a$0A&gwh7n(!-7JQ@C#U{RmCyB;7>whS z{}lA2TCt`1)eVSqTX%nxShH5MXV<`bY6+YjXfk)wKuj**2Ng8Q!A}q;ysPOV6-SoW~s_sBv zZB0gkZx!i#2YLp=FdVU@Aq1ydGnKuGONiQ!bo`>dPdD$r4B<@Ub>XrRe6 z?Z~q6*biVCa6iC#z387E;@({={g!fN@WD{+$E(tNq#^s6M67E08g5cJ{Bny+S7czp zt+k`2h31{CUq=FRr0`;!Ls;eoV!u0?vm9Fyx@ne2aao9aMKmC;pM%ds9Zx#&jLa9D z{V)NL6g)8!7#BEj%WlDfQL^M}+<2+5*@-=JoU!u+^>9ei+^d6n{!P5$fLPm+@IYf1 z{O_&^toIu)-;?$45q{-JDDgrznLC;(H(nII-UxQOX-?HQo9200B&qb z+!PvMOdi{~81k~EFS>;=F7`ZI&3vV`miZ!HKsAXFXK1*i#kr$8%;uK59NO(WE8Cd7 z{_H@L7-!LB4_K(Aw4Lu_KeB&hrsSAfR(0B#;x=wry89f|zY_3s!6HL)1o5Rjs9{+_ z$R=~R1^MPC9}mJxo5FO2kk@KwA6FljOXI>Y*L~$D6z^9;`Rb1(rz166UPj}a)e-+- zvMlbC$AT%dM;r^Q1LY5jW|jwj@E%>yNJ|{6owY^=I@;_CO}8TDgSu-n#s_MQ0$lF| z`OT_n9-1Xu7Ym7F+3PWXXvdHh!*XW^q)Ep2W!}CNxV+yl7C#+fn9p{Mo#d_Cl2U>2 z`H8*ojp3-akhfo}6Xni<|Sp zZ3p+2AIX9;y>z=lzTlg+UOy*Iox}ep3J>%Xy?E8c;lRx5<>(g z7tUd5wyM?Avgl=9jB_V8aJ_PD$%VuN0o4vgXTG#Akwpza`I+IbTev`WRpLEa^MG1X&r?JV* zH*=Y+y&GS^LpimFyyBwNs1oc3rCIRTUY8XeMh>Gm9blWy6Ht8q^paT4^XtXi$@%G? zQgtKfrSCltC?PwEcJtg3Zj;$spPt#SIWS^}n57BTXF^W~A}(UZQn||Dm?!&F5N+Li z(eyS<>xEkXT&(4tnO)h&yRQ)ft0irCzGX@2t@a9-yE?-wg!0+;2=6w1^iY&hXO+b1 z=aYNR0=O;vLiYL3vnoZ;`@XWV<#Je_DDjzZ<^@W75iRz>YM9%Jq88eVm0EhtMdYtK z{lKe>#~6okJLrFxOPy~VD3)oQ+dTn!SlQ_iME3@b8PE*$*gqfzhA7@%eiYvS%BGgB z@Mz(+?$`)|49H3=YuQFWG&1rOFYfF(RTy7qA$TT;x5hJ46M68i*bCPs#uT0J7Z{{0 z`1?EDx?SLQMoi!`ym2ki@y6B-VWPX$Ll#{c>+kU4DwF||m_$d-nB61IdIY@J7rWuj zsQZ>Pq^82Db@oanO0S%Qk113lQS>$ulW26y+dDEi z=q)(GA8Z)BsXLokBwq7p+IC)2=&dz(5p@90e0fKY#WQ+R4foh%!Zzz55 z`05u%7e>xQUArFISve`FQ%dqD(gbI5Udww}ijee|)!rlWHAn4lW7C0sE1(PG0_=j% zrxpfwO+&r|AGSq&HWbGbojzIykFE>)KT`glW<`nGuOq<{Jn=!W4Blx+G&-`SN}GB( zBJbZLHG_fNc3f6?nPJCk!os>nOVSXHrCg1yI221TQ;DTOBV9l;+1Sm+YZE|8X?Ts+ z_r!>(3YDp`Nab0iX!Uc)*qRRsNWs0L!B-cu6*0O$%k3wQeUY@QhzBX~EW%7zIp=`T zz|(oOP1V)F!}vSw2O@g$nQ6>=WYDaBsp81CtcXxR(FkH*LgdHQ`Ms{asFJ|B*H_e? zQew!w0>*pF`y93d-}bVTMJK7EA@Wpv?t3Kj(IQ-eMy$~p>&*4pT-{kdbNZQAgKA+9 zOC>i_s-v6j)TDzCacl##Vv4%qzy428hgqppXUi6|Q(~L0%W_Rbqq`K?-2WP_w3kQt zz3zib`LZ2aOv66%QkH4@@P$-x2kALu?p^EjA;048-AfW`gqmkbR>7DDKn_mfZkau| zOG9`LXN%@$UrbC!lUDPh`=|2Owsf(>DtZyXc?{1{dle17T;-8*zGj3%I%|K@No(--2MS2PU{ zgFlEQIB|L=1?;k?@Va0HPt9y-<%Y!(%(loeGY__{+;lr()^1gx_GdO17Z<31L+c)K zu+v@a!G%k5aX+Xa)gpZLiyUetZ)p#|xPLdg)J)p*M+N_-uNiY0V%Kx|gQOSG5%*1FM6y1e+f~D)f6Oiga@Co$8+5GNObh&3V5*}Y0FTy; zq585I3d=S49mG_*Bh~-SqSa zj^w2Qd7XpU1tw}6xk7pv;=tB7YG{B{w|!|Sj@Q`9Uf}G@TQEG~JwW3;2QK}aMmI{d HAHDv61pJLx diff --git a/examples/terminal3.png b/examples/terminal3.png new file mode 100644 index 0000000000000000000000000000000000000000..5cf9e6eae268844944fdd0276791ee6e02619778 GIT binary patch literal 648629 zcmeFYhg%a}*FK5`um?p2Lxko?-ARW($MEx;aHJ*eKB5)3_YyunRm`#`>d}qvf~YHn$C8wHJm8sh@f+9WldNm+9zB{9JFxV?q~BRp37GhHVtR7J zJEBaOt19Ws>3vq}KtE)a0G(r{vJ4ph;^}>Ahd+;ohdv-~@ ze0*-d9((P@A7dk<`vDg%K^A1&r9&J$6pEehXcYu%?!!jE+)dw+yhk)*CcHrV%F8|T zr~|HYh6+i=eCLb_ZMzcrC0V-pk)U~j^VP_PHxGy}wbl_UJGoue-3rQpc|{}6oIcS= zf2%-^bo@O#Zs{2AOZQtkSNT<05+4#c230-fmlcjKi3EKXy3GDt;P;7FDfe8T=bD07 zBsedMOeTJJdO-?k`LJtpvqfX=V%wo-p28k%qpM}#5$uSF?1oqAh4I#DDhtF(r58=k zas$KHN6(5n?mqK)d~-_gCfCiC+sDnWph^>k`-^@TctvVAZW0(pU6%*70hj1=EnD_^ zWfOx|iyZw2EC;U_vDQ5}W&ZoO+-7Fr!Gi(1My)CA0jHtW)&Z)inep$jUt<%XtqR+| zE6oLr!}sz!oW7n>8ozv;eVHzJ+)#{LEoN$N`8WH6d6m~gZ*9-_5!oLHET?!R%dtGH zU}I-Tg#5UI-gyhUO@2-UbG;WMMw*mZx{5eOr>>khRT9YY%i|?GQPkwtUblyw-`Y6I z4_G*Mes1#TV1IJ)#M6BX5)lhlhnyZM-4YOGPrJoxxnKT4=PmKUy^ZX&i?WKl6T+}f z0r&RW?DG3Xonte+g!E@+xnB_6^ zNIARWRczxUAG?M@>lab7_l_^K4ct4L9k+j#hpZZWws8kBTH&|InmBn^Jp$5s$@y(> z$!=h0;`!(#ji*;dMNAJ@a~|R_XsXH2T#eB=Efbxfi6+axJ?tG_5v?1|8yytY8g&XU zX@`o|lsQxTWam}S)9U$2rUo|*hxL`Oebk#5ZV*^VDsIc3+~cKebxrb&MY3OVVv z(kAC7ZByanfuG$URd2pp4*q%Kr|{2?kAzLpz^%ZO4f%m*0?h(xB*}TwyvgRN&012Y^XdIsQKQ<8-RgauRfrKkxH=#4!q*ZZQsp=a@2K66a=OQ+2@;pd$f zMjU+Gi~MrC+a4r8N6oy^v_tB5_C@Yu2g!b-qHrCZXK?2ByrThVQ*+<<;u5RYUgP zg!H=|)t%Kh?MIwOoShvNnmiJ2hW&I8icuS}b;EUml?+#Q?MTze(o@e*Wh*{cTtBIM zlK13_a(C9FEGNZ2rJFv&$`x4~FBFu~UYBmx-^5GGNpju1Zh^FjUeFpyxc>NhXijd< zyw=ZqIkldnF{39&`Qn@s5_oPZe+<~HkoL9z(OPuUJMf#fA7(pv+kM$j^?+JSP-c)D}Cdn;GzY~?m>NfOrUJNh(ECObDGiAI-tGWGut!aI+HnP zy$}@Uj!$rwa>T9)k;AE-+bWaW{lr$>cK{1vcX;dw*ipALJI?#0$cY+v8;h6v{HS}n zx12e|MP+A4UUuDDxD|Tu=IR%Y5suq!TS=`aoeduS#3Hm(m#l=nHk^tv7W2))!=LUWcAU8)VNe?>OlVO{6b?Dk@#m9{C-d_R9v`v zLs$8%+L@4`KxlIHtE-5gv%hnyvki7!@r{4`P`;DNMjl`GTZMR(J0L6|E9Y%79Ta*J zmq5fecNBEabKYZJ*lidt@LBFN-}RSw(q=t(6_tMo^Cm(%#6lSd9lD#>3zhkbsN5!F}+{T9o1;uWo(5&OL$j zBHWwr+tjz8GKgmxa;5H#OZ0Ne&;5d2i#9qppVq8q7;pbDdn3j5M)K~t3Q=pLev;Xw z#lfkMQ|s%zX!hWS0O>}{@(&@=15Zf0>gIdIyUadXn42}C#ViAtc@r@OI3AnyhN6&K z!n(eAlz6UqN$COGTJN-`f+uD-3q^`NZhX06QZ_v`?BYr=k1rmsPxxq1TT-F?_M>CN zPwKG+B8CI=!JP9(MP7fs@71M+_|Nef3gK>dN8QS5y*BDFXNY5?M{3{XcfBgPEAHvq z-LE}jT%83bFm5t@E0)qmP>V^+v!l=6Z#XnyLKu=8H#>O0vpH%Img9bAG$Lq?Z@P;; zJNTxv+Z%3`dabOW9Kd@a=*`Az#v&sgH4Iq>J@9<_dauj#zTN=|k7c*3u5*ft;4N#{ ziwh62T2SRg66w|RFD;Q7$X9%4Rb>1tC+|SgLuF$VO09LnZ>xSPNzdW?QaBB(u`%jC z(=$<6!xz&p)B}ZAzrCseoe|mgSXcEG@5Z@D+u^%#{*c$ppLq>)uUDGWbwe|5sI>T; ztUVb_A*a0;N1>-~ssZP=ZnTmn7ZflKqqFsA>nW4wVDU^%tOsJ$>R!gZn(=I~p@25M zy%6dH`WWUJ&irP-jgVB;3--^`{Z86cXvVD6b?|i~&D5#`Z6N%{*H_t5*}6DGuz{Ap zICl|4L9zk8>fV7{6IcPjb~dwjfMEj$ua>@%(nBx$D{VPi1Hll(g0+;*)}mfIq+;V7 zZE4Oge}xb6E!Z#+&1j-%EVRxh`myh4V|NTzLWdmvbW5Y6Vh7okon`X^3-{`QOIby= zGx@CDqxyY&=pse6`wN=cA7~BcCoGKGvn+;p-rg}8(J=om`{+(1snXwXk6o$G$cu<& z!>B%12n&;vVBxRYxq3-mQSrU!z11)B+>7T}5<0(+N|{}L>=%aVJDKsUdH*M_bt&M% z1H7?ao5rfb7u*T3gGx8Qp$mrOLSUWJb)_Fj&T z9^Q8__g`_m5{EDBy{BX4&BAj04D++&s`2Sn`1u1ark3|D_4SnPG47JL9WZu|lK$@Z zn9pHR^;d>Z-5u}W=J$7Z^YB*oR}=hGLm572UX~K%|5N3@tD2ytz7f9$#>3nw3EsJX|DLjxl%JoUq@S!L#>-hsT1iPs>b#7UjLbQ> z#yRf*kNda%&v|$Y{e8&4&(U=Bw)b+mci#o$!Owi|Z99z5eKkQr=8OLG_qU&p{x1K0 zlZW>|!-5AW#k?aWEqPw*KhK7nsxq%C8@c#9x>;(vxWjV>ze8PGNmfzyPlNx@t^dCA zZ&NdGM=uSGJKXZV`hRErpT__5=Ks6lpLbgQ_niuI|BqMxk30XgRFz^5{eMiw-+BIX z6`pAIeX3IbSv2*1+v>yL;B`FdqG@OfA7LqD{_O~YzeN8Y;d9n{iC1@Cy0NfaWVxz& z$<%+xVna|8X2^`_x2*d-WBTmr_=xUZ9Fo>eZ1(NxY+=&eV%2fBp5udi_pqygtp;zN z#GE;KQODPgOVA9TaF*+kB(c9 z<_xiYGhpaX-11222;-*gObyz#v}$|1s9{Uld3(h#QsC(BM;AHv?7YOkXZJ&Xj{p1P z|IWexQaSi=;;^ER+#zNALpvj*KFz(Q+12Sto#Tllt-f#R?>8CB4~z62<{x-X>P^n5 zdE1So+XGerl_&VhnS}{p92in4hxBOT3;2c$G|YG+9zD_3^!&jQAffDy<*fMK=VX;N zzws43v1RC|XF6hm6A%HNh&uEv@(6jK!flDGMJDb=G78C0=k47~6^FHM(pRGN=oq+^+S;v4_0L*}wn7HvS#)!&Dbh8lxm$jI z9MEd?y%zg~6fj~=uI`zxDt`5v{Zr_O|=9cH|g zec~T;@T|ou*6pg^MZNmAfxwP3+}@lbT&Mh_hKp+`p+mtRv+*r*#~@B9N2*V_pdqQ0 zl)fZ{nG!%aGU63ipOF;oUb)|qT0^a&s7KsimvF6Djg^N?7OPIaB4ZD;t4{!05|sy+ z&VVAIHu|-GFX?h)zjbwDeOjdIQAl?DlQW$V6<+4L$kG9NCY$eyMCq<3} zS|`bI5Kq~6`N|A3_R9t;#YdQnsl*g-?H)Zadh+T|Zti^n3wNI>D;#ok8z9`;tq#d_ zH+CaFa`um3K0()3*^OL_VmLCIA)961>UG{VoPSbxqyzNqJ%0wn5C5gXx6o&|;TCog zH3XDHvr?;kHp4yjsPZU>-d`(+ z9H6gYCfRIxnlTz}8|RKWs6tA^CFp949UFJS)QU%rO(s zT(_*?Vlgt|-VRQk(Mkp5HW|wnP&jiZVkySdnp3;I|LZ`39UyD-Y4;I@rTC-e2hz)M zU*CSxs1xk#$0wKjtXCBb5)W{le~8x)5(<|Hb6mufpI!Z4qEjXJ&$G7_zOd@?d-ja! z2z1=yp=G-5Q>_#?cGo|7)>;Hz7{loN-|=d`2nOlWq!4V-Qeq!;**Nb$qU`s=xVR=> zd89}ve6m!gCA||{`GuDu#5T@$?O5Fn46jcUP>GZl2*(%NDOS6Iaj-<(7XKr%I~R8p zG-?1c)q0lAPz%(x#LC-kTX4`tMXqmJr;{+{V&C6`wq-u}H84EzY1fP6$%<^y*SD3j z=O0!|FXVG7Fz?v`Whl3o!$t~mLy^9kcWqS)L#jmTI(TWkO9yQ5vGx8|ToAihMhbjS zeM@27)LlF1$fdG&Y6ms5l*>&sC|^Ezsn=9RP!5%m7jI<<1h`iu9E|}F@4EMB9MV2H zjU7ImAFxzpm!~#_9vei{iKDjf4==qLPO3IBS&HhV+hof-sWGOiI+cxQ-_0VmQwYrc ze{5&p4r%H3BLO4%75eN>*5|%xTSaQ^>vS9{iECHb`cQAUnb>Ap|8+p-WD{y@hFY-D zUKJ5P=y7u@=hW*?-;UhAF*_i0jRUz>{J~tpy{2ScVAnpd47H>Y#NSEX75-ITjIYA(UtgQ0q$M(nrq6?VMma019W0S5!zHqA;In`=w3(B3yN5JZUdL{dhyO=Uur+-x9 zLSac^%$uctGj)fHR$4LI-fKIk5NDIahZRTIo!?i zrEzP|W3K*ga8J4qu|mH}L+&8{)5!sgn-<4(M~VxB+a8pIEVS1#8Kgqcm76( zLnN~Sv*sVZ3t~u_mti(QPD?PXB=7a{zwEj7N%@HJ9ubEu$E<|2s>@Vy8FIy*Q9aBJx#KmzTH~LdC8KD zrJk4ueRaq0t+DE6wwqzYns#S>D^2Sk0gF-#QXo5)15#NsBVUQCN@h5JX4M-Fx>^Bw zj2UtQw*)xPfP?kE7lqd>#vxVM?%y3J;IYvtPGE*&A9HM-F5Qw806yQk8hko+rgU$Z zD&P^C-L^6FL5u!vW2Q3CR1dB~>AONe+NE89^+<@;rw1*a`)3?NOQ?&1tRcVhgXQkL z>s*fP2y3bCzgTyG!el#5cUdBE&Gezl!(52qFwS<=sM%`o@5vs|e z5N*W?w^P`7i+FhN(iP-oci3_td^&4C^TDWEe{md`0B#x%YBLRa#^I(fQgZWh)mXjTy5*Xl`8SvvouqCmet|zzD)JHU>dKLlp z!IpFo4G+PPUK-RKjA=6b$Aa0gm#}Xe_G^txbq}7jpEJ3mPp{?SJ*-PlBa6e+EEVE7 zE~Pdx&5&PfbyC$lyQV!}ipQ2jbV{eIr}g8pnPrE|{w{$q*lV$DM$ZSXp4k29(;*Ja zN{;+6n-}RmqgxLn>z7t(zf2c?SCq0Fx;w>-%$h2LV5x5RwMwc5|5_kVFkEl9wP)`t%PtN*l;J~MShcj0#x z)+asfHZs6H5=A!r5VKz~I_v2Zujn_V)nS5iNBjH4`sy!8x`<6P>kGVr-ql+Ck3jz= z=PXCZL2cWS-w2SiWPGQAoygl<8#@=Z`mKtta+yV;(xp{)Xs?Cm4v{iW6JyD;N zM!E@t&NmRlc-21QhX{!;?9EV|qAAv7qcY|cg^V;(v;v)9c&a0gJ*=Hj?rnNuG^L0F zJp(1*rTfHj4J^2bAck7ha!X0oL)x{yDS60{J2iS@=uJ$^>r1jlRUP_S!9VNq#6WV> zclGgWYEOl<>E|$!xbmb|*%U?%UpBlKhxHZ{k4ZmSIJbb=yfS_msu-Gyja2WidVFlo z**z9QmT_{OZwFHtt#T=hNVp;>&jb-}mxAu$ny#&8rT?_I(XCu?cJF}eum^QZzE57n z4FM#cA;9Xe&>V)TLONmRR0FtGAD*EDZ)B68^DVwo&FXC$)jWW`?h*IYsxu48x>>YD zM^ckBa^#&!dVn$cds?+rylx9>^a2iV=Kuq>?1nqbLU*$ z@8J8!m2*)As#MQzVJqQqG1P?OKI*CM*A!WUF)$SQ6>dt${0wQ4v)A9kO82*cD$9j~yG$pf zwt43{fz#l3z9aDWJ86qf5m1NTBktDZ{8-8w*jekWeZly5yd|wVQC| zlk?cx*&I2NddIZXq1BPr3sl%;k^ZwXmV1TfyvJb_UB$X}s7>v$s;e-K@OZEPhn44# zGM+wTiculPeL9((b32K_rOSO4TNrQD;&+kCvAzaNTsdUmDhQ))#Dt^?{f&Ch1*W~& zHs89wD6qz^6PHRBT0xiX7|?+inYfsh6eLQS0O?Ki&2W`06oa1{{p_rJdqiG|R7dW5 zudm}^qXbCI51kC(+OfmK@(#dp@8N^B@(08~uEUN|>Kj25uU};arx|89YpL-HQHD$S zrp!Zn`@F~7UxeNOhiEVQ=m z1U>o7DKvzDPwP9M7J?b7t_i6P?Ii6090B`0ro^v?x|a1yO^Zcn&yw0sA5WLnyPlVB ztk@OBes9*nQq*3%or-GOq1!-j;+^#ZCZ!1tM_!i(E= zQ-Nb2E7ZA#Ued0M{sU%ue_4&R zZA>4`Zio}m0bu(^hNosWZk_Jan~n27QLrW@f6dC;5tUPamu^CH-F~b8EkbggqkQ`^ zz?GiZaOo3oxxx>F>Z8XG#lC*xI5PkGRTuvg+Qm%Ab(>h~SJ!=sn%HaUTwn94?r1Y$ zYQz9#|4BM&IMLMk(!7mZWJZT)az~$9MMGJ(H$K#S zP~XfP0<>^@`Rq~|e(O2Eo{;Th6hGxWSrCPt420Vy=s8&kK1;+S`JQuI&mu<^nA+jT z@ycX8wnu%Rd^9RAic?k0MTO}A+U;MKVjhLT(K@mT&b0thT`!uD(?yyc^LQ5er^_FI zf~}Uvzg|Zzy%N`aka_r{%IS$;i;Z7Ae9;cZZ@>QeleHZR-uHG0meTfpl z5To{m#T8&Z1u%J3%2^TW#d+=H!0qVZ(xqu614d67u}C9 zq&VTO>e1EIf>sYanMqt0%uolW|6K?R<}!pMAFR`rC}EB(=nZ<-%!(?I2nrI20bq+E zwSH%9hhHTf#KG>KOuJE{pI?H zo$6H8-~*D6$a(HDrMMXp=ktbU|C#XEjI(IiuO& zUFLx!86PuP`YUgjkhekt3Ac|fp*>6Ku+||Bt z27NClB#(d{0{$^JusAXuLwGA`@#@e6E{qe7|Jd?=!iWLN{I(mvtOBu{yeTQlZYYg*rs|K4f_r;Ty?JmI2d#AbpB zQJyhGyW~;F4iiWD>Tqhl_Hp|#veP3#F3(`TQ#?qVG3&^eyDG$axrDSqSZJs%&kR?gHxj{LNLmLhfjrv}$wVgg!&KZSCRUh=nz?IARe^*R#khmR zLX;M7WuK7-=zODaIB^>h0CsKoWy5ufflmsv_WqELIt{Z$WSZS*>CJ=Z>XP%8@5Z7O zT_0{y>8#IwJw#3MjBSW87F5CEcu=@HW!vr;ed-cwlD<7b@ANLbZlYdug+*iU(xDyi zzkFEuebzBLFfKbh>h|XqvyRPt#-vMM11jG~QgERlbpB2x*KmGltI??fYVXR2WW$?% zhN0q&_BU9s)Jtfo7JaqK3~KV+F$U-HagP&!=+U1HJQR1{W?CV?MGH=C*&ots4x)*= zCm>#^Q0zslxmT+(`U>Dx~k zH9ST+i#Q>+Xw=)PWEd1UGx=0)HCRyRYG!Cp)xQl!HgtKPSZ6PTa&|GE*ypMaV4lgh z+OCy)`JR9TIB(?K>{ zh3WOhNZS{zz_Yz8f{edGL z;2%dG23lZ(?%(1Bxn$nUp*BV_JW)h=Y_LPbQ22MvXj?&Mi#Yu5Bxj|!*>i3_plQIi z9n|WPw71v`l$&w<)_blTHJ@6WvQg82uJY8*ogYsTuX-qOm$pQg#bljbnv^p?pHsBM zb+gwBBPQkOGWIr#LB)~fT4_Ul@s^>2&87Kd%PPw0L;WO80qi)XFc6cti$Bc;U zRsa=13!E!+HJK&$;9@h_gLivk;>d>wD@+*6c^ecH!&CMVs~I-y0|9foQ-$u+F8ez< z-hJwPZtS+lG^gl+5yB;IQm+3Bn}w(RouY`Fj!n9m!R;n&B=A^t(=JBFoW&v4Bu8VN z+O8{%RLXu0(wF_GQbVVGkCMWgF8u;bXMi6oz%-IZptkN$kh(g$e>)J?>nhJ_X!^ee z*upV_!EYdz0g0+ZBH&ee3Rz^$a2$(AMFTC~?ERlTgP<=s2F#*vP!MH=OUrYzINq6@d+74mwIk)$Afyd z^8yFEZ<*|R)3E+Ycc}Tbr%9gPNuK>K#~41U?d~@f4%Ovvcu8(vXPS_e4a7e4C}S6Go%hl)3il<%q0GbIZ=F9LU+5(vV;Og9?C!74GMkY$p-lOWQ` zSsE(_2GEOATdf~eBp@U$meKsjch^Gwvc)oh^;o;h&&fb=*T#@X4FQOTvcsu z^%QN3eCI9DmN=R)(BUyN%~J&=48xHs)XE><=;%W{F&cO2*WEzy6Cgd-pbk85 zCAJY0H$+-W5w?|}s<`!i&J49z4e5X_yMGzQ%6M!5*bkqm*U}7&xSZ|V zrW}7@LI`sgAm>+%mg`c^n;z%(62q~L7AS05*XZHOt9uYw?`nb#3W4n!>0NVwgS0Iv zp2k@-Hcb@rKV*vesgJdM+zU{WE`=TjW2bSPj7T+TmRO%%&@c(EcraQ)i)|EBu`g%* z#r@C5tNvKqZYI~a3!OAm>Upl$Ux0wkzyWO=+S#Z<+4|rW`@1%tN5@c86e$AGhZO-0 z>8Nd!Xu!~x-ciTDou3m5@gOGy+HG6VZDV)AdDyHvc+@}(8Nbi0RJYudjI|8(BU`5 zn_qHZKg+_FmL&NDQCi7GEmWWETfa2xEa}~lo&$LGk8M0(Zf3eysDTmHPB;Kyzw(1% zO3Wehhew9wEaQ6XGTdsQ&ZRCdcnfm<@lu*HZ4JhcK$);v_!HU8L4G$822a{Y;)y}q zpy7xh%!R!EkDRui1wU1s>ZgfpmS=AnqliWkt9=|n7M;A}efN(s+J`(C_PiXyNsMn6 z4VBl&uAx*#5_YfP_3QPX;v%M}gKpy`xrbF}(-P&QyyPxZ&xZB-ns8~m4ksDf)^6R* z#mYCP8^(loB!tsG=%8XZZR)u5;INh{%Dr$_yVPs0f|DVs>5fs@z#U=4Wq{p?BXt$H zU$`I|`^F#E5g{%BiqMGDA6#$~2scUCf+>I*X&iqH*g}PZ%NEuJaByD*zic1OUCasq zJ2r?OMCiiCReIlf9s0vFr(q#x4z<-`S2XS|W9{0w)VFx)%khxo7g8}{!1G#J|+(NlF>#@^@jA((dXPmOX<*&~a{g(AR7;CEW z*4B39taV=Zh}Jb;7de@!d;*xxON$6~_>pl`Y4zg#%Tk}h*;4!K=ssdN7o~8v1~RAK zoE(|+vwa)%22D?l0b|n00jLk`ts!7vvNJeQ(80his&Ao&@t!2W3Yut)&uWF5p@$b? zjDVwMyU?L6So0E2m{eqM7Uyc8gH68zMP-F)H?g6F3!oH;soO?V6UormJSV6F#FA&$ zw^!tjUl{uiSo$s{IYCOZ4uLIJB%ye8mDwHZa&K$RawCiWdsnsZA$B~Sx6EGUL>oY$XvhC6Or5= zc5?WvM%CDriw%@vgU}LUndm@hs=zSMjLjj(w!rnR;(!r98DMkC6h&u_orhMiK}0Zq zaWe{s(5u8CTH+s+iie8Ip;p+(S@xl){c&pk#980YxNTWw>(;)c2A_gd8i_1iW$(yI zSR6FC%+Q5-X+t`}3H3#J{LwtstMfXhu{wo7<+WFS|EXjg5a#_XU&*_rB>G2k{B8)T zL_@36+D%aT+f&_QECg<`F%UItISbhy<^h^7Zd7e zuGEG)jL$VZa+|}=U*gD~FFSW}b=LDuJXo|?`*H71UUsbV!H#c$eGsC`>2m|z_n0*a3GfLgIRg>q28IEDzN3dD^GWbgT8Lr&CFHxPQiMq2J z8YFHS$=$$%#lWO9L!Y+S9}n6Ai|EDpBd&OV$3h0NDwTopTjTO~hUbeJq{c%ZX{W&s zn6wjG8<<5L0SpMP_`UepMnIRYW|zWDQdpd3DDVmYMe+mFGg7OHQRJ`?H>rN)jI~8M z$k50Ze%q6VCyq~#>D7+AFwAFAl@wLW31sUOm^f;0xYKh{D42cn^>ne;jSO3?f;6N0}~~( zyF;em1x%K%(=Q=gD@|x4`x)~N_0tQ%zJXBkMDR(ZOw<>{-Aa@RWvl7dH_7+xeU5*7 zrm9(|dZO0RxUGDtUBIm5<1c}vjDg1W>xQRV*pl-MCVG;tx`d^^`c^>1$fBb|TXQ5@ zVJ()BqF$E;+0HsI&J3S1x2xF)2EBpa&mbAKP#H7@qJccZ527Q(kex^6Cm@#oFG6m~ zl{09O90#~sA*Q`r+@eU)RyHNF{_91&^@|LEH_9t#Yy zZ?!|x$N{|$-`a1OG;*fjP7eE51cQF8qM*IhrYsww_wKigY8NmW8NDH9>i$))#P&DZ zU)5Xxz^U+@xA1pzpm%Yp*27D>C!)0kfThx4s^!X~mkITZ3yPHQR{+N(k2h#=n8-Tv zaajjNZ#OAD>(1fWvPhq@Ky8#4JNo5f8<`i&`8(#5(2P{~Fk;~RJxLCV*{X$ne&x@< zT&^%Sjif+*4tpOkdY+Jc{ulL2%l{OEEv-^BEgGl2d!1fJ+Hhtv9BE8EP3aOQU<1I- zEC=Q#)|~+$9EtPv2PcQRoi(>>8xnxz1>5%Fq0Ws+`{8_uG~}O0RTHwSA209OF72vo zzi|Or(osuwMJ{v`g87G+EN1$76Fb;BQ3?3^`uwiM%(;VaJ9)o#rez#`eNf|lw(`2| z=5@XRvbc+4?h|@@G4-p3k~d@XjYkPq!-4BohsSpr#=4L;V~c2j8Z=|9iX*Jj(&tLa zDUld6#s&qQ4`y|tsM}j0J2VLN1F%kpK5$`bU`qWfSdp=2@fY;}Wj#7CPetl}=zLj@f5S7pPoE6VT=)6q)j~1+|$5 zbAKgSE$GdZwiPFE^WpRw(r1~GYbTh!YB6j8OsO3Yc&Ktb#p?XtL&}tnJ@G8Z<1>}x z(*xW4{G|{1U!8iR$5;My*Y$W^TjR|Q6;k`1p@XMjqG**sGSO<3IagC)8`-tADGObp zCc8lC4SKj(hZ3Zf(GnsdcA7xYmCA%ArQU2BmlZmEv(5T94oywwW#okHhQex~f1-tm zP<~kFZoix;{fkPOVM8YS_=lLQ3xZmLB#7HQCfCQ785#9!xPOaw4qxjYMPt!$@f%%Lv;T(2i?yhYDc z4p6(rLF-NwReNL)I5F&__WrH;O(1shA98O=cMU3Bfo`!f<3tfHv}2gUvWR_zrDdt zHF-%5f zck&Qi>!K<(#hV=(sHjFWT%i6b6?*KZc+PxjND_v}wzV!M)PLT_ybn#Yi4JYCcI+gD zovGxc!?xZ5^9E;UxmFsoUw!uX>c#vkXGW%TKC&HJNKt=oss1rPc|n(72Vh_BJQ&{cQ^?F)g3 zkpfF6*b?4GaL`ObB3{Aibky;WPUFC#G3ZWYqwCNTh27V7Wy+R<>{76vfg@g;90^O`_-?z6FK`b^|ES?_gt1b~O)4+SJCIxst;X6^VZ=Q)4|7tVpew<5k*R2t`95v1 z;Eb@($u{0u8wppIe(#=l8!gttq=?~Gd8*xklVTd&QjFhW7Y;1s=fszXybDXs3GFaL zg-8_UwEuXY){qtI(6lQbBekg_PZF|L^8sfwwoD)yx?cgdtd!|7bmJ8MnHVkJ@2wK+ zQ1u*)P{)BSyFaOq%=E`*wo!XHkCWh~4n*s35j~6l`uq05Jr6P8oyWD`n2o_q?X`b$ z65zmE%hTmEi$c*T?K+OkloJ52D@^0K);|pCE9aIf$7Rhbu-!NVda935;B#l&HtQ=; zIVF}=hQA|WAaF!fJXX0)sXNlQqe?2+;#7ca$;XETw#9=&jt1PJ4OdToG}h+ja)07z z9F-}Ci~QKzQ{tJV&G%S>QV{CT&?;S@ZLQKlg}kZ_ZBL>m!&1;n8FmUu)8-wp0Sf0y zxoOCosRGnw=NC3zSmo(j9UNnUKBqEZ$V2%qM*R&dBv=`tFF=g%E2?^auE1ub7+ClX z-SD;>W%rZ@oL?}klZ}VT7t0_f{)I`^1wTFJbTJE)rTq%_AkWew7akrhpuHgwdV36b z2`iIBh63}x>-5sbvDy$zVK`}RgC?^2;FAdXZv=Lg70!TcW-6=F67sH0wJ0(tbc=3I zK*!Z^vpYOHD%0|gk)QWde!UOk$13$T>>aBG&8uD|s#fZt804_Mw2m4b)P$uRXxinm zng_G9y+LoyW~BJWKPf&d+<1d@s7-KjtBp~AhVRoGReU$Ld;OcP(4^MoF}L+GhmG{B zONRRbatf3A>z>s2x+q%D4Up4rV{1X>p#D3fP=OsWay)ZaUVqUs&p-zeDVBOly985Q9F zMZZBQm%}Bilr(CzUe&PP-8F6`>3DE7wR$)~V)(o;$*AA|hHs8-c5Nulj2XD>Gi;F2 z;hOV<_ixvJq9CLFQ6k-UBeIo}2~!Bz#~yc*Lmj`v{UI;ef7C-QaZocl(LAe5RiO@- z|D+zXu4;^Eqi9=FsE-!JunC|IJaJRK9vlD zWS1LLIvpAMmJd#yj+lfMHg0JQvXdH)bLl4@9eJPdDXi-B84$_n@+9GkcxGDEP*JqR zgr7wy>g~kM@YGA8$LOZ)XVPV6st(oiQI_muRA<->(=g9W`G!kx*!{2&57_lIOd&J#;q6syY5dJ#_Y6RS1hb| zraDPh>7~&_7YyJX`CFU7L@DCf-omb$Y9X#C7>Ri7)~iYr*xBZOFLNKH7tn}M`7H! zqnOgRi1Q(oQnHo-KDx}d*$m#A2e1twrSr5o8r{&pf@v#`uM&pEWUC_6!wot1j=5meRU#UVSsn+xpEV` z6`CfL0iFnx`JGXa+$4_6*Q(URdG#8i)^kr@?jhb6XGrcQ&rE1#dm9-R&YR8{HVZPg z!ZU*3Q0RrBt?>quWkw=i-&7jL2Q*02#tWf2kHR6S=;YB?k^*9`Fnpj6--_G=NyANUZ_zIUFnCghW7R zsef3VqXf>n8H(Qw0T&#-%8v!;KLkP7JOX;t$_M&#{AF<$dR`XYIg$a+hTTCQ1(dMG zi>3STAlq(i(Z4EMgn*B^tW>O^gsfCB_uF2jRG0!#Z=(!=W4PoAF{;C73*LYpy;^}M z3NE&`_j}$=yiF0)wdc>8nG&c%s*VOnd!1=NAxhd3>bs+prZ!Of^TU+3ye5y8aUX^+ z1g2=!sp6Tb9n#9cWLr;pmZ-(+IKAVd0hF2^bU>#Cqg~qlwaWDp&DwdtP>TYzQa7pu zDUARHrQb3`sbuU|XhC5D;97yk!-)4V(&%kmyLKFZlXbLA{W5M#=;l#iu%zn>9L>kM zccTRO=pqtrf0=ity4Pz=V#xfZ|9W(9*^j^pcj)uH_MF<$*T+}7ff)U4R8*yQ`$nXW zp8sh$;2coZj2)D4wL;cdLy0f4hHx1JK@l7i|Ncz zOap>J7e6%r0=l%orC~gMgM^7hc|Z6ilz3pF`ZJQRWN8(#bw`z&ci{QEa!-Esg3J)ccQB3#yunrwnTm>f> zp_r*SI&i8d9*^t^Y@-prN=6}9(`-~ipciD$O)cewHLiunL5mcG_aw}6KR$R#B_20h z!Ar9b{^3h@9htSN1e1jj0b7Trug@5U4$-r`?X466$CV6F8JMZbWDtU8=~+_w1HRix zbsZl2IWhA6b&Dn=8V8S*f`-PM17wz!&bvbfl|zz=TDn$NeMb3_so^DeZF&pQJZ-sM z>Zx*gWy$z2()nmgf6X#)dGD3X@*)#L+H7mLG%zXk!?13`I+qA%>|j&|6@jVmTDaoP zo<<$i`cnm&>gSLkqyJ`f=zT3<^)KNjL4-D|`XFmAsE)>v`kU(V?<6FX?L`PM>EE&~ z&diTk-eQE|C z1Eap$=udXu`Zl_I&qQUma{Pl@&xx0JIVx2!nD;Kl+i%4)z0wE*;&{}ee(0D1swHC4 zdujdC$9YU2Zv-pQCq=YD1*Tqwv1`6|Ka7Bq3&Knpn>oQ88`uTs1K-W5S&%Q8FjJcK z&P1(ifMN}cbX^~A7F0R@W0vR!H39ftbu9ZO>4uA#O@zu#$O_0w?4G$`a$^=MCNK$j zOdPC+{-)CWNoxI@1AxdDSf@9q{21THsN0_lgq(OoI#Z?@hGWobJ?rg%GXYA$ZA8(8 z;|$7T9-70=(zR=2w~&l$3m>OI4Px+SvXQcO0|%o!E76%@}N9x~0t0a(M7^yc%<>U85^4A9i<< z2nOvsFP5BI^*VTpG=pgQmPSI2|5Doon_>E!S$=cz)0Hl4XZFuYZ6ep8lqJ~Num>Ce zk=PW&Zoj8a(6ivSG%9*=@$MEX4msQjeyO)0;a1%pfrKU>*JtX~fb}-dmC9_-dxP^Q zr$OAjIiG5~>ri~78H%)?(vBe(5JMAQCA2oa^z4k6xtVZOJw4x;!^9=)cnkaJdYu|i-|CW@x9dJ zM_{R_hDtYT2JHxAAU_xbVX6lPiIXC0!1qze0fxISyVjry>aAi2Xkl59282E2-ZLx- zKFVv+WddjNizkeXK4#QoV6*Gfhc6dk&IQr`kEqgoYtLru(Q7GIS>)$_UkCRMUW~@& z&7?8^n{7f=6(Dy+6%oYa0n)=R*EAALeouNF1Lp1T78O9Rq_{3@qwq4T=K?`*Ni$)e zwwH$r)_XNZUQHlHu-J_ve|M>Abos-ikrjAaM%XB-b6j2$uO{J(*DwWD*DhY`Z zxtrOil&QodMRJ)$B)8lNGigq)G48_*#uyC7xXhUQ%-+A<`Fy|Mzklmli#4oeul?-( zJkR_6y79cQ^e#2O@sW_fcZjs{C2>l@l4T0QJ9< zgK-#l*~4wYKf!thEdS#dK1Dl6LPlp9jz8sSjcz$`TXrWjhp}xMKke)+%Io+0fXU!1 zjrj}yB4u=jr`#ucQph@mRyGH@IjhFEFn?@g)s@ooBTVVW#%kO)F*0nUeV?P=MUj)c z8FXCi+;j^4xlnkaa+jdRur099C!=zkeekHge}K!HCps&Z7X>Zc-usJd#z-En`KKD< z{A7+((aM2m>E2oT-C-?lmUN7ao#iT`ao^)_37K=T<1**&G zMA@iIgv;Y6_^mvw1Vn8A*^Dmi8ied9V_rY2;l{>+N8%T%P}ePkfW7X|2^`=H4K}>` z&p+^=2)0Sp>&Ph#KeR}Ha$>9)M#eBtDQE8}J%>IsWjv49S;c?D4yOK;lHI{UkgXmr zDIE?a>5^%g`fxry+7o8yhQM1oje7HytC-7@+C2D^`c??9wTLC%E!S&+(%{s@}b+Xum1pGH2BS(>^>1 zCoC1_W-K0Enz*pR59Sp0qGoa_xDC_x9qv5)5%-zUxqKKxh6`g@iS6qUNG0`&&XSWv zdJ9g)to!OS4&E-4fcI*!fig#F-+mKNj}BKhTw_1H;sT#g^UDwcPa$o;tzhWCTNDUG z4_BQ*pvn3&rDjUzYn%bNMrM~#{PDx6CYVtws41Y_!#;y*lq$IOEBE>gPd!Unm&hfx zhh5)RXZb*&Oyp7$l}er>tNt0q%`toJy|&As*Iz1d=%9ydIh0Q*mjf_4M)z7HSuNG} z_1gxz=OAsGu*h47V<+Kh=YneZnF*gkBdQdm<8}aGbYcN+^qQGuHUjO}nzQD7%uYpo zO{;T`-%KuoV;MO9D1PW`zuNZd;3(1UAJ|`oU0v=5EwI&nMV&Li?3-Q^W->)SVl zAg+FpT0~CbXB%B$zJei=Mn|uuAK`_$#xRD`XP;4Wq`A;LkXQ% znq~o|PltfQyJb+y9S^7|y@1lSVGL+I9A=;(nyvpIy)MRZ>R`Aw`vGx%a-P{DA@VmI?;}30LLO&swrM^wZ>u4sul%du>?t z$9u;A%>oFf70QN-fN_R%xXX7SEJ)gL2`_*_`ZI*;*abq>OI$(|!!4WAfz%Jnvt$`P z3H$!#3z(Ovi&DL^XPy-qHZ68=;jO#r*i6(5!t8M&0rAOVg2W58`2lOng6EpklJhL@ z-wd>Wy?b=z*9%Rqyk&HqhPVgbx$*0-Zi1Pl_Zb#zmfNUz*j%!aZ7Qg`nS3?wA1mX; zzT&f(eKZA4WQo6ULe-qY%e`y43s)`Ov0t7sT*PCD3SOETP3|59x|HnmM!V?m7qgtm zGG(3`rje>U%PLL3i^(C`G(RG?f#X{)FtwX5!M+ccw7U(+XrB4M7)*1TAe2`lac0s)X-vvX4vYvUV;SNfFv6 zOA|;$nEGrYoIY{Y!)FupUPko*y5EK>TMzxYYlYRb?P1wNcP}h6_^IfrKL3|1V>81i z-}LuQCMU2)e&WX%+j0!wMbtBQ<-nuMeJ2MmQC2^T9yu=W%EFItrJDTUB8oY82IHtV z8t&ObJ*V3lPtyu*WuiTFdTb z{!2^KH*&q=>*I@!DtEoJYr-MfNMs>QzQ!BuDI_lz9K4#lw&JYY9bfa|@xsDF5!s7o zHjw(9+Dp^j=t}}p>1k(4`c1VaP@^M~yJp8^q5aArt4qthg9}|aFrZHD2L`0}5Ssxk zAV9)2@DmssV70_iO2M-KhU1LT>;I|ySS?Y|MhFQ3Z$RiuJ>U))Qr?a zh%c`V?l+@#T5-2lsJruALO4I-t&Zu8Z_)Ckv1VkXz!RAfpdGSUCex{F-Ht{>S?WhK zyuzjko%2_AQsJ^p%B%Llz@1Z}%=<;6&8Dmre|^sKb0?{#@%JJ%@64R}2l;syvq}(t z#X&Fp`GcqlZVZ!NF3uNpUQ#&2m}X0^u5?m9ku)Dwk*f zjeRfjw@$HH&!V(MU6-TOXaD&l7*xv+OnmzZ`n*U4E8jHgl;T}9`oZX*jqE|m0Ql|` zP>Cz?)VK?^z#ZDp@zXBQ4)&1N|4+!)m)2mRojkKSS5)%fg%SYRj)7XljeYY$GP$g>Mqe&)p5FyB85pOCPkN!&ysO+8F|V3hT+g*eEBh&`DyYR65*R}v zsT>c!;Klln8@JxdsEoT&Rma7OA2`1!1_asJp*vW+cg2QiJl`T%i)*Ke`WL^JouHVW zV4tU09#tdkP_F0y;Y1zykWdu`pyDSR5JQaw^XH7jm#L$1&EMlU>8tI z$IJn9(8&?tCM=K`0El^KZz)q?5y;QM%E;tEXGawTDfEBGEWn$8kz3WwQQWYR@KuqC ze9PH(>}P}F$s|fo4tH{-Eu0zSJdzk>8hD(GfNL4$4UYG1U4Ecy!G8yrQX>|0_nU?u zf^zIssekLf01dyBB5Md-w6csuBTv3%qd`WoYJr6B^QAyanZX?PgjJUj<-99R`q85% z0Gt?1ky*leL{Ot z`OMjctM(RjN~?^!b9ycMH{n`BK+2s5*$s=!_Z=Iw@ZV8anb2)_EiO8$K0#cJ({V7k z)lXiycrBYHz9cdXGE_B>y>uSDgbr4wHdm=QfWQ&#MnNfPVWUCDILicEZevS+F+?#K zYQ1~G;v^%oCeOSt`##&cSzD-jQ*$ZAgnzD@Zss*2J6n}ej}R~@#G%$?qkc*$@0(&@ zd;xy*9pUg-kNP3CVVe#8mJm5JF3n$KwM=J?1D8^Sy+MiY{7*wOVq2b`=3;u{Ok3t%{i4AL5Fk;FqfJ-+3^>F(0(PPjUR0erM zXz?QA#_$a?M1Cpt?UT$OE7Uz)-1A=6!JKfrf>qXj0?nH0AZ&=;E4E6EFTj@5-6Qz{ zlHpJ&9jmCsDl%hKw){J+hePHkCMLt}CgZZX5%c&rE=+bw+J1!R}%uB@W>P+?> zlp#eg<<8 zyw_zP?_%V>zY4bGRwg>5r%hG8+YmPkUQMq)?>JKG0aI|ee7rz;X~pVjD^=HuVd)oo z{hZ;5AgQWOl;nbyJ*!yl+a7+w8m2gO50Lj^-I$Ph3&<3$XE^f7Wtq89$6eJlJYyxYEHVGh%q5n5XZz{jvG%y0=pxFO6XkfC6QZF29$1vA3xvRpU zWLQT}I~fneixga$LJ|?rwv^=+k=t?)&O-9C-t5E|EoL~Qm@V-5$^4&KNPJ&O@mR);A%Tfkq^!)P0Gvi{*fyCY8MUs@= z?7MZp7V%OCGkHit`E<~j`%@?yh$WVCLzKTUJ>J!lV=w;BR8#RE-^NJorPy;O*Zcz)|*&2JHarwqyXmQJKop|A$Z*>q>XfNi3dAl&14b||X z3z&&KN+pw4E=YC0eQ*=6b9oo?y*~VM=m`7Q=2Z<_h=e-)(4olrdWe}E)sn0ntT;%H z`w?4g=XcNlbet99MET$YGqcV1^M!={Bl_u^{p_!zJ#-KZ z?di!w-760zTR?B;PxFvMn~TPucmoGz<$5`w**}^%Xg@RrCC)8W?^nn9R%wD&V@``=2FehVBidY3(9enD|hbKmw0yxkOtOK4LcXEMhL9h6|N5`0XQ^BBQR#gM!hD&vlX zFq7TW4pI91)AjUf_iuAE(B(`C?FlW8mZUqB{hd%dr@tRr&0w1zu(;GKkkk|wsnB9l znxB>(+WmBa#KiiGyh&y4Q85ZImv`Y`!fqdu z0;y=yN5m(oD4G${~Z?w^C~YflvocT#ftg*GKzeJ?4XB0 z$rVwpvx~2H_NcuTLv;|kKu97W@lq8AoWOuwCO_<*8}XhCVyYD&!^9= zIvoGYJ#z^|;nwG@}~!|*3#v8Nxfg69`)L8(b^=eHB`Ih9}#6a)>&R*ET$0LPf9Tdexu z`M??mo;zwnZu(RMumzrSB7NN;MC?%zf10ZPgtmk0ma`OZ&Whk4a=>}jK@mB%gSR*J zn_8b&%>S+(4%G`)gx_xo25Y-$SCSJvP_MD>MWXRgOJL&7r>6Vv*unKS-c@qLq~`O* zyMjB9SVOMW0qn)(`dLp5>*5H#sEIkze)FS9*)FuqJ;&VSYakDFZc#D z#c(0KsDy1n@7r?j>IAn=SYh*p_OdC*5h1$ga^KUy^eo|L^h7wRgu5IteMjAXWbMYL zZU6M|w-dMzEsM+Eq!snzpTtuFda8Z8D$m~7Vp7h|>Iey|QRc6h;a+U=*RdnmFq)lJ zGv0k}L{4_bYCM-!N-blG6gJ{TV!cASpKI?my!*b<=ZrCAuq;LYt37MEeHpmmSi(A@aT1!tyBCLGlz=*0wf63!|DO-Ha=~P?GY4 z6IJAe-Ix(MygJ7C3)_KUT+1h}slo^!>qy;-fzn?!=6?!$CuK}k85w9% z5bA(Y^q&3qQ_A73i}b}OXvCaK0?Jrj`XW(IZ@-l%E2S1ZY1n0hhCcES z7VqKpdY)3f!iYhI`6x@DES{3(E5>7(u^8o;bNM)xA5rS|f_p11`d*J!WL9AY<=%A{ z8f$by(6=l63Cv5hE@i@nxf64z?Lt5vvSunbT}WXR|7F>LNO|jwHicP(Q-5^DxbpJ0 z&HuflH5&OIJlFgH854Nq&tF^rvYJ^QbJ4vuKIN6^^`ql8_XIBkvt&)Rue(aqiIw3% z>!!ysw%W4tBbAA{8a9lReMFlbK ztpxqknO!yis}Q_VD*=Ayhq!%MOxBr*V5n?pZ+Tw7T|}xRG|omZr|It&2w|{|&_?j4 z+g;Yuvm+%Jzs^qw_+gPpe>I8gW95`iDRX(OG3ECgL?I;*3jLC9SP?y5>=TIYG}3r^ z_1rRkxO1C$`FZi4=OI$_i(4kf?5;S@$aKPue%GGlJ6Z?pW+!Y_vz{sI2=tw~1xWMp z>PJ=07josh=-?|qCp2Gti4ZucVp|^wJV!8rgNSz?d8hHUZr#SGD56Efw#Uh4;U77T z?aPZxTc`-*C~YFWpLr-T`51^7){pm<$$r#t)Ui`&w>Kg^3!*8RkgDs=GqtfaV zu;hRz%v5=k9qV%F%zeWOyp}%hmb6#XQJp5Agl>k3-GH%YOU?!}1LtR>jBqm;gfB(n zK^0{zVqfA{g0J6Nl8=2#u$6F zwX!5NW0QaN9K$5!&`rfW7VO8W^GUAS40MfY-OQ!pZ#che6g6#N6or@P0uiI{KnL=; zLrgM7IiX%Su{eMJIa(Sk3$5q5Q5g(IC;pd$b~ZwHP#XJ>z-@n>gabm2SmoqGBt;TQ z9W3)ApjBSr{V~UkuuWo-Y<>k&`gH-6P$$0{;|ERoR33Ut6I{x4K&FS zkszTEdSVS_MD`D|kB5?{Ui0zzY&T{3LGF#U1WS=J)`Ic-?wY$C(eLAj;G=p!g2Kg( zn`~B4ZBv5aTDkTf*ktaVi{xkbF8P&v|(q7n&2~ zlu!hHM6sW$jvBUFL$3rL*60NadILVSaG54b(WzV;i`@(e*X!pSHZ#rcBA`)LA_Iz# zxg;07>k+*Q?7yt*HP1rln2E|z<@7D}!5)7U_8ww3F>vUER@^f5!J#k*g;_@h-=(>k zKYRB~TxR}VB#*Owbo$cXdg+pkoj|j(unOVj6MBs0lW{lpRh|U2D!VFse$dbhiBy_( zpdX_=oVIj4|9QE) z@vJt;*>0DjDq7kT z#=LwsD27WJ6|+wVd0Xw(83hnV-);cGjpuEd71rwuYT>ig2ahnTmrx4O(<#fz(i z6&TB!f%vD_euPx&jmI+s6;Efy&G%+bGYyT>HuW=*%QAfH=mbTYvhU8OKJwFoh7bN78v`3_kD6yCHKAb>hVyrV!uaN(&Eu>Jh(rm%hxO=CvOIWKB-_BqCd;>R zDn{ghG-h5wuBy0IN8iuOZ3O6HEowDRW8KAQy zQ8dXK)X-O!zC+g6b{d-C1xbd2XbZ6vse@lgatw+hYp056J|1p>H-oR_Z9<=tkkJ1~ zYe)*&WUX;IrsoSjjH)xziEZ7gP!x*o56!DY7^F=U%Ra{520Fp9JUA5C)=qVB7j(0E z6gH2bWd+G_*nw71mX$$*!j}qzb)-pHS(1?#MahzR8Lfe@FIo7yg5(`xq>fQkV3^Q9 zxsIi{I+!ZZ0f#9HNxk1+3dap!?e}wK zXBsUw@kffFbd4wVK3#IlSsAhtoF35?3ypy_%9qJ?<3%ye_KZI80vTCtdiaUv4kH@n zv`_AcusVrf;mj)M&nW*tND~(fn?be|< z)yWMF{O^+<2;A+knLfbZT=A@UFaf;h%E8oH_;Z84)NikcF)xCS%_5Z=NAoqdPUZM~ zV?t*j`9@T?Sq{0x?7?38$ne ztstIRyc)X8NZ)( zAy;gZD4pPK3peRRMUh8SLZ(iCtU)OtOV(n1NVCM(tx1AoNkk>ONf0Ns8GA>qWeWIi zh%u>~tKb|F^o;}k4D>c(BdX$1d8GJR$VO03r;u6gSsQ_LEMbJTm=iLkK2jWZ9BIfI z;VFo5s@7ugj%MVYFeY=P|E^ZpmE~7VU_s~{Suw{RiJa$$2q!~cMBx;Nlv$eqc!^o_ zI~DH!%mui`AEpLn2-D&e;jS5Iqw;7DNij&$!LzmS%UAP5BKW~{1WTBNDrP0OgOcHS zyktQWy{OqvH^zez{beNUC`A>ZSm;hBm$#)d(PZL^ag4W?VRUX4k6|2FKd~1(&5H>x zr7t$EKv?ZlHZxf^Q8PWHISElDd+SVzkj|jNrdm+krO^fWO9x4+K^s_u2hd!|xpAs% zU$De1V(xB>iEWG9R0sxv~%S@a^B2ZmbP^g}O?HmZ*| z#Fpj-XA6Q))7vId6;3+?i`E06-<_?mFNugVC|XuWQwSXLGCr}tBL1Qc_w=ALM_l5> zo#&5|ilA|>y z@(}vcz4`X4);oK2zO>lprvY0DtLta5gVBE*1bx0{?>AMnERpc*klDN%MrA3Nax%hSo?$8GuFXXP%s^9NtB(dSmK%jsm?06S{ZHBXt zrFkKSH4UU+nU5Nd6%D62(iXD3-fYg)NB-k?6(j*jylbpcRdN2i#seHex3_c ztfq-ITaz=Yfh&r*Dvi*Qd+h;VRF?!F%zkfN9z^m-dKqR>`YIC25q}gGu|6c_Ix6PJ zdT48q^-vyr7Afx#7xJ|H1E+AhPyCJsEV){EF;Dna%_TaHpp_(wDvABY606%$K~UH{ zF*RH8+BY@t*X+k(dwt!r-+3w}hNX#&yf5V$Lq%*ckNlZ8qdwtL1Z1sR_ah~ncB4YU zvMeWGXViwSWqOCR>p;!^bT5^y>iF=$Sk$#$@{-I^$}?!XQS-m}iKoza?X<6O{hXVj zJBOF{vln}4{*iOvGjVzOs=L_ehopx-yoZ>*Tb^%D+8qDxex>z4aIXj|gIPID&|y#5 zCw3FX^4I5H3?BjGT3gl9fnTnj+WrmVGC+L$hg>GI$lA)a2mj!9u^0+1w4ApJmr532O?}-{~jvv%vZR$UF_FNhphx zUKaUc6bus^zloKD$Lu%5YQZ1-aRt{S>24V7x;attaIymG2qgzeDR)LsK0^8-l8JiBlt(&PKB>*bDT1l)@o!WtVNqnv&tGV>Qkh2t>io?zb8Em# zx!^^pf_eapAxRf8o)@eK@t8+U)oO#FCge$FEDVbBN8D!6UaCtN(IslE`_g+h%;?Xv zrs^S3F>RXWllm*AIzZUYcmDU83cb{6OC>6s(KRi?0QRwxWD4twM%csZ=Qt46c$a&vHg+hn2sKX~7#(TP`kjhRqg>w09Ar{9A@UuJ- z(^z30F{d7xllcS91HM7~BrJHgsw-XxLN!$-u&cQrxT?Jf;E2l;q|gk+EWrDb=>(&Vn~GD4g}ZYDD9m~i3-Bd%8ym?A+6%BC*do`QZ|LRl_wHktaj(+Sq21-sTEc4x>$Ai$_7{Lqh(!Z^$)j1a+aNs z&hu+6al?x${L}011*ycv^7@(?`(?rUE4Rh2hGUp{&KQqrVSrVytvG*|m1}7*U;$3}10?Ukm2xi8hU+me|OrQ7u*kwga!5Nmo^N#9(c10ZH zce%sqi~HWHZ(9AYiPaD59{iYmzcKipJ&2X&uSRYCvUu~n$|^u09CDjHpd3lAjGc$n zsKT?V{($yE4lTWbal@-IMRvtD^Qhm*05bD zB9|BzqyV5s5c(loO+~0UP^5HJ4Lz_pruBzZOc58`L?Ji6C$8`YWxp=n3#dC`4PxL5=oEDmp9=)<%}etTNk0~cqbpo#^l{1At%m1LIWgDRE& z6cE6TJ7SM)a;E_Fyuah`x^8INGyWMAYISh918RtL6;mv*!W3v`o^o|@c!PLBMk$JW zD*<1`i|x;q9%318h?-T%eQ7~1T~YeNKv>^@hb)-oDq-C;dZ)_XN0si2(TIX`P?Z&a za};J#6XUys8seeL^&d{|#P}AEUtQBmj$~(0`pjm+4UZx(Al|Z%WLOd=U}YO#zF(tt zZ4@jTBEXs}c9!u(;ZoJ)*%?#?Mi2dbrr5%6RhIjtt&U0~ZR605b%`-`d9T`6-|@Nv zz4O<|;cxoQ6Z;X>Wi~-wF)$P*3KRAk8+(SoupiMGDy={LDc-_HnrCk|9@Vmqqnlzk z^NM5<+&y{aM2)T@crWyw&qB-TT1;DS)#OK@r7&7>WKe!a1JaZr9P9aoR6XPHuAO+! zcW0+KvADs+3$5!$lPs@VC(w*d-gq9l7dd{?SOW<)LX4Q8R&2;SA5Kzlr5 zTpkpS)@|W2=|O}FNqu-&mlmsEw4}Bwrr)UJy6iTV_vL}<{6)HbH!zl9wfp+=di*UW z>?bJM83QF)6Yz#{QM=UCewNNh|tz;!^Nb1Ns7}e0ms7g)!1(~gV9o;#% zOEuk%Tpq!)=@8X$dbJPi8PXy9Ep@6PH-b&caDAs@SlWZ4MbWp1h^8}%=9Z+wIf}XQ zcVsw!MnZ{;iz2l~;As2B;OmcT;@2Zbx2HW84jS^f%ia4XG`i99Hd~HBc36$Zt?xX{){45_M@>XjpEUMs~lOsP@Y#wjPkr)rj^A>el3LDIi zQihK06`>K8BxBW5G{Vfyml}kPoLf+e=Ys{wta&AOUKcNNZY1eVZVvAPLo-!Ddq~Q0 z0|LAZgZM6eTtccpIZqWyGWJ$u(BG9dX;|Bm-GU&=fCo{X1oq~}(9nYBfVRS_HO6(S z$JCl2j}v?ws;>EIS^T^-)z4jvP)q)zcb7a_p`&KhOyG9eBmD?7+|&#w)#o_Miy|Rc zXG~H>y6agmj=jSIYhlS{BM|*%^`I{7R8OFx>U3CVP{CIH*T8K^*}_6|7I94|o}Eq= zl1EpYjU5x+oq%Mhmr$deB8<{vop6UPAFS?`@)BZxV;wt2i=)+)5ElpeT7etbP?!Q$ z36rpRTTAGypyE-p=;idSj&zfB)o=@;u{l2xbYg&C5%Mb;xfvqq%h-KcFTz_yyf znsF7EDI?u669g!z{j2%l$l~MBHB}>lzAgx-G;%s<(0j%oy85BLTDy6x zvSEXc;$H)s!MO%6LMjuvn`7YrWwEhs7Mc@dXGWNK#wLh*#1!q!13>Wb`eEuqvzvP_`zh{;6e;m)!()h)T{(lDhjJ4Oa_Prjlz{VUDJHD zKrEi$O{pp_ELOG_--UAIJOWbs0N59$1c_A#Bl!zejH*aUAV|V5^iWwUOQ4E3Nmf0k zNVOQ~o?eYwV2WS?7W+YIU)@6M13Bb^KOtxo0gf&_2-&Bu5>dqT7)xeVNexLyQrCwa zce$OS(tE4`2EIi>mU!wcDeJaV^nc(61C zNnFY(L6aGg{(o-Px^Vktkk{?@w-vVw^CF9__ZN!JvAA_sj^f9$IP+Y~k?BN#)C-=m zaB3-XasEYFy~a|+=i;;^+WlrHi`?YTrn6CB<*zAOt`C?CCb%B$wP1Tt%TNL36zF|( za}$ukw2#{)vM8x>K*v`$cD)OG&Gyu{LC<176rS$-N^MFgLT!CuyK$5Gb&VBVzg1R0 z)ZS)mq8z`OM+s8V?C#fLo%?`qlRj_9SFA+qhU`{22hg+T zE60oRhn=pjuGMpn>7OWUE+>>@96;U{K08q2OzUi0-k4>T#A`^oxZKM8NYYcQuO@G* zmsyAxB;4Etx@*P;%#FW4KWd^fe(ZFu{F571@)|{c_y~XfS=#ppNQzW5k2X`pdRjdA zw|b;-Bw+vvx%vyX*ccIn(G?r6BQlbcNMSdw1%8+?b+&dzT+kN&W9aI>c^y`u`9A8r z$;;QqD7Uelq>zaPY_~c8t@|Cxfv|R*DKnnpH+(2_k4KEj00^>$-LDgk&$JcP9ku!) zc)#w))v5D;{gVE>)7FMS-uX=@cBhUkHhWr^#zu6GZjp=O$g zW>-=e(2P`*db3IC(!{cW_Cck#d@aY~S9W_UpHH4`uX*cV@#pWH#dC#Qy#oKO7`k4l zehc%|quAtt&}4Y+hq5&{YpAVp#|?bruOOaX-uT}0*p3c{y?E+P|KkMsb*x*{;^>`w z&Bko~nm@fz5E_(vOwX1<#=`)#;{8cVhY)&ZSo8{(*x`E4phgB1@wYxCb69BT9`1|u zeQbB4qxE2cj;Z6CYUW+xr*|gDj)uAbpY!K*^<)v8IMidSN%XNKai24AJfg{RB*T4+ zZ89Bs&t8yVdiPVB?rK$K73B=Cyz&)l_`Zj{#Syn&=?n);4j}zPMPfbnonvlp7YPtc3y9pVlTZcDChm6Ek)5wbK z^pL3Zz*~E1XCRur3vl+(Chd_*O!J(GUVYCod-bg+wG&A$wr9Ovz`pxj@dGveSC`#_ z|9aQ%5Wl`@)*YaVd_KIsd|C~u%vj1os?K==x@%NRTc`^+d`R_@zOzmIqcK4pvbg7^ z#KT)}{f13EV|GSO@Ba1Kw@Y&3aLB6&ZKSY5-D6vDq51+1d!O{t6 z+SZV2Y{~b@BRzbQl|N7fEEBc~X^wb7&wbb%(THQa_|;!}j?VS2;;Rrt#C+g z+iSF6-HTpoXyi=)DC@ZB9l-ERPS?ck-0|orlxX0XkU?G>;pSUd(bHrj?&@51-~6aT zY&rL0c{ruK@3PBp?TKgQx6NF68M9f$ZoQU=c6x@Ra9sSsh$V{>mq8KBNQ=Jnbf5il zVs-`H-7xGbL`2)1HE`4=H9jBQS?`347{B1~f$2}NP7lwyb=kP&FI@dVoG#soWM72u%DtAQjUPTND64E7x349&Jn3>2cg!*s!E{Z z69e*vj5E+vnoC-fNirXhRNP3p?e^%|Z7##tz+*xiCam1&(^h|3Q3xbwqCw9=fx^Dx z*^qg}>%se9WGi+6nYsQ^>N@*ibX$?T#WvjatCm{S3VOgd$VU-E6sBh%Al!ELZMw|Kj$ql- z@F8kgnu;)gq*sL{XCtbk;h5y50%CS9$$MR{;~efP45;&7wl%zOs8wgTg&ou zB!!BWw3J(0YFwAqzHV<0a)EF@BIwUWD2alx;yt_6?(;&WzjH&pQ86Hw82 zGx=P;+m8};y141eIR(Z5?rY&58I5cAhRq(+bhEk4OV|=I z_V42KVg8B9<{m2o4X?z7beB!Payom`amKd6UkI(eT5;&qYqvYkA)Al^4z#yw=p|lC zMOrXC)f2muT>KM2SYx~`M3}@Qrd-3MgTp-@^t(x?e&L}zctkdp&=wGJow4*fbtTlH zczkGOzXvbQ6wUy%(+U9>FD)rXB;<1VSwBr`K2=;b65%UvK;RE&vlh7&P)O;%ojUz? z{miMbjUL40Eh#c!&@<`v@@u}lZ~QXinifm`dg(tc9&{2om=N`7?nI6XOBoj5cyTlU zJd<$b>9*^GPlsYJ*X?UAADoE0n`IYw=e1@{0?DmOnGyA8mW}CB5i}ga+^bqd04I7b z#`vqSiE*ft1l_!}v)~Q|-L3@(ZpQBI20$(#?!T%f>+&%G;JxGg zzVD~NS2yripmeBKNd5hExYEqIwc(g)SFihR;SCMuWB|g%m%Kjydhy3 zSPxE|y&fVhi)EUc#FTDJsYHfucQ}8jFcjhytA>k*RR*NMz;ej1YWVWXq0q{iKk>c= zHFmS)Do}e{-3s|s7E!}Jy9P8FD~rbQ3aeIm?DM>LwF|9+6q{DhlX?C)tH5)NC}I0G zSP~JGW;XG;R;8i+k`j9RSX)-1%YiIJg)G`zMo|pUZ?C66G55RW$G5w^oo5E_`CWuO zxCJB4w9j5#%3a-$2Ql zHKL};C_@6ukkTs)TD}Pg%W#2_rO?ZI(?v=9wmZ4)S?ii9)kwU|pg-ZY!~YkK393D} z>RcW_Pa1iDY$MXks_DT4UwR9&?j>2aqG^txDk+DSqp-h4F0QaK06U_ID=0d^=)!UL z+!Z@pMX(UDRCLIes!Q`mz9(Z4=m_`CE2m5qfK3&CHJj zVbZmGw;sD@#eUWhvi7&uf-Ns(cAp;X-u8i>o#gZBd4%j)>Onudh|#W0pN0OW$3N;f z%x!Uecl=uO-*Tx2xA#?it!$yUOum*s+L_?H8}sqlarVS^3;WzZcAY*SD>&+K{?p%6 zcG{2a7uRRBs4gRDrwCX<#Ri(ca=+TTnE-f$+^X+6=M2RSJ=pF_KX0^i@AACekcJ4w zzuloKo}pBt8=o^Exi-X;YH|QQpzq{{F&V+~B_R9JYJm?Kyy7(xe9e8$&5io+D>NKd z*qC})n>g8BFMLw2bBIJXb(k&)xw3ciw|zmSW8)synLC?Y5&ie*_ht|Nd(3-G>eap6 z&_>%*)4Hmx{xq zCypK(P$}Qi?~?l6yoQ%x++q83gN^um8^5C=8LiFS$}0YV%~# zY8^4R+GuB|`QJm+yLg{mV{s9P4+%)_3aIS4Nv98|Ky@MGpyMSYPd@LQy4(CB(`UY3a*9__8y|l^Ub+~VeDnpP_2&PnFVT$wW$Imtb6FH~H(w}8O?(eHPDe{$|Q91h(3@I3GL z>-~HV)(uY60j8V#$#yNXVTlWe2A_D2%Cs5`SRyAi;n$((YC53IIcN7y>Wkjksb3rQ z*Lzmp!Mv{_Bs65JH3?1yC0b){IKd{|!?shb-j2ANRD>Bk6IeFJq;Kp+(UxwFv2pp8 znMAhmj5uU+kw(@8o$-@99a20lCf}PG3p5XEiXWtEjI&@qx$_S*lZR~F(ckY?a z7w;j)VZm+h4hgKX2VEO0(qPRa!VQLy~v}H zm@T$n47tqF9hZ*9+26FZZAE7S89mNK-FngiVenoan4{JcOobFc=ZDQ*EH8gJSV@ff z++Hj*;acd7liOK%^5Oj6kg!#_HFwho-Be7|95JjE(SIaySagK2y%KvH=y$bK-=6(5 zZ+|GL?$)n=f#7?obK$F~pklGdpN5S&=)>N|%HRr0EE`|*mVWLWbn}l2x5Knj`TMnt zd^2ZC9~phRMEvPia5I2dMQe6T2(P;F*JjZpo0w8Tno%jR4vECKVQ9!X8JDI`jE@9{ zg7?uISKV@xx*_|BN9X@{0oV|ED&nj&H)?mf^QE7)nqF$T_)YqwO0Zn)S*QTzSID=M z_REXv2}8Z%xr#T8uAoiOnMJJ8QX#KNaXr!f_w_F!IIXBnN1V21ZOpu{sb$$RLIE>` zzI~avsTinjY{fM|mh$BoV*OI2dWV*{N|zg2=e^h+ zdsFAz^2Ze@@c7W}zPE$njI?Wh^FR?}w=+3ibYkbR^2;3;h3d6#Y~@s3rR%`S0@o1D z?}l{y&DXn82HF0etzsW zRci;yl=FSAcJ0}!d#hSzS^--D?eRqH@}9v$974XCHnjvWwILGI*?BtGWa>X+6P7)n zfR7iRl|b5x>)E#w3(gBF32Fm-J)bvz7UvQ@3y9AzCheQ8;p$N$;kjdBa56Rh^K5+IP6x3 zj<@!eZusCBI_)YkN(+|;GJgE=h6K1aUO5Jw-oMuhi^zw!f98N9Bi&!T5mnH}X<-U& z!^Ezk`KAESTYisc5R=n(5>>X2XyNI0D}_6XeWM72k+Sl{iqV(+q!mj^%5OYH7on^b z+GroV$P*9N-CnxSIhef;YZ=i?ngSUIxn~pvGB2*ZORR?-jtXm_UbK?QOoxi#1}&Li zEFxXN`o2S(cB{na>2idXWlpr#3zk*YP;4QGruBwq0n;rc-7*=p9@1ZJCgj392u&&d zV7mhvPJU|coK%tUT5$!8(UsE2f_3W0dUtwI)isv_lhO2u$x3AYvxX+Y;04g4HuX6QS zt1BB=vr&HoDc9t2V^5g+s0|`$xiq}J8U)E*!}Y2awHj` zbRf_bLZolu^<4m}4_sXavtqpl$~cz)l0_!XCK7DB_keQr8?eg-b-^!_&uIy=99}MLohmIzHH2U4R{0(1Y3B_s-GTyClZd`W-K1m6?IJQjT8~j zbFQzhVAF~<6IJy?&e=IHfSsAPG@H9u4+1FgoLR2zxjkHmB-qh~eFNTAvs3dP1dl|4 z0pIHw)Rm2bZxh*si*)IP&2R-?eMN=Sn#qcetw*(tJv?p%T8UcQvS?Lx!c!Hl_O7?$ zX}W%`k|c5es`Fe&+?JBD9ZvQ8k}3GK;yIU81Bigi&IZ((ta>0ZpiBBLFL1h4!zZ!n z(;cPI-`gKmR%`!|DIF}+Pf=z;z4Iow`CQ!=xCFPSQ(!hbH}NMp?NxWYt(NW#pE)_l zAjfLe$JBQ`;4ACQy$Ml?86HeLOx$sQKOtMr8mo6byd`m;DVk43-aI%V zkRDxB#@)}j4kT-pjX7Kn9K-JE62DW6*NT}QGQ&aKy7@bCqfrjD)@JPCZ{&z1n3a^X z_CFHQAO7TGT2Lw9^Q!P`KALEwsIE%PRBj-n-h5ZTpVCd$-#KA@3;p#%ZtKqlqi`Eg zys9@vBA~v|e<2TtXLP`LSxgc}Fm`jBsz#JRkBIG-M2qvP40HI%@=>`lUxCs?C-kUb+*G!$ zMP*;n@9uq=8!g1M5KXlEX2Bfh8Xa0En=$lN`xCmd$T!g7#n6wFRRIA?_q65?YB%bt zF^*~4(0SO?RzW1ZxNd*U?YPSo&rYnsgYa|SUXyJBBVwH4dp)*pWw%sb_&?r1^WuIW zpo>aWkn3=2Frd_sfMkQ*1|IYyWN%%WOYBu8ldaTo5Q^H`8L{E$$wVvb9CU8e9d(%g zeiTv4iER6!@ye5SfU$u}lp5wVT1MNpR>m1!W>|srJr{so_%_L9kdrj*uqd&DeO(17 zyaJwG@F1-Hjh<-Ki0zygp()IR*~p?saLonquV;IDujB^ZBH~5kC}OX3U3>ez6WQ<~ zzed;_84^QURr50=I>0#`;Hw?ZDNV z>VrW}>jTX>I8M$}L6P+t`W(V^LPjng{eR@$=lt2$NwH_Gj+(aE^bx zASV9Cl{(D^BJzRwJ?Qxc!Wt&C5Q<&h<^iTMCVv(W$+V@>dWO}eO|0DP=2TWMU_Lka zmQO?GjWas283F=U26SUIgX}RNukw}~5u*|lr6pKLMF3RnlY_6|QW%V5a`SFC97gR^ zyv?88X@DZT=^TaFm!bPZv$ubvF#h|$Jy~1l!XTW2*hldF9hp-&J!0!?c~QY{c$Uzu zqPMmBziDVUJ!q1;jt9DTJAm8VlE4W*mXt zqZaw7OH#vObyO4UZuPpfVKq;o1FTY9aTiviK(*sY7DuIwl{&>T^n@13G5|JxuC?m; zyz2jX;=^k|!!qQIm;p~1z00QV+^H1astW9=P?%+8Ua+E6&N)iA6SY?wvLj}-ZB!P| zrReL*6j`IzFui5MT{PXpbi6J@3WNWPD-KD4dCr(@Kk~FrJ;B4XT$lIkj?XjSlgsTg zsTNtpRGiJUJm*E{Y+_B&=kBP0UOD}y%`;6305KL_y75U`%GG*PUUG+<`P^sNCx>3} zPTu)1oZrSws-F_Q9(o_uw8@QknXK6m@;?FXFg;>j-OM8pe)M}=$;z#3Pfhc#Uxf0V znm=X$E_3(43g;T`>l1$dRYbE1W>%VEETi3`5gG7E*6|V?dd=*k^_P~CafR83Uu15n z$@{+ILp7Ilf2|Fq-0%>ZzWPvI{`~ueNO(@USD9CTU!U8eG*mYz^Fbdwg)je?x2{6V zX}>~87?O7Ek@MAEJxtO%@L2ZsR{1p7t^W4Af;>eq#VSITKD6s8q#&~}tYs^DKpO50 zx73#W9iUwVeCs(kLxs*S;!sHA()^Pw3fsaH*6(vy=4ZZ!+2k?aOD8nS zah-il=;;$ieuO@`QDTA!R$!HyDq+TfC)D zt&`5`o(OvRO5~GGQjtvTZxfR8Z)Mg@YK|Z8Ij_Y`-w_vZS*!cM0aBV zJttBw=WIaaf)71E(k$rK96csc9WYD*6?t>geU{t)sLZU0-5-^y5(@0>D`AYd=NI>}trTj?c zgCGK4~Ioo4#-%O_Bh`GMjtl$fArg%qVa3$t^ydc`* zx0a8fd_tdr#0bTzW3M*l{P?eqr0=5Rf+D79p#J*P_r4o_+coM>_V z1qHzy17-{V2>UC(dnrEf!|u$lxBm0-CZZ8-o8WG)r)LTJt<)rwt^P9dq>Z}4Bq4Qq z?96ryQj{eF4MP3r5Ss9_z=AP`Bn+z#*e${JpRze3bdePmL1glr<>NdxKTUf3h9-wF z2>Oq)kyzq8805xrPClt2%wMpVg)94k^1GzWR7?uZBKf8*FRS~UpJYujRUjkyiGee(#a|VVydX+K91BoJ`_aQ&l7oLKf?v}?{zERD)oZMg(m;D&4 zp3kjaf(%2z*cT&#+R9yUbBJK=LNmw&>BDU?l%L0i=|OBHmMF=JM~7)UJ0?6aUS)fa zsXn`KWF!{x1zP9ixQ$&A4S)5?x zRXzhtH-K{bVo7gctpNB6v~9j_DF~{9P-$ZEf^Tv5cm1(S0>5#o-Ipp$z;)qA;s(96 zbq7T@p6XW;THzRa*?#crFZLk`nA!th!ndV-1h*&u!kngMqNBdm1n?UJDH_(NrN6x;t>KYe6a=h~_m-}N!qfK*cd$Vo1I zkB`BH@9*JNvDhstkxO6TOtkd;dl^6~wgzLJf8s z{g-yA1WV}SO<;X=_wQdjd@omkD(iZv_VBOyZ5^NaluNSmP_-7n-ZinDaxL{Z))hq! z(RJ6j2j17hUC|Yv;?Ml}BmDlqaM5S;MoCv-98+rlOftOy&E#7PKdtPZ$26FQaS{_R zM0@!Uja=xr6^0~I69$|iLfLmatImg-hH8HQ_?-h87j~}&>!VR%Qa{!vW7l8mnEmla z?m^McM{#!YB-y+1W6i2mrrk1BlIT4Q%kJ^~@^)waWuh?N_=$Em_ZUNuz1%w=Y{xQX zU@XtIS71KT5L1#y$z+;i3|g?w!eSIO<>@ouTcVBo-|pUBmtQEFy!#B;`Y+wGRj!ON zW49+A7;@XvCXG`h*tWaHzkM^} z5|4`9%^iEXFVpT`Sz0K)A8g^F0J__+{HO-MsKkt3W&bzssjM-jq;pb~(k3oj{fFFE zV!-v~NS6Q&znv6sc7_1de=b_K`^RgQB_C%bIhsu&kXp8jgIQhn9x_PCxM>p|Hu6#ZWd}3mmggP82NSGL|3L(4(2j5{GVc%`tWekis(Ch>o zHl#rJD|AIpftn+`ARGE9o+c5zQ!1QlIh2|s@3*_OJHrKBTL$l!m#{$swC5ZD&~4a_n@JD zeVJN&z6`fRJR37-L0~+MJK_7wpx54?$$PDM>oY}WbN0nXcIazCLptvyTi4|15Oa%T zxa|+6?G(lV14IFv@pZD*B!mVR^eRJ^;0-eO`OMg|nJM3~A-C-?AwLH`kwBwv=N&?w zGL=?_HweD7`Qa_YGZxn5R|za3w>OFzjx|iL@iGdfzSf!<3rff)yK|}Fb{8`X?R!9@ zz_0FOj=8OD=az1w!-sI9^fs5e#zg7BOQ==tmjYiS3|8Vm-oV#8^UxLYiWVrW6`?(F zD)5(a1%te(5`%@Pj+~0R$~&Ayn6K4TDFnU?m+=A$Q$80g6*ki^gBC-KaYQ9m!P4h^ z#Yz-R+#?yJGM^Km0Rap$+ZOCTSiga|<#*ddQxM=@-y-x}^)1>}ZL3XMB&bI5IrEUx zoz!}evpmkvS~t=T-bcdf9CxK^IuyNW2xkhynE}-U>4l*3$``*zFDHIgd@<9rt-0=7 z!2Iy7&I#Q3>rc<&>R+Y^RY+eKIOMmP&WhzyWVd*Y3Ms(`u@z2eUvy}kjt-M=%-Uhm znjkf+P}nbec5xFZZ6@1duNfkcur7pyBqJoqTr@1Gi9Kv0)O%ZupgVhZHrsu3n`=g} zV%Czg>7)6%KMxajqFEzqv$y}Saj{Lf-54*^4^!;6lU8Gr3bWG*lup8#wF8T zO2^M!ssSj)?OA0CKc|&gn#c+MLO}tO=Dwjh=DT!E*$B&mxL^ZUUr3+kNPSN7wMPH9zww}^y9ql}G2kLPQ4!ws7d~U&qoiuRVlx;8ZeWF;_WxmE6k-sct)*C$s2XyhWV`&%cVq|!g znyQL+U+dwPja}OI-UjNKT`csH(+PO#2d#5!|GYHpucQG6cVO^VAsR-xe>zIQi#8b1 zub0E#Ps2%JOEIRRg=Ou_CCHg0@j`3&U)sB+zGy6Z(Z!+~$zjZ=MZBwV0zVr>vSDRE zLn(L|_AXbN9Zx!D`(i=cX>&GPVLTxPmyCm;#07u0lcgQ1&dg|h(tM!AJcP&^$5Ug1 z9pj0q*~7|V3H7kVL#M0z8!F6$_{dYdB@Evk=bBuF+L^s$xYK70BoB7+hG7{zj0u-R z13{NgDzVJiFxF#~mx7D)vabuMq-hJp-`^ zt^Jx$i#7tP2#J|?eIUn^{phiy=y1U{SyZ(%>I#uv%THzfua%ZJ-u>XZ9iTU#r0Dp3 z(;lvHbWhffWaNm)Dq(ZOkL zy``(yxlK4ZvzbY<;XOAS*bbs03^~ueE_*uxoNF_E079E)6UL779O&X(U778weO{zZ z!8dwK-%wDV!a3P~Oi?v4=`S5PB?wV<&x>~461i*`PMXUeAG~aI5*Ole%|ihm?-sD* zyGRoER_0v873tDdNbk|u0M9>xMC7KoU=uT$YWTg&;!Et|OwSfE<-wv57_cF|wh@aV zXCa4I#2wm<)WH%)J$W`95An=WMf-hKZ(S}T$z{RSn}5>EB+wEFi?vrFs0lclp(I=H zQ&V?@?@|_iU|(%GT_H&P2nDcL3!*SPhlnR9yGWOQCWP*luI~ zwXU#b>Qlcv?zBQFJ8ox)5HXQyy;S|s5$OF%i+Et4?)!2Yhkg<0@a|y|7z1+;*hwMiajj^- znXm~HOc?TMx#72kNn^CR*fW|ZL5(C9Q!pO*=Wm#?l!N7q|MWFtZDV= zPAaJT737v>?A*;O`stTe=2nR^<}d8E{h2JUCZ=_6>RE5qzlQat#rWU{Cc99-hCHo> znpMQRqZT{zlCVu8f}5$_>fJ7kIZ`V|HHQW5_!$G?^nFWIo)>dotX*I_W;mMuFom_* zJBTgBhx?m&-s9W%{*&(h^mDq^OCzIz5#%D0!WtP2<@#VglSbY=#+9tN`8QY&2(vs# zmb$RpUK^U?+(xKfYZ{i<52n>_u;j+VT-)s}PMAk>jGUxv5t!*0|J;k%sg0|`oKTT3OzdJ#o*}o*=KFD55z{sm3*suWY)&@E#a?KAczKUqyoE*U!S42Qy$VK8t(b<1OE4|%D*kfB zLn!gmqq?Rn<8HVp?27^YK*n+Y4B~40b?mDGICJ}}`FI50G**N0-RRO$Kh-C~wnYk` zL`}tkr+fz+VR$$$;A)}lJ+6W1fi&P6>$_jV=EPpZnxY5BX4ZK?4;;)u%&!TW1MRH}(aNt|`JQJg4_%Elru zZ_44C-P$C}!CVKIRrUqh+LcGAFPmU>{?SSUE%uzlobbSakv9z3zUewQO1agKpOTKZ zOhG6vhaV+=84u>98pbo1cVeG-J3W8u;G(psjwN`+yjFnSC_7Tq?3W<(Ib^s9Kbn&Fl!P zdON24*92>z5}v!r<$GZI29=%2d7v80rLjHk86kZfH+AcFpl;1$Hy&NkSlQBha_>2F zSp=|{>R~XeZB2%}ziI|I*I2~Cn4{bo*^_8(gwlS;b(f7TF?7XHT3G}v!(|d~-X3MN zJm-=w;Qsvn9QwtJ6!o-8Jp6coh#(9_o(VIqokkSFm`mxRJ!e0Pg`mCTq8%Y?&$8%r zodatoh5?{e!ys-x@3iJNmO$Jq+?<@D+J%6TJx&%fa8Q%GVlb@2Qooj85h+-``c4x? z_TXCOuHQV-G7?>oR_2l@#ofPk&{!o*`PECf%O>=tV&qjvuaW)X;miT>nQ0&#?*(NL z%A)FbtZ}NW*2@_GAOB)6Lzcr4Ej`Q4dCZ`Bc*Y{RYUa)1iM5;@mi3D6j=ylP$J>!$ zwS?v2qSJ+ghG2z%cqt1X9aEfH_#6C!Tp^Z|fO#5Djl>f(14e6||(u%KR$^Q&3W4B4imm zZ+30CT3=WR^?Za8$p<}DRGbph(4)-D7@oGafuMe!4}(#S%CM0Nql$t7n+*-vQide^ z9!!jpw%y~hx8djadkis8sHFEe(v8Ob1&7kZr2>e04?9Sflq&`1{C{0csEJdh@f{=>f{PTnp(H4DYf%GC)VbS z`q%X2u-)$U(u}1a8#@YnL$ml2hI7N>7CB1LzEg{T?Z>gnLI@XIMf{9YNt^bCBFhHe zuu~EV-P>tlie&P%{oQdAPiDqPVXk6**KXtfj4ukKUhG zbiQea!rzv13<*j}cjNHz{g{HqAOECvS2H;W|9A29?SibMk~?D1Zl5&O2Xfspr;9U- z8<`8Q1y9$p9`!rQF89a3%u8tj5eY3A4L#-PXBsbOA%5??;0acVjkDQuw_!iH z7*i$N_XT~cn*|ODm}0tz^5XDfvrjn&>At=>Ciw295?IQzPbNmWbb&a4&TkaB`v(0G zwM@$Gckhr&?;{D~8x{i|di5%`L6mwEo3;8&f zccXHryC#e2bd@I35dB4UTST1G@b+mpn2c<97d1Bya9QJ;gH>9xlaC{iU27Io1SIJ~PEAajFMXjI425KS>HY2F6{o;?i2{Tr- zjJ>3$-#vcsrxER-Sl~t1bal=@bvtPrF(vLPe<=A8@3G9U(+Esj-!}rMnZUi;z7Nkz z9rN_8jq4Xk0*U&(E|2!6AWqA3m(N@8jyG2$cOwe3NV=(W-7TAFndSKz{})6)*#?X+=MEMI~0$H?hI@ z8er<#>9oHCAa$h>GsVmUE_LtZk!o@=Lf)dr*y5@ELDJfFmM5}IrptM6W92%_+#;t} z>(uw$&=QL9jzWFLN`{cX{8+abZ0lngm9O{%gJ1^Q9s1XAH|6pJ7vIv@Z9zDWUJhHq zwj)-s72p_?vcxI&`ZFxW7a^=P&c)w->TR6k8zJYo=<@15iicTeCTOv~T_3R>ELIZm zi)Cb@{2_hbLs{L~fL7BEQSt{RNXZMS*3d72+*Xg_4*1ii3D3%3fX#nV4To{GnKeAC zm$&(pUwL`vUg2r8;{mB>nhkn-Q=?2odw<<<>lC(%=DDk`DAFUlx*g=q$hr`U_Dy1y zUOd{`qbLGQBU`UxnzGK_?sN-S`aIM|2>8P*%|=XYj1PEtFZa1b@Fg2f-X7P)3yNo0 z;PZFc?XkvgBI-Ulx;%@&qPh4MxZX^8#_y)G0*xYob+1&1Qvm*n`!r8tRfoRS=En+{E;|*7+RO zMs4mY1kn33zZ^+=$m7cUHE3&2>DpNzxo9E3&o zm=o=@5%9CaU@&mFM@?Ei(7H~z|9W_#x(Usa^H6HVVi+qMgY$A$&L}^!c;Yfw_Q^qR z6KzSl{j;8Y`V)qw=cgi%LwI7X^$#jsteif`7*={Z_%E5TMnT?91*Q2?nOpB2_l#Dg z|7M$Y9TeWYXs=zCQG)uGw({M!P(+bkE0)z5na=$Mm=AS0cl3IzJsS7&SyXwX?5n8RmG>WCAKe6aNUu*1Zp180| zfkgy#Q8$1TV%!W<7#we1zulJW`8>B@v8mll~9qnuHm17Yvua6Nw>tX(P%* z)Fue^;WLlI^8cVTd(y>J7hq-FjdrVybAVG1sgCO#!l=j&VOEn{rr#64th#h)Ux3(L z@3yQrKM8Y^$%Z(FO<)-`%F`<lcf)18ZhK{_1C?barcjh3BP7)s{?;TfL=u4-e;0}U-p@q&=sC#X0$f* zqklmiBT3myXD(2$<{JN#(5vl4$bmg9Q#j9UHPp&YGwsE|-yW$kIRlvRIz?;B3NG8D z1+p(w^O?@AFc?(r63`)8!7*7CN!!hZ=`+I!fdk+TubcZo-Qi?3S_p%p@~){1Ui7ng z;O9v%%_MX1azg@^GX4ZcqE8Yw-i(RlpPo^-gAFWr9)p*ThbzZEc3+F|&yOs!LFxuNB6)d2EIZ;rNr>Aq30 zx96bVJ7+ylh`)N`X-y*`gAu8&?6#Djv<+HyR<`CmOr zG$o4(=lu-7hV`b`(Cf}p5S@o%C(1$N_1-6apz@xJ-NB%Q#1n9y%VFZ04_scL#h7*2s=;7qPg0KHx@Adu3y4 zvD|w5ZS{I!E=bf@x;+{D?i}mWoS^YYA#xh6A(*S)mxoOet%$Dj<<&BKo5VW*lSU5h zc%C%W$1)C~%SHqVV_nYOWBtaifx4M)XlyLo;-6cpl|4Q`WCS@*FFI-N&X!p^qPNoHm|B_ z|E^mV-sM-A_oT5&?v7Y$;dbF?R<0+5`44Z4viW=F-63l7wu$eQ)UW1D2Yas0al~)5 zl@0fA=$S)@0~#b#4eHUcSkFI}V1|YWU!tt`jZfaiz>PNYy$IR6gr8RRR?_dKugIf4 zcX05hi+RkbuG3*Yz4%|Jx;ODT_sqh%!kftt#&%l1-3Ij%u2Q(UB-6D>sQ$cXM>+9y zTxnV8$-$rGm}H-5rN{LKSI$6q!Zk&oAw@i-&&=>r<>DwN9iJPnoa9pJ@XTIGl5{xs zmLY7r@nFLuFlK#uuI7HWBj-j1g_QH+cxEE%nXt5s`5gS!=}u{`fl~GQP$I> z*F2d5s|AyrpRvU{~N;J(W7(X_7amjVal^#*n) zHa@x$`-jmgQa-Lx60RNKy+v5ZkwE0WO{%TJ6&iLo8>-2x=$v5dGHiU9l;I_%MZqo^ zm~DRnjmAD!g{+^_Vt|9_IeuICFQ!N!(|7N*aw~TG(~Vj5i?=+7z2W#xW{tYLwp{T~ zTX6D*x(@wh&j0syaeszPZ6l@op_yq*T zj4{*NeD6h@sd7M4su^KRznwcIE45c5hVs~63GXJ2yI_Uq7Q2a2%T1r-O{|nQfo$O{ zN0{RBzs!Yhhg8jLzTAC!E{rZ=aQTBl!EON@iFDFCH)%T{s??sYjxI^B)qNF^0haEN zZFs*vU|Nimo+ecOVDLmWNO7Nx<~W14veF5xD%E!{yM^*>1PfJiCllfmRezn zhW)t-vabO-eH}n_4=f;L>&~k7P~Q+7GN}7BeG%Agg5;Qo*Ypr}a}?fx{d<01oXldI zI`iHF*j^Out&a8GYUwZe0olc*QR_sLJb;}P#bXHX!4`u#8@-F)!h<0Yu7E`q!bjVp zgHd}(WS5G>RpU*>W+%wGrmb$Q5)&k2wf47fi0^&J9>g7GDfTo1|MAo&H3TW_PrLLS z%8>kB^Ovb?%zyRCxbZ$ZD;DTZoQK-IHn`Qtt6ig|KUb1o3-ft>Uzzb(&&x zdG8zEkOoKf87_<0KFyBxy~1gbt(eO;sH%y9@%?+#BI=ZmUtZg6kotXE}QM_%}_v(2T))_!;V^nEwGk@okMO(z{s@LRP8%|y8PJwD#9MG2MQL06HK&m{l( zK>X{Zz8|ClQST;ivi0nSO6b`J!(98_viNa!a{Blq#T?9ic*QqwkaHS_-WkbWL#P{b zZJ;)1iWGzvh(f|bt&fj0T2q=&zDSxIFg*C4279z44dDLi?u!Xr1mdd zXq%d$cc=Sl#C;LHlo-)v_Wh44byxS64(^eSJNp|>W&WI;hD+&n7*>f(mNq^bOX@VZ z^k^5ZIoERD?UJFlf0!n$0gdb&|~D zFSAEzD=-FspbJcW(`XtLrYH}F^8l|7R|Xu>0xu?D|+BV;39gN$%OR|G5 zg=f^-MyLHLFdJVfer|L19gn7TH*(uvl3a>m6qE=5;s+xBPOyddaWhhfJVMYaS`Yzj zYLu*VG4R`i$&Mb@RPA5mKtq_`($4zpyRB1dx6@FqB%`6vrQ$i`kkHkGx{W}$wv z_-;}$>7>gL_8i~y=k*%V971eey?Fm?q7{q z4|?U$Gbb@58(B%q@%0T~Bqt8|35{~7(S;Ow>*zrXgIPL8&b z%|%6L4lAB}ZZ_J^V+4&?i2`h$(Om_y z>*%Si*$Fr15XM@5yB}nvIojM@T%3X7WtK>f9yNt@jl)=gxtZU9Ni4Vqh#%=bQ60sv zA-n!Pa~nNpKmn-=YuXGfg0(v%OepzlpZiV*qoy3z9zInkoW$^nK=(n%VUQoLF&eov zJGr&jK&t7_)Yf9g7@;jUHBP9vZj&OumO1!j5c-%iV3!L7n2{03(yrU#wlgP|nlOU& zh>yhq^Eb>X4eY}iKw4Zv_ote5w(LN{H^H`7z zH~5L7gu5UPJMMi0zn$@F2cIth=^(QO=q&1|)KMu8PUG|6@0(n!p9%=cln*H>-1=nu z6ZPk>iL&cke(Y|Bz54WB7JK#PF6jAPHd;(Ng_)k}Sg9fEtf$W*QL~JA-;)~b5V#PY4MSU)r)3>Vo>smRWvRfJ6N5VP#0=Ln z*%46D*!(g1^my91`WMc{1H~6zh_27KZ(s)TD>stOfI87L)pNCFpO8`;+BL8EUD&;e% z&55$H)4^W3rReIRq6@4gs*XQ*o1--{dZ!EI-_Sfr(PF#zkdc)+NjK_mw{x3z-N*Mw zi(WO9+SgTWOheahmN7uaz!OpoyhmT-sX#)41u|IxI1V>a=b8=pJ2O&Dt^Q)W_+c}sMC zdG;@SHAE4+e6$n%{>=hV%NIm|2fdqRt;#DnzN)Y&Hgc!*lw3lFgBB+b2KUSH8Y< zh7KdPG}$mPO5Kar_{YWVYV#jtf=mD`r?BoPvG z;Yg^36a9CmY=;AG%?ZzZecp9LS(4)McrQEADtRRBuar_TY{W?I)xh^=XC<`UK9w!_ zmez<+VX0LO(ZG=qcyJ2!NOK9|M;J7y@%Oq0-FB(lyIrlj&&)q<^rE}MrRue{zOX$J zl@CR+zVG7=KHyZA;;-|gH=(li^iJMRj@0!hm0bblW7*FM~I>n z@BLEXMolp~zFdPrKu`}oBO|;ocrBI=BW^6c$f(<&x?znSlCpfdHIJUdfU}FF4FGEZ zIeW86#VP7dJb^aqU-2E3HuuOYo%O?MKUP%bnh(@?%aRrh7#jFC#vb&!x(TYYUR0i z1+(@Uu9h6G|A>;zWLSVp5h}PIM$4$OHG;tZ`183O4SkG?_ zbn4&tWE_{uO#?ykafCg+$ACd80pqFOhj7*oL^rs$jei*;qWPF&bR48)N~6L&4qaAU z7`%WJ{Q$-|vrEP+F$Nj%jkdt=Xjp$R1FA!GQS$sH+Mo%ECOpeLDYRoSljswoBIuj3 z?;eTGzM1C!@M%-Kd!nz705L(GG-Ujs$;Ne2i}C&mxbvJbpIjir|E4V8(+`8{S;jT7 zzG_hqjVh%};Pw0PdM@1KDs-Mp;z^gkltRW0LWgnU{ zrABWd9^&(LD1j>_eTV5Jbzx{jCu}U*2zH_{U)L;iw86xkFNuJ~ci#u4S?{ek@0?PM z)0$6$syEJV7M`4Dm?b@qA$?wume<#4xcp{2n$2QI9w1L^m;Q?6vRssdY<5Au%#i;u zuWGY6`-RMKMH(>vq;d!J>oNt~uu%L-7Dxs`xpKmN#ZGSbTidth|L!i8kS|~4W)Xuv z-aUV1m-*S{s zZrnNMViuTC$x2hctC_0s_nN$Uyu6HD!<3|v_o{28Hb-K1rJhP*mHD$bTeqrRmpPf5 zZeoiP#+x4NcAJ`eYx{Xj3rnp7d_l>OX=Nh*6<{opS%d#|p&O02z@G`!COO?4yQdav z5!C`JT{LAq-P=hvo{!6s!>^L(9aiq1?&-g67piUb^E{?VQSqjHdB1jPT$E+U>dTk6 z#B0)vCLZ25z72gid+p++!eM9CA-@;d|oDNt5A#71kQ(%>9Dq+s2-A{yGHdS^hrt&o?@ydQB2) zJ92UoqKqvBTB8!xAB*Wq{eH~%d-v}{+o##fdz1puBgdDydO4 z(5K84?17vB);Sloop#X~5t%KENCr{(==O6xD1l&<_m!ggEs2TSV*>z3~W zgdH(EadM5eBye;Xh=*OT`WNWw8qx4y0%(qV{%o&6%*qyb{NMrXl{9pRn!61MZD2ey z({fjOG%Z23S0GjPL2_gZly8WZ0;?u*z-I**(m5l4k^_g(If+f8GCerRxpXzaqZ>6H zN{h>1v(lk(U#IIv?rc-SZkTy?4Ho@KI^1PqTqYOQi{&?E)X!BkNom=#qK_Ukk@`>D z#Y%Mdn~g0mx!21oV6!72>jJI;XEV#0NDGQ(vsZ4`<(=Mek6z$BRqy-RfDblJmP&bd z&ii*zN+^C)GRpBtQ>f|k*%4JYX&4w;@@%>OL z>>F3#39@ie=l{GisC|szP5XU%R8iB(sXf(v_3rTc z7CTcb8xc21nqTYd zr`(nZSAQ+Bw)2#dU|>DdSG6mHSU17ZDz7hLoX z)cj5SUX4}lPDDJAp-9PizIbNStm8Nkvyy!#VeDpM#R#7yYu!@W*R?wUsc!lV7&HXb zJYK7~^s^mCwO~$s0>DBq=yd4h^mQNH5AIS;0bdH(iG{v7o}K`-bAEJ3mv3O z5kdh?s#6}y)b7;eliXB>(A+lVmN8>da(V3y&v&2PO8jeo#90EA#fEY!E}NTBBfL2 z*3T^U`*epKsPgd9xhh6H%ph?Ffcy6F+QbjX-||qC6uuWu?(9(6w{!v;TZ6f-3iDFT zat{`6?YJbyxr?2U?#fKry2^W~FcR>9f^i1bLbv3%GevB=-MV$t_wK5Xw%>_JU+;4@w@Hq9Uu7(ZA(q?5E@A`5WG#SKgkrX0O|LPceHZZ61U_~#&ysHWz%-j=s<(RbH25Xy!35NgU^W4LzkL!R zKtLl%sx3<SNhSBon4UfV0?e<#O5I*C zhG=oBdABJpOTQi!$bPmwt6`|5S0|L~qF}okQaq}E6FKkVPAsD5!C6T6hJ$#HK@)>7 zgJ|lDOxPjZFh!I`2A&ceB_!p+K^Sj9uVj*>wWI`8-DLABt%d(;zWr4y(jUo|Ajo5r zMVDSXN@V4kNbNbYx|XO9N}E3YaJCn1F*{FbM5mdrQ za}aJJ?0unR{9y=9PhQEZ=a%{9DXqsPUw+$mXki^Z?=hJ=_W!jkE?aJtWcb4kAsbaU|$YW59)aDHYz!AHM%TBl6< zjV~KOO3j}Y>%RyNB=!C9%W=vC6$i^a$vnSt9_CydTpa9jO%`ntr7Mxrl4e2`5C$sd(ux9q2U*#>Wz( z5er%%#nLDzB;|JFkaxqgfP&Ps)?2nzA+_rvsMyBQ{i^Jt=(fg|uJq=`ln~z$cVsA^ zViKcnM*Bj_et)j-Qt~>*ptY;xip1}^F@sqOHcm))4st#UUBbQ$X$6SqAm(=TY&DildxPJo1E*qjL6GmT?zH*dJ?; zpXd>oS#b^fkEI(DO)c#mnL9mCL2vkRLprXmqXyEhdDlT4R8fDvGQX%uE+WrPO;9ok zk%;|sbKr;iu5QPpdlzLgX(Obq+&0^SQyrtve(pYx1hYL7KwcQ4PyVA#Vziq;Ec3V# zzm#Y<5Wk+)5DSB~Uz~kCH|=TSQ&KAR)t&=;9-twr#knb-TPNxL-_zKC*T;|e6*vDu zi6qgzle>CIQ1KilTyExrtBi(?*Pjqch1Dbm9{IlTsKgU`T5Me%Ckcp*a?}FT_*r@)JE~gicM#t{2qh1q! z#ac4G)K+}l5VseTFvAq`?yzc2$};*!<;(Zol1?uwLQM;A>7n{QEw_N_g}W_J83w*} zP`frQmuc28G>YVTwcsl+TKv5v3FdSK>gWPhc$8yYav^`b^r_Sq&K|(u`w}ehPYF`J zOZLx5HH3-7GQ0A(rN}3wGJtFUr+$PDN^gUm zj31OhKBQ6Y_CiHq1g^?1l$ovyN^;3|pwI|R;#xu@f zdtyh4P+qh6$sw?Iki4o&bs#!On_FIXVRHDQ3LlL9QN>5^*<0(&HyMk$Jgm9YN(-C< zi%hc4&Mvlh`F6WCp8SqX-CYtkogU1{tPP ze~;GuY7>>e_Feg6m0ZH*dBQp87lBE4J32@}mkzrFqSeMVMI`rDTd9!EjdpVw2-(1cR6K?p~~ zV@mcajC65p@5q?VTrO+e?yh55btRgb6JQ;K4NrQvX@@IAxec@`hb*jbcZXv7D9gFT zeWyiK*U+0%N~B8~$g98+E9}?B^Mh7MW*(q{E3oxrkbcB6Ol~9D0jIyICF%d)_L$>X z>W#CBtb{I=;FTv0VR(XlHV`eEMFvSx@crOa4B@D81KAynIV}CjCGK=YnBgS-7KU!D#Jgi84y?Tf5nhjUMUi;PX=zcG% zcJlV{aPL|}Awynl2CuY@er#ihzE8v6otz?cqb6tqhLqz54hHDYIwD4^?2A3#F2Zw)4Om%i&C-l<{#hPXK2uEfN#|3Pe3fp@+n(=2Z0Vb?d_#{sOK5hviS*jEdF=LmQ)U$t<%~mX_g&>(Ead|`!_LCJhVHp9lFf%bAx{#o>;K(EAgCk4?Jt>4dV@aU z6i6kky;*4gTloh2iKDN2-i2S#*}S~Hi%SGRlF9prN&l@}J3OxY6iuojO%Ux*ky|7? z((k?4J+eBt5}=~(|19GD%4zQZoRahSk0k=8VJldqfBaK~{-fE7vD9WsbjUAC* zZ}G`TKAaerAkI$ahOfC{fR<5b(Ib0=6QiNnh&^L#9#$P;M{s+xB3jaExBLAT!#upD zt9Avkz}%@6`wZT4$C^hmW=X56;3;t-J>^+|aE{9xYUm7G&r&^VO%bMuNPS=5eq2P) z4GFA$&^8Zm<+?xQ`pT}gNj|r#AIj1UaH3#=JIL-*dUXz1p}uNR=X9j z`$@QNC$%x}i0D%=(qZ7~_X~9FXTiy5wsZFav4AWREGXr@8q5ZDSYC9)oJ)VbG0W^{ zdgDlzqab!3o9v7}mxse%!Z|eLm#KT|`v#m4)^RE{=DQ5IifNn*>0YO}YtF+G8VAL$ zA9xNS(zBjAd!9f<@Dk6YCJ^Y~q!j z$lmnVh`$7qO%o}Qc#^73J{?V-_B^R{X42@Tr5(!sVfwuEsj*LErYHB=_eIZiqpy9Q zX|Icw=K2+wh&c34Wtt9{Ab(cKK~kE2`Cg)S(g?BhJ60v(&MV#*a+|i3i$P}ivx~T@ z=)OBI5xX+m%A0arFw|M7QM=a?r2;ZwD$ot$03_xTqnS8zp+EZ#Xqt($Ew0@9t=PiG zU7F$~`{ApkO2Z+t2^VV59F@1Aq$;waSm~>mnv8Wh%o(J))#&818e86S>8K(777zuC zC5orvt@CHyS}!e4SAus8Xd(chfd@U^)vNNs8_v53{#-U;Z}4CU?a!@FX#Nnd)3E*s zxOQUWX=#(!M$+d3-Nnc6oYj)jdD`Oo63Lf#9ky?!*f;4oTw4DjWTEIBJ^MY5*@FSq zN_(%Wy4%f-)1SC%Zy=@L&>buOCyU0W7*6J&6`50YCZ#~q{s}-O7y8X{qGho}BLQfL z@{RQP`DlRc3<)Se`PX{B-FljO;0buClj2g+bI@Y?z{fDgJM@P*;Jb~p)vLA>&3**? z3DW!V(?MmT)btWk^z{*N%9J{r*a#=7N=@5KPHoONyK<*a9fGjH!X4WKHB6(j?uTcm zRn6iIClg=N{5x>n#1H{^arO)B@c3+eUnLi%WDH$Zbd(}&vh&!HROLO%`hH%5fpPQ6 zf>sD$z>t9ZkGwY$yx}1ce;8fU@G3~-e&iiucxLlnK2218yD(@;19i6ej3}(SYW7@l zx7A09>~gJb{4vB&noDmrvX){YjKb^cm;t}B6|HXiMbETkdqVaKq>rt+OAzS7Tu5U2YPy(S4Enc?Inp{%Kk;QZ0NmzW52!c1oVF% zu3sxN*Qf0$WVY?>?0*0kU>e^m-1R#f+)=`uO$34sC%k^F5s5zJfutXw21)e4PF>Tv zBmEBw^*riYxT))0NFwp{+)K(+d)r&hNFo5jW~Xv>#N`FI>gEGq>COAED`-PEZ8owc zUU54{8On2tu@4+dkDT3T#6*S=F*0r#ZMct~4ei*(-=+MR)%~ z!Z2_@1a#D&o3CN=*hbA^fS%hGfdiWqXJ!*>SdO%RiT0^0(Yuqsv(_+=TI#I0XT#h9 zgM}*7DKsIvYJn!Sx!km08g>Iana9TMMSo=ZYjx4(g`+GXJ$eNiD zO+SL=MDF=xzK=QQrWKAVF~WwUY>@8&|4|KDZ!)$Tdva!)3xz zwU7Z-+u!Y{U#dYlsT~_f&^Tt{rgjRbN^SKi+3R;@j5qb>yxt#3o*hN|tImzKD~+F+ zl=7CDv2ORPkl{_}!O!KSU5ee}+^Dz`4Bob?9gD=CJy!WD!uaL?YUE@Bo*}k6=6@SzpdSL%=IvhvM#3UMb-Rg5{z%eT@1rU>~-OC?5 zN9EAu;L^jl;$mhbb=A0!3l@P+&_z^P(xuCuHVekUiT9PKfq#y<9utQIa`7xuFfnD% zERF%LCqF;)ONZ$&E7F^tw6v11R6e|mh$<3ccS#ChQt3CS1xes&XmmMCm+iy*+pGI? zu`2y?hF!2Cr^bY4v_IUCGE0_k(KzC4SqjJLsoy#=60=OdT~8e7%7}^|zx1ppKOnHz zqbyO~v#BI@>@nezk~Kb*lFXz$g_T1+vF<^jLwyVA#?}eN#Dzv<@;a<8?I-c(OV7sG zs6Xida+F-s3*5UG7xHSMNpYuKgx@hQmW-!1x@rJqRm{&HBp0hEAXvsm;1og(1Y_=CE8l)T8@E^B@@AWI zZeiev9%CG2NQTLA1lT&ArqbN&ic6P^fa?q@9rSpAwqC`Mw&xXQ@t@k@>3XG`9cD{* zPnp~q0}EELyA#J&1~uhAFH2^V?NU_DJg{P|T~+FZSXZSduft=kI2n!DHU^X>$VTjb zH(Nh_hWzeQO&ZymmiT(uyaqin>*70NJv%3%>r@Rsy&A(8mmp`j33dmEfsgZ zKP^CNt3DQ))qvVFsU)@ve%lVfMt z^Go1leL36_{BeF}Wkq^xe(A#-3GOzDyr6s~24?hp)~e zc)C_y(N=KtyXiVM?(VH%SFKhlJ>d0_= zSsFTWVebcP819koMRNHUhhd-8(Yct(m*0T)Rk0~{vu+G;YgexRrlz|$W53;bZd_nq zdCal(DqpyEYznWzKeVDB;rFYbrW5u*4;GUj*plwBphJvpk)0=(3zMFF#_XJ&#A^J&pO=3F7qOqWt?{bdX+eBRqMj?7JUBI2W>VfuW8<`J zw(-&Hd;h5paRrVZpD%>+1Ao3~_|b-fK2%3@(|)qiebua-$|tR2{cr z&9mtYk^@UVN-HVH10WB}>up6e61#b(Sm4t7-JS?BJUQhAY`}F%$vbOrL4*Be5oO;Q zN^YUZl{oOR0KRGiv^SSAdn4JaeNn8f?TuqT&vsNIA3HRnXK;}9qk{zvbl3fYJkmlw z9XL(H;i~4+08cPxpXizQT2l6~?8{Xg*l+!4SfC=MD6cFw`PVYMe;)o_2wpvq3N`7X zfG|Bmp{3f5teZl9?$cgMMNJTM3KeWF8g1`pcsYwNFnba{pTT*Y9`yK^Z#4hO(iD|T zpC%4zZXw}g-PwhIBsFgh>wRFUd3n!M@%Wj=`SgtKP1tHTg#hl3-_d1ZY2z&9>c*Mb zYOee3%|B8fU}JcTklRsQypZRqu=Oyv8Gsc&H;RZKkq8>hiB?Exa&YWd45<3{92%O^W_HCi;{*T5m(r8yyHdjkt?bM=- zd(i|B0?&iHAm1D`vHAWSIQ~H}O%{w*0=7uQ=zw2gt%z?%2W#cPl?oUFCSv2-Guu-< zEem>R47Fw}``^pC%m%u3Qzm#`!`-f&qPpG`{VgsrlHSGd$U$aCNgHAZ2foWCbfp@r1HX zWNp>^N+vjgD@#|7nHUndpGX+Yi;+fN@SLHerRxQ5LJZf0(qRw4MQj8Yl9^C3!H>x= zWfSR45<9h@BGKW(Ckg|2_{U`0+{F-Y*Skg~zLP(_tzmURMkQ_;V^31X#i|V|>zQ1` zMK6C=w(|2Dc$0E^%&(}MP z#dfHL1{sCr?1qEDjA@cZ=7g{TFqw-tKVKu}@7aC3-nyH3b4mE_g}0O*@0WII4Bxvm z<@gp!!kSPGr3LS_a(iX6;WvJaX=ms*rpEN|-^LC`f)lb$I1KQmS!t!e=Y2ziW^`@p z|7u!w&{$oh@P2Uky>V3dk;r}ZJU>Cy;EB{p?P~^iPSk-aHwMA zJpA*v7(e%xRe2~QRV$#4Qdw(ii|)3;Q>D<9+-;~Ni`pM#HDa_OORFwX&O!O_fX_vy zh9u~IcMvtid)g!ef|8k!2|%&JCdfK5lnYwukwjg{vpBRmO?^J>yD!URWH6JL?KcK5 zkro3#J*A}dUW@0fYleXhv<$%fNbx7{D96V_HW*)9A>C}iYc_VnWGk5?X(0Fl`EkLs z>qcs2wR88&sE$9|(YJj47Ei8j-JQ4??Y5}d*vJePxMC#o2y|W4Q*F_lpIx2fvC^+6 z!*9qTRQh;vC??lVE4Q0q@>(FaxuaE-LAw?@MeMy@4cF9PiG`2?)Fc?(a*$PkK}bO& zH<7*9uGr?U_|W`XEB5+bMdEo7PZ-=pt{y~mYT6-}4L{xRpC|;lD?%HWf0NsfldDPECW)cq*!UgO(07Ew+A4`YB-E1B zOs+dpHDnoI+zzoGDCF6N6D4fuDUNbBkr!-}UKiarJ#6kZP9O|U2lf1Ccc-7P#dJtF z(Uk^TwJ)r^0Bm?=i^8Xin8$?!1__(UWCOr54x1YtQ2%>jgfzxG&cEfz!_R_Giut8H z$+on6#eiEn#>jk!Pm^-tYg$Y_$Zg6=NJ?U`i6?U)bXO1e&TLNhEoJCX5q6ZIJer;& z*LV*|`9#a+p|ng_RHuAEngL^Bm?Qsh2TQNf&XxJs->{O&HN?(&*>BJudm;dtHmQ*Z-l}q zI9vQ8{omG0wnZvJR_=;b%RXSFT>W zb#0O{PfjG#zi;pm{7K}&ozIeS;hH8R_O;Dxf*aQdp(27axgWGTw(lz6Lr?CleTio! zfKQ=ewiV%;Y1a*SuEx6~D+&FF3WLzew+^bTJ-FEWrtJO3&x+%3RYFKZuP?xfv`@T1 zw2m1Uzu!{*JP!n(bFbzYwT#yl(unNFl{IKO%Bj?3>x_3(z=uOF8Zx)ZX$e1e&SXS7U*#_U}#tz^2ggzJ3#&dC1L$3yYgok0>t zVjNfzCy3%2!}^>c#OO|wOGc-xcrHQBYbARd`G)dh|LEzP?w#(;YP1+98Fz%=g@j5E zDXe&|baI(<(ETRwr#uanPi@P!$aDE`xOfTuxukHZQOu+raXG5E5f$f&wiFE&iEM{t zuRdRpupe$2^sDC9G_E$$>_P;@=k{7u{?Vy`3-IZo+Xo>%J`hF;Xki%G0l#gNvN$kh zE0+oQ-a71)r>sxJY8mQpCA2kQbYn&7Kl^jE(np7uF^DibC;7_oz!C!D`8;ZT(_6sh z79I|~_EUNHQ}|d@4$6!_5ED-Ad4Wn==hMvd7@{*Tc*-|LiX0Hhx#y)Bl6zMt#Gm8m zC#%3i=-#)FF>l`Nvm{QD#{XU~gO2h1W$(enmT!nK=$(5o-T(iwptN#eVTVKm@Ga#A zp`(!~J~7*B5PIP9IcWkx_y$f;5YN#Iw8G+bo;NhF5|lPB=De0ZTyB)oT~ob<%{G@K ztL1~pEt7kzy=@#Za@$?k;6Q;r@F`l^3+n{k-4tzJhrm*(V?A(;#GTa{>uaqU( zft&ULajupNw#cQ6W<;2!%Qv1D_t!yUu&{fg0izCN5IPes@;Tp*#l@4LVsRLb+Ew_n zt5z~XnZkRmho*0WCjuOzBv6`*R>#z%6KfG(+{V^1cfWS~XI~^gt|t%=WgE#NV$8xD z3In`$y|Ne4M$WrGeH;BckPJW370t$b3JI;0l9}VeE5144hUcW4i_GqNtsviu2Rs;7 zIF0Y8VwbD?!ZFqGQb{QwrpKy^9#(wFT_&BX74Ep!_^_h7H>57xcAe7;< zMs2er0ON|+=r6285?A?j^vCqRu$8ZMDvoq8W}|73b}%H+yyIkE*G?`X?~2@mEFJGTdH|5 zTD;H6QvEGa;OfSt*rj|g)0}`C^L`;I?bvrmLlslIGVLC}pOQZoiLqH5z1tHs{8~?@ zsPFIIGN)trJ7^MBFNc=*pRS^j*?HR~J~vIfj(B67EogVy8E;9-2QL#-yX?8?ZiO(r z-#+U(1aAn;*stfWf#Jj+oaZ655~!R`eW-t$##5XaP6DU7R&|d_Gmm8?|3>Uc z`|d6snJoSuH^Dso(0=35e4qEGSZ0xEIbSD{GarN%U3#t1+uG%z7D`r~1OOtfuIDgL zPLw|CM+v&hLRSfO2cyN!tG1w}G@3x2wcTC(5ivr2d{-?Q#K(ja@R*8x!DG`}>ho6k zXOBMm^TRJ>D6fwfqpJi*sJ}a!hr$JEl~ZdNaOz5%XT{jhsp~x^J2qq>kmsyb>D^$O z0IV5)WwmmMV(6h7tWKt|4uOpV8)w_d+gKPeF$d%N@HFxlC@HxQ07m0z@lhwT`wsi6~v+eo5*FLb!ru#XG@w01@W+BB zMOq;ddt^5zwvi}85bwNghs+B_5WafVyr24*W>QJYp5V*S17LJx#O~;D+1okuFCX8o z>#@JPLp62q^Dj(x&$d**`}*9BekB#v9hEAD#a9ITRCjP5zdJ(2=9dExf)lJM;=nUnCZdZTB~{Eg6CkEj??e~O3;8` zcuxC%D274W#zGooQCk(6PHidIU0u+#{|dWZm7 zPJ5$GxExoDXm$d59Eb-z;pc6e4+eRq_0o7+VQoEonOFH^5IN@8LkA*0u@~SriI1N# z^8?E?!G}GFD78Zlwa10*OFN%LJ0CVSlB0Mt3DTO_M&wGrQ~sOxI=nQ#l3LTRo^&o9 zy)hwI`V3|8JR~&+XJT@|+M_^TFj+cNM~|50#I< z+v&hjAnIu~GJq-J#y`FAxKgL%tH1}-`)}wd%tN{EH) z*ltn zXX6)oG&snnuk*YVgilKR0;2lTI`#FMJaM5pfjY$P2#SU320Ir@%cK`qW=jwArHr+& z6Z^4+v{xR`R}w!e-@UVq+~9$q>C^sVH=O{S(s`V9g9PZ^76SSX18(JAVj%O$?H|&o z_StjwuG;z*>j9dH2CgKnCqPD?v@j4)h}}fGoRcAyH1f1lq(=!rW&$9vjKB5e)(_~b zNa+L<>%K{oOLHc%(26 zWvExrLxWa%t+TI~K#Yn{VGE-4F(KFja_r(sLFxsn$gCAnxFOM6TGb~^fzMX|~nyJ2}D)o}VViSdJ+5!qG)P;=K zX4d6m>$zwcy}jfTh8!A4nW7aujW6^T^R6&T;ETw2AezqcG->u<5UC-qUl2=+8d(tk z(EDm|wZ4h{Adx{0Yjw5C)p-#&z@#$TZXpUzK_28jN4$O}He+qe_4G9YFDx?&(Bf6r~S zJ&tR`QP1v~s;%x%{WOuKwJN5n` z!m@e%;m5_;Y$@NkJ8FtSvSVR~g?{>|#N6IG$xul@@}H>oTt!9s1O=X^_HsU`H))vz zP(FWMTM-+NaNI2MN{;95_gbc0zFIxZ!TzFn2r9?c(mV0a>Fl&;Bo}epTzJfJId)Ph`(g{ zIEm3M|0aAv^)h*{A1RAwEz?iC@n>Cf7bxRn2lM2&2{nz)b%m3;J%0hp?xr)oyO8=}^9Nqd z*oB{ox56$s{k6%TnMw&_yMEft4vbkjFkx5R>eS0Y7Baz$$N+Qc$9Xz}d%p`GGQHGG zGsK>mndyBNsuuE9nW2#UB0dQH1mxxUOVt>mb3|;CgZ!w02C|hY(sA7$G(2{kr3aJ( z(6>)8R~iRbU(2ml6jKMpMtQSz88iI!q=|-2DOi6Aku7pTGD@ooB(l&r;FE6gVYwBg zj>%z4SUp^aoWLnErOd76``p~o9kf{|Ea1CjXM4y?%i5U>bEn~=-;VfN$wOgNL7Tm? z94`t>P!HpGKVU;Ul^DN?JyRCrK<6UjoH3oUeE zG8dScf0WaWGfCrzM86#ORd)ZT(rWAIm;=o5A@uSqP0~ezrsE;$uUijMN>%VQmm#W= z*n??qBp&p|5lrMv2U2_b-}iBc{k}%$O!~TVZy5vK;Le|SCaIjx7Z%&HN3thPZX&Oy z+}HRw)7V6^UYDKhmX4(}wIhwP^n@J1$M@P)zd13(l^gLHC+>5N4_=TxO(Dnysop$h zyDC!9%GHRZ;TvUkm12_SI|it_R~`!sprmJSdn#>{_K4h#;)Bn;UN2JeAVvZVJnaNw z;Q52=hWHG&e9Y6pUA^^a8eQ&}ZIYBxh;$3GH zAMBSZt9%B1_hSmi>RE?kCE1KI)GVcQvPQLW6y-z z^St8;^Fu5JkwD(;qbu9Ig0CCW=f3eP=rbOCPN(ZW++b4`I<@~5&@%yj5)ObRQ#O~} zZleFW-#T|$BT2R*kQ+0GF5O&5S#KT&oQ_P?^avyl9)u8w z1Mk5~(b10bomWl5n*q`Zij7@vR{0bXaQBCl9pujCU61V+YzFc%OTMlGiaSg2SY|uw z)x=drc!w=p7cF`5sB&l4w3J*?9paF^pT*$sP}~kdSNjK(D6Z7!9qXNB6XBow8$zFbI9rSD}sa>i_2{8M5_KBY*P#x(dwa&90h z4RL&#f(IXjb6QTi3EdqMjEHOBx+g~_n{ARaqsPq;TKneoc6+5>+ux^=-#F0xAuje~ z@POHaxUUdP^z^R+bM@zYTJb%RblG`ckD74 zqj>5%mnt-nlXf(bw)T+5J5G1{^jV`$20N&Zz|t-2BN!#^^$xM3!?YPkaH zzP|QXTp;A>n2196oq!8p(u|LyAB>=C-q40p-~@8e9~JpA_8D=b_b|6iZ&o;=i56T6 z@H1F_hX=C`6Ew`I=df6MPy;+gd=hBsR}GM?KZQPp@mpE`x_hS>X#) z4|&hh4bvn*Yywc!8t?FP;KEJP_k%8Tr*Ni`_PBMON`nwkUg8xll<<(Dssvn&322K)vjS7>H(2+)vfIR`0rB0temzWhkc#A0jKdgDyU} z$%q#P?RwOqGjwn85mPkMYp8G9V&3SJ*1x)sqt@X|IGE8Ra{IX&kIk7ea z&y~Cv^2wv>vaWc#Xsy=6Lxeo=NhV9XH3&_VhFa#(I<24wo+)1eq>ZY_wOXqA32jGv zkH&e7RQ%eNvHr7vOli`0>4D>;_P<7!!BPU~Y@Ur9w|BSOQR;9V^QkbuH}~%v&aJGM zFR;Se%8pyrE?5TMeKd|7K3IFIzKztNbqrYED<;NmnE>ou-A%)r|D%^&`~~V64A$lY zi`&~$gFXbQkHyFvOF3sc9zqMEG{e@e4K{CZ!HMsxj01ENPHxvi<=N6=8i~(b&8i3o zXpD5~kQN;fahix9OD{EOG!c`_ki*Q*LTxse1ILsqNgPRWWk^`S5Ew|b2|JC%7V)bS zB%LVUhD9fk@u5NjyvC0mOgDw2oIH9ydm6Y|=V-03WukWK9po+Z;FM}7q%uj!2!bwj zR!QGIP{_^Ff(!yn723eX2pmv35qVskNf=`>{T=`BF9uE~B%Rxn6HKj*T^;_V+tj67fP zC0qxX+d;x0Wg)w<@yppOYqEM>rngrBM-}@rjOdixb7;|fk^WX^M3u&=fVCMc4496wfJ`gW+=NcZYH*)7Q8dyGrlMM2wRG>sR> z->-iw5ipTYA{hIhLPyQd8$&fZ@|c(Rz{1X_RZr&cf_n}X(w+Y1(Kerv0lWX@g8zeT zfF?IoUMspAc6w*iz|?<=XaJfbrqmW}azz57$K>Rvv|SWvVedBL0l=G25tjj|3s?@V zR_mc)#$~zo*%Ck&Nvf?Lixz|v^;gpVGn{xnJO|m9rv(u07ar6%ca+{P19;#Wd%rjT z4Cm&G1hlDirw@Z-A&&5r~*8;gX zwG=`F#Ee4OcbTb6LzF!5+wNyZ_#hc%gyS^Z?x+*i_NbQ zU&iiN04moS47$IdWTP`2cYQE>2+sqL3ong`5omu8P6)f;>7{y)rnUaf^=r{)>?`ln zjFDQIk>9U1{q2>#7-Gm~EGtNpEFn0=VG$Qr;7wPB_8hOZx6i@iRUfDxm@@;m zbk}U-Cv|_)%X{)328PAWpI=rH&etS&q}%zFW$Rs^wjJr$t(;RGn8kY_mBF4ZshRG_ z$H^Hx{zs=TlP>Nw9rkv2(D*0uAFK$~;F8bL*O~H<>=qjUN*zF>I@slk8>EsLDrJ$B zZPt5pkQU0Ja#!88;&(=?ujR4iJEs+Ou5&{#q4D*ov{Y0YIN#+4XKzDHlA{Sz9yiUa zSIcIdmFFMBS3?C5rZK4MC&3;SJXX zK8p;UyRaa{4gDOh$KMNj6hIN0R4+%&MXI@XYq>|Vq%~U*`QF6>F$kRCGMQ_jG0U4f zc>a0WJ{o2IWD^dYz6vvz96Os*4Z)Xw)LL8ARZb2@jQU$3%mB$(7tj)_i+!{}e2?`Y z!Y$qj%j7XCQIj3tZ}h6bOU%Tw0u znu$t3AP3?_ZoLZcO6%fY>IFt;1!9k#m||b5gWsIXVUG1BvX7@@Wn;6?>y4hx-*h)| z_mQ~~qawAi4{*x0&9L0OJ0jUzCSWIO)xt|%#=s4;#M&JWUX$AI`y5@_Y+fgTOPHCj zHW?C5A~t&>-&IQE?wC^-6h|m;Z zRZ{$aibGS@+N4;m_|&!Uc~Q|acKlIazD$#vBZ3p~{g}T7q2F@M%p_QStru@TjAGKj^^9XHhg>a(r<$heOoX}PWDX#!RdJKpm_F;pp z?rzM3|5K?BF@Mh$ld40%GHe5t4|N=2=bthb9j(eWgAZ^*@`OE{kUlXld&w~wU}f%r z@F(rcc1V#NJpeaYqa%iYG%}-zKx5pXI8`mr@|QkW=Ot8=7|<=`bFLx0yxa>5ONs*f zn^oydoL-V2-7I4WjQ}+mgu$Ey-LywliH~&qTzqz89@1h;9R!Wwdni2U@DgXTH)nAz zR(7b!@79)8MCqgzn<3p@B?}Rah)=B1+^7$K$ruHU;Xw#7jzAAN0r*0<$@(`#05!Z3 zY1b*^dr(*Tx~FR;%Bbe{PdoZCgr%{WF|bXQ-JP0afSZ4GkJy=F(Ne z>ea2We*h;7FU=zmHjyhFb!hs&w|L&|?IXWe>!4y0*s{!=T&%>C`bYRo1wpL{(m`0~!Q`BMHqM{<*hA7oSZ&45tl_nrkV?%oHEfHx70@4MfOD~Zc zdPJmmkQN|8dI%6mNFa6Yyx(2-{>iUdnOQT>Jaf+8`|N$HvsB)g{VE*`y5(p*&~DF( zfG!$3mTgFXO%&*{>Kb^Q_`kOTtk=KU<&^(-o@!=Q?{W5HLNh53dCt|dyEDT#|p^{{Sq8R$g(<6nRNbwyO)goes2(ifFx4q$cu%?)|5g zV=ai%m$I?L;`8%6O3xXg`!7i8kKQ&-l!q_w+}Ns)N}+ovi46zkgvYk3^ouzwlRga5 zBcoCngWY6&xujxhWR~LVlRdtHMrkA8io7+c(xGX-X(1<{pEdm$)oi%Br8<6Ac{r;2 zoPqd?QqGl_t6wj#gBH-fI25mK{D_$>AyQ}e&QdzSs5B=Y_L zJqA>8-H{9H&6kJ#X}qrczd8?;PE@fjfgtOHI4s1!C8F0$NHu<-O^}krl!hF4fPPW^ zu=@vdNjB^d{mn>PgkqpmSmC~~fZzH}{qG&_>qr z0)8h}r|6@JpDpTF#^slcsJ9^fnr;3MIKQ&b$!ic7^s{zBu2-@gFZkw~mD#~r1*mw& zi|?}ckH;iG7PR@wZW*h{_Yxyo`(-Ll+ZjcUJT}eFQ+}GjWm&PG`NT63UB2GAf!~@T`Tchjh&Usbi#IRAw z=~J($cM4QY!j7c&e3JNh-!l5qN8%ezYJh-L&f?O*;tx~1{~p4IUL#NH>q31 z{C_OUG1;Wf1g0Js=D^5xu2Pt<@^!4UpV#0qd&MWC&yv)pCabydt2hVMl z+ymy=u*_4*rn@ok8kryc^_0SyB8JF>`ItIxTM{>x!S9uBI@~OMf(|=bD~6 z-F3uZC}S)tg*edBaw`>7HgJ+ts%2f@@ z0oxMqZ+!~feHC(-Us)X%7Bs%@eBE7q^JLSV)4d!yceoc_uKV9S(fQ5viT0dOc*9CY zHdT`?N0z9(bnLWniIZr*t|Q6gahA>RDVxEJk<8y>^2z$tB;H+FXBg&(ybLG}cF?~L zx$XbxVP{L;PqM)P&B4Ms^Qh9nha^5pX>*QeW_mN><$m!RC$8Q%lwU4V=G+T;`q$>u z#g%GCIpE>>V=_{M0OI&x@@`ua56WhY&R^}J6xIGU1f{1>xcP6s{`D|93_Ain`A#V| z$%mtlA~v0tQ>F?;s-F+g&Vp;8j$bPhRCvyP{K&t)=1ceA(L>KwGfxOboHo3_E_1AU zQ~OCXn+-ks#npFo3AOVtL}#%hGQWFnb;tbW=`wOY2y=f(0KegTnVW!?+=%FrFxI&M z!*5x6u%sc1LVEgtKtuOi(P7ls!z_5H_W-yCAhP_w2hx}bjkDnz$A2VFxiBF?11SRP ztY1lSk4Nq)U))#_{F&X|#w*bB{Sx7txOrD5#}GXXL*NuM^0Qm$#-#Zxo)=%pIrd8v z-$AsRRPE)EOjNY7($^TjDze^l?M=R<-Qj-G)2JZ|L{}3;8BVL+{S|-Xw3Oc=L7eQ- z?8V2vCtfvGE^s|Jy##xaF7TGmnE$(gCSR%;_v8LE90sSoJ|wTHj$4H6u%{AzRNCD= z9`k4yQq9}&`Q_D>J3dOv?6T6f)E&>vo*K!6tHXC^1aF+qVrxs`!UVOS^;PQkwVHm6 zaVi__fF1k^O@tozdKS5QzOVOCl6;P3P?YRW`NY*Xeuaw9Rm3I}pgCQQHxZ{$Ss^VA zy5{-MeR}V>orHv#q=@|edh;QF?|(E|9Lmmiv8R}M*U}+HbXG(*^eiaBqlBvhIgw;V zfKb&ftUDVw*9HbCxY}jPIi>`QHVJ*DLya|rLE&GgnS)v!#2fL`Lk7m@>Ce*SJX_6- z7bY^YnIe4QV42};iD1P=nAW4JY>!z8?45O%K^-p2-UOC+c>_-byo|%gjbN{?jZA5z zXYpPE%Q`xA8(x+AKZQ*_#I=tp(rV(nv&60U?=vX&PFa5y7wxDgJiFQGpB&kFU z-Da%)c+nN_up!089k#DagD+iM%+>AtzPeH?%M5IS1;xU$`_Cpk%EIgTpFTK}qCW?c z3hFCs)wlHBK4_+Tww{RBZS%iUWZ3=wTGy#oY86LeSj@Y#GgZ%D9O`#R=MwCE(!YK_ zej@44@uk*^uh5oX$~n4L^L7KX0)Z|KhRD>cpf|X3F=3K_NOxJEs}s(!h`nCQbt2~G zsvYhyX@e-G-Pt_Hav{e|xae|C*gQ?Ct&@Vf2!%y-y)SQL;x*g+yvzW{tEkfbIN91- zW85=uhs*?Li5K-IsWJ}7jzIhj+>+;51E^V>pN`E+)T?_Yvu?^C^Unur zDoSlj-8rRe&ZL?`LMy9ly{`TZR3P3S8NrI*e?U! z!8gO}4$?}DOeL-Ay=-hLNbR^Rae?h4C%3G?^UWrRM!#--LbnkS=OS}WBukjqN}1Pw z3(~xW{iGa%zH&oCf|Ix2<2ACPq)LZUaHS`-()-_Ud0pCrSoB^g3GVsSv#!!yyD|BE zf_3TGQ=9nB)joOE_+R}dXZpzm_-4aWY>a>_Bc-WZIHQFj0{A6`pZNKN&bBT0Ri+K$ z$0~Vt*vbKjRcXuLm2#aao?Y%uO#Lq~&UztD?4P4J@|eBto5 z$EViBoL38?mo6rQhpUlM!cuAzowMklW$S`<+GKWm?IaVW#~Js&Lglwk6e?Lh6EZXV z3LZ^*wiAIy6?SzwXuj3--dz+mXSLqJqd?F6!Uu^yv)AHOpJ(t)Y5;_3_wI-o3^9c! zmgV<`iUnA{e&^Q=9My4cjU0|Se#+kFXxZ3O{vzNx9x^i@wdrE>c@nP7?G^340ndfv zii*&&cQ1CqTDvH=!M&;L=h3}bpV_VD5o7T<1~Yy|S)PV2aK3wUQ{ZhH&Qim(pSm=yyYiy#_ENatmh>>n(Fxw+=Zecs6p0Gc z+d)hNRn6p>m}JrDi>4`vzkYBw8sMnJV$H9C7xq`ARw!U%7mEHteh2)U$}gHM>17mk z=DpYQRvZlX@Gq6{YBeOGoX=}v_9zPVA)poVb08N^8M$Zg0NGAEB3q4NKy;iH06!)I zzbTO#L2WHJ{RZEGc=yd-Y-@orhGU7G_BQmVxW9?%mAOpZXiY&ZCwGNq>hVnRO2ErK z7d&~NbsN!F!B*wqD5nM1vNH0g3i;*|j za(H)9-wyW&`Y*IZ7TNWP9bIE8BQFR>g3P^jteJhtRn5jJn z0=1$CKMK4?zH*<5?CNv#Uu(=w5_18yO7OlzLy;+iZ|#(Rfzqg?4Y8nG{jaG}DYbv3 zLWzR*GqPBBKeIOf#5GD&Y>K|H*N+p2`ve5VmUGlpC+70r-fM-jI0B@8J?nHlv-;7% z^*~4XDjWW)&^Z^=q|baYk80J_@8;Zp_1r^z$Gho_3X5jJp+MfW+Fy@@?+}Ait$yY# zyn7xVo8qCVM&l9~-N_{(F5Taj(vHh+T%f}5`aM2UWgT_CK-1t4+k=nXIAReP;Q%P0 z6kc^0x;lOj>UOSxtL_Vs{@}fn5s!RyfKLBg8NydHYvEM280B%9 zwJ4=sn%z301EKTUqxdy=LgcpL*Xo50;q!GuyxSDqM2`I*UDne39-Dl3dMkHv*wI6oSA#!@oqkj-DX6d#2QKGWt&4W9q4NR3- zbvhPG)Mc4HjBPe|y{x@;oUO#^v;7faieTApFtB-83t2?Rowhcv!vd0NT~=2#4xi8QFHsLqS>s!MbKv}(brGr zzYzaP-){B=C`i-<_oj6q+^uVKrsjnueBPT4$$uyBu;7pZesQv1EIY_yhDTqujX^hs zl8Bx_P;6uQI1Aa%9$X40pZ0Uz@$QCgPS3y-tz8)ZxH(SEzv+)S!3(Wjh?1zZG?7U# z+{2tnQfpMRE;;(*8uYv~x}h>d78e_$7P!CZ!}Oj)1#LI34RMQ3B{HS_ywR{_yc^H) z!)~wMR=idJ_KDlH19XRjZo(<;3GT*E3e`l6IcdVT_p|Nmb7UHrwonoY~QX%8} z={|pD%BM~keOqNId@UP#rIvdC%s(y%RA<>ED}H!u0OdJ-qm;BZK7X?H=JT79N3~Qx zJ=rN(zncG)sC`Pr@IQP1Uj0gA3V0g6VKp%e@yE-rF#S=Y2bb#^I%ouGN^=dNKag)G zUhoRbq-0WChO*CGe$f5gQ1E|un=hypw%Oz+ z1VEYd99{)jT?+C!@&I{dd=2BimKptqJoyZmJ0oZ4gY?Z-pAc|qfVC@O)go1Tq9`vU zz));w^{rYXnmOPklS>Sii~a5I7fL3OApi1CFtKfKUqU4R(n3I%##;rjaBZ!l)lF(Y z?`F|OE;s)m8+OAe>~%meVYUVbZ`+N5$r8bIbolO&3Ss%P;N`uiSMg|8g653KoXmoC zkJ<26s#KZEVsU;z&~i>_K)oFge0whS1-KIEiy0&b@=GoCl~~n{o-7e+Pozb9GxG0X zu>E%5KA~}q^Z6qK&D>~%-G?$)tXS76+KTbX1yQ>@Xe9KU z@s>vH09+klpq>HQxBo42VOaG@ZvZzuhCi0ug?I|UE4r~L5<@}5N5L|643`9nM_a{d z>UpUS<7Zf2f^ab4VwPX*S;J$zam;a@J%%a9Uvh8xmQjk3$4+~VCc(2c>D8%{$KW<| zS!YKp{;D6(O!flr_W*OOhE!Fq!%G}*v5t<)6dH)`d|FXg1rt#Zdf4$thsR?0ppQ=u z@^lTpOu2@yW9MeA#cK;IJyp08DX=kF#4z{Ns8M|FI1fa`O*b8ef5dZJy4Gc%s;OG) zlFRnlC}|p!=CzEK_2!@?&j+{Fqe7n9R@5euKxIfKOHmsr>r7!-6b}oE?$yje)EXucH1$- z9-YqikN7*`b%qyxuj~qVEEc3U^f|>vvTNMC5L|cHi4bgoA*UJ9HeUDCTf{MU%8#M{ zoEzou6}kN;BZ3=77(3j9A~$HhAA(p6}Ed@{2GeG_K z(Qs-ANblpdQdR1_Wo`w`;%9l-Phnv1mXe^l=6iHkxRpS>O>0v*5OS^Fb($W?^ZOCL zLImQq%CI*wE!SfSOaKW!5%+53nXbz|*90mXHu?^KAK&E=lJ(rUH|!R2A)Hh5N9a;Vde%r+eUjZ!gqLIu9*AW#!xP5lk|P z)J6BrKq1WpYXY`x1!tROtqx-xn7P+;3$k)(Qw^B}6MYf@0gA}{SW+a_b%7lQKY zP3Vh(w7CBok&4`S)bs}N&|fRq@1)0y0=TL8`(oTV;*>iOJy8$fI4$0F4kMI4Y{SSC zOboyjAm@m0aW*xyr!uWxhqc9lx^Dot;?9RvnQY1m*SEk6YlYbt@Qd)0G>7kz0{o|A ze2dQliy>{m9nv)8i}C& zXn(A-`7>@PfU(;hRkSmytA6fWxK|@H)e1KAVKl#67NfpfKY4HHpp^0TSCk0y5!cazZ&7&1d@R@mt!Ll?nPBT&WSB zGAgj*gIgsJn_Vi==d<+hoM5X0IE1`L%5AgKB4CECmu166kX>tX_R@`8;OA^EWL{s1 zyvOx>MtV}{rtMsV`@N#Y$g(|&OaLssHX5>WT{?%wnS|MQNQ6YOZp5YNFtA_%$)|hkPnSEQWZxwj%vg4rnzL~?o*+>x# z>DyB5xMruCx0EE!p0w6lOKc@@3G|+7H|Y{_R$u&dEkMw7psF=s!(Qf-fkwsm(hD46 zKbLo1zYj_kpl3xyb$N+V*?KG8E#9suhn15TOr$=Vb6I;*Ilc%?G53u0=Rd6SX5N~f zap#E1yyLtfi`hKuX`AYjwhKV2Ff$Obs>d z6ZrweOsSFv?pb2FcGC9&JCW-RmjIQmz1Tu9BRL0hiCydpNu*WkhIn#O7R+HL62ds^ zd>z%e(}F_ZT;JUwKY-8t_R^@kf#-=y4 zx?zkzk>(BKf7F+7G~EszuHlp8{m^Xnma19uhB~jcQVx*PA;9tnvUvew?eOq1zE@n! z+;aiV5!_jxCDN9)CNK|4fnLjomnzhYMYsRfJwt>rKBlaiP-sKpOm=65CR_>hqCl_X zH0wD=xliVxm6X$TQ30}&wg(D%-zbd*P6NYv3QAZGIjGpGnqA1zB zp{&ox(bJEGf5a>o!Th!H1eSvOD8IO_ix`vJ>u{MG5cgf;LV%_%Fs52$C zya73xjHxF;!V<0EUqC!+-e*?MGMH?V8_W?S03oH74FAwyxx)5%B}M!KthFAfeky~9 zy#I1B0vXA<^Y8P=%S`VCXiuI=y~(3i=`G|>aL69Yzka)3LwPIGEA_N2-UXoVix@aP zF|K<}({cWWLGGo9ICgl|3~qSmcQe3*hCjZ+DMW0U>s4SF*)|iG@kJQ6{7+PEulKW5 z{aoHZFr7U6UNHLaN``Bj4cNjQa0KtSJLm8vZ|JGC*6cEV-ghmtd#$+txm!#|K+)|L z(#mJH0GH#=L3SE(%s2Z9r;TT4c@kRpr7xhez!YmQnJkU@w{dEWu#+u^?o`wPe|Ypa z{r|*kQ_@vzDN+0ISBSJ}K)`iG!)rZ-3l6q?Dc=Jz`>Uk$%PKxW+T+%N!8uAE#V>}y zmo*ipzPr|R25XH(w`|JePCHwlWcKRAo(pX5+lMk!9%MMz<4Og3cU!_dP5AqzhakDu z;mmRN2XHm&)BzZQXuo?x?E5dC89bB0;qUsD*}RR$v%BfB_EI6z>i-US99ge8=n%i1 zoTk|u7-1Kmk@>Y6FuQOz6JGbW6^~VoK4aot3fzv{x?PB?{|wfTs!LyXKG~TvxxI&S$+b04x2Bpa%B1F-9m5SOzVORc|7#%) z5#oM##R`VrMJ93g%c-0CA1U<@8Dpx5@j?aH2pXJN)XZ}P5oO{GO`I|~lT?d@5#|hsn#8EyY z9j~Qv#oU&LDlqpqCTaqHe-@*Zjz29PMy)gaNzjurr7z!7ryQ;M)Pww%M1Y+lQL!wq z#b_ZqT#=hr9?GsYTO6OyKMVm{SYK|b-ARqT)>}4+>a^z=T_GXzB1SHXj(u(MS<8-D z9z{QHW6Ebn{;WDLUaLpcb_n)bnHZIhk#MP%+Ng?ROf@qDB(yUb->r?8KXS^vybZ@3 z!HHS6Akk1$CL)f44I;&{yR=c?lilM&QtC`r2Qv^c%U~SOXTKpF$9;d6D{FL+O&;q+ zirA@rHJx2-Y@M#)x{@W%`)Mi^5cLP~tVwNz%?ZayL}3l{6d|o z1HheI@5|vqf9K?JeU;!!%&WR*BA9 z*G&e3lnX1WTjd|ijF=14RklBX-}Z3)E?ynTvpT%i9IzDAbT+71K7r6wW1{d0J$&-0 z3ZwfpSE_Y6NB?!8;caXN6B)@Wj9Dg2V97T%mMiO6+AgTzR{4Y#u~db}NlfKfUz`zQ zO<2jp*r>L7Z0)7X_fssFkq*$z)23qwXR!Z6$~BKXyfYe5M-KgOAhyi8<+GS<e*L6X$!tE+WN zBGH@gcamQ3FPVa4;Lwwul60ixyG#12$=t#)b;}{YF+nSK)B65XQ6G15ui|<=m*y__ zyM?z}=)bj$9h}*_o+f5vWh%iYNWBFP&J1TX|4|7wZc_4Vh{u=8Czf zhq)Ma6Z=lC#P|xFh>ufW&_4cy`1NUewWXp^-qew~;;AE`{ZJp<$Qjd{(SoC~k#t7b z$F8uv6I!aF;SZ&nd%g@j4l{evyOC3Yw4bI6&Of-`KraK7Y-wOnl4Du|v8)f_GhTG; z#d^f!5QT%{*sRA{bqg~k>2u>m7j6GpBNeKRiG$6n*%F3>l|pdFQ!CLsKaagWQzDi? zzP?%9B?iA^KT2TjJ4t`I5j3gS_O4DRr4NB-P4t>tJYnJ&(>D0^P#YKVhPSU7ZlJzQ zZZx4Oyxu3);3Jc>a@*wjr@tkR!#y_J@2x`i%g-An%G@ZJ8(KDPvQPef4^i1y*1Hy} z=AxGiN53=_=+pupOyn{}4zSVer_e6OOGc=%M?@sk;hl+|>Onm^y&lT^qRdWVLt^UV zVNrH!@v3hzwI#Xo4;(nC#;bLcsM3)2=?%T*{AqKaT)}wW9yb=g$-Au5@~obQ=p5C* z^FmXizV94fe?eOi3x#v|ipq6X9SluPx&Xa%Fwoe8s6g>a;`JL1$@58KmEvVYk zvzYwK{x$k1iD-8N*+UN;=K#FyX|mL09t>Z^L|jK%AYCrB9(j3P9qh1xI^t?gDN|<{ zUJ6{dE-uH@^uhaLA;IJg)^lo_1Sa-vuQ z@LeYO=a=}w?J}RG+C>7wL#jJl6{`m5Gj%LuZ&+NwUCoTWhJhSPHXcT?R)xL$5 z|LNoF$A5_U8*r;FY1PHz~1D^_JR4QqBp*OiiSJqHZ%uM*jS1+Q_gtZR!l7d?B>)Sd7Nyk?x56Ue^+x`)@fVPP_j z;X*7kJqktUaf;2AhztV_pkM9Cp3>sza( zeuLWs#$~HB2(^DlVoqPag=I0yP{yVU4=XuCBdeRsHnKe>ou(g8X6Wp#9&%ofd#edi zjc1h7QuAK%2bDGK`K_>I94^EY3p$=$@_8`vnsEpDvy1DfVekW10s1As+WT6}(NUNt zRPr}+G+tlrPxD2tiIc&i@79Yl0c56&Tch&aLLOJl?vkxt@Lm)i<%Q8a!`Rb&t3jW7 z2)pi#1=unsEa8_Cb_QQ<8&9hwVkf9^MpxUaUZ2~%(U#7T6M_dxFBhb))>{Si+K_zb zSJZSPg<*aOs?4AT6|)Z(uNTmWVMLfms-*{xVdXPZK>rshgz?O>CLy@i*Hj!)rNa7J zGw01$-k)u&rx9+VBq*j_FW)l9rxyj!mT5UUZ`U%fX~#LV5bs)vd@Zixh~d<~E*6Fm zhdVR5V?+k4o4UGV&kPzdWqBQ>P#a{0n0;8l)kd5T)eM@Pz0x&3tu z#$)f?@mdw`CpiPsWO&rpo}PTdFnAFnu!Dc*Me0KVY!9|QgblWqAI0O>7>Ej>xA1ym z!Q`?H0I$QlR=S=lbKbpM7LD=%MAQO|J62M)0orBErF+R7&67cliqFil3M|2V&&K(B z5e?vWzK*}KzkubH1d2XOMVMwuDTP zU(k8P`ExcQ`Hx~I%bH{adc67{RZmK63GevVu~KPQ@~rSIlsul>Sd#Bqu?=&AAANqz zDqf^a@bB~UgciWL!1X$0_t!G_(@9TdYw34m`@h5Ahfh{$<{pWSZXT%;dGx*Y&c4|O zSL_+}Bwg;EA4dEK-$brZM-EHlWfl9(rSDo|0)6a-_wMhgUC_`3byLWW*W%E3q7A3Z zB=pr)r9{-(yLQh`(EZ$ycOOR-3H#SS_dSxr&6X@JPDeXwL25 zv0sVrLN8_s?&P*8M8~^ghIqvf`Tg>XOezvw7$F`H{>m*yJlwx^DP4Vqv(=v`lHD!S z@2Y>#&Zwqq0ONtRv(V=K%RAi1if=zSXKF0}+2mckPFrl!!`-hlpsUrDouJ{=HneZF z8pX+M=Qn4+tC9mlvf@;G>Z^!BkObX2_?#HPjqx#lJI>B*lKLj^Jp=mT{q&*{U^NH9 zK(LG7?;OA9N$nCh(RutXfeTmEB3c4dw*^|f``P7%d56+!Jcg3slC3~gG_PcUyF6RL znejFzIUwrw-`CxHf3B+KtxtxD~#8DX4?Jq!k%8^72@uOVj&*QJv*Tw%V;u z_SO1)f$XNh1o_*;lZi=n6xYC!T&axB22UP`pjF>}Nf^TxvZxVs+2GQ$Ys-?Jt_1KtdpSaDAns;`Lg~&C9f6;0hr~e_Wme)}W2woRNS5^N8VD z*21+wr+QN5V6XzVI;1Gf7D8EHKl$Hn7r4`I_4D>Scv1&XBKu4KtXr-D2U1h*2nU-JU|tdN?0yVGOUO zsCkgQEA#;x@0hk(AyK3|xM}J`MZL?&_p$+ipQ2uv27oG9;U2LOwZGuMw~Hw_We-5%G5iaasUftk7LM`2C(|Csu?>ujZ6)c-8JiMonY_tJ{O#BJ_jq0I=sP zbtfU)>T*p981G>wDO)1zJ8^mJmeCEF=8e)ab6y$i@(__>cvXD4smc5#Z2|$4Q}6Bk z75^bl81^vEx7BuS=j9(60&8M1!}a8vp;GQr#KtzGGBe|}(%y)$g|l3(J6kZ`n^tRU zI!B+PrvwoKu^HH=uN=3Yy4fPOoA53%k%9q_ht2NUR;uC$YF3532MpDGu+GTsjtDNt zZ-weR$Vg%9fZk4?cZI(d6TVmCpa~^!ZBng#?Unbwb_5KJMNF94279v%wS{J@XSbUb zxP_XuI%>wVtynu9+)}OUc_%pE4}ClPqE>v2GBX@hxIfvnyUL5Att^VnGxEdj0RdGz z1M&bOvt;V)1Q-dFic)o*+?*M+wX>c*(VaaKsM6{|RM?-ZSPQ7|LFIw9C_R=x+pK&bDpoL?L8cV8(f%2eJ5!@teb*WY9g z!$;dpoq^Yp!jo@Pt+3;@e!XM$!|?4I&$=_Y&s3;b+9Z-jnegQT7^x`9*2O3Zx4bK7 zbzeb8x{vZ*QDK1>+e~N+baRa{2@c#1Z}eQN1aWxOxNGYECYmW54BxF(u^Cn#0RBVi z>0d;E*TK^H6?vS#GT%M=z&M26}mEdy98nD<=u7n zeT8P;(LfCn(hy0D=yL_It{3qaVr8}uVtsv3>mNC3qgVPmO`IfKqUAd&_~v993_aTn z5VxWAS;PXP-}C(nn1hbP77pL%z1L*S^&w1I>}a{i#Kvc_%n^J~obU{f6i#lQWD|Yy z;;DX??>++FYDmaxEe(X-5Ab()ne}ZWWpepUX!VclrCM)SXA&%d43}yhrs(RczFpanR%`!Vm$rM4IjA79?}O#uY&GpC(R|9=Dz3wOi*DC82TZ??R3H$u_GM+P zn|^4*tE|N*T!Znm!GZg@i7gCjuDM}drhsu#&ApxwNpZ$3wKn^TRQG-j$T|hB^>d%C z#f_&z;ahSt`c2n@e2wSlvr=+wJ5O4%#`qE&k|HJL>trThw3* z(|{x#xQS7H*HbtzD>5lHsjB9TuIaCA-A0G|K1(-N_WI=A?m{LfGxuka{$Mn<u zE^k8%BRpGxnj_X?(a)rFuyooyb5-1 zmeLPpzUkFfm@ofqKS4s_Ze;kVEDa#`3IHhhE_1TZv|Z4vL*r3jE#|#b=lRK{omq3o z&#ort$Jx&WPt9jUI?I(?>$^&)3Ry(ByyI}MAMYEZ;z}!CD3NF#2!qaRHJY1t-xCei0EM|rcnkd z?Id;aOlH4`l*sa3mv2Vn`CG+S>l@F2T7R+m^^cG{L1nLFnDXn;;71B)F*5!E8SO`? zJd>}ReKs<(yu0Bvqt-oTW+CzvrkE9;b}t2g;$OkXD4G@XhNgTaoK|9+f~z^~c`~y& zs1BXHi^Nwp%M1Ce=St0IWHkR18S!YNvJ$#Nzim7Zs=NE3tv{4o-A=^pDqC0+p@r1k z1gb}Jr7VsGQ{vULEh-hHBu9}`ypj&ib>X+Vv!A@+I4x+bM&-;VKL&~Z3a3Q=YOFhT`$3y@xtyg>=L*{dy)HLb zY^g9sKdGZ^fz4kPkWw=jr*GG|_HPsB^Xcz1T+q7NPQ~Dw{=7N!cO`(--tRl-&H?kk zB|=Bd%g@STDhUMVD(XctsMvsWQ;$gus{kLV`}6cQQ7CP!B-m%hdup}Ob5$Bb-ZQce zSa;=q{q}>ri=ZLg!6;u<^Fh4`_hMRx*m7Korgzv>`RxK|`eZ*zJ6`(oLb4S{Ze7a&EqBB$R( z)7;|9jl-DZ@1L6JZ`k#%_7>mn;%N=5zxc*+2}*jB4d$dbuQaX|A{5;KHrqEwAwOO< zlOPVu>$HBvU;i_@yJ3qGm4K|UxCq)d`+aNO53pNRs1PYu2<%yN%}{5~*i2cHm@k5- zkn=Rck3_wVxEVG9*f2k4|$xS7vJs@_)JtZ=jZaGIJe zxUW9~1}1EnXR=SBoa2W&^4KUUIX2B(NXN}w!loYV4bfwMdc3qKUD*oY5>(9j`859$ ze!kE_Xm5&6faWPdeRL3V$rrm~AdeLq)=iQ=1LOGx1=Yim>VNZ0WfZvhs&zU(9A=wP zALJfZZ{BMnK%3phGIO)d3c~IiSO1mFFeoZ2QYfC{f}~n|;QCt{kA0lL0Z*Zf=ZHaa zJ?{#hy{BG&2<1{-lI7E9@3}UVVNqFdl20_FE)$rX04!&BZIgG{KWar^j8yj>vsE8| zs&I)?-kJwuEl;^FGQnbKzi(0WOS}X5Ubb3^0;xP}z?LmtVd~KOZ-Wi!Cxb4cu7S87 zpN{3IBCCPrUcAa)aUmn(w7_I>zo~@nU{)iM00+9k0!J0zzG)^j)oBO=$KHBeN9Dfg z3jsJxQ%JRa2h!;!@S7x4K9cb=McSgtYvqP!gzUn&D)X;VKV-L8e?wO;*Pn6SgkVmu zYDSNY3}#LAg}m(^Oc)-o1hknG%eR3odTwyKFZONRHu3ca$Hvy3XkICY40-R3C`UxI zwU5GqSpiF58Fx<&IpZTR&$#10nquKJ^ApRW*GsdAjuB=ZVT#$O&sLScs9; zlk84%*{#}jIAFSlS^)iXJVfOCs6l7I6ay52C5lR!Z{4}7_D@{*I-)-1^wL41TG@8K z|4J|+*me9ybu$}BaW*c!JZsJp1}c;!zmT4kc2(k`_`f$W-?g+4)?cF^!!#6Bn>o7M zQ+&>L&Wejn$MA^FSGw2w zceK$7Q!Q?+-}NLJMK}h^BBqL#_pZpud(KB9;qF!)OhOos-exPvX32x9C$(tXq3?}v z04BvT9vHhRU>&T%>K=v%IN}E(v^%6ia~?9bib>?aBNlWl&f-Xys(HqDPOgQM8NA5axk8}b48@kqRQW=Ui+Cy%EzsL7>^UG)4~5ktz7dDiBIUuiOI$CV}p4wdD*{@T*3PPIK07@iC;|+)6OjG!95FWMz=`mioG~jrNJ+On4h>{y(4bhdD}OvkTgp>A zw?c3Ou@4uX%*8z2eIczV!P{0MNGw09 z_i3pl2y*L`l*eN>p%o+c51@0g+lca3(@WQ`X3hKA^)mv~3x}7DCW%JsT^&5apwZ7( z(+Ahl-5219YXs>2^rVR=(YY?=?WG?f&n{zfc~`=&UOmYxa`N=8{FfTk%NYUtB?7+8 zicmcH=m-???KTjfQQ0vgaWEN0Mz2e85dg|DfxSz&Z?3C<%eb7Y_q%R6+<0d^PDt5E zKZ>Xb?WrJOEa$iSp@jVuBr5;Jmy0ubHh|QaOo07%6!v>CZH_PQ&lL2bQxd||SfOn# z8kj&vN*~d3(W*SM?3n1b!reu<_jcv^ppm;uYts}`WRMNQKbqdGM;+J< zzt_~Gpqyf}iK>wMA&Dfgy9mh$?Z^!Mv>MEBj zxSLmgMzNyDk6~n!AI!QyQB%Isqv2uoeNvzwUOS{{9HC)<_861*OPLfKy9sv#Bch#a z-lBG|5(gRK6$B1iU55h~DHi>mOlxdw1F+y+?WFZ({6m5S z65l=rxj0GQ<&TV3a@1}J`tj+lq8ne1gyX32y>5k;Agm29aT}SJp6q}?I?ZjdVO3Gk z{$K6n@9*%aB`Qj;4V}Jw(%52IQqYYW;{f&B^8K2;A#wt)Ot6qqyR%#5bFTlemcLMm z%hY2)i|?2?bPsaQ?OcZsEpGaWcVdhJPX1rQ38n&niy>0+xMcc~Hyyu50L6KC1gB`V zk#Rwv<1zen`I`>0dWn-K-Qx%Rah(^6f_9&JiY)wY9V=lNHW|GX2n?1NRBcc1kR`` z5X;(2i+bub48X| zrq>%+XTi#^9j$(dR>-tw93pa;_xMAvJ&;F$E$3?YaYmlMSYE}t=6~Qkj(iiCw_&=4d^Xe2uY*WnnrpqQ1gWLkU*ZYUzl<`SK@K(8hhEuf;(!!P5dzqb8q@FwF zf`wxf+C$lW>9i?SrNAxmO>z%S*nT@>5 z^{C^TdHUJv-bk#v{q2C(`@HOxZ8ZA9(*o87gdih6G?1|d{wFx@nhk8)t}^5)snx*& zTCY2jQ}HJ532fn?@=9Z@k2N%C_(Nrq8!%0MZ=fheg{QDHZA^`q6*s%A)oXlb3 zlnAaKz$m3UAy<5lqKNdyVrxO!(5rIY9aJxE3biMH5YL@jb=LmH>rBZD3) zxW7p2PO%?MlDAJgcJQ=?sKeZ6o6Gsm`L-qfc6HX1NOz?2>_QR}2yn~6J1 zuDg;kcB^Q>e5Xs50~Gayj;_6*Qi&tJSzZWmY*8# z;Mw%e@)%T{BMh?LuoSTS;Y~Mb7+FhhqVm@1w0*Dlz5xe0q=t`TWq$$xygEO*>fVyv ziF0}U*=pVoN);#^pADnqooIV&DR6VF4jk4+s*@{tq98YE+6Esa2QV=yTymNQIXZP^+MW-o^ugS*3*JvC%6~<@oKHY?f!2H~fOOMX*{xi7ELZSi1Psid^X?A@j ziDHe&)aUo$LnzW3>MS2GbW&7j=pO4hO3bO3g{z24=*4ZacQ#KvBPQKu`3267>fXNg zG3T{T7mnh&2TwW2cM{!hxdsAX__zHZl)7dBIToKMy0!!)(Tn}h8&t`B3fmL91dFCY zIKRcGnH?zn$aR=|nfOOVG4AjiLt#oxQGCn-yCdR^?19cU$L4*L2R|Z8nOJM8PuKSu z&#}&@#Q1=~`yVLTvi2H&GY8de{6GNXj+9OI*gfioN!i;{(k|QJLPJ4CR1)I zY2WHL{J}dX)ggE%I=kRq^SSrKS7UU;?7F(DV0c4F>Avx9R2&M-w0|>S`}wH6hN$ur z4o{(6ZuM!%w-t_m%4@IF)-D(yowa$#@^YLkk1ahVb+a7h$qe=4`7{Ubn{yGZ9#47C zY))s|+INYRc0K8s>6CvID|nV&!{e*g<5laVp{U4DlLzB%k8dpjRq=7*l<hQCaQ3_x|A=X6H0o_oq;F2ZiIBcDs?jTIR_J zdEJ2#_b1*g63H_S94gTG+f@Cn2~e5MJ_J+uxXw-1s~3OK0{i08N$zgp>}}{wdH21z zzMcSyT7pQ+ci9RJv>rVI;WY$?@FRQM+$84P7Y{JZbI zzKN7bMt&EZf7qa9%a(JkUb8wnFfh>PL=P?ga%V!_n3VdJJ)tjko3BK1%@A8#Qs4`xmU6AjTK(|Cwjc3NvsG zFlVWy*Rg+LX2>4nDC*`qb^VAO+?4`AA=Yc}^>^{&C1>Z)pHF6WtDkz;AB1Gl_(S+T zU^)hbPqvpTK3*(m0Ky6F_p+FFaVC#@xT-h8F)DFl4;&HDZmI;JVbP?fB!A_pQ?7OhE-AZ zP7cxs&D#d_zH{`}MN*iW2rIN!7Hl5WO# z{xLqo zUfPfK*WWta37heB9K1@p;_w)se}qrRaP2gFou~G{qNgtG6(u@PWL8ucRtGb0{%L>4 zVFk1wzgaQeQJiJbX&A1NryGG!=EFaorw)Uc?awfsC-dVspXY;Lg}LVn-|gEu zDHj|5^TEIC*{R{zHEJ5bT#tYGS?*68*JhLnkMyn9`R<^YYB*3@i8h14m-dgSs*~c^ zeemIsI(_=#63#SIemRo&-Rk8T=U~I)nmd{V)Pxi-{WB6z6l{91PeNfqzA7V9x`RS| zyDwZB16F(D)cEt`53`T%elIH<#NW_sE4gE;+~CSSo96j`<#JxyD?Fj9?OvG&0%jfm z-y!k34=R;Sm&8KmGiUO%vw#XFLuw#5wq_kyyO-z15Z2kG zg#53U%*)6+c_P13>vjRvI(7%)%rySm18Ks^P{Uaa|FwGE7gTS+qoLAN$gUv2z;o>2 zp4^NR|D21wp@tvVnD?I^nSvm@%?Jn1hL3G6-Yt@?s?a6dKL%X;ZD%bMRnHq9ya$A2 zxkzBW=u|HH1y@u(R&0nl2Ts91KHQa+bohsJ{*dUZ*tBIpg@%m+e0<$T4kW|Z-P<`q zw|~1==10YVXvWME4}F)LopQRMV$Q`6*!) z8Z`rRg~vDv>4P6Pp`U>({l-pr2S(jc-H){*{LQe%jef>4XI0en-2L|YxB^HGvh9<8 zI)wTKn-%YB9dK>K#$})j&&)Yrs_z76}O5iOdx z2w>#T4jjl?v2s;rbWD_Q&mO%3z{Tj#TN&1mml1zMwKd`ix*r`fG{N>#z5{p;|R}I>yoBMN4qNE9!qBa72^ikCFr6(oggA^)n_;oDkNsbt|+#E?Pi% zed38HQnNsWw(3W36U0(C?V}MBr!anAdwt&76Ofc|-=Sk54j~xthVjwvkFp^-X%UYQ zQ6@JN2m5{?><$;=1fm%Q=gt|Q?%k73m3=iS<%0q~^5_uSjr&*Tzy1&O4+N)U7|Y7h zcP{^&0X4N*e?vuljcV1=K@HCk*o0N^h&_*IIc&7m1gG_uO`9?&O`a@-3B*H~;i*== zntSDnl`(7!NLDBP25xHBgW**5#{)C#&$;Bo-Mh0tKwDIRWYj(P_6d#*kMzj{Lrmkw zjZZ*rCo{a{_(xvMT7C$>=#{?O+kTP$r_)FbNrNmb{Nq!_Q5Cvk_=*u=L@4V|=mq)b zJfH5_n}f^n{A!R|1mVH+$Rk6v8e;>O(UG)2!?@rQ&P_R;T-dTzON%8{Xc~4ZD{@-06E?KS(4W5he%_ z6piPfe?Gi@+x7uaJ8sN)>7~?n*1ePMg1Y(r`}dcly1W-&78b19eOCx6kVvMDWY?};#OK&FJ^!OFvXyxK_1B|r z2lH8CQepwrVkb%y3CdAww0{q%+m48c@LjZcv8?~M+d;bqW~w!VBSyuwlbS96qPu@W~!_>Ha@pzeu33-hg-{|JxY*IrY>2ez>MBeAZ4kQc%>UkL&Yn4e_LV#fRT?aQUM2Ma%{ z{z$uR>$X@*_wR&s;CJB04+#zSZQG`;f72#S16^)kBPscGLA$nXxff;ur3<%g*0Rj> z7pFyVRy=U<2&p{EJ*LA)Lv^Whp@EG73};zhkFPffHUBAI|>2anr`kDO0DWJIB9{ z2dMH2hL<4NNevT>!K)DS;K!ft$vyGUv2!=nP;(h9uClpjBSyx{dW z-hk4ce+oKw>{RCN9^JvHX&TU?;8@>F!skUSh*a3OD%Hr4Ottra@Y6>Lme&BIksD(? zTGt=*Li(}e#|t}m>{tfs^}!5c8XtYMJA3r#r?{?IRfV()n8Zd}dx`B^w+K@U)?fFd zLx+a>`}vEs%$(V?(-ISt3XlB!6Qo*LTeN>E$KN%OW`s&V99JTJ9(e?30hDCriWM0k z;$j|Ur!7-6xFI8!%}OHK+qnS$aXEQ;9x#<~yq^mT z4KrJ{ZXG~vGf>-SQhKm`yAEIoQsWQO>QU$;{%n!2zx_HF93F+OTeg<ecU=nmus&dhiMHvY88h>E^ z@Qa0%68$Ne%<;->we*%kgy8dn_#XhR1&6(gXB+v-v4v_Z^8boGVCN$Y8j9`cQ(2+0UCAW{Kx%n zJ=yP?&UVN}JGg0X!_Obh3(aKEo`Q?+Kke~9W5$bN&6>9$bG>nJ|Nh)nt5;=2L2|lR zk6wWwT%%tT4~EeT{qCq@kdXSZ5w~vJ8izf!XWO>zsNW&f4;o8Qzh;o4^zn6>*k9(i zY18(C=f6&!ItF4dBPKi`m6kPa%2aA%V)ecHzxp;ju-91z1aIuK3{Ry>m3^^~4?$Gp zZm55S6gBsN(iUFrj|f+~{$17n6ZpE)@u$!KR=K7AkBxXN1cV!?s20iM1dL6)FWd1P zeGYXO?~!Qhen^*^mhOR#!7U~9(nc7jn@CI#ENuDD= z{UnT@7JfLNdcg-0uBiTCScL`xC20uBxC9W0WUN{FBQJ$>K`vIZZQHiSVmw;&Zqayv z=9&O%cR3A7ZD>G%nsRRLOfdE?0%NZl@83XT56o)?`aH(T4NRn&m7yK1I`%NAzvs?7 z?@XXc8^XtZL1f)}N^pQM-^SX}BLuUq#{ zETux}_x=aFvZ!$)-D?l*CvLp4Cfb{=S19YI+7GI}%ncL!Sx$Cd;r1QdvJV|Pl*c=# z)@_RB-P1S&pr5I`?W@E;+8l)BSLIT8=FFMtzeDn0#+7Wb*cDBKd#+OsZ9nXv?K*S_ zoHzk{c)V}jvK7qG6NO-roFpvU8ZyXN z__k})#ve?~IIp;6-2}5JnQI8j141v?O=6lty+_lP8I~h=emjeK4Eff z)cDR*xjAH#@L>M}1}q40ARi+SYxRniE6;xU)mM4fLnGu!2t9D!%!hfLySsHufJVXd zj(=-^EdoZ}q1yTwR9kbR5j+*ce`)uhYgey{t_(u*???a0--I(X=MRrr2pFbO3F8*$ z6x^9ZaNwbblE44L8ISpHH63+!m3Q7S-Rk=Y3jvEKwn*?>vXiJX?LbFfzmbb#Eb2$bf3&tbH>krxq4!K|zHKX4Zc8{HW;awf*zX zrWI};)Hf+RHHGaab-ZKb)1f!C>m0<`n;*G9DfQ^@>?;~io?5;72Gt+%s7NE6L;XIT z@?6S4pYPYwVu&a6Gr{nk5Bb51e(E><%_p4=Lw!no>(%hY-dGzplHZVvgiQl`1MmL; z?-y===tnX0z=>BJe#=R(M3%n|l0GQb+FtEW<-(p3fwY@BKQaaq$$9B%g_{QTP4o{B z^X;-=rKnP)8tWZTJbe0w_FV#?;#w}{*FVrBAtOPlYi#?{>(Q~bA#I4u^4$}jPWk6E zvAZqxzpio907$8e0d?Sc?>#x>H0%enC>~cp zpxN%_*Pb#Uu7r2&< zeBsBUBH8ojLSbrN~L4d9)8O$x1f*Uu=oD1>~Z79rK0Stx0GL( zWyzAI(b&lPrGnw3cb`5KCqiu%Gf?S)z5AigmJ-SI zp=z|JpME;UlKynUAWS;?T@n6O8c8BQ4?J*x@UY<{LV1YDJ(p8Bdi0po{rhMSRPx26 zB#fm?mqpixit0@pH)T$qV$YY1Yx1&DB$Cku?&;Gzi4w^w52a%DW?aC+OrK}g?3wAR z9aQ;y_wF4u`l(SMz?nwpPMs4@o>T{f^T8(|%UyN-kxvo+)SLe1lkR*lRLFV4AQ1^k zJhUI`p94mnr^h^VW}o1bV}e=nM?lCAxICk4gZq|t*LwEqkr)Ow_PA7tVXQ+x9LmE5 zQF6C#-2%rx^GrDN1ko*#Y9_4$oUd%mU-AYhKItq!M)!t~Z!50-roSC&Rh*Y_ARz%a z3u;DNw{D%F#~7cCzPEE1Bt$jsv#9|HT#u)~Xy3kLLORxtz5Di+Wx~IPn$!!#>##0ex&)F~(Wp_Qlf0Zl*k#pU<#A#B^H%uw+Z(vU z!a{vN`sicOIB?EYkZt(LgHFTb6V)=!O`A5ymM>q<7j}V#!N!Us!RlT0zZox1k8Iwe zMH$s!+MvHsFxT)_3L6yUmxQK-G0_yED%~8KzNU&3UH#LhuAdaKKcCcS!Tkz z5dQ5Di6pTgp#h2H#Y>_|dk5p9YCoNWg@0r#bwDzYH$DZ$@-uhtoTxis0)_jp7A>1& zyr;7)yoeRaIF5fxiiAV@1Vr9g7J(PJRF?>qjR9lEVqbtFbp|sI_66)0o<$26N8eoU zX6&;Hj3=LbGG)&m+8Jh_@E9#yw)CGq?M0YxC^X((zdmF7wCR+Nllni0zSM<%2_CP! zjD7N&)%ICb$H9}q+A*Ef!}5^#+O=x?Err$^wm*s0ywuk45f5o3noehZfH=Nwb8LKk zITz=t7hZUQm)vycgP}qY#tTm3iv1rKx0VV^)&CL9yy*xN?;ax%c&B;lc&c)xfk)_^Mz3$+<_$il<2xq?wtTLAVR)yraKXAVOyPgz2&lvc zgE0COq)MsUT7s=OI*py$>CZgR2ZR1}9_+b&!ORd-#^2wEXDzIoNnj|EFv15BBN*Cp zLRga7P_JMes{={)1Mqh@y3+4b~N5+BRm*nibU;W-<~I5(_$X>;R%tQU3!> z0A*G9Qv@I1^1%S>O@H%A=T(2MyE5JpYN@jK>i;T!5&na~NS_IzjpFcMeRWRc9d|U8 z`;g|%Tb|+`o$$d-uI62=nRmk^0`~vrJD7Jlza0AEhg_V;Qsg`~c5E0+)~O5TT}XJc zptvuHrfO@PZ;er-N1guk(@*UCua+%aVZ4J05cxp!M8>q~)AYQHJ;QUj6X+U5;mem_ zo|(R8^=jN*2sW6lSN$FSCBm*`{2^N>o(bc!@NdQXpIiT+-NXgPnHU2XylOu&@U*_$ zp%gE)Y(>?mQA6zq!3Y2*8L#_K%)2U|HSG)>Fff_SgHHIRS^up2NPo%9p38-JRREb9ZlnU?STBR!1!BmQZ+82dTjbvW~9I34F3zH<&DosfCyFudCD zx=i$=V;mh%r(ymY4&(EkPQzz>`thmr)AOB%ugkCT!MJ>9e1>VqZyl!L7tdeQ0trLI z)lUtdY3S(B@@rTczK+M|RXLsE)nvj#vLO0T=cOw}1nEi;9{+Ts^IfOYm0>zvE{zC& zJM+P(9j7>a#^s-e&!>jZJQ(JLk54IsezJjd9?r&O+T!0Vvu;qGp7H3kzb*&!WSGu} zPx=*iOsDhEVa3z&o7}h8R=c_C8mI-Zxtid|JXx-yyfsS``~oAR%xDl218~Wkj)ncy zp>NKC!&l>8r;!!I4_tqcH0CvpTo&nkD>P{2-)#Jgkz{Y)K5S4@@~=<}=nYrkS8mZJ z;Lg$G!nuI$9{<*V{Dm-FrQ@leO?ll;riP?i99iR9q=1BQgM{+~>K zF6FO1AIWKk^^{B$AmoHxOTdRW@DCyqL-2}s-gJuxVqc*B2|q>%$@As%f8)SjiL~cz z)rnx~E(5;d0WmnJ!HB2BSdMLv_D?$fyGT-+?Pk6q(%pZ2up@i#%ac=mp?0nBrrq(t zgLz;M)I{&toK>#=?f$K%%)$ZMV{CjF(#2|%X~I@@6jhV|wP$xW?I)uwcKz|<>AL)# z*ifjPNrcV1ollC5I?wej+XXZp^=t(BqCOr!CIz;YokTq&u2vm4C7sz0LP%DU@2a7s zy7rG({cq^dHQ@H)qp<vBa^ffp}}7A_QNUR;#GMlx)G0cx{m&HNz=h;fR`#j($(z>W(I zf!O2EA6$ytwr-8XhSg`^-hDZbJ@y#!P3M71&p6uH{1NJ2ALtL&z$N;hS6!KgWru_^ zY|TNUVE=)GIUpp7d>6lpDRpQ@jKV4iC7YR_$ z3PLjaJ?!qKdh+qm?$t})BD`!c7cl56yv|kuAg4AWohyVGI^Q5H3!yf;Z7Y|%fwZUw% z1Dwn+Kn*Tc7VZ7?Q>aijjj2)r_Rweo${Iw%k zI9h>dK!%yH-^gSS&^(iC2%1vDwIJ;ko)rziNKzF z{<$-h_Gf1NhPyC)M;ydcWs)TJyY|z0G1g_zKfaJmzPsDq0aRNR1_mHiPmvbPd2Z}; zXYv$bMaoF{4I4lr`87x+OGNls7?4E?@33#32afJk*ip6dzj*0VFjds{gN^hITt=V$ zaQBCl!nF`-7`QA>{ql>?^WI(mZY;9}H?OV67B-e*lxi&4SW-5U36W0f4MJRKf2f%x zeAtOfq_p0Z)L&)w@8Ta4!G5^xl5zS#zkW$SQjM}Mum#Y1n2?h5pEYwfh!#-sJZ@YH z)M3M(9HlrKm6)_x$r`cJAD%`-@lo9ogFLfA`(p1ICOQEBmnf`u2tT@t?im zU+MU>%1XF`b8y&~nfb~qC^MOQpdwsJ)Y$OPhkp=~eL?()V_sZee*ED_ueDV&R)9*3 zf90)vn&CnJ2!wP$m_`hvFQnOjR`nD3y?XZ!eCnyuVH|&CWWxG%77}T)-*LdOvXuJp zo$DBFB>V5%w?7wZ_{^$RtDu9L#)?%dGiJ}4r7vQfS?G7?Q{{V^;}7c9Ma4gR-bDp5bNR>xJ1$-`)czkh#l#1DgV-;DaTBGH{nECrSu7dt z5l$FC0sCab7=`xx6t;jh@>mA$+qi#Y%ZNm|#gJGWKI6hU>&ov7*567GDRD@`g6Kf_ zRP{$S$4>ZG9?XkT1c3Mzt3U7=i1|#;9T@M481J&Sz#d&>U1%x+L0*WeAQYLO?%f*? zjV8vF$x~Bt>79K?1DIlX4fb;3dPA!9kE4IcT)+!Qj`t7$^PlW7U}ST`XRq0~abqmZ z%ecNf^t}+It>T$GcfN;ha1qJ}sUy5);FvQFy*WX&TYxyk$vmxR3fNE=Ax?8xh z`#*v-&Y7zRQZ!}2;3DJyO7?$b!UL|H<4ACTJPDreqWD))IPZ23Qtg0w_uhMxe*Q(B zkFYPD%Ec9*|Sg1e`OHtggtdO8EF8^ zu0LKp8#i0+@EzI#1ZkF4_3QD_I$;>2pB$C)5&E^HvkD3Z0r$cMklshQMM%En{7*!H zC>HSa(_`fPcQ4k>UmWWS;aV_s7iJQtAHS8mNc-P}c3)z(yJEgkm(n^jWMJ1H?>c|x ztKToW{{3I*Z|cay@Pp#~k0k<<^p=*|lt%s;|}!$^HG9;|uSX4-PhyU+-> zw=AVmr$7xh=H0B@Z)@NOtv^^>pmCvhFN}AQ2&Kj?Yu^13^X?cD@YuL`-(+Y+>D~LDL}9471bl0h5*40qJg0moE? zgV0sDOPGgk=eb`6up!>G9A*1CuP()+OLu<<)I`(e;n>OFiIa=Z^QXo`3$i zG{CX@pWK^bzsvT=*$XmG&@cqo9_O5i6S1FwdlLJJPd>$d!m<7^9W*J3IWO$hD3Pq` zOLm!%R7|;u1|5jS_^k+W&V|jF*OsoHxp6PU$E|X42_&SVF9p9NA-r_Xf zQN!1H@Tv3RyH2Z8mGYMv{Tq&jbykY+bh_|-r=O0e{pm--DIF_Brz_?}1pRaxU1kk~ zVY<;s`Pb?3DrpFlj>sb{KIzANmpyS?8WpPFTxIQ%Z+?TC8GOlbwTh;vUsVpn50aU62M!6T z)}dP<4%Qgj9Nn-Zl9pNkmBrb=Y}=T1_QXGOcnyk<@og~TsW8}&_1QY4zaqvK;lOA$ zWp+f_TW&3r0$Zosw0+z2z^~hPKv3;|14UABRhJg0^7C+Sp{5kXHjNl?^|YHq^=u|o z6=OjLfsYlg)w6GKy@5*2+p2D@PUU0amfBf$;d|5Pr$kh2)GQzs2ky;-?@eO;Az5nN zv*ClXTq?eLb3ytKtKYJ@6s34}85vtX^zvYWkQ^BY+q^8Eie?y)4$j#s2lXeWHNI9f9(BK)}at+QV(Uy$Lff6ZR^2GvJBA;wj>_MT3s zG+aA3mD~wa-kUr#F|6WUEdp&=4)|w&|21#xqy3Xn3=6m_ndGeiKq9%8U%QzLv4BG5 z;y|djJ}x$rS!7i)U7KR?!z)&HLxS8LUZJ8-nV2Y7NK82w?Mk!$J4OynPDX!VQm6@s zYU|qme|)er6NF?@<9pw>kK=vZZu8*m7tj2%b4yN4wHwj)Bz}TO`_O$!smG2A@vJon z$?>)7`2R)~<1bH2wVH!9Bp9>t)8oUhZ`L{>Bl%SRhWqY@zCVvq`@R9ebz!HPkydtT zd9r{~T#ow3RIll7KO6N$1z{sOAzf6tNo{pw%SU9z%C2y!-*xVQ=op{i_;_FT2?oNB zb5imzNA!YZH91L1@~SWR;))O0IS9D#;P<@}%;DS>z#^TS@R(wtQ*E>#xtVR70!! zL*guG_{b5VXJA_rD)-3M%}o9^{7Vt6{>OJwZ8m&pSjy=$g>BljCKHccfBjM%{+r8} zN8Je3)+8iP7S+~8^{);U?<-a+8_9k8+>`j5B|*d*@M0bp^dOqRFe z%9N?#+_mhyJKCQRfBqRNi~GT*q>K^5D}w(3B+99pJSBzgC-_ugt^O}XunVCjUTXWp zHeePQEQBb(Z~wlsR6RO*@|0BA;LWO8tES(Z%iqKt2X%&&@Hu)^n_i%o7yRP&SK;z2 z;}36i9@H?$zmU{6arKdIysD#9&M~v^j1N(DE z3?D(sV-q+IZ`Hb0z}d{Rg>755O#p%RlJhUqu^@1)13~a|{#lr93w?8{EF|n}VT)uJq)QN&$fBq%!;K74(&=ssG)Bul@fycH1 zAAa~@Hkex=@i`+3lFWs;l+VP4ZODQB`*Yr2@mA)%H|9rCvqVFOBs{4qRQIcR-Sxh_Y@_W?s?X)d6ZU|UU=JAUSP}dy z9e>5^4~g=~2C&h4_{YP!s2}!=sJ5g2h_9e2TnkQwa0VhLFG;`%Bode^n6V`~e~CeQ z(@8qMVBYhsR->95>xMf9HvP($E$h0uem&tt=m&e~Kfx|KQc3D)s5gb#06e06WmAqE zfBo&3{Jnej_|cZ!S-N{k7LcQkxhVfW6j`!4He7@cxiggQQJ9B^JTphAtHC zy4d=skYS>KUfK9VIuql;2U=X>P$UqNWjwGCd*NRSjh{*tEBUP8-QcVuk-4X^L zyb)>2@f{ym*8gF@*tT)qty>RB!h+#ZAgf>XDgYE5tNvA>j=Ea)>b@1PyUvY;)VEx@ zay}sXmSO$x$DRU=E0PbS?jms!>%VQ=woL2`$kan2cCjWZKz|HJs&QZeLnu^qj;df zczquB$xD~vylK_q67!!G&%(T6)~;2{y%gq8*#5SCY6pB^r3C)5uE0j)?fyStz60}= zwYR!7d^L_h&<8LOOA{zz#r!XXe`yhfqaEDUVTPq5`XAOO7cSOa+?%rg&iyA;-A2_0 zQ6BrVOk9Y|UL9+CybFviQzlP7vuV?&oSHRjxtBu%o8!M17&buAm-F8OUi?DExMdor z#Q6{H5RP^TIF)!Rzf*@!a{lA_Xz(Kshp_*HaC$NaW^>RC3VT3wE#MaW?`T$1tD-E9 zf7W068BF$6s#p>0N~}-Wa%Fw%iMmja(eHu&Tvz_}^WRO-QnYLd`Xi8UpWRg9_

    (am$cT5@D3l6R&ratNv%LppFTM+WuU4Ib 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 z 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 HAHDv61pJLx literal 0 HcmV?d00001 From 6d32ccdc44add3fa4fbb2c710ae3d308d9434217 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Fri, 22 Nov 2019 14:35:11 -0500 Subject: [PATCH 106/271] Add link for stay-open mode --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 80d1c44f..14302450 100644 --- a/README.md +++ b/README.md @@ -34,7 +34,8 @@ the [AWS CLI](https://aws.amazon.com/cli/). ### Running Lambda functions You can run your Lambdas from local directories using the `-v` arg with -`docker run`. You can run them in two modes: as a single execution, or as an API server that listens for invoke events. +`docker run`. You can run them in two modes: as a single execution, or as +[an API server that listens for invoke events](#running-in-stay-open-api-mode). The default is single execution mode, which outputs all logging to stderr and the result of the handler to stdout. You mount your (unzipped) lambda code at `/var/task` and any (unzipped) layer From 67f1bbec3eb3b4c98430e1b57f871b20c0f53a5d Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Fri, 22 Nov 2019 18:29:51 -0500 Subject: [PATCH 107/271] Add cause to lambdaError Fixes #227 --- provided/run/init.go | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/provided/run/init.go b/provided/run/init.go index d5749f44..b75e27a9 100644 --- a/provided/run/init.go +++ b/provided/run/init.go @@ -698,9 +698,10 @@ func (e *exitError) Error() string { } type lambdaError struct { - Type string `json:"errorType,omitempty"` - Message string `json:"errorMessage"` - StackTrace []*string `json:"stackTrace,omitempty"` + Type string `json:"errorType,omitempty"` + Message string `json:"errorMessage"` + StackTrace []*string `json:"stackTrace,omitempty"` + Cause *lambdaError `json:"cause,omitempty"` } type mockLambdaContext struct { From 638fe6689234a8fccc9962732cb650f99cd069db Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Sat, 23 Nov 2019 09:46:34 -0500 Subject: [PATCH 108/271] Add documentation for developing in stay-open mode --- README.md | 31 +++++++++++++++++++++++++++++++ nodejs4.3/run/awslambda-mock.js | 1 + nodejs6.10/run/awslambda-mock.js | 1 + nodejs8.10/run/awslambda-mock.js | 1 + python2.7/run/runtime_mock.py | 1 + python3.6/run/runtime_mock.py | 1 + 6 files changed, 36 insertions(+) diff --git a/README.md b/README.md index 14302450..60648b54 100644 --- a/README.md +++ b/README.md @@ -102,6 +102,37 @@ If you want to change the exposed port, eg run on port 3000 on the host, use `-p You can change the internal API port from `9001` by passing `-e DOCKER_LAMBDA_API_PORT=` (it's unlikely that you'll need to do this). +#### Developing in "stay-open" mode + +While you're developing, you'll want the server to restart every time you make a change to your Lambda. +You can automate this with a file-watching utility like [entr](https://github.com/eradman/entr) or [nodemon](https://nodemon.io/): + +```sh +# you can `brew install entr` on macOS +find . | entr -r docker run --rm \ + -e DOCKER_LAMBDA_STAY_OPEN=1 -p 9001:9001 \ + -v "$PWD":/var/task:ro,delegated \ + lambci/lambda:go1.x handler +``` + +Or + +```sh +# npm install -g nodemon +nodemon -w ./ -e '' -s SIGINT -x docker -- run --rm \ + -e DOCKER_LAMBDA_STAY_OPEN=1 -p 9001:9001 \ + -v "$PWD":/var/task:ro,delegated \ + lambci/lambda:go1.x handler +``` + +Both commands above assume your handler is in the current directory, and the container +will restart whenever there are changes to any files in it or its subdirectories. + +Some other file-watching utilities include +[fswatch](https://github.com/emcrisostomo/fswatch), +[watchman](https://facebook.github.io/watchman/) and +[watchdog](https://github.com/gorakhargosh/watchdog#shell-utilities) (Python) + ### Building Lambda functions The build images have a [number of extra system packages installed](#build-environment) diff --git a/nodejs4.3/run/awslambda-mock.js b/nodejs4.3/run/awslambda-mock.js index 901e1f94..c77a6096 100644 --- a/nodejs4.3/run/awslambda-mock.js +++ b/nodejs4.3/run/awslambda-mock.js @@ -33,6 +33,7 @@ var COGNITO_IDENTITY_POOL_ID = (tryParse(COGNITO_IDENTITY) || {}).identity_pool_ var DEADLINE_MS = Date.now() + (TIMEOUT * 1000) process.on('SIGINT', () => process.exit(0)) +process.on('SIGTERM', () => process.exit(0)) // Don't think this can be done in the Docker image process.umask(2) diff --git a/nodejs6.10/run/awslambda-mock.js b/nodejs6.10/run/awslambda-mock.js index 901e1f94..c77a6096 100644 --- a/nodejs6.10/run/awslambda-mock.js +++ b/nodejs6.10/run/awslambda-mock.js @@ -33,6 +33,7 @@ var COGNITO_IDENTITY_POOL_ID = (tryParse(COGNITO_IDENTITY) || {}).identity_pool_ var DEADLINE_MS = Date.now() + (TIMEOUT * 1000) process.on('SIGINT', () => process.exit(0)) +process.on('SIGTERM', () => process.exit(0)) // Don't think this can be done in the Docker image process.umask(2) diff --git a/nodejs8.10/run/awslambda-mock.js b/nodejs8.10/run/awslambda-mock.js index 901e1f94..c77a6096 100644 --- a/nodejs8.10/run/awslambda-mock.js +++ b/nodejs8.10/run/awslambda-mock.js @@ -33,6 +33,7 @@ var COGNITO_IDENTITY_POOL_ID = (tryParse(COGNITO_IDENTITY) || {}).identity_pool_ var DEADLINE_MS = Date.now() + (TIMEOUT * 1000) process.on('SIGINT', () => process.exit(0)) +process.on('SIGTERM', () => process.exit(0)) // Don't think this can be done in the Docker image process.umask(2) diff --git a/python2.7/run/runtime_mock.py b/python2.7/run/runtime_mock.py index 539ec980..b2aeccf3 100644 --- a/python2.7/run/runtime_mock.py +++ b/python2.7/run/runtime_mock.py @@ -21,6 +21,7 @@ signal.signal(signal.SIGINT, lambda x, y: sys.exit(0)) +signal.signal(signal.SIGTERM, lambda x, y: sys.exit(0)) ORIG_STDOUT = sys.stdout ORIG_STDERR = sys.stderr diff --git a/python3.6/run/runtime_mock.py b/python3.6/run/runtime_mock.py index 539ec980..b2aeccf3 100644 --- a/python3.6/run/runtime_mock.py +++ b/python3.6/run/runtime_mock.py @@ -21,6 +21,7 @@ signal.signal(signal.SIGINT, lambda x, y: sys.exit(0)) +signal.signal(signal.SIGTERM, lambda x, y: sys.exit(0)) ORIG_STDOUT = sys.stdout ORIG_STDERR = sys.stderr From 5368ec118c4a29f031fe4ca2c112ea98a9b06817 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Sat, 23 Nov 2019 17:36:05 -0500 Subject: [PATCH 109/271] =?UTF-8?q?Replace=20\r=20in=20logging=20with=20\n?= =?UTF-8?q?=20=E2=80=93=C2=A0unless=20DOCKER=5FLAMBDA=5FNO=5FMODIFY=5FLOGS?= =?UTF-8?q?=20is=20set?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- provided/run/init.go | 29 +++++++++++++++++++++-------- 1 file changed, 21 insertions(+), 8 deletions(-) diff --git a/provided/run/init.go b/provided/run/init.go index b75e27a9..4526d235 100644 --- a/provided/run/init.go +++ b/provided/run/init.go @@ -31,6 +31,11 @@ import ( ) var logDebug = os.Getenv("DOCKER_LAMBDA_DEBUG") != "" +var stayOpen = os.Getenv("DOCKER_LAMBDA_STAY_OPEN") != "" +var noBootstrap = os.Getenv("DOCKER_LAMBDA_NO_BOOTSTRAP") != "" +var apiPort = getEnv("DOCKER_LAMBDA_API_PORT", "9001") +var useStdin = os.Getenv("DOCKER_LAMBDA_USE_STDIN") != "" +var noModifyLogs = os.Getenv("DOCKER_LAMBDA_NO_MODIFY_LOGS") != "" var curState = "STATE_INIT" @@ -47,10 +52,7 @@ var curContext *mockLambdaContext var bootstrapCmd *exec.Cmd var initPrinted bool var eventChan chan *mockLambdaContext -var stayOpen bool -var apiPort string var exited bool -var noBootstrap bool var bootstrapIsRunning bool var bootstrapPath *string var bootstrapArgs []string @@ -95,10 +97,6 @@ func main() { eventChan = make(chan *mockLambdaContext) - stayOpen = os.Getenv("DOCKER_LAMBDA_STAY_OPEN") != "" - noBootstrap = os.Getenv("DOCKER_LAMBDA_NO_BOOTSTRAP") != "" - apiPort = getEnv("DOCKER_LAMBDA_API_PORT", "9001") - bootstrapPath = flag.String("bootstrap", "/var/runtime/bootstrap", "path to bootstrap") bootstrapArgsString := flag.String("bootstrap-args", "[]", "additional arguments passed to bootstrap, as a stringified JSON Array") flag.Bool("enable-msg-logs", false, "enable message logs") @@ -125,7 +123,7 @@ func main() { } else { eventBody = []byte(os.Getenv("AWS_LAMBDA_EVENT_BODY")) if len(eventBody) == 0 { - if os.Getenv("DOCKER_LAMBDA_USE_STDIN") != "" { + if useStdin { eventBody, _ = ioutil.ReadAll(os.Stdin) } else { eventBody = []byte("{}") @@ -253,6 +251,11 @@ func ensureBootstrapIsRunning(context *mockLambdaContext) error { bootstrapCmd.Stdout = os.Stderr bootstrapCmd.Stderr = os.Stderr } + if !noModifyLogs { + bootstrapCmd.Stdout = &replaceWriter{writer: bootstrapCmd.Stdout, old: []byte("\r"), new: []byte("\n")} + bootstrapCmd.Stderr = &replaceWriter{writer: bootstrapCmd.Stderr, old: []byte("\r"), new: []byte("\n")} + } + bootstrapCmd.SysProcAttr = &syscall.SysProcAttr{Setpgid: true} if err := bootstrapCmd.Start(); err != nil { @@ -900,3 +903,13 @@ type invokeResponse struct { Payload []byte Error *lambdaError } + +type replaceWriter struct { + writer io.Writer + old []byte + new []byte +} + +func (r *replaceWriter) Write(p []byte) (n int, err error) { + return r.writer.Write(bytes.ReplaceAll(p, r.old, r.new)) +} From 31c20295dd5b219defac014588d60894a71a8e0d Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Sat, 23 Nov 2019 17:39:02 -0500 Subject: [PATCH 110/271] Add DOCKER_LAMBDA_NO_MODIFY_LOGS to README --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 60648b54..5a2294cb 100644 --- a/README.md +++ b/README.md @@ -344,6 +344,7 @@ Administrative keys for lambci/lambda:provided - `DOCKER_LAMBDA_STAY_OPEN` - `DOCKER_LAMBDA_API_PORT` - `DOCKER_LAMBDA_DEBUG` + - `DOCKER_LAMBDA_NO_MODIFY_LOGS` ## Build environment From bfcf4008790238d0ec6b095cb3a2cc725fa3fdb9 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Sun, 24 Nov 2019 16:11:23 -0500 Subject: [PATCH 111/271] Update README screenshot --- README.md | 2 +- examples/terminal2.png | Bin 629156 -> 0 bytes examples/terminal3.png | Bin 0 -> 648629 bytes 3 files changed, 1 insertion(+), 1 deletion(-) delete mode 100644 examples/terminal2.png create mode 100644 examples/terminal3.png diff --git a/README.md b/README.md index 5a2294cb..40516d57 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ environment almost identically – including installed software and libraries, file structure and permissions, environment variables, context objects and behaviors – even the user and running process are the same. -Example usage with java11 runtime +Example usage with java11 runtime You can use it for [running your functions](#run-examples) in the same strict Lambda environment, knowing that they'll exhibit the same behavior when deployed live. You can diff --git a/examples/terminal2.png b/examples/terminal2.png deleted file mode 100644 index 055b0913b96023db1c23759c747b7c2986653137..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 629156 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