diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000..9eef699 Binary files /dev/null and b/.DS_Store differ diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..56016c7 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +/app/static/files/ diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..7d82b5d --- /dev/null +++ b/Dockerfile @@ -0,0 +1,7 @@ +FROM python:3.11 +COPY ./requirements.txt / +WORKDIR / +RUN pip install -r requirements.txt +COPY . / +EXPOSE 5005 +CMD [ "flask", "run", "--host=0.0.0.0"] diff --git a/README.MD b/README.MD new file mode 100644 index 0000000..6ae8424 --- /dev/null +++ b/README.MD @@ -0,0 +1,76 @@ +# Northpass Admin Side Project + +## Overview + +This app is a minimal Flask app that I created this project as a weekend-task to help me with a few tools and references at work. Northpass has unbelievably robust API Documentation with a ton of useful endpoints that are always being improved and changed. You can find the documentation [here](https://developers.northpass.com). There are a few items that can either be hard to find or aren't easily exportable via CSV. + +Since I am not a developer and therefore don't have db access, this app acts as an ephemeral, isolated environment that +requires an API key to access. You will need to be an admin in a Northpass instance to leverage any of the tools here. +There was also the thought of offering this access to other Northpass CSMs to attempt to solve customer issues without +needing to go to Solutions Engineering, or, begin finding the solution for the Solutions team. + +This app offers the following to non-SE team members: + +* Ability to bulk create groups and people +* Ability to bulk add people to groups. +* Download CSV of groups with number of members. +* Download CSV of Courses with Categories and other data. +* View all templates without the need to download and open in an IDE. +* Submit template changes directly via the browser. + +The app offers the following security considerations: + +* Clear Session/Timeout after 5 minutes +* Button to switch to a new academy/API key (which also clears all session data) +* No DELETE requests via the UI + +Todo List & Warnings: + +[] Add additional functions for "Get Info" section +[] Create function that deletes all files created during the Session. + +!!! *What this last one means is that if you use this app frequently or across many academies, you could easily take up unnecessary space! It is recommended to clean, destroy, and re-create the image every once in a while.* !!! + +### Running this app + +#### Docker + +I've provided a Dockerfile with instructions below on how to run this app on your computer. Run the following commands: + +```bash +git clone https://github.com/normanras/northass_admin_tool.git +cd northpass_admin_tool + +# For most systems, use: +docker build -t northpass_admin_tool . + +# For MacOS with Docker Desktop, use: +docker buildx build -t northpass_admin_tool . + +docker run -d -p 5005:5000 --name northpass_admin_cntr northpass_admin_tool +``` + +By default, Flask runs on port 5000 and you may already have something listening on that port. Change the `-p` argument to another open port. In the example above, I've used `5005`, but you can use whatever you'd like. + + +#### Flask + +Download this repo + +`git clone https://github.com/normanras/northpass_admin_tool.git` + +Navigate to the root directory + +`cd northpass_admin_tool/app && flask run` + +Below are a few screenshots of the project. + +![Enter your API Key](./imgs/homepage-key.png) +![Action Button](./imgs/homepage-action-button.png) +![Valid Key & New Session](./imgs/homepage-login.png) +![Get Info Page](./imgs/get-info.png) +![Courses Info](./imgs/courses.png) +![Group Info](./imgs/groups.png) +![Bulk Upload Page](./imgs/bulk-upload.png) +![Templates](./imgs/bulk-upload.png) +![Session Cleared](./imgs/session-cleared.png) diff --git a/__pycache__/config.cpython-311.pyc b/__pycache__/config.cpython-311.pyc index 6bb9169..eae9af3 100644 Binary files a/__pycache__/config.cpython-311.pyc and b/__pycache__/config.cpython-311.pyc differ diff --git a/app/__init__.py b/app/__init__.py index b04e3b2..c52ad84 100644 --- a/app/__init__.py +++ b/app/__init__.py @@ -5,7 +5,9 @@ app = Flask(__name__) app.config.from_object(Config) # Upload folder -UPLOAD_FOLDER = 'static/files' -app.config['UPLOAD_FOLDER'] =UPLOAD_FOLDER +UPLOAD_FOLDER = "/Users/normrasmussen/Documents/Projects/CSM_webapp/app/static/files" +# UPLOAD_FOLDER = 'static/files' +app.config["UPLOAD_FOLDER"] = UPLOAD_FOLDER +ALLOWED_EXTENSIONS = {"csv"} -from app import routes +from app import routes, forms diff --git a/app/__pycache__/__init__.cpython-311.pyc b/app/__pycache__/__init__.cpython-311.pyc index 37714d5..c44ff78 100644 Binary files a/app/__pycache__/__init__.cpython-311.pyc and b/app/__pycache__/__init__.cpython-311.pyc differ diff --git a/app/__pycache__/forms.cpython-311.pyc b/app/__pycache__/forms.cpython-311.pyc new file mode 100644 index 0000000..10728c1 Binary files /dev/null and b/app/__pycache__/forms.cpython-311.pyc differ diff --git a/app/__pycache__/routes.cpython-311.pyc b/app/__pycache__/routes.cpython-311.pyc index 15dd624..9cdc2e9 100644 Binary files a/app/__pycache__/routes.cpython-311.pyc and b/app/__pycache__/routes.cpython-311.pyc differ diff --git a/app/_old_functions.py b/app/_old_functions.py new file mode 100644 index 0000000..802b338 --- /dev/null +++ b/app/_old_functions.py @@ -0,0 +1,76 @@ + +@app.route("/get_courses", methods=["GET", "POST"]) +def get_courses(): + array = [] + course_dict = {} + pd.set_option("display.max_colwidth", 100) + count = 0 + dataframe = pd.DataFrame() + + if request.method == "POST": + while True: + count += 1 + endpoint = f"v2/courses?page={count}" + headers = {"accept": "application/json", "X-Api-Key": session["key"]} + response = requests.get(url + endpoint, headers=headers) + data = response.json() + nextlink = data["links"] + + for response in data["data"]: + uuid = response["id"] + course_dict = {"id": uuid} + for keys, values in response["attributes"].items(): + course_dict[keys] = values + array.append(course_dict) + dataframe = pd.DataFrame(array).drop( + ["list_image_url", "permalink"], axis=1 + ) + dataframe["full_description"] = dataframe[ + "full_description" + ].str.replace(r"<[^<>]*>", "", regex=True) + print(dataframe) + + if "next" not in nextlink: + break + + dfcourse = dataframe.to_html() + session["dfcsv"] = dataframe.to_csv() + return render_template("get.html", table=dfcourse, title="List of Courses") + else: + return "This isn't working. Let's go our own way." + + +@app.route("/get_people", methods=["GET", "POST"]) +def get_people(): + array = [] + ppl_dict = {} + count = 0 + dataframe = pd.DataFrame() + + if request.method == "POST": + print("get People POST") + while True: + count += 1 + endpoint = f"v2/people?page={count}" + headers = {"accept": "application/json", "X-Api-Key": session["key"]} + response = requests.get(url + endpoint, headers=headers) + data = response.json() + nextlink = data["links"] + + for response in data["data"]: + uuid = response["id"] + ppl_dict = {"id": uuid} + for keys, values in response["attributes"].items(): + ppl_dict[keys] = values + array.append(ppl_dict) + dataframe = pd.DataFrame(array).drop("custom_avatar_url", axis=1) + print(dataframe) + + if "next" not in nextlink: + break + + dfppl = dataframe.to_html() + session["dfcsv"] = dataframe.to_csv() + return render_template("get.html", table=dfppl, title="List of People") + else: + return render_template("get.html", error="Something went wrong") diff --git a/app/forms.py b/app/forms.py index 47edf23..fdc8acd 100644 --- a/app/forms.py +++ b/app/forms.py @@ -1,8 +1,55 @@ from flask_wtf import FlaskForm -from wtforms import StringField, PasswordField, BooleanField, SubmitField -from wtforms.validators import DataRequired +from wtforms.fields import (SubmitField, + PasswordField, + StringField, + TextAreaField, + IntegerField, + BooleanField, + RadioField) +from wtforms.validators import InputRequired, Length +from flask_wtf.file import FileField, FileRequired +from werkzeug.utils import secure_filename +from flask_codemirror.fields import CodeMirrorField -class RequestForm(FlaskForm): - apikey = StringField("Academy API Key", validators=[DataRequired()]) - submit = SubmitField("Submit") +class ApiKey(FlaskForm): + api_key = PasswordField('Api Key', + validators=[InputRequired(), + Length(min=20, max=25)] + ) + + +class TemplateForm(FlaskForm): + name = StringField("Template File Name", + validators=[InputRequired()]) + + body = TextAreaField("Template Code", + validators=[InputRequired()]) + + submit = SubmitField('Upload Templates') + + # template_code = CodeMirrorField( language='htmlembedded', + # config={'lineNumbers': 'true'}) + +class CsvForm(FlaskForm): + file = FileField(validators=[FileRequired()]) + all_or_some = RadioField("All or Some", + choices=['All learners in all groups', + 'Learners only in adjacent groups'], + validators=[InputRequired()]) + + + +class CourseForm(FlaskForm): + title = StringField('Title', + validators=[InputRequired(), + Length(min=10, max=100)]) + description = TextAreaField('Course Description', + validators=[InputRequired(), + Length(max=200)]) + price = IntegerField('Price', validators=[InputRequired()]) + level = RadioField('Level', + choices=['Beginner', 'Intermediate', 'Advanced'], + validators=[InputRequired()]) + available = BooleanField('Available', default='checked') + diff --git a/app/routes.py b/app/routes.py index 81f6285..105cc4d 100644 --- a/app/routes.py +++ b/app/routes.py @@ -1,99 +1,47 @@ import requests +import shutil import itertools -import pandas as pd import re import os +import csv import glob -from app import app -from flask import redirect, flash, request, render_template, session, make_response +import time +import pandas as pd +from urllib.parse import urlparse +from datetime import datetime, timezone, timedelta +from pathlib import Path +from functools import wraps +import flask +from flask import ( + redirect, + flash, + request, + render_template, + session, + make_response, + url_for, + g, + send_file, +) from werkzeug.utils import secure_filename +from app import app -# Upload folder -UPLOAD_FOLDER = '/Users/normrasmussen/Documents/Projects/CSM_webapp/app/static/files' -# UPLOAD_FOLDER = 'static/files' -app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER -ALLOWED_EXTENSIONS = {'csv'} +UPLOAD_FOLDER = ( + "./app/static/files/csv/" +) +TEMPLATES_FOLDER = ( + "./app/static/files/templates/" +) +app.config["UPLOAD_FOLDER"] = UPLOAD_FOLDER +app.config["TEMPLATES_FOLDER"] = TEMPLATES_FOLDER +ALLOWED_EXTENSIONS = {"csv"} + +app.config.update(SECRET_KEY=os.urandom(24)) +app.permanent_session_lifetime = timedelta(minutes=30) -def key_response(response): - if "402" in str(response): - error = response.text - return render_template("index.html", title="Error Home", error=error) - if "401" in str(response): - error = [ - "Unauthorized access error.", - "This can mean a lot of things,", - "such as the key being changed.", - "Remember, they are paired to each educator!", - ] - return render_template("index.html", title="Error Home", error=error) - return correct_key(response) - - -def correct_key(response): - data = response.json() - session["school"] = data["data"]["attributes"]["properties"]["name"] - print(session["school"]) - return render_template("options.html", title="Options") - - - -@app.route("/", methods=["GET", "POST"]) -def ask_key(): - """This is the main function that asks for the API Key. - Without this key, no other functions will work. - It also assigns the api key to the session and clears the session upon each reload. - """ - session.clear() - if request.method == "POST": - session["key"] = request.form.get("apikey") - #if re.search(r"\s", session["key"]): - # error = "Hm. That doesn't seem right" - # return render_template("index.html", title="Home", error=error) - if session["key"] is not None and len(session["key"]) > 10: - url = "https://api.northpass.com/v2/properties/school" - headers = {"accept": "application/json", "X-Api-Key": session["key"]} - response = requests.get(url, headers=headers) - return key_response(response) - error = "Hm. That doesn't seem right" - return render_template("index.html", title="Home", error=error) - - return render_template("index.html", title="Home") - -def allowed_file(filename): - return '.' in filename and \ - filename.rsplit('.', 1)[1].lower() in ALLOWED_EXTENSIONS - -@app.route("/csv", methods=["GET", "POST"]) -def parse_csv(): - csvData = pd.DataFrame() - if request.method == 'POST': - if 'file' not in request.files: - flash('No file found or uploaded') - return redirect(request.url) - file = request.files['file'] - if file.filename == '': - flash('No file found or uploaded') - return redirect(request.url) - if file and allowed_file(file.filename): - filename = secure_filename(file.filename) - file_path = os.path.join(app.config['UPLOAD_FOLDER'], filename) - file.save(file_path) - csvData = pd.read_csv(file_path, usecols = ['Email'], index_col=False) - html_data = csvData.to_html() - return render_template("csv.html", table=html_data, title="Uploaded File") - return render_template("csv.html", title="Upload") - - -@app.route("/", methods=["GET", "POST"]) -def render_home(): - return render_template("index.html", title="Home") - - -@app.route("/table") -def table(): - return render_template("table.html", tables=[session["dfhtml"]], titles=["Table"]) - +specials = '"!@#$%^&*()-+?_=,<>/"' +url = "https://api.northpass.com/" @app.route("/downloadcsv", methods=["GET", "POST"]) def download_csv(): @@ -103,15 +51,447 @@ def download_csv(): download.headers["Content-Type"] = "text/csv" return download +@app.route("/send_to_admin") +def send_to_admin(): + if request.method == "GET": + url = f"https://app.northpass.com/app/admin/{session['admin_id']}" + return redirect(url) + + +def key_response(response): + if "402" in str(response): + error = response.text + return render_template("index.html", title="Error Home", error=error) + if "401" in str(response): + error = "Unauthorized access error.(401)" + return render_template("index.html", title="Error Home", error=error) + return correct_key(response) + + +def correct_key(response): + data = response.json() + session["raw_school"] = data["data"]["attributes"]["properties"]["name"] + session["sani_school"] = session["raw_school"].replace("[", "").replace("]", "") + session["admin_id"] = data["data"]["id"] + session["client_path"] = os.path.join(TEMPLATES_FOLDER, session["sani_school"]) + return render_template("home.html", title="Active Session") + + +def allowed_file(filename): + return "." in filename and filename.rsplit(".", 1)[1].lower() in ALLOWED_EXTENSIONS + + +def key_required(check): + @wraps(check) + def decorated_function(*args, **kwargs): + if session.get("key") is None: + return redirect("/", code=302) + return check(*args, **kwargs) + return decorated_function + +def grab_subdomain(): + endpoint = "/v2/courses" + headers = {"accept":"application/json", "X-Api-Key":session["key"]} + response = requests.get(url+endpoint, headers=headers) + data2 = response.json()["data"][0]["links"]["enroll"]["href"] + data = urlparse(data2) + data = str("https://" + data.netloc) + print(data) + session["subdomain"] = data + + +@app.route("/", methods=["GET", "POST"]) +def ask_key(): + """This is the main function that asks for the API Key. + Without this key, no other functions will work. + It also assigns the api key to the session and clears the session upon each reload. + """ + if request.method == "POST": + session["key"] = request.form.get("apikey") + if any(char in specials for char in session["key"]) or re.search( + r"[\s]", session["key"] + ): + error = "Invalid Key." + session.clear() + return render_template("index.html", title="Home", error=error) + if session["key"] is not None and len(session["key"]) > 10: + endpoint = "/v2/properties/school" + headers = {"accept": "application/json", "X-Api-Key": session["key"]} + response = requests.get(url + endpoint, headers=headers) + grab_subdomain() + return key_response(response) + + error = "Hm. That doesn't seem right" + session.clear() + return render_template("index.html", title="Home", error=error) + session.clear() + return render_template("index.html", title="Home") + + +@app.route("/render_home", methods=["GET", "POST"]) +@key_required +def render_home(): + if session.get("key"): + return render_template("home.html", title="Home") + return render_template("home.html", title="Enter Key") + + +@app.route("/clear_session", methods=["GET", "POST"]) +def clear_session(): + if session.get("key"): + print("key exists") + print(session["key"]) + if session.get("client_path"): + client = session["client_path"] + print(client) + wildcard = glob.glob(client + "_*") + print(wildcard) + for directory in wildcard: + try: + shutil.rmtree(directory) + except OSError: + print(OSError) + print("Error?") + session.clear() + error = "Session Cleared!" + return render_template("index.html", error=error, title="Home, New session") + return render_template("index.html", title="Home, New session") + + +@app.route("/table") +def table(): + return render_template("table.html", tables=[session["table"]], titles=["Table"]) + + +@app.route("/upload_file", methods=["GET", "POST"]) +@key_required +def upload_file(): + if request.method == "POST": + if "file" not in request.files: + flash("No file found or uploaded") + return redirect(url_for("bulk_add_opts")) + file = request.files["file"] + if file.filename == "": + print("no file exists") + flash("No file found or uploaded") + return redirect(url_for("home")) + # return redirect(request.url) + if file and allowed_file(file.filename): + filename = secure_filename(file.filename) + file_path = os.path.join(app.config["UPLOAD_FOLDER"], filename) + session["file"] = filename + session["filepath"] = file_path + file.save(file_path) + file = list(csv.reader(open(file_path, "r"))) + return divide_values(file) + return render_template("home.html", title="Bulk Add") + + +def divide_values(file): + emails = [] + groups = [] + selection = request.form.get("learner-groups") + if request.form["submit"]: + if selection == "all-groups": + for item in file[1:]: + emails.append(item[0]) + groups.append(item[1:]) + # FEAT: These two extract the groups and emails into two lists + groups = [item for group in groups for item in group] + groups = list(set(groups)) + return api_csv_parse(emails, groups) + # We're good here. This can now be sent to the api + # functions with emails and groups. + elif selection == "some-groups": + submissions = [] + for item in file[1:]: + # FEAT: This extracts each row as a list. Perfect for Learners in Specific Groups. + submissions.append(item) + for item in submissions: + emails.append(item[0]) + print(type(emails)) + groups = item[1:] + return api_csv_parse(emails, groups) + return emails + + if request.form["preview"]: + error = "Preview Button Still Under Construction. Try again later." + return render_template("bulk_add.html", error=error, title="Preview Not Yet") + + return render_template("bulk_add.html", title="Uploaded File") + + +def api_csv_parse(emails, groups): + if emails and groups: + return api_add_ppl_groups(emails, groups) + elif emails: + return api_add_ppl(emails) + elif groups: + return api_add_groups(groups) + return render_template("bulk_add.html", title="CSV Submission") + + +@app.route("/bulk_add_opts", methods=["GET", "POST"]) +@key_required +def bulk_add_opts(): + return render_template("bulk_add.html", titles="Bulk Add Options") + + +@app.route("/bulk_add", methods=["GET", "POST"]) +@key_required +def bulk_add(): + if request.method == "POST": + emails = request.form.get("emails") + groups = request.form.get("groups") + if emails: + if "\n" in emails: + emails = emails.split("\n") + emails = [email.strip() for email in emails] + emails = [re.sub(r"[,]", "", email) for email in emails] + elif "," in emails: + emails = emails.split(",") + emails = [email.strip() for email in emails] + else: + emails = emails.split() + + if groups: + if "\n" in groups: + groups = groups.split("\n") + groups = [group.strip() for group in groups] + groups = [re.sub(r"[,]", "", group) for group in groups] + elif "," in groups: + groups = groups.split(",") + groups = [group.strip() for group in groups] + else: + groups = groups.split() + + if emails and groups: + return api_add_ppl_groups(emails, groups) + elif emails: + return api_add_ppl(emails) + elif groups: + return api_add_groups(groups) + return render_template("bulk_add.html") + + +def api_add_ppl(emails): + payload2 = [] + endpoint = "v2/bulk/people" + for email in emails: + payload2.append({"email": email}) + payload = {"data": {"attributes": {"people": payload2}}} + headers = { + "accept": "application/json", + "content-type": "application/json", + "X-Api-Key": session["key"], + } + return payload + # response = requests.post(url + endpoint, json=payload, headers=headers) + # return check_response(response) + + +def api_add_groups(groups): + payload2 = [] + endpoint = "v2/bulk/people" + for group in groups: + payload2.append({"groups": group}) + payload = {"data": {"attributes": {"people": payload2}}} + headers = { + "accept": "application/json", + "content-type": "application/json", + "X-Api-Key": session["key"], + } + return payload + # response = requests.post(url + endpoint, json=payload, headers=headers) + # return check_response(response) + + +def api_add_ppl_groups(emails, groups): + payload2 = [] + endpoint = "v2/bulk/people" + combinations = list(itertools.product(emails, groups)) + for combo in combinations: + payload2.append({"email": combo[0], "groups": combo[1]}) + payload = {"data": {"attributes": {"people": payload2}}} + + headers = { + "accept": "application/json", + "content-type": "application/json", + "X-Api-Key": session["key"], + } + return payload + # response = requests.post(url + endpoint, json=payload, headers=headers) + # return check_response(response) + + +def check_response(response): + response = str(response) + if "202" in response: + error = "Success! People have been added successfully." + return render_template("bulk_add.html", title="People Added", error=error) + elif "403" in response: + error = "Uh oh. Looks like you don't have appropriate privileges." + return render_template("bulk_add.html", error=error) + elif "422" in response: + error = "Hm. Looks like something was wrong with the data you added." + return render_template("bulk_add.html", error=error) + else: + error = "Something went wrong, but I'm not sure what." + return render_template("bulk_add.html", title="Shrug", error=error) + + +@app.route("/load_templates", methods=["GET", "POST"]) +@key_required +def load_templates(): + count = 0 + templates = [] + + while True: + count += 1 + endpoint = f"v2/custom_templates?page={count}" + headers = { + "accept": "application/json", + "content-type": "application/json", + "X-Api-Key": session["key"], + } + response = requests.get(url + endpoint, headers=headers) + data = response.json() + for response in data["data"]: + last_updated = response["attributes"]["updated_at"].split("T") + full_updated = response["attributes"]["updated_at"] + g.full_updated = datetime.fromisoformat(full_updated) + last_updated = last_updated[0] + name, body, last_updated = ( + response["attributes"]["name"], + response["attributes"]["body"], + last_updated, + ) + templates.append((name, body, last_updated)) + + if data["data"] == []: + break + + save_templates_backup(templates) + return render_template( + "templates.html", + title="Templates", + templates=templates, + ) + + +@app.route("/templates", methods=["GET", "POST"]) +@key_required +def templates(): + if request.method == "POST": + if request.form["submit-template"]: + name = request.form.get("template_name") + body = request.form.get("body") + if body == "": + error = ( + "Ooph. Looks like you didn't load the changes before submitting." + ) + return render_template("templates.html", error=error) + else: + endpoint = "v2/custom_templates" + headers = { + "accept": "application/json", + "content-type": "application/json", + "X-Api-Key": session["key"], + } + payload = {"custom_template": {"name": name, "body": body}} + response = requests.post(url + endpoint, json=payload, headers=headers) + return check_templates(response, name) + return load_templates() + + +def check_templates(response, name): + response = str(response) + if "201" in response: + error = ( + f"Success! The {name} template was successfully uploaded for " + + session["raw_school"] + + "." + ) + button = "Undo" + return render_template( + "templates.html", title="Templates Added", error=error, button=button + ) + elif "403" in response: + error = "Uh oh. Looks like you don't have appropriate privileges." + return render_template("templates.html", error=error) + elif "404" in response: + error = "Hm. Looks like something was wrong in the templates." + return render_template("templates.html", error=error) + else: + error = "Something went wrong, but I'm not sure what." + return render_template("templates.html", title="Shrug", error=error) + + +def save_templates_backup(templates): + session["client_path"] = os.path.join(TEMPLATES_FOLDER, session["sani_school"]) + today = datetime.now(timezone.utc) + today = today.strftime("%m-%d-%Y %H:%M:%S") + session["client_path"] = session["client_path"] + "_" + str(today) + if os.path.exists(session["client_path"]): + pass + else: + os.mkdir(session["client_path"]) + + for tupe in templates: + file_name = tupe[0] + ".liquid" + file_body = tupe[1] + complete_path = os.path.join(session["client_path"], file_name) + + with open(complete_path, "w+") as temp: + temp.write(file_body) + temp.close + + +@app.route("/download_templates", methods=["GET", "POST"]) +@key_required +def download_templates(): + zipped_file = f"{session['sani_school']}" + zipped_file = zipped_file.replace(" ", "") + zipped_file = zipped_file.replace("'", "") + os.chdir = session["client_path"] + file_path = session["client_path"] + zipped_path = os.path.join(TEMPLATES_FOLDER, zipped_file) + download = shutil.make_archive(zipped_path, "zip", file_path) + delete_zip() + return send_file(download, as_attachment=True) + + +def delete_zip(): + print("Sleeping...") + time.sleep(5) + zipped_path = TEMPLATES_FOLDER + wildcard = glob.glob(zipped_path + "*.zip") + wildcard = str(wildcard) + wildzip = wildcard[-5:-2] + if wildzip == "zip": + try: + path = Path(wildcard) + print(path) + shutil.rmtree(path) + except OSError: + print(OSError) + return + + +@app.route("/get_info", methods=["GET", "POST"]) +@key_required +def get_info(): + return render_template("get_info.html", title="Get Customer Information") + @app.route("/get_courses", methods=["GET", "POST"]) +@key_required def get_courses(): - array = [] - course_dict = {} - pd.set_option("display.max_colwidth", 100) + print("course function running") count = 0 - dataframe = pd.DataFrame() - + courses = [] + cats = [] + course_dict = {} if request.method == "POST": while True: count += 1 @@ -119,74 +499,125 @@ def get_courses(): headers = {"accept": "application/json", "X-Api-Key": session["key"]} response = requests.get(url, headers=headers) data = response.json() - nextlink = data["links"] + + for response in data["data"]: + status = response["attributes"]["status"] + uuid = response["id"] + name = response["attributes"]["name"] + ecount = response["attributes"]["enrollments_count"] + created = response["attributes"]["created_at"] + update = response["attributes"]["updated_at"] + unpub = response["attributes"]["unpublished_changes"] + course_dict = { + "Id": uuid, + "Name": name, + "Status": status, + "Enrollments": ecount, + "Created At": created, + "Last Updated": update, + "Unpublished Changes?": unpub, + } + cat_id = response["relationships"]["categories"]["data"] + headers = {"accept": "application/json", "X-Api-Key": session["key"]} + cats = [] + if len(cat_id) == 0: + pass + elif len(cat_id) == 1: + categoryid = cat_id[0]["id"] + url = f"https://api.northpass.com/v2/categories/{categoryid}" + cat_resp = requests.get(url, headers=headers) + cat_data = cat_resp.json() + cat_name = cat_data["data"]["attributes"]["name"] + cats.append(cat_name) + course_dict.update({"Categories": cats}) + else: + for item in cat_id: + categoryid = item["id"] + url = f"https://api.northpass.com/v2/categories/{categoryid}" + cat_resp = requests.get(url, headers=headers) + cat_data = cat_resp.json() + cat_name = cat_data["data"]["attributes"]["name"] + cats.append(cat_name) + course_dict.update({"Categories": cats}) + + try: + courses.append(course_dict) + except TypeError as e: + print(f"Error: {e}") + finally: + pd.set_option("display.max_colwidth", 30) + df = pd.DataFrame.from_records(courses) + # df.iloc[-1] = df.iloc[-1].astype(str).str.replace("[\]\[]",'') + df.fillna('', inplace=True) + courses_table = df.to_html() + session["dfcsv"] = df.to_csv() + + if data["data"] == []: + break + + return render_template("get_info.html", + title="Course Information", + table=courses_table) + + return "You didn't post up" + +@app.route("/get_groups", methods=["GET", "POST"]) +@key_required +def get_groups(): + print("groups function running") + count = 0 + groups = [] + group_dict = {} + if request.method == "POST": + while True: + count += 1 + url = f"https://api.northpass.com/v2/groups?page={count}" + headers = {"accept": "application/json", "X-Api-Key": session["key"]} + response = requests.get(url, headers=headers) + data = response.json() + print(data) for response in data["data"]: uuid = response["id"] - course_dict = {"id": uuid} - for keys, values in response["attributes"].items(): - course_dict[keys] = values - array.append(course_dict) - dataframe = pd.DataFrame(array).drop( - ["list_image_url", "permalink"], axis=1 - ) - dataframe["full_description"] = dataframe[ - "full_description" - ].str.replace(r"<[^<>]*>", "", regex=True) - print(dataframe) - - if "next" not in nextlink: + name = response["attributes"]["name"] + ecount = response["attributes"]["membership_count"] + created = response["attributes"]["created_at"] + update = response["attributes"]["updated_at"] + elink = response["attributes"]["group_enrollment_link"] + group_dict = { + "Id": uuid, + "Name": name, + "Members": ecount, + "Created At": created, + "Last Updated": update, + "Enrollment Link":elink, + } + try: + groups.append(group_dict) + except TypeError as e: + print(f"Error: {e}") + finally: + pd.set_option("display.max_colwidth", 30) + df = pd.DataFrame.from_records(groups) + # df.iloc[-1] = df.iloc[-1].astype(str).str.replace("[\]\[]",'') + df.fillna('', inplace=True) + groups_table = df.to_html() + session["dfcsv"] = df.to_csv() + if data["data"] == []: break - - dfcourse = dataframe.to_html() - session["dfcsv"] = dataframe.to_csv() - return render_template("get.html", table=dfcourse, title="List of Courses") - else: - return "This isn't working. Let's go our own way." + return render_template("get_info.html", + title="Course Information", + table=groups_table) + return "You didn't post up" @app.route("/get_people", methods=["GET", "POST"]) +@key_required def get_people(): - array = [] - ppl_dict = {} + print("groups function running") count = 0 - dataframe = pd.DataFrame() - - if request.method == "POST": - while True: - count += 1 - url = f"https://api.northpass.com/v2/people?page={count}" - headers = {"accept": "application/json", "X-Api-Key": session["key"]} - response = requests.get(url, headers=headers) - data = response.json() - nextlink = data["links"] - - for response in data["data"]: - uuid = response["id"] - ppl_dict = {"id": uuid} - for keys, values in response["attributes"].items(): - ppl_dict[keys] = values - array.append(ppl_dict) - dataframe = pd.DataFrame(array).drop("custom_avatar_url", axis=1) - print(dataframe) - - if "next" not in nextlink: - break - - dfppl = dataframe.to_html() - session["dfcsv"] = dataframe.to_csv() - return render_template("get.html", table=dfppl, title="List of People") - else: - return "what what" - - -@app.route("/add_ppl_opts", methods=["POST"]) -def add_ppl_opts(): - array = [] - dict_response = {} - dataframe = pd.DataFrame() - count = 0 - + groups = [] + group_dict = {} if request.method == "POST": while True: count += 1 @@ -194,188 +625,18 @@ def add_ppl_opts(): headers = {"accept": "application/json", "X-Api-Key": session["key"]} response = requests.get(url, headers=headers) data = response.json() - nextlink = data["links"] - - for response in data["data"]: - uuid = response["id"] - dict_response = {"id": uuid} - for keys, values in response["attributes"].items(): - dict_response[keys] = values - array.append(dict_response) - dataframe = pd.DataFrame(array).drop("group_enrollment_link", axis=1) - print(dataframe) - - if "next" not in nextlink: - break - - dfgroups = dataframe.to_html() - session["dfcsv"] = dataframe.to_csv() - return render_template( - "bulk_add_ppl.html", table=dfgroups, titles="Bulk Add Learners" - ) - else: - return "This isn't working. Let's go our own way." - - -@app.route("/bulk_add_ppl", methods=["GET", "POST"]) -def bulk_add_ppl(): + print(data) +@app.route("/undo_template", methods=["POST"]) +@key_required +def undo_template(): if request.method == "POST": - emails = request.form.get("emails") - groups = request.form.get("groups") - emails.split(",") - groups.split(",") - - url = "https://api.northpass.com/v2/bulk/people" - combinations = list(itertools.product(emails, groups)) - print(combinations) - payload = { - "data": {"attributes": {"people": [{"email": emails, "groups": groups}]}} - } - headers = { - "accept": "application/json", - "content-type": "application/json", - "X-Api-Key": session["key"], - } - response = requests.post(url, json=payload, headers=headers) - response = str(response) - if "202" in response: - error = "Success! People have been added successfully." - return render_template( - "bulk_add_ppl.html", - table=session["dfgroups"], - title="People Added", - error=error, - ) - elif "403" in response: - error = "Uh oh. Looks like you don't have appropriate privileges." - elif "422" in response: - error = "Hm. Looks like something was wrong with the names." - return render_template( - "bulk_add_people.html", - table=session["dfgroups"], - title="People Added", - error=error, - ) - else: - error = "Shrug" - return render_template("bulk_add_ppl.html", title="Shrug", error=error) + if request.form["undo_templates"]: + pass -@app.route("/add_groups_opts", methods=["POST"]) -def add_groups_opts(): - array = [] - dict_response = {} - count = 0 - dataframe = pd.DataFrame() - - if request.method == "POST": - while True: - count += 1 - url = f"https://api.northpass.com/v2/groups?page={count}" - headers = {"accept": "application/json", "X-Api-Key": session["key"]} - response = requests.get(url, headers=headers) - data = response.json() - nextlink = data["links"] - - for response in data["data"]: - uuid = response["id"] - dict_response = {"id": uuid} - for keys, values in response["attributes"].items(): - dict_response[keys] = values - array.append(dict_response) - dataframe = pd.DataFrame(array).drop("group_enrollment_link", axis=1) - print(dataframe) - - if "next" not in nextlink: - break - - session["dfgroups"] = dataframe.to_html() - session["dfcsv"] = dataframe.to_csv() - return render_template( - "bulk_add_groups.html", table=session["dfgroups"], titles="Bulk Add Groups" - ) - else: - return "This isn't working. Let's go our own way." - - -@app.route("/bulk_add_groups", methods=["GET", "POST"]) -def bulk_add_groups(): - grouparr = [] - count = 0 - if request.method == "POST": - groups = request.form.get("groups") - if '\n' in groups: - groups.split('\n') - groups = [group.strip() for group in groups] - elif ',' in groups: - groups.split(",") - groups = [group.strip() for group in groups] - for group in groups: - groupdict = {} - groupdict["name"] = group - grouparr.append(groupdict) - - url = "https://api.northpass.com/v2/bulk/groups" - payload = {"data": {"attributes": {"groups": grouparr}}} - headers = { - "accept": "application/json", - "content-type": "application/json", - "X-Api-Key": session["key"], - } - response = requests.post(url, json=payload, headers=headers) - print(type(response)) - response = str(response) - if "202" in response: - error = "Success! Groups have been added successfully." - return render_template( - "bulk_add_groups.html", - table=session["dfgroups"], - title="Groups Added", - error=error, - ) - elif "403" in response: - error = [ "Uh oh. Looks like you're not the", - "admin or don't have appropriate privileges.", - "Please talk to your academy admin." ] - elif "422" in response: - error = ["Hm. Looks like something was wrong with the group names.", - "Reach out to the manager of this app."] - return render_template( - "bulk_add_groups.html", - table=session["dfgroups"], - title="Groups Added", - error=error, - ) - else: - error = "Shrug" - return render_template("bulk_add_groups.html", title="Shrug", error=error) - - -@app.route("/ppl_to_groups_opts", methods=["GET", "POST"]) -def ppl_to_groups_opts(): - pass - - -@app.route("/ppl_to_groups", methods=["GET", "POST"]) -def ppl_to_groups(): - person_ids = [] - group_ids = [] - url = "https://api.northpass.com/v2/bulk/people/membership" - payload = { - "payload": { - "person_ids": person_ids, - "group_ids": group_ids, - } - } - headers = { - "accept": "application/json", - "content-type": "application/json", - "X-Api-Key": session["key"], - } - - -app.secret_key = "@&I\x1a?\xce\x94\xbb0w\x17\xbf&Y\xa2\xc2(A\xf5\xf2\x97\xba\xeb\xfa" - +@app.route("/stop", methods=["POST"]) +def stop(): + print("stopping") if __name__ == "__main__": - ask_key() + app.run(debug=True) diff --git a/app/static/.DS_Store b/app/static/.DS_Store new file mode 100644 index 0000000..c97cc1c Binary files /dev/null and b/app/static/.DS_Store differ diff --git a/app/static/css/prism.css b/app/static/css/prism.css new file mode 100644 index 0000000..9cb5d03 --- /dev/null +++ b/app/static/css/prism.css @@ -0,0 +1,4 @@ +/* PrismJS 1.29.0 +https://prismjs.com/download.html#themes=prism-tomorrow&languages=markup+clike+javascript&plugins=line-numbers */ +code[class*=language-],pre[class*=language-]{color:#ccc;background:0 0;font-family:Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto}:not(pre)>code[class*=language-],pre[class*=language-]{background:#2d2d2d}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.token.block-comment,.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#999}.token.punctuation{color:#ccc}.token.attr-name,.token.deleted,.token.namespace,.token.tag{color:#e2777a}.token.function-name{color:#6196cc}.token.boolean,.token.function,.token.number{color:#f08d49}.token.class-name,.token.constant,.token.property,.token.symbol{color:#f8c555}.token.atrule,.token.builtin,.token.important,.token.keyword,.token.selector{color:#cc99cd}.token.attr-value,.token.char,.token.regex,.token.string,.token.variable{color:#7ec699}.token.entity,.token.operator,.token.url{color:#67cdcc}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.token.inserted{color:green} +pre[class*=language-].line-numbers{position:relative;padding-left:3.8em;counter-reset:linenumber}pre[class*=language-].line-numbers>code{position:relative;white-space:inherit}.line-numbers .line-numbers-rows{position:absolute;pointer-events:none;top:0;font-size:100%;left:-3.8em;width:3em;letter-spacing:-1px;border-right:1px solid #999;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.line-numbers-rows>span{display:block;counter-increment:linenumber}.line-numbers-rows>span:before{content:counter(linenumber);color:#999;display:block;padding-right:.8em;text-align:right} diff --git a/app/static/css/prism.js b/app/static/css/prism.js new file mode 100644 index 0000000..34ec15d --- /dev/null +++ b/app/static/css/prism.js @@ -0,0 +1,7 @@ +/* PrismJS 1.29.0 +https://prismjs.com/download.html#themes=prism-tomorrow&languages=markup+clike+javascript&plugins=line-numbers */ +var _self="undefined"!=typeof window?window:"undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?self:{},Prism=function(e){var n=/(?:^|\s)lang(?:uage)?-([\w-]+)(?=\s|$)/i,t=0,r={},a={manual:e.Prism&&e.Prism.manual,disableWorkerMessageHandler:e.Prism&&e.Prism.disableWorkerMessageHandler,util:{encode:function e(n){return n instanceof i?new i(n.type,e(n.content),n.alias):Array.isArray(n)?n.map(e):n.replace(/&/g,"&").replace(/=g.reach);A+=w.value.length,w=w.next){var E=w.value;if(n.length>e.length)return;if(!(E instanceof i)){var P,L=1;if(y){if(!(P=l(b,A,e,m))||P.index>=e.length)break;var S=P.index,O=P.index+P[0].length,j=A;for(j+=w.value.length;S>=j;)j+=(w=w.next).value.length;if(A=j-=w.value.length,w.value instanceof i)continue;for(var C=w;C!==n.tail&&(jg.reach&&(g.reach=W);var z=w.prev;if(_&&(z=u(n,z,_),A+=_.length),c(n,z,L),w=u(n,z,new i(f,p?a.tokenize(N,p):N,k,N)),M&&u(n,w,M),L>1){var I={cause:f+","+d,reach:W};o(e,n,t,w.prev,A,I),g&&I.reach>g.reach&&(g.reach=I.reach)}}}}}}function s(){var e={value:null,prev:null,next:null},n={value:null,prev:e,next:null};e.next=n,this.head=e,this.tail=n,this.length=0}function u(e,n,t){var r=n.next,a={value:t,prev:n,next:r};return n.next=a,r.prev=a,e.length++,a}function c(e,n,t){for(var r=n.next,a=0;a"+i.content+""},!e.document)return e.addEventListener?(a.disableWorkerMessageHandler||e.addEventListener("message",(function(n){var t=JSON.parse(n.data),r=t.language,i=t.code,l=t.immediateClose;e.postMessage(a.highlight(i,a.languages[r],r)),l&&e.close()}),!1),a):a;var g=a.util.currentScript();function f(){a.manual||a.highlightAll()}if(g&&(a.filename=g.src,g.hasAttribute("data-manual")&&(a.manual=!0)),!a.manual){var h=document.readyState;"loading"===h||"interactive"===h&&g&&g.defer?document.addEventListener("DOMContentLoaded",f):window.requestAnimationFrame?window.requestAnimationFrame(f):window.setTimeout(f,16)}return a}(_self);"undefined"!=typeof module&&module.exports&&(module.exports=Prism),"undefined"!=typeof global&&(global.Prism=Prism); +Prism.languages.markup={comment:{pattern://,greedy:!0},prolog:{pattern:/<\?[\s\S]+?\?>/,greedy:!0},doctype:{pattern:/"'[\]]|"[^"]*"|'[^']*')+(?:\[(?:[^<"'\]]|"[^"]*"|'[^']*'|<(?!!--)|)*\]\s*)?>/i,greedy:!0,inside:{"internal-subset":{pattern:/(^[^\[]*\[)[\s\S]+(?=\]>$)/,lookbehind:!0,greedy:!0,inside:null},string:{pattern:/"[^"]*"|'[^']*'/,greedy:!0},punctuation:/^$|[[\]]/,"doctype-tag":/^DOCTYPE/i,name:/[^\s<>'"]+/}},cdata:{pattern://i,greedy:!0},tag:{pattern:/<\/?(?!\d)[^\s>\/=$<%]+(?:\s(?:\s*[^\s>\/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s/>])))+)?\s*\/?>/,greedy:!0,inside:{tag:{pattern:/^<\/?[^\s>\/]+/,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"special-attr":[],"attr-value":{pattern:/=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+)/,inside:{punctuation:[{pattern:/^=/,alias:"attr-equals"},{pattern:/^(\s*)["']|["']$/,lookbehind:!0}]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:[{pattern:/&[\da-z]{1,8};/i,alias:"named-entity"},/&#x?[\da-f]{1,8};/i]},Prism.languages.markup.tag.inside["attr-value"].inside.entity=Prism.languages.markup.entity,Prism.languages.markup.doctype.inside["internal-subset"].inside=Prism.languages.markup,Prism.hooks.add("wrap",(function(a){"entity"===a.type&&(a.attributes.title=a.content.replace(/&/,"&"))})),Object.defineProperty(Prism.languages.markup.tag,"addInlined",{value:function(a,e){var s={};s["language-"+e]={pattern:/(^$)/i,lookbehind:!0,inside:Prism.languages[e]},s.cdata=/^$/i;var t={"included-cdata":{pattern://i,inside:s}};t["language-"+e]={pattern:/[\s\S]+/,inside:Prism.languages[e]};var n={};n[a]={pattern:RegExp("(<__[^>]*>)(?:))*\\]\\]>|(?!)".replace(/__/g,(function(){return a})),"i"),lookbehind:!0,greedy:!0,inside:t},Prism.languages.insertBefore("markup","cdata",n)}}),Object.defineProperty(Prism.languages.markup.tag,"addAttribute",{value:function(a,e){Prism.languages.markup.tag.inside["special-attr"].push({pattern:RegExp("(^|[\"'\\s])(?:"+a+")\\s*=\\s*(?:\"[^\"]*\"|'[^']*'|[^\\s'\">=]+(?=[\\s>]))","i"),lookbehind:!0,inside:{"attr-name":/^[^\s=]+/,"attr-value":{pattern:/=[\s\S]+/,inside:{value:{pattern:/(^=\s*(["']|(?!["'])))\S[\s\S]*(?=\2$)/,lookbehind:!0,alias:[e,"language-"+e],inside:Prism.languages[e]},punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}}}})}}),Prism.languages.html=Prism.languages.markup,Prism.languages.mathml=Prism.languages.markup,Prism.languages.svg=Prism.languages.markup,Prism.languages.xml=Prism.languages.extend("markup",{}),Prism.languages.ssml=Prism.languages.xml,Prism.languages.atom=Prism.languages.xml,Prism.languages.rss=Prism.languages.xml; +Prism.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0,greedy:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"class-name":{pattern:/(\b(?:class|extends|implements|instanceof|interface|new|trait)\s+|\bcatch\s+\()[\w.\\]+/i,lookbehind:!0,inside:{punctuation:/[.\\]/}},keyword:/\b(?:break|catch|continue|do|else|finally|for|function|if|in|instanceof|new|null|return|throw|try|while)\b/,boolean:/\b(?:false|true)\b/,function:/\b\w+(?=\()/,number:/\b0x[\da-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?/i,operator:/[<>]=?|[!=]=?=?|--?|\+\+?|&&?|\|\|?|[?*/~^%]/,punctuation:/[{}[\];(),.:]/}; +Prism.languages.javascript=Prism.languages.extend("clike",{"class-name":[Prism.languages.clike["class-name"],{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$A-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\.(?:constructor|prototype))/,lookbehind:!0}],keyword:[{pattern:/((?:^|\})\s*)catch\b/,lookbehind:!0},{pattern:/(^|[^.]|\.\.\.\s*)\b(?:as|assert(?=\s*\{)|async(?=\s*(?:function\b|\(|[$\w\xA0-\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally(?=\s*(?:\{|$))|for|from(?=\s*(?:['"]|$))|function|(?:get|set)(?=\s*(?:[#\[$\w\xA0-\uFFFF]|$))|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\b/,lookbehind:!0}],function:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*(?:\.\s*(?:apply|bind|call)\s*)?\()/,number:{pattern:RegExp("(^|[^\\w$])(?:NaN|Infinity|0[bB][01]+(?:_[01]+)*n?|0[oO][0-7]+(?:_[0-7]+)*n?|0[xX][\\dA-Fa-f]+(?:_[\\dA-Fa-f]+)*n?|\\d+(?:_\\d+)*n|(?:\\d+(?:_\\d+)*(?:\\.(?:\\d+(?:_\\d+)*)?)?|\\.\\d+(?:_\\d+)*)(?:[Ee][+-]?\\d+(?:_\\d+)*)?)(?![\\w$])"),lookbehind:!0},operator:/--|\+\+|\*\*=?|=>|&&=?|\|\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\.{3}|\?\?=?|\?\.?|[~:]/}),Prism.languages.javascript["class-name"][0].pattern=/(\b(?:class|extends|implements|instanceof|interface|new)\s+)[\w.\\]+/,Prism.languages.insertBefore("javascript","keyword",{regex:{pattern:RegExp("((?:^|[^$\\w\\xA0-\\uFFFF.\"'\\])\\s]|\\b(?:return|yield))\\s*)/(?:(?:\\[(?:[^\\]\\\\\r\n]|\\\\.)*\\]|\\\\.|[^/\\\\\\[\r\n])+/[dgimyus]{0,7}|(?:\\[(?:[^[\\]\\\\\r\n]|\\\\.|\\[(?:[^[\\]\\\\\r\n]|\\\\.|\\[(?:[^[\\]\\\\\r\n]|\\\\.)*\\])*\\])*\\]|\\\\.|[^/\\\\\\[\r\n])+/[dgimyus]{0,7}v[dgimyus]{0,7})(?=(?:\\s|/\\*(?:[^*]|\\*(?!/))*\\*/)*(?:$|[\r\n,.;:})\\]]|//))"),lookbehind:!0,greedy:!0,inside:{"regex-source":{pattern:/^(\/)[\s\S]+(?=\/[a-z]*$)/,lookbehind:!0,alias:"language-regex",inside:Prism.languages.regex},"regex-delimiter":/^\/|\/$/,"regex-flags":/^[a-z]+$/}},"function-variable":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*[=:]\s*(?:async\s*)?(?:\bfunction\b|(?:\((?:[^()]|\([^()]*\))*\)|(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)\s*=>))/,alias:"function"},parameter:[{pattern:/(function(?:\s+(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)?\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\))/,lookbehind:!0,inside:Prism.languages.javascript},{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=>)/i,lookbehind:!0,inside:Prism.languages.javascript},{pattern:/(\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*=>)/,lookbehind:!0,inside:Prism.languages.javascript},{pattern:/((?:\b|\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\w\xA0-\uFFFF]))(?:(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*)\(\s*|\]\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*\{)/,lookbehind:!0,inside:Prism.languages.javascript}],constant:/\b[A-Z](?:[A-Z_]|\dx?)*\b/}),Prism.languages.insertBefore("javascript","string",{hashbang:{pattern:/^#!.*/,greedy:!0,alias:"comment"},"template-string":{pattern:/`(?:\\[\s\S]|\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}|(?!\$\{)[^\\`])*`/,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}/,lookbehind:!0,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:Prism.languages.javascript}},string:/[\s\S]+/}},"string-property":{pattern:/((?:^|[,{])[ \t]*)(["'])(?:\\(?:\r\n|[\s\S])|(?!\2)[^\\\r\n])*\2(?=\s*:)/m,lookbehind:!0,greedy:!0,alias:"property"}}),Prism.languages.insertBefore("javascript","operator",{"literal-property":{pattern:/((?:^|[,{])[ \t]*)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*:)/m,lookbehind:!0,alias:"property"}}),Prism.languages.markup&&(Prism.languages.markup.tag.addInlined("script","javascript"),Prism.languages.markup.tag.addAttribute("on(?:abort|blur|change|click|composition(?:end|start|update)|dblclick|error|focus(?:in|out)?|key(?:down|up)|load|mouse(?:down|enter|leave|move|out|over|up)|reset|resize|scroll|select|slotchange|submit|unload|wheel)","javascript")),Prism.languages.js=Prism.languages.javascript; +!function(){if("undefined"!=typeof Prism&&"undefined"!=typeof document){var e="line-numbers",n=/\n(?!$)/g,t=Prism.plugins.lineNumbers={getLine:function(n,t){if("PRE"===n.tagName&&n.classList.contains(e)){var i=n.querySelector(".line-numbers-rows");if(i){var r=parseInt(n.getAttribute("data-start"),10)||1,s=r+(i.children.length-1);ts&&(t=s);var l=t-r;return i.children[l]}}},resize:function(e){r([e])},assumeViewportIndependence:!0},i=void 0;window.addEventListener("resize",(function(){t.assumeViewportIndependence&&i===window.innerWidth||(i=window.innerWidth,r(Array.prototype.slice.call(document.querySelectorAll("pre.line-numbers"))))})),Prism.hooks.add("complete",(function(t){if(t.code){var i=t.element,s=i.parentNode;if(s&&/pre/i.test(s.nodeName)&&!i.querySelector(".line-numbers-rows")&&Prism.util.isActive(i,e)){i.classList.remove(e),s.classList.add(e);var l,o=t.code.match(n),a=o?o.length+1:1,u=new Array(a+1).join("");(l=document.createElement("span")).setAttribute("aria-hidden","true"),l.className="line-numbers-rows",l.innerHTML=u,s.hasAttribute("data-start")&&(s.style.counterReset="linenumber "+(parseInt(s.getAttribute("data-start"),10)-1)),t.element.appendChild(l),r([s]),Prism.hooks.run("line-numbers",t)}}})),Prism.hooks.add("line-numbers",(function(e){e.plugins=e.plugins||{},e.plugins.lineNumbers=!0}))}function r(e){if(0!=(e=e.filter((function(e){var n,t=(n=e,n?window.getComputedStyle?getComputedStyle(n):n.currentStyle||null:null)["white-space"];return"pre-wrap"===t||"pre-line"===t}))).length){var t=e.map((function(e){var t=e.querySelector("code"),i=e.querySelector(".line-numbers-rows");if(t&&i){var r=e.querySelector(".line-numbers-sizer"),s=t.textContent.split(n);r||((r=document.createElement("span")).className="line-numbers-sizer",t.appendChild(r)),r.innerHTML="0",r.style.display="block";var l=r.getBoundingClientRect().height;return r.innerHTML="",{element:e,lines:s,lineHeights:[],oneLinerHeight:l,sizer:r}}})).filter(Boolean);t.forEach((function(e){var n=e.sizer,t=e.lines,i=e.lineHeights,r=e.oneLinerHeight;i[t.length-1]=void 0,t.forEach((function(e,t){if(e&&e.length>1){var s=n.appendChild(document.createElement("span"));s.style.display="block",s.textContent=e}else i[t]=r}))})),t.forEach((function(e){for(var n=e.sizer,t=e.lineHeights,i=0,r=0;r .card__name { - bottom: 0; +.floating-container .float-element .material-icons { + vertical-align: middle; + color: white; + font-size: 16px; } - -.card:hover > .card__name { - bottom: 0; +.floating-container .float-element:nth-child(1) { + background: #F05323; + box-shadow: 0 20px 20px -10px rgba(240, 84, 36, 0.5); } - -.card__icon { - font-size: 2rem; - padding: 1rem; - display: grid; +.floating-container .float-element:nth-child(2) { + background: #FED109; + box-shadow: 0 20px 20px -10px rgba(255, 209, 10, 0.5); } - -.card__name { - font-weight: 400; - transform: translate(-50%, -50%); - position: relative; - left: 50%; - transition: 0.1s; +.floating-container .float-element:nth-child(3) { + background: #089FB7; + box-shadow: 0 20px 20px -10px rgba(08, 159, 183, 0.5); } diff --git a/app/static/files/Amyris-12-21T1630.csv b/app/static/files/Amyris-12-21T1630.csv deleted file mode 100644 index d1c1ec7..0000000 --- a/app/static/files/Amyris-12-21T1630.csv +++ /dev/null @@ -1,625 +0,0 @@ -,SSO UID,Learner Full Name,Email,Course Name,Course Version,Enrolled To The Course Time,Attempt Start Date Time,Attempt End Date Time,Attempt number,Course Progress,Last Activity Name,Last Activity Completed At Time -1,4981,Josie Hills,josie.hills@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-12-21 13:56:33,2022-12-21 13:56:38,2022-12-21 15:43:57,1,100%,Amyris Code of Business Conduct and Ethics,2022-12-21 15:43:57 -2,4739,Matheus Varasquin,mvarasquin@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-12-21 02:56:44,2022-12-21 02:56:49,,1,0%,, -3,4830,Estevam Silva,essilva@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-12-20 22:42:27,2022-12-20 22:42:35,,1,0%,, -4,3950,Beatriz Correa,bcorrea@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-12-19 11:05:46,2022-12-19 11:06:00,,1,0%,, -5,2657,Jennifer Lloyd-Randolfi,randolfi@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-12-16 18:50:46,2022-12-16 18:50:51,,1,0%,, -6,4625,Kieran Stratford,stratford@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-12-16 12:43:50,2022-12-16 12:43:53,2022-12-16 13:56:00,1,100%,Amyris Code of Business Conduct and Ethics,2022-12-16 13:56:00 -7,1764,James Paulas,paulas@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-12-15 20:06:49,2022-12-15 20:06:53,,1,0%,, -8,4781,Christine Comforti,comforti@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-12-15 17:18:10,2022-12-15 17:18:20,,1,0%,, -9,4627,Eleanor Moss-Rantor,moss@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-12-15 13:30:24,2022-12-15 13:30:29,2022-12-15 15:04:02,1,100%,Amyris Code of Business Conduct and Ethics,2022-12-15 15:04:02 -10,4983,Jan Masny,jan.masny@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-12-15 10:49:13,2022-12-15 10:49:24,2022-12-19 11:31:42,1,100%,Amyris Code of Business Conduct and Ethics,2022-12-19 11:31:42 -11,3069,Sabrina Garcia,sgarcia@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-12-14 21:07:23,2022-12-14 21:07:27,2022-12-14 23:17:55,1,100%,Amyris Code of Business Conduct and Ethics,2022-12-14 23:17:55 -12,5150,Wenlong Cai,wenlong.cai@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-12-13 18:56:58,2022-12-13 18:57:08,,1,0%,, -13,4676,Sovisal Sameth,sameth@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-12-12 23:51:54,2022-12-12 23:52:06,2022-12-13 07:22:29,1,100%,Amyris Code of Business Conduct and Ethics,2022-12-13 07:22:29 -14,1958,Wenzong Li,wli@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-12-12 21:00:31,2022-12-13 21:00:49,,1,0%,, -15,3790,Christine Scafuro,scafuro@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-12-12 18:34:53,2022-12-12 18:34:57,,1,0%,, -16,1411,John Dominic Lim,lim@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-12-12 17:34:03,2022-12-12 17:34:13,2022-12-12 19:33:41,1,100%,Amyris Code of Business Conduct and Ethics,2022-12-12 19:33:41 -17,3292,Francisco Costa,fcosta@amyris.com,New York Managers Anti-Harassment Training,LIVE,2022-12-12 17:22:28,2022-12-12 17:22:34,2022-12-12 20:20:08,1,100%,Manager Acknowledgement,2022-12-12 20:20:08 -18,3001,Matheus Tontini,tontini@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-12-12 11:16:18,2022-12-12 11:16:24,,1,0%,, -19,4988,Ashleigh Barlow,barlow@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-12-09 22:08:23,2022-12-09 22:08:27,2022-12-10 00:15:55,1,100%,Amyris Code of Business Conduct and Ethics,2022-12-10 00:15:55 -20,5011,Antonio Leme,antonio.leme@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-12-09 16:22:58,2022-12-09 16:23:33,,1,0%,, -21,5019,Marcos Alves,marcos.alves@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-12-09 02:22:36,2022-12-09 02:22:46,2022-12-17 20:20:03,1,100%,Amyris Code of Business Conduct and Ethics,2022-12-17 20:20:03 -22,4844,Alina Kwan,kwan@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-12-08 16:26:37,2022-12-08 16:26:43,,1,0%,, -23,3732,Hayley Sinclair,mcrandal@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-12-08 12:00:44,2022-12-08 12:07:24,2022-12-13 11:06:52,1,100%,Amyris Code of Business Conduct and Ethics,2022-12-13 11:06:52 -24,3737,Riaan Hodgson,hodgson@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-12-07 22:33:03,2022-12-07 22:33:09,,1,0%,, -25,3725,Doug Crawshay,crawshay@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-12-07 20:13:58,2022-12-07 20:14:04,2022-12-07 20:40:21,1,100%,Amyris Code of Business Conduct and Ethics,2022-12-07 20:40:21 -26,5063,Manuel Sousa,manuel.sousa@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-12-07 19:00:19,2022-12-07 19:00:27,2022-12-07 23:06:51,1,100%,Amyris Code of Business Conduct and Ethics,2022-12-07 23:06:51 -27,3743,Thomas Miller,tmiller@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-12-07 16:21:00,2022-12-07 16:21:12,2022-12-07 16:37:39,1,100%,Amyris Code of Business Conduct and Ethics,2022-12-07 16:37:39 -28,3794,Jack Craig,craig@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-12-07 13:44:37,2022-12-07 13:44:44,2022-12-07 15:32:07,1,100%,Amyris Code of Business Conduct and Ethics,2022-12-07 15:32:07 -29,2899,Ana Lucia Oliveira,ucp-aloliveira@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-12-07 13:08:10,2022-12-07 13:08:26,2022-12-09 17:50:31,1,100%,Amyris Code of Business Conduct and Ethics,2022-12-09 17:50:31 -30,4044,Mustapha Modaffar,modaffar@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-12-07 11:18:03,2022-12-07 11:20:37,2022-12-07 11:46:10,1,100%,Amyris Code of Business Conduct and Ethics,2022-12-07 11:46:10 -31,5138,Geoffrey Genesky,geoffrey.genesky@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-12-07 00:12:34,2022-12-07 00:12:54,2022-12-13 19:43:00,1,100%,Amyris Code of Business Conduct and Ethics,2022-12-13 19:43:00 -32,5039,Willian Betiol,willian.betiol@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-12-06 22:14:58,2022-12-06 22:15:22,,1,0%,, -33,3637,Débora Manuela Pinto,dpinto@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-12-06 17:54:58,2022-12-06 17:55:04,2022-12-06 19:59:35,1,100%,Amyris Code of Business Conduct and Ethics,2022-12-06 19:59:35 -34,2905,Ana Raquel Madureira,ucp-armadureira@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-12-06 16:05:27,2022-12-06 16:05:59,2022-12-21 16:14:24,1,100%,Amyris Code of Business Conduct and Ethics,2022-12-21 16:14:24 -35,3750,Carl Ross-Walker,ross-walker@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-12-06 15:41:22,2022-12-06 15:41:30,2022-12-06 15:59:53,1,100%,Amyris Code of Business Conduct and Ethics,2022-12-06 15:59:53 -36,3729,Chris Smith,chrissmith@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-12-06 14:53:55,2022-12-06 14:55:07,2022-12-06 18:33:15,1,100%,Amyris Code of Business Conduct and Ethics,2022-12-06 18:33:15 -37,3746,Jon Ward,jward@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-12-06 11:49:34,2022-12-06 11:49:42,2022-12-06 14:59:35,1,100%,Amyris Code of Business Conduct and Ethics,2022-12-06 14:59:35 -38,4839,Paulo Felippe Pinheiro,paulo.pinheiro@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-12-06 11:26:27,2022-12-06 11:26:36,2022-12-06 13:30:48,1,100%,Amyris Code of Business Conduct and Ethics,2022-12-06 13:30:48 -39,3733,Jessica Smith,jessicasmith@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-12-06 11:02:34,2022-12-06 11:02:38,2022-12-08 17:47:13,1,100%,Amyris Code of Business Conduct and Ethics,2022-12-08 17:47:13 -40,3738,Philip Bielby,bielby@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-12-06 10:57:10,,,1,0%,, -41,3742,Christian Lapidge,lapidge@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-12-06 10:35:24,2022-12-06 10:35:31,2022-12-08 11:43:06,1,100%,Amyris Code of Business Conduct and Ethics,2022-12-08 11:43:06 -42,3740,Marco Fabiani,fabiani@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-12-06 10:21:34,2022-12-06 10:21:39,2022-12-06 11:50:39,1,100%,Amyris Code of Business Conduct and Ethics,2022-12-06 11:50:39 -43,4845,Brittany Mohr,mohr@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-12-06 10:15:44,2022-12-06 10:45:22,2022-12-06 11:44:27,1,100%,Amyris Code of Business Conduct and Ethics,2022-12-06 11:44:27 -44,4043,Radu Cristea,cristea@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-12-06 10:15:02,2022-12-06 10:15:34,2022-12-06 12:25:13,1,100%,Amyris Code of Business Conduct and Ethics,2022-12-06 12:25:13 -45,3022,Catarina Lima,clima@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-12-06 09:05:16,2022-12-06 09:05:22,2022-12-06 09:44:25,1,100%,Amyris Code of Business Conduct and Ethics,2022-12-06 09:44:25 -46,4920,Tizania Alejandro,alejandro@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-12-05 23:03:27,,,1,0%,, -47,4388,Diana Gil,gil@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-12-05 16:21:57,2022-12-05 16:28:56,2022-12-05 17:12:12,1,100%,Amyris Code of Business Conduct and Ethics,2022-12-05 17:12:12 -48,4441,Otavio Serra,oserra@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-12-05 15:51:54,2022-12-05 15:52:01,,1,0%,, -49,3109,Ana Linhares,alinhares@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-12-05 13:27:28,2022-12-05 13:27:40,2022-12-06 17:42:57,1,100%,Amyris Code of Business Conduct and Ethics,2022-12-06 17:42:57 -50,4971,Luiz Ricardo Machado,lmachado@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-12-02 04:49:00,2022-12-02 04:49:14,2022-12-10 15:22:54,1,100%,Amyris Code of Business Conduct and Ethics,2022-12-10 15:22:54 -51,4889,Ruben Ulloa,ulloa@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-12-02 00:33:12,2022-12-02 00:33:17,2022-12-05 19:02:27,1,100%,Amyris Code of Business Conduct and Ethics,2022-12-05 19:02:27 -52,5047,Marcio Gomes,marcio.gomes@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-12-01 16:47:04,2022-12-01 16:47:26,2022-12-01 19:52:52,1,100%,Amyris Code of Business Conduct and Ethics,2022-12-01 19:52:52 -53,4906,Tomás Martinho,tomas.martinho@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-11-30 22:28:10,2022-11-30 22:28:17,2022-12-01 01:12:00,1,100%,Amyris Code of Business Conduct and Ethics,2022-12-01 01:12:00 -54,4651,Monika Yadav,yadav@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-11-30 19:10:55,2022-11-30 19:11:09,,1,0%,, -55,2674,Joana Durao,durao@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-11-30 17:14:12,2022-11-30 17:14:20,2022-12-05 16:37:53,1,100%,Amyris Code of Business Conduct and Ethics,2022-12-05 16:37:53 -56,2932,Pedro Sousa,ucp-psousa@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-11-30 16:00:45,2022-11-30 16:00:57,2022-11-30 16:59:40,1,100%,Amyris Code of Business Conduct and Ethics,2022-11-30 16:59:40 -57,2904,Ana Paula Carvalho,ucp-apcarvalho@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-11-30 14:55:14,2022-11-30 14:55:23,2022-11-30 19:11:53,1,100%,Amyris Code of Business Conduct and Ethics,2022-11-30 19:11:53 -58,2914,Francisca Teixeira,ucp-fteixeira@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-11-29 16:53:01,2022-11-29 16:53:10,2022-11-29 17:31:17,1,100%,Amyris Code of Business Conduct and Ethics,2022-11-29 17:31:17 -59,5108,Michelle Madler,michelle.madler@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-11-29 16:29:09,2022-11-29 16:33:52,2022-11-29 21:26:05,1,100%,Amyris Code of Business Conduct and Ethics,2022-11-29 21:26:05 -60,4905,Marco Agostoni,agostoni@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-11-28 22:27:31,2022-11-28 22:27:35,2022-11-28 23:49:19,1,100%,Amyris Code of Business Conduct and Ethics,2022-11-28 23:49:19 -61,1414,Diva Chan,dchan@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-11-28 20:41:28,2022-11-28 20:41:32,2022-11-28 21:25:57,1,100%,Amyris Code of Business Conduct and Ethics,2022-11-28 21:25:57 -62,2924,Maria Manuela Amorim,ucp-mmamorim@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-11-28 14:11:25,2022-11-28 14:11:46,2022-11-29 14:22:57,1,100%,Amyris Code of Business Conduct and Ethics,2022-11-29 14:22:57 -63,4348,Ashwani Kumar,akumar@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-11-28 13:26:50,2022-11-28 13:26:59,2022-11-30 10:11:54,1,100%,Amyris Code of Business Conduct and Ethics,2022-11-30 10:11:54 -64,2919,Joao Fernandes,jfernandes@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-11-28 10:06:25,2022-11-28 10:06:33,2022-11-28 14:17:18,1,100%,Amyris Code of Business Conduct and Ethics,2022-11-28 14:17:18 -65,5115,Ellen Santos,ellen.santos@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-11-28 05:07:24,2022-11-28 15:36:06,,1,0%,, -66,4490,Eder Silva,emsilva@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-11-27 23:52:50,2022-11-27 23:53:00,2022-11-29 12:53:02,1,100%,Amyris Code of Business Conduct and Ethics,2022-11-29 12:53:02 -67,2898,Ana Pintado,ucp-apintado@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-11-27 22:02:46,2022-11-27 22:02:55,2022-11-29 18:47:20,1,100%,Amyris Code of Business Conduct and Ethics,2022-11-29 18:47:20 -68,5032,Silvanete Lara,silvanete.lara@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-11-27 05:26:44,2022-11-27 05:27:02,,1,0%,, -69,2921,Ligia Pimentel,ucp-lpimentel@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-11-26 16:48:24,2022-11-26 16:48:43,2022-11-26 19:19:16,1,100%,Amyris Code of Business Conduct and Ethics,2022-11-26 19:19:16 -70,4911,Matheus Fernandes,matheus.queiroz@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-11-25 16:05:49,2022-11-25 16:05:58,2022-11-25 19:34:47,1,100%,Amyris Code of Business Conduct and Ethics,2022-11-25 19:34:47 -71,2923,Maria Joao Carvalho,ucp-mjcarvalho@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-11-25 10:54:34,2022-11-25 10:54:46,2022-11-25 14:14:35,1,100%,Amyris Code of Business Conduct and Ethics,2022-11-25 14:14:35 -72,2908,Carla Calix,ucp-ccalix@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-11-24 15:33:02,2022-11-24 15:33:09,2022-12-06 15:03:45,1,100%,Amyris Code of Business Conduct and Ethics,2022-12-06 15:03:45 -73,2911,Catarina Oliveira,ucp-coliveira@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-11-24 13:33:25,2022-11-24 13:33:31,2022-11-25 14:26:07,1,100%,Amyris Code of Business Conduct and Ethics,2022-11-25 14:26:07 -74,2916,Joana Costa,ucp-jcosta@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-11-24 12:50:13,2022-11-24 12:50:23,2022-11-24 15:28:33,1,100%,Amyris Code of Business Conduct and Ethics,2022-11-24 15:28:33 -75,3469,Ana Fontes,ucp-anafontes@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-11-23 16:58:31,2022-11-24 09:01:22,2022-11-24 11:45:54,1,100%,Amyris Code of Business Conduct and Ethics,2022-11-24 11:45:54 -76,4649,Gecelie Moreno,moreno@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-11-23 00:33:24,2022-11-23 00:33:28,2022-11-23 06:46:16,1,100%,Amyris Code of Business Conduct and Ethics,2022-11-23 06:46:16 -77,4672,Cynthia Tu,ctu@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-11-23 00:08:11,2022-11-23 00:08:23,,1,0%,, -78,4909,Seung Jung Kim,sjkim@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-11-22 20:43:22,2022-11-22 20:43:31,2022-11-30 03:51:17,1,100%,Amyris Code of Business Conduct and Ethics,2022-11-30 03:51:17 -79,2960,Susana Vidigal,ucp-vidigal@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-11-22 14:38:30,2022-11-22 14:38:41,,1,0%,, -80,5102,Wendy Freedman,wendy.freedman@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-11-22 00:37:16,2022-11-22 00:37:21,2022-11-22 20:12:28,1,100%,Amyris Code of Business Conduct and Ethics,2022-11-22 20:12:28 -81,4847,Miguel Rodrigues,miguelrodrigues@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-11-21 15:54:12,2022-11-21 15:54:19,2022-11-22 16:28:15,1,100%,Amyris Code of Business Conduct and Ethics,2022-11-22 16:28:15 -82,2925,Mariana Veiga,ucp-mveiga@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-11-21 15:29:19,2022-11-21 15:37:37,2022-11-22 14:24:51,1,100%,Amyris Code of Business Conduct and Ethics,2022-11-22 14:24:51 -83,3138,Maria Adelia Mendes,mmendes@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-11-21 15:27:08,2022-11-21 15:27:14,,1,0%,, -84,2683,Filipa Antunes,antunes@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-11-21 13:48:32,2022-11-21 13:48:45,2022-11-21 16:18:25,1,100%,Amyris Code of Business Conduct and Ethics,2022-11-21 16:18:25 -85,2930,Patricia Costa,ucp-pcosta@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-11-21 13:04:22,2022-11-21 13:04:29,2022-11-24 14:01:44,1,100%,Amyris Code of Business Conduct and Ethics,2022-11-24 14:01:44 -86,4576,Macy Hung,mhung@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-11-20 17:01:47,2022-11-20 17:01:53,2022-11-20 19:06:42,1,100%,Amyris Code of Business Conduct and Ethics,2022-11-20 19:06:42 -87,4893,Lucas Cury,lcury@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-11-19 11:42:19,2022-11-19 11:42:30,,1,0%,, -88,3015,Joshua Willems,willems@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-11-18 15:42:26,2022-11-18 15:42:32,2022-11-18 18:03:24,1,100%,Amyris Code of Business Conduct and Ethics,2022-11-18 18:03:24 -89,4716,Duarte Drumond,duarte.drumond@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-11-18 15:34:24,2022-11-18 15:35:02,2022-11-28 12:05:13,1,100%,Amyris Code of Business Conduct and Ethics,2022-11-28 12:05:13 -90,2667,Hugo Giesteira,giesteira@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-11-18 14:58:42,2022-11-18 14:58:52,2022-11-21 14:34:39,1,100%,Amyris Code of Business Conduct and Ethics,2022-11-21 14:34:39 -91,5064,Luís Miguel Mirandela,luis.mirandela@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-11-18 14:37:13,2022-11-18 14:37:19,,1,0%,, -92,4375,Joana Alves,joanaalves@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-11-18 13:56:17,2022-11-18 21:13:36,2022-11-18 23:23:28,1,100%,Amyris Code of Business Conduct and Ethics,2022-11-18 23:23:28 -93,5041,Anderson Paschoalinotto,anderson.paschoalinotto@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-11-16 18:17:53,2022-11-16 18:18:17,2022-11-16 22:17:43,1,100%,Amyris Code of Business Conduct and Ethics,2022-11-16 22:17:43 -94,5021,Tulio Silva,tulio.silva@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-11-16 12:07:19,2022-11-17 16:43:19,,1,0%,, -95,5075,Brittany Washington,brittany.washington@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-11-15 22:28:57,2022-11-15 22:45:57,2022-11-15 22:45:57,1,100%,Amyris Code of Business Conduct and Ethics,2022-11-15 22:45:57 -96,5077,Cynthia Gonzales,cynthia.gonzales@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-11-15 19:20:39,,,1,0%,, -97,4697,Wafaa Alabsi,alabsi@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-11-13 05:37:39,2022-11-13 07:42:18,2022-11-13 07:42:18,1,100%,Amyris Code of Business Conduct and Ethics,2022-11-13 07:42:18 -98,4838,Wellington Silva,wellington.silva@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-11-10 11:00:19,2022-11-10 15:38:43,2022-11-10 15:38:43,1,100%,Amyris Code of Business Conduct and Ethics,2022-11-10 15:38:43 -99,5009,Monica Alcantara,alcantara@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-11-09 22:28:53,2022-11-10 20:46:47,2022-11-10 20:46:48,1,100%,Amyris Code of Business Conduct and Ethics,2022-11-10 20:46:48 -100,5067,Danielle Noonan,noonan@amyris.com,New York Managers Anti-Harassment Training,LIVE,2022-11-09 16:15:55,2022-11-09 16:20:24,2022-11-10 22:15:53,1,100%,Manager Acknowledgement,2022-11-10 22:15:53 -101,2441,Navneet Singh,sandhu@amyris.com,New York Managers Anti-Harassment Training,LIVE,2022-11-08 21:44:08,,,1,0%,, -102,4344,Nicole Gehrmann,gehrmann@amyris.com,New York Employees Anti-Harassment Training,LIVE,2022-11-08 19:09:37,,,1,0%,, -103,3388,Athanasios Sourlis,sourlis@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-11-07 21:06:16,2022-11-08 01:00:11,2022-11-08 01:00:11,1,100%,Amyris Code of Business Conduct and Ethics,2022-11-08 01:00:11 -104,5042,Eleno Viana,eleno.viano@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-11-07 10:21:17,2022-12-07 20:23:37,,1,0%,, -105,4837,Marcelo Mucare Filho,marcelo.filho@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-11-07 09:53:59,,,1,0%,, -106,4955,Wah-De Dennis,dennis@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-10-31 16:23:00,2022-10-31 23:33:57,2022-10-31 23:33:58,1,100%,Amyris Code of Business Conduct and Ethics,2022-10-31 23:33:58 -107,4833,Adriano Pinto,adriano.pinto@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-10-28 19:47:42,2022-10-31 21:47:28,2022-10-31 21:47:29,1,100%,Amyris Code of Business Conduct and Ethics,2022-10-31 21:47:29 -108,4843,George Cushen,cushen@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-10-26 09:44:20,2022-12-08 09:49:46,2022-12-09 01:17:27,1,100%,Amyris Code of Business Conduct and Ethics,2022-12-09 01:17:27 -109,2316,Paulo de Campos,pcampos@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-10-25 14:53:22,,,1,0%,, -110,4728,Andre Buratto,aburatto@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-10-23 12:01:53,2022-10-31 16:46:52,2022-10-31 16:46:52,1,100%,Amyris Code of Business Conduct and Ethics,2022-10-31 16:46:52 -111,3281,Germana Martinez,gmartinez@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-10-21 17:57:50,2022-10-21 20:23:24,2022-10-21 20:23:25,1,100%,Amyris Code of Business Conduct and Ethics,2022-10-21 20:23:25 -112,4713,Alexander Webb,webb@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-10-20 02:58:46,2022-10-20 03:23:06,2022-10-20 03:23:06,1,100%,Amyris Code of Business Conduct and Ethics,2022-10-20 03:23:06 -113,4851,Janelle Collins,jcollins@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-10-19 16:38:05,2022-10-19 16:39:28,2022-12-13 22:10:32,1,100%,Amyris Code of Business Conduct and Ethics,2022-12-13 22:10:32 -114,4342,Samantha Suggs,suggs@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-10-18 18:45:02,2022-10-19 22:19:56,2022-10-19 22:19:56,1,100%,Amyris Code of Business Conduct and Ethics,2022-10-19 22:19:56 -115,4194,Danielle Silva,dssilva@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-10-18 16:05:42,2022-10-18 16:06:25,,1,0%,, -116,4514,José Duarte,jduarte@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-10-18 14:49:30,2022-11-24 10:05:45,2022-11-24 11:40:21,1,100%,Amyris Code of Business Conduct and Ethics,2022-11-24 11:40:21 -117,4708,Tatiane Mello,tmello@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-10-18 13:41:27,2022-10-18 13:41:37,2022-11-22 18:54:05,1,100%,Amyris Code of Business Conduct and Ethics,2022-11-22 18:54:05 -118,4661,Thomas Silva,thsilva@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-10-18 11:34:30,2022-10-18 11:34:51,,1,0%,, -119,4811,Foley Huang,fhuang@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-10-17 23:09:47,2022-10-17 23:09:50,2022-10-18 15:38:34,1,100%,Amyris Code of Business Conduct and Ethics,2022-10-18 15:38:34 -120,4903,Kierston Shill,shill@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-10-17 21:09:29,2022-10-17 21:09:38,2022-10-18 21:54:33,1,100%,Amyris Code of Business Conduct and Ethics,2022-10-18 21:54:33 -121,4900,Sarah Oh,oh@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-10-14 14:10:32,2022-10-14 14:10:36,2022-10-14 15:54:07,1,100%,Amyris Code of Business Conduct and Ethics,2022-10-14 15:54:07 -122,4804,Darlei Sousa,dsousa@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-10-13 07:02:56,2022-10-13 07:03:05,,1,0%,, -123,4860,Elizabeth Lopez,elopez@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-10-13 02:39:23,2022-10-13 02:39:36,,1,0%,, -124,4904,Mark Hayes-Curry,hayes-curry@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-10-12 21:48:26,2022-10-12 21:48:30,2022-10-13 15:19:21,1,100%,Amyris Code of Business Conduct and Ethics,2022-10-13 15:19:21 -125,4619,Maria João Pereira,ucp-mariapereira@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-10-12 09:19:10,2022-10-12 09:19:29,2022-11-21 13:56:00,1,100%,Amyris Code of Business Conduct and Ethics,2022-11-21 13:56:00 -126,4715,Lauren Narcross,narcross@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-10-11 19:19:49,2022-10-11 19:19:54,2022-11-23 18:54:01,1,100%,Amyris Code of Business Conduct and Ethics,2022-11-23 18:54:01 -127,4738,Joao Crotti,jcrotti@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-10-09 18:31:46,2022-10-09 18:31:53,,1,0%,, -128,2307,Mariana Casanova,mcasanova@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-10-07 12:47:57,2022-10-07 12:48:17,,1,0%,, -129,4455,Zayd Kassem,kassem@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-10-06 17:49:46,2022-10-06 17:49:52,2022-11-23 22:47:26,1,100%,Amyris Code of Business Conduct and Ethics,2022-11-23 22:47:26 -130,4865,Dazree Ellis,dellis@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-10-04 18:47:11,2022-10-04 18:47:20,2022-10-04 19:38:53,1,100%,Amyris Code of Business Conduct and Ethics,2022-10-04 19:38:53 -131,4888,Kiana Navarre,navarre@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-10-04 18:33:19,2022-10-04 18:33:24,2022-10-04 22:33:34,1,100%,Amyris Code of Business Conduct and Ethics,2022-10-04 22:33:34 -132,4256,Ashlee Holyfield,aholyfield@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-10-04 18:31:29,2022-10-04 18:31:34,2022-10-04 19:45:04,1,100%,Amyris Code of Business Conduct and Ethics,2022-10-04 19:45:04 -133,4875,Kelsey Phillips,kelsey.phillips@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-10-04 13:43:58,2022-10-04 13:44:05,2022-10-04 15:08:02,1,100%,Amyris Code of Business Conduct and Ethics,2022-10-04 15:08:02 -134,4201,Dominike Milani,dmilani@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-10-03 16:13:35,2022-10-03 16:13:41,,1,0%,, -135,2939,Teresa Deuchande,ucp-tdeuchande@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-10-03 13:43:37,2022-10-03 13:44:53,,1,0%,, -136,3845,Karsten Kozempel,kozempel@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-10-03 07:32:47,2022-10-03 07:32:55,2022-10-03 12:55:49,1,100%,Amyris Code of Business Conduct and Ethics,2022-10-03 12:55:49 -137,4146,Joao Lanza,jlanza@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-09-29 15:45:18,2022-09-29 15:45:26,,1,0%,, -138,4861,Patricia Babischkin,babischkin@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-09-28 18:08:54,2022-09-28 18:09:00,2022-09-28 22:50:51,1,100%,Amyris Code of Business Conduct and Ethics,2022-09-28 22:50:51 -139,4695,Bruno Silva,bsilva@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-09-27 21:53:23,2022-11-30 21:32:49,2022-12-01 00:43:56,1,100%,Amyris Code of Business Conduct and Ethics,2022-12-01 00:43:56 -140,4471,Tegan Anderes,anderes@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-09-27 19:50:39,2022-09-27 19:50:50,2022-09-27 21:06:26,1,100%,Amyris Code of Business Conduct and Ethics,2022-09-27 21:06:26 -141,4863,Isabel Wang,isabel.wang@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-09-27 16:20:23,2022-09-27 16:20:29,2022-10-17 22:00:02,1,100%,Amyris Code of Business Conduct and Ethics,2022-10-17 22:00:02 -142,4828,Diego Andalecio,dandalecio@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-09-27 14:57:28,2022-09-27 14:57:36,2022-10-05 15:44:14,1,100%,Amyris Code of Business Conduct and Ethics,2022-10-05 15:44:14 -143,4816,Su Jin Lee,amylee@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-09-26 23:03:11,2022-09-26 23:03:18,2022-09-27 19:13:10,1,100%,Amyris Code of Business Conduct and Ethics,2022-09-27 19:13:10 -144,4871,Randal Wong,rwong@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-09-26 23:02:57,2022-09-26 23:03:05,2022-09-27 00:03:50,1,100%,Amyris Code of Business Conduct and Ethics,2022-09-27 00:03:50 -145,4112,Rafael Silva,rmsilva@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-09-26 22:52:14,2022-09-26 22:52:32,2022-10-23 14:56:04,1,100%,Amyris Code of Business Conduct and Ethics,2022-10-23 14:56:04 -146,4868,Douglas Sanders,dsanders@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-09-26 20:50:02,2022-09-26 20:50:09,2022-09-27 18:27:35,1,100%,Amyris Code of Business Conduct and Ethics,2022-09-27 18:27:35 -147,4872,Mark Cochran,cochran@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-09-26 19:31:28,2022-09-26 19:31:36,2022-09-26 21:07:38,1,100%,Amyris Code of Business Conduct and Ethics,2022-09-26 21:07:38 -148,2287,Sara Adame,adame@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-09-26 17:30:43,2022-09-26 17:31:02,,1,0%,, -149,3228,Melissa Shteyn,shteyn@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-09-26 04:41:52,2022-09-26 04:41:58,,1,0%,, -150,4170,Fernando Costa,frcosta@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-09-25 12:13:19,2022-09-25 12:13:29,2022-10-17 12:38:20,1,100%,Amyris Code of Business Conduct and Ethics,2022-10-17 12:38:20 -151,4170,Fernando Costa,frcosta@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-09-25 12:13:19,2022-10-17 12:39:16,,2,0%,, -152,4798,Leonie Wise,lwise@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-09-23 15:58:14,2022-09-23 15:58:19,,1,0%,, -153,4707,Ana Paula Saboia,asaboia@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-09-23 12:02:17,2022-09-23 12:02:27,2022-12-20 17:24:35,1,100%,Amyris Code of Business Conduct and Ethics,2022-12-20 17:24:35 -154,3910,Rachel Guzman,guzman@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-09-21 17:11:37,,,1,0%,, -155,4408,Jennifer Hui,jhui@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-09-20 23:14:53,2022-09-20 23:14:58,2022-09-21 00:29:10,1,100%,Amyris Code of Business Conduct and Ethics,2022-09-21 00:29:10 -156,1652,Wilson Chau,chau@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-09-20 20:16:12,2022-09-20 20:16:17,2022-09-22 23:14:39,1,100%,Amyris Code of Business Conduct and Ethics,2022-09-22 23:14:39 -157,4564,Maria Mesen Mora,amesenmora@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-09-20 19:21:29,2022-09-20 19:21:32,2022-09-20 19:43:19,1,100%,Amyris Code of Business Conduct and Ethics,2022-09-20 19:43:19 -158,4125,Orlando Bauman,obauman@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-09-20 19:21:08,2022-09-21 17:45:13,2022-11-16 05:27:21,1,100%,Amyris Code of Business Conduct and Ethics,2022-11-16 05:27:21 -159,4740,Candra Smith,casmith@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-09-16 04:26:41,2022-09-16 04:26:46,2022-09-16 05:09:16,1,100%,Amyris Code of Business Conduct and Ethics,2022-09-16 05:09:16 -160,4805,Neusa Teixeira,teixeira@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-09-13 10:04:36,2022-09-13 10:05:02,2022-09-13 15:06:08,1,100%,Amyris Code of Business Conduct and Ethics,2022-09-13 15:06:08 -161,4581,Linda Chiu,chiu@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-09-09 19:17:53,2022-09-09 19:18:55,,1,0%,, -162,4580,Hathaiporn Pattarasettagarn,pattarasettagarn@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-09-07 22:07:25,2022-09-07 22:07:33,2022-09-07 23:05:37,1,100%,Amyris Code of Business Conduct and Ethics,2022-09-07 23:05:37 -163,4782,Jocelyn Blumenthal,blumenthal@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-09-06 20:24:00,2022-09-06 20:24:11,2022-09-07 01:09:43,1,100%,Amyris Code of Business Conduct and Ethics,2022-09-07 01:09:43 -164,4793,Alexis Bennie,bennie@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-09-06 18:43:05,2022-09-06 18:43:18,2022-09-06 20:22:59,1,100%,Amyris Code of Business Conduct and Ethics,2022-09-06 20:22:59 -165,4516,Isabella Goncalves,ibgoncalves@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-09-02 20:30:52,2022-09-02 20:30:57,,1,0%,, -166,4493,Luara Moura,lmoura@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-09-01 12:49:36,2022-09-01 12:49:45,2022-09-01 14:16:26,1,100%,Amyris Code of Business Conduct and Ethics,2022-09-01 14:16:26 -167,4492,Bruno Oliveira,brunooliveira@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-09-01 11:22:12,2022-09-01 11:22:18,2022-09-01 17:30:27,1,100%,Amyris Code of Business Conduct and Ethics,2022-09-01 17:30:27 -168,4535,Jasmine Ou,jou@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-08-31 22:54:05,2022-08-31 22:54:23,2022-09-06 19:43:48,1,100%,Amyris Code of Business Conduct and Ethics,2022-09-06 19:43:48 -169,4546,Elyse Marrocco,marrocco@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-08-31 21:10:47,2022-09-01 17:31:07,2022-09-01 17:51:24,1,100%,Amyris Code of Business Conduct and Ethics,2022-09-01 17:51:24 -170,4771,Fernanda Ramalho,framalho@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-08-31 18:57:13,2022-08-31 18:57:27,2022-09-02 00:56:37,1,100%,Amyris Code of Business Conduct and Ethics,2022-09-02 00:56:37 -171,4383,Jamie Glickman,glickman@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-08-31 14:48:04,2022-08-31 14:48:08,,1,0%,, -172,4122,Marcio Silverio,msilverio@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-08-31 10:37:54,2022-08-31 10:38:03,2022-08-31 12:41:13,1,100%,Amyris Code of Business Conduct and Ethics,2022-08-31 12:41:13 -173,3897,Iana Vinokurov,vinokurov@amyris.com,New York Managers Anti-Harassment Training,LIVE,2022-08-30 19:18:09,2022-08-30 19:18:15,,1,11%,Introduction,2022-08-30 19:20:39 -174,3291,Luiz Cavagioni Junior,lcavagioni@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-08-29 17:20:58,2022-08-29 17:21:05,,1,0%,, -175,3790,Christine Scafuro,scafuro@amyris.com,New York Managers Anti-Harassment Training,LIVE,2022-08-27 11:05:33,2022-08-27 11:05:39,,1,11%,Introduction,2022-08-27 11:07:24 -176,4638,Ana Margarida Maia,maia@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-08-24 11:02:33,2022-08-24 11:02:40,2022-08-24 15:20:02,1,100%,Amyris Code of Business Conduct and Ethics,2022-08-24 15:20:02 -177,4760,Danny Prine,prine@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-08-23 17:59:03,2022-08-23 17:59:09,2022-08-23 20:04:21,1,100%,Amyris Code of Business Conduct and Ethics,2022-08-23 20:04:21 -178,2998,Jessica Ibarra,ibarra@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-08-19 22:47:59,2022-08-19 22:48:06,2022-08-23 22:13:55,1,100%,Amyris Code of Business Conduct and Ethics,2022-08-23 22:13:55 -179,4719,Aaron Landucci,landucci@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-08-19 15:13:58,2022-08-19 15:14:02,2022-08-19 17:46:15,1,100%,Amyris Code of Business Conduct and Ethics,2022-08-19 17:46:15 -180,4725,Enoye Uwa,uwa@amyris.com,New York Managers Anti-Harassment Training,LIVE,2022-08-19 13:50:46,2022-08-19 13:50:55,2022-08-22 13:27:23,1,100%,Manager Acknowledgement,2022-08-22 13:27:23 -181,4621,Marcio Costa,macosta@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-08-19 00:28:50,2022-08-19 00:29:19,2022-08-21 23:18:36,1,100%,Amyris Code of Business Conduct and Ethics,2022-08-21 23:18:36 -182,4464,Yusu Chen,yusuchen@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-08-17 17:04:49,2022-08-17 17:04:54,2022-08-17 17:30:39,1,100%,Amyris Code of Business Conduct and Ethics,2022-08-17 17:30:39 -183,2934,Poliana Silva,ucp-psilva@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-08-17 15:48:44,2022-08-17 15:48:51,2022-10-03 11:50:03,1,100%,Amyris Code of Business Conduct and Ethics,2022-10-03 11:50:03 -184,4725,Enoye Uwa,uwa@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-08-17 00:29:37,2022-08-17 00:29:46,2022-08-19 16:24:57,1,100%,Amyris Code of Business Conduct and Ethics,2022-08-19 16:24:57 -185,4720,David Ward Jr.,dward@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-08-16 15:42:40,2022-08-16 15:43:16,2022-08-17 12:10:34,1,100%,Amyris Code of Business Conduct and Ethics,2022-08-17 12:10:34 -186,3751,Rebecca Charman,charman@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-08-16 09:09:40,2022-08-16 09:09:45,2022-08-16 09:52:35,1,100%,Amyris Code of Business Conduct and Ethics,2022-08-16 09:52:35 -187,4440,Andrew Silva,andrewsilva@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-08-15 19:06:03,2022-08-15 19:06:08,2022-08-15 21:07:32,1,100%,Amyris Code of Business Conduct and Ethics,2022-08-15 21:07:32 -188,4678,Lovedeep Kaur,lkaur@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-08-15 18:41:29,2022-08-15 18:42:02,2022-08-15 23:33:06,1,100%,Amyris Code of Business Conduct and Ethics,2022-08-15 23:33:06 -189,4633,Permanan Khusial,khusial@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-08-12 15:13:21,2022-08-12 15:13:31,2022-08-12 21:31:35,1,100%,Amyris Code of Business Conduct and Ethics,2022-08-12 21:31:35 -190,2931,Paula Costa,ucp-pacosta@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-08-12 14:25:58,2022-08-12 14:26:08,2022-11-22 10:00:49,1,100%,Amyris Code of Business Conduct and Ethics,2022-11-22 10:00:49 -191,4673,David Stoeckle,stoeckle@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-08-11 20:17:01,2022-08-11 20:17:07,2022-08-11 21:41:42,1,100%,Amyris Code of Business Conduct and Ethics,2022-08-11 21:41:42 -192,4680,Deanna Enos,enos@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-08-09 22:03:50,2022-08-09 22:04:07,2022-08-09 23:26:16,1,100%,Amyris Code of Business Conduct and Ethics,2022-08-09 23:26:16 -193,4340,Beatriz Bruhns,bbruhns@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-08-09 21:14:29,2022-08-09 21:14:40,2022-08-11 13:15:52,1,100%,Amyris Code of Business Conduct and Ethics,2022-08-11 13:15:52 -194,4544,Stephanie Piacente,piacente@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-08-09 19:35:41,2022-08-09 19:35:46,2022-12-06 22:06:09,1,100%,Amyris Code of Business Conduct and Ethics,2022-12-06 22:06:09 -195,4703,Sian Luke,luke@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-08-09 09:40:13,2022-08-09 09:40:17,2022-08-09 11:13:37,1,100%,Amyris Code of Business Conduct and Ethics,2022-08-09 11:13:37 -196,4410,Phillip Nguyen,pnguyen@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-08-08 17:12:29,2022-08-08 17:12:34,2022-08-08 19:36:41,1,100%,Amyris Code of Business Conduct and Ethics,2022-08-08 19:36:41 -197,4147,Aleli Medina,amedina@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-08-08 14:13:56,2022-08-08 14:14:03,,1,0%,, -198,4652,Shuo-Fu Yuan,jyuan@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-08-08 03:52:26,2022-08-08 03:52:35,2022-08-19 23:13:34,1,100%,Amyris Code of Business Conduct and Ethics,2022-08-19 23:13:34 -199,4620,Alan Arruda,aarruda@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-08-05 19:04:34,2022-08-05 19:05:02,2022-08-09 11:13:32,1,100%,Amyris Code of Business Conduct and Ethics,2022-08-09 11:13:32 -200,4478,Sanimar Kaur,kaur@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-08-04 16:43:00,2022-08-04 16:43:05,,1,0%,, -201,4570,Joana Fangueiro,ucp-joanafangueiro@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-08-04 12:51:34,2022-08-04 12:52:04,2022-08-18 14:52:45,1,100%,Amyris Code of Business Conduct and Ethics,2022-08-18 14:52:45 -202,4094,Jaime Bandres,bandres@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-08-04 12:32:42,2022-08-04 12:32:53,2022-08-05 16:15:57,1,100%,Amyris Code of Business Conduct and Ethics,2022-08-05 16:15:57 -203,4653,Subasthika Thangadurai,thangadurai@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-08-03 20:01:50,2022-08-03 20:02:27,2022-08-04 21:19:32,1,100%,Amyris Code of Business Conduct and Ethics,2022-08-04 21:19:32 -204,4666,Vianca Dimaranan,dimaranan@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-08-03 16:24:06,2022-08-03 16:24:11,2022-08-03 17:10:52,1,100%,Amyris Code of Business Conduct and Ethics,2022-08-03 17:10:52 -205,4667,Glorys Hidalgo-Acosta,hidalgo@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-08-03 15:13:49,2022-08-03 15:29:19,,1,0%,, -206,1458,Adam Navidi,navidi@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-08-02 18:40:46,2022-08-02 18:40:50,2022-11-15 00:19:51,1,100%,Amyris Code of Business Conduct and Ethics,2022-11-15 00:19:51 -207,4466,Divya Ramchandran,ramchandran@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-08-01 23:34:42,2022-08-01 23:34:47,2022-08-02 21:57:54,1,100%,Amyris Code of Business Conduct and Ethics,2022-08-02 21:57:54 -208,4669,Kara Cave,cave@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-08-01 20:27:38,2022-08-01 21:15:42,2022-08-02 15:16:14,1,100%,Amyris Code of Business Conduct and Ethics,2022-08-02 15:16:14 -209,1702,Juanita Allison,allison@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-08-01 20:19:23,2022-08-01 20:19:30,2022-08-01 22:29:16,1,100%,Amyris Code of Business Conduct and Ethics,2022-08-01 22:29:16 -210,2996,Marta Gomes,martagomes@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-08-01 10:39:55,2022-08-01 10:40:06,2022-11-14 21:38:26,1,100%,Amyris Code of Business Conduct and Ethics,2022-11-14 21:38:26 -211,4508,Sandro Sevilhano,ssevilhano@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-07-31 19:42:22,,,1,0%,, -212,4346,Adilson Lopes,aslopes@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-07-31 11:11:08,2022-07-31 11:11:21,2022-09-11 11:57:25,1,100%,Amyris Code of Business Conduct and Ethics,2022-09-11 11:57:25 -213,4369,Leonardo Costa,lcosta@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-07-29 18:53:12,2022-07-29 18:53:20,2022-08-14 16:56:33,1,100%,Amyris Code of Business Conduct and Ethics,2022-08-14 16:56:33 -214,4467,Chandini Dialani,dialani@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-07-29 16:22:28,2022-07-29 16:22:32,2022-07-29 17:32:58,1,100%,Amyris Code of Business Conduct and Ethics,2022-07-29 17:32:58 -215,4505,Almir Santos,apsantos@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-07-29 11:23:53,2022-07-29 11:24:03,2022-07-30 16:21:42,1,100%,Amyris Code of Business Conduct and Ethics,2022-07-30 16:21:42 -216,4631,Paulina Salgado Marshall,psalgado@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-07-28 21:43:39,2022-07-28 21:43:57,2022-08-02 23:14:31,1,100%,Amyris Code of Business Conduct and Ethics,2022-08-02 23:14:31 -217,4506,Matheus Godoy,mgodoy@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-07-28 00:49:55,2022-07-28 22:23:12,2022-08-07 19:59:27,2,100%,Amyris Code of Business Conduct and Ethics,2022-08-07 19:59:27 -218,4506,Matheus Godoy,mgodoy@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-07-28 00:49:55,2022-07-28 00:50:09,2022-07-28 22:22:51,1,100%,Amyris Code of Business Conduct and Ethics,2022-07-28 22:22:51 -219,4665,Bhargav Pandya,pandya@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-07-26 20:57:28,2022-07-26 20:57:33,2022-07-26 21:27:34,1,100%,Amyris Code of Business Conduct and Ethics,2022-07-26 21:27:34 -220,4655,Steven Yang,stevenyang@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-07-26 18:24:47,2022-07-26 18:24:57,2022-07-26 20:22:41,1,100%,Amyris Code of Business Conduct and Ethics,2022-07-26 20:22:41 -221,4372,Rafael Furlan,rfurlan@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-07-26 17:46:06,2022-07-26 17:46:53,2022-07-27 11:29:54,1,100%,Amyris Code of Business Conduct and Ethics,2022-07-27 11:29:54 -222,4510,William Toledano,wtoledano@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-07-26 17:05:22,2022-07-26 17:05:31,2022-07-26 18:58:07,1,100%,Amyris Code of Business Conduct and Ethics,2022-07-26 18:58:07 -223,4374,Samuel Moral,smoral@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-07-26 15:14:42,2022-07-26 15:14:51,2022-07-27 10:29:23,1,100%,Amyris Code of Business Conduct and Ethics,2022-07-27 10:29:23 -224,4373,Rodrigo Baum,rbaum@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-07-25 17:07:12,2022-07-26 17:38:26,,2,0%,, -225,4373,Rodrigo Baum,rbaum@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-07-25 17:07:12,2022-07-25 17:08:51,2022-07-26 17:37:29,1,100%,Amyris Code of Business Conduct and Ethics,2022-07-26 17:37:29 -226,4509,Thiago Pisano,tpisano@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-07-22 02:56:45,2022-07-22 02:56:56,,1,0%,, -227,3701,Javier Garcia,jgarcia@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-07-20 16:20:32,2022-07-20 16:20:44,2022-11-14 19:55:31,1,100%,Amyris Code of Business Conduct and Ethics,2022-11-14 19:55:31 -228,4447,Dione Jose Silva,dmsilva@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-07-19 21:57:27,2022-07-19 21:57:35,2022-08-04 15:21:56,1,100%,Amyris Code of Business Conduct and Ethics,2022-08-04 15:21:56 -229,4636,Claire DiYenno,diyenno@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-07-19 17:23:40,2022-07-19 17:23:46,2022-07-20 15:34:56,1,100%,Amyris Code of Business Conduct and Ethics,2022-07-20 15:34:56 -230,4636,Claire DiYenno,diyenno@amyris.com,New York Managers Anti-Harassment Training,LIVE,2022-07-19 15:03:43,2022-07-19 15:04:01,2022-07-19 17:22:21,1,100%,Manager Acknowledgement,2022-07-19 17:22:21 -231,2675,Vitor Silva,vsilva@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-07-19 10:54:25,2022-07-19 10:54:33,,1,0%,, -232,4632,Walter Abbamonte,abbamonte@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-07-18 23:37:28,2022-07-18 23:37:33,2022-07-19 18:53:09,1,100%,Amyris Code of Business Conduct and Ethics,2022-07-19 18:53:09 -233,4370,Luan Correa,lcorrea@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-07-16 18:49:05,2022-07-16 18:49:15,,1,0%,, -234,4519,Samantha Rosa,srosa@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-07-15 17:25:13,2022-07-15 17:25:22,,1,0%,, -235,4609,Chau Doan,doan@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-07-14 22:02:50,2022-07-14 22:02:56,2022-08-02 17:27:10,1,100%,Amyris Code of Business Conduct and Ethics,2022-08-02 17:27:10 -236,4320,Alexandria Lee-Goldman,lee-goldman@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-07-14 20:06:22,2022-07-14 20:06:32,2022-07-14 21:01:56,1,100%,Amyris Code of Business Conduct and Ethics,2022-07-14 21:01:56 -237,4446,Carlos Eduardo Marchini,cmarchini@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-07-14 17:15:01,2022-12-05 21:33:59,2022-12-05 22:23:21,1,100%,Amyris Code of Business Conduct and Ethics,2022-12-05 22:23:21 -238,4456,Aimee Sprenger,asprenger@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-07-14 16:29:02,2022-07-14 16:29:14,2022-07-16 18:32:21,1,100%,Amyris Code of Business Conduct and Ethics,2022-07-16 18:32:21 -239,4565,Israel Junior,ijunior@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-07-12 20:54:55,2022-07-12 20:55:01,2022-07-12 22:17:01,1,100%,Amyris Code of Business Conduct and Ethics,2022-07-12 22:17:01 -240,4616,Marisa Andrada,andrada@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-07-12 14:27:03,2022-07-12 14:27:26,2022-07-25 19:40:32,1,100%,Amyris Code of Business Conduct and Ethics,2022-07-25 19:40:32 -241,4502,Carlos Generick,cgenerick@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-07-11 22:37:56,2022-07-11 22:38:05,2022-07-12 00:37:21,1,100%,Amyris Code of Business Conduct and Ethics,2022-07-12 00:37:21 -242,4640,Michael Shamsid-deen,mshamsid-deen@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-07-11 22:13:24,2022-07-11 22:13:31,2022-07-11 22:38:16,1,100%,Amyris Code of Business Conduct and Ethics,2022-07-11 22:38:16 -243,4569,Eva Graça,eva.martins@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-07-11 15:25:46,2022-07-15 09:00:10,,2,0%,, -244,4569,Eva Graça,eva.martins@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-07-11 15:25:46,2022-07-11 15:25:58,2022-07-15 08:59:02,1,100%,Amyris Code of Business Conduct and Ethics,2022-07-15 08:59:02 -245,4083,Emilio Filho,efilho@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-07-08 19:49:56,2022-07-08 19:50:06,,1,0%,, -246,4503,Djone Silva,dhsilva@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-07-08 00:42:08,2022-07-08 00:42:37,2022-07-25 02:32:46,1,100%,Amyris Code of Business Conduct and Ethics,2022-07-25 02:32:46 -247,4289,Thiago Goncalves,tgoncalves@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-07-07 20:43:40,2022-07-07 20:44:04,,1,0%,, -248,4353,Prerana Malwadkar,malwadkar@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-07-05 19:46:21,2022-07-05 19:46:28,2022-07-06 22:08:19,1,100%,Amyris Code of Business Conduct and Ethics,2022-07-06 22:08:19 -249,4494,Guilherme Marques,gmarques@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-07-04 11:56:54,2022-07-04 11:57:05,2022-07-04 18:13:13,1,100%,Amyris Code of Business Conduct and Ethics,2022-07-04 18:13:13 -250,4211,Renato Lopes,rflopes@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-07-03 20:29:00,2022-07-07 19:39:49,2022-07-14 00:13:23,1,100%,Amyris Code of Business Conduct and Ethics,2022-07-14 00:13:23 -251,2752,Timothy Stowell,stowell@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-07-03 03:46:01,2022-07-03 03:46:09,2022-07-03 05:31:28,1,100%,Amyris Code of Business Conduct and Ethics,2022-07-03 05:31:28 -252,4152,Susan Handler,handler@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-07-02 15:06:22,2022-07-02 15:06:27,2022-07-02 15:54:29,1,100%,Amyris Code of Business Conduct and Ethics,2022-07-02 15:54:29 -253,4177,Fernando Costa,frcosta@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-06-30 21:57:35,2022-06-30 21:58:11,,1,0%,, -254,4536,Kimberley Mannikum,mannikum@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-06-30 18:16:31,2022-06-30 18:16:37,2022-07-05 18:23:24,1,100%,Amyris Code of Business Conduct and Ethics,2022-07-05 18:23:24 -255,4491,Carolina Freitas,cfreitas@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-06-30 18:06:40,2022-06-30 18:07:24,2022-06-30 20:10:14,1,100%,Amyris Code of Business Conduct and Ethics,2022-06-30 20:10:14 -256,3708,Tania Nossa Caldas,nossa@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-06-30 16:46:15,2022-06-30 16:46:22,,1,0%,, -257,4515,Maristela Freitas,mafreitas@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-06-30 14:14:32,2022-06-30 14:14:38,,1,0%,, -258,3696,Lesley Duya,duya@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-06-29 23:50:01,2022-06-29 23:50:11,,1,0%,, -259,2375,Aaron Jolliffe,jolliffe@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-06-29 21:36:34,2022-06-29 21:36:38,2022-06-29 22:53:23,1,100%,Amyris Code of Business Conduct and Ethics,2022-06-29 22:53:23 -260,4579,Divine Ambe,ambe@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-06-28 17:38:35,2022-06-29 16:09:26,2022-06-30 00:21:27,1,100%,Amyris Code of Business Conduct and Ethics,2022-06-30 00:21:27 -261,4205,Gabriel Valedorio,gvaledorio@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-06-27 23:57:57,2022-06-27 23:58:15,2022-06-29 20:52:28,1,100%,Amyris Code of Business Conduct and Ethics,2022-06-29 20:52:28 -262,4603,Marineide Souza,mrsouza@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-06-27 14:31:45,2022-06-27 14:32:08,,1,0%,, -263,4601,Andreia Martini,amartini@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-06-27 14:09:15,2022-06-27 14:09:23,,1,0%,, -264,4606,Zildir Santos,zsantos@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-06-27 14:01:32,2022-06-27 14:02:31,,1,0%,, -265,4607,Rafael Raponi,,Code of Business Conduct and Ethics,LIVE,2022-06-27 12:58:06,2022-06-27 12:58:31,,1,0%,, -266,4214,Veronica Rodrigues,vrodrigues@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-06-27 12:15:37,2022-06-27 12:15:51,,1,0%,, -267,4469,Geoff Wild,wild@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-06-24 09:15:30,2022-06-24 09:15:55,2022-06-24 16:34:24,1,100%,Amyris Code of Business Conduct and Ethics,2022-06-24 16:34:24 -268,4364,Flavio Cartone,fcartone@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-06-23 10:27:52,2022-06-23 10:28:18,2022-07-02 05:21:45,1,100%,Amyris Code of Business Conduct and Ethics,2022-07-02 05:21:45 -269,4452,Mahika Khanduri,mkhanduri@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-06-22 20:54:45,2022-06-22 20:54:56,2022-06-23 17:19:36,1,100%,Amyris Code of Business Conduct and Ethics,2022-06-23 17:19:36 -270,4533,Susana Murillo,smurillo@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-06-22 18:20:59,2022-06-22 18:21:04,2022-06-22 21:35:48,1,100%,Amyris Code of Business Conduct and Ethics,2022-06-22 21:35:48 -271,4531,Madeline Leeper,leeper@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-06-22 15:34:52,2022-06-22 15:34:57,2022-06-22 18:43:04,1,100%,Amyris Code of Business Conduct and Ethics,2022-06-22 18:43:04 -272,4566,Stephanie Helms,helms@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-06-22 12:52:41,2022-06-22 12:52:48,2022-06-23 15:02:38,1,100%,Amyris Code of Business Conduct and Ethics,2022-06-23 15:02:38 -273,4497,James Arpino,jarpino@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-06-22 00:54:57,2022-06-22 00:55:03,2022-11-15 18:01:03,1,100%,Amyris Code of Business Conduct and Ethics,2022-11-15 18:01:03 -274,4567,Joann Kim,joannkim@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-06-21 23:55:37,2022-06-21 23:55:42,2022-06-22 15:58:21,1,100%,Amyris Code of Business Conduct and Ethics,2022-06-22 15:58:21 -275,2519,Leticia Miyahara,lmiyahara@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-06-21 20:48:09,2022-06-21 20:48:14,2022-06-21 22:47:34,1,100%,Amyris Code of Business Conduct and Ethics,2022-06-21 22:47:34 -276,4359,Charles Costa,ccosta@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-06-21 00:07:00,2022-07-19 22:37:28,2022-08-20 20:31:52,1,100%,Amyris Code of Business Conduct and Ethics,2022-08-20 20:31:52 -277,4131,Thomaz Moreira,tmoreira@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-06-20 17:45:26,,,1,0%,, -278,4572,Daniel Bastos,dbastos@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-06-20 10:37:47,2022-06-20 10:37:59,2022-06-20 11:26:10,1,100%,Amyris Code of Business Conduct and Ethics,2022-06-20 11:26:10 -279,4404,Joana Chambel,chambel@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-06-16 18:07:26,2022-06-16 18:07:43,2022-11-18 19:54:49,1,100%,Amyris Code of Business Conduct and Ethics,2022-11-18 19:54:49 -280,4051,Marissa Shipman,shipman@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-06-16 18:01:58,2022-06-17 14:32:58,2022-06-17 15:48:44,1,100%,Amyris Code of Business Conduct and Ethics,2022-06-17 15:48:44 -281,3618,Justine Monica Ulrich,ulrich@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-06-15 19:29:56,2022-11-15 17:22:42,2022-11-15 17:22:43,1,100%,Amyris Code of Business Conduct and Ethics,2022-11-15 17:22:43 -282,4397,Danielle Barrow,barrow@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-06-15 14:20:24,2022-06-15 14:21:57,2022-06-15 15:38:22,1,100%,Amyris Code of Business Conduct and Ethics,2022-06-15 15:38:22 -283,4523,Victoria Knox,knox@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-06-15 13:52:52,2022-06-15 13:52:57,2022-06-15 18:38:06,1,100%,Amyris Code of Business Conduct and Ethics,2022-06-15 18:38:06 -284,4526,Jessica Kelly Silverio,jsilverio@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-06-15 13:31:19,2022-06-15 13:31:23,,1,0%,, -285,4524,Christopher Kajewski,kajewski@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-06-15 13:14:47,2022-06-15 13:14:52,2022-06-15 15:50:39,1,100%,Amyris Code of Business Conduct and Ethics,2022-06-15 15:50:39 -286,4458,Kyle Ching,ching@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-06-14 23:47:36,2022-06-14 23:47:39,2022-06-15 17:22:20,1,100%,Amyris Code of Business Conduct and Ethics,2022-06-15 17:22:20 -287,3887,Joshua Ursua,ursua@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-06-14 21:40:47,2022-06-14 21:40:56,,1,0%,, -288,4459,Hayeon Park,hpark@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-06-14 00:03:08,2022-06-14 18:04:41,2022-06-14 19:05:32,1,100%,Amyris Code of Business Conduct and Ethics,2022-06-14 19:05:32 -289,4521,Autumn Giang,giang@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-06-13 23:28:28,2022-06-13 23:28:33,2022-06-14 15:31:26,1,100%,Amyris Code of Business Conduct and Ethics,2022-06-14 15:31:26 -290,4196,Bárbara Melo,bfmelo@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-06-13 15:55:02,2022-06-13 15:55:13,2022-07-15 21:42:20,1,100%,Amyris Code of Business Conduct and Ethics,2022-07-15 21:42:20 -291,4390,Karyna Stryzheus,stryzheus@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-06-13 12:55:54,2022-06-13 12:56:01,2022-11-18 17:27:29,1,100%,Amyris Code of Business Conduct and Ethics,2022-11-18 17:27:29 -292,4209,Isabele Quartaroli,iquartaroli@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-06-11 12:28:14,2022-06-30 13:23:07,2022-06-30 17:55:04,1,100%,Amyris Code of Business Conduct and Ethics,2022-06-30 17:55:04 -293,1342,Heather DePaul,robertson@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-06-11 00:59:04,2022-06-11 00:59:10,,1,0%,, -294,4472,Sydney Guillory,guillory@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-06-10 21:21:20,2022-06-10 21:21:26,2022-06-10 23:06:17,1,100%,Amyris Code of Business Conduct and Ethics,2022-06-10 23:06:17 -295,4487,Wenqing Zhong,wzhong@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-06-10 17:01:59,2022-06-10 17:02:05,2022-06-10 23:37:59,1,100%,Amyris Code of Business Conduct and Ethics,2022-06-10 23:37:59 -296,4215,Vitoria Santos,vsantos@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-06-09 02:26:56,2022-06-09 02:27:13,,1,0%,, -297,4475,Christopher Hagemann,hagemann@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-06-08 21:53:41,2022-06-08 21:53:53,2022-06-09 00:43:03,1,100%,Amyris Code of Business Conduct and Ethics,2022-06-09 00:43:03 -298,4457,Briant Mitchell,bmitchell@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-06-08 19:12:04,2022-06-08 19:12:20,2022-06-10 15:05:07,1,100%,Amyris Code of Business Conduct and Ethics,2022-06-10 15:05:07 -299,4527,Sarah Brambill,brambill@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-06-08 10:09:04,2022-06-10 07:16:51,2022-06-10 10:15:24,1,100%,Amyris Code of Business Conduct and Ethics,2022-06-10 10:15:24 -300,4476,Olivia Ball,ball@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-06-06 21:30:49,2022-06-06 21:30:56,2022-06-06 22:01:16,1,100%,Amyris Code of Business Conduct and Ethics,2022-06-06 22:01:16 -301,4126,Rafaela Silva,rfsilva@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-06-06 12:34:34,2022-06-06 12:34:51,2022-06-06 21:26:38,1,100%,Amyris Code of Business Conduct and Ethics,2022-06-06 21:26:38 -302,4371,Luis Luchesi,lluchesi@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-06-01 16:48:49,2022-06-01 16:48:59,,1,0%,, -303,4213,Ricardo Vieira,rovieira@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-06-01 12:04:54,2022-06-01 12:05:13,2022-06-02 12:57:39,1,100%,Amyris Code of Business Conduct and Ethics,2022-06-02 12:57:39 -304,4164,Bianca Passareli,bpassareli@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-06-01 10:45:34,2022-06-01 10:45:50,,1,0%,, -305,4165,Jaqueline Teodoro,jteodoro@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-06-01 10:01:59,2022-06-01 10:02:19,2022-06-01 14:49:58,1,100%,Amyris Code of Business Conduct and Ethics,2022-06-01 14:49:58 -306,4366,Leandro Rocha,larocha@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-05-31 18:00:14,2022-05-31 18:00:24,,1,0%,, -307,4204,Fernando Frezza,ffrezza@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-05-31 17:09:00,2022-05-31 17:09:11,2022-06-22 11:36:30,1,100%,Amyris Code of Business Conduct and Ethics,2022-06-22 11:36:30 -308,3774,Soraia Lopes,ucp-soraialopes@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-05-31 16:30:50,2022-05-31 16:31:02,2022-08-18 10:20:56,1,100%,Amyris Code of Business Conduct and Ethics,2022-08-18 10:20:56 -309,4195,Carla Rodrigues,crodrigues@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-05-31 14:24:29,2022-05-31 14:24:40,2022-06-01 01:35:23,1,100%,Amyris Code of Business Conduct and Ethics,2022-06-01 01:35:23 -310,4105,Jackeline Rodrigues,jmsilva@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-05-31 12:59:48,2022-05-31 13:00:01,,1,0%,, -311,4445,Roxanne Beltran,rbeltran@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-05-25 23:15:11,2022-05-25 23:15:15,2022-05-31 22:16:46,1,100%,Amyris Code of Business Conduct and Ethics,2022-05-31 22:16:46 -312,4186,Barbara Zakowicz,zakowicz@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-05-25 05:40:33,2022-05-25 05:40:43,2022-07-20 04:58:13,1,100%,Amyris Code of Business Conduct and Ethics,2022-07-20 04:58:13 -313,4089,Kathryn Helmink,helmink@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-05-24 17:19:39,2022-05-24 17:19:49,2022-05-24 18:10:50,1,100%,Amyris Code of Business Conduct and Ethics,2022-05-24 18:10:50 -314,4431,Season Hughes,shughes@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-05-23 22:38:02,2022-05-23 22:38:11,2022-05-23 22:54:20,1,100%,Amyris Code of Business Conduct and Ethics,2022-05-23 22:54:20 -315,4436,Sarah Trinh,strinh@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-05-23 20:02:31,2022-05-23 20:02:36,2022-05-24 23:04:18,1,100%,Amyris Code of Business Conduct and Ethics,2022-05-24 23:04:18 -316,4423,Wei Li,weili@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-05-21 21:54:43,2022-05-21 21:54:50,2022-05-22 00:58:54,1,100%,Amyris Code of Business Conduct and Ethics,2022-05-22 00:58:54 -317,3590,Sandro Dimas,sdimas@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-05-21 12:59:41,2022-05-21 12:59:53,,1,0%,, -318,4395,Emmanuel Huerta Garcia,mhuerta@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-05-19 14:52:55,2022-05-19 14:53:01,2022-06-09 17:19:11,1,100%,Amyris Code of Business Conduct and Ethics,2022-06-09 17:19:11 -319,4358,Caio Silva,cvsilva@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-05-19 09:28:09,2022-10-06 05:45:39,,2,0%,, -320,4358,Caio Silva,cvsilva@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-05-19 09:28:09,2022-05-19 09:28:29,2022-05-20 01:27:27,1,100%,Amyris Code of Business Conduct and Ethics,2022-05-20 01:27:27 -321,4319,Angela Johnson,angelajohnson@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-05-18 22:18:58,2022-05-18 22:19:05,2022-05-18 23:39:41,1,100%,Amyris Code of Business Conduct and Ethics,2022-05-18 23:39:41 -322,4398,George Parthmer,parthmer@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-05-18 12:38:07,2022-05-18 12:38:12,2022-05-18 12:58:44,1,100%,Amyris Code of Business Conduct and Ethics,2022-05-18 12:58:44 -323,4412,Lina Lopez,linalopez@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-05-17 16:45:25,2022-05-17 16:45:45,,1,0%,, -324,4412,Lina Lopez,linalopez@amyris.com,New York Managers Anti-Harassment Training,LIVE,2022-05-17 14:52:57,2022-05-17 14:53:05,,1,11%,Introduction,2022-05-17 14:54:48 -325,4275,Justin Ahdoot,ahdoot@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-05-16 17:49:28,2022-05-16 17:49:33,2022-05-17 05:48:57,1,100%,Amyris Code of Business Conduct and Ethics,2022-05-17 05:48:57 -326,4275,Justin Ahdoot,ahdoot@amyris.com,New York Managers Anti-Harassment Training,LIVE,2022-05-16 17:45:17,2022-05-16 17:45:25,,1,11%,Introduction,2022-05-16 17:47:06 -327,4393,Sarika Raj Peddiraju,peddiraju@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-05-15 20:37:12,2022-05-15 20:37:19,2022-05-15 23:38:13,1,100%,Amyris Code of Business Conduct and Ethics,2022-05-15 23:38:13 -328,4379,Anh Tran,anhtran@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-05-13 21:21:53,2022-05-13 21:21:57,2022-05-18 19:25:41,1,100%,Amyris Code of Business Conduct and Ethics,2022-05-18 19:25:41 -329,3744,Richard Molyneux,molyneux@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-05-13 10:06:21,2022-05-13 10:06:27,2022-05-13 15:37:37,1,100%,Amyris Code of Business Conduct and Ethics,2022-05-13 15:37:37 -330,4203,Erica Morales,emorales@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-05-12 23:37:02,2022-05-12 23:37:26,2022-05-24 18:51:45,1,100%,Amyris Code of Business Conduct and Ethics,2022-05-24 18:51:45 -331,4389,Raphael Bouquillon,bouquillon@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-05-12 18:02:46,2022-05-12 18:02:50,2022-05-12 18:34:27,1,100%,Amyris Code of Business Conduct and Ethics,2022-05-12 18:34:27 -332,4210,Mateus Barbosa,msbarbosa@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-05-11 01:33:33,2022-05-11 01:34:08,2022-05-11 04:14:56,1,100%,Amyris Code of Business Conduct and Ethics,2022-05-11 04:14:56 -333,4313,Latoya Watson,lwatson@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-05-10 21:54:01,2022-05-10 21:54:06,2022-05-10 23:16:19,1,100%,Amyris Code of Business Conduct and Ethics,2022-05-10 23:16:19 -334,4405,Elizabeth Scott,escott@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-05-09 22:28:00,2022-05-09 22:28:09,2022-05-11 23:14:58,1,100%,Amyris Code of Business Conduct and Ethics,2022-05-11 23:14:58 -335,4376,Casey Rick,rick@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-05-09 20:26:58,2022-12-12 15:51:14,2022-12-12 17:30:24,1,100%,Amyris Code of Business Conduct and Ethics,2022-12-12 17:30:24 -336,4399,Rachel Nye,nye@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-05-09 19:31:54,2022-05-09 19:32:02,2022-05-09 22:51:19,1,100%,Amyris Code of Business Conduct and Ethics,2022-05-09 22:51:19 -337,4386,Melissa Benitez,mbenitez@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-05-09 18:10:30,2022-05-09 18:10:54,2022-05-12 00:13:00,1,100%,Amyris Code of Business Conduct and Ethics,2022-05-12 00:13:00 -338,4394,Shelby Duhon,duhon@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-05-09 18:09:09,2022-05-09 18:09:17,2022-05-09 23:09:18,1,100%,Amyris Code of Business Conduct and Ethics,2022-05-09 23:09:18 -339,3579,Kia Gorton,gorton@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-05-09 13:43:49,2022-05-09 13:43:56,2022-08-08 14:02:19,1,100%,Amyris Code of Business Conduct and Ethics,2022-08-08 14:02:19 -340,4178,Frank Escalante,escalante@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-05-05 22:37:49,2022-05-05 22:38:08,2022-05-09 21:00:21,1,100%,Amyris Code of Business Conduct and Ethics,2022-05-09 21:00:21 -341,4189,Miguel Mendonça,mmendonca@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-05-05 18:11:26,2022-05-05 18:11:33,2022-05-13 18:58:33,1,100%,Amyris Code of Business Conduct and Ethics,2022-05-13 18:58:33 -342,3081,Xiaohui Chen,kchen@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-05-03 18:38:54,2022-05-03 18:39:54,2022-05-03 21:34:59,1,100%,Amyris Code of Business Conduct and Ethics,2022-05-03 21:34:59 -343,4324,Bryan Roberts,roberts@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-05-02 20:31:48,2022-05-02 22:02:16,2022-05-03 19:42:23,1,100%,Amyris Code of Business Conduct and Ethics,2022-05-03 19:42:23 -344,4317,Lewis Baker,lbaker@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-05-02 19:10:57,2022-05-02 19:11:06,2022-05-03 13:56:36,1,100%,Amyris Code of Business Conduct and Ethics,2022-05-03 13:56:36 -345,2831,Amel Hachemi,hachemi@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-05-02 16:09:52,,,1,0%,, -346,4200,Elilton Correa,ecorrea@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-04-29 17:35:03,2022-04-29 17:35:10,2022-05-07 19:11:53,1,100%,Amyris Code of Business Conduct and Ethics,2022-05-07 19:11:53 -347,4124,Orlando Santos,osantos@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-04-29 06:11:21,2022-04-30 00:31:42,,1,0%,, -348,4117,Eliseu Luís,eluis@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-04-29 06:09:24,2022-04-29 18:22:36,,2,0%,, -349,4117,Eliseu Luís,eluis@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-04-29 06:09:24,2022-04-29 06:09:38,2022-04-29 18:19:49,1,100%,Amyris Code of Business Conduct and Ethics,2022-04-29 18:19:49 -350,4128,Ronaldo Silva,rasilva@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-04-29 05:57:37,2022-04-29 05:57:57,,1,0%,, -351,1983,Young Park,ypark@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-04-28 17:23:23,2022-04-29 15:52:22,2022-04-29 20:14:34,1,100%,Amyris Code of Business Conduct and Ethics,2022-04-29 20:14:34 -352,4281,Heather McDermott,mcdermott@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-04-28 13:25:20,2022-04-28 13:25:30,2022-04-28 17:11:54,1,100%,Amyris Code of Business Conduct and Ethics,2022-04-28 17:11:54 -353,4283,Brooke O'Neil,boneil@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-04-28 02:27:16,2022-04-28 02:27:26,2022-04-28 23:18:46,1,100%,Amyris Code of Business Conduct and Ethics,2022-04-28 23:18:46 -354,4184,Manjari Mishra,mmishra@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-04-27 20:01:15,2022-04-27 20:01:30,2022-05-02 21:07:19,1,100%,Amyris Code of Business Conduct and Ethics,2022-05-02 21:07:19 -355,3770,Elizabeth Barrett,lbarrett@amyris.com,New York Managers Anti-Harassment Training,5,2022-04-27 19:21:35,,,1,0%,, -356,4384,Jessica Wallace,jwallace@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-04-27 09:47:29,2022-04-27 09:47:37,2022-05-05 21:52:03,1,100%,Amyris Code of Business Conduct and Ethics,2022-05-05 21:52:03 -357,4363,Jillian Chopin,chopin@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-04-26 19:16:40,2022-04-26 19:16:47,2022-04-27 14:26:57,1,100%,Amyris Code of Business Conduct and Ethics,2022-04-27 14:26:57 -358,4344,Nicole Gehrmann,gehrmann@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-04-26 14:49:48,2022-04-26 14:50:03,2022-04-26 16:50:08,1,100%,Amyris Code of Business Conduct and Ethics,2022-04-26 16:50:08 -359,4380,Erica Leone-Cox,leone@amyris.com,New York Managers Anti-Harassment Training,5,2022-04-26 03:40:25,,,1,0%,, -360,4380,Erica Leone-Cox,leone@amyris.com,New York Managers Anti-Harassment Training,LIVE,2022-04-26 03:40:25,2022-11-18 15:42:45,,2,11%,Introduction,2022-11-18 15:44:16 -361,4322,Annette Barreto,barreto@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-04-25 23:21:30,2022-04-25 23:21:37,2022-05-13 21:50:23,1,100%,Amyris Code of Business Conduct and Ethics,2022-05-13 21:50:23 -362,4360,Kelly Zingler,zingler@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-04-25 18:18:15,2022-04-25 18:18:24,2022-04-25 20:32:41,1,100%,Amyris Code of Business Conduct and Ethics,2022-04-25 20:32:41 -363,3612,Elizabeth Amsellem,amsellem@amyris.com,New York Managers Anti-Harassment Training,LIVE,2022-04-25 17:25:47,,,2,0%,, -364,3612,Elizabeth Amsellem,amsellem@amyris.com,New York Managers Anti-Harassment Training,5,2022-04-25 17:25:47,2022-04-25 17:25:52,,1,67%,Receiving Complaints,2022-04-25 18:54:49 -365,4208,Paulo Gusmão,pgusmao@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-04-25 13:26:46,2022-04-25 13:27:08,,1,0%,, -366,4365,Henrique Freitas,hfreitas@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-04-25 10:03:33,,,1,0%,, -367,4148,Kevin Hurtt,hurtt@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-04-22 18:07:19,2022-05-02 21:34:37,2022-05-02 23:05:19,1,100%,Amyris Code of Business Conduct and Ethics,2022-05-02 23:05:19 -368,4312,Dorron Turner,dturner@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-04-22 12:35:07,2022-04-22 12:35:31,2022-05-03 13:15:34,1,100%,Amyris Code of Business Conduct and Ethics,2022-05-03 13:15:34 -369,2989,Danielle Schnock,schnock@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-04-22 03:16:44,2022-04-22 03:16:52,,1,0%,, -370,4159,Lee Tappenden,tappenden@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-04-21 12:54:08,2022-04-21 12:54:16,2022-04-21 15:07:40,1,100%,Amyris Code of Business Conduct and Ethics,2022-04-21 15:07:40 -371,4239,Hannah Sanders,sanders@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-04-20 16:06:30,2022-04-20 16:06:44,2022-04-20 21:26:21,1,100%,Amyris Code of Business Conduct and Ethics,2022-04-20 21:26:21 -372,4311,Tyler Johnson,tylerjohnson@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-04-19 19:25:05,2022-04-19 19:25:12,2022-04-19 20:25:57,1,100%,Amyris Code of Business Conduct and Ethics,2022-04-19 20:25:57 -373,4310,Matthew Ramirez,mramirez@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-04-19 19:04:34,2022-04-19 19:04:48,2022-04-29 20:10:04,1,100%,Amyris Code of Business Conduct and Ethics,2022-04-29 20:10:04 -374,4237,Daniel Jimenez,jimenez@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-04-19 19:03:27,2022-04-19 19:03:31,2022-04-19 23:09:28,1,100%,Amyris Code of Business Conduct and Ethics,2022-04-19 23:09:28 -375,2965,Tim Fallon,fallon@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-04-19 18:12:07,2022-04-19 18:12:14,,1,0%,, -376,2951,Audria Sarmiento,asarmiento@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-04-19 16:08:33,2022-04-19 16:08:41,2022-04-21 17:30:22,1,100%,Amyris Code of Business Conduct and Ethics,2022-04-21 17:30:22 -377,4332,Marcus Goodwin,mgoodwin@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-04-19 15:59:41,2022-04-19 15:59:49,2022-04-19 16:30:26,1,100%,Amyris Code of Business Conduct and Ethics,2022-04-19 16:30:26 -378,4332,Marcus Goodwin,mgoodwin@amyris.com,New York Managers Anti-Harassment Training,LIVE,2022-04-19 13:51:07,2022-05-02 14:51:25,2022-05-02 17:14:37,2,100%,Manager Acknowledgement,2022-05-02 17:14:37 -379,4332,Marcus Goodwin,mgoodwin@amyris.com,New York Managers Anti-Harassment Training,5,2022-04-19 13:51:07,2022-04-19 13:51:12,,1,67%,Receiving Complaints,2022-04-19 15:24:04 -380,4327,Anna Campos,annacampos@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-04-18 19:51:08,2022-04-18 19:51:37,2022-04-18 21:24:50,1,100%,Amyris Code of Business Conduct and Ethics,2022-04-18 21:24:50 -381,4315,Jemily Figueroa Morales,figueroa@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-04-18 18:22:58,2022-04-18 18:23:04,,1,0%,, -382,4243,Jana Metz,metz@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-04-18 18:05:43,2022-04-18 18:05:47,2022-04-18 20:38:44,1,100%,Amyris Code of Business Conduct and Ethics,2022-04-18 20:38:44 -383,4257,Helena van Tol,vantol@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-04-18 17:47:30,2022-04-18 17:47:37,2022-04-18 20:21:47,1,100%,Amyris Code of Business Conduct and Ethics,2022-04-18 20:21:47 -384,3674,Yasufumi Kurita,kurita@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-04-18 17:44:26,2022-04-18 17:44:35,2022-04-18 19:23:07,1,100%,Amyris Code of Business Conduct and Ethics,2022-04-18 19:23:07 -385,3674,Yasufumi Kurita,kurita@amyris.com,New York Managers Anti-Harassment Training,5,2022-04-18 17:24:24,2022-04-18 17:24:29,,1,67%,Receiving Complaints,2022-04-18 20:18:55 -386,4301,Starr Gentry,gentry@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-04-16 02:09:09,2022-04-16 02:09:16,,1,0%,, -387,4242,Fraida Levilev,levilev@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-04-15 21:49:47,2022-04-15 21:49:51,2022-04-16 00:01:36,1,100%,Amyris Code of Business Conduct and Ethics,2022-04-16 00:01:36 -388,4272,Gladys Gomez,ggomez@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-04-15 17:16:19,2022-04-21 14:21:19,2022-04-21 14:59:28,1,100%,Amyris Code of Business Conduct and Ethics,2022-04-21 14:59:28 -389,4252,Narayan Menon,menon@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-04-15 16:13:28,2022-04-15 20:32:53,2022-04-15 20:32:54,1,100%,Amyris Code of Business Conduct and Ethics,2022-04-15 20:32:54 -390,4248,Christine Lorenzo,lorenzo@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-04-14 22:07:26,2022-04-18 12:54:15,2022-04-18 18:21:38,1,100%,Amyris Code of Business Conduct and Ethics,2022-04-18 18:21:38 -391,4274,Elaine Lazzeri,lazzeri@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-04-14 21:36:26,2022-04-15 16:59:16,2022-04-15 16:59:16,1,100%,Amyris Code of Business Conduct and Ethics,2022-04-15 16:59:16 -392,3803,Valerie Velez,velez@amyris.com,New York Managers Anti-Harassment Training,5,2022-04-14 18:03:30,2022-04-14 18:05:11,,1,11%,Introduction,2022-04-14 18:05:11 -393,4286,Marlon Schieber,schieber@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-04-14 01:20:33,2022-04-14 01:20:41,2022-04-14 04:35:24,1,100%,Amyris Code of Business Conduct and Ethics,2022-04-14 04:35:24 -394,4328,Shawn Williams,swilliams@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-04-12 01:31:05,2022-04-15 22:40:48,2022-04-16 00:56:12,1,100%,Amyris Code of Business Conduct and Ethics,2022-04-16 00:56:12 -395,4049,Erica Walker,ewalker@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-04-11 20:56:47,2022-04-11 20:56:51,,1,0%,, -396,4273,Alaina Brewer,abrewer@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-04-11 15:42:54,2022-11-14 21:18:13,2022-11-14 21:18:14,1,100%,Amyris Code of Business Conduct and Ethics,2022-11-14 21:18:14 -397,4287,Edilson Machado,emachado@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-04-11 13:26:29,2022-04-11 13:26:39,,1,0%,, -398,4238,Margaret Mack,mack@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-04-08 21:00:17,2022-04-08 21:00:23,2022-04-15 18:11:35,1,100%,Amyris Code of Business Conduct and Ethics,2022-04-15 18:11:35 -399,4295,Mauci Silva,mmsilva@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-04-08 18:51:28,2022-04-08 18:51:56,2022-04-11 17:19:06,1,100%,Amyris Code of Business Conduct and Ethics,2022-04-11 17:19:06 -400,4254,Matthew Wichlan,wichlan@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-04-08 17:45:09,2022-04-08 17:45:15,2022-04-08 19:17:01,1,100%,Amyris Code of Business Conduct and Ethics,2022-04-08 19:17:01 -401,4116,Carlos Pereira,cpereira@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-04-07 20:32:06,2022-05-26 18:18:13,2022-10-17 12:09:47,1,100%,Amyris Code of Business Conduct and Ethics,2022-10-17 12:09:47 -402,4139,Alberto Nunes,anunes@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-04-07 18:37:32,2022-04-08 19:13:24,2022-09-13 10:47:54,1,100%,Amyris Code of Business Conduct and Ethics,2022-09-13 10:47:54 -403,4298,Zaida Bazzo,zbazzo@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-04-07 17:18:54,2022-04-07 17:18:59,,1,0%,, -404,3308,Ana Soares,ucp-anasoares@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-04-06 08:58:38,2022-09-28 17:53:15,2022-11-28 17:20:46,1,100%,Amyris Code of Business Conduct and Ethics,2022-11-28 17:20:46 -405,3527,Danielle Pitts,pitts@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-04-06 04:01:35,2022-04-06 04:01:47,2022-04-07 23:43:50,1,100%,Amyris Code of Business Conduct and Ethics,2022-04-07 23:43:50 -406,4292,Matthew Cerda,cerda@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-04-05 19:34:16,2022-04-05 19:34:31,2022-04-05 20:57:28,1,100%,Amyris Code of Business Conduct and Ethics,2022-04-05 20:57:28 -407,4132,Wanderson Sousa,wsousa@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-04-04 22:01:35,2022-04-04 22:01:44,,1,0%,, -408,4285,Destiny Liebscher,liebscher@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-04-04 19:46:17,2022-04-04 19:46:22,2022-04-05 16:56:20,1,100%,Amyris Code of Business Conduct and Ethics,2022-04-05 16:56:20 -409,4222,Paul Green,pgreen@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-04-04 16:11:53,2022-04-04 16:12:01,2022-04-05 15:53:19,1,100%,Amyris Code of Business Conduct and Ethics,2022-04-05 15:53:19 -410,3651,Rupesh Parikh,parikh@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-04-04 14:28:23,2022-04-04 14:28:28,,1,0%,, -411,4188,Luis Ceja,ceja@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-04-01 21:31:12,2022-04-01 21:31:19,2022-04-12 17:26:29,1,100%,Amyris Code of Business Conduct and Ethics,2022-04-12 17:26:29 -412,4268,Kimberly Gagliardi,gagliardi@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-04-01 20:02:27,2022-04-01 20:02:35,2022-04-12 11:11:15,1,100%,Amyris Code of Business Conduct and Ethics,2022-04-12 11:11:15 -413,4271,Joan Cheng,jcheng@amyris.com,New York Managers Anti-Harassment Training,LIVE,2022-04-01 18:07:38,,,2,0%,, -414,4271,Joan Cheng,jcheng@amyris.com,New York Managers Anti-Harassment Training,3,2022-04-01 18:07:38,,,1,0%,, -415,3802,Rheena Joi Razon,razon@amyris.com,New York Managers Anti-Harassment Training,3,2022-04-01 17:01:21,2022-04-04 23:33:28,,1,0%,, -416,4180,Ella Jayes,jayes@amyris.com,New York Managers Anti-Harassment Training,5,2022-04-01 17:01:02,2022-04-08 19:32:42,,2,67%,Receiving Complaints,2022-04-11 16:17:49 -417,4180,Ella Jayes,jayes@amyris.com,New York Managers Anti-Harassment Training,3,2022-04-01 17:01:02,2022-04-01 17:45:25,,1,67%,Receiving Complaints,2022-04-01 19:36:04 -418,4111,Hugo Godoy,hgodoy@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-04-01 11:58:11,2022-04-01 14:44:44,2022-11-15 03:30:53,1,100%,Amyris Code of Business Conduct and Ethics,2022-11-15 03:30:53 -419,4059,Filipe Bortolin,fbortolin@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-04-01 11:25:15,2022-08-08 18:45:21,2022-10-17 21:14:04,1,100%,Amyris Code of Business Conduct and Ethics,2022-10-17 21:14:04 -420,4226,Christian King,cking@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-03-31 20:34:51,2022-03-31 20:35:05,2022-04-01 22:56:44,1,100%,Amyris Code of Business Conduct and Ethics,2022-04-01 22:56:44 -421,3427,Ashley Taliento,taliento@amyris.com,New York Managers Anti-Harassment Training,LIVE,2022-03-31 17:48:59,2022-07-17 19:17:22,2022-08-26 01:41:58,2,100%,Manager Acknowledgement,2022-08-26 01:41:58 -422,3427,Ashley Taliento,taliento@amyris.com,New York Managers Anti-Harassment Training,3,2022-03-31 17:48:59,,,1,0%,, -423,2336,Rafael Da Silva,rafaelsilva@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-03-31 17:14:17,2022-03-31 17:14:24,,1,0%,, -424,3932,Digna Galindo,galindo@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-03-31 17:01:04,2022-03-31 17:01:11,,1,0%,, -425,4155,Anna Gaynor,gaynor@amyris.com,New York Managers Anti-Harassment Training,3,2022-03-31 14:32:36,2022-03-31 14:33:04,,1,67%,Receiving Complaints,2022-04-01 17:36:35 -426,4155,Anna Gaynor,gaynor@amyris.com,New York Managers Anti-Harassment Training,LIVE,2022-03-31 14:32:36,2022-04-29 15:47:51,2022-04-29 19:53:17,3,100%,Manager Acknowledgement,2022-04-29 19:53:17 -427,4155,Anna Gaynor,gaynor@amyris.com,New York Managers Anti-Harassment Training,5,2022-03-31 14:32:36,2022-04-07 20:49:29,,2,67%,Receiving Complaints,2022-04-12 14:50:50 -428,4127,Renato Almeida,rgalmeida@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-03-30 17:51:39,2022-03-30 17:52:02,2022-03-31 20:27:13,1,100%,Amyris Code of Business Conduct and Ethics,2022-03-31 20:27:13 -429,3293,Marcela Honigman,honigman@amyris.com,New York Managers Anti-Harassment Training,3,2022-03-30 16:37:03,2022-03-30 16:37:15,,1,67%,Receiving Complaints,2022-04-01 13:12:51 -430,3293,Marcela Honigman,honigman@amyris.com,New York Managers Anti-Harassment Training,LIVE,2022-03-30 16:37:03,2022-12-14 18:35:29,,4,22%,Sexual Harrassment,2022-12-14 18:49:31 -431,3293,Marcela Honigman,honigman@amyris.com,New York Managers Anti-Harassment Training,5,2022-03-30 16:37:03,2022-04-08 13:54:53,,2,67%,Receiving Complaints,2022-04-13 20:43:12 -432,3293,Marcela Honigman,honigman@amyris.com,New York Managers Anti-Harassment Training,LIVE,2022-03-30 16:37:03,2022-11-14 17:54:00,2022-11-14 22:33:35,3,100%,Manager Acknowledgement,2022-11-14 22:33:35 -433,3981,Ligia Menzani,lmenzani@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-03-30 11:49:01,2022-03-30 11:49:13,2022-03-30 12:41:34,1,100%,Amyris Code of Business Conduct and Ethics,2022-03-30 12:41:34 -434,3698,Samantha Breach,sbreach@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-03-29 23:47:10,2022-03-29 23:47:29,2022-12-08 02:47:17,1,100%,Amyris Code of Business Conduct and Ethics,2022-12-08 02:47:17 -435,4235,Jasmina Samardzic,samardzic@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-03-29 18:24:48,2022-03-29 18:25:15,2022-03-29 20:19:02,1,100%,Amyris Code of Business Conduct and Ethics,2022-03-29 20:19:02 -436,3036,Ines Campos,ucp-inescampos@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-03-29 15:43:49,2022-03-29 15:43:59,2022-11-25 13:06:43,1,100%,Amyris Code of Business Conduct and Ethics,2022-11-25 13:06:43 -437,2603,Cleiton Amaral,camaral@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-03-29 13:00:48,2022-03-29 13:01:22,2022-11-03 18:11:23,1,100%,Amyris Code of Business Conduct and Ethics,2022-11-03 18:11:23 -438,4228,John Jacobs,johnjacobs@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-03-29 03:34:36,2022-03-29 03:34:54,2022-04-04 02:39:31,1,100%,Amyris Code of Business Conduct and Ethics,2022-04-04 02:39:31 -439,4166,Leandro Oliveira,ldeoliveira@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-03-29 01:23:59,2022-03-29 01:24:18,2022-03-30 01:23:11,1,100%,Amyris Code of Business Conduct and Ethics,2022-03-30 01:23:11 -440,4137,Jill Gierach,gierach@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-03-28 21:23:33,2022-03-28 21:23:38,2022-03-28 22:12:49,1,100%,Amyris Code of Business Conduct and Ethics,2022-03-28 22:12:49 -441,3787,Peter Cavallero,cavallero@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-03-28 21:14:35,2022-03-28 21:14:42,2022-11-14 20:40:51,1,100%,Amyris Code of Business Conduct and Ethics,2022-11-14 20:40:51 -442,3902,Feng Ting Liang,eliang@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-03-28 19:24:59,2022-03-28 19:25:04,2022-03-28 20:03:10,1,100%,Amyris Code of Business Conduct and Ethics,2022-03-28 20:03:10 -443,4020,Belinda Harcombe,harcombe@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-03-25 19:16:16,2022-03-25 19:16:23,,1,0%,, -444,4241,Tammy White,twhite@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-03-25 17:17:16,2022-03-25 17:17:22,2022-08-15 17:05:22,1,100%,Amyris Code of Business Conduct and Ethics,2022-08-15 17:05:22 -445,3122,Maycon Ribeiro,mvribeiro@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-03-25 16:26:34,2022-03-25 16:26:43,,1,0%,, -446,3975,Jennifer Tejada,tejada@amyris.com,New York Managers Anti-Harassment Training,5,2022-03-25 15:20:52,,,2,0%,, -447,3975,Jennifer Tejada,tejada@amyris.com,New York Managers Anti-Harassment Training,3,2022-03-25 15:20:52,2022-03-25 15:21:02,,1,11%,Introduction,2022-03-25 15:23:07 -448,4244,Ivette Marie Beltran,beltran@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-03-24 21:26:51,2022-03-25 21:24:33,2022-03-30 14:25:40,1,100%,Amyris Code of Business Conduct and Ethics,2022-03-30 14:25:40 -449,4231,John Jacobs,jjacobs@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-03-24 04:30:01,2022-03-24 04:30:16,2022-03-24 06:07:17,1,100%,Amyris Code of Business Conduct and Ethics,2022-03-24 06:07:17 -450,4240,Tyler Barrett,tbarrett@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-03-23 14:52:39,2022-03-23 16:35:30,2022-03-23 16:35:30,1,100%,Amyris Code of Business Conduct and Ethics,2022-03-23 16:35:30 -451,4120,Luciano Camilo,lcamilo@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-03-22 23:59:49,2022-10-10 20:59:52,,2,0%,, -452,4120,Luciano Camilo,lcamilo@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-03-22 23:59:49,2022-03-23 12:59:30,2022-03-23 12:59:31,1,100%,Amyris Code of Business Conduct and Ethics,2022-03-23 12:59:31 -453,4230,Anthony Ford,anthonyford@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-03-22 18:42:01,2022-03-29 14:39:25,2022-03-29 15:08:32,1,100%,Amyris Code of Business Conduct and Ethics,2022-03-29 15:08:32 -454,4153,Samantha Jones,sjones@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-03-22 14:39:09,2022-04-04 19:11:36,2022-04-05 14:11:01,1,100%,Amyris Code of Business Conduct and Ethics,2022-04-05 14:11:01 -455,4031,Pooja Solanki,solanki@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-03-21 22:50:26,2022-03-21 22:50:29,2022-04-01 14:17:47,1,100%,Amyris Code of Business Conduct and Ethics,2022-04-01 14:17:47 -456,4181,Johnson Truong,johnsontruong@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-03-21 22:40:47,2022-03-21 22:40:56,2022-03-23 18:52:43,1,100%,Amyris Code of Business Conduct and Ethics,2022-03-23 18:52:43 -457,4118,Isabele Maran,imaran@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-03-21 14:25:56,2022-03-21 14:26:05,,1,0%,, -458,3282,Marie Feliciano,feliciano@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-03-21 14:00:35,2022-03-21 14:00:44,2022-03-21 15:46:25,1,100%,Amyris Code of Business Conduct and Ethics,2022-03-21 15:46:25 -459,4227,Tina Randolph,trandolph@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-03-20 22:52:42,2022-03-20 22:52:52,2022-03-24 23:15:20,1,100%,Amyris Code of Business Conduct and Ethics,2022-03-24 23:15:20 -460,4223,Adrianna Gray,agray@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-03-19 19:17:35,2022-03-19 19:17:56,2022-03-20 21:26:36,1,100%,Amyris Code of Business Conduct and Ethics,2022-03-20 21:26:36 -461,3991,Tahanee Bean,bean@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-03-18 22:24:27,2022-03-18 22:24:34,,1,0%,, -462,4192,Matt Kelly,mkelly@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-03-18 21:40:27,2022-03-18 21:40:35,2022-03-21 21:16:42,1,100%,Amyris Code of Business Conduct and Ethics,2022-03-21 21:16:42 -463,4232,Danielle Jacobs,djacobs@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-03-18 16:09:55,2022-03-18 16:10:03,,1,0%,, -464,4179,Mary O'Brien,obrien@amyris.com,New York Managers Anti-Harassment Training,3,2022-03-18 14:17:13,2022-03-18 14:18:13,,1,67%,Receiving Complaints,2022-03-18 15:58:35 -465,4179,Mary O'Brien,obrien@amyris.com,New York Managers Anti-Harassment Training,5,2022-03-18 14:17:13,2022-04-08 14:52:17,,2,67%,Receiving Complaints,2022-04-08 18:29:45 -466,2909,Carla Oliveira,ucp-caoliveira@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-03-18 13:49:51,2022-03-18 13:50:03,2022-11-24 11:46:58,1,100%,Amyris Code of Business Conduct and Ethics,2022-11-24 11:46:58 -467,4182,Sophia Santos,ucp-sophiasantos@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-03-18 12:06:59,2022-03-18 12:07:07,2022-03-29 14:09:57,1,100%,Amyris Code of Business Conduct and Ethics,2022-03-29 14:09:57 -468,4141,Marco Sales,marcosales@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-03-18 10:27:35,2022-03-18 10:27:45,2022-03-25 15:26:08,1,100%,Amyris Code of Business Conduct and Ethics,2022-03-25 15:26:08 -469,4221,Marybeth Pyle,mpyle@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-03-18 00:06:55,2022-03-18 00:07:03,2022-03-23 22:17:10,1,100%,Amyris Code of Business Conduct and Ethics,2022-03-23 22:17:10 -470,3636,Samantha Blumberg,blumberg@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-03-17 21:53:41,,,1,0%,, -471,4224,Gabrielle Cruz,gcruz@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-03-17 20:36:53,2022-03-17 20:37:02,2022-03-17 21:58:14,1,100%,Amyris Code of Business Conduct and Ethics,2022-03-17 21:58:14 -472,4217,Debra Carroll,dcarroll@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-03-17 20:28:38,2022-03-17 20:28:42,2022-03-18 21:50:24,1,100%,Amyris Code of Business Conduct and Ethics,2022-03-18 21:50:24 -473,4225,Natasha Rao,nrao@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-03-17 16:56:59,2022-03-17 16:58:15,2022-03-17 19:49:31,1,100%,Amyris Code of Business Conduct and Ethics,2022-03-17 19:49:31 -474,3912,Emmy Burns,eburns@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-03-17 16:51:23,2022-03-17 16:51:35,,1,0%,, -475,4220,Dylan LaRochelle,dlarochelle@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-03-17 16:42:32,2022-03-17 16:42:42,2022-03-18 18:47:17,1,100%,Amyris Code of Business Conduct and Ethics,2022-03-18 18:47:17 -476,4233,Vanessa Ford,vford@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-03-16 23:40:55,2022-03-16 23:41:01,2022-03-17 19:58:41,1,100%,Amyris Code of Business Conduct and Ethics,2022-03-17 19:58:41 -477,4191,Janet Herico,herico@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-03-16 23:39:10,2022-03-16 23:47:29,2022-03-17 01:28:11,1,100%,Amyris Code of Business Conduct and Ethics,2022-03-17 01:28:11 -478,4104,Luiz Botelho,lbotelho@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-03-16 22:26:19,2022-03-16 22:26:26,2022-04-05 15:03:34,1,100%,Amyris Code of Business Conduct and Ethics,2022-04-05 15:03:34 -479,4229,Mallorie Jewell,mjewell@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-03-16 16:59:22,2022-03-16 16:59:26,2022-03-16 17:37:07,1,100%,Amyris Code of Business Conduct and Ethics,2022-03-16 17:37:07 -480,3115,Rafael Lopes,rlopes@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-03-16 16:43:05,2022-03-16 16:43:14,2022-03-17 11:11:47,1,100%,Amyris Code of Business Conduct and Ethics,2022-03-17 11:11:47 -481,4179,Mary O'Brien,obrien@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-03-16 15:20:45,2022-03-16 15:20:52,2022-03-16 21:37:34,1,100%,Amyris Code of Business Conduct and Ethics,2022-03-16 21:37:34 -482,4087,Ashley Holmes,aholmes@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-03-15 22:24:53,2022-03-15 22:24:59,2022-03-23 01:37:07,1,100%,Amyris Code of Business Conduct and Ethics,2022-03-23 01:37:07 -483,4190,Melissa Lopez,mlopez@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-03-15 20:29:12,2022-03-15 20:31:26,2022-03-15 22:31:24,1,100%,Amyris Code of Business Conduct and Ethics,2022-03-15 22:31:24 -484,4187,Neena Sajesh,sajesh@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-03-15 17:42:34,2022-03-15 17:42:40,2022-03-16 18:41:29,1,100%,Amyris Code of Business Conduct and Ethics,2022-03-16 18:41:29 -485,2917,Joana Fundo,ucp-jfundo@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-03-15 16:56:06,2022-12-20 14:47:15,,2,0%,, -486,2917,Joana Fundo,ucp-jfundo@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-03-15 16:56:06,2022-03-15 16:56:18,2022-03-24 09:21:40,1,100%,Amyris Code of Business Conduct and Ethics,2022-03-24 09:21:40 -487,4026,Cláudia Popov,ucp-claudiapopov@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-03-15 15:40:46,2022-03-15 15:41:02,2022-03-17 16:55:32,1,100%,Amyris Code of Business Conduct and Ethics,2022-03-17 16:55:32 -488,2928,Nelson Carvalho,ucp-ncarvalho@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-03-15 15:36:08,2022-03-15 15:36:21,2022-03-20 21:55:44,1,100%,Amyris Code of Business Conduct and Ethics,2022-03-20 21:55:44 -489,2920,Joao Pedro Silva,ucp-jpsilva@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-03-15 15:08:38,2022-03-15 15:08:46,2022-03-15 16:11:43,1,100%,Amyris Code of Business Conduct and Ethics,2022-03-15 16:11:43 -490,2938,Silvia Pedrosa,ucp-spedrosa@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-03-15 13:37:55,2022-03-15 13:38:49,2022-03-15 16:57:43,1,100%,Amyris Code of Business Conduct and Ethics,2022-03-15 16:57:43 -491,2906,Ana Sofia Oliveira,ucp-asoliveira@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-03-15 13:23:36,2022-03-15 13:23:44,2022-03-16 15:18:04,1,100%,Amyris Code of Business Conduct and Ethics,2022-03-16 15:18:04 -492,2901,Ana Luisa Fernandes,ucp-alfernandes@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-03-15 11:36:38,2022-03-15 11:36:45,2022-03-15 16:55:36,1,100%,Amyris Code of Business Conduct and Ethics,2022-03-15 16:55:36 -493,4158,Rigi Andrade,randrade@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-03-14 23:25:08,2022-03-14 23:25:14,2022-03-15 00:57:12,1,100%,Amyris Code of Business Conduct and Ethics,2022-03-15 00:57:12 -494,2935,Ricardo Freixo,ucp-rfreixo@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-03-14 15:27:20,2022-03-14 15:27:28,2022-03-15 11:15:04,1,100%,Amyris Code of Business Conduct and Ethics,2022-03-15 11:15:04 -495,2902,Ana Margarida Faustino,ucp-amfaustino@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-03-14 14:39:45,2022-03-14 14:39:54,2022-03-15 15:56:12,1,100%,Amyris Code of Business Conduct and Ethics,2022-03-15 15:56:12 -496,2897,Alessandra Ribeiro,ucp-aribeiro@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-03-14 14:32:28,2022-03-14 14:32:40,2022-03-14 16:16:47,1,100%,Amyris Code of Business Conduct and Ethics,2022-03-14 16:16:47 -497,3933,Ana Pereira,abpereira@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-03-14 13:47:07,2022-03-14 13:47:14,2022-03-14 14:54:01,1,100%,Amyris Code of Business Conduct and Ethics,2022-03-14 14:54:01 -498,4034,Heather Monaco,monaco@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-03-12 01:34:49,2022-03-12 01:34:58,2022-03-12 03:01:00,1,100%,Amyris Code of Business Conduct and Ethics,2022-03-12 03:01:00 -499,3768,Giovanna Massucato,gmassucato@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-03-11 20:29:36,2022-03-11 20:29:45,,1,0%,, -500,3918,Naomi Koo,koo@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-03-10 00:38:00,2022-03-10 00:39:10,,1,0%,, -501,3121,Hellen Jesus,hjesus@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-03-09 14:22:52,2022-03-09 14:23:02,,1,0%,, -502,4155,Anna Gaynor,gaynor@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-03-08 16:57:34,2022-03-08 16:57:44,2022-03-08 19:13:26,1,100%,Amyris Code of Business Conduct and Ethics,2022-03-08 19:13:26 -503,2843,Stacey Badgewick-Rodrigues,srodrigues@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-03-08 00:00:18,2022-03-08 00:00:30,,1,0%,, -504,4005,LaTrenda Daniels,ldaniels@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-03-07 22:57:17,2022-03-07 22:57:22,2022-03-08 06:30:10,1,100%,Amyris Code of Business Conduct and Ethics,2022-03-08 06:30:10 -505,2419,Natalie Anselmo,anselmo@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-03-07 21:47:03,2022-03-07 21:47:11,2022-03-09 19:55:19,1,100%,Amyris Code of Business Conduct and Ethics,2022-03-09 19:55:19 -506,4103,Joao Luiz Silva,jcsilva@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-03-07 18:28:18,2022-04-08 02:50:22,,1,0%,, -507,3273,Adrian Cabrero,cabrero@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-03-07 02:11:52,2022-03-07 02:12:04,,1,0%,, -508,3949,Rodrigo Morais,rmorais@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-03-06 17:39:58,2022-03-06 17:40:59,2022-03-06 18:56:41,1,100%,Amyris Code of Business Conduct and Ethics,2022-03-06 18:56:41 -509,3430,Ann Wong,annwong@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-03-05 04:43:51,2022-03-31 05:29:42,2022-04-13 04:01:58,1,100%,Amyris Code of Business Conduct and Ethics,2022-04-13 04:01:58 -510,4037,Andrea Stadelman,stadelman@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-03-05 00:53:10,2022-03-05 00:53:15,2022-03-08 00:44:12,1,100%,Amyris Code of Business Conduct and Ethics,2022-03-08 00:44:12 -511,4107,Jodi Shulman,shulman@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-03-04 21:41:42,2022-03-04 21:41:51,2022-03-15 01:02:59,1,100%,Amyris Code of Business Conduct and Ethics,2022-03-15 01:02:59 -512,3931,Melissa Yokoyama,myokoyama@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-03-02 17:29:50,2022-03-02 17:29:59,2022-05-11 14:58:13,1,100%,Amyris Code of Business Conduct and Ethics,2022-05-11 14:58:13 -513,4133,Karolina Montgomery,montgomery@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-03-02 15:04:52,2022-03-02 15:05:00,2022-03-02 17:37:41,1,100%,Amyris Code of Business Conduct and Ethics,2022-03-02 17:37:41 -514,4047,Frederick Horwood,horwood@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-03-01 19:37:42,2022-03-01 19:39:19,2022-03-01 22:35:47,1,100%,Amyris Code of Business Conduct and Ethics,2022-03-01 22:35:47 -515,4042,Mary Catherine Pangilinan,pangilinan@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-03-01 17:07:51,2022-03-01 17:08:32,2022-03-01 21:48:21,1,100%,Amyris Code of Business Conduct and Ethics,2022-03-01 21:48:21 -516,4143,Aleya Rochelle,rochelle@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-02-28 23:45:36,2022-02-28 23:45:43,2022-03-02 20:15:12,1,100%,Amyris Code of Business Conduct and Ethics,2022-03-02 20:15:12 -517,3989,Andrea Omohundro,omohundro@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-02-28 20:25:55,2022-02-28 20:26:02,2022-03-01 17:51:32,1,100%,Amyris Code of Business Conduct and Ethics,2022-03-01 17:51:32 -518,3963,Edith Ponnath,ponnath@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-02-28 17:01:17,2022-02-28 17:01:25,2022-03-01 03:21:50,1,100%,Amyris Code of Business Conduct and Ethics,2022-03-01 03:21:50 -519,3214,Tânia Neto,ucp-tanianeto@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-02-28 15:45:39,2022-02-28 15:47:04,2022-02-28 16:14:06,1,100%,Amyris Code of Business Conduct and Ethics,2022-02-28 16:14:06 -520,3982,Jose Maciel,maciel@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-02-25 23:51:00,2022-02-25 23:51:05,2022-11-28 22:13:20,1,100%,Amyris Code of Business Conduct and Ethics,2022-11-28 22:13:20 -521,3785,Jenna Jolls,jolls@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-02-25 20:19:50,2022-02-25 20:19:56,2022-11-14 18:41:20,1,100%,Amyris Code of Business Conduct and Ethics,2022-11-14 18:41:20 -522,4063,Victoria Ruter,ruter@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-02-24 21:17:18,2022-02-24 21:19:31,2022-02-24 22:56:06,1,100%,Amyris Code of Business Conduct and Ethics,2022-02-24 22:56:06 -523,2922,Luis Alcala,ucp-lalcala@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-02-24 16:25:20,2022-02-24 16:25:28,2022-11-15 12:22:28,1,100%,Amyris Code of Business Conduct and Ethics,2022-11-15 12:22:28 -524,4142,Jessica Oliveira,jessica.oliveira@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-02-24 13:59:15,2022-02-24 13:59:21,2022-11-22 17:57:50,1,100%,Amyris Code of Business Conduct and Ethics,2022-11-22 17:57:50 -525,3662,Carla Souza,ucp-carlasouza@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-02-23 14:40:08,2022-02-23 14:40:16,2022-03-14 16:14:55,1,100%,Amyris Code of Business Conduct and Ethics,2022-03-14 16:14:55 -526,3761,Viramrinder Meharu,meharu@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-02-22 23:17:00,2022-02-22 23:17:08,,1,0%,, -527,4100,Audrey Orlando,orlando@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-02-22 23:12:32,2022-02-22 23:12:41,2022-02-23 14:49:59,1,100%,Amyris Code of Business Conduct and Ethics,2022-02-23 14:49:59 -528,3985,Mikhail Motornov,motornov@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-02-22 16:08:05,2022-02-22 16:08:16,2022-02-22 19:04:23,1,100%,Amyris Code of Business Conduct and Ethics,2022-02-22 19:04:23 -529,2929,Oscar Ramos,ucp-oramos@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-02-22 15:03:22,2022-02-22 15:03:30,2022-11-28 11:23:32,1,100%,Amyris Code of Business Conduct and Ethics,2022-11-28 11:23:32 -530,4085,Bruno Emanuelli,bemanuelli@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-02-22 14:14:02,2022-02-22 14:14:12,2022-02-23 16:37:34,1,100%,Amyris Code of Business Conduct and Ethics,2022-02-23 16:37:34 -531,4102,Diogo Fernandes,dfernandes@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-02-21 15:32:09,2022-02-21 15:32:15,2022-02-21 16:46:31,1,100%,Amyris Code of Business Conduct and Ethics,2022-02-21 16:46:31 -532,3247,Tânia Leal,ucp-tanialeal@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-02-21 12:10:13,2022-02-21 12:10:20,2022-03-04 17:11:59,1,100%,Amyris Code of Business Conduct and Ethics,2022-03-04 17:11:59 -533,2479,Oscar Urquiza,urquiza@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-02-18 17:34:48,2022-02-18 17:34:55,2022-07-08 21:06:39,1,100%,Amyris Code of Business Conduct and Ethics,2022-07-08 21:06:39 -534,4013,Pilar Morais,pmorais@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-02-18 16:19:48,2022-03-01 22:43:46,2022-03-02 01:39:08,1,100%,Amyris Code of Business Conduct and Ethics,2022-03-02 01:39:08 -535,2913,Francisca Bastos,ucp-fbastos@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-02-18 14:40:09,2022-04-04 13:51:54,2022-12-05 15:04:00,1,100%,Amyris Code of Business Conduct and Ethics,2022-12-05 15:04:00 -536,2907,Bruno Horta,ucp-bhorta@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-02-17 13:57:09,2022-02-17 13:57:17,2022-11-30 17:07:47,1,100%,Amyris Code of Business Conduct and Ethics,2022-11-30 17:07:47 -537,4090,Rhoda Guilbeaux,guilbeaux@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-02-16 21:04:43,2022-02-16 21:04:51,2022-02-16 23:08:17,1,100%,Amyris Code of Business Conduct and Ethics,2022-02-16 23:08:17 -538,3648,Philippe Ramos,ucp-philipperamos@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-02-16 17:01:52,2022-02-16 17:01:59,2022-02-16 18:52:24,1,100%,Amyris Code of Business Conduct and Ethics,2022-02-16 18:52:24 -539,2910,Carla Pereira,ucp-cpereira@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-02-16 16:55:12,2022-02-16 16:55:21,2022-02-18 14:17:42,1,100%,Amyris Code of Business Conduct and Ethics,2022-02-18 14:17:42 -540,4050,Tiaja Jacks,jacks@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-02-15 19:00:41,2022-02-15 19:00:47,2022-02-16 00:07:43,1,100%,Amyris Code of Business Conduct and Ethics,2022-02-16 00:07:43 -541,2969,Thao Anh Nguyen,thaonguyen@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-02-14 19:31:45,2022-02-14 19:31:51,2022-02-14 20:53:31,1,100%,Amyris Code of Business Conduct and Ethics,2022-02-14 20:53:31 -542,4027,Theresa DiMasi,dimasi@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-02-14 14:59:17,2022-02-14 14:59:32,2022-02-14 21:07:23,1,100%,Amyris Code of Business Conduct and Ethics,2022-02-14 21:07:23 -543,4035,Francis Handy,handy@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-02-09 21:39:00,2022-02-09 21:39:06,2022-02-10 05:11:14,1,100%,Amyris Code of Business Conduct and Ethics,2022-02-10 05:11:14 -544,3379,Molly Barnes,mbarnes@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-02-09 01:16:56,2022-02-09 01:17:01,,1,0%,, -545,3979,Abrahim El Gamal,elgamal@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-02-08 18:42:17,2022-02-08 18:42:23,2022-02-10 00:53:52,1,100%,Amyris Code of Business Conduct and Ethics,2022-02-10 00:53:52 -546,3294,Nadia Yousif,yousif@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-02-08 02:54:09,2022-02-08 02:54:21,2022-11-15 00:00:08,1,100%,Amyris Code of Business Conduct and Ethics,2022-11-15 00:00:08 -547,4036,Linda Shamsi,shamsi@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-02-07 23:33:25,2022-02-07 23:33:30,2022-02-08 00:48:32,1,100%,Amyris Code of Business Conduct and Ethics,2022-02-08 00:48:32 -548,4075,Melissa Dreyer,dreyer@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-02-07 21:39:47,2022-02-07 21:39:58,2022-02-07 23:29:07,1,100%,Amyris Code of Business Conduct and Ethics,2022-02-07 23:29:07 -549,3892,Bonnie McCracken,mccracken@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-02-07 19:39:06,2022-02-07 19:39:13,,1,0%,, -550,3775,Mónica Ribeiro,monica.ribeiro@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-02-07 15:43:43,2022-03-14 15:26:02,2022-03-14 17:15:04,1,100%,Amyris Code of Business Conduct and Ethics,2022-03-14 17:15:04 -551,3156,Sara Fernandes,sfernandes@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-02-07 15:43:37,2022-02-08 13:58:44,2022-02-22 16:03:28,1,100%,Amyris Code of Business Conduct and Ethics,2022-02-22 16:03:28 -552,2682,Ana Catarina Lopes,alopes@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-02-07 15:01:23,2022-11-23 12:16:51,2022-11-23 17:44:20,1,100%,Amyris Code of Business Conduct and Ethics,2022-11-23 17:44:20 -553,4052,Joana Rijo,rijo@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-02-07 13:53:55,2022-02-07 13:54:04,2022-02-08 11:19:13,1,100%,Amyris Code of Business Conduct and Ethics,2022-02-08 11:19:13 -554,4033,Erica Welch,ewelch@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-02-02 20:03:47,2022-02-02 20:03:53,,1,0%,, -555,3609,Katie King,kking@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-02-01 23:40:10,,,1,0%,, -556,3150,Ines Ribeiro,inesribeiro@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-02-01 22:55:14,2022-05-23 13:09:14,2022-11-30 21:19:35,1,100%,Amyris Code of Business Conduct and Ethics,2022-11-30 21:19:35 -557,4032,Jamie Arvelo,arvelo@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-02-01 20:51:28,2022-02-01 20:51:45,2022-03-09 18:59:17,1,100%,Amyris Code of Business Conduct and Ethics,2022-03-09 18:59:17 -558,3455,Gayane Bedrosian,bedrosian@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-02-01 19:41:04,2022-02-01 19:41:14,,1,0%,, -559,3978,Amineh Aghabali,aghabali@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-02-01 02:20:08,2022-02-01 02:20:15,2022-02-01 03:04:43,1,100%,Amyris Code of Business Conduct and Ethics,2022-02-01 03:04:43 -560,4048,Jacqueline Smith,jksmith@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-02-01 01:25:51,2022-02-01 01:25:59,2022-02-01 02:42:58,1,100%,Amyris Code of Business Conduct and Ethics,2022-02-01 02:42:58 -561,2700,Zhongtian Zhang,nzhang@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-01-30 07:15:43,2022-01-30 07:15:50,2022-11-14 20:22:39,1,100%,Amyris Code of Business Conduct and Ethics,2022-11-14 20:22:39 -562,3882,Janelle Nguyen,jnguyen@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-01-27 17:30:02,2022-01-27 17:30:07,2022-01-27 19:58:46,1,100%,Amyris Code of Business Conduct and Ethics,2022-01-27 19:58:46 -563,3883,Niles Shyu,shyu@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-01-27 17:23:46,2022-01-27 17:23:50,2022-01-27 19:04:49,1,100%,Amyris Code of Business Conduct and Ethics,2022-01-27 19:04:49 -564,3988,Afonso Videira,videira@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-01-26 11:39:18,2022-01-26 11:39:37,2022-02-08 14:08:30,1,100%,Amyris Code of Business Conduct and Ethics,2022-02-08 14:08:30 -565,2719,Tiago Silva,tiagosilva@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-01-26 11:07:26,2022-01-26 11:07:33,,1,0%,, -566,4029,Tayde Barba-Ledesma,barba@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-01-24 19:00:47,2022-01-26 01:07:28,2022-01-26 23:40:14,1,100%,Amyris Code of Business Conduct and Ethics,2022-01-26 23:40:14 -567,3955,Rodrigo Muller,rmuller@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-01-24 18:35:08,2022-01-24 18:35:26,2022-01-24 20:32:29,1,100%,Amyris Code of Business Conduct and Ethics,2022-01-24 20:32:29 -568,4018,Kenneth Norville,norville@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-01-23 13:40:43,2022-01-23 13:40:55,2022-01-31 21:22:38,1,100%,Amyris Code of Business Conduct and Ethics,2022-01-31 21:22:38 -569,3766,Stephanie Tsang,stsang@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-01-21 23:21:23,2022-01-21 23:21:39,,1,0%,, -570,3916,Shayna Ware,ware@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-01-21 22:30:40,2022-01-21 22:31:18,2022-03-07 21:46:40,1,100%,Amyris Code of Business Conduct and Ethics,2022-03-07 21:46:40 -571,3915,Mindy Romero,mindy.romero@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-01-21 14:05:23,2022-01-21 14:05:40,2022-01-21 15:50:56,1,100%,Amyris Code of Business Conduct and Ethics,2022-01-21 15:50:56 -572,3747,Michael Ward,mward@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-01-21 09:18:57,2022-01-21 09:19:05,2022-12-13 15:39:17,1,100%,Amyris Code of Business Conduct and Ethics,2022-12-13 15:39:17 -573,3993,Angela Hicks,hicks@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-01-21 01:31:01,2022-01-21 01:31:11,2022-01-21 03:30:08,1,100%,Amyris Code of Business Conduct and Ethics,2022-01-21 03:30:08 -574,3995,Chuen Kwok,kwok@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-01-20 21:07:41,2022-01-20 21:07:45,2022-01-20 21:27:18,1,100%,Amyris Code of Business Conduct and Ethics,2022-01-20 21:27:18 -575,4017,Cara Justine Ma,teoong@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-01-20 20:59:04,2022-01-20 20:59:08,2022-01-20 21:29:29,1,100%,Amyris Code of Business Conduct and Ethics,2022-01-20 21:29:29 -576,3909,Dapeng Ding,dding@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-01-20 17:20:12,2022-01-20 17:20:23,,1,0%,, -577,3817,Cristina Tosta,tosta@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-01-20 09:09:38,2022-01-20 09:09:43,,1,0%,, -578,3975,Jennifer Tejada,tejada@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-01-19 19:15:05,2022-01-19 19:15:20,2022-02-08 00:38:40,1,100%,Amyris Code of Business Conduct and Ethics,2022-02-08 00:38:40 -579,3994,David Hamilton,dhamilton@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-01-18 23:52:01,2022-01-18 23:52:16,2022-01-19 01:34:01,1,100%,Amyris Code of Business Conduct and Ethics,2022-01-19 01:34:01 -580,3977,Emily Kim,ekim@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-01-18 20:13:55,2022-01-18 20:14:00,2022-01-19 23:57:44,1,100%,Amyris Code of Business Conduct and Ethics,2022-01-19 23:57:44 -581,3965,Oksana Wright,wright@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-01-18 15:25:59,2022-01-18 15:26:06,2022-01-19 16:47:09,1,100%,Amyris Code of Business Conduct and Ethics,2022-01-19 16:47:09 -582,3904,Lana Bernstein,bernstein@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-01-18 04:04:08,2022-01-18 04:04:25,2022-01-26 03:21:15,1,100%,Amyris Code of Business Conduct and Ethics,2022-01-26 03:21:15 -583,4007,Neil Pollack,pollack@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-01-17 22:23:58,2022-01-17 22:24:03,2022-01-17 23:08:46,1,100%,Amyris Code of Business Conduct and Ethics,2022-01-17 23:08:46 -584,2681,Luis Carlos Carvalho,lcarvalho@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-01-17 15:03:46,2022-01-17 15:04:17,2022-01-18 15:27:00,1,100%,Amyris Code of Business Conduct and Ethics,2022-01-18 15:27:00 -585,3973,Marta Marin,mmarin@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-01-14 00:06:31,2022-01-14 00:06:51,2022-01-14 02:27:26,1,100%,Amyris Code of Business Conduct and Ethics,2022-01-14 02:27:26 -586,3943,Anais Green,agreen@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-01-12 22:37:38,2022-01-12 22:37:54,2022-01-13 03:21:58,1,100%,Amyris Code of Business Conduct and Ethics,2022-01-13 03:21:58 -587,3976,Ricardo De La Pena Munoz,delapena@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-01-12 16:47:21,2022-01-12 16:48:47,2022-01-12 23:10:07,1,100%,Amyris Code of Business Conduct and Ethics,2022-01-12 23:10:07 -588,3972,Joseph Singh,josephsingh@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-01-12 00:05:30,2022-01-12 00:05:34,2022-01-12 01:35:29,1,100%,Amyris Code of Business Conduct and Ethics,2022-01-12 01:35:29 -589,3984,Lydia Le Maire,lemaire@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-01-11 18:33:37,2022-01-11 18:33:44,2022-01-14 00:36:11,1,100%,Amyris Code of Business Conduct and Ethics,2022-01-14 00:36:11 -590,3964,Colin Schatz,schatz@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-01-11 17:13:13,2022-01-11 17:13:19,2022-01-11 23:40:54,1,100%,Amyris Code of Business Conduct and Ethics,2022-01-11 23:40:54 -591,3962,Sureepoul Pattumma,pattumma@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-01-11 00:27:24,2022-01-11 00:27:28,2022-01-11 22:43:45,1,100%,Amyris Code of Business Conduct and Ethics,2022-01-11 22:43:45 -592,3983,Latrice Matthews,lmatthews@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-01-10 21:42:08,2022-01-10 21:42:23,2022-01-11 00:12:33,1,100%,Amyris Code of Business Conduct and Ethics,2022-01-11 00:12:33 -593,3957,Collin McGregor,cmcgregor@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-01-10 17:41:37,2022-01-10 17:41:41,2022-01-10 18:56:35,1,100%,Amyris Code of Business Conduct and Ethics,2022-01-10 18:56:35 -594,3959,Hope-Denée Fortier,fortier@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-01-10 16:27:49,2022-01-10 16:27:57,,1,0%,, -595,3000,Josue Doria,doria@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-01-10 15:44:32,2022-01-10 15:44:38,,1,0%,, -596,3952,Leonardo Espirito Santo,lsanto@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-01-10 14:22:18,2022-01-10 14:22:31,2022-01-26 22:08:46,1,100%,Amyris Code of Business Conduct and Ethics,2022-01-26 22:08:46 -597,3917,Jennifer Lamonica,lamonica@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-01-07 00:04:45,2022-01-07 00:04:54,,1,0%,, -598,3736,Mark Gerhard,gerhard@amyris.com,Code of Business Conduct and Ethics,LIVE,2022-01-03 06:35:51,2022-01-03 06:35:57,2022-12-10 13:24:44,1,100%,Amyris Code of Business Conduct and Ethics,2022-12-10 13:24:44 -599,3587,Alexander Marciniak,marciniak@amyris.com,Code of Business Conduct and Ethics,LIVE,2021-12-30 22:28:53,2021-12-30 22:33:22,2022-01-10 02:03:02,1,100%,Amyris Code of Business Conduct and Ethics,2022-01-10 02:03:02 -600,3876,Alicia Sandoval,aliciasandoval@amyris.com,Code of Business Conduct and Ethics,LIVE,2021-12-30 04:09:21,2021-12-30 19:54:55,2022-01-11 05:45:41,1,100%,Amyris Code of Business Conduct and Ethics,2022-01-11 05:45:41 -601,3163,Helena Moreira,hmoreira@amyris.com,Code of Business Conduct and Ethics,LIVE,2021-12-29 18:56:34,2021-12-30 15:09:50,2022-05-17 14:01:01,1,100%,Amyris Code of Business Conduct and Ethics,2022-05-17 14:01:01 -602,3850,Michael Maldonado,maldonado@amyris.com,Code of Business Conduct and Ethics,LIVE,2021-12-29 05:14:13,2021-12-29 05:14:22,2022-01-01 04:10:49,1,100%,Amyris Code of Business Conduct and Ethics,2022-01-01 04:10:49 -603,3802,Rheena Joi Razon,razon@amyris.com,Code of Business Conduct and Ethics,LIVE,2021-12-28 21:45:48,2022-01-12 16:09:43,2022-04-01 18:42:19,1,100%,Amyris Code of Business Conduct and Ethics,2022-04-01 18:42:19 -604,3884,Gretchen Suan,suan@amyris.com,Code of Business Conduct and Ethics,LIVE,2021-12-20 17:21:24,2021-12-20 17:21:30,2022-01-25 20:17:18,1,100%,Amyris Code of Business Conduct and Ethics,2022-01-25 20:17:18 -605,3938,Eyinojuoluwa Ajagbe,ajagbe@amyris.com,Code of Business Conduct and Ethics,LIVE,2021-12-13 20:31:56,2021-12-13 20:32:14,2022-01-05 22:59:26,1,100%,Amyris Code of Business Conduct and Ethics,2022-01-05 22:59:26 -606,3898,Gerardo Bueno,gbueno@amyris.com,Code of Business Conduct and Ethics,LIVE,2021-12-10 18:42:29,2021-12-10 18:42:43,2022-01-15 00:56:55,1,100%,Amyris Code of Business Conduct and Ethics,2022-01-15 00:56:55 -607,3896,Gregory Short,gshort@amyris.com,Code of Business Conduct and Ethics,LIVE,2021-12-07 16:15:55,2021-12-07 16:16:06,2022-02-03 01:29:55,1,100%,Amyris Code of Business Conduct and Ethics,2022-02-03 01:29:55 -608,3861,Renee Irwin,irwin@amyris.com,Code of Business Conduct and Ethics,LIVE,2021-11-29 23:07:12,2021-11-29 23:07:17,2022-11-22 21:42:17,1,100%,Amyris Code of Business Conduct and Ethics,2022-11-22 21:42:17 -609,3749,Eleanor Frid,frid@amyris.com,Code of Business Conduct and Ethics,LIVE,2021-11-23 19:28:01,2021-11-23 19:28:10,2022-12-08 16:49:04,1,100%,Amyris Code of Business Conduct and Ethics,2022-12-08 16:49:04 -610,3684,Ana Soban Fernandes Kertesz,kertesz@amyris.com,Code of Business Conduct and Ethics,LIVE,2021-11-15 03:23:43,2021-11-15 03:23:50,2022-01-06 11:47:18,1,100%,Amyris Code of Business Conduct and Ethics,2022-01-06 11:47:18 -611,3634,Francisco Bruno Gomes,fbgomes@amyris.com,Code of Business Conduct and Ethics,LIVE,2021-10-20 18:45:09,2021-10-20 18:45:15,2022-01-17 14:01:02,1,100%,Amyris Code of Business Conduct and Ethics,2022-01-17 14:01:02 -612,2804,Giovanna Carvalho,gcarvalho@amyris.com,Code of Business Conduct and Ethics,LIVE,2021-10-04 16:26:29,2022-04-25 17:19:45,2022-04-25 17:50:07,2,100%,Amyris Code of Business Conduct and Ethics,2022-04-25 17:50:07 -613,2804,Giovanna Carvalho,gcarvalho@amyris.com,Code of Business Conduct and Ethics,LIVE,2021-10-04 16:26:29,2021-10-04 16:26:45,2022-03-29 18:55:39,1,100%,Amyris Code of Business Conduct and Ethics,2022-03-29 18:55:39 -614,3284,Rebecca Kahn,kahn@amyris.com,Code of Business Conduct and Ethics,LIVE,2021-09-21 16:13:50,2022-10-14 16:36:39,2022-10-14 18:36:03,1,100%,Amyris Code of Business Conduct and Ethics,2022-10-14 18:36:03 -615,2849,Wallace Ruza,wruza@amyris.com,Code of Business Conduct and Ethics,LIVE,2021-09-17 19:59:43,2021-09-17 19:59:56,2022-04-13 12:57:53,1,100%,Amyris Code of Business Conduct and Ethics,2022-04-13 12:57:53 -616,2679,Joana Pereira,joanapereira@amyris.com,Code of Business Conduct and Ethics,LIVE,2021-09-15 15:13:30,2021-09-15 15:13:37,2022-02-11 15:59:30,1,100%,Amyris Code of Business Conduct and Ethics,2022-02-11 15:59:30 -617,3612,Elizabeth Amsellem,amsellem@amyris.com,Code of Business Conduct and Ethics,LIVE,2021-09-13 21:33:32,2022-05-05 18:00:05,2022-10-12 17:41:53,2,100%,Amyris Code of Business Conduct and Ethics,2022-10-12 17:41:53 -618,3427,Ashley Taliento,taliento@amyris.com,Code of Business Conduct and Ethics,LIVE,2021-09-13 16:34:49,2022-03-31 17:48:36,2022-07-18 00:54:18,2,100%,Amyris Code of Business Conduct and Ethics,2022-07-18 00:54:18 -619,2677,Erdem Carsanba,carsanba@amyris.com,Code of Business Conduct and Ethics,LIVE,2021-09-06 09:35:39,2021-09-06 09:36:02,2022-11-25 14:28:49,1,100%,Amyris Code of Business Conduct and Ethics,2022-11-25 14:28:49 -620,2816,Carlos Miguel Ferreira,carlosferreira@amyris.com,Code of Business Conduct and Ethics,LIVE,2021-08-31 07:31:22,2021-09-01 19:13:34,2022-12-02 08:49:11,2,100%,Amyris Code of Business Conduct and Ethics,2022-12-02 08:49:11 -621,2237,Piero Sartori,sartori@amyris.com,Code of Business Conduct and Ethics,LIVE,2021-08-30 15:45:10,2021-08-30 15:45:21,2022-05-03 20:38:00,1,100%,Amyris Code of Business Conduct and Ethics,2022-05-03 20:38:00 -622,3244,Maria Antsiferova,antsiferova@amyris.com,Code of Business Conduct and Ethics,LIVE,2021-08-26 12:10:04,2021-08-26 12:10:12,2022-12-05 16:23:10,1,100%,Amyris Code of Business Conduct and Ethics,2022-12-05 16:23:10 -623,2974,Ju Eun Jeon,jeon@amyris.com,Code of Business Conduct and Ethics,LIVE,2021-08-25 17:44:00,2021-08-25 17:44:12,2022-05-04 16:13:23,1,100%,Amyris Code of Business Conduct and Ethics,2022-05-04 16:13:23 -624,2410,Patricia East,east@amyris.com,Code of Business Conduct and Ethics,LIVE,2021-08-23 23:33:28,2021-08-23 23:33:33,2022-12-09 20:30:28,1,100%,Amyris Code of Business Conduct and Ethics,2022-12-09 20:30:28 diff --git a/app/static/getallgroups.js b/app/static/getallgroups.js deleted file mode 100644 index fecb43a..0000000 --- a/app/static/getallgroups.js +++ /dev/null @@ -1,40 +0,0 @@ -document.addEventListener("DOMContentLoaded", function() { - getAllGroups(); -}); - -const apiKey = 'session["key"]'; -const groups= []; -const getAllGroups = async (num) => { - if(num === 1){ - } - let page = num; - - await axios({ - method: 'get', - url: `https://api.northpass.com/v2/groups?page=${page}`, - headers: { - 'accept': '*/*', - 'x-api-key': apiKey, - 'content-type': 'application/json' - } - }) - .then(async (res) => { - if (res.data.links.next != null) { - page++; - for (let i = 0; i < res.data.data.length; i++) { - let groupName = res.data.data[i].attributes.name; - selectInput = ''; - $('#groups').append(selectInput); - groups.push(res.data.data[i].attributes.name); - } - await getAllGroups(page); - } else { - for (let i = 0; i < res.data.data.length; i++) { - groups.push(res.data.data[i].attributes.name); - } - } - }) - .catch(err => { - console.log(err); - }) -} diff --git a/app/templates/_backup_options.html b/app/templates/_backup_options.html new file mode 100644 index 0000000..8183d9b --- /dev/null +++ b/app/templates/_backup_options.html @@ -0,0 +1,62 @@ + +{% block content %} +

