diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
deleted file mode 100644
index 164cbd5..0000000
--- a/CONTRIBUTING.md
+++ /dev/null
@@ -1,7 +0,0 @@
-
-Contribution Agreement
-======================
-
-This repository does not accept pull requests (PRs). All pull requests will be closed.
-
-However, if any contributions (through pull requests, issues, feedback or otherwise) are provided, as a contributor, you represent that the code you submit is your original work or that of your employer (in which case you represent you have the right to bind your employer). By submitting code (or otherwise providing feedback), you (and, if applicable, your employer) are licensing the submitted code (and/or feedback) to LinkedIn and the open source community subject to the BSD 2-Clause license.
diff --git a/Ch2 - Basics/classes_start.py b/Ch2 - Basics/classes_start.py
deleted file mode 100644
index de3226d..0000000
--- a/Ch2 - Basics/classes_start.py
+++ /dev/null
@@ -1,5 +0,0 @@
-#
-# Example file for working with classes
-# LinkedIn Learning Python course by Joe Marini
-#
-
diff --git a/Ch2 - Basics/conditionals_finished.py b/Ch2 - Basics/conditionals_finished.py
index 2a77f66..61fd2a8 100644
--- a/Ch2 - Basics/conditionals_finished.py
+++ b/Ch2 - Basics/conditionals_finished.py
@@ -8,22 +8,22 @@
def main():
x, y = 10, 100
- # conditional flow uses if, elif, else
- if x < y:
- result = "x is less than y"
- elif x == y:
- result = "x is same as y"
- else:
- result = "x is greater than y"
- print(result)
+ # # conditional flow uses if, elif, else
+ # if x < y:
+ # result = "x is less than y"
+ # elif x == y:
+ # result = "x is same as y"
+ # else:
+ # result = "x is greater than y"
+ # print(result)
- # conditional statements let you use "a if C else b"
- result = "x is less than y" if (x < y) else "x is greater than or equal to y"
- print(result)
+ # # conditional statements let you use "a if C else b"
+ # result = "x is less than y" if (x < y) else "x is greater than or equal to y"
+ # print(result)
# new in Python 3.10
# the match-case construct can be used for multiple comparisons
- value = "one"
+ value = "four"
match value:
case "one":
result = 1
diff --git a/Ch2 - Basics/conditionals_start.py b/Ch2 - Basics/conditionals_start.py
deleted file mode 100644
index f6b58d6..0000000
--- a/Ch2 - Basics/conditionals_start.py
+++ /dev/null
@@ -1,19 +0,0 @@
-#
-# Example file for working with conditional statements
-# LinkedIn Learning Python course by Joe Marini
-#
-
-
-
-def main():
- x, y = 10, 100
-
- # conditional flow uses if, elif, else
-
- # conditional statements let you use "a if C else b"
-
- # match-case makes it easy to compare multiple values
- value = "one"
-
-if __name__ == "__main__":
- main()
diff --git a/Ch2 - Basics/exceptions_start.py b/Ch2 - Basics/exceptions_start.py
deleted file mode 100644
index a1209c4..0000000
--- a/Ch2 - Basics/exceptions_start.py
+++ /dev/null
@@ -1,14 +0,0 @@
-#
-# Example file for working with classes
-# LinkedIn Learning Python course by Joe Marini
-#
-
-# Errors can happen in programs, and we need a clean way to handle them
-# TODO: This code will cause an error because you can't divide by zero:
-
-# TODO: Exceptions provide a way of catching errors and then handling them in
-# a separate section of the code to group them together
-
-
-# TODO: You can also catch specific exceptions
-
diff --git a/Ch2 - Basics/functions_start.py b/Ch2 - Basics/functions_start.py
deleted file mode 100644
index 56cb247..0000000
--- a/Ch2 - Basics/functions_start.py
+++ /dev/null
@@ -1,21 +0,0 @@
-#
-# Example file for working with functions
-# LinkedIn Learning Python course by Joe Marini
-#
-
-
-# TODO: define a basic function
-
-
-# TODO: function that takes arguments
-
-
-# TODO: function that returns a value
-
-
-# TODO: function with default value for an argument
-
-
-# TODO: function with variable number of arguments
-
-
diff --git a/Ch2 - Basics/helloworld_start.py b/Ch2 - Basics/helloworld_start.py
deleted file mode 100644
index 7d6b753..0000000
--- a/Ch2 - Basics/helloworld_start.py
+++ /dev/null
@@ -1,6 +0,0 @@
-#
-# Example file for HelloWorld
-# LinkedIn Learning Python course by Joe Marini
-#
-
-
diff --git a/Ch2 - Basics/loops_finished.py b/Ch2 - Basics/loops_finished.py
index b348924..51637b6 100644
--- a/Ch2 - Basics/loops_finished.py
+++ b/Ch2 - Basics/loops_finished.py
@@ -7,30 +7,30 @@
def main():
x = 0
- # define a while loop
- while (x < 5):
- print(x)
- x = x + 1
+ # # define a while loop
+ # while (x < 5):
+ # print(x)
+ # x = x + 1
- # define a for loop
- for x in range(5,10):
- print (x)
+ # # define a for loop
+ # for x in range(5,10):
+ # print (x)
- # use a for loop over a collection
- days = ["Mon","Tue","Wed","Thu","Fri","Sat","Sun"]
- for d in days:
- print (d)
+ # # use a for loop over a collection
+ # days = ["Mon","Tue","Wed","Thu","Fri","Sat","Sun"]
+ # for d in days:
+ # print (d)
# use the break and continue statements
for x in range(5,10):
- #if (x == 7): break
- #if (x % 2 == 0): continue
+ # if (x == 7): break
+ if (x % 2 == 0): continue
print (x)
- # using the enumerate() function to get index
- days = ["Mon","Tue","Wed","Thu","Fri","Sat","Sun"]
- for i, d in enumerate(days):
- print (i, d)
+ # # using the enumerate() function to get index
+ # days = ["Mon","Tue","Wed","Thu","Fri","Sat","Sun"]
+ # for i, d in enumerate(days):
+ # print (i, d)
if __name__ == "__main__":
main()
diff --git a/Ch2 - Basics/loops_start.py b/Ch2 - Basics/loops_start.py
deleted file mode 100644
index f7d2e75..0000000
--- a/Ch2 - Basics/loops_start.py
+++ /dev/null
@@ -1,27 +0,0 @@
-#
-# Example file for working with loops
-# LinkedIn Learning Python course by Joe Marini
-#
-
-
-def main():
- x = 0
-
- # TODO: define a while loop
-
-
- # TODO: define a for loop
-
-
- # TODO: use a for loop over a collection
- days = ["Mon","Tue","Wed","Thu","Fri","Sat","Sun"]
-
-
- # TODO: use the break and continue statements
-
-
- # TODO: using the enumerate() function to get index
-
-
-if __name__ == "__main__":
- main()
diff --git a/Ch2 - Basics/modules_start.py b/Ch2 - Basics/modules_start.py
deleted file mode 100644
index 8c8bf6c..0000000
--- a/Ch2 - Basics/modules_start.py
+++ /dev/null
@@ -1,14 +0,0 @@
-# LinkedIn Learning Python course by Joe Marini
-#
-
-
-# TODO: import the math module, which contains features for working with mathematics
-
-
-# TODO: the math module contains lots of pre-built functions
-
-
-# TODO: in addition to functions, some modules contain useful constants
-
-
-# TODO: try some of the math functions for yourself here:
diff --git a/Ch2 - Basics/variables_start.py b/Ch2 - Basics/variables_start.py
deleted file mode 100644
index b2756cc..0000000
--- a/Ch2 - Basics/variables_start.py
+++ /dev/null
@@ -1,37 +0,0 @@
-#
-# Example file for variables
-# LinkedIn Learning Python course by Joe Marini
-#
-
-
-# Basic data types in Python: Numbers, Strings, Booleans, Sequences, Dictionaries
-myint = 5
-myfloat = 13.2
-mystr = "This is a string"
-mybool = True
-mylist = [0, 1, "two", 3.2, False]
-mytuple = (0, 1, 2)
-mydict = {"one" : 1, "two" : 2}
-
-print(myint)
-print(myfloat)
-print(mystr)
-print(mybool)
-print(mylist)
-print(mytuple)
-print(mydict)
-
-# re-declaring a variable works
-
-# to access a member of a sequence type, use []
-
-# use slices to get parts of a sequence
-
-# you can use slices to reverse a sequence
-
-# dictionaries are accessed via keys
-
-# ERROR: variables of different types cannot be combined
-
-# Global vs. local variables in functions
-
diff --git a/Ch3 - Files/.idea/inspectionProfiles/profiles_settings.xml b/Ch3 - Files/.idea/inspectionProfiles/profiles_settings.xml
new file mode 100644
index 0000000..105ce2d
--- /dev/null
+++ b/Ch3 - Files/.idea/inspectionProfiles/profiles_settings.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Ch3 - Files/.idea/misc.xml b/Ch3 - Files/.idea/misc.xml
new file mode 100644
index 0000000..dc9ea49
--- /dev/null
+++ b/Ch3 - Files/.idea/misc.xml
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/Ch3 - Files/archive.zip b/Ch3 - Files/archive.zip
new file mode 100644
index 0000000..692dfd8
Binary files /dev/null and b/Ch3 - Files/archive.zip differ
diff --git a/Ch3 - Files/files_finished.py b/Ch3 - Files/files_finished.py
index a88083a..91bf898 100644
--- a/Ch3 - Files/files_finished.py
+++ b/Ch3 - Files/files_finished.py
@@ -4,30 +4,31 @@
#
-def main():
+def main():
# Open a file for writing and create it if it doesn't exist
- f = open("textfile.txt","w+")
-
+ f = open("textfile.txt", "w+")
+
# Open the file for appending text to the end
- # f = open("textfile.txt","a+")
+ f = open("textfile.txt", "a+")
# write some lines of data to the file
for i in range(10):
- f.write("This is line %d\r\n" % (i+1))
-
+ f.write("This is line %d\r\n" % (i + 1))
+
# close the file when done
f.close()
-
+
# Open the file back up and read the contents
- f = open("textfile.txt","r")
- if f.mode == 'r': # check to make sure that the file was opened
+ f = open("textfile.txt", "r")
+ if f.mode == 'r': # check to make sure that the file was opened
# use the read() function to read the entire file
# contents = f.read()
# print (contents)
-
- fl = f.readlines() # readlines reads the individual lines into a list
+ #
+ fl = f.readlines() # readlines reads the individual lines into a list
for x in fl:
- print (x)
-
+ print(x)
+
+
if __name__ == "__main__":
main()
diff --git a/Ch3 - Files/files_start.py b/Ch3 - Files/files_start.py
deleted file mode 100644
index fb026bb..0000000
--- a/Ch3 - Files/files_start.py
+++ /dev/null
@@ -1,24 +0,0 @@
-#
-# Read and write files using the built-in Python file methods
-# LinkedIn Learning Python course by Joe Marini
-#
-
-
-def main():
- # Open a file for writing and create it if it doesn't exist
-
-
- # Open the file for appending text to the end
-
-
- # write some lines of data to the file
-
-
- # close the file when done
-
-
- # Open the file back up and read the contents
-
-
-if __name__ == "__main__":
- main()
diff --git a/Ch3 - Files/newfile.txt b/Ch3 - Files/newfile.txt
new file mode 100644
index 0000000..fcbf0f0
--- /dev/null
+++ b/Ch3 - Files/newfile.txt
@@ -0,0 +1,10 @@
+This is line 1
+This is line 2
+This is line 3
+This is line 4
+This is line 5
+This is line 6
+This is line 7
+This is line 8
+This is line 9
+This is line 10
diff --git a/Ch3 - Files/ospathutils_finished.py b/Ch3 - Files/ospathutils_finished.py
index e6b8fe4..f83aaa2 100644
--- a/Ch3 - Files/ospathutils_finished.py
+++ b/Ch3 - Files/ospathutils_finished.py
@@ -21,6 +21,7 @@ def main():
# Work with file paths
print ("Item's path: " + str(path.realpath("textfile.txt")))
+ # SPLIT PATH AND FILE IN TO A TUPLE:
print ("Item's path and name: " + str(path.split(path.realpath("textfile.txt"))))
# Get the modification time
diff --git a/Ch3 - Files/ospathutils_start.py b/Ch3 - Files/ospathutils_start.py
deleted file mode 100644
index 3384cbd..0000000
--- a/Ch3 - Files/ospathutils_start.py
+++ /dev/null
@@ -1,30 +0,0 @@
-#
-# Example file for working with os.path module
-# LinkedIn Learning Python course by Joe Marini
-#
-
-import os
-from os import path
-import datetime
-from datetime import date, time, timedelta
-import time
-
-
-def main():
- # Print the name of the OS
-
-
- # Check for item existence and type
-
-
- # Work with file paths
-
-
- # Get the modification time
-
-
- # Calculate how long ago the item was modified
-
-
-if __name__ == "__main__":
- main()
diff --git a/Ch3 - Files/shell_start.py b/Ch3 - Files/shell_start.py
deleted file mode 100644
index 5cb9ec5..0000000
--- a/Ch3 - Files/shell_start.py
+++ /dev/null
@@ -1,24 +0,0 @@
-#
-# Example file for working with filesystem shell methods
-# LinkedIn Learning Python course by Joe Marini
-#
-
-import os
-from os import path
-
-def main():
- # make a duplicate of an existing file
- if path.exists("textfile.txt"):
- # get the path to the file in the current directory
-
- # let's make a backup copy by appending "bak" to the name
-
- # rename the original file
-
- # now put things into a ZIP archive
-
- # more fine-grained control over ZIP files
-
-
-if __name__ == "__main__":
- main()
diff --git a/Ch3 - Files/testzip.zip b/Ch3 - Files/testzip.zip
new file mode 100644
index 0000000..d6f012b
Binary files /dev/null and b/Ch3 - Files/testzip.zip differ
diff --git a/Ch3 - Files/textfile.txt.bak b/Ch3 - Files/textfile.txt.bak
new file mode 100644
index 0000000..fcbf0f0
--- /dev/null
+++ b/Ch3 - Files/textfile.txt.bak
@@ -0,0 +1,10 @@
+This is line 1
+This is line 2
+This is line 3
+This is line 4
+This is line 5
+This is line 6
+This is line 7
+This is line 8
+This is line 9
+This is line 10
diff --git a/Ch4 - Dates and Times/calendar-example.html b/Ch4 - Dates and Times/calendar-example.html
new file mode 100644
index 0000000..420a28c
--- /dev/null
+++ b/Ch4 - Dates and Times/calendar-example.html
@@ -0,0 +1,19 @@
+
+
+
+
+ Calendar HTML
+
+
+
+
January 2022
+
Sun
Mon
Tue
Wed
Thu
Fri
Sat
+
1
+
2
3
4
5
6
7
8
+
9
10
11
12
13
14
15
+
16
17
18
19
20
21
22
+
23
24
25
26
27
28
29
+
30
31
+
+
+
\ No newline at end of file
diff --git a/Ch4 - Dates and Times/calendars_finished.py b/Ch4 - Dates and Times/calendars_finished.py
index 1372384..b412b36 100644
--- a/Ch4 - Dates and Times/calendars_finished.py
+++ b/Ch4 - Dates and Times/calendars_finished.py
@@ -8,13 +8,13 @@
# create a plain text calendar
c = calendar.TextCalendar(calendar.SUNDAY)
-str = c.formatmonth(2022, 1, 0, 0)
+str = c.formatmonth(2022, 8, 0, 0)
print (str)
# create an HTML formatted calendar
hc = calendar.HTMLCalendar(calendar.SUNDAY)
str = hc.formatmonth(2022, 1)
-print (str)
+print(str)
# loop over the days of a month
# zeroes mean that the day of the week is in an overlapping month
diff --git a/Ch4 - Dates and Times/calendars_start.py b/Ch4 - Dates and Times/calendars_start.py
deleted file mode 100644
index 2963f70..0000000
--- a/Ch4 - Dates and Times/calendars_start.py
+++ /dev/null
@@ -1,28 +0,0 @@
-#
-# Example file for working with Calendars
-# LinkedIn Learning Python course by Joe Marini
-#
-
-
-# TODO: import the calendar module
-
-
-# TODO: create a plain text calendar
-
-
-# TODO: create an HTML formatted calendar
-
-
-# TODO: loop over the days of a month
-# zeroes mean that the day of the week is in an overlapping month
-
-
-# TODO: The Calendar module provides useful utilities for the given locale,
-# such as the names of days and months in both full and abbreviated forms
-
-
-# TODO: Calculate days based on a rule: For example, consider
-# a team meeting on the first Friday of every month.
-# To figure out what days that would be for each month,
-# we can use this script:
-
diff --git a/Ch4 - Dates and Times/challenge_solution.py b/Ch4 - Dates and Times/challenge_solution.py
index 7e57b30..9c4c2cb 100644
--- a/Ch4 - Dates and Times/challenge_solution.py
+++ b/Ch4 - Dates and Times/challenge_solution.py
@@ -4,6 +4,7 @@
import calendar
+
# This function counts the number of the given weekday for the
# specified year and month and returns the result
def countdays(theyear, themonth, whichday):
@@ -18,7 +19,7 @@ def countdays(theyear, themonth, whichday):
print("--Day counter program--\n")
run = True
-while(run):
+while (run):
try:
print("Which day of the week do you want to count?")
print("0: Monday")
@@ -48,4 +49,3 @@ def countdays(theyear, themonth, whichday):
except Exception as e:
print(e)
print("Sorry, that's not valid input")
-
diff --git a/Ch4 - Dates and Times/challenge_start.py b/Ch4 - Dates and Times/challenge_start.py
deleted file mode 100644
index 9da42cb..0000000
--- a/Ch4 - Dates and Times/challenge_start.py
+++ /dev/null
@@ -1,5 +0,0 @@
-# Start file for programming challenge for Learning Python course
-# LinkedIn Learning Python course by Joe Marini
-#
-
-import calendar
diff --git a/Ch4 - Dates and Times/dates_start.py b/Ch4 - Dates and Times/dates_start.py
deleted file mode 100644
index 9091c40..0000000
--- a/Ch4 - Dates and Times/dates_start.py
+++ /dev/null
@@ -1,30 +0,0 @@
-#
-# Example file for working with date information
-# LinkedIn Learning Python course by Joe Marini
-#
-
-
-
-def main():
- ## DATE OBJECTS
- # TODO: Get today's date from the simple today() method from the date class
-
-
- # TODO: print out the date's individual components
-
-
- # TODO: retrieve today's weekday (0=Monday, 6=Sunday)
-
-
- ## DATETIME OBJECTS
- # TODO: Get today's date from the datetime class
-
-
- # TODO: Get the current time
-
-
-
-
-if __name__ == "__main__":
- main()
-
\ No newline at end of file
diff --git a/Ch4 - Dates and Times/formatting_finished.py b/Ch4 - Dates and Times/formatting_finished.py
index a8449d6..5ec7e22 100644
--- a/Ch4 - Dates and Times/formatting_finished.py
+++ b/Ch4 - Dates and Times/formatting_finished.py
@@ -15,7 +15,7 @@ def main():
# %y/%Y - Year, %a/%A - weekday, %b/%B - month, %d - day of month
print (now.strftime("The current year is: %Y")) # full year with century
- print (now.strftime("%a, %d %B, %y")) # abbreviated day, num, full month, abbreviated year
+ print (now.strftime("%A, %d %B, %Y")) # abbreviated day, num, full month, abbreviated year
# %c - locale's date and time, %x - locale's date, %X - locale's time
print (now.strftime("Locale date and time: %c"))
@@ -26,7 +26,7 @@ def main():
# %I/%H - 12/24 Hour, %M - minute, %S - second, %p - locale's AM/PM
print (now.strftime("Current time: %I:%M:%S %p")) # 12-Hour:Minute:Second:AM
- print (now.strftime("24-hour time: %H:%M")) # 24-Hour:Minute
+ print (now.strftime("24-hour time: %H%M")) # 24-Hour:Minute
if __name__ == "__main__":
diff --git a/Ch4 - Dates and Times/formatting_start.py b/Ch4 - Dates and Times/formatting_start.py
deleted file mode 100644
index 6c40839..0000000
--- a/Ch4 - Dates and Times/formatting_start.py
+++ /dev/null
@@ -1,28 +0,0 @@
-#
-# Example file for formatting time and date output
-# LinkedIn Learning Python course by Joe Marini
-#
-
-
-from datetime import datetime
-
-def main():
- # Times and dates can be formatted using a set of predefined string
- # control codes
-
-
- #### Date Formatting ####
-
- # %y/%Y - Year, %a/%A - weekday, %b/%B - month, %d - day of month
-
-
- # %c - locale's date and time, %x - locale's date, %X - locale's time
-
-
- #### Time Formatting ####
-
- # %I/%H - 12/24 Hour, %M - minute, %S - second, %p - locale's AM/PM
-
-
-if __name__ == "__main__":
- main()
diff --git a/Ch4 - Dates and Times/timedeltas_start.py b/Ch4 - Dates and Times/timedeltas_start.py
deleted file mode 100644
index a6b62bc..0000000
--- a/Ch4 - Dates and Times/timedeltas_start.py
+++ /dev/null
@@ -1,35 +0,0 @@
-#
-# Example file for working with timedelta objects
-# LinkedIn Learning Python course by Joe Marini
-#
-
-
-from datetime import date
-from datetime import time
-from datetime import datetime
-
-
-# TODO: construct a basic timedelta and print it
-
-
-# TODO: print today's date
-
-
-# TODO: print today's date one year from now
-
-
-# TODO: create a timedelta that uses more than one argument
-
-
-# TODO: calculate the date 1 week ago, formatted as a string
-
-
-### How many days until April Fools' Day?
-
-
-# TODO: use date comparison to see if April Fool's has already gone for this year
-# if it has, use the replace() function to get the date for next year
-
-
-# TODO: Now calculate the amount of time until April Fool's Day
-
diff --git a/Ch4 - Dates and Times/year-calendar.py b/Ch4 - Dates and Times/year-calendar.py
new file mode 100644
index 0000000..33838b6
--- /dev/null
+++ b/Ch4 - Dates and Times/year-calendar.py
@@ -0,0 +1,11 @@
+import calendar
+import datetime
+
+year = datetime.datetime.now().year
+
+cal = calendar.TextCalendar(calendar.SUNDAY)
+for m in range(1,13):
+ print(cal.formatmonth(year, m, 0, 0))
+
+
+
diff --git a/Ch5 - Internet Data/htmlparsing_finished.py b/Ch5 - Internet Data/htmlparsing_finished.py
index 48fa8fe..8308d0f 100644
--- a/Ch5 - Internet Data/htmlparsing_finished.py
+++ b/Ch5 - Internet Data/htmlparsing_finished.py
@@ -9,6 +9,7 @@
paragraphs = 0
+
# create a subclass of HTMLParser and override the handler methods
class MyHTMLParser(HTMLParser):
# function to handle an opening tag in the doc
@@ -18,41 +19,42 @@ def handle_starttag(self, tag, attrs):
if tag == "p":
paragraphs += 1
- print ("Encountered a start tag:", tag)
- pos = self.getpos() # returns a tuple indication line and character
- print ("\tAt line: ", pos[0], " position ", pos[1])
+ print("Encountered a start tag:", tag)
+ pos = self.getpos() # returns a tuple indication line and character
+ print("\tAt line: ", pos[0], " position ", pos[1])
if attrs.__len__() > 0:
- print ("\tAttributes:")
+ print("\tAttributes:")
for a in attrs:
- print ("\t", a[0],"=",a[1])
-
+ print("\t", a[0], "=", a[1])
+
# function to handle character and text data (tag contents)
def handle_data(self, data):
if (data.isspace()):
return
- print ("Encountered some text data:", data)
+ print("Encountered some text data:", data)
pos = self.getpos()
- print ("\tAt line: ", pos[0], " position ", pos[1])
-
+ print("\tAt line: ", pos[0], " position ", pos[1])
+
# function to handle the processing of HTML comments
def handle_comment(self, data):
- print ("Encountered comment:", data)
+ print("Encountered comment:", data)
pos = self.getpos()
- print ("\tAt line: ", pos[0], " position ", pos[1])
+ print("\tAt line: ", pos[0], " position ", pos[1])
+
def main():
# instantiate the parser and feed it some HTML
parser = MyHTMLParser()
-
+
# open the sample HTML file and read it
f = open("samplehtml.html")
if f.mode == "r":
- contents = f.read() # read the entire file
+ contents = f.read() # read the entire file
parser.feed(contents)
-
- print ("Paragraph tags:", paragraphs)
+
+ print("Paragraph tags:", paragraphs)
+
if __name__ == "__main__":
main()
-
\ No newline at end of file
diff --git a/Ch5 - Internet Data/htmlparsing_start.py b/Ch5 - Internet Data/htmlparsing_start.py
deleted file mode 100644
index a759ac3..0000000
--- a/Ch5 - Internet Data/htmlparsing_start.py
+++ /dev/null
@@ -1,29 +0,0 @@
-#
-# Example file for parsing and processing HTML
-# LinkedIn Learning Python course by Joe Marini
-#
-
-from html.parser import HTMLParser
-
-class MyHTMLParser(HTMLParser):
- def handle_comment(self, data):
- pass
-
- def handle_starttag(self, tag, attrs):
- pass
-
- def handle_data(self, data):
- pass
-
-def main():
- # instantiate the parser and feed it some HTML
- parser = MyHTMLParser()
-
- f = open("samplehtml.html")
- if f.mode == "r":
- contents = f.read() # read the entire file
- parser.feed(contents)
-
-if __name__ == "__main__":
- main()
-
\ No newline at end of file
diff --git a/Ch5 - Internet Data/inetdata_finished.py b/Ch5 - Internet Data/inetdata_finished.py
index 656ff92..672b05c 100644
--- a/Ch5 - Internet Data/inetdata_finished.py
+++ b/Ch5 - Internet Data/inetdata_finished.py
@@ -3,18 +3,20 @@
# LinkedIn Learning Python course by Joe Marini
#
-import urllib.request # instead of urllib2 like in Python 2.7
+import urllib.request # instead of urllib2 like in Python 2.7
+
def main():
# open a connection to a URL using urllib2
webUrl = urllib.request.urlopen("http://www.google.com")
-
+
# get the result code and print it
- print ("result code: ", webUrl.getcode())
-
+ print("result code: ", webUrl.getcode())
+
# read the data from the URL and print it
data = webUrl.read()
- print (data)
+ print(data)
+
if __name__ == "__main__":
main()
diff --git a/Ch5 - Internet Data/inetdata_start.py b/Ch5 - Internet Data/inetdata_start.py
deleted file mode 100644
index 86dc094..0000000
--- a/Ch5 - Internet Data/inetdata_start.py
+++ /dev/null
@@ -1,10 +0,0 @@
-#
-# Example file for retrieving data from the internet
-# LinkedIn Learning Python course by Joe Marini
-#
-
-def main():
- pass # this is a placeholder, do-nothing statement
-
-if __name__ == "__main__":
- main()
diff --git a/Ch5 - Internet Data/jsondata_finished.py b/Ch5 - Internet Data/jsondata_finished.py
index d244ebf..b047516 100644
--- a/Ch5 - Internet Data/jsondata_finished.py
+++ b/Ch5 - Internet Data/jsondata_finished.py
@@ -50,7 +50,7 @@ def main():
# Open the URL and read the data
webUrl = urllib.request.urlopen(urlData)
print("result code: " + str(webUrl.getcode()))
- if (webUrl.getcode() == 200):
+ if webUrl.getcode() == 200:
data = webUrl.read().decode("utf-8")
# print out our customized results
printResults(data)
diff --git a/Ch5 - Internet Data/jsondata_start.py b/Ch5 - Internet Data/jsondata_start.py
deleted file mode 100644
index e0da623..0000000
--- a/Ch5 - Internet Data/jsondata_start.py
+++ /dev/null
@@ -1,39 +0,0 @@
-#
-# Example file for parsing and processing JSON
-# LinkedIn Learning Python course by Joe Marini
-#
-
-import urllib.request
-
-def printResults(data):
- # Use the json module to load the string data into a dictionary
- theJSON = json.loads(data)
-
- # now we can access the contents of the JSON like any other Python object
-
-
- # output the number of events, plus the magnitude and each event name
-
-
- # for each event, print the place where it occurred
-
-
- # print the events that only have a magnitude greater than 4
-
-
- # print only the events where at least 1 person reported feeling something
-
-
-def main():
- # define a variable to hold the source URL
- # In this case we'll use the free data feed from the USGS
- # This feed lists all earthquakes for the last day larger than Mag 2.5
- urlData = "http://earthquake.usgs.gov/earthquakes/feed/v1.0/summary/2.5_day.geojson"
-
- # Open the URL and read the data
- webUrl = urllib.request.urlopen(urlData)
- print ("result code: " + str(webUrl.getcode()))
-
-
-if __name__ == "__main__":
- main()
diff --git a/Ch5 - Internet Data/xmlparsing_finished.py b/Ch5 - Internet Data/xmlparsing_finished.py
index bfc0309..186fce0 100644
--- a/Ch5 - Internet Data/xmlparsing_finished.py
+++ b/Ch5 - Internet Data/xmlparsing_finished.py
@@ -6,30 +6,31 @@
import xml.dom.minidom
+
def main():
# use the parse() function to load and parse an XML file
doc = xml.dom.minidom.parse("samplexml.xml")
-
+
# print out the document node and the name of the first child tag
- print (doc.nodeName)
- print (doc.firstChild.tagName)
-
+ print(doc.nodeName)
+ print(doc.firstChild.tagName)
+
# get a list of XML tags from the document and print each one
skills = doc.getElementsByTagName("skill")
- print ("%d skills:" % skills.length)
+ print("%d skills:" % skills.length)
for skill in skills:
- print (skill.getAttribute("name"))
-
+ print(skill.getAttribute("name"))
+
# create a new XML tag and add it into the document
newSkill = doc.createElement("skill")
newSkill.setAttribute("name", "jQuery")
doc.firstChild.appendChild(newSkill)
skills = doc.getElementsByTagName("skill")
- print ("%d skills:" % skills.length)
+ print("%d skills:" % skills.length)
for skill in skills:
- print (skill.getAttribute("name"))
-
+ print(skill.getAttribute("name"))
+
+
if __name__ == "__main__":
main()
-
diff --git a/Ch5 - Internet Data/xmlparsing_start.py b/Ch5 - Internet Data/xmlparsing_start.py
deleted file mode 100644
index 3129b0c..0000000
--- a/Ch5 - Internet Data/xmlparsing_start.py
+++ /dev/null
@@ -1,23 +0,0 @@
-#
-# Example file for parsing and processing XML
-# LinkedIn Learning Python course by Joe Marini
-#
-
-
-def main():
- # use the parse() function to load and parse an XML file
-
-
- # print out the document node and the name of the first child tag
-
-
- # get a list of XML tags from the document and print each one
-
-
- # create a new XML tag and add it into the document
-
-
-
-if __name__ == "__main__":
- main()
-
diff --git a/LICENSE b/LICENSE
deleted file mode 100644
index 52571f1..0000000
--- a/LICENSE
+++ /dev/null
@@ -1,105 +0,0 @@
-LinkedIn Learning Exercise Files License Agreement
-==================================================
-
-This License Agreement (the "Agreement") is a binding legal agreement
-between you (as an individual or entity, as applicable) and LinkedIn
-Corporation (“LinkedIn”). By downloading or using the LinkedIn Learning
-exercise files in this repository (“Licensed Materials”), you agree to
-be bound by the terms of this Agreement. If you do not agree to these
-terms, do not download or use the Licensed Materials.
-
-1. License.
-- a. Subject to the terms of this Agreement, LinkedIn hereby grants LinkedIn
-members during their LinkedIn Learning subscription a non-exclusive,
-non-transferable copyright license, for internal use only, to 1) make a
-reasonable number of copies of the Licensed Materials, and 2) make
-derivative works of the Licensed Materials for the sole purpose of
-practicing skills taught in LinkedIn Learning courses.
-- b. Distribution. Unless otherwise noted in the Licensed Materials, subject
-to the terms of this Agreement, LinkedIn hereby grants LinkedIn members
-with a LinkedIn Learning subscription a non-exclusive, non-transferable
-copyright license to distribute the Licensed Materials, except the
-Licensed Materials may not be included in any product or service (or
-otherwise used) to instruct or educate others.
-
-2. Restrictions and Intellectual Property.
-- a. You may not to use, modify, copy, make derivative works of, publish,
-distribute, rent, lease, sell, sublicense, assign or otherwise transfer the
-Licensed Materials, except as expressly set forth above in Section 1.
-- b. Linkedin (and its licensors) retains its intellectual property rights
-in the Licensed Materials. Except as expressly set forth in Section 1,
-LinkedIn grants no licenses.
-- c. You indemnify LinkedIn and its licensors and affiliates for i) any
-alleged infringement or misappropriation of any intellectual property rights
-of any third party based on modifications you make to the Licensed Materials,
-ii) any claims arising from your use or distribution of all or part of the
-Licensed Materials and iii) a breach of this Agreement. You will defend, hold
-harmless, and indemnify LinkedIn and its affiliates (and our and their
-respective employees, shareholders, and directors) from any claim or action
-brought by a third party, including all damages, liabilities, costs and
-expenses, including reasonable attorneys’ fees, to the extent resulting from,
-alleged to have resulted from, or in connection with: (a) your breach of your
-obligations herein; or (b) your use or distribution of any Licensed Materials.
-
-3. Open source. This code may include open source software, which may be
-subject to other license terms as provided in the files.
-
-4. Warranty Disclaimer. LINKEDIN PROVIDES THE LICENSED MATERIALS ON AN “AS IS”
-AND “AS AVAILABLE” BASIS. LINKEDIN MAKES NO REPRESENTATION OR WARRANTY,
-WHETHER EXPRESS OR IMPLIED, ABOUT THE LICENSED MATERIALS, INCLUDING ANY
-REPRESENTATION THAT THE LICENSED MATERIALS WILL BE FREE OF ERRORS, BUGS OR
-INTERRUPTIONS, OR THAT THE LICENSED MATERIALS ARE ACCURATE, COMPLETE OR
-OTHERWISE VALID. TO THE FULLEST EXTENT PERMITTED BY LAW, LINKEDIN AND ITS
-AFFILIATES DISCLAIM ANY IMPLIED OR STATUTORY WARRANTY OR CONDITION, INCLUDING
-ANY IMPLIED WARRANTY OR CONDITION OF MERCHANTABILITY OR FITNESS FOR A
-PARTICULAR PURPOSE, AVAILABILITY, SECURITY, TITLE AND/OR NON-INFRINGEMENT.
-YOUR USE OF THE LICENSED MATERIALS IS AT YOUR OWN DISCRETION AND RISK, AND
-YOU WILL BE SOLELY RESPONSIBLE FOR ANY DAMAGE THAT RESULTS FROM USE OF THE
-LICENSED MATERIALS TO YOUR COMPUTER SYSTEM OR LOSS OF DATA. NO ADVICE OR
-INFORMATION, WHETHER ORAL OR WRITTEN, OBTAINED BY YOU FROM US OR THROUGH OR
-FROM THE LICENSED MATERIALS WILL CREATE ANY WARRANTY OR CONDITION NOT
-EXPRESSLY STATED IN THESE TERMS.
-
-5. Limitation of Liability. LINKEDIN SHALL NOT BE LIABLE FOR ANY INDIRECT,
-INCIDENTAL, SPECIAL, PUNITIVE, CONSEQUENTIAL OR EXEMPLARY DAMAGES, INCLUDING
-BUT NOT LIMITED TO, DAMAGES FOR LOSS OF PROFITS, GOODWILL, USE, DATA OR OTHER
-INTANGIBLE LOSSES . IN NO EVENT WILL LINKEDIN'S AGGREGATE LIABILITY TO YOU
-EXCEED $100. THIS LIMITATION OF LIABILITY SHALL:
-- i. APPLY REGARDLESS OF WHETHER (A) YOU BASE YOUR CLAIM ON CONTRACT, TORT,
-STATUTE, OR ANY OTHER LEGAL THEORY, (B) WE KNEW OR SHOULD HAVE KNOWN ABOUT
-THE POSSIBILITY OF SUCH DAMAGES, OR (C) THE LIMITED REMEDIES PROVIDED IN THIS
-SECTION FAIL OF THEIR ESSENTIAL PURPOSE; AND
-- ii. NOT APPLY TO ANY DAMAGE THAT LINKEDIN MAY CAUSE YOU INTENTIONALLY OR
-KNOWINGLY IN VIOLATION OF THESE TERMS OR APPLICABLE LAW, OR AS OTHERWISE
-MANDATED BY APPLICABLE LAW THAT CANNOT BE DISCLAIMED IN THESE TERMS.
-
-6. Termination. This Agreement automatically terminates upon your breach of
-this Agreement or termination of your LinkedIn Learning subscription. On
-termination, all licenses granted under this Agreement will terminate
-immediately and you will delete the Licensed Materials. Sections 2-7 of this
-Agreement survive any termination of this Agreement. LinkedIn may discontinue
-the availability of some or all of the Licensed Materials at any time for any
-reason.
-
-7. Miscellaneous. This Agreement will be governed by and construed in
-accordance with the laws of the State of California without regard to conflict
-of laws principles. The exclusive forum for any disputes arising out of or
-relating to this Agreement shall be an appropriate federal or state court
-sitting in the County of Santa Clara, State of California. If LinkedIn does
-not act to enforce a breach of this Agreement, that does not mean that
-LinkedIn has waived its right to enforce this Agreement. The Agreement does
-not create a partnership, agency relationship, or joint venture between the
-parties. Neither party has the power or authority to bind the other or to
-create any obligation or responsibility on behalf of the other. You may not,
-without LinkedIn’s prior written consent, assign or delegate any rights or
-obligations under these terms, including in connection with a change of
-control. Any purported assignment and delegation shall be ineffective. The
-Agreement shall bind and inure to the benefit of the parties, their respective
-successors and permitted assigns. If any provision of the Agreement is
-unenforceable, that provision will be modified to render it enforceable to the
-extent possible to give effect to the parties’ intentions and the remaining
-provisions will not be affected. This Agreement is the only agreement between
-you and LinkedIn regarding the Licensed Materials, and supersedes all prior
-agreements relating to the Licensed Materials.
-
-Last Updated: March 2019
diff --git a/Libraries/Pendulum/basicdates_finished.py b/Libraries/Pendulum/basicdates_finished.py
new file mode 100644
index 0000000..8d085fc
--- /dev/null
+++ b/Libraries/Pendulum/basicdates_finished.py
@@ -0,0 +1,38 @@
+# Python Essential Libraries by Joe Marini course example
+# Example file for Pendulum library
+from datetime import datetime
+import time
+import pendulum
+
+# TODO: create a new datetime using pendulum
+dt1 = pendulum.datetime(2020, 7, 28, tz="America/New_York")
+print(dt1)
+print(isinstance(dt1, datetime))
+print(dt1.timezone.name)
+
+# TODO: convert the time to another time zone
+dt2 = dt1.in_timezone("Europe/Paris")
+print(dt2)
+
+# TODO: create a new datetime using the now() function
+dt3 = pendulum.now()
+print(dt3)
+print(dt3.timezone.name)
+
+# TODO: Use the local function function
+here = pendulum.local(2020, 7, 28)
+print(here)
+print(here.timezone.name)
+
+# TODO: Use today, tomorrow, yesterday
+today = pendulum.today()
+tomorrow = pendulum.tomorrow()
+yest = pendulum.yesterday("America/New_York")
+print(today)
+print(tomorrow)
+print(yest)
+
+# TODO: create a datetime from a system timestamp
+t = time.time()
+dt4 = pendulum.from_timestamp(t)
+print(dt4)
diff --git a/Libraries/Pendulum/calculation_finished.py b/Libraries/Pendulum/calculation_finished.py
new file mode 100644
index 0000000..b8b6b52
--- /dev/null
+++ b/Libraries/Pendulum/calculation_finished.py
@@ -0,0 +1,54 @@
+# Python Essential Libraries by Joe Marini course example
+# Example file for Pendulum library
+import pendulum
+
+# create some base datetimes
+dt1 = pendulum.datetime(2020, 7, 28, 23, 0, 0)
+dt2 = pendulum.datetime(2020, 12, 22)
+print("--- Original Dates ---")
+print(dt1.to_date_string())
+print(dt2.to_date_string())
+print("------\n")
+
+# TODO: handle rollover of time
+newdate = dt1.add(hours=1)
+print(newdate.to_date_string())
+
+newdate = dt1.add(minutes=60)
+print(newdate.to_date_string())
+
+# TODO: add and subtract various values
+dt1 = dt1.add(years=2, months=3)
+print(dt1.to_date_string())
+
+dt1 = dt1.subtract(months=48, hours=72)
+print(dt1.to_date_string())
+
+# TODO: negative values also work
+dt1 = dt1.add(years=-1, months=-4)
+print(dt1.to_date_string())
+
+# TODO: use helper functions for quick comparisons
+print(dt1.is_past())
+print(dt2.is_future())
+print(dt2.is_dst())
+print(dt2.is_leap_year())
+
+# TODO: Try comparing datetimes
+print(dt1 > dt2)
+print(dt1 < dt2)
+
+dt3 = pendulum.datetime(2020, 12, 22)
+print(dt3 == dt2)
+dt3 = dt3.set(second=1)
+print(dt3 == dt2)
+
+# TODO: Create a Period using difference
+dt1 = dt1.set(year=2020, month=7, day=28)
+p = dt1.diff(dt2)
+print(p.in_hours())
+print(p.in_days())
+print(p.in_months())
+
+p = dt2.diff_for_humans(dt1)
+print(p)
diff --git a/Libraries/Pendulum/challengesolution.py b/Libraries/Pendulum/challengesolution.py
new file mode 100644
index 0000000..7ee7869
--- /dev/null
+++ b/Libraries/Pendulum/challengesolution.py
@@ -0,0 +1,28 @@
+# Python Essential Libraries by Joe Marini course example
+# Example file for Pendulum library
+import pendulum
+
+# Challenge: how many days until International Clash Day?
+# https://www.kexp.org/internationalclashday/
+
+# First, let's figure out what day today is
+today = pendulum.today()
+# Use the general format method to print the day and month
+print("Today is: {0}".format(today.format("dddd, MMMM Do")))
+
+# Next, create a date to represent International Clash Day
+# Which, of course, is February 7
+icd = pendulum.datetime(today.year, 2, 7)
+# Use the general format method to print the day and month
+print("Internation Clash Day is: {0}".format(icd.format("dddd, MMMM Do")))
+
+# Figure out if the day has already gone by
+if icd < today:
+ old = today - icd
+ print("International Clash Day went by {0} days ago".format(old.days))
+ # if so, get the date for next year
+ icd = icd.add(years=1)
+
+# Now calculate the number of days until the next one
+time_to_afd = icd - today
+print("It's {0} days until Internation Clash Day!".format(time_to_afd.days))
diff --git a/Libraries/Pendulum/formatting_finished.py b/Libraries/Pendulum/formatting_finished.py
new file mode 100644
index 0000000..cf226df
--- /dev/null
+++ b/Libraries/Pendulum/formatting_finished.py
@@ -0,0 +1,29 @@
+# Python Essential Libraries by Joe Marini course example
+# Example file for Pendulum library
+import pendulum
+
+# create a datetime and print it
+dt1 = pendulum.datetime(2020, 7, 28, 15, 30)
+print(dt1)
+
+# TODO: use some formatting functions
+print(dt1.to_date_string())
+print(dt1.to_time_string())
+print(dt1.to_datetime_string())
+
+# TODO: use functions for nice formatting
+print(dt1.to_formatted_date_string())
+print(dt1.to_day_datetime_string())
+
+# TODO: use some common formats
+print(dt1.to_cookie_string())
+print(dt1.to_iso8601_string())
+print(dt1.to_rfc822_string())
+
+# TODO: use the format function for pretty printing
+print(dt1.format("YYYY MM-DD HH:MM A"))
+print(dt1.format("dddd DD MMMM YYYY"))
+
+# TODO: use localization
+print(dt1.format("dddd DD MMMM YYYY", locale="de"))
+print(dt1.format("dddd DD MMMM YYYY", locale="fr"))
diff --git a/Libraries/PyFilesystem/FileExamples.zip b/Libraries/PyFilesystem/FileExamples.zip
new file mode 100644
index 0000000..59fccaa
Binary files /dev/null and b/Libraries/PyFilesystem/FileExamples.zip differ
diff --git a/Libraries/PyFilesystem/FileExamples/Dir1/File4.txt b/Libraries/PyFilesystem/FileExamples/Dir1/File4.txt
new file mode 100644
index 0000000..9fae01e
--- /dev/null
+++ b/Libraries/PyFilesystem/FileExamples/Dir1/File4.txt
@@ -0,0 +1,6 @@
+This is a sample text file for the Essential Python Libraries course on LinkedIn Learning.
+
+Somewhere in la Mancha, in a place whose name I do not care to
+remember, a gentleman lived not long ago, one of those who has a lance
+and ancient shield on a shelf and keeps a skinny nag and a greyhound for
+racing. —Miguel de Cervantes, Don Quixote (1605)
\ No newline at end of file
diff --git a/Libraries/PyFilesystem/FileExamples/Dir1/WordDoc1.docx b/Libraries/PyFilesystem/FileExamples/Dir1/WordDoc1.docx
new file mode 100644
index 0000000..91ff05b
Binary files /dev/null and b/Libraries/PyFilesystem/FileExamples/Dir1/WordDoc1.docx differ
diff --git a/Libraries/PyFilesystem/FileExamples/Dir1/WordDoc2.docx b/Libraries/PyFilesystem/FileExamples/Dir1/WordDoc2.docx
new file mode 100644
index 0000000..cec52e5
Binary files /dev/null and b/Libraries/PyFilesystem/FileExamples/Dir1/WordDoc2.docx differ
diff --git a/Libraries/PyFilesystem/FileExamples/Dir2/File5.rtf b/Libraries/PyFilesystem/FileExamples/Dir2/File5.rtf
new file mode 100644
index 0000000..d2c6d5e
--- /dev/null
+++ b/Libraries/PyFilesystem/FileExamples/Dir2/File5.rtf
@@ -0,0 +1,207 @@
+{\rtf1\adeflang1025\ansi\ansicpg1252\uc1\adeff31507\deff0\stshfdbch31505\stshfloch31506\stshfhich31506\stshfbi31507\deflang1033\deflangfe1033\themelang1033\themelangfe0\themelangcs0{\fonttbl{\f0\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f34\fbidi \froman\fcharset0\fprq2{\*\panose 02040503050406030204}Cambria Math;}
+{\f37\fbidi \fswiss\fcharset0\fprq2{\*\panose 020f0502020204030204}Calibri;}{\flomajor\f31500\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}
+{\fdbmajor\f31501\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\fhimajor\f31502\fbidi \fswiss\fcharset0\fprq2{\*\panose 020f0302020204030204}Calibri Light;}
+{\fbimajor\f31503\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\flominor\f31504\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}
+{\fdbminor\f31505\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\fhiminor\f31506\fbidi \fswiss\fcharset0\fprq2{\*\panose 020f0502020204030204}Calibri;}
+{\fbiminor\f31507\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f43\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\f44\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}
+{\f46\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\f47\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\f48\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\f49\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}
+{\f50\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\f51\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\f413\fbidi \fswiss\fcharset238\fprq2 Calibri CE;}{\f414\fbidi \fswiss\fcharset204\fprq2 Calibri Cyr;}
+{\f416\fbidi \fswiss\fcharset161\fprq2 Calibri Greek;}{\f417\fbidi \fswiss\fcharset162\fprq2 Calibri Tur;}{\f418\fbidi \fswiss\fcharset177\fprq2 Calibri (Hebrew);}{\f419\fbidi \fswiss\fcharset178\fprq2 Calibri (Arabic);}
+{\f420\fbidi \fswiss\fcharset186\fprq2 Calibri Baltic;}{\f421\fbidi \fswiss\fcharset163\fprq2 Calibri (Vietnamese);}{\flomajor\f31508\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}
+{\flomajor\f31509\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\flomajor\f31511\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\flomajor\f31512\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}
+{\flomajor\f31513\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\flomajor\f31514\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\flomajor\f31515\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}
+{\flomajor\f31516\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\fdbmajor\f31518\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\fdbmajor\f31519\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}
+{\fdbmajor\f31521\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\fdbmajor\f31522\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\fdbmajor\f31523\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}
+{\fdbmajor\f31524\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\fdbmajor\f31525\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\fdbmajor\f31526\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}
+{\fhimajor\f31528\fbidi \fswiss\fcharset238\fprq2 Calibri Light CE;}{\fhimajor\f31529\fbidi \fswiss\fcharset204\fprq2 Calibri Light Cyr;}{\fhimajor\f31531\fbidi \fswiss\fcharset161\fprq2 Calibri Light Greek;}
+{\fhimajor\f31532\fbidi \fswiss\fcharset162\fprq2 Calibri Light Tur;}{\fhimajor\f31533\fbidi \fswiss\fcharset177\fprq2 Calibri Light (Hebrew);}{\fhimajor\f31534\fbidi \fswiss\fcharset178\fprq2 Calibri Light (Arabic);}
+{\fhimajor\f31535\fbidi \fswiss\fcharset186\fprq2 Calibri Light Baltic;}{\fhimajor\f31536\fbidi \fswiss\fcharset163\fprq2 Calibri Light (Vietnamese);}{\fbimajor\f31538\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}
+{\fbimajor\f31539\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\fbimajor\f31541\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\fbimajor\f31542\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}
+{\fbimajor\f31543\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\fbimajor\f31544\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\fbimajor\f31545\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}
+{\fbimajor\f31546\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\flominor\f31548\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\flominor\f31549\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}
+{\flominor\f31551\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\flominor\f31552\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\flominor\f31553\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}
+{\flominor\f31554\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\flominor\f31555\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\flominor\f31556\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}
+{\fdbminor\f31558\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\fdbminor\f31559\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\fdbminor\f31561\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}
+{\fdbminor\f31562\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\fdbminor\f31563\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\fdbminor\f31564\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}
+{\fdbminor\f31565\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\fdbminor\f31566\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\fhiminor\f31568\fbidi \fswiss\fcharset238\fprq2 Calibri CE;}
+{\fhiminor\f31569\fbidi \fswiss\fcharset204\fprq2 Calibri Cyr;}{\fhiminor\f31571\fbidi \fswiss\fcharset161\fprq2 Calibri Greek;}{\fhiminor\f31572\fbidi \fswiss\fcharset162\fprq2 Calibri Tur;}
+{\fhiminor\f31573\fbidi \fswiss\fcharset177\fprq2 Calibri (Hebrew);}{\fhiminor\f31574\fbidi \fswiss\fcharset178\fprq2 Calibri (Arabic);}{\fhiminor\f31575\fbidi \fswiss\fcharset186\fprq2 Calibri Baltic;}
+{\fhiminor\f31576\fbidi \fswiss\fcharset163\fprq2 Calibri (Vietnamese);}{\fbiminor\f31578\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\fbiminor\f31579\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}
+{\fbiminor\f31581\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\fbiminor\f31582\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\fbiminor\f31583\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}
+{\fbiminor\f31584\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\fbiminor\f31585\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\fbiminor\f31586\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}}
+{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;
+\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;\red192\green192\blue192;\red0\green0\blue0;\red0\green0\blue0;}{\*\defchp \fs22\loch\af31506\hich\af31506\dbch\af31505 }{\*\defpap
+\ql \li0\ri0\sa160\sl259\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 }\noqfpromote {\stylesheet{\ql \li0\ri0\sa160\sl259\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1
+\af31507\afs22\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\loch\f31506\hich\af31506\dbch\af31505\cgrid\langnp1033\langfenp1033 \snext0 \sqformat \spriority0 Normal;}{\*\cs10 \additive \ssemihidden \sunhideused \spriority1 Default Paragraph Font;}{\*
+\ts11\tsrowd\trftsWidthB3\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\trcbpat1\trcfpat1\tblind0\tblindtype3\tsvertalt\tsbrdrt\tsbrdrl\tsbrdrb\tsbrdrr\tsbrdrdgl\tsbrdrdgr\tsbrdrh\tsbrdrv \ql \li0\ri0\sa160\sl259\slmult1
+\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af31507\afs22\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\loch\f31506\hich\af31506\dbch\af31505\cgrid\langnp1033\langfenp1033 \snext11 \ssemihidden \sunhideused
+Normal Table;}}{\*\rsidtbl \rsid4880814\rsid12911857}{\mmathPr\mmathFont34\mbrkBin0\mbrkBinSub0\msmallFrac0\mdispDef1\mlMargin0\mrMargin0\mdefJc1\mwrapIndent1440\mintLim0\mnaryLim1}{\info{\operator Joe Marini}{\creatim\yr2020\mo2\dy23\hr12\min46}
+{\revtim\yr2020\mo2\dy23\hr12\min46}{\version2}{\edmins0}{\nofpages1}{\nofwords14}{\nofchars82}{\nofcharsws95}{\vern121}}{\*\xmlnstbl {\xmlns1 http://schemas.microsoft.com/office/word/2003/wordml}}
+\paperw12240\paperh15840\margl1440\margr1440\margt1440\margb1440\gutter0\ltrsect
+\widowctrl\ftnbj\aenddoc\trackmoves0\trackformatting1\donotembedsysfont0\relyonvml0\donotembedlingdata1\grfdocevents0\validatexml0\showplaceholdtext0\ignoremixedcontent0\saveinvalidxml0\showxmlerrors0\horzdoc\dghspace120\dgvspace120\dghorigin1701
+\dgvorigin1984\dghshow0\dgvshow3\jcompress\viewkind1\viewscale100\rsidroot12911857 \fet0{\*\wgrffmtfilter 2450}\ilfomacatclnup0\ltrpar \sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl2
+\pnucltr\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang {\pntxta )}}{\*\pnseclvl5\pndec\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl6
+\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl8\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang
+{\pntxtb (}{\pntxta )}}\pard\plain \ltrpar\ql \li0\ri0\sa160\sl259\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af31507\afs22\alang1025 \ltrch\fcs0
+\fs22\lang1033\langfe1033\loch\af31506\hich\af31506\dbch\af31505\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid12911857\charrsid12911857 \hich\af31506\dbch\af31505\loch\f31506 This is a sample }{\rtlch\fcs1 \af31507 \ltrch\fcs0
+\insrsid12911857 \hich\af31506\dbch\af31505\loch\f31506 Rich Text}{\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid12911857\charrsid12911857 \hich\af31506\dbch\af31505\loch\f31506 file for the Essential Python Libraries course on LinkedIn Learning.}{
+\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid4880814
+\par }{\*\themedata 504b030414000600080000002100e9de0fbfff0000001c020000130000005b436f6e74656e745f54797065735d2e786d6cac91cb4ec3301045f748fc83e52d4a
+9cb2400825e982c78ec7a27cc0c8992416c9d8b2a755fbf74cd25442a820166c2cd933f79e3be372bd1f07b5c3989ca74aaff2422b24eb1b475da5df374fd9ad
+5689811a183c61a50f98f4babebc2837878049899a52a57be670674cb23d8e90721f90a4d2fa3802cb35762680fd800ecd7551dc18eb899138e3c943d7e503b6
+b01d583deee5f99824e290b4ba3f364eac4a430883b3c092d4eca8f946c916422ecab927f52ea42b89a1cd59c254f919b0e85e6535d135a8de20f20b8c12c3b0
+0c895fcf6720192de6bf3b9e89ecdbd6596cbcdd8eb28e7c365ecc4ec1ff1460f53fe813d3cc7f5b7f020000ffff0300504b030414000600080000002100a5d6
+a7e7c0000000360100000b0000005f72656c732f2e72656c73848fcf6ac3300c87ef85bd83d17d51d2c31825762fa590432fa37d00e1287f68221bdb1bebdb4f
+c7060abb0884a4eff7a93dfeae8bf9e194e720169aaa06c3e2433fcb68e1763dbf7f82c985a4a725085b787086a37bdbb55fbc50d1a33ccd311ba548b6309512
+0f88d94fbc52ae4264d1c910d24a45db3462247fa791715fd71f989e19e0364cd3f51652d73760ae8fa8c9ffb3c330cc9e4fc17faf2ce545046e37944c69e462
+a1a82fe353bd90a865aad41ed0b5b8f9d6fd010000ffff0300504b0304140006000800000021006b799616830000008a0000001c0000007468656d652f746865
+6d652f7468656d654d616e616765722e786d6c0ccc4d0ac3201040e17da17790d93763bb284562b2cbaebbf600439c1a41c7a0d29fdbd7e5e38337cedf14d59b
+4b0d592c9c070d8a65cd2e88b7f07c2ca71ba8da481cc52c6ce1c715e6e97818c9b48d13df49c873517d23d59085adb5dd20d6b52bd521ef2cdd5eb9246a3d8b
+4757e8d3f729e245eb2b260a0238fd010000ffff0300504b030414000600080000002100b6f4679893070000c9200000160000007468656d652f7468656d652f
+7468656d65312e786d6cec59cd8b1bc915bf07f23f347d97f5d5ad8fc1f2a24fcfda33b6b164873dd648a5eef2547789aad28cc56208de532e81c026e49085bd
+ed21842cecc22eb9e48f31d8249b3f22afaa5bdd5552c99e191c3061463074977eefd5afde7bf5de53d5ddcf5e26d4bbc05c1096f6fcfa9d9aefe174ce16248d
+7afeb3d9a4d2f13d2151ba4094a5b8e76fb0f03fbbf7eb5fdd454732c609f6403e1547a8e7c752ae8eaa5531876124eeb0154ee1bb25e30992f0caa3ea82a34b
+d09bd06aa3566b55134452df4b51026a1f2f97648ebd9952e9dfdb2a1f53784da5500373caa74a35b6243476715e5708b11143cabd0b447b3eccb3609733fc52
+fa1e4542c2173dbfa6fffceabdbb5574940b517940d6909be8bf5c2e17589c37f49c3c3a2b260d823068f50bfd1a40e53e6edc1eb7c6ad429f06a0f91c569a71
+b175b61bc320c71aa0ecd1a17bd41e35eb16ded0dfdce3dc0fd5c7c26b50a63fd8c34f2643b0a285d7a00c1feee1c3417730b2f56b50866fede1dbb5fe28685b
+fa3528a6243ddf43d7c25673b85d6d0159327aec8477c360d26ee4ca4b144443115d6a8a254be5a1584bd00bc6270050408a24493db959e1259a43140f112567
+9c7827248a21f056286502866b8ddaa4d684ffea13e827ed5174849121ad780113b137a4f87862cec94af6fc07a0d537206f7ffef9cdeb1fdfbcfee9cd575fbd
+79fdf77c6eadca923b466964cafdf2dd1ffef3cd6fbd7ffff0ed2f5fff319b7a172f4cfcbbbffdeedd3ffef93ef5b0e2d2146ffff4fdbb1fbf7ffbe7dfffebaf
+5f3bb4f7393a33e1339260e13dc297de5396c0021dfcf119bf9ec42c46c494e8a791402952b338f48f656ca11f6d10450edc00db767cce21d5b880f7d72f2cc2
+d398af2571687c182716f094313a60dc6985876a2ec3ccb3751ab927e76b13f714a10bd7dc43945a5e1eaf579063894be530c616cd2714a5124538c5d253dfb1
+738c1dabfb8210cbaea764ce99604be97d41bc01224e93ccc899154da5d03149c02f1b1741f0b7659bd3e7de8051d7aa47f8c246c2de40d4417e86a965c6fb68
+2d51e252394309350d7e8264ec2239ddf0b9891b0b099e8e3065de78818570c93ce6b05ec3e90f21cdb8dd7e4a37898de4929cbb749e20c64ce4889d0f6394ac
+5cd829496313fbb938871045de13265df05366ef10f50e7e40e941773f27d872f787b3c133c8b026a53240d4376beef0e57dccacf89d6ee8126157aae9f3c44a
+b17d4e9cd131584756689f604cd1255a60ec3dfbdcc160c05696cd4bd20f62c82ac7d815580f901dabea3dc5027a25d5dcece7c91322ac909de2881de073bad9
+493c1b9426881fd2fc08bc6eda7c0ca52e7105c0633a3f37818f08f480102f4ea33c16a0c308ee835a9fc4c82a60ea5db8e375c32dff5d658fc1be7c61d1b8c2
+be04197c6d1948eca6cc7b6d3343d49aa00c9819822ec3956e41c4727f29a28aab165b3be596f6a62ddd00dd91d5f42424fd6007b4d3fb84ffbbde073a8cb77f
+f9c6b10f3e4ebfe3566c25ab6b763a8792c9f14e7f7308b7dbd50c195f904fbfa919a175fa04431dd9cf58b73dcd6d4fe3ffdff73487f6f36d2773a8dfb8ed64
+7ce8306e3b99fc70e5e3743265f3027d8d3af0c80e7af4b14f72f0d46749289dca0dc527421ffc08f83db398c0a092d3279eb838055cc5f0a8ca1c4c60e1228e
+b48cc799fc0d91f134462b381daafb4a492472d591f0564cc0a1911e76ea5678ba4e4ed9223becacd7d5c16656590592e5782d2cc6e1a04a66e856bb3cc02bd4
+6bb6913e68dd1250b2d721614c6693683a48b4b783ca48fa58178ce620a157f65158741d2c3a4afdd6557b2c805ae115f8c1edc1cff49e1f06200242701e07cd
+f942f92973f5d6bbda991fd3d3878c69450034d8db08283ddd555c0f2e4fad2e0bb52b78da2261849b4d425b46377822869fc17974aad1abd0b8aeafbba54b2d
+7aca147a3e08ad9246bbf33e1637f535c8ede6069a9a9982a6de65cf6f35430899395af5fc251c1ac363b282d811ea3717a211dcbccc25cf36fc4d32cb8a0b39
+4222ce0cae934e960d122231f728497abe5a7ee1069aea1ca2b9d51b90103e59725d482b9f1a3970baed64bc5ce2b934dd6e8c284b67af90e1b35ce1fc568bdf
+1cac24d91adc3d8d1797de195df3a708422c6cd795011744c0dd413db3e682c0655891c8caf8db294c79da356fa3740c65e388ae62945714339967709dca0b3a
+faadb081f196af190c6a98242f8467912ab0a651ad6a5a548d8cc3c1aafb6121653923699635d3ca2aaa6abab39835c3b60cecd8f26645de60b53531e434b3c2
+67a97b37e576b7b96ea74f28aa0418bcb09fa3ea5ea12018d4cac92c6a8af17e1a56393b1fb56bc776811fa07695226164fdd656ed8edd8a1ae19c0e066f54f9
+416e376a6168b9ed2bb5a5f5adb979b1cdce5e40f2184197bba6526857c2c92e47d0104d754f92a50dd8222f65be35e0c95b73d2f3bfac85fd60d80887955a27
+1c57826650ab74c27eb3d20fc3667d1cd66ba341e31514161927f530bbb19fc00506dde4f7f67a7cefee3ed9ded1dc99b3a4caf4dd7c5513d777f7f5c6e1bb7b
+8f40d2f9b2d598749bdd41abd26df627956034e854bac3d6a0326a0ddba3c9681876ba9357be77a1c141bf390c5ae34ea5551f0e2b41aba6e877ba9576d068f4
+8376bf330efaaff23606569ea58fdc16605ecdebde7f010000ffff0300504b0304140006000800000021000dd1909fb60000001b010000270000007468656d65
+2f7468656d652f5f72656c732f7468656d654d616e616765722e786d6c2e72656c73848f4d0ac2301484f78277086f6fd3ba109126dd88d0add40384e4350d36
+3f2451eced0dae2c082e8761be9969bb979dc9136332de3168aa1a083ae995719ac16db8ec8e4052164e89d93b64b060828e6f37ed1567914b284d262452282e
+3198720e274a939cd08a54f980ae38a38f56e422a3a641c8bbd048f7757da0f19b017cc524bd62107bd5001996509affb3fd381a89672f1f165dfe514173d985
+0528a2c6cce0239baa4c04ca5bbabac4df000000ffff0300504b01022d0014000600080000002100e9de0fbfff0000001c020000130000000000000000000000
+0000000000005b436f6e74656e745f54797065735d2e786d6c504b01022d0014000600080000002100a5d6a7e7c0000000360100000b00000000000000000000
+000000300100005f72656c732f2e72656c73504b01022d00140006000800000021006b799616830000008a0000001c0000000000000000000000000019020000
+7468656d652f7468656d652f7468656d654d616e616765722e786d6c504b01022d0014000600080000002100b6f4679893070000c92000001600000000000000
+000000000000d60200007468656d652f7468656d652f7468656d65312e786d6c504b01022d00140006000800000021000dd1909fb60000001b01000027000000
+000000000000000000009d0a00007468656d652f7468656d652f5f72656c732f7468656d654d616e616765722e786d6c2e72656c73504b050600000000050005005d010000980b00000000}
+{\*\colorschememapping 3c3f786d6c2076657273696f6e3d22312e302220656e636f64696e673d225554462d3822207374616e64616c6f6e653d22796573223f3e0d0a3c613a636c724d
+617020786d6c6e733a613d22687474703a2f2f736368656d61732e6f70656e786d6c666f726d6174732e6f72672f64726177696e676d6c2f323030362f6d6169
+6e22206267313d226c743122207478313d22646b3122206267323d226c743222207478323d22646b322220616363656e74313d22616363656e74312220616363
+656e74323d22616363656e74322220616363656e74333d22616363656e74332220616363656e74343d22616363656e74342220616363656e74353d22616363656e74352220616363656e74363d22616363656e74362220686c696e6b3d22686c696e6b2220666f6c486c696e6b3d22666f6c486c696e6b222f3e}
+{\*\latentstyles\lsdstimax376\lsdlockeddef0\lsdsemihiddendef0\lsdunhideuseddef0\lsdqformatdef0\lsdprioritydef99{\lsdlockedexcept \lsdqformat1 \lsdpriority0 \lsdlocked0 Normal;\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 1;
+\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 2;\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 3;\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 4;
+\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 5;\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 6;\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 7;
+\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 8;\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 9;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 1;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 5;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 6;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 7;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 8;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 9;
+\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 1;\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 2;\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 3;
+\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 4;\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 5;\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 6;
+\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 7;\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 8;\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 9;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Normal Indent;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 footnote text;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 annotation text;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 header;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 footer;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index heading;\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority35 \lsdlocked0 caption;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 table of figures;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 envelope address;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 envelope return;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 footnote reference;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 annotation reference;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 line number;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 page number;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 endnote reference;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 endnote text;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 table of authorities;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 macro;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 toa heading;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Bullet;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Number;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List 3;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List 5;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Bullet 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Bullet 3;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Bullet 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Bullet 5;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Number 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Number 3;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Number 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Number 5;\lsdqformat1 \lsdpriority10 \lsdlocked0 Title;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Closing;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Signature;\lsdsemihidden1 \lsdunhideused1 \lsdpriority1 \lsdlocked0 Default Paragraph Font;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text Indent;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Continue;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Continue 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Continue 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Continue 4;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Continue 5;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Message Header;\lsdqformat1 \lsdpriority11 \lsdlocked0 Subtitle;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Salutation;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Date;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text First Indent;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text First Indent 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Note Heading;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text Indent 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text Indent 3;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Block Text;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Hyperlink;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 FollowedHyperlink;\lsdqformat1 \lsdpriority22 \lsdlocked0 Strong;
+\lsdqformat1 \lsdpriority20 \lsdlocked0 Emphasis;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Document Map;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Plain Text;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 E-mail Signature;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Top of Form;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Bottom of Form;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Normal (Web);\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Acronym;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Address;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Cite;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Code;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Definition;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Keyboard;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Preformatted;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Sample;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Typewriter;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Variable;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Normal Table;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 annotation subject;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 No List;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Outline List 1;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Outline List 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Outline List 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Simple 1;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Simple 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Simple 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Classic 1;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Classic 2;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Classic 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Classic 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Colorful 1;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Colorful 2;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Colorful 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Columns 1;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Columns 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Columns 3;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Columns 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Columns 5;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Grid 1;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Grid 2;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Grid 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Grid 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Grid 5;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Grid 6;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Grid 7;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Grid 8;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table List 1;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table List 2;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table List 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table List 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table List 5;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table List 6;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table List 7;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table List 8;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table 3D effects 1;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table 3D effects 2;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table 3D effects 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Contemporary;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Elegant;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Professional;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Subtle 1;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Subtle 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Web 1;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Web 2;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Web 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Balloon Text;\lsdpriority39 \lsdlocked0 Table Grid;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Theme;\lsdsemihidden1 \lsdlocked0 Placeholder Text;
+\lsdqformat1 \lsdpriority1 \lsdlocked0 No Spacing;\lsdpriority60 \lsdlocked0 Light Shading;\lsdpriority61 \lsdlocked0 Light List;\lsdpriority62 \lsdlocked0 Light Grid;\lsdpriority63 \lsdlocked0 Medium Shading 1;\lsdpriority64 \lsdlocked0 Medium Shading 2;
+\lsdpriority65 \lsdlocked0 Medium List 1;\lsdpriority66 \lsdlocked0 Medium List 2;\lsdpriority67 \lsdlocked0 Medium Grid 1;\lsdpriority68 \lsdlocked0 Medium Grid 2;\lsdpriority69 \lsdlocked0 Medium Grid 3;\lsdpriority70 \lsdlocked0 Dark List;
+\lsdpriority71 \lsdlocked0 Colorful Shading;\lsdpriority72 \lsdlocked0 Colorful List;\lsdpriority73 \lsdlocked0 Colorful Grid;\lsdpriority60 \lsdlocked0 Light Shading Accent 1;\lsdpriority61 \lsdlocked0 Light List Accent 1;
+\lsdpriority62 \lsdlocked0 Light Grid Accent 1;\lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 1;\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 1;\lsdpriority65 \lsdlocked0 Medium List 1 Accent 1;\lsdsemihidden1 \lsdlocked0 Revision;
+\lsdqformat1 \lsdpriority34 \lsdlocked0 List Paragraph;\lsdqformat1 \lsdpriority29 \lsdlocked0 Quote;\lsdqformat1 \lsdpriority30 \lsdlocked0 Intense Quote;\lsdpriority66 \lsdlocked0 Medium List 2 Accent 1;\lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 1;
+\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 1;\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 1;\lsdpriority70 \lsdlocked0 Dark List Accent 1;\lsdpriority71 \lsdlocked0 Colorful Shading Accent 1;\lsdpriority72 \lsdlocked0 Colorful List Accent 1;
+\lsdpriority73 \lsdlocked0 Colorful Grid Accent 1;\lsdpriority60 \lsdlocked0 Light Shading Accent 2;\lsdpriority61 \lsdlocked0 Light List Accent 2;\lsdpriority62 \lsdlocked0 Light Grid Accent 2;\lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 2;
+\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 2;\lsdpriority65 \lsdlocked0 Medium List 1 Accent 2;\lsdpriority66 \lsdlocked0 Medium List 2 Accent 2;\lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 2;\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 2;
+\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 2;\lsdpriority70 \lsdlocked0 Dark List Accent 2;\lsdpriority71 \lsdlocked0 Colorful Shading Accent 2;\lsdpriority72 \lsdlocked0 Colorful List Accent 2;\lsdpriority73 \lsdlocked0 Colorful Grid Accent 2;
+\lsdpriority60 \lsdlocked0 Light Shading Accent 3;\lsdpriority61 \lsdlocked0 Light List Accent 3;\lsdpriority62 \lsdlocked0 Light Grid Accent 3;\lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 3;\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 3;
+\lsdpriority65 \lsdlocked0 Medium List 1 Accent 3;\lsdpriority66 \lsdlocked0 Medium List 2 Accent 3;\lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 3;\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 3;\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 3;
+\lsdpriority70 \lsdlocked0 Dark List Accent 3;\lsdpriority71 \lsdlocked0 Colorful Shading Accent 3;\lsdpriority72 \lsdlocked0 Colorful List Accent 3;\lsdpriority73 \lsdlocked0 Colorful Grid Accent 3;\lsdpriority60 \lsdlocked0 Light Shading Accent 4;
+\lsdpriority61 \lsdlocked0 Light List Accent 4;\lsdpriority62 \lsdlocked0 Light Grid Accent 4;\lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 4;\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 4;\lsdpriority65 \lsdlocked0 Medium List 1 Accent 4;
+\lsdpriority66 \lsdlocked0 Medium List 2 Accent 4;\lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 4;\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 4;\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 4;\lsdpriority70 \lsdlocked0 Dark List Accent 4;
+\lsdpriority71 \lsdlocked0 Colorful Shading Accent 4;\lsdpriority72 \lsdlocked0 Colorful List Accent 4;\lsdpriority73 \lsdlocked0 Colorful Grid Accent 4;\lsdpriority60 \lsdlocked0 Light Shading Accent 5;\lsdpriority61 \lsdlocked0 Light List Accent 5;
+\lsdpriority62 \lsdlocked0 Light Grid Accent 5;\lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 5;\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 5;\lsdpriority65 \lsdlocked0 Medium List 1 Accent 5;\lsdpriority66 \lsdlocked0 Medium List 2 Accent 5;
+\lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 5;\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 5;\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 5;\lsdpriority70 \lsdlocked0 Dark List Accent 5;\lsdpriority71 \lsdlocked0 Colorful Shading Accent 5;
+\lsdpriority72 \lsdlocked0 Colorful List Accent 5;\lsdpriority73 \lsdlocked0 Colorful Grid Accent 5;\lsdpriority60 \lsdlocked0 Light Shading Accent 6;\lsdpriority61 \lsdlocked0 Light List Accent 6;\lsdpriority62 \lsdlocked0 Light Grid Accent 6;
+\lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 6;\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 6;\lsdpriority65 \lsdlocked0 Medium List 1 Accent 6;\lsdpriority66 \lsdlocked0 Medium List 2 Accent 6;
+\lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 6;\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 6;\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 6;\lsdpriority70 \lsdlocked0 Dark List Accent 6;\lsdpriority71 \lsdlocked0 Colorful Shading Accent 6;
+\lsdpriority72 \lsdlocked0 Colorful List Accent 6;\lsdpriority73 \lsdlocked0 Colorful Grid Accent 6;\lsdqformat1 \lsdpriority19 \lsdlocked0 Subtle Emphasis;\lsdqformat1 \lsdpriority21 \lsdlocked0 Intense Emphasis;
+\lsdqformat1 \lsdpriority31 \lsdlocked0 Subtle Reference;\lsdqformat1 \lsdpriority32 \lsdlocked0 Intense Reference;\lsdqformat1 \lsdpriority33 \lsdlocked0 Book Title;\lsdsemihidden1 \lsdunhideused1 \lsdpriority37 \lsdlocked0 Bibliography;
+\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority39 \lsdlocked0 TOC Heading;\lsdpriority41 \lsdlocked0 Plain Table 1;\lsdpriority42 \lsdlocked0 Plain Table 2;\lsdpriority43 \lsdlocked0 Plain Table 3;\lsdpriority44 \lsdlocked0 Plain Table 4;
+\lsdpriority45 \lsdlocked0 Plain Table 5;\lsdpriority40 \lsdlocked0 Grid Table Light;\lsdpriority46 \lsdlocked0 Grid Table 1 Light;\lsdpriority47 \lsdlocked0 Grid Table 2;\lsdpriority48 \lsdlocked0 Grid Table 3;\lsdpriority49 \lsdlocked0 Grid Table 4;
+\lsdpriority50 \lsdlocked0 Grid Table 5 Dark;\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful;\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful;\lsdpriority46 \lsdlocked0 Grid Table 1 Light Accent 1;\lsdpriority47 \lsdlocked0 Grid Table 2 Accent 1;
+\lsdpriority48 \lsdlocked0 Grid Table 3 Accent 1;\lsdpriority49 \lsdlocked0 Grid Table 4 Accent 1;\lsdpriority50 \lsdlocked0 Grid Table 5 Dark Accent 1;\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful Accent 1;
+\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful Accent 1;\lsdpriority46 \lsdlocked0 Grid Table 1 Light Accent 2;\lsdpriority47 \lsdlocked0 Grid Table 2 Accent 2;\lsdpriority48 \lsdlocked0 Grid Table 3 Accent 2;
+\lsdpriority49 \lsdlocked0 Grid Table 4 Accent 2;\lsdpriority50 \lsdlocked0 Grid Table 5 Dark Accent 2;\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful Accent 2;\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful Accent 2;
+\lsdpriority46 \lsdlocked0 Grid Table 1 Light Accent 3;\lsdpriority47 \lsdlocked0 Grid Table 2 Accent 3;\lsdpriority48 \lsdlocked0 Grid Table 3 Accent 3;\lsdpriority49 \lsdlocked0 Grid Table 4 Accent 3;
+\lsdpriority50 \lsdlocked0 Grid Table 5 Dark Accent 3;\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful Accent 3;\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful Accent 3;\lsdpriority46 \lsdlocked0 Grid Table 1 Light Accent 4;
+\lsdpriority47 \lsdlocked0 Grid Table 2 Accent 4;\lsdpriority48 \lsdlocked0 Grid Table 3 Accent 4;\lsdpriority49 \lsdlocked0 Grid Table 4 Accent 4;\lsdpriority50 \lsdlocked0 Grid Table 5 Dark Accent 4;
+\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful Accent 4;\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful Accent 4;\lsdpriority46 \lsdlocked0 Grid Table 1 Light Accent 5;\lsdpriority47 \lsdlocked0 Grid Table 2 Accent 5;
+\lsdpriority48 \lsdlocked0 Grid Table 3 Accent 5;\lsdpriority49 \lsdlocked0 Grid Table 4 Accent 5;\lsdpriority50 \lsdlocked0 Grid Table 5 Dark Accent 5;\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful Accent 5;
+\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful Accent 5;\lsdpriority46 \lsdlocked0 Grid Table 1 Light Accent 6;\lsdpriority47 \lsdlocked0 Grid Table 2 Accent 6;\lsdpriority48 \lsdlocked0 Grid Table 3 Accent 6;
+\lsdpriority49 \lsdlocked0 Grid Table 4 Accent 6;\lsdpriority50 \lsdlocked0 Grid Table 5 Dark Accent 6;\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful Accent 6;\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful Accent 6;
+\lsdpriority46 \lsdlocked0 List Table 1 Light;\lsdpriority47 \lsdlocked0 List Table 2;\lsdpriority48 \lsdlocked0 List Table 3;\lsdpriority49 \lsdlocked0 List Table 4;\lsdpriority50 \lsdlocked0 List Table 5 Dark;
+\lsdpriority51 \lsdlocked0 List Table 6 Colorful;\lsdpriority52 \lsdlocked0 List Table 7 Colorful;\lsdpriority46 \lsdlocked0 List Table 1 Light Accent 1;\lsdpriority47 \lsdlocked0 List Table 2 Accent 1;\lsdpriority48 \lsdlocked0 List Table 3 Accent 1;
+\lsdpriority49 \lsdlocked0 List Table 4 Accent 1;\lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 1;\lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 1;\lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 1;
+\lsdpriority46 \lsdlocked0 List Table 1 Light Accent 2;\lsdpriority47 \lsdlocked0 List Table 2 Accent 2;\lsdpriority48 \lsdlocked0 List Table 3 Accent 2;\lsdpriority49 \lsdlocked0 List Table 4 Accent 2;
+\lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 2;\lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 2;\lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 2;\lsdpriority46 \lsdlocked0 List Table 1 Light Accent 3;
+\lsdpriority47 \lsdlocked0 List Table 2 Accent 3;\lsdpriority48 \lsdlocked0 List Table 3 Accent 3;\lsdpriority49 \lsdlocked0 List Table 4 Accent 3;\lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 3;
+\lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 3;\lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 3;\lsdpriority46 \lsdlocked0 List Table 1 Light Accent 4;\lsdpriority47 \lsdlocked0 List Table 2 Accent 4;
+\lsdpriority48 \lsdlocked0 List Table 3 Accent 4;\lsdpriority49 \lsdlocked0 List Table 4 Accent 4;\lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 4;\lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 4;
+\lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 4;\lsdpriority46 \lsdlocked0 List Table 1 Light Accent 5;\lsdpriority47 \lsdlocked0 List Table 2 Accent 5;\lsdpriority48 \lsdlocked0 List Table 3 Accent 5;
+\lsdpriority49 \lsdlocked0 List Table 4 Accent 5;\lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 5;\lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 5;\lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 5;
+\lsdpriority46 \lsdlocked0 List Table 1 Light Accent 6;\lsdpriority47 \lsdlocked0 List Table 2 Accent 6;\lsdpriority48 \lsdlocked0 List Table 3 Accent 6;\lsdpriority49 \lsdlocked0 List Table 4 Accent 6;
+\lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 6;\lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 6;\lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 6;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Mention;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Smart Hyperlink;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Hashtag;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Unresolved Mention;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Smart Link;}}{\*\datastore 01050000
+02000000180000004d73786d6c322e534158584d4c5265616465722e362e3000000000000000000000060000
+d0cf11e0a1b11ae1000000000000000000000000000000003e000300feff090006000000000000000000000001000000010000000000000000100000feffffff00000000feffffff0000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffdfffffffeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffff52006f006f007400200045006e00740072007900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016000500ffffffffffffffffffffffff0c6ad98892f1d411a65f0040963251e5000000000000000000000000900a
+41558aead501feffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff00000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000105000000000000}}
\ No newline at end of file
diff --git a/Libraries/PyFilesystem/FileExamples/Dir2/File6.rtf b/Libraries/PyFilesystem/FileExamples/Dir2/File6.rtf
new file mode 100644
index 0000000..4c480da
--- /dev/null
+++ b/Libraries/PyFilesystem/FileExamples/Dir2/File6.rtf
@@ -0,0 +1,207 @@
+{\rtf1\adeflang1025\ansi\ansicpg1252\uc1\adeff31507\deff0\stshfdbch31505\stshfloch31506\stshfhich31506\stshfbi31507\deflang1033\deflangfe1033\themelang1033\themelangfe0\themelangcs0{\fonttbl{\f0\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f34\fbidi \froman\fcharset0\fprq2{\*\panose 02040503050406030204}Cambria Math;}
+{\f37\fbidi \fswiss\fcharset0\fprq2{\*\panose 020f0502020204030204}Calibri;}{\flomajor\f31500\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}
+{\fdbmajor\f31501\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\fhimajor\f31502\fbidi \fswiss\fcharset0\fprq2{\*\panose 020f0302020204030204}Calibri Light;}
+{\fbimajor\f31503\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\flominor\f31504\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}
+{\fdbminor\f31505\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\fhiminor\f31506\fbidi \fswiss\fcharset0\fprq2{\*\panose 020f0502020204030204}Calibri;}
+{\fbiminor\f31507\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f43\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\f44\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}
+{\f46\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\f47\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\f48\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\f49\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}
+{\f50\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\f51\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\f413\fbidi \fswiss\fcharset238\fprq2 Calibri CE;}{\f414\fbidi \fswiss\fcharset204\fprq2 Calibri Cyr;}
+{\f416\fbidi \fswiss\fcharset161\fprq2 Calibri Greek;}{\f417\fbidi \fswiss\fcharset162\fprq2 Calibri Tur;}{\f418\fbidi \fswiss\fcharset177\fprq2 Calibri (Hebrew);}{\f419\fbidi \fswiss\fcharset178\fprq2 Calibri (Arabic);}
+{\f420\fbidi \fswiss\fcharset186\fprq2 Calibri Baltic;}{\f421\fbidi \fswiss\fcharset163\fprq2 Calibri (Vietnamese);}{\flomajor\f31508\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}
+{\flomajor\f31509\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\flomajor\f31511\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\flomajor\f31512\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}
+{\flomajor\f31513\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\flomajor\f31514\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\flomajor\f31515\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}
+{\flomajor\f31516\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\fdbmajor\f31518\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\fdbmajor\f31519\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}
+{\fdbmajor\f31521\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\fdbmajor\f31522\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\fdbmajor\f31523\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}
+{\fdbmajor\f31524\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\fdbmajor\f31525\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\fdbmajor\f31526\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}
+{\fhimajor\f31528\fbidi \fswiss\fcharset238\fprq2 Calibri Light CE;}{\fhimajor\f31529\fbidi \fswiss\fcharset204\fprq2 Calibri Light Cyr;}{\fhimajor\f31531\fbidi \fswiss\fcharset161\fprq2 Calibri Light Greek;}
+{\fhimajor\f31532\fbidi \fswiss\fcharset162\fprq2 Calibri Light Tur;}{\fhimajor\f31533\fbidi \fswiss\fcharset177\fprq2 Calibri Light (Hebrew);}{\fhimajor\f31534\fbidi \fswiss\fcharset178\fprq2 Calibri Light (Arabic);}
+{\fhimajor\f31535\fbidi \fswiss\fcharset186\fprq2 Calibri Light Baltic;}{\fhimajor\f31536\fbidi \fswiss\fcharset163\fprq2 Calibri Light (Vietnamese);}{\fbimajor\f31538\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}
+{\fbimajor\f31539\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\fbimajor\f31541\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\fbimajor\f31542\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}
+{\fbimajor\f31543\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\fbimajor\f31544\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\fbimajor\f31545\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}
+{\fbimajor\f31546\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\flominor\f31548\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\flominor\f31549\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}
+{\flominor\f31551\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\flominor\f31552\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\flominor\f31553\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}
+{\flominor\f31554\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\flominor\f31555\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\flominor\f31556\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}
+{\fdbminor\f31558\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\fdbminor\f31559\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\fdbminor\f31561\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}
+{\fdbminor\f31562\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\fdbminor\f31563\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\fdbminor\f31564\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}
+{\fdbminor\f31565\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\fdbminor\f31566\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\fhiminor\f31568\fbidi \fswiss\fcharset238\fprq2 Calibri CE;}
+{\fhiminor\f31569\fbidi \fswiss\fcharset204\fprq2 Calibri Cyr;}{\fhiminor\f31571\fbidi \fswiss\fcharset161\fprq2 Calibri Greek;}{\fhiminor\f31572\fbidi \fswiss\fcharset162\fprq2 Calibri Tur;}
+{\fhiminor\f31573\fbidi \fswiss\fcharset177\fprq2 Calibri (Hebrew);}{\fhiminor\f31574\fbidi \fswiss\fcharset178\fprq2 Calibri (Arabic);}{\fhiminor\f31575\fbidi \fswiss\fcharset186\fprq2 Calibri Baltic;}
+{\fhiminor\f31576\fbidi \fswiss\fcharset163\fprq2 Calibri (Vietnamese);}{\fbiminor\f31578\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\fbiminor\f31579\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}
+{\fbiminor\f31581\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\fbiminor\f31582\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\fbiminor\f31583\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}
+{\fbiminor\f31584\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\fbiminor\f31585\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\fbiminor\f31586\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}}
+{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;
+\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;\red192\green192\blue192;\red0\green0\blue0;\red0\green0\blue0;}{\*\defchp \fs22\loch\af31506\hich\af31506\dbch\af31505 }{\*\defpap
+\ql \li0\ri0\sa160\sl259\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 }\noqfpromote {\stylesheet{\ql \li0\ri0\sa160\sl259\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1
+\af31507\afs22\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\loch\f31506\hich\af31506\dbch\af31505\cgrid\langnp1033\langfenp1033 \snext0 \sqformat \spriority0 Normal;}{\*\cs10 \additive \ssemihidden \sunhideused \spriority1 Default Paragraph Font;}{\*
+\ts11\tsrowd\trftsWidthB3\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\trcbpat1\trcfpat1\tblind0\tblindtype3\tsvertalt\tsbrdrt\tsbrdrl\tsbrdrb\tsbrdrr\tsbrdrdgl\tsbrdrdgr\tsbrdrh\tsbrdrv \ql \li0\ri0\sa160\sl259\slmult1
+\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af31507\afs22\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\loch\f31506\hich\af31506\dbch\af31505\cgrid\langnp1033\langfenp1033 \snext11 \ssemihidden \sunhideused
+Normal Table;}}{\*\rsidtbl \rsid14437203\rsid16217677}{\mmathPr\mmathFont34\mbrkBin0\mbrkBinSub0\msmallFrac0\mdispDef1\mlMargin0\mrMargin0\mdefJc1\mwrapIndent1440\mintLim0\mnaryLim1}{\info{\operator Joe Marini}{\creatim\yr2020\mo2\dy23\hr12\min46}
+{\revtim\yr2020\mo2\dy23\hr12\min46}{\version2}{\edmins0}{\nofpages1}{\nofwords14}{\nofchars82}{\nofcharsws95}{\vern121}}{\*\xmlnstbl {\xmlns1 http://schemas.microsoft.com/office/word/2003/wordml}}
+\paperw12240\paperh15840\margl1440\margr1440\margt1440\margb1440\gutter0\ltrsect
+\widowctrl\ftnbj\aenddoc\trackmoves0\trackformatting1\donotembedsysfont0\relyonvml0\donotembedlingdata1\grfdocevents0\validatexml0\showplaceholdtext0\ignoremixedcontent0\saveinvalidxml0\showxmlerrors0\horzdoc\dghspace120\dgvspace120\dghorigin1701
+\dgvorigin1984\dghshow0\dgvshow3\jcompress\viewkind1\viewscale100\rsidroot14437203 \fet0{\*\wgrffmtfilter 2450}\ilfomacatclnup0\ltrpar \sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl2
+\pnucltr\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang {\pntxta )}}{\*\pnseclvl5\pndec\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl6
+\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl8\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang
+{\pntxtb (}{\pntxta )}}\pard\plain \ltrpar\ql \li0\ri0\sa160\sl259\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af31507\afs22\alang1025 \ltrch\fcs0
+\fs22\lang1033\langfe1033\loch\af31506\hich\af31506\dbch\af31505\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid14437203\charrsid14437203 \hich\af31506\dbch\af31505\loch\f31506 This is a sample }{\rtlch\fcs1 \af31507 \ltrch\fcs0
+\insrsid14437203 \hich\af31506\dbch\af31505\loch\f31506 Rich Text}{\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid14437203\charrsid14437203 \hich\af31506\dbch\af31505\loch\f31506 file for the Essential Python Libraries course on LinkedIn Learning.}{
+\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid16217677
+\par }{\*\themedata 504b030414000600080000002100e9de0fbfff0000001c020000130000005b436f6e74656e745f54797065735d2e786d6cac91cb4ec3301045f748fc83e52d4a
+9cb2400825e982c78ec7a27cc0c8992416c9d8b2a755fbf74cd25442a820166c2cd933f79e3be372bd1f07b5c3989ca74aaff2422b24eb1b475da5df374fd9ad
+5689811a183c61a50f98f4babebc2837878049899a52a57be670674cb23d8e90721f90a4d2fa3802cb35762680fd800ecd7551dc18eb899138e3c943d7e503b6
+b01d583deee5f99824e290b4ba3f364eac4a430883b3c092d4eca8f946c916422ecab927f52ea42b89a1cd59c254f919b0e85e6535d135a8de20f20b8c12c3b0
+0c895fcf6720192de6bf3b9e89ecdbd6596cbcdd8eb28e7c365ecc4ec1ff1460f53fe813d3cc7f5b7f020000ffff0300504b030414000600080000002100a5d6
+a7e7c0000000360100000b0000005f72656c732f2e72656c73848fcf6ac3300c87ef85bd83d17d51d2c31825762fa590432fa37d00e1287f68221bdb1bebdb4f
+c7060abb0884a4eff7a93dfeae8bf9e194e720169aaa06c3e2433fcb68e1763dbf7f82c985a4a725085b787086a37bdbb55fbc50d1a33ccd311ba548b6309512
+0f88d94fbc52ae4264d1c910d24a45db3462247fa791715fd71f989e19e0364cd3f51652d73760ae8fa8c9ffb3c330cc9e4fc17faf2ce545046e37944c69e462
+a1a82fe353bd90a865aad41ed0b5b8f9d6fd010000ffff0300504b0304140006000800000021006b799616830000008a0000001c0000007468656d652f746865
+6d652f7468656d654d616e616765722e786d6c0ccc4d0ac3201040e17da17790d93763bb284562b2cbaebbf600439c1a41c7a0d29fdbd7e5e38337cedf14d59b
+4b0d592c9c070d8a65cd2e88b7f07c2ca71ba8da481cc52c6ce1c715e6e97818c9b48d13df49c873517d23d59085adb5dd20d6b52bd521ef2cdd5eb9246a3d8b
+4757e8d3f729e245eb2b260a0238fd010000ffff0300504b030414000600080000002100b6f4679893070000c9200000160000007468656d652f7468656d652f
+7468656d65312e786d6cec59cd8b1bc915bf07f23f347d97f5d5ad8fc1f2a24fcfda33b6b164873dd648a5eef2547789aad28cc56208de532e81c026e49085bd
+ed21842cecc22eb9e48f31d8249b3f22afaa5bdd5552c99e191c3061463074977eefd5afde7bf5de53d5ddcf5e26d4bbc05c1096f6fcfa9d9aefe174ce16248d
+7afeb3d9a4d2f13d2151ba4094a5b8e76fb0f03fbbf7eb5fdd454732c609f6403e1547a8e7c752ae8eaa5531876124eeb0154ee1bb25e30992f0caa3ea82a34b
+d09bd06aa3566b55134452df4b51026a1f2f97648ebd9952e9dfdb2a1f53784da5500373caa74a35b6243476715e5708b11143cabd0b447b3eccb3609733fc52
+fa1e4542c2173dbfa6fffceabdbb5574940b517940d6909be8bf5c2e17589c37f49c3c3a2b260d823068f50bfd1a40e53e6edc1eb7c6ad429f06a0f91c569a71
+b175b61bc320c71aa0ecd1a17bd41e35eb16ded0dfdce3dc0fd5c7c26b50a63fd8c34f2643b0a285d7a00c1feee1c3417730b2f56b50866fede1dbb5fe28685b
+fa3528a6243ddf43d7c25673b85d6d0159327aec8477c360d26ee4ca4b144443115d6a8a254be5a1584bd00bc6270050408a24493db959e1259a43140f112567
+9c7827248a21f056286502866b8ddaa4d684ffea13e827ed5174849121ad780113b137a4f87862cec94af6fc07a0d537206f7ffef9cdeb1fdfbcfee9cd575fbd
+79fdf77c6eadca923b466964cafdf2dd1ffef3cd6fbd7ffff0ed2f5fff319b7a172f4cfcbbbffdeedd3ffef93ef5b0e2d2146ffff4fdbb1fbf7ffbe7dfffebaf
+5f3bb4f7393a33e1339260e13dc297de5396c0021dfcf119bf9ec42c46c494e8a791402952b338f48f656ca11f6d10450edc00db767cce21d5b880f7d72f2cc2
+d398af2571687c182716f094313a60dc6985876a2ec3ccb3751ab927e76b13f714a10bd7dc43945a5e1eaf579063894be530c616cd2714a5124538c5d253dfb1
+738c1dabfb8210cbaea764ce99604be97d41bc01224e93ccc899154da5d03149c02f1b1741f0b7659bd3e7de8051d7aa47f8c246c2de40d4417e86a965c6fb68
+2d51e252394309350d7e8264ec2239ddf0b9891b0b099e8e3065de78818570c93ce6b05ec3e90f21cdb8dd7e4a37898de4929cbb749e20c64ce4889d0f6394ac
+5cd829496313fbb938871045de13265df05366ef10f50e7e40e941773f27d872f787b3c133c8b026a53240d4376beef0e57dccacf89d6ee8126157aae9f3c44a
+b17d4e9cd131584756689f604cd1255a60ec3dfbdcc160c05696cd4bd20f62c82ac7d815580f901dabea3dc5027a25d5dcece7c91322ac909de2881de073bad9
+493c1b9426881fd2fc08bc6eda7c0ca52e7105c0633a3f37818f08f480102f4ea33c16a0c308ee835a9fc4c82a60ea5db8e375c32dff5d658fc1be7c61d1b8c2
+be04197c6d1948eca6cc7b6d3343d49aa00c9819822ec3956e41c4727f29a28aab165b3be596f6a62ddd00dd91d5f42424fd6007b4d3fb84ffbbde073a8cb77f
+f9c6b10f3e4ebfe3566c25ab6b763a8792c9f14e7f7308b7dbd50c195f904fbfa919a175fa04431dd9cf58b73dcd6d4fe3ffdff73487f6f36d2773a8dfb8ed64
+7ce8306e3b99fc70e5e3743265f3027d8d3af0c80e7af4b14f72f0d46749289dca0dc527421ffc08f83db398c0a092d3279eb838055cc5f0a8ca1c4c60e1228e
+b48cc799fc0d91f134462b381daafb4a492472d591f0564cc0a1911e76ea5678ba4e4ed9223becacd7d5c16656590592e5782d2cc6e1a04a66e856bb3cc02bd4
+6bb6913e68dd1250b2d721614c6693683a48b4b783ca48fa58178ce620a157f65158741d2c3a4afdd6557b2c805ae115f8c1edc1cff49e1f06200242701e07cd
+f942f92973f5d6bbda991fd3d3878c69450034d8db08283ddd555c0f2e4fad2e0bb52b78da2261849b4d425b46377822869fc17974aad1abd0b8aeafbba54b2d
+7aca147a3e08ad9246bbf33e1637f535c8ede6069a9a9982a6de65cf6f35430899395af5fc251c1ac363b282d811ea3717a211dcbccc25cf36fc4d32cb8a0b39
+4222ce0cae934e960d122231f728497abe5a7ee1069aea1ca2b9d51b90103e59725d482b9f1a3970baed64bc5ce2b934dd6e8c284b67af90e1b35ce1fc568bdf
+1cac24d91adc3d8d1797de195df3a708422c6cd795011744c0dd413db3e682c0655891c8caf8db294c79da356fa3740c65e388ae62945714339967709dca0b3a
+faadb081f196af190c6a98242f8467912ab0a651ad6a5a548d8cc3c1aafb6121653923699635d3ca2aaa6abab39835c3b60cecd8f26645de60b53531e434b3c2
+67a97b37e576b7b96ea74f28aa0418bcb09fa3ea5ea12018d4cac92c6a8af17e1a56393b1fb56bc776811fa07695226164fdd656ed8edd8a1ae19c0e066f54f9
+416e376a6168b9ed2bb5a5f5adb979b1cdce5e40f2184197bba6526857c2c92e47d0104d754f92a50dd8222f65be35e0c95b73d2f3bfac85fd60d80887955a27
+1c57826650ab74c27eb3d20fc3667d1cd66ba341e31514161927f530bbb19fc00506dde4f7f67a7cefee3ed9ded1dc99b3a4caf4dd7c5513d777f7f5c6e1bb7b
+8f40d2f9b2d598749bdd41abd26df627956034e854bac3d6a0326a0ddba3c9681876ba9357be77a1c141bf390c5ae34ea5551f0e2b41aba6e877ba9576d068f4
+8376bf330efaaff23606569ea58fdc16605ecdebde7f010000ffff0300504b0304140006000800000021000dd1909fb60000001b010000270000007468656d65
+2f7468656d652f5f72656c732f7468656d654d616e616765722e786d6c2e72656c73848f4d0ac2301484f78277086f6fd3ba109126dd88d0add40384e4350d36
+3f2451eced0dae2c082e8761be9969bb979dc9136332de3168aa1a083ae995719ac16db8ec8e4052164e89d93b64b060828e6f37ed1567914b284d262452282e
+3198720e274a939cd08a54f980ae38a38f56e422a3a641c8bbd048f7757da0f19b017cc524bd62107bd5001996509affb3fd381a89672f1f165dfe514173d985
+0528a2c6cce0239baa4c04ca5bbabac4df000000ffff0300504b01022d0014000600080000002100e9de0fbfff0000001c020000130000000000000000000000
+0000000000005b436f6e74656e745f54797065735d2e786d6c504b01022d0014000600080000002100a5d6a7e7c0000000360100000b00000000000000000000
+000000300100005f72656c732f2e72656c73504b01022d00140006000800000021006b799616830000008a0000001c0000000000000000000000000019020000
+7468656d652f7468656d652f7468656d654d616e616765722e786d6c504b01022d0014000600080000002100b6f4679893070000c92000001600000000000000
+000000000000d60200007468656d652f7468656d652f7468656d65312e786d6c504b01022d00140006000800000021000dd1909fb60000001b01000027000000
+000000000000000000009d0a00007468656d652f7468656d652f5f72656c732f7468656d654d616e616765722e786d6c2e72656c73504b050600000000050005005d010000980b00000000}
+{\*\colorschememapping 3c3f786d6c2076657273696f6e3d22312e302220656e636f64696e673d225554462d3822207374616e64616c6f6e653d22796573223f3e0d0a3c613a636c724d
+617020786d6c6e733a613d22687474703a2f2f736368656d61732e6f70656e786d6c666f726d6174732e6f72672f64726177696e676d6c2f323030362f6d6169
+6e22206267313d226c743122207478313d22646b3122206267323d226c743222207478323d22646b322220616363656e74313d22616363656e74312220616363
+656e74323d22616363656e74322220616363656e74333d22616363656e74332220616363656e74343d22616363656e74342220616363656e74353d22616363656e74352220616363656e74363d22616363656e74362220686c696e6b3d22686c696e6b2220666f6c486c696e6b3d22666f6c486c696e6b222f3e}
+{\*\latentstyles\lsdstimax376\lsdlockeddef0\lsdsemihiddendef0\lsdunhideuseddef0\lsdqformatdef0\lsdprioritydef99{\lsdlockedexcept \lsdqformat1 \lsdpriority0 \lsdlocked0 Normal;\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 1;
+\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 2;\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 3;\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 4;
+\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 5;\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 6;\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 7;
+\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 8;\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 9;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 1;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 5;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 6;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 7;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 8;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 9;
+\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 1;\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 2;\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 3;
+\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 4;\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 5;\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 6;
+\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 7;\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 8;\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 9;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Normal Indent;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 footnote text;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 annotation text;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 header;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 footer;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index heading;\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority35 \lsdlocked0 caption;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 table of figures;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 envelope address;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 envelope return;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 footnote reference;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 annotation reference;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 line number;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 page number;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 endnote reference;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 endnote text;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 table of authorities;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 macro;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 toa heading;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Bullet;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Number;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List 3;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List 5;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Bullet 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Bullet 3;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Bullet 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Bullet 5;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Number 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Number 3;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Number 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Number 5;\lsdqformat1 \lsdpriority10 \lsdlocked0 Title;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Closing;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Signature;\lsdsemihidden1 \lsdunhideused1 \lsdpriority1 \lsdlocked0 Default Paragraph Font;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text Indent;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Continue;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Continue 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Continue 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Continue 4;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Continue 5;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Message Header;\lsdqformat1 \lsdpriority11 \lsdlocked0 Subtitle;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Salutation;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Date;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text First Indent;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text First Indent 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Note Heading;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text Indent 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text Indent 3;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Block Text;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Hyperlink;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 FollowedHyperlink;\lsdqformat1 \lsdpriority22 \lsdlocked0 Strong;
+\lsdqformat1 \lsdpriority20 \lsdlocked0 Emphasis;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Document Map;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Plain Text;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 E-mail Signature;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Top of Form;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Bottom of Form;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Normal (Web);\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Acronym;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Address;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Cite;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Code;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Definition;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Keyboard;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Preformatted;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Sample;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Typewriter;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Variable;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Normal Table;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 annotation subject;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 No List;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Outline List 1;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Outline List 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Outline List 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Simple 1;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Simple 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Simple 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Classic 1;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Classic 2;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Classic 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Classic 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Colorful 1;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Colorful 2;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Colorful 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Columns 1;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Columns 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Columns 3;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Columns 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Columns 5;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Grid 1;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Grid 2;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Grid 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Grid 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Grid 5;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Grid 6;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Grid 7;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Grid 8;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table List 1;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table List 2;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table List 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table List 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table List 5;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table List 6;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table List 7;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table List 8;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table 3D effects 1;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table 3D effects 2;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table 3D effects 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Contemporary;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Elegant;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Professional;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Subtle 1;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Subtle 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Web 1;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Web 2;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Web 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Balloon Text;\lsdpriority39 \lsdlocked0 Table Grid;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Theme;\lsdsemihidden1 \lsdlocked0 Placeholder Text;
+\lsdqformat1 \lsdpriority1 \lsdlocked0 No Spacing;\lsdpriority60 \lsdlocked0 Light Shading;\lsdpriority61 \lsdlocked0 Light List;\lsdpriority62 \lsdlocked0 Light Grid;\lsdpriority63 \lsdlocked0 Medium Shading 1;\lsdpriority64 \lsdlocked0 Medium Shading 2;
+\lsdpriority65 \lsdlocked0 Medium List 1;\lsdpriority66 \lsdlocked0 Medium List 2;\lsdpriority67 \lsdlocked0 Medium Grid 1;\lsdpriority68 \lsdlocked0 Medium Grid 2;\lsdpriority69 \lsdlocked0 Medium Grid 3;\lsdpriority70 \lsdlocked0 Dark List;
+\lsdpriority71 \lsdlocked0 Colorful Shading;\lsdpriority72 \lsdlocked0 Colorful List;\lsdpriority73 \lsdlocked0 Colorful Grid;\lsdpriority60 \lsdlocked0 Light Shading Accent 1;\lsdpriority61 \lsdlocked0 Light List Accent 1;
+\lsdpriority62 \lsdlocked0 Light Grid Accent 1;\lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 1;\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 1;\lsdpriority65 \lsdlocked0 Medium List 1 Accent 1;\lsdsemihidden1 \lsdlocked0 Revision;
+\lsdqformat1 \lsdpriority34 \lsdlocked0 List Paragraph;\lsdqformat1 \lsdpriority29 \lsdlocked0 Quote;\lsdqformat1 \lsdpriority30 \lsdlocked0 Intense Quote;\lsdpriority66 \lsdlocked0 Medium List 2 Accent 1;\lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 1;
+\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 1;\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 1;\lsdpriority70 \lsdlocked0 Dark List Accent 1;\lsdpriority71 \lsdlocked0 Colorful Shading Accent 1;\lsdpriority72 \lsdlocked0 Colorful List Accent 1;
+\lsdpriority73 \lsdlocked0 Colorful Grid Accent 1;\lsdpriority60 \lsdlocked0 Light Shading Accent 2;\lsdpriority61 \lsdlocked0 Light List Accent 2;\lsdpriority62 \lsdlocked0 Light Grid Accent 2;\lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 2;
+\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 2;\lsdpriority65 \lsdlocked0 Medium List 1 Accent 2;\lsdpriority66 \lsdlocked0 Medium List 2 Accent 2;\lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 2;\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 2;
+\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 2;\lsdpriority70 \lsdlocked0 Dark List Accent 2;\lsdpriority71 \lsdlocked0 Colorful Shading Accent 2;\lsdpriority72 \lsdlocked0 Colorful List Accent 2;\lsdpriority73 \lsdlocked0 Colorful Grid Accent 2;
+\lsdpriority60 \lsdlocked0 Light Shading Accent 3;\lsdpriority61 \lsdlocked0 Light List Accent 3;\lsdpriority62 \lsdlocked0 Light Grid Accent 3;\lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 3;\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 3;
+\lsdpriority65 \lsdlocked0 Medium List 1 Accent 3;\lsdpriority66 \lsdlocked0 Medium List 2 Accent 3;\lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 3;\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 3;\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 3;
+\lsdpriority70 \lsdlocked0 Dark List Accent 3;\lsdpriority71 \lsdlocked0 Colorful Shading Accent 3;\lsdpriority72 \lsdlocked0 Colorful List Accent 3;\lsdpriority73 \lsdlocked0 Colorful Grid Accent 3;\lsdpriority60 \lsdlocked0 Light Shading Accent 4;
+\lsdpriority61 \lsdlocked0 Light List Accent 4;\lsdpriority62 \lsdlocked0 Light Grid Accent 4;\lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 4;\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 4;\lsdpriority65 \lsdlocked0 Medium List 1 Accent 4;
+\lsdpriority66 \lsdlocked0 Medium List 2 Accent 4;\lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 4;\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 4;\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 4;\lsdpriority70 \lsdlocked0 Dark List Accent 4;
+\lsdpriority71 \lsdlocked0 Colorful Shading Accent 4;\lsdpriority72 \lsdlocked0 Colorful List Accent 4;\lsdpriority73 \lsdlocked0 Colorful Grid Accent 4;\lsdpriority60 \lsdlocked0 Light Shading Accent 5;\lsdpriority61 \lsdlocked0 Light List Accent 5;
+\lsdpriority62 \lsdlocked0 Light Grid Accent 5;\lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 5;\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 5;\lsdpriority65 \lsdlocked0 Medium List 1 Accent 5;\lsdpriority66 \lsdlocked0 Medium List 2 Accent 5;
+\lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 5;\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 5;\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 5;\lsdpriority70 \lsdlocked0 Dark List Accent 5;\lsdpriority71 \lsdlocked0 Colorful Shading Accent 5;
+\lsdpriority72 \lsdlocked0 Colorful List Accent 5;\lsdpriority73 \lsdlocked0 Colorful Grid Accent 5;\lsdpriority60 \lsdlocked0 Light Shading Accent 6;\lsdpriority61 \lsdlocked0 Light List Accent 6;\lsdpriority62 \lsdlocked0 Light Grid Accent 6;
+\lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 6;\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 6;\lsdpriority65 \lsdlocked0 Medium List 1 Accent 6;\lsdpriority66 \lsdlocked0 Medium List 2 Accent 6;
+\lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 6;\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 6;\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 6;\lsdpriority70 \lsdlocked0 Dark List Accent 6;\lsdpriority71 \lsdlocked0 Colorful Shading Accent 6;
+\lsdpriority72 \lsdlocked0 Colorful List Accent 6;\lsdpriority73 \lsdlocked0 Colorful Grid Accent 6;\lsdqformat1 \lsdpriority19 \lsdlocked0 Subtle Emphasis;\lsdqformat1 \lsdpriority21 \lsdlocked0 Intense Emphasis;
+\lsdqformat1 \lsdpriority31 \lsdlocked0 Subtle Reference;\lsdqformat1 \lsdpriority32 \lsdlocked0 Intense Reference;\lsdqformat1 \lsdpriority33 \lsdlocked0 Book Title;\lsdsemihidden1 \lsdunhideused1 \lsdpriority37 \lsdlocked0 Bibliography;
+\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority39 \lsdlocked0 TOC Heading;\lsdpriority41 \lsdlocked0 Plain Table 1;\lsdpriority42 \lsdlocked0 Plain Table 2;\lsdpriority43 \lsdlocked0 Plain Table 3;\lsdpriority44 \lsdlocked0 Plain Table 4;
+\lsdpriority45 \lsdlocked0 Plain Table 5;\lsdpriority40 \lsdlocked0 Grid Table Light;\lsdpriority46 \lsdlocked0 Grid Table 1 Light;\lsdpriority47 \lsdlocked0 Grid Table 2;\lsdpriority48 \lsdlocked0 Grid Table 3;\lsdpriority49 \lsdlocked0 Grid Table 4;
+\lsdpriority50 \lsdlocked0 Grid Table 5 Dark;\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful;\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful;\lsdpriority46 \lsdlocked0 Grid Table 1 Light Accent 1;\lsdpriority47 \lsdlocked0 Grid Table 2 Accent 1;
+\lsdpriority48 \lsdlocked0 Grid Table 3 Accent 1;\lsdpriority49 \lsdlocked0 Grid Table 4 Accent 1;\lsdpriority50 \lsdlocked0 Grid Table 5 Dark Accent 1;\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful Accent 1;
+\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful Accent 1;\lsdpriority46 \lsdlocked0 Grid Table 1 Light Accent 2;\lsdpriority47 \lsdlocked0 Grid Table 2 Accent 2;\lsdpriority48 \lsdlocked0 Grid Table 3 Accent 2;
+\lsdpriority49 \lsdlocked0 Grid Table 4 Accent 2;\lsdpriority50 \lsdlocked0 Grid Table 5 Dark Accent 2;\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful Accent 2;\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful Accent 2;
+\lsdpriority46 \lsdlocked0 Grid Table 1 Light Accent 3;\lsdpriority47 \lsdlocked0 Grid Table 2 Accent 3;\lsdpriority48 \lsdlocked0 Grid Table 3 Accent 3;\lsdpriority49 \lsdlocked0 Grid Table 4 Accent 3;
+\lsdpriority50 \lsdlocked0 Grid Table 5 Dark Accent 3;\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful Accent 3;\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful Accent 3;\lsdpriority46 \lsdlocked0 Grid Table 1 Light Accent 4;
+\lsdpriority47 \lsdlocked0 Grid Table 2 Accent 4;\lsdpriority48 \lsdlocked0 Grid Table 3 Accent 4;\lsdpriority49 \lsdlocked0 Grid Table 4 Accent 4;\lsdpriority50 \lsdlocked0 Grid Table 5 Dark Accent 4;
+\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful Accent 4;\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful Accent 4;\lsdpriority46 \lsdlocked0 Grid Table 1 Light Accent 5;\lsdpriority47 \lsdlocked0 Grid Table 2 Accent 5;
+\lsdpriority48 \lsdlocked0 Grid Table 3 Accent 5;\lsdpriority49 \lsdlocked0 Grid Table 4 Accent 5;\lsdpriority50 \lsdlocked0 Grid Table 5 Dark Accent 5;\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful Accent 5;
+\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful Accent 5;\lsdpriority46 \lsdlocked0 Grid Table 1 Light Accent 6;\lsdpriority47 \lsdlocked0 Grid Table 2 Accent 6;\lsdpriority48 \lsdlocked0 Grid Table 3 Accent 6;
+\lsdpriority49 \lsdlocked0 Grid Table 4 Accent 6;\lsdpriority50 \lsdlocked0 Grid Table 5 Dark Accent 6;\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful Accent 6;\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful Accent 6;
+\lsdpriority46 \lsdlocked0 List Table 1 Light;\lsdpriority47 \lsdlocked0 List Table 2;\lsdpriority48 \lsdlocked0 List Table 3;\lsdpriority49 \lsdlocked0 List Table 4;\lsdpriority50 \lsdlocked0 List Table 5 Dark;
+\lsdpriority51 \lsdlocked0 List Table 6 Colorful;\lsdpriority52 \lsdlocked0 List Table 7 Colorful;\lsdpriority46 \lsdlocked0 List Table 1 Light Accent 1;\lsdpriority47 \lsdlocked0 List Table 2 Accent 1;\lsdpriority48 \lsdlocked0 List Table 3 Accent 1;
+\lsdpriority49 \lsdlocked0 List Table 4 Accent 1;\lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 1;\lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 1;\lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 1;
+\lsdpriority46 \lsdlocked0 List Table 1 Light Accent 2;\lsdpriority47 \lsdlocked0 List Table 2 Accent 2;\lsdpriority48 \lsdlocked0 List Table 3 Accent 2;\lsdpriority49 \lsdlocked0 List Table 4 Accent 2;
+\lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 2;\lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 2;\lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 2;\lsdpriority46 \lsdlocked0 List Table 1 Light Accent 3;
+\lsdpriority47 \lsdlocked0 List Table 2 Accent 3;\lsdpriority48 \lsdlocked0 List Table 3 Accent 3;\lsdpriority49 \lsdlocked0 List Table 4 Accent 3;\lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 3;
+\lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 3;\lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 3;\lsdpriority46 \lsdlocked0 List Table 1 Light Accent 4;\lsdpriority47 \lsdlocked0 List Table 2 Accent 4;
+\lsdpriority48 \lsdlocked0 List Table 3 Accent 4;\lsdpriority49 \lsdlocked0 List Table 4 Accent 4;\lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 4;\lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 4;
+\lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 4;\lsdpriority46 \lsdlocked0 List Table 1 Light Accent 5;\lsdpriority47 \lsdlocked0 List Table 2 Accent 5;\lsdpriority48 \lsdlocked0 List Table 3 Accent 5;
+\lsdpriority49 \lsdlocked0 List Table 4 Accent 5;\lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 5;\lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 5;\lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 5;
+\lsdpriority46 \lsdlocked0 List Table 1 Light Accent 6;\lsdpriority47 \lsdlocked0 List Table 2 Accent 6;\lsdpriority48 \lsdlocked0 List Table 3 Accent 6;\lsdpriority49 \lsdlocked0 List Table 4 Accent 6;
+\lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 6;\lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 6;\lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 6;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Mention;
+\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Smart Hyperlink;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Hashtag;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Unresolved Mention;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Smart Link;}}{\*\datastore 01050000
+02000000180000004d73786d6c322e534158584d4c5265616465722e362e3000000000000000000000060000
+d0cf11e0a1b11ae1000000000000000000000000000000003e000300feff090006000000000000000000000001000000010000000000000000100000feffffff00000000feffffff0000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffdfffffffeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffff52006f006f007400200045006e00740072007900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016000500ffffffffffffffffffffffff0c6ad98892f1d411a65f0040963251e500000000000000000000000080c8
+dc5b8aead501feffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff00000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000105000000000000}}
\ No newline at end of file
diff --git a/Libraries/PyFilesystem/FileExamples/File1.txt b/Libraries/PyFilesystem/FileExamples/File1.txt
new file mode 100644
index 0000000..e5b401e
--- /dev/null
+++ b/Libraries/PyFilesystem/FileExamples/File1.txt
@@ -0,0 +1,7 @@
+This is a sample text file for the Essential Python Libraries course on LinkedIn Learning.
+
+It was the best of times, it was the worst of times, it was the age of
+wisdom, it was the age of foolishness, it was the epoch of belief, it was the
+epoch of incredulity, it was the season of Light, it was the season of
+Darkness, it was the spring of hope, it was the winter of despair. —Charles
+Dickens, A Tale of Two Cities (1859)
diff --git a/Libraries/PyFilesystem/FileExamples/File2.txt b/Libraries/PyFilesystem/FileExamples/File2.txt
new file mode 100644
index 0000000..a8a3c64
--- /dev/null
+++ b/Libraries/PyFilesystem/FileExamples/File2.txt
@@ -0,0 +1,2 @@
+This is a sample text file for the Essential Python Libraries course on LinkedIn Learning.
+It contains some text and will be used during the programming challenge portion of the chapter.
diff --git a/Libraries/PyFilesystem/FileExamples/File3.txt b/Libraries/PyFilesystem/FileExamples/File3.txt
new file mode 100644
index 0000000..f44b04d
--- /dev/null
+++ b/Libraries/PyFilesystem/FileExamples/File3.txt
@@ -0,0 +1,8 @@
+This is a sample text file for the Essential Python Libraries course on LinkedIn Learning.
+
+ It was a dark and stormy night; the rain fell in torrents, except at
+occasional intervals, when it was checked by a violent gust of wind which
+swept up the streets (for it is in London that our scene lies), rattling along
+the house-tops, and fiercely agitating the scanty flame of the lamps that
+struggled against the darkness. —Edward George Bulwer-Lytton, Paul
+Clifford (1830)
\ No newline at end of file
diff --git a/Libraries/PyFilesystem/basicfiles_finished.py b/Libraries/PyFilesystem/basicfiles_finished.py
new file mode 100644
index 0000000..8956b5a
--- /dev/null
+++ b/Libraries/PyFilesystem/basicfiles_finished.py
@@ -0,0 +1,36 @@
+# Python Essential Libraries by Joe Marini course example
+# Example file for using PyFilesystem
+
+# import the PyFilesystem library for OS files
+from fs.osfs import OSFS
+from fs.zipfs import ZipFS
+
+# TODO: open a local filesystem for the current directory
+with OSFS(".") as myfs:
+ if (not myfs.exists("testdir")):
+ # create a sample data directory
+ myfs.makedir("testdir")
+
+ # create a file
+ with myfs.open("testdir/samplefile.txt", mode='w') as f:
+ f.write("This is some text")
+
+ # read the file contents
+ with myfs.open("testdir/samplefile.txt") as f:
+ content = f.read()
+ print(content)
+
+ # TODO: use the getinfo() function to return resource information
+ info = myfs.getinfo("testdir/samplefile.txt", namespaces=['details'])
+ print(info.name)
+ print(info.is_dir)
+ print(info.size)
+ print(info.type)
+ print(info.modified)
+
+# TODO: try opening and reading a ZIP archive
+with ZipFS("FileExamples.zip") as thezip:
+ if (thezip.exists("FileExamples/File1.txt")):
+ with thezip.open("FileExamples/File1.txt") as f:
+ content = f.read()
+ print(content)
diff --git a/Libraries/PyFilesystem/challengesolution.py b/Libraries/PyFilesystem/challengesolution.py
new file mode 100644
index 0000000..44406e0
--- /dev/null
+++ b/Libraries/PyFilesystem/challengesolution.py
@@ -0,0 +1,17 @@
+# Solution to programming challenge for Python Essential Libraries course by Joe Marini
+
+from fs.osfs import OSFS
+
+# Challenge - figure out the total size of all text files in a folder structure
+totalsize = 0
+
+# Create a file walker to walk the FileExamples directory
+with OSFS(".") as myfs:
+ # We need to specify the details namespace to get size info
+ for path, info in myfs.walk.info(namespaces=["details"]):
+ # Check for an ending extension of .txt
+ if path.endswith(".txt") and not info.is_dir:
+ totalsize += info.size
+
+ # print the final results
+ print("Total size of files is: {0}".format(totalsize))
diff --git a/Libraries/PyFilesystem/directories_finished.py b/Libraries/PyFilesystem/directories_finished.py
new file mode 100644
index 0000000..536a402
--- /dev/null
+++ b/Libraries/PyFilesystem/directories_finished.py
@@ -0,0 +1,36 @@
+# Python Essential Libraries by Joe Marini course example
+# Example file for using PyFilesystem directory functions
+from fs.osfs import OSFS
+
+# TODO: print a directory tree listing
+with OSFS(".") as myfs:
+ myfs.tree()
+
+# TODO: use directory operation functions
+# with OSFS(".") as myfs:
+# dirlist = myfs.listdir("FileExamples")
+# print(dirlist)
+
+# with OSFS(".") as myfs:
+# dirlist = list(myfs.scandir("FileExamples"))
+# print(dirlist)
+
+# with OSFS(".") as myfs:
+# dirlist = list(myfs.filterdir("FileExamples", files=["*.txt"]))
+# print(dirlist)
+
+# TODO: Use resource info with scandir
+# with OSFS(".") as myfs:
+# dirlist = myfs.scandir("FileExamples", namespaces=["details"])
+# for info in dirlist:
+# print(info.name, info.size)
+
+# TODO: make a copy of a directory
+# with OSFS(".") as myfs:
+# myfs.copydir("FileExamples", "CopyOfFileExamples", create=True)
+
+# TODO: remove a directory
+# with OSFS(".") as myfs:
+# if (myfs.exists("CopyOfFileExamples")):
+# # myfs.removedir("CopyOfFileExamples")
+# myfs.removetree("CopyOfFileExamples")
diff --git a/Libraries/PyFilesystem/walking_finished.py b/Libraries/PyFilesystem/walking_finished.py
new file mode 100644
index 0000000..3e8f8c8
--- /dev/null
+++ b/Libraries/PyFilesystem/walking_finished.py
@@ -0,0 +1,35 @@
+# Python Essential Libraries by Joe Marini course example
+# Example file for using the File System walker
+
+from fs.osfs import OSFS
+from fs.zipfs import ZipFS
+
+# create a basic file walker
+with OSFS(".") as myfs:
+ print("-- Files --")
+ # TODO: use the files walker to process files
+ for path in myfs.walk.files(filter=["*.txt"]):
+ print(path)
+
+ print("-- Directories --")
+ # TODO: use the dirs walker for directories
+ for path in myfs.walk.dirs():
+ print(path)
+
+# TODO: use the info property to step through items
+# with OSFS(".") as myfs:
+# for path, info in myfs.walk.info(namespaces=["details"]):
+# print(path, info.is_dir, info.size)
+
+# TODO: Use the walk object by itself:
+# with OSFS("FileExamples") as myfs:
+# for step in myfs.walk():
+# print(step.path)
+# print(step.files)
+# print(step.dirs)
+
+# TODO: Use the walker with a ZIP
+# with ZipFS("FileExamples.zip") as thezip:
+# print("-- Zip Contents --")
+# for path in thezip.walk.files():
+# print(path)
diff --git a/Libraries/Requests/advreqs_finished.py b/Libraries/Requests/advreqs_finished.py
new file mode 100644
index 0000000..e5e2d32
--- /dev/null
+++ b/Libraries/Requests/advreqs_finished.py
@@ -0,0 +1,39 @@
+# Python Essential Libraries by Joe Marini course example
+# Example file for using Requests library
+import requests
+
+# TODO: use a timeout value for a request
+resp = requests.get("https://httpbin.org/delay/0.5", timeout=1.0)
+print(resp.status_code)
+
+# TODO: introspect the redirection history
+resp = requests.get("http://github.com")
+print(resp.url)
+print(resp.history)
+orig = resp.history.pop()
+print(orig.status_code)
+print(orig.url)
+print(orig.reason)
+
+# TODO: Use a session object to group requests and settings
+# create the session
+sess = requests.Session()
+# use the session to persist a cookie across requests
+sess.get('https://httpbin.org/cookies/set/sample/123456789')
+resp = sess.get('https://httpbin.org/cookies')
+print(resp.text)
+
+# Customize the user-agent to simulate different browsers
+# Set the user-agent to be Firefox
+sess.headers.update({
+ "User-Agent": "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:68.0) Gecko/20100101 Firefox/68.0"
+})
+resp = sess.get("http://google.com")
+print(len(resp.content))
+
+# Set the user-agent to be an iPhone
+sess.headers.update({
+ "User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 13_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) relesys_web_client/1.3.10.0 (RelesysApp/1.3.43 net.relesysapp.nettoenterprise)"
+})
+resp = sess.get("http://google.com")
+print(len(resp.content))
diff --git a/Libraries/Requests/auth_finished.py b/Libraries/Requests/auth_finished.py
new file mode 100644
index 0000000..f740689
--- /dev/null
+++ b/Libraries/Requests/auth_finished.py
@@ -0,0 +1,20 @@
+# Python Essential Libraries by Joe Marini course example
+# Example file for the Requests library
+import requests
+from requests.auth import HTTPDigestAuth
+
+# define user and password values
+user = "theuser"
+passwd = "thepass"
+
+# TODO: use the basic authentication method
+url = "https://httpbin.org/basic-auth/theusr/thepas"
+resp = requests.get(url, auth=(user, passwd))
+print(resp.status_code)
+print(resp.text)
+
+# TODO: use the digest authentication method
+url = "https://httpbin.org/digest-auth/auth/theuser/thepass"
+resp = requests.get(url, auth=HTTPDigestAuth(user, passwd))
+print(resp.status_code)
+print(resp.text)
diff --git a/Libraries/Requests/basicreqs_finished.py b/Libraries/Requests/basicreqs_finished.py
new file mode 100644
index 0000000..b4a7c5c
--- /dev/null
+++ b/Libraries/Requests/basicreqs_finished.py
@@ -0,0 +1,23 @@
+# Python Essential Libraries by Joe Marini course example
+# Example file for using Requests library
+import requests
+
+# TODO: create a basic request for data
+resp = requests.get("http://httpbin.org/xml")
+print(resp.status_code)
+print(resp.text)
+
+# TODO: create a request using parameters
+# args = {"key1": 1, "key2": "two", "key3": False}
+# resp = requests.get("http://httpbin.org/get", params=args)
+# print(resp.text)
+# print(resp.url)
+
+# TODO: create a request using POST
+# resp = requests.post("http://httpbin.org/post", data={"key": "value"})
+# print(resp.text)
+
+# TODO: create a request using custom headers
+# heads = {"my-custom-header": "This is a custom header"}
+# resp = requests.get("http://httpbin.org/get", headers=heads)
+# print(resp.text)
diff --git a/Libraries/Requests/responses_finished.py b/Libraries/Requests/responses_finished.py
new file mode 100644
index 0000000..80ff78a
--- /dev/null
+++ b/Libraries/Requests/responses_finished.py
@@ -0,0 +1,22 @@
+# Python Essential Libraries by Joe Marini course example
+# Example file for Requests library
+import requests
+
+# TODO: work with status codes
+resp = requests.get('https://httpbin.org/status/200')
+print(resp.status_code)
+resp.raise_for_status()
+
+# TODO: examine response encoding
+# resp = requests.get('https://httpbin.org/html')
+# print(resp.encoding)
+# # the text property accesses decoded text content
+# print(resp.text)
+# # the content property provides access to raw bytes
+# print(resp.content)
+
+# TODO: To read JSON content, use the json() function
+# resp = requests.get('https://httpbin.org/json')
+# print(resp.json())
+# print(resp.headers)
+# print(resp.headers['content-type'])
diff --git a/NOTICE b/NOTICE
deleted file mode 100644
index 4bf8ec7..0000000
--- a/NOTICE
+++ /dev/null
@@ -1,12 +0,0 @@
-Copyright 2021 LinkedIn Corporation
-All Rights Reserved.
-
-Licensed under the LinkedIn Learning Exercise File License (the "License").
-See LICENSE in the project root for license information.
-
-Please note, this project may automatically load third party code from external
-repositories (for example, NPM modules, Composer packages, or other dependencies).
-If so, such third party code may be subject to other license terms than as set
-forth above. In addition, such third party code may also depend on and load
-multiple tiers of dependencies. Please review the applicable licenses of the
-additional dependencies.
diff --git a/README.md b/README.md
index 57e45ff..8591b9e 100644
--- a/README.md
+++ b/README.md
@@ -1,28 +1,5 @@
# Learning Python
-This is the repository for the LinkedIn Learning course Learning Python. The full course is available from [LinkedIn Learning][lil-course-url].
-
-![Learning Python][lil-thumbnail-url]
-
-Python—the popular and highly-readable object-oriented language—is both powerful and relatively easy to learn. Whether you're new to programming or an experienced developer, this course can help you get started with Python. Joe Marini provides an overview of the installation process, basic Python syntax, and an example of how to construct and run a simple Python program. Learn to work with dates and times, read and write files, and retrieve and parse HTML, JSON, and XML data from the web.
-
-## Installing
-1. To use these exercise files, you must have the following installed:
- - The latest version of Python, at least version 3.9 but preferably 3.10
- - A text editor such as Atom, Visual Studio Code, or another editor
-2. Clone this repository into your local machine using the terminal (Mac), CMD or PowerShell (Windows), or a GUI tool like SourceTree.
- - You can also just download a ZIP file from Github and extract the contents to your machine.
-3. Place the examples folder on your computer where they are easy to get to
-
-
-### Instructor
-
-Joe Marini
-
-Senior Director of Product and Engineering
-
-
-
-Check out my other courses on [LinkedIn Learning](https://www.linkedin.com/learning/instructors/joe-marini).
+This is my repository for learning Python and storing exercise examples.
[lil-course-url]: https://www.linkedin.com/learning/learning-python-14393370
[lil-thumbnail-url]: https://cdn.lynda.com/course/2896241/2896241-1637338967910-16x9.jpg