+ + + {% endblock %} diff --git a/app/templates/bulk_add.html b/app/templates/bulk_add.html new file mode 100644 index 0000000..f775944 --- /dev/null +++ b/app/templates/bulk_add.html @@ -0,0 +1,59 @@ + +{% include 'head.html' %} +{% include 'header.html' %} +{% include 'logo.html' %} +{% block content %} +

You're currently accessing {{ session.raw_school }}.

+

 

+
+
+
    +
  • Left side - Manual entry:

    +
      +
    • Both fields don't need to be filled out!
    • +
    • You can add just people or just groups.
    • +
    • Using both fields will add all people to all groups.
    • +
    +
  • +
+
+ +
+
    +
  • Right side - CSV Upload:

    +
      +
    • The Header rows must be Email and/or Groups
    • +
    • Please format the csv like this:
    • +
    • Email,Groups
    • +
    • email@email.com, group1, group2, group3
    • +
    • email2@email.com, group5, group1
    • +
    +
  • +
+
+
+

 

+{% if error %} +

{{ error }}

+ {% endif %} +

 

+
+
+

+ +

Emails

+ +

Group Names

+ +

+ + +
+ {% include 'csv.html' %} +
+ + {% if table %} + {% include 'table.html' %} + {% endif %} +{% endblock %} diff --git a/app/templates/bulk_add_ppl.html b/app/templates/bulk_add_ppl.html deleted file mode 100644 index 372c4c8..0000000 --- a/app/templates/bulk_add_ppl.html +++ /dev/null @@ -1,21 +0,0 @@ - -{% include 'head.html' %} -{% include 'header.html' %} -{% include 'logo.html' %} -{% block content %} -

Hello! Please enter the emails below.

- {% if error %} -

{{ error }}

- {% endif %} - -

-
-

Please Copy and Paste Emails of learners you'd like to add

- -

Please paste in the Group UUIDs which these learners should be added to.

- -

- -
- {% include 'table.html' %} -{% endblock %} diff --git a/app/templates/cmtest.html b/app/templates/cmtest.html new file mode 100644 index 0000000..4131146 --- /dev/null +++ b/app/templates/cmtest.html @@ -0,0 +1,13 @@ + +{% include 'head.html' %} +{% include 'header.html' %} +{% include 'logo.html' %} +

 

+{% if error %} +

{{ error }}

+{% endif %} + +
+ {{ form.name.label }} {{ form.name(size=20) }} + +
diff --git a/app/templates/csv.html b/app/templates/csv.html index 000033b..25cf8db 100644 --- a/app/templates/csv.html +++ b/app/templates/csv.html @@ -1,21 +1,21 @@ -{% extends 'head.html' %} -{% include 'header.html' %} -{% include 'logo.html' %} -{% block content %} - -

If you'd like to upload a CSV. Please do so here:

+
+

If you'd like to upload a CSV. Please do so here:

-
+

-

+
+ + +
+
+ + +
+ +
- -{% if table %} - {% include 'table.html' %} -{% else %} -

-{% endif %} - -{% endblock %} +
diff --git a/app/templates/footer_button.html b/app/templates/footer_button.html new file mode 100644 index 0000000..ca2e32e --- /dev/null +++ b/app/templates/footer_button.html @@ -0,0 +1,23 @@ +
diff --git a/app/templates/get.html b/app/templates/get.html index b93befb..626c1a0 100644 --- a/app/templates/get.html +++ b/app/templates/get.html @@ -1,6 +1,7 @@ {% include 'head.html' %} {% include 'header.html' %} +{% include 'logo.html' %} {% block content %} {% include 'table.html' %} {% endblock %} diff --git a/app/templates/get_courses.html b/app/templates/get_courses.html index 8e53cc4..e3878a1 100644 --- a/app/templates/get_courses.html +++ b/app/templates/get_courses.html @@ -1,21 +1,8 @@ - - - Northpass CSM Bulk Actions - - -
-
- Northpass Full Color Logo -
-
-

Hello! Please select what you'd like to do.

-
- - - -
- - - - +{% include 'head.html' %} +{% include 'header.html' %} +{% include 'logo.html' %} +{% include 'subheader.html' %} +{% block content %} +{% include 'table.html' %} +{% endblock %} diff --git a/app/templates/get_courses[deprecated].html b/app/templates/get_courses[deprecated].html new file mode 100644 index 0000000..8e53cc4 --- /dev/null +++ b/app/templates/get_courses[deprecated].html @@ -0,0 +1,21 @@ + + + + Northpass CSM Bulk Actions + + +
+
+ Northpass Full Color Logo +
+
+

Hello! Please select what you'd like to do.

+
+ + + +
+ + + + diff --git a/app/templates/get_info.html b/app/templates/get_info.html new file mode 100644 index 0000000..1e0182f --- /dev/null +++ b/app/templates/get_info.html @@ -0,0 +1,10 @@ + +{% include 'head.html' %} +{% include 'header.html' %} +{% include 'logo.html' %} +{% include 'subheader.html' %} +{% block content %} +{% if table %} +{% include 'table.html' %} +{% endif %} +{% endblock %} diff --git a/app/templates/head.html b/app/templates/head.html index 9246ba5..a9e7944 100644 --- a/app/templates/head.html +++ b/app/templates/head.html @@ -4,6 +4,7 @@ + - + + + + + {% block content %} {% endblock %} +{% include 'footer_button.html'%} + + + diff --git a/app/templates/header.html b/app/templates/header.html index 02e0494..ef96a35 100644 --- a/app/templates/header.html +++ b/app/templates/header.html @@ -1,48 +1,61 @@
-
diff --git a/app/templates/home.html b/app/templates/home.html new file mode 100644 index 0000000..619407e --- /dev/null +++ b/app/templates/home.html @@ -0,0 +1,20 @@ + +{% include 'head.html' %} +{% include 'header.html' %} +{% include 'logo.html' %} +{% block content %} +
+
+

Academy: {{ session.raw_school }}

+

 

+

Subdomain: + {{ session.subdomain }} + +

+ +{% endblock %} + + diff --git a/app/templates/index.html b/app/templates/index.html index f8949b0..8ca25c5 100644 --- a/app/templates/index.html +++ b/app/templates/index.html @@ -3,12 +3,16 @@ {% include 'logo.html' %} {% block content %}

Hello! Please click below to enter your key.

- {% for error in error %} -

{{ error }}

- {% endfor %} +

+ {% if error %} + {{ error }} + {% endif %} +

+

+

- - + +
diff --git a/app/templates/logo.html b/app/templates/logo.html index 43495e2..52c86f3 100644 --- a/app/templates/logo.html +++ b/app/templates/logo.html @@ -1,11 +1,11 @@ -
- - Northpass Full Color Logo - - {% for message in get_flashed_messages() %} -

{{ message }}

- {% endfor %} +
+ + Northpass Full Color Logo + +{% for message in get_flashed_messages() %} +

{{ message }}

+{% endfor %} diff --git a/app/templates/options.html b/app/templates/options.html index 776e1db..8f6c39c 100644 --- a/app/templates/options.html +++ b/app/templates/options.html @@ -1,65 +1,9 @@ {% extends 'head.html' %} {% include 'logo.html' %} +{% include 'header.html' %} + {% block content %} -

Hello! Please find the options for {{ session.school }}.

- -

-
- - {% endblock %} +

Hello! You're currently accessing {{ session.raw_school }}.

+{% endblock %} diff --git a/app/templates/subheader.html b/app/templates/subheader.html new file mode 100644 index 0000000..ce14845 --- /dev/null +++ b/app/templates/subheader.html @@ -0,0 +1,25 @@ + +
diff --git a/app/templates/table.html b/app/templates/table.html index ecc7e36..7bc3e9a 100644 --- a/app/templates/table.html +++ b/app/templates/table.html @@ -1,9 +1,10 @@ -

Hello! Here are your results.

- Click here to download as CSV. +
+

Here are your results.

{{ table | safe }}
+
diff --git a/app/templates/templates.html b/app/templates/templates.html new file mode 100644 index 0000000..f6c7519 --- /dev/null +++ b/app/templates/templates.html @@ -0,0 +1,103 @@ + +{% include 'head.html' %} +{% include 'header.html' %} +{% include 'logo.html' %} +

 

+{% if error %} +

{{ error }}

+{% endif %} + + +{% if button %} +
+
+ +
+{% endif %} + +{% if templates %} +

Here are the liquid templates for

+

{{ session.raw_school }}

+{% endif %} +
+{% for templates in templates %} +

 

+
+
+

{{ templates[0] }}

+

Last Updated: {{ templates [2] }}

+ + {{ templates[1] }} + + + + +

 

+ + +
+
+
+

 

+{% endfor %} +{% if templates %} +

Advanced users only: create new template

+

 

+
+
+

+ Enter the code below +

+ + +

 

+ + + +

 

+ +
+
+{% endif %} + + +{% include 'footer_button.html'%} diff --git a/config.py b/config.py index b10288f..54a83c3 100644 --- a/config.py +++ b/config.py @@ -1,5 +1,4 @@ import os - class Config(object): SECRET_KEY = os.environ.get("NORTHPASS") or "north-pass" diff --git a/imgs/bulk-upload.png b/imgs/bulk-upload.png new file mode 100644 index 0000000..f8488cb Binary files /dev/null and b/imgs/bulk-upload.png differ diff --git a/imgs/courses.png b/imgs/courses.png new file mode 100644 index 0000000..87c5484 Binary files /dev/null and b/imgs/courses.png differ diff --git a/imgs/get-info.png b/imgs/get-info.png new file mode 100644 index 0000000..94c66e0 Binary files /dev/null and b/imgs/get-info.png differ diff --git a/imgs/groups.png b/imgs/groups.png new file mode 100644 index 0000000..78fe72f Binary files /dev/null and b/imgs/groups.png differ diff --git a/imgs/homepage-action-button.png b/imgs/homepage-action-button.png new file mode 100644 index 0000000..3de53e4 Binary files /dev/null and b/imgs/homepage-action-button.png differ diff --git a/imgs/homepage-key.png b/imgs/homepage-key.png new file mode 100644 index 0000000..4ae0cde Binary files /dev/null and b/imgs/homepage-key.png differ diff --git a/imgs/homepage-login.png b/imgs/homepage-login.png new file mode 100644 index 0000000..c8818e7 Binary files /dev/null and b/imgs/homepage-login.png differ diff --git a/imgs/session-cleared.png b/imgs/session-cleared.png new file mode 100644 index 0000000..79f2eac Binary files /dev/null and b/imgs/session-cleared.png differ diff --git a/imgs/templates.png b/imgs/templates.png new file mode 100644 index 0000000..4c3b160 Binary files /dev/null and b/imgs/templates.png differ diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..d78e835 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,66 @@ +appnope==0.1.3 +asgiref==3.6.0 +astroid==2.14.2 +asttokens==2.2.1 +async==0.6.2 +backcall==0.2.0 +bidict==0.22.1 +cachelib==0.10.2 +certifi==2022.12.7 +charset-normalizer==3.0.1 +click==8.1.3 +decorator==5.1.1 +dill==0.3.6 +dnspython==2.3.0 +docstring-to-markdown==0.11 +eventlet==0.33.3 +executing==1.2.0 +Flask==2.2.3 +flask-codemirror==1.3 +Flask-Session==0.4.0 +Flask-SocketIO==5.3.2 +Flask-WTF==1.1.1 +glob2==0.7 +greenlet==2.0.2 +idna==3.4 +ipython==8.10.0 +isort==5.12.0 +itables==1.4.6 +itsdangerous==2.1.2 +jedi==0.18.2 +Jinja2==3.1.2 +lazy-object-proxy==1.9.0 +MarkupSafe==2.1.2 +matplotlib-inline==0.1.6 +mccabe==0.7.0 +numpy==1.24.2 +pandas==1.5.3 +parso==0.8.3 +pexpect==4.8.0 +pickleshare==0.7.5 +platformdirs==3.0.0 +pluggy==1.0.0 +prompt-toolkit==3.0.37 +ptyprocess==0.7.0 +pure-eval==0.2.2 +Pygments==2.14.0 +pylint==2.16.2 +python-dateutil==2.8.2 +python-dotenv==0.21.1 +python-engineio==4.3.4 +python-lsp-jsonrpc==1.0.0 +python-lsp-server==1.7.1 +python-socketio==5.7.2 +pytz==2022.7.1 +requests==2.28.2 +ruff==0.0.253 +six==1.16.0 +stack-data==0.6.2 +tomlkit==0.11.6 +traitlets==5.9.0 +ujson==5.7.0 +urllib3==1.26.14 +wcwidth==0.2.6 +Werkzeug==2.2.3 +wrapt==1.15.0 +WTForms==3.0.